Merge pull request #5468 from xyflow/svelte-fix-onbeforeconnect

Svelte fix onbeforeconnect
This commit is contained in:
Moritz Klack
2025-08-19 15:57:35 +02:00
committed by GitHub
4 changed files with 15 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@xyflow/svelte': patch
---
Allow returning void, false and null from onbeforeconnect
@@ -50,7 +50,6 @@
edgeLookup edgeLookup
} = store; } = store;
let newEdge: Edge | undefined;
let edge = edgeLookup.get(edgeId)!; let edge = edgeLookup.get(edgeId)!;
const _onConnectStart: OnConnectStart = (evt, params) => { const _onConnectStart: OnConnectStart = (evt, params) => {
@@ -86,13 +85,16 @@
onConnectStart: _onConnectStart, onConnectStart: _onConnectStart,
onConnectEnd: onconnectend, onConnectEnd: onconnectend,
onConnect: (connection) => { onConnect: (connection) => {
newEdge = { ...edge, ...connection }; const reconnectedEdge = { ...edge, ...connection };
newEdge = onbeforereconnect ? (onbeforereconnect(newEdge, edge) ?? undefined) : newEdge; const newEdge = onbeforereconnect
? onbeforereconnect(reconnectedEdge, edge)
: reconnectedEdge;
if (newEdge) { if (!newEdge) {
store.edges = store.edges.map((e) => (e.id === edge.id ? (newEdge as Edge) : e)); return;
} }
store.edges = store.edges.map((e) => (e.id === edge.id ? (newEdge as Edge) : e));
onreconnect?.(edge, connection); onreconnect?.(edge, connection);
}, },
onReconnectEnd: (event, connectionState) => { onReconnectEnd: (event, connectionState) => {
@@ -98,7 +98,7 @@
}); });
function onConnectExtended(connection: Connection) { function onConnectExtended(connection: Connection) {
const edge = store.onbeforeconnect?.(connection) ?? connection; const edge = store.onbeforeconnect ? store.onbeforeconnect(connection) : connection;
if (!edge) { if (!edge) {
return; return;
+2 -2
View File
@@ -38,11 +38,11 @@ export type OnDelete<NodeType extends Node = Node, EdgeType extends Edge = Edge>
export type OnBeforeConnect<EdgeType extends Edge = Edge> = ( export type OnBeforeConnect<EdgeType extends Edge = Edge> = (
connection: Connection connection: Connection
) => EdgeType | Connection | void; ) => EdgeType | Connection | void | false | null;
export type OnBeforeReconnect<EdgeType extends Edge = Edge> = ( export type OnBeforeReconnect<EdgeType extends Edge = Edge> = (
newEdge: EdgeType, newEdge: EdgeType,
oldEdge: EdgeType oldEdge: EdgeType
) => EdgeType | void; ) => EdgeType | void | false | null;
export type OnBeforeDelete< export type OnBeforeDelete<
NodeType extends Node = Node, NodeType extends Node = Node,
EdgeType extends Edge = Edge EdgeType extends Edge = Edge