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;
+ }