Skip to content

Commit 4dce064

Browse files
committed
useNodeManager Hook
1 parent e1cbc87 commit 4dce064

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed

src/hooks/useNodeManager.ts

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
import { useCallback, useMemo } from "react";
2+
3+
import type { HandleInfo, NodeType } from "@/nodeManager";
4+
import { useComponentSpec } from "@/providers/ComponentSpecProvider";
5+
6+
export const useNodeManager = () => {
7+
const { nodeManager } = useComponentSpec();
8+
9+
// Get node ID utilities
10+
const getNodeId = useCallback(
11+
(refId: string, type: NodeType): string => {
12+
return nodeManager.getNodeId(refId, type);
13+
},
14+
[nodeManager],
15+
);
16+
17+
const getHandleNodeId = useCallback(
18+
(
19+
refId: string,
20+
handleName: string,
21+
handleType: "inputHandle" | "outputHandle",
22+
): string => {
23+
return nodeManager.getHandleNodeId(refId, handleName, handleType);
24+
},
25+
[nodeManager],
26+
);
27+
28+
const getTaskNodeId = useCallback(
29+
(taskId: string): string => {
30+
return nodeManager.getNodeId(taskId, "task");
31+
},
32+
[nodeManager],
33+
);
34+
35+
const getInputNodeId = useCallback(
36+
(inputId: string): string => {
37+
return nodeManager.getNodeId(inputId, "input");
38+
},
39+
[nodeManager],
40+
);
41+
42+
const getOutputNodeId = useCallback(
43+
(outputId: string): string => {
44+
return nodeManager.getNodeId(outputId, "output");
45+
},
46+
[nodeManager],
47+
);
48+
49+
const getInputHandleNodeId = useCallback(
50+
(refId: string, inputName: string): string => {
51+
return nodeManager.getHandleNodeId(refId, inputName, "inputHandle");
52+
},
53+
[nodeManager],
54+
);
55+
56+
const getOutputHandleNodeId = useCallback(
57+
(refId: string, outputName: string): string => {
58+
return nodeManager.getHandleNodeId(refId, outputName, "outputHandle");
59+
},
60+
[nodeManager],
61+
);
62+
63+
// Get task ID from node ID
64+
const getRefId = useCallback(
65+
(nodeId: string): string | undefined => {
66+
return nodeManager.getRefId(nodeId);
67+
},
68+
[nodeManager],
69+
);
70+
71+
// Core NodeManager operations
72+
const updateRefId = useCallback(
73+
(oldRefId: string, newRefId: string): void => {
74+
nodeManager.updateRefId(oldRefId, newRefId);
75+
},
76+
[nodeManager],
77+
);
78+
79+
const getNodeType = useCallback(
80+
(nodeId: string): NodeType | undefined => {
81+
return nodeManager.getNodeType(nodeId);
82+
},
83+
[nodeManager],
84+
);
85+
86+
const getHandleInfo = useCallback(
87+
(nodeId: string): HandleInfo | undefined => {
88+
return nodeManager.getHandleInfo(nodeId);
89+
},
90+
[nodeManager],
91+
);
92+
93+
return useMemo(
94+
() => ({
95+
// Core operations
96+
getNodeId,
97+
getHandleNodeId,
98+
getHandleInfo,
99+
getNodeType,
100+
getRefId,
101+
updateRefId,
102+
// Specific getters
103+
getInputNodeId,
104+
getOutputNodeId,
105+
getTaskNodeId,
106+
getInputHandleNodeId,
107+
getOutputHandleNodeId,
108+
// NodeManager instance
109+
nodeManager,
110+
}),
111+
[
112+
getNodeId,
113+
getHandleNodeId,
114+
getHandleInfo,
115+
getNodeType,
116+
getRefId,
117+
updateRefId,
118+
getInputNodeId,
119+
getOutputNodeId,
120+
getTaskNodeId,
121+
getInputHandleNodeId,
122+
getOutputHandleNodeId,
123+
nodeManager,
124+
],
125+
);
126+
};

0 commit comments

Comments
 (0)