Simplified unselectNodesAndEdges

This commit is contained in:
peterkogo
2024-01-11 16:58:49 +01:00
parent 62b57eec6e
commit 19a8bc3e49
+12 -36
View File
@@ -178,47 +178,23 @@ export function createStore({
} }
} }
function resetSelectedItem<T extends Node | Edge>(ids: string[]) { function resetSelected(elements: Node[] | Edge[]) {
return (item: T) => { let resetSomeElements = false;
if (item.selected && ids.includes(item.id)) { elements.forEach((element) => {
return { if (element.selected) {
...item, element.selected = false;
selected: false resetSomeElements = true;
};
} }
});
return item; return resetSomeElements;
};
} }
function unselectNodesAndEdges(params?: { nodes?: Node[]; edges?: Edge[] }) { function unselectNodesAndEdges(params?: { nodes?: Node[]; edges?: Edge[] }) {
const selectedNodeIds = (params?.nodes ? params.nodes : get(store.nodes)) const resetNodes = resetSelected(params?.nodes || get(store.nodes));
.filter((node) => node.selected) if (resetNodes) store.nodes.set(get(store.nodes));
.map((node) => node.id);
const selectedEdgeIds = (params?.edges ? params.edges : get(store.edges))
.filter((edge) => edge.selected)
.map((edge) => edge.id);
if (selectedNodeIds.length) { const resetEdges = resetSelected(params?.edges || get(store.edges));
const nodeLookup = get(store.nodeLookup); if (resetEdges) store.edges.set(get(store.edges));
selectedNodeIds.forEach((id) => {
const node = nodeLookup.get(id);
if (node) {
node.selected = false;
}
});
store.nodes.set(get(store.nodes));
}
if (selectedEdgeIds.length) {
const edgeLookup = get(store.edgeLookup);
selectedEdgeIds.forEach((id) => {
const edge = edgeLookup.get(id);
if (edge) {
edge.selected = false;
}
});
}
} }
store.deleteKeyPressed.subscribe(async (deleteKeyPressed) => { store.deleteKeyPressed.subscribe(async (deleteKeyPressed) => {