Skip to content

Commit

Permalink
refactor(useNodeConnections): change param names
Browse files Browse the repository at this point in the history
  • Loading branch information
moklick committed Jan 9, 2025
1 parent 7dac54f commit 78f9d4e
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ function CustomHandle({ nodeId, ...handleProps }: HandleProps & { nodeId: string
[nodeId]
);
const connections = useNodeConnections({
type: handleProps.type,
handleType: handleProps.type,
handleId: handleProps.id,
onConnect,
onDisconnect,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function CustomHandle({ nodeId, ...handleProps }: HandleProps & { nodeId: string
[nodeId]
);
const connections = useNodeConnections({
type: handleProps.type,
handleType: handleProps.type,
handleId: handleProps.id,
onConnect,
onDisconnect,
Expand Down
2 changes: 1 addition & 1 deletion examples/react/src/examples/UseNodesData/ResultNode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { isTextNode, type MyNode } from '.';

function ResultNode() {
const connections = useNodeConnections({
type: 'target',
handleType: 'target',
});
const nodesData = useNodesData<MyNode>(connections.map((connection) => connection.source));
const textNodes = nodesData.filter(isTextNode);
Expand Down
2 changes: 1 addition & 1 deletion examples/react/src/examples/UseNodesData/UppercaseNode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { isTextNode, type TextNode, type MyNode } from '.';
function UppercaseNode({ id }: NodeProps) {
const { updateNodeData } = useReactFlow();
const connections = useNodeConnections({
type: 'target',
handleType: 'target',
});
const nodesData = useNodesData<MyNode>(connections[0]?.source);
const textNode = isTextNode(nodesData) ? nodesData : null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
$$restProps;
const connections = useNodeConnections({
nodeId: id,
type: 'target'
id: id,
handleType: 'target'
});
$: nodeData = useNodesData<MyNode>($connections.map((connection) => connection.source));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
const { updateNodeData } = useSvelteFlow();
const connections = useNodeConnections({
nodeId: id,
type: 'target'
id: id,
handleType: 'target'
});
$: nodeData = useNodesData<MyNode>($connections[0]?.source);
Expand Down
20 changes: 11 additions & 9 deletions packages/react/src/hooks/useNodeConnections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import { useNodeId } from '../contexts/NodeIdContext';
const error014 = errorMessages['error014']();

type UseNodeConnectionsParams = {
type?: HandleType;
id?: string;
handleType?: HandleType;
handleId?: string;
nodeId?: string;
onConnect?: (connections: Connection[]) => void;
onDisconnect?: (connections: Connection[]) => void;
};
Expand All @@ -25,22 +25,22 @@ type UseNodeConnectionsParams = {
* Hook to retrieve all edges connected to a node. Can be filtered by handle type and id.
*
* @public
* @param param.nodeId - node id - optional if called inside a custom node
* @param param.type - filter by handle type 'source' or 'target'
* @param param.id - node id - optional if called inside a custom node
* @param param.handleType - filter by handle type 'source' or 'target'
* @param param.handleId - filter by handle id (this is only needed if the node has multiple handles of the same type)
* @param param.onConnect - gets called when a connection is established
* @param param.onDisconnect - gets called when a connection is removed
* @returns an array with connections
*/
export function useNodeConnections({
type,
id,
handleType,
handleId,
nodeId,
onConnect,
onDisconnect,
}: UseNodeConnectionsParams = {}): NodeConnection[] {
const _nodeId = useNodeId();
const currentNodeId = nodeId ?? _nodeId;
const nodeId = useNodeId();
const currentNodeId = id ?? nodeId;

if (!currentNodeId) {
throw new Error(error014);
Expand All @@ -50,7 +50,9 @@ export function useNodeConnections({

const connections = useStore(
(state) =>
state.connectionLookup.get(`${currentNodeId}${type ? (handleId ? `-${type}-${handleId}` : `-${type}`) : ''}`),
state.connectionLookup.get(
`${currentNodeId}${handleType ? (handleId ? `-${handleType}-${handleId}` : `-${handleType}`) : ''}`
),
areConnectionMapsEqual
);

Expand Down
18 changes: 9 additions & 9 deletions packages/svelte/src/lib/hooks/useNodeConnections.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { getContext } from 'svelte';
import { derived } from 'svelte/store';
import {
areConnectionMapsEqual,
Expand All @@ -7,14 +8,13 @@ import {
} from '@xyflow/system';

import { useStore } from '$lib/store';
import { getContext } from 'svelte';

const error014 = errorMessages['error014']();

type UseNodeConnectionsParams = {
type?: HandleType;
id?: string;
handleType?: HandleType;
handleId?: string;
nodeId?: string;
// TODO: Svelte 5
// onConnect?: (connections: Connection[]) => void;
// onDisconnect?: (connections: Connection[]) => void;
Expand All @@ -26,18 +26,18 @@ const initialConnections: NodeConnection[] = [];
* Hook to retrieve all edges connected to a node. Can be filtered by handle type and id.
*
* @public
* @param param.nodeId - node id - optional if called inside a custom node
* @param param.type - filter by handle type 'source' or 'target'
* @param param.id - node id - optional if called inside a custom node
* @param param.handleType - filter by handle type 'source' or 'target'
* @param param.handleId - filter by handle id (this is only needed if the node has multiple handles of the same type)
* @todo @param param.onConnect - gets called when a connection is established
* @todo @param param.onDisconnect - gets called when a connection is removed
* @returns an array with connections
*/
export function useNodeConnections({ type, nodeId, handleId }: UseNodeConnectionsParams = {}) {
export function useNodeConnections({ id, handleType, handleId }: UseNodeConnectionsParams = {}) {
const { edges, connectionLookup } = useStore();

const _nodeId = getContext<string>('svelteflow__node_id');
const currentNodeId = nodeId ?? _nodeId;
const nodeId = getContext<string>('svelteflow__node_id');
const currentNodeId = id ?? nodeId;

if (!currentNodeId) {
throw new Error(error014);
Expand All @@ -49,7 +49,7 @@ export function useNodeConnections({ type, nodeId, handleId }: UseNodeConnection
[edges, connectionLookup],
([, connectionLookup], set) => {
const nextConnections = connectionLookup.get(
`${currentNodeId}${type ? (handleId ? `-${type}-${handleId}` : `-${type}`) : ''}`
`${currentNodeId}${handleType ? (handleId ? `-${handleType}-${handleId}` : `-${handleType}`) : ''}`
);

if (!areConnectionMapsEqual(nextConnections, prevConnections)) {
Expand Down

0 comments on commit 78f9d4e

Please sign in to comment.