From 99fc00f5dcc3b4c31d74e928f507b79991e873c5 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Thu, 15 Feb 2024 11:32:55 +0100 Subject: [PATCH] aligned useHandleConnections in svelte with react version --- packages/react/src/hooks/useHandleConnections.ts | 3 ++- packages/svelte/src/lib/hooks/useHandleConnections.ts | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/react/src/hooks/useHandleConnections.ts b/packages/react/src/hooks/useHandleConnections.ts index 5e7a89a8..20b65a2d 100644 --- a/packages/react/src/hooks/useHandleConnections.ts +++ b/packages/react/src/hooks/useHandleConnections.ts @@ -37,8 +37,9 @@ export function useHandleConnections({ onDisconnect, }: useHandleConnectionsParams): HandleConnection[] { const _nodeId = useNodeId(); + const currentNodeId = nodeId ?? _nodeId; + const prevConnections = useRef | null>(null); - const currentNodeId = nodeId || _nodeId; const connections = useStore( (state) => state.connectionLookup.get(`${currentNodeId}-${type}-${id}`), diff --git a/packages/svelte/src/lib/hooks/useHandleConnections.ts b/packages/svelte/src/lib/hooks/useHandleConnections.ts index d3f51998..7aec3858 100644 --- a/packages/svelte/src/lib/hooks/useHandleConnections.ts +++ b/packages/svelte/src/lib/hooks/useHandleConnections.ts @@ -2,10 +2,11 @@ import { derived } from 'svelte/store'; import { areConnectionMapsEqual, type HandleConnection, type HandleType } from '@xyflow/system'; import { useStore } from '$lib/store'; +import { getContext } from 'svelte'; export type useHandleConnectionsParams = { - nodeId: string; type: HandleType; + nodeId?: string; id?: string | null; }; @@ -20,14 +21,18 @@ const initialConnections: HandleConnection[] = []; * @param param.id - the handle id (this is only needed if the node has multiple handles of the same type) * @returns an array with connections */ -export function useHandleConnections({ nodeId, type, id = null }: useHandleConnectionsParams) { +export function useHandleConnections({ type, nodeId, id = null }: useHandleConnectionsParams) { const { edges, connectionLookup } = useStore(); + + const _nodeId = getContext('svelteflow__node_id'); + const currentNodeId = nodeId ?? _nodeId; + let prevConnections: Map | undefined = undefined; return derived( [edges, connectionLookup], ([, connectionLookup], set) => { - const nextConnections = connectionLookup.get(`${nodeId}-${type}-${id || null}`); + const nextConnections = connectionLookup.get(`${currentNodeId}-${type}-${id || null}`); if (!areConnectionMapsEqual(nextConnections, prevConnections)) { prevConnections = nextConnections;