react-html-graph 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/behaviour/move-behaviour.d.ts +50 -0
- package/dist/behaviour/move-behaviour.d.ts.map +1 -0
- package/dist/behaviour/move-behaviour.js +71 -0
- package/dist/behaviour/move-behaviour.js.map +1 -0
- package/dist/calculations/index.d.ts +15 -1
- package/dist/calculations/index.d.ts.map +1 -1
- package/dist/calculations/index.js +1026 -0
- package/dist/calculations/index.js.map +1 -1
- package/dist/calculations/types.d.ts +70 -0
- package/dist/calculations/types.d.ts.map +1 -1
- package/dist/context/connection-context.d.ts.map +1 -1
- package/dist/context/connection-context.js.map +1 -1
- package/dist/context/error-context.d.ts.map +1 -1
- package/dist/context/error-context.js.map +1 -1
- package/dist/context/graph-context.d.ts.map +1 -1
- package/dist/context/graph-context.js.map +1 -1
- package/dist/context/graph-event-bus-context.d.ts +4 -0
- package/dist/context/graph-event-bus-context.d.ts.map +1 -0
- package/dist/context/graph-event-bus-context.js +8 -0
- package/dist/context/graph-event-bus-context.js.map +1 -0
- package/dist/context/graph-root-context.d.ts.map +1 -1
- package/dist/context/graph-root-context.js.map +1 -1
- package/dist/context/link-info-context.d.ts +4 -0
- package/dist/context/link-info-context.d.ts.map +1 -0
- package/dist/context/link-info-context.js +15 -0
- package/dist/context/link-info-context.js.map +1 -0
- package/dist/context/node-event-context.d.ts +4 -0
- package/dist/context/node-event-context.d.ts.map +1 -0
- package/dist/context/node-event-context.js +10 -0
- package/dist/context/node-event-context.js.map +1 -0
- package/dist/context/node-registry-context.d.ts +4 -0
- package/dist/context/node-registry-context.d.ts.map +1 -0
- package/dist/context/node-registry-context.js +13 -0
- package/dist/context/node-registry-context.js.map +1 -0
- package/dist/graph/index.d.ts +2 -2
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +446 -36
- package/dist/graph/index.js.map +1 -1
- package/dist/hooks/connection.d.ts +1 -1
- package/dist/hooks/connection.d.ts.map +1 -1
- package/dist/hooks/connection.js +5 -2
- package/dist/hooks/connection.js.map +1 -1
- package/dist/hooks/get-viewbox.d.ts +9 -0
- package/dist/hooks/get-viewbox.d.ts.map +1 -0
- package/dist/hooks/get-viewbox.js +20 -0
- package/dist/hooks/get-viewbox.js.map +1 -0
- package/dist/hooks/graph-event-bus.d.ts +3 -0
- package/dist/hooks/graph-event-bus.d.ts.map +1 -0
- package/dist/hooks/graph-event-bus.js +7 -0
- package/dist/hooks/graph-event-bus.js.map +1 -0
- package/dist/hooks/link-info.d.ts +4 -0
- package/dist/hooks/link-info.d.ts.map +1 -0
- package/dist/hooks/link-info.js +7 -0
- package/dist/hooks/link-info.js.map +1 -0
- package/dist/hooks/node-registry.d.ts +3 -0
- package/dist/hooks/node-registry.d.ts.map +1 -0
- package/dist/hooks/node-registry.js +7 -0
- package/dist/hooks/node-registry.js.map +1 -0
- package/dist/hooks/nodeEvent.d.ts +7 -0
- package/dist/hooks/nodeEvent.d.ts.map +1 -0
- package/dist/hooks/nodeEvent.js +17 -0
- package/dist/hooks/nodeEvent.js.map +1 -0
- package/dist/hooks/use-graph-api.d.ts +50 -0
- package/dist/hooks/use-graph-api.d.ts.map +1 -0
- package/dist/hooks/use-graph-api.js +97 -0
- package/dist/hooks/use-graph-api.js.map +1 -0
- package/dist/layouts/centralizar.d.ts +1 -0
- package/dist/layouts/centralizar.d.ts.map +1 -0
- package/dist/layouts/centralizar.js +2 -0
- package/dist/layouts/centralizar.js.map +1 -0
- package/dist/layouts/force-direction-layout.d.ts +9 -0
- package/dist/layouts/force-direction-layout.d.ts.map +1 -0
- package/dist/layouts/force-direction-layout.js +11 -0
- package/dist/layouts/force-direction-layout.js.map +1 -0
- package/dist/layouts/index.d.ts +13 -0
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/layouts/index.js +17 -0
- package/dist/layouts/index.js.map +1 -0
- package/dist/layouts/organic-layout.d.ts +9 -0
- package/dist/layouts/organic-layout.d.ts.map +1 -0
- package/dist/layouts/organic-layout.js +11 -0
- package/dist/layouts/organic-layout.js.map +1 -0
- package/dist/layouts/radial-layout.d.ts +9 -0
- package/dist/layouts/radial-layout.d.ts.map +1 -0
- package/dist/layouts/radial-layout.js +11 -0
- package/dist/layouts/radial-layout.js.map +1 -0
- package/dist/layouts/sequential-layout.d.ts +9 -0
- package/dist/layouts/sequential-layout.d.ts.map +1 -0
- package/dist/layouts/sequential-layout.js +11 -0
- package/dist/layouts/sequential-layout.js.map +1 -0
- package/dist/layouts/shared.d.ts +10 -0
- package/dist/layouts/shared.d.ts.map +1 -0
- package/dist/layouts/shared.js +39 -0
- package/dist/layouts/shared.js.map +1 -0
- package/dist/layouts/structural-layout.d.ts +9 -0
- package/dist/layouts/structural-layout.d.ts.map +1 -0
- package/dist/layouts/structural-layout.js +11 -0
- package/dist/layouts/structural-layout.js.map +1 -0
- package/dist/layouts/tree-layout.d.ts +9 -0
- package/dist/layouts/tree-layout.d.ts.map +1 -0
- package/dist/layouts/tree-layout.js +11 -0
- package/dist/layouts/tree-layout.js.map +1 -0
- package/dist/link/base.d.ts +10 -20
- package/dist/link/base.d.ts.map +1 -1
- package/dist/link/base.js +17 -197
- package/dist/link/base.js.map +1 -1
- package/dist/link/temp-link.d.ts.map +1 -1
- package/dist/link/temp-link.js +24 -7
- package/dist/link/temp-link.js.map +1 -1
- package/dist/module.d.ts +11 -1
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +11 -1
- package/dist/module.js.map +1 -1
- package/dist/nodes/base.d.ts +2 -1
- package/dist/nodes/base.d.ts.map +1 -1
- package/dist/nodes/base.js +75 -66
- package/dist/nodes/base.js.map +1 -1
- package/dist/paths/bidirectional-path.d.ts +16 -0
- package/dist/paths/bidirectional-path.d.ts.map +1 -0
- package/dist/paths/bidirectional-path.js +260 -0
- package/dist/paths/bidirectional-path.js.map +1 -0
- package/dist/ports/base.d.ts.map +1 -1
- package/dist/ports/base.js +26 -13
- package/dist/ports/base.js.map +1 -1
- package/dist/providers/connection-provider.d.ts +1 -1
- package/dist/providers/connection-provider.d.ts.map +1 -1
- package/dist/providers/connection-provider.js +30 -16
- package/dist/providers/connection-provider.js.map +1 -1
- package/dist/providers/graph-event-bus-provider.d.ts +11 -0
- package/dist/providers/graph-event-bus-provider.d.ts.map +1 -0
- package/dist/providers/graph-event-bus-provider.js +46 -0
- package/dist/providers/graph-event-bus-provider.js.map +1 -0
- package/dist/providers/link-info-provider.d.ts +23 -0
- package/dist/providers/link-info-provider.d.ts.map +1 -0
- package/dist/providers/link-info-provider.js +31 -0
- package/dist/providers/link-info-provider.js.map +1 -0
- package/dist/providers/node-event-context.d.ts +3 -0
- package/dist/providers/node-event-context.d.ts.map +1 -0
- package/dist/providers/node-event-context.js +81 -0
- package/dist/providers/node-event-context.js.map +1 -0
- package/dist/providers/node-registry-provider.d.ts +11 -0
- package/dist/providers/node-registry-provider.d.ts.map +1 -0
- package/dist/providers/node-registry-provider.js +54 -0
- package/dist/providers/node-registry-provider.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/types.d.ts +359 -38
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/proxy.d.ts +2 -0
- package/dist/utils/proxy.d.ts.map +1 -0
- package/dist/utils/proxy.js +18 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/symbols.d.ts +2 -0
- package/dist/utils/symbols.d.ts.map +1 -0
- package/dist/utils/symbols.js +2 -0
- package/dist/utils/symbols.js.map +1 -0
- package/package.json +1 -1
package/dist/ports/base.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useContext, useCallback } from "react";
|
|
2
|
+
import { useEffect, useContext, useCallback, useRef } from "react";
|
|
3
3
|
import { usePortDrag, usePortDrop } from "../hooks/connection";
|
|
4
4
|
import { ConnectionContext } from "../context/connection-context";
|
|
5
5
|
import useGraphMode from "../hooks/graph-mode";
|
|
6
|
+
import useNodeRegistry from "../hooks/node-registry";
|
|
6
7
|
/**
|
|
7
8
|
* Componente que representa uma porta de nó (input/output/bidirectional).
|
|
8
9
|
* Registra a porta no contexto de conexões e fornece handlers de arraste
|
|
@@ -14,13 +15,15 @@ import useGraphMode from "../hooks/graph-mode";
|
|
|
14
15
|
export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props }) {
|
|
15
16
|
const { registerPort, unregisterPort, getGraphApi } = useContext(ConnectionContext);
|
|
16
17
|
const mode = useGraphMode();
|
|
17
|
-
const
|
|
18
|
-
const
|
|
18
|
+
const registry = useNodeRegistry();
|
|
19
|
+
const portRef = useRef(null);
|
|
20
|
+
const { dragHandlers, isDragging, canDrag } = usePortDrag(props.nodeId, props.id, props.connectionType);
|
|
21
|
+
const { dropHandlers, canDrop } = usePortDrop(props.nodeId, props.id, props.connectionType);
|
|
19
22
|
useEffect(() => {
|
|
20
23
|
registerPort({
|
|
21
24
|
nodeId: props.nodeId,
|
|
22
25
|
portName: props.id,
|
|
23
|
-
connectionType: props.
|
|
26
|
+
connectionType: props.connectionType,
|
|
24
27
|
direction: props.direction,
|
|
25
28
|
onDragEnd: props.onDragEnd,
|
|
26
29
|
});
|
|
@@ -30,12 +33,19 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
30
33
|
}, [
|
|
31
34
|
props.nodeId,
|
|
32
35
|
props.id,
|
|
33
|
-
props.
|
|
36
|
+
props.connectionType,
|
|
34
37
|
props.direction,
|
|
35
38
|
props.onDragEnd,
|
|
36
39
|
registerPort,
|
|
37
40
|
unregisterPort,
|
|
38
41
|
]);
|
|
42
|
+
// Registra o elemento DOM da porta no NodeRegistry
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (!portRef.current)
|
|
45
|
+
return;
|
|
46
|
+
registry.registerPortElement(props.nodeId, props.id, portRef.current);
|
|
47
|
+
return () => registry.unregisterPortElement(props.nodeId, props.id);
|
|
48
|
+
}, [props.nodeId, props.id, registry]);
|
|
39
49
|
const forwardClickEvents = useCallback((event) => {
|
|
40
50
|
if (!onClick)
|
|
41
51
|
return;
|
|
@@ -45,7 +55,7 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
45
55
|
onClick({
|
|
46
56
|
type: 'click',
|
|
47
57
|
graph: {
|
|
48
|
-
|
|
58
|
+
connectionType: props.connectionType,
|
|
49
59
|
id: props.id,
|
|
50
60
|
nodeId: props.nodeId,
|
|
51
61
|
direction: props.direction,
|
|
@@ -53,7 +63,7 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
53
63
|
nativeEvent: event.nativeEvent,
|
|
54
64
|
api,
|
|
55
65
|
});
|
|
56
|
-
}, [getGraphApi, onClick, props.direction, props.id, props.nodeId, props.
|
|
66
|
+
}, [getGraphApi, onClick, props.direction, props.id, props.nodeId, props.connectionType]);
|
|
57
67
|
const forwardMouseOverEvents = useCallback((event) => {
|
|
58
68
|
if (!onMouseOver)
|
|
59
69
|
return;
|
|
@@ -63,7 +73,7 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
63
73
|
onMouseOver({
|
|
64
74
|
type: 'mouseOver',
|
|
65
75
|
graph: {
|
|
66
|
-
|
|
76
|
+
connectionType: props.connectionType,
|
|
67
77
|
id: props.id,
|
|
68
78
|
nodeId: props.nodeId,
|
|
69
79
|
direction: props.direction,
|
|
@@ -71,7 +81,7 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
71
81
|
nativeEvent: event.nativeEvent,
|
|
72
82
|
api,
|
|
73
83
|
});
|
|
74
|
-
}, [getGraphApi, onMouseOver, props.direction, props.id, props.nodeId, props.
|
|
84
|
+
}, [getGraphApi, onMouseOver, props.direction, props.id, props.nodeId, props.connectionType]);
|
|
75
85
|
const forwardMouseLeaveEvents = useCallback((event) => {
|
|
76
86
|
if (!onMouseLeave)
|
|
77
87
|
return;
|
|
@@ -81,7 +91,7 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
81
91
|
onMouseLeave({
|
|
82
92
|
type: 'mouseLeave',
|
|
83
93
|
graph: {
|
|
84
|
-
|
|
94
|
+
connectionType: props.connectionType,
|
|
85
95
|
id: props.id,
|
|
86
96
|
nodeId: props.nodeId,
|
|
87
97
|
direction: props.direction,
|
|
@@ -89,7 +99,7 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
89
99
|
nativeEvent: event.nativeEvent,
|
|
90
100
|
api,
|
|
91
101
|
});
|
|
92
|
-
}, [getGraphApi, onMouseLeave, props.direction, props.id, props.nodeId, props.
|
|
102
|
+
}, [getGraphApi, onMouseLeave, props.direction, props.id, props.nodeId, props.connectionType]);
|
|
93
103
|
const isOutput = props.direction === "output" || props.direction === "bidirectional";
|
|
94
104
|
const isInput = props.direction === "input" || props.direction === "bidirectional";
|
|
95
105
|
const handlers = mode === "edit"
|
|
@@ -101,8 +111,11 @@ export default function GraphPort({ onClick, onMouseOver, onMouseLeave, ...props
|
|
|
101
111
|
const portAttr = props.direction === "bidirectional"
|
|
102
112
|
? "bidirectional"
|
|
103
113
|
: props.direction;
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
const portLocationAttr = typeof props.location === "string"
|
|
115
|
+
? props.location
|
|
116
|
+
: "coordinates";
|
|
117
|
+
return (_jsx("node-graph-port", { ref: portRef, ...handlers, onClick: forwardClickEvents, onMouseOver: forwardMouseOverEvents, onMouseLeave: forwardMouseLeaveEvents, "node-port": portAttr, "port-location": portLocationAttr, "port-id": props.id, children: props.children({
|
|
118
|
+
connectionType: props.connectionType,
|
|
106
119
|
id: props.id,
|
|
107
120
|
nodeId: props.nodeId,
|
|
108
121
|
direction: props.direction,
|
package/dist/ports/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/ports/base.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/ports/base.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ import { ConnectionProviderProps } from "../types";
|
|
|
6
6
|
* @param props Propriedades do provider (ConnectionProviderProps)
|
|
7
7
|
* @returns JSX.Element
|
|
8
8
|
*/
|
|
9
|
-
export default function ConnectionProvider({
|
|
9
|
+
export default function ConnectionProvider({ graphApi, children }: ConnectionProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
//# sourceMappingURL=connection-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-provider.d.ts","sourceRoot":"","sources":["../../src/providers/connection-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"connection-provider.d.ts","sourceRoot":"","sources":["../../src/providers/connection-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,uBAAuB,EAA8C,MAAM,UAAU,CAAC;AAM/H;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAoJzF"}
|
|
@@ -11,7 +11,7 @@ import useGraphRoot from "../hooks/graph-root";
|
|
|
11
11
|
* @param props Propriedades do provider (ConnectionProviderProps)
|
|
12
12
|
* @returns JSX.Element
|
|
13
13
|
*/
|
|
14
|
-
export default function ConnectionProvider({
|
|
14
|
+
export default function ConnectionProvider({ graphApi, children }) {
|
|
15
15
|
const [connections, setConnections] = useState([]);
|
|
16
16
|
const [dragState, setDragState] = useState({ active: false });
|
|
17
17
|
const dragStateRef = useRef({ active: false });
|
|
@@ -21,6 +21,7 @@ export default function ConnectionProvider({ graphApiRef, children }) {
|
|
|
21
21
|
const viewbox = useViewbox();
|
|
22
22
|
const graphRoot = useGraphRoot();
|
|
23
23
|
const viewboxRef = useRef(viewbox);
|
|
24
|
+
const connectionApiRef = useRef(null);
|
|
24
25
|
viewboxRef.current = viewbox;
|
|
25
26
|
connectionsRef.current = connections;
|
|
26
27
|
const registerPort = useCallback((reg) => {
|
|
@@ -30,8 +31,8 @@ export default function ConnectionProvider({ graphApiRef, children }) {
|
|
|
30
31
|
portRegistry.current.delete(`${nodeId}:${portName}`);
|
|
31
32
|
}, []);
|
|
32
33
|
const getGraphApi = useCallback(() => {
|
|
33
|
-
return
|
|
34
|
-
}, [
|
|
34
|
+
return graphApi;
|
|
35
|
+
}, [graphApi]);
|
|
35
36
|
const connect = useCallback((connection) => {
|
|
36
37
|
if (mode === "readonly")
|
|
37
38
|
return;
|
|
@@ -68,7 +69,7 @@ export default function ConnectionProvider({ graphApiRef, children }) {
|
|
|
68
69
|
const sourcePort = portRegistry.current.get(sourceKey);
|
|
69
70
|
if (sourcePort?.onDragEnd) {
|
|
70
71
|
try {
|
|
71
|
-
await sourcePort.onDragEnd(
|
|
72
|
+
await sourcePort.onDragEnd(graphApi, {
|
|
72
73
|
sourceNodeId: current.sourceNodeId,
|
|
73
74
|
sourcePortName: current.sourcePortName,
|
|
74
75
|
connectionType: current.connectionType,
|
|
@@ -83,7 +84,7 @@ export default function ConnectionProvider({ graphApiRef, children }) {
|
|
|
83
84
|
}
|
|
84
85
|
// Oculta o link temporário após o callback finalizar
|
|
85
86
|
setDragState({ active: false });
|
|
86
|
-
}, [
|
|
87
|
+
}, [graphApi]);
|
|
87
88
|
// mouseup global: encerra o arraste quando clicado em espaço vazio
|
|
88
89
|
useEffect(() => {
|
|
89
90
|
const handleMouseUp = (e) => {
|
|
@@ -104,17 +105,30 @@ export default function ConnectionProvider({ graphApiRef, children }) {
|
|
|
104
105
|
document.addEventListener("mouseup", handleMouseUp);
|
|
105
106
|
return () => document.removeEventListener("mouseup", handleMouseUp);
|
|
106
107
|
}, [endDrag, graphRoot]);
|
|
107
|
-
const value = useMemo(() =>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
108
|
+
const value = useMemo(() => {
|
|
109
|
+
connectionApiRef.current = {
|
|
110
|
+
connect,
|
|
111
|
+
disconnect,
|
|
112
|
+
getConnections: () => connectionsRef.current,
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
connections,
|
|
116
|
+
dragState,
|
|
117
|
+
getGraphApi,
|
|
118
|
+
connect,
|
|
119
|
+
disconnect,
|
|
120
|
+
startDrag,
|
|
121
|
+
endDrag,
|
|
122
|
+
registerPort,
|
|
123
|
+
unregisterPort,
|
|
124
|
+
};
|
|
125
|
+
}, [
|
|
126
|
+
connections, dragState,
|
|
127
|
+
getGraphApi, connect,
|
|
128
|
+
disconnect, startDrag,
|
|
129
|
+
endDrag, registerPort,
|
|
130
|
+
unregisterPort
|
|
131
|
+
]);
|
|
118
132
|
return (_jsx(ConnectionContext.Provider, { value: value, children: children }));
|
|
119
133
|
}
|
|
120
134
|
//# sourceMappingURL=connection-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-provider.js","sourceRoot":"","sources":["../../src/providers/connection-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAG/C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"connection-provider.js","sourceRoot":"","sources":["../../src/providers/connection-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface GraphEventBusProviderProps {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Provider que mantém um bus centralizado de eventos do grafo.
|
|
6
|
+
* Permite que nós emitam eventos e links (ou outros componentes) assinem
|
|
7
|
+
* eventos de nós específicos para reagir a mudanças de dados, posição, etc.
|
|
8
|
+
*/
|
|
9
|
+
export default function GraphEventBusProvider({ children }: GraphEventBusProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=graph-event-bus-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-event-bus-provider.d.ts","sourceRoot":"","sources":["../../src/providers/graph-event-bus-provider.tsx"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,0BAA0B,2CAwDrF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useRef, useMemo } from "react";
|
|
3
|
+
import { GraphEventBusContext } from "../context/graph-event-bus-context";
|
|
4
|
+
/**
|
|
5
|
+
* Provider que mantém um bus centralizado de eventos do grafo.
|
|
6
|
+
* Permite que nós emitam eventos e links (ou outros componentes) assinem
|
|
7
|
+
* eventos de nós específicos para reagir a mudanças de dados, posição, etc.
|
|
8
|
+
*/
|
|
9
|
+
export default function GraphEventBusProvider({ children }) {
|
|
10
|
+
// Map<"nodeId:eventType", Set<callback>>
|
|
11
|
+
const listeners = useRef(new Map());
|
|
12
|
+
const subscribe = useCallback((nodeId, event, listener) => {
|
|
13
|
+
const key = `${nodeId}:${event}`;
|
|
14
|
+
if (!listeners.current.has(key)) {
|
|
15
|
+
listeners.current.set(key, new Set());
|
|
16
|
+
}
|
|
17
|
+
listeners.current.get(key).add(listener);
|
|
18
|
+
}, []);
|
|
19
|
+
const unsubscribe = useCallback((nodeId, event, listener) => {
|
|
20
|
+
const key = `${nodeId}:${event}`;
|
|
21
|
+
listeners.current.get(key)?.delete(listener);
|
|
22
|
+
}, []);
|
|
23
|
+
const emit = useCallback((nodeId, event, payload) => {
|
|
24
|
+
const key = `${nodeId}:${event}`;
|
|
25
|
+
const handlers = listeners.current.get(key);
|
|
26
|
+
if (!handlers)
|
|
27
|
+
return;
|
|
28
|
+
// Constrói um evento simples com type, nodeId e payload
|
|
29
|
+
const eventObj = { type: event, nodeId, ...payload };
|
|
30
|
+
handlers.forEach(handler => {
|
|
31
|
+
try {
|
|
32
|
+
handler(eventObj);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(`Erro ao despachar evento "${String(event)}" do nó "${nodeId}":`, error);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}, []);
|
|
39
|
+
const value = useMemo(() => ({
|
|
40
|
+
subscribe,
|
|
41
|
+
unsubscribe,
|
|
42
|
+
emit,
|
|
43
|
+
}), [subscribe, unsubscribe, emit]);
|
|
44
|
+
return (_jsx(GraphEventBusContext.Provider, { value: value, children: children }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=graph-event-bus-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-event-bus-provider.js","sourceRoot":"","sources":["../../src/providers/graph-event-bus-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAO1E;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAA8B;IAClF,yCAAyC;IACzC,MAAM,SAAS,GAAG,MAAM,CAA0D,IAAI,GAAG,EAAE,CAAC,CAAC;IAE7F,MAAM,SAAS,GAAG,WAAW,CAAC,CAC1B,MAAc,EACd,KAAQ,EACR,QAA8B,EAChC,EAAE;QACA,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,QAAiD,CAAC,CAAC;IACvF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,CAC5B,MAAc,EACd,KAAQ,EACR,QAA8B,EAChC,EAAE;QACA,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAiD,CAAC,CAAC;IAC1F,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CAAC,CACrB,MAAc,EACd,KAAQ,EACR,OAAiD,EACnD,EAAE;QACA,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,wDAAwD;QACxD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAqB,CAAC;QACxE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,CAAC;gBACD,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3F,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,OAAO,CAA4B,GAAG,EAAE,CAAC,CAAC;QACpD,SAAS;QACT,WAAW;QACX,IAAI;KACP,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpC,OAAO,CACH,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACtC,QAAQ,GACmB,CACnC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GraphLinkRuntimeState } from "../types";
|
|
2
|
+
interface LinkInfoProviderProps<T = any> {
|
|
3
|
+
id: string;
|
|
4
|
+
from: {
|
|
5
|
+
node: string;
|
|
6
|
+
port: string;
|
|
7
|
+
};
|
|
8
|
+
to: {
|
|
9
|
+
node: string;
|
|
10
|
+
port: string;
|
|
11
|
+
};
|
|
12
|
+
data?: T;
|
|
13
|
+
onStateChange?: (state: GraphLinkRuntimeState) => void;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Provider que consulta o NodeRegistry centralizado para obter
|
|
18
|
+
* os elementos DOM e estados dos nós/portas conectados ao link.
|
|
19
|
+
* Expõe essas informações via LinkInfoContext.
|
|
20
|
+
*/
|
|
21
|
+
declare const LinkInfoProvider: import("react").MemoExoticComponent<({ id, from, to, data, onStateChange, children, }: LinkInfoProviderProps) => import("react/jsx-runtime").JSX.Element>;
|
|
22
|
+
export default LinkInfoProvider;
|
|
23
|
+
//# sourceMappingURL=link-info-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-info-provider.d.ts","sourceRoot":"","sources":["../../src/providers/link-info-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAwB,MAAM,UAAU,CAAC;AAGvE,UAAU,qBAAqB,CAAC,CAAC,GAAG,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACvD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED;;;;GAIG;AACH,QAAA,MAAM,gBAAgB,yFAOnB,qBAAqB,6CAyBtB,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { LinkInfoContext } from "../context/link-info-context";
|
|
4
|
+
import useNodeRegistry from "../hooks/node-registry";
|
|
5
|
+
/**
|
|
6
|
+
* Provider que consulta o NodeRegistry centralizado para obter
|
|
7
|
+
* os elementos DOM e estados dos nós/portas conectados ao link.
|
|
8
|
+
* Expõe essas informações via LinkInfoContext.
|
|
9
|
+
*/
|
|
10
|
+
const LinkInfoProvider = memo(function LinkInfoProvider({ id, from, to, data, onStateChange, children, }) {
|
|
11
|
+
const registry = useNodeRegistry();
|
|
12
|
+
// Valor do contexto com getters para evitar re-renders ao mover nós.
|
|
13
|
+
// Os getters consultam o registry que usa refs internas,
|
|
14
|
+
// garantindo acesso ao elemento DOM mais recente sem mudar a identidade do contexto.
|
|
15
|
+
const value = useMemo(() => ({
|
|
16
|
+
id,
|
|
17
|
+
from,
|
|
18
|
+
to,
|
|
19
|
+
data,
|
|
20
|
+
get fromNode() { return registry.getNodeElement(from.node); },
|
|
21
|
+
get fromPort() { return registry.getPortElement(from.node, from.port); },
|
|
22
|
+
get toNode() { return registry.getNodeElement(to.node); },
|
|
23
|
+
get toPort() { return registry.getPortElement(to.node, to.port); },
|
|
24
|
+
get fromNodeState() { return registry.getNodeState(from.node); },
|
|
25
|
+
get toNodeState() { return registry.getNodeState(to.node); },
|
|
26
|
+
onStateChange,
|
|
27
|
+
}), [id, from, to, data, onStateChange, registry]);
|
|
28
|
+
return (_jsx(LinkInfoContext.Provider, { value: value, children: children }));
|
|
29
|
+
});
|
|
30
|
+
export default LinkInfoProvider;
|
|
31
|
+
//# sourceMappingURL=link-info-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-info-provider.js","sourceRoot":"","sources":["../../src/providers/link-info-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,eAAe,MAAM,wBAAwB,CAAC;AAWrD;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB,CAAC,EACpD,EAAE,EACF,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,aAAa,EACb,QAAQ,GACY;IACpB,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IAEnC,qEAAqE;IACrE,yDAAyD;IACzD,qFAAqF;IACrF,MAAM,KAAK,GAAG,OAAO,CAAuB,GAAG,EAAE,CAAC,CAAC;QAC/C,EAAE;QACF,IAAI;QACJ,EAAE;QACF,IAAI;QACJ,IAAI,QAAQ,KAAK,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,QAAQ,KAAK,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,MAAM,KAAK,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,aAAa,KAAK,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,WAAW,KAAK,OAAO,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,aAAa;KAChB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnD,OAAO,CACH,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACjC,QAAQ,GACc,CAC9B,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { NodeEventProviderProps } from "../types";
|
|
2
|
+
export declare const NodeEventProvider: import("react").MemoExoticComponent<({ children, emitter, nodeId }: NodeEventProviderProps) => import("react/jsx-runtime").JSX.Element>;
|
|
3
|
+
//# sourceMappingURL=node-event-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-event-context.d.ts","sourceRoot":"","sources":["../../src/providers/node-event-context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAQR,sBAAsB,EAEzB,MAAM,UAAU,CAAC;AA+FlB,eAAO,MAAM,iBAAiB,sEAzCkE,sBAAsB,6CAyC7D,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useCallback, useRef, useEffect } from "react";
|
|
3
|
+
import { createReadonlyProxy } from "../utils/proxy";
|
|
4
|
+
import { NodeEventContext } from "../context/node-event-context";
|
|
5
|
+
function tryToDispatch(fn, ...args) {
|
|
6
|
+
try {
|
|
7
|
+
return fn(...args);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
console.error("Error executing event handler:", error);
|
|
11
|
+
}
|
|
12
|
+
;
|
|
13
|
+
}
|
|
14
|
+
const EVENT_CLASS_MAP = {
|
|
15
|
+
dataChange: class DataChangeEventImpl {
|
|
16
|
+
type = "dataChange";
|
|
17
|
+
nodeId;
|
|
18
|
+
data;
|
|
19
|
+
constructor(nodeId, payload) {
|
|
20
|
+
this.nodeId = nodeId;
|
|
21
|
+
this.data = createReadonlyProxy(payload.data);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
move: class GraphMoveEventImpl {
|
|
25
|
+
type = "move";
|
|
26
|
+
nodeId;
|
|
27
|
+
position;
|
|
28
|
+
constructor(nodeId, payload) {
|
|
29
|
+
this.nodeId = nodeId;
|
|
30
|
+
this.position = createReadonlyProxy(payload.position);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
connectionChange: class ConnectionChangeEventImpl {
|
|
34
|
+
type = "connectionChange";
|
|
35
|
+
connection;
|
|
36
|
+
nodeId;
|
|
37
|
+
action;
|
|
38
|
+
constructor(nodeId, payload) {
|
|
39
|
+
this.nodeId = nodeId;
|
|
40
|
+
this.connection = createReadonlyProxy(payload.connection);
|
|
41
|
+
this.action = payload.action;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
select: class GraphNodeSelectionChangeEventImpl {
|
|
45
|
+
type = "select";
|
|
46
|
+
nodeId;
|
|
47
|
+
selected;
|
|
48
|
+
constructor(nodeId, payload) {
|
|
49
|
+
this.nodeId = nodeId;
|
|
50
|
+
this.selected = payload.selected;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
const MemizedNodeEventProvider = memo(function NodeEventProvider({ children, emitter, nodeId }) {
|
|
55
|
+
const eventListeners = useRef({});
|
|
56
|
+
const addEventListener = useCallback((type, handler) => {
|
|
57
|
+
if (!eventListeners.current[type]) {
|
|
58
|
+
eventListeners.current[type] = new Set();
|
|
59
|
+
}
|
|
60
|
+
eventListeners.current[type].add(handler);
|
|
61
|
+
}, []);
|
|
62
|
+
const removeEventListener = useCallback((type, handler) => {
|
|
63
|
+
eventListeners.current[type]?.delete(handler);
|
|
64
|
+
}, []);
|
|
65
|
+
const emitEvent = useCallback((type, payload) => {
|
|
66
|
+
const cls = EVENT_CLASS_MAP[type];
|
|
67
|
+
if (!cls) {
|
|
68
|
+
console.warn(`No event class found for event type: ${type}`);
|
|
69
|
+
}
|
|
70
|
+
const event = new cls(nodeId, payload);
|
|
71
|
+
eventListeners.current[type]?.forEach((handler) => {
|
|
72
|
+
tryToDispatch(handler, event);
|
|
73
|
+
});
|
|
74
|
+
}, [nodeId]);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
emitter(emitEvent);
|
|
77
|
+
}, [emitEvent, emitter]);
|
|
78
|
+
return (_jsx(NodeEventContext.Provider, { value: { addEventListener, removeEventListener }, children: children }));
|
|
79
|
+
});
|
|
80
|
+
export const NodeEventProvider = MemizedNodeEventProvider;
|
|
81
|
+
//# sourceMappingURL=node-event-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-event-context.js","sourceRoot":"","sources":["../../src/providers/node-event-context.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface NodeRegistryProviderProps {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Provider que mantém o registro centralizado de elementos DOM
|
|
6
|
+
* e estados runtime de todos os nós/portas ativos no grafo.
|
|
7
|
+
* Substituí o uso de querySelector para localizar elementos.
|
|
8
|
+
*/
|
|
9
|
+
export default function NodeRegistryProvider({ children }: NodeRegistryProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=node-registry-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-registry-provider.d.ts","sourceRoot":"","sources":["../../src/providers/node-registry-provider.tsx"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,yBAAyB,2CA0DnF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useRef, useMemo } from "react";
|
|
3
|
+
import { NodeRegistryContext } from "../context/node-registry-context";
|
|
4
|
+
/**
|
|
5
|
+
* Provider que mantém o registro centralizado de elementos DOM
|
|
6
|
+
* e estados runtime de todos os nós/portas ativos no grafo.
|
|
7
|
+
* Substituí o uso de querySelector para localizar elementos.
|
|
8
|
+
*/
|
|
9
|
+
export default function NodeRegistryProvider({ children }) {
|
|
10
|
+
const nodeElements = useRef(new Map());
|
|
11
|
+
const portElements = useRef(new Map());
|
|
12
|
+
const nodeStates = useRef(new Map());
|
|
13
|
+
const registerNodeElement = useCallback((nodeId, element) => {
|
|
14
|
+
nodeElements.current.set(nodeId, element);
|
|
15
|
+
}, []);
|
|
16
|
+
const unregisterNodeElement = useCallback((nodeId) => {
|
|
17
|
+
nodeElements.current.delete(nodeId);
|
|
18
|
+
}, []);
|
|
19
|
+
const registerPortElement = useCallback((nodeId, portId, element) => {
|
|
20
|
+
portElements.current.set(`${nodeId}:${portId}`, element);
|
|
21
|
+
}, []);
|
|
22
|
+
const unregisterPortElement = useCallback((nodeId, portId) => {
|
|
23
|
+
portElements.current.delete(`${nodeId}:${portId}`);
|
|
24
|
+
}, []);
|
|
25
|
+
const getNodeElement = useCallback((nodeId) => {
|
|
26
|
+
return nodeElements.current.get(nodeId) ?? null;
|
|
27
|
+
}, []);
|
|
28
|
+
const getPortElement = useCallback((nodeId, portId) => {
|
|
29
|
+
return portElements.current.get(`${nodeId}:${portId}`) ?? null;
|
|
30
|
+
}, []);
|
|
31
|
+
const getNodeState = useCallback((nodeId) => {
|
|
32
|
+
return nodeStates.current.get(nodeId) ?? null;
|
|
33
|
+
}, []);
|
|
34
|
+
const updateNodeState = useCallback((state) => {
|
|
35
|
+
nodeStates.current.set(state.id, state);
|
|
36
|
+
}, []);
|
|
37
|
+
const value = useMemo(() => ({
|
|
38
|
+
getNodeElement,
|
|
39
|
+
getPortElement,
|
|
40
|
+
getNodeState,
|
|
41
|
+
registerNodeElement,
|
|
42
|
+
unregisterNodeElement,
|
|
43
|
+
registerPortElement,
|
|
44
|
+
unregisterPortElement,
|
|
45
|
+
updateNodeState,
|
|
46
|
+
}), [
|
|
47
|
+
getNodeElement, getPortElement, getNodeState,
|
|
48
|
+
registerNodeElement, unregisterNodeElement,
|
|
49
|
+
registerPortElement, unregisterPortElement,
|
|
50
|
+
updateNodeState,
|
|
51
|
+
]);
|
|
52
|
+
return (_jsx(NodeRegistryContext.Provider, { value: value, children: children }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=node-registry-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-registry-provider.js","sourceRoot":"","sources":["../../src/providers/node-registry-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAOvE;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAA6B;IAChF,MAAM,YAAY,GAAG,MAAM,CAA2B,IAAI,GAAG,EAAE,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,CAA2B,IAAI,GAAG,EAAE,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,MAAM,CAAqC,IAAI,GAAG,EAAE,CAAC,CAAC;IAEzE,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,OAAoB,EAAE,EAAE;QAC7E,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QACzD,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,MAAc,EAAE,OAAoB,EAAE,EAAE;QAC7F,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;QACzE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QAClD,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;IACpD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;QAClE,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC;IACnE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QAChD,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,KAA4B,EAAE,EAAE;QACjE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,OAAO,CAA2B,GAAG,EAAE,CAAC,CAAC;QACnD,cAAc;QACd,cAAc;QACd,YAAY;QACZ,mBAAmB;QACnB,qBAAqB;QACrB,mBAAmB;QACnB,qBAAqB;QACrB,eAAe;KAClB,CAAC,EAAE;QACA,cAAc,EAAE,cAAc,EAAE,YAAY;QAC5C,mBAAmB,EAAE,qBAAqB;QAC1C,mBAAmB,EAAE,qBAAqB;QAC1C,eAAe;KAClB,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrC,QAAQ,GACkB,CAClC,CAAC;AACN,CAAC"}
|