From 1eba8d5a78fb0557a151e4565f14842202d5f104 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Tue, 19 Aug 2025 15:14:39 +0200 Subject: [PATCH 1/3] extend onBeforeConnect type to allow void & null & false --- packages/svelte/src/lib/components/Handle/Handle.svelte | 2 +- packages/svelte/src/lib/types/general.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte index 48946d41..b04a20fc 100644 --- a/packages/svelte/src/lib/components/Handle/Handle.svelte +++ b/packages/svelte/src/lib/components/Handle/Handle.svelte @@ -98,7 +98,7 @@ }); function onConnectExtended(connection: Connection) { - const edge = store.onbeforeconnect?.(connection) ?? connection; + const edge = store.onbeforeconnect ? store.onbeforeconnect(connection) : connection; if (!edge) { return; diff --git a/packages/svelte/src/lib/types/general.ts b/packages/svelte/src/lib/types/general.ts index 701496e9..77ab58b7 100644 --- a/packages/svelte/src/lib/types/general.ts +++ b/packages/svelte/src/lib/types/general.ts @@ -38,11 +38,11 @@ export type OnDelete export type OnBeforeConnect = ( connection: Connection -) => EdgeType | Connection | void; +) => EdgeType | Connection | void | false | null; export type OnBeforeReconnect = ( newEdge: EdgeType, oldEdge: EdgeType -) => EdgeType | void; +) => EdgeType | void | false | null; export type OnBeforeDelete< NodeType extends Node = Node, EdgeType extends Edge = Edge From 100c95fd5ab40191bfce1251bf321f770080679b Mon Sep 17 00:00:00 2001 From: peterkogo Date: Tue, 19 Aug 2025 15:15:56 +0200 Subject: [PATCH 2/3] add changeset --- .changeset/quick-radios-yell.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quick-radios-yell.md diff --git a/.changeset/quick-radios-yell.md b/.changeset/quick-radios-yell.md new file mode 100644 index 00000000..084405a4 --- /dev/null +++ b/.changeset/quick-radios-yell.md @@ -0,0 +1,5 @@ +--- +'@xyflow/svelte': patch +--- + +Allow returning void, false and null from onbeforeconnect From a00a6385b7ae93c54a68b398a399c87a8bf5bc2e Mon Sep 17 00:00:00 2001 From: peterkogo Date: Tue, 19 Aug 2025 15:31:22 +0200 Subject: [PATCH 3/3] fix edge reconnection --- .../EdgeReconnectAnchor/EdgeReconnectAnchor.svelte | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/svelte/src/lib/components/EdgeReconnectAnchor/EdgeReconnectAnchor.svelte b/packages/svelte/src/lib/components/EdgeReconnectAnchor/EdgeReconnectAnchor.svelte index d18bc2e8..81f0ab2d 100644 --- a/packages/svelte/src/lib/components/EdgeReconnectAnchor/EdgeReconnectAnchor.svelte +++ b/packages/svelte/src/lib/components/EdgeReconnectAnchor/EdgeReconnectAnchor.svelte @@ -50,7 +50,6 @@ edgeLookup } = store; - let newEdge: Edge | undefined; let edge = edgeLookup.get(edgeId)!; const _onConnectStart: OnConnectStart = (evt, params) => { @@ -86,13 +85,16 @@ onConnectStart: _onConnectStart, onConnectEnd: onconnectend, onConnect: (connection) => { - newEdge = { ...edge, ...connection }; - newEdge = onbeforereconnect ? (onbeforereconnect(newEdge, edge) ?? undefined) : newEdge; + const reconnectedEdge = { ...edge, ...connection }; + const newEdge = onbeforereconnect + ? onbeforereconnect(reconnectedEdge, edge) + : reconnectedEdge; - if (newEdge) { - store.edges = store.edges.map((e) => (e.id === edge.id ? (newEdge as Edge) : e)); + if (!newEdge) { + return; } + store.edges = store.edges.map((e) => (e.id === edge.id ? (newEdge as Edge) : e)); onreconnect?.(edge, connection); }, onReconnectEnd: (event, connectionState) => {