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;