From 62b57eec6e48ea0c257e0d032fc65a1d1b9b5277 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Thu, 11 Jan 2024 15:00:16 +0100 Subject: [PATCH] feat(svelte) Expose edgeLookup, fix(svelte) dragging behaviour when selectable=false --- packages/svelte/src/lib/store/index.ts | 17 +++++++++++++++-- packages/svelte/src/lib/store/initial-store.ts | 4 +++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/lib/store/index.ts b/packages/svelte/src/lib/store/index.ts index 75036a80..5cd8e9ae 100644 --- a/packages/svelte/src/lib/store/index.ts +++ b/packages/svelte/src/lib/store/index.ts @@ -200,11 +200,24 @@ export function createStore({ .map((edge) => edge.id); if (selectedNodeIds.length) { - store.nodes.update((ns) => ns.map(resetSelectedItem(selectedNodeIds))); + 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) { - store.edges.update((es) => es.map(resetSelectedItem(selectedEdgeIds))); + const edgeLookup = get(store.edgeLookup); + selectedEdgeIds.forEach((id) => { + const edge = edgeLookup.get(id); + if (edge) { + edge.selected = false; + } + }); } } diff --git a/packages/svelte/src/lib/store/initial-store.ts b/packages/svelte/src/lib/store/initial-store.ts index 01a40a9c..90c59b2d 100644 --- a/packages/svelte/src/lib/store/initial-store.ts +++ b/packages/svelte/src/lib/store/initial-store.ts @@ -23,7 +23,8 @@ import { type OnConnectStart, type OnConnectEnd, type NodeLookup, - type OnBeforeDelete + type OnBeforeDelete, + type EdgeLookup } from '@xyflow/system'; import DefaultNode from '$lib/components/nodes/DefaultNode.svelte'; @@ -99,6 +100,7 @@ export const getInitialStore = ({ flowId: writable(null), nodes: createNodesStore(nextNodes, nodeLookup), nodeLookup: readable(nodeLookup), + edgeLookup: readable(edgeLookup), visibleNodes: readable([]), edges: createEdgesStore(edges, connectionLookup, edgeLookup), visibleEdges: readable([]),