From 19a8bc3e4949f0c2946da041a9fd84f9739eeb1e Mon Sep 17 00:00:00 2001 From: peterkogo Date: Thu, 11 Jan 2024 16:58:49 +0100 Subject: [PATCH] Simplified unselectNodesAndEdges --- packages/svelte/src/lib/store/index.ts | 48 +++++++------------------- 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/packages/svelte/src/lib/store/index.ts b/packages/svelte/src/lib/store/index.ts index 5cd8e9ae..407b181b 100644 --- a/packages/svelte/src/lib/store/index.ts +++ b/packages/svelte/src/lib/store/index.ts @@ -178,47 +178,23 @@ export function createStore({ } } - function resetSelectedItem(ids: string[]) { - return (item: T) => { - if (item.selected && ids.includes(item.id)) { - return { - ...item, - selected: false - }; + function resetSelected(elements: Node[] | Edge[]) { + let resetSomeElements = false; + elements.forEach((element) => { + if (element.selected) { + element.selected = false; + resetSomeElements = true; } - - return item; - }; + }); + return resetSomeElements; } function unselectNodesAndEdges(params?: { nodes?: Node[]; edges?: Edge[] }) { - const selectedNodeIds = (params?.nodes ? params.nodes : get(store.nodes)) - .filter((node) => node.selected) - .map((node) => node.id); - const selectedEdgeIds = (params?.edges ? params.edges : get(store.edges)) - .filter((edge) => edge.selected) - .map((edge) => edge.id); + const resetNodes = resetSelected(params?.nodes || get(store.nodes)); + if (resetNodes) store.nodes.set(get(store.nodes)); - if (selectedNodeIds.length) { - const nodeLookup = get(store.nodeLookup); - 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; - } - }); - } + const resetEdges = resetSelected(params?.edges || get(store.edges)); + if (resetEdges) store.edges.set(get(store.edges)); } store.deleteKeyPressed.subscribe(async (deleteKeyPressed) => {