From 4a3af6da2f2a3166683fcf7d6afde2d5b6ae476a Mon Sep 17 00:00:00 2001 From: moklick Date: Fri, 27 Jun 2025 21:09:02 +0200 Subject: [PATCH 1/2] fix(xyhandle): only fire end events when connection started #5315 --- packages/system/src/xyhandle/XYHandle.ts | 38 +++++++++++++----------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/system/src/xyhandle/XYHandle.ts b/packages/system/src/xyhandle/XYHandle.ts index dffdf8a1..f6326ede 100644 --- a/packages/system/src/xyhandle/XYHandle.ts +++ b/packages/system/src/xyhandle/XYHandle.ts @@ -112,6 +112,7 @@ function onPointerDown( }; function startConnection() { + connectionStarted = true; updateConnection(previousConnection); onConnectStart?.(event, { nodeId, handleId, handleType }); } @@ -132,8 +133,6 @@ function onPointerDown( } startConnection(); - - connectionStarted = nextConnectionStarted; } if (!getFromHandle() || !fromHandle) { @@ -208,24 +207,27 @@ function onPointerDown( } function onPointerUp(event: MouseEvent | TouchEvent) { - if ((closestHandle || handleDomNode) && connection && isValid) { - onConnect?.(connection); - } + if (connectionStarted) { + if ((closestHandle || handleDomNode) && connection && isValid) { + onConnect?.(connection); + } - /* - * it's important to get a fresh reference from the store here - * in order to get the latest state of onConnectEnd - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { inProgress, ...connectionState } = previousConnection; - const finalConnectionState = { - ...connectionState, - toPosition: previousConnection.toHandle ? previousConnection.toPosition : null, - }; - onConnectEnd?.(event, finalConnectionState); + /* + * it's important to get a fresh reference from the store here + * in order to get the latest state of onConnectEnd + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { inProgress, ...connectionState } = previousConnection; + const finalConnectionState = { + ...connectionState, + toPosition: previousConnection.toHandle ? previousConnection.toPosition : null, + }; - if (edgeUpdaterType) { - onReconnectEnd?.(event, finalConnectionState); + onConnectEnd?.(event, finalConnectionState); + + if (edgeUpdaterType) { + onReconnectEnd?.(event, finalConnectionState); + } } cancelConnection(); From 26f2cdd720fc2c8fb337d3af13b82dab6a90fb60 Mon Sep 17 00:00:00 2001 From: moklick Date: Fri, 27 Jun 2025 21:09:58 +0200 Subject: [PATCH 2/2] chore(changeset): add --- .changeset/strong-snails-melt.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strong-snails-melt.md diff --git a/.changeset/strong-snails-melt.md b/.changeset/strong-snails-melt.md new file mode 100644 index 00000000..d85d6450 --- /dev/null +++ b/.changeset/strong-snails-melt.md @@ -0,0 +1,5 @@ +--- +'@xyflow/system': patch +--- + +Only fire connection end events if connection was started