diff --git a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte index df120dc8..700cfcb2 100644 --- a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte +++ b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte @@ -27,8 +27,8 @@ targetY, sourcePosition, targetPosition, - animated, - selected, + animated = false, + selected = false, label, labelStyle, data = {}, @@ -40,12 +40,12 @@ markerStart, markerEnd, selectable: edgeSelectable, - deletable, + deletable = true, hidden, zIndex, class: className, ariaLabel - } = $derived(edge); + } = $derived(store.defaultEdgeOptions ? { ...store.defaultEdgeOptions, ...edge } : edge); const { id } = edge; setContext('svelteflow__edge_id', id); @@ -64,7 +64,7 @@ const edge = store.edgeLookup.get(id); if (edge) { - store.handleEdgeSelection(id); + if (selectable) store.handleEdgeSelection(id); onedgeclick?.({ event, edge }); } } @@ -79,6 +79,8 @@ callback({ event, edge }); } } + + $inspect(selected); @@ -132,7 +134,7 @@ {style} {interactionWidth} {selectable} - deletable={deletable ?? true} + {deletable} {type} sourceHandleId={sourceHandle} targetHandleId={targetHandle} diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte index 9f4c0227..5b2954ea 100644 --- a/packages/svelte/src/lib/components/Handle/Handle.svelte +++ b/packages/svelte/src/lib/components/Handle/Handle.svelte @@ -40,7 +40,6 @@ ); let store = useStore(); - // let { edges } = store; function onPointerDown(event: MouseEvent | TouchEvent) { const isMouseTriggered = isMouseEvent(event); @@ -91,7 +90,6 @@ $effect.pre(() => { // connectionLookup is not reactive, so we use edges to get notified about updates // eslint-disable-next-line @typescript-eslint/no-unused-expressions - // $edges; store.edges; if (onconnect || ondisconnect) { let connections = store.connectionLookup.get(`${nodeId}-${type}-${handleId}`); diff --git a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte index bdee2de3..866ad640 100644 --- a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte +++ b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte @@ -50,7 +50,7 @@ z: zIndex = 0, positionAbsolute: { x: positionX, y: positionY } } - } = $derived(node); + } = $derived(store.defaultNodeOptions ? { ...store.defaultNodeOptions, ...node } : node); let { id } = node; @@ -169,7 +169,7 @@ use:drag={{ nodeId: id, isSelectable: selectable, - disabled: false, + disabled: !draggable, handleSelector: dragHandle, noDragClass: 'nodrag', nodeClickDistance, diff --git a/packages/svelte/src/lib/components/UserSelection/UserSelection.svelte b/packages/svelte/src/lib/components/UserSelection/UserSelection.svelte deleted file mode 100644 index ecb75237..00000000 --- a/packages/svelte/src/lib/components/UserSelection/UserSelection.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/UserSelection/index.ts b/packages/svelte/src/lib/components/UserSelection/index.ts deleted file mode 100644 index 743064e1..00000000 --- a/packages/svelte/src/lib/components/UserSelection/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as UserSelection } from './UserSelection.svelte'; diff --git a/packages/svelte/src/lib/container/Pane/Pane.svelte b/packages/svelte/src/lib/container/Pane/Pane.svelte index 3e2e1de3..d865d602 100644 --- a/packages/svelte/src/lib/container/Pane/Pane.svelte +++ b/packages/svelte/src/lib/container/Pane/Pane.svelte @@ -11,9 +11,9 @@ }; } - export function toggleSelected(ids: string[]) { + export function toggleSelected(ids: Set) { return (item: Item) => { - const isSelected = ids.includes(item.id); + const isSelected = ids.has(item.id); if (item.selected !== isSelected) { return { ...item, selected: isSelected }; @@ -22,17 +22,27 @@ return item; }; } + + // TODO: maybe replace with set.intersection? + function setEq(a: Set, b: Set) { + if (a.size !== b.size) { + return false; + } + + for (const item of a) { + if (!b.has(item)) { + return false; + } + } + + return true; + }