Skip to content

Commit 379c1b4

Browse files
committed
useNodeManager Hook
1 parent 49aea78 commit 379c1b4

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 { 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 getTaskNodeId = useCallback(
11+
(taskId: string): string => {
12+
return nodeManager.getNodeId(taskId, "task");
13+
},
14+
[nodeManager],
15+
);
16+
17+
const getInputNodeId = useCallback(
18+
(inputName: string): string => {
19+
return nodeManager.getNodeId(inputName, "input");
20+
},
21+
[nodeManager],
22+
);
23+
24+
const getOutputNodeId = useCallback(
25+
(outputName: string): string => {
26+
return nodeManager.getNodeId(outputName, "output");
27+
},
28+
[nodeManager],
29+
);
30+
31+
const getTaskInputNodeId = useCallback(
32+
(taskId: string, inputName: string): string => {
33+
return nodeManager.getTaskHandleNodeId(taskId, inputName, "taskInput");
34+
},
35+
[nodeManager],
36+
);
37+
38+
const getTaskOutputNodeId = useCallback(
39+
(taskId: string, outputName: string): string => {
40+
return nodeManager.getTaskHandleNodeId(taskId, outputName, "taskOutput");
41+
},
42+
[nodeManager],
43+
);
44+
45+
// Get task ID from node ID
46+
const getTaskId = useCallback(
47+
(nodeId: string): string | undefined => {
48+
return nodeManager.getTaskId(nodeId);
49+
},
50+
[nodeManager],
51+
);
52+
53+
// Core NodeManager operations
54+
const updateTaskId = useCallback(
55+
(oldTaskId: string, newTaskId: string): void => {
56+
nodeManager.updateTaskId(oldTaskId, newTaskId);
57+
},
58+
[nodeManager],
59+
);
60+
61+
const removeNode = useCallback(
62+
(taskId: string): void => {
63+
nodeManager.removeNode(taskId);
64+
},
65+
[nodeManager],
66+
);
67+
68+
const isManaged = useCallback(
69+
(nodeId: string): boolean => {
70+
return nodeManager.isManaged(nodeId);
71+
},
72+
[nodeManager],
73+
);
74+
75+
const getNodeType = useCallback(
76+
(nodeId: string): NodeType | undefined => {
77+
return nodeManager.getNodeType(nodeId);
78+
},
79+
[nodeManager],
80+
);
81+
82+
// Helper to get handle info from node ID
83+
const getHandleInfo = useCallback(
84+
(nodeId: string): { taskId: string; handleName: string } | undefined => {
85+
return nodeManager.getHandleInfo(nodeId);
86+
},
87+
[nodeManager],
88+
);
89+
90+
// Return all utilities as a stable object
91+
return useMemo(
92+
() => ({
93+
// Core operations
94+
getTaskId,
95+
updateTaskId,
96+
removeNode,
97+
isManaged,
98+
getNodeType,
99+
100+
// Specific node type utilities
101+
getInputNodeId,
102+
getOutputNodeId,
103+
getTaskNodeId,
104+
getTaskInputNodeId,
105+
getTaskOutputNodeId,
106+
getHandleInfo,
107+
108+
// Direct access to NodeManager for advanced use cases
109+
nodeManager,
110+
}),
111+
[
112+
getTaskId,
113+
updateTaskId,
114+
removeNode,
115+
isManaged,
116+
getNodeType,
117+
getInputNodeId,
118+
getOutputNodeId,
119+
getTaskNodeId,
120+
getTaskInputNodeId,
121+
getTaskOutputNodeId,
122+
getHandleInfo,
123+
nodeManager,
124+
],
125+
);
126+
};

0 commit comments

Comments
 (0)