mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2025-10-15 20:08:19 +00:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import type { LayerTreeType } from "$lib/assets/layers";
|
|
|
|
export function anySelectedLayer(node: LayerTreeType) {
|
|
return Object.keys(node).find((id) => {
|
|
if (typeof node[id] == "boolean") {
|
|
if (node[id]) {
|
|
return true;
|
|
}
|
|
} else {
|
|
if (anySelectedLayer(node[id])) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}) !== undefined;
|
|
}
|
|
|
|
export function getLayers(node: LayerTreeType, layers: { [key: string]: boolean } = {}): { [key: string]: boolean } {
|
|
Object.keys(node).forEach((id) => {
|
|
if (typeof node[id] == "boolean") {
|
|
layers[id] = node[id];
|
|
} else {
|
|
getLayers(node[id], layers);
|
|
}
|
|
});
|
|
return layers;
|
|
}
|
|
|
|
export function isSelected(node: LayerTreeType, id: string) {
|
|
return Object.keys(node).some((key) => {
|
|
if (key === id) {
|
|
return node[key];
|
|
}
|
|
if (typeof node[key] !== "boolean" && isSelected(node[key], id)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
} |