Files
webstudio/apps/builder/app/shared/array-utils.ts
T
Roman Pominov 68243c6876 Assets copy-paste (#1636)
## Description

1. Closes #1325
2. Assets used in styles are copied
3. Assets used in props are copied
2023-05-16 14:34:42 +03:00

41 lines
878 B
TypeScript

type Predicate<Item> = (value: Item) => boolean;
export const removeByMutable = <Item>(
array: Item[],
predicate: Predicate<Item>
) => {
// reversed order to splice without breaking index
for (let index = array.length - 1; index >= 0; index -= 1) {
if (predicate(array[index])) {
array.splice(index, 1);
}
}
};
export const getMapValuesByKeysSet = <Key, Value>(
map: Map<Key, Value>,
keys: Set<Key>
) => {
const values: NonNullable<Value>[] = [];
for (const key of keys) {
const value = map.get(key);
if (value != null) {
values.push(value);
}
}
return values;
};
export const getMapValuesBy = <Key, Value>(
map: Map<Key, Value>,
predicate: Predicate<Value>
) => {
const values: Value[] = [];
for (const value of map.values()) {
if (predicate(value)) {
values.push(value);
}
}
return values;
};