From e489df9808ff176553d175d03a91c43373e5adc0 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Wed, 13 Mar 2024 14:26:27 +0100 Subject: [PATCH] added check to xyhandle pointermove if connection is cancelled --- packages/react/src/components/Handle/index.tsx | 1 + packages/svelte/src/lib/components/Handle/Handle.svelte | 3 ++- packages/system/src/xyhandle/XYHandle.ts | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/react/src/components/Handle/index.tsx b/packages/react/src/components/Handle/index.tsx index f1f84cce..f481b7ce 100644 --- a/packages/react/src/components/Handle/index.tsx +++ b/packages/react/src/components/Handle/index.tsx @@ -140,6 +140,7 @@ function HandleComponent( onConnect: onConnectExtended, isValidConnection: isValidConnection || currentStore.isValidConnection, getTransform: () => store.getState().transform, + getConnectionStartHandle: () => store.getState().connectionStartHandle, }); } diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte index e35804fc..1dd64671 100644 --- a/packages/svelte/src/lib/components/Handle/Handle.svelte +++ b/packages/svelte/src/lib/components/Handle/Handle.svelte @@ -99,7 +99,8 @@ onConnectEnd: (event) => { $onConnectEndAction?.(event); }, - getTransform: () => [$viewport.x, $viewport.y, $viewport.zoom] + getTransform: () => [$viewport.x, $viewport.y, $viewport.zoom], + getConnectionStartHandle: () => $connection.startHandle }); } } diff --git a/packages/system/src/xyhandle/XYHandle.ts b/packages/system/src/xyhandle/XYHandle.ts index 4f99a97c..638ec966 100644 --- a/packages/system/src/xyhandle/XYHandle.ts +++ b/packages/system/src/xyhandle/XYHandle.ts @@ -38,6 +38,7 @@ export type OnPointerDownParams = { isValidConnection?: IsValidConnection; onEdgeUpdateEnd?: (evt: MouseEvent | TouchEvent) => void; getTransform: () => Transform; + getConnectionStartHandle: () => ConnectingHandle | null; }; export type IsValidParams = { @@ -91,6 +92,7 @@ function onPointerDown( onEdgeUpdateEnd, updateConnection, getTransform, + getConnectionStartHandle, }: OnPointerDownParams ) { // when xyflow is used inside a shadow root we can't use document @@ -149,6 +151,10 @@ function onPointerDown( onConnectStart?.(event, { nodeId, handleId, handleType }); function onPointerMove(event: MouseEvent | TouchEvent) { + if (!getConnectionStartHandle()) { + onPointerUp(event); + } + const transform = getTransform(); connectionPosition = getEventPosition(event, containerBounds); closestHandle = getClosestHandle(