react-html-graph 1.0.0
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/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/calculations/index.d.ts +32 -0
- package/dist/calculations/index.d.ts.map +1 -0
- package/dist/calculations/index.js +247 -0
- package/dist/calculations/index.js.map +1 -0
- package/dist/calculations/types.d.ts +43 -0
- package/dist/calculations/types.d.ts.map +1 -0
- package/dist/calculations/types.js +2 -0
- package/dist/calculations/types.js.map +1 -0
- package/dist/context/connection-context.d.ts +3 -0
- package/dist/context/connection-context.d.ts.map +1 -0
- package/dist/context/connection-context.js +13 -0
- package/dist/context/connection-context.js.map +1 -0
- package/dist/context/error-context.d.ts +3 -0
- package/dist/context/error-context.d.ts.map +1 -0
- package/dist/context/error-context.js +5 -0
- package/dist/context/error-context.js.map +1 -0
- package/dist/context/graph-context.d.ts +3 -0
- package/dist/context/graph-context.d.ts.map +1 -0
- package/dist/context/graph-context.js +8 -0
- package/dist/context/graph-context.js.map +1 -0
- package/dist/context/graph-root-context.d.ts +7 -0
- package/dist/context/graph-root-context.d.ts.map +1 -0
- package/dist/context/graph-root-context.js +8 -0
- package/dist/context/graph-root-context.js.map +1 -0
- package/dist/example/App.css +39 -0
- package/dist/example/App.d.ts +3 -0
- package/dist/example/App.d.ts.map +1 -0
- package/dist/example/App.js +7 -0
- package/dist/example/App.js.map +1 -0
- package/dist/example/graph-teste.d.ts +2 -0
- package/dist/example/graph-teste.d.ts.map +1 -0
- package/dist/example/graph-teste.js +205 -0
- package/dist/example/graph-teste.js.map +1 -0
- package/dist/example/index.css +48 -0
- package/dist/example/reportWebVitals.d.ts +4 -0
- package/dist/example/reportWebVitals.d.ts.map +1 -0
- package/dist/example/reportWebVitals.js +13 -0
- package/dist/example/reportWebVitals.js.map +1 -0
- package/dist/graph/index.d.ts +11 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +161 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/viewbox.d.ts +9 -0
- package/dist/graph/viewbox.d.ts.map +1 -0
- package/dist/graph/viewbox.js +30 -0
- package/dist/graph/viewbox.js.map +1 -0
- package/dist/hooks/api.d.ts +9 -0
- package/dist/hooks/api.d.ts.map +1 -0
- package/dist/hooks/api.js +13 -0
- package/dist/hooks/api.js.map +1 -0
- package/dist/hooks/connection.d.ts +46 -0
- package/dist/hooks/connection.d.ts.map +1 -0
- package/dist/hooks/connection.js +81 -0
- package/dist/hooks/connection.js.map +1 -0
- package/dist/hooks/error.d.ts +10 -0
- package/dist/hooks/error.d.ts.map +1 -0
- package/dist/hooks/error.js +16 -0
- package/dist/hooks/error.js.map +1 -0
- package/dist/hooks/get-zoom.d.ts +2 -0
- package/dist/hooks/get-zoom.d.ts.map +1 -0
- package/dist/hooks/get-zoom.js +14 -0
- package/dist/hooks/get-zoom.js.map +1 -0
- package/dist/hooks/graph-mode.d.ts +8 -0
- package/dist/hooks/graph-mode.d.ts.map +1 -0
- package/dist/hooks/graph-mode.js +13 -0
- package/dist/hooks/graph-mode.js.map +1 -0
- package/dist/hooks/graph-root.d.ts +9 -0
- package/dist/hooks/graph-root.d.ts.map +1 -0
- package/dist/hooks/graph-root.js +13 -0
- package/dist/hooks/graph-root.js.map +1 -0
- package/dist/hooks/graph.d.ts +10 -0
- package/dist/hooks/graph.d.ts.map +1 -0
- package/dist/hooks/graph.js +12 -0
- package/dist/hooks/graph.js.map +1 -0
- package/dist/hooks/viewbox.d.ts +7 -0
- package/dist/hooks/viewbox.d.ts.map +1 -0
- package/dist/hooks/viewbox.js +12 -0
- package/dist/hooks/viewbox.js.map +1 -0
- package/dist/link/base.d.ts +34 -0
- package/dist/link/base.d.ts.map +1 -0
- package/dist/link/base.js +202 -0
- package/dist/link/base.js.map +1 -0
- package/dist/link/temp-link.d.ts +9 -0
- package/dist/link/temp-link.d.ts.map +1 -0
- package/dist/link/temp-link.js +60 -0
- package/dist/link/temp-link.js.map +1 -0
- package/dist/module.d.ts +18 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +18 -0
- package/dist/module.js.map +1 -0
- package/dist/nodes/base.d.ts +11 -0
- package/dist/nodes/base.d.ts.map +1 -0
- package/dist/nodes/base.js +117 -0
- package/dist/nodes/base.js.map +1 -0
- package/dist/ports/base.d.ts +11 -0
- package/dist/ports/base.d.ts.map +1 -0
- package/dist/ports/base.js +115 -0
- package/dist/ports/base.js.map +1 -0
- package/dist/providers/connection-provider.d.ts +10 -0
- package/dist/providers/connection-provider.d.ts.map +1 -0
- package/dist/providers/connection-provider.js +120 -0
- package/dist/providers/connection-provider.js.map +1 -0
- package/dist/style.css +78 -0
- package/dist/types.d.ts +349 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import Graph from "../graph";
|
|
4
|
+
const TEST_LINKS = [
|
|
5
|
+
{
|
|
6
|
+
id: "link-a",
|
|
7
|
+
from: {
|
|
8
|
+
node: "foo",
|
|
9
|
+
port: "output"
|
|
10
|
+
},
|
|
11
|
+
to: {
|
|
12
|
+
node: "bar",
|
|
13
|
+
port: "output"
|
|
14
|
+
},
|
|
15
|
+
labels: [
|
|
16
|
+
{ text: "Link A", position: -0.5, color: "#fff", fontSize: 14, textAnchor: "forward", offset: 10 },
|
|
17
|
+
{ text: "Link B", position: 0.5, color: "#fff", fontSize: 14, textAnchor: "reverse", offset: 10 },
|
|
18
|
+
],
|
|
19
|
+
width: 1,
|
|
20
|
+
forwardColor: "#c7c700",
|
|
21
|
+
reverseColor: "#c71d07",
|
|
22
|
+
forwardDuration: 3,
|
|
23
|
+
reverseDuration: 0,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "link-b",
|
|
27
|
+
from: {
|
|
28
|
+
node: "tar",
|
|
29
|
+
port: "input"
|
|
30
|
+
},
|
|
31
|
+
to: {
|
|
32
|
+
node: "bar",
|
|
33
|
+
port: "input"
|
|
34
|
+
},
|
|
35
|
+
width: 2,
|
|
36
|
+
labels: [
|
|
37
|
+
{ text: "Link A", position: -0.5, color: "#fff", fontSize: 14, textAnchor: "forward", offset: 10 },
|
|
38
|
+
{ text: "Link B", position: 0.5, color: "#fff", fontSize: 14, textAnchor: "reverse", offset: 10 },
|
|
39
|
+
],
|
|
40
|
+
forwardColor: "#c71d07",
|
|
41
|
+
reverseColor: "#1dc707",
|
|
42
|
+
forwardDuration: 0,
|
|
43
|
+
reverseDuration: 1,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "link-c",
|
|
47
|
+
from: {
|
|
48
|
+
node: "foo",
|
|
49
|
+
port: "input"
|
|
50
|
+
},
|
|
51
|
+
to: {
|
|
52
|
+
node: "tar",
|
|
53
|
+
port: "output"
|
|
54
|
+
},
|
|
55
|
+
width: 3,
|
|
56
|
+
labels: [
|
|
57
|
+
{ text: "Link A", position: -0.5, color: "#fff", fontSize: 14, textAnchor: "forward", offset: 10 },
|
|
58
|
+
{ text: "Link B", position: 0.5, color: "#fff", fontSize: 14, textAnchor: "reverse", offset: 10 },
|
|
59
|
+
],
|
|
60
|
+
forwardColor: "#c71d07",
|
|
61
|
+
reverseColor: "#1dc707",
|
|
62
|
+
forwardDuration: 0,
|
|
63
|
+
reverseDuration: 1,
|
|
64
|
+
}
|
|
65
|
+
];
|
|
66
|
+
const TEST_OBJECTS = [
|
|
67
|
+
{
|
|
68
|
+
id: "foo",
|
|
69
|
+
position: { x: 300, y: 100, z: 0 },
|
|
70
|
+
ports: [
|
|
71
|
+
{
|
|
72
|
+
id: "input",
|
|
73
|
+
type: "data",
|
|
74
|
+
direction: "input",
|
|
75
|
+
location: "left",
|
|
76
|
+
children: () => _jsx("div", { className: "node-port" }),
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: "output",
|
|
80
|
+
type: "data",
|
|
81
|
+
direction: "output",
|
|
82
|
+
location: "right",
|
|
83
|
+
onDragEnd: async (api, event) => {
|
|
84
|
+
if (event.targetNodeId && event.targetPortName) {
|
|
85
|
+
api.connect({
|
|
86
|
+
connectionType: event.connectionType,
|
|
87
|
+
from: { nodeId: event.sourceNodeId, portName: event.sourcePortName },
|
|
88
|
+
to: { nodeId: event.targetNodeId, portName: event.targetPortName },
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
children: () => _jsx("div", { className: "node-port" }),
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
template: ({ id, ports }) => (_jsxs("div", { style: { background: "red", display: "flex", alignItems: "center" }, children: [ports.left, _jsx("span", { children: "Foo" }), ports.right] }))
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: "bar",
|
|
99
|
+
position: { x: 200, y: 300, z: 0 },
|
|
100
|
+
ports: [
|
|
101
|
+
{
|
|
102
|
+
id: "input",
|
|
103
|
+
type: "data",
|
|
104
|
+
direction: "input",
|
|
105
|
+
location: "left",
|
|
106
|
+
children: () => _jsx("div", { className: "node-port" }),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: "output",
|
|
110
|
+
type: "data",
|
|
111
|
+
direction: "output",
|
|
112
|
+
location: "right",
|
|
113
|
+
onDragEnd: async (api, event) => {
|
|
114
|
+
if (event.targetNodeId && event.targetPortName) {
|
|
115
|
+
api.connect({
|
|
116
|
+
connectionType: event.connectionType,
|
|
117
|
+
from: { nodeId: event.sourceNodeId, portName: event.sourcePortName },
|
|
118
|
+
to: { nodeId: event.targetNodeId, portName: event.targetPortName },
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}, children: () => _jsx("div", { className: "node-port" }),
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
template: ({ id, ports }) => (_jsxs("div", { style: { background: "blue", display: "flex", alignItems: "center" }, children: [ports.left, _jsx("span", { children: "Bar" }), ports.right] }))
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
id: "tar",
|
|
128
|
+
position: { x: 100, y: 100, z: 0 },
|
|
129
|
+
ports: [
|
|
130
|
+
{
|
|
131
|
+
id: "input",
|
|
132
|
+
type: "data",
|
|
133
|
+
direction: "input",
|
|
134
|
+
location: "left",
|
|
135
|
+
children: () => _jsx("div", { className: "node-port" }),
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: "output",
|
|
139
|
+
type: "data",
|
|
140
|
+
direction: "output",
|
|
141
|
+
location: "right",
|
|
142
|
+
onDragEnd: async (api, event) => {
|
|
143
|
+
if (event.targetNodeId && event.targetPortName) {
|
|
144
|
+
api.connect({
|
|
145
|
+
connectionType: event.connectionType,
|
|
146
|
+
from: { nodeId: event.sourceNodeId, portName: event.sourcePortName },
|
|
147
|
+
to: { nodeId: event.targetNodeId, portName: event.targetPortName },
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}, children: () => _jsx("div", { className: "node-port" }),
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
template: ({ id, ports }) => (_jsxs("div", { style: { background: "blue", display: "flex", alignItems: "center" }, children: [ports.left, _jsx("span", { children: "Tar" }), ports.right] }))
|
|
154
|
+
}
|
|
155
|
+
];
|
|
156
|
+
export default function GraphTest() {
|
|
157
|
+
const apiRef = useRef(null);
|
|
158
|
+
const fpsRef = useRef(null);
|
|
159
|
+
const fpsCountRef = useRef(0);
|
|
160
|
+
const lastTimeRef = useRef(0);
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
const timeout = window.setTimeout(() => {
|
|
163
|
+
const api = apiRef.current;
|
|
164
|
+
if (api) {
|
|
165
|
+
TEST_OBJECTS.forEach(obj => {
|
|
166
|
+
api.addNode(obj);
|
|
167
|
+
});
|
|
168
|
+
TEST_LINKS.forEach(obj => {
|
|
169
|
+
api.addLink(obj);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}, 1000);
|
|
173
|
+
return () => {
|
|
174
|
+
window.clearTimeout(timeout);
|
|
175
|
+
};
|
|
176
|
+
}, []);
|
|
177
|
+
useEffect(() => {
|
|
178
|
+
let running = true;
|
|
179
|
+
function calculateFPS(td) {
|
|
180
|
+
if (!running)
|
|
181
|
+
return;
|
|
182
|
+
if (!lastTimeRef.current)
|
|
183
|
+
lastTimeRef.current = performance.now();
|
|
184
|
+
fpsCountRef.current += 1;
|
|
185
|
+
requestAnimationFrame(calculateFPS);
|
|
186
|
+
}
|
|
187
|
+
requestAnimationFrame(calculateFPS);
|
|
188
|
+
let interval = window.setInterval(() => {
|
|
189
|
+
const now = performance.now();
|
|
190
|
+
const delta = now - lastTimeRef.current;
|
|
191
|
+
const fps = ((fpsCountRef.current / delta) * 1000);
|
|
192
|
+
if (fpsRef.current) {
|
|
193
|
+
fpsRef.current.textContent = `FPS: ${fps.toFixed(0)}`;
|
|
194
|
+
}
|
|
195
|
+
fpsCountRef.current = 0;
|
|
196
|
+
lastTimeRef.current = now;
|
|
197
|
+
}, 500);
|
|
198
|
+
return () => {
|
|
199
|
+
running = false;
|
|
200
|
+
window.clearInterval(interval);
|
|
201
|
+
};
|
|
202
|
+
}, []);
|
|
203
|
+
return (_jsx(_Fragment, { children: _jsxs("div", { className: "graph-test-container", children: [_jsx("span", { ref: fpsRef }), _jsx("div", { className: "graph-test-graph", children: _jsx(Graph, { ref: apiRef, mode: "edit", onError: (err) => console.error("[GraphError]", err) }) })] }) }));
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=graph-teste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-teste.js","sourceRoot":"","sources":["../../src/example/graph-teste.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
body {
|
|
2
|
+
margin: 0;
|
|
3
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
4
|
+
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
5
|
+
sans-serif;
|
|
6
|
+
-webkit-font-smoothing: antialiased;
|
|
7
|
+
-moz-osx-font-smoothing: grayscale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
code {
|
|
11
|
+
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
|
12
|
+
monospace;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.graph-test-container {
|
|
16
|
+
width: 100vw;
|
|
17
|
+
height: 100vh;
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
|
|
21
|
+
.graph-test-graph {
|
|
22
|
+
flex: 1;
|
|
23
|
+
background: #000;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.node-port {
|
|
28
|
+
width: 10px;
|
|
29
|
+
height: 10px;
|
|
30
|
+
border-radius: 50%;
|
|
31
|
+
background: #888;
|
|
32
|
+
cursor: crosshair;
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
transition: background 0.15s ease, transform 0.15s ease;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.node-port:hover {
|
|
38
|
+
background: #fff;
|
|
39
|
+
transform: scale(1.4);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.port-input {
|
|
43
|
+
margin-right: 6px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.port-output {
|
|
47
|
+
margin-left: 6px;
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportWebVitals.d.ts","sourceRoot":"","sources":["../../src/example/reportWebVitals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,QAAA,MAAM,eAAe,GAAI,cAAc,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,SAUlE,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const reportWebVitals = (onPerfEntry) => {
|
|
2
|
+
if (onPerfEntry && onPerfEntry instanceof Function) {
|
|
3
|
+
import('web-vitals').then(({ onCLS, onINP, onFCP, onLCP, onTTFB }) => {
|
|
4
|
+
onCLS(onPerfEntry);
|
|
5
|
+
onINP(onPerfEntry);
|
|
6
|
+
onFCP(onPerfEntry);
|
|
7
|
+
onLCP(onPerfEntry);
|
|
8
|
+
onTTFB(onPerfEntry);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
export default reportWebVitals;
|
|
13
|
+
//# sourceMappingURL=reportWebVitals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportWebVitals.js","sourceRoot":"","sources":["../../src/example/reportWebVitals.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,WAA0C,EAAE,EAAE;IACrE,IAAI,WAAW,IAAI,WAAW,YAAY,QAAQ,EAAE,CAAC;QACnD,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YACnE,KAAK,CAAC,WAAW,CAAC,CAAC;YACnB,KAAK,CAAC,WAAW,CAAC,CAAC;YACnB,KAAK,CAAC,WAAW,CAAC,CAAC;YACnB,KAAK,CAAC,WAAW,CAAC,CAAC;YACnB,MAAM,CAAC,WAAW,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GraphProps } from "../types";
|
|
2
|
+
import "../style.css";
|
|
3
|
+
/**
|
|
4
|
+
* Componente Graph que orquestra o contexto do grafo, providers e o viewbox.
|
|
5
|
+
* Recebe chamadas imperativas via ref (GraphApi) expostas por GraphHandle.
|
|
6
|
+
*
|
|
7
|
+
* @param props Propriedades do componente Graph
|
|
8
|
+
* @returns JSX.Element
|
|
9
|
+
*/
|
|
10
|
+
export default function Graph({ ref, mode, onError }: GraphProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAW,UAAU,EAAwD,MAAM,UAAU,CAAC;AASrG,OAAO,cAAc,CAAC;AAStB;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,GAAG,EAAE,IAAa,EAAE,OAAO,EAAE,EAAE,UAAU,2CA0KxE"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState, } from "react";
|
|
3
|
+
import { GraphContext } from "../context/graph-context";
|
|
4
|
+
import { ErrorContext } from "../context/error-context";
|
|
5
|
+
import { ConnectionContext } from "../context/connection-context";
|
|
6
|
+
import { GraphRootContext } from "../context/graph-root-context";
|
|
7
|
+
import ConnectionProvider from "../providers/connection-provider";
|
|
8
|
+
import GraphObject from "../nodes/base";
|
|
9
|
+
import GraphLink from "../link/base";
|
|
10
|
+
import ViewBox from "./viewbox";
|
|
11
|
+
import "../style.css";
|
|
12
|
+
/**
|
|
13
|
+
* Componente Graph que orquestra o contexto do grafo, providers e o viewbox.
|
|
14
|
+
* Recebe chamadas imperativas via ref (GraphApi) expostas por GraphHandle.
|
|
15
|
+
*
|
|
16
|
+
* @param props Propriedades do componente Graph
|
|
17
|
+
* @returns JSX.Element
|
|
18
|
+
*/
|
|
19
|
+
export default function Graph({ ref, mode = "edit", onError }) {
|
|
20
|
+
const rootRef = useRef(null);
|
|
21
|
+
const graphApiRef = useRef(null);
|
|
22
|
+
const [nodeDefs, setNodeDefs] = useState([]);
|
|
23
|
+
const [linkDefs, setLinkDefs] = useState([]);
|
|
24
|
+
const [viewbox, setViewBox] = useState({
|
|
25
|
+
x: 0, y: 0, zoom: 1, width: 0, height: 0,
|
|
26
|
+
});
|
|
27
|
+
// Converte definicoes em React elements para GraphContext
|
|
28
|
+
const nodes = useMemo(() => nodeDefs.map(def => (_jsx(GraphObject, { id: def.id, ports: def.ports, data: def.data, initialPosition: def.position, children: def.template }, def.id))), [nodeDefs]);
|
|
29
|
+
const links = useMemo(() => linkDefs.map(def => (_jsx(GraphLink, { ...def }, def.id))), [linkDefs]);
|
|
30
|
+
const panRef = useRef({
|
|
31
|
+
panning: false,
|
|
32
|
+
panPointStart: { x: 0, y: 0 }
|
|
33
|
+
});
|
|
34
|
+
const handleError = useCallback((error) => {
|
|
35
|
+
onError?.(error);
|
|
36
|
+
}, [onError]);
|
|
37
|
+
const handleMouseDown = useCallback((ev) => {
|
|
38
|
+
if (ev.button !== 1 || !rootRef.current)
|
|
39
|
+
return;
|
|
40
|
+
panRef.current.panning = true;
|
|
41
|
+
rootRef.current.style.userSelect = 'none';
|
|
42
|
+
}, []);
|
|
43
|
+
const handleMouseUp = useCallback((e) => {
|
|
44
|
+
if (panRef.current.panning && rootRef.current && e.button === 1) {
|
|
45
|
+
panRef.current.panning = false;
|
|
46
|
+
rootRef.current.style.userSelect = "";
|
|
47
|
+
}
|
|
48
|
+
}, []);
|
|
49
|
+
const handleWheel = useCallback((e) => {
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
const root = rootRef.current ?? e.target;
|
|
52
|
+
if (!root)
|
|
53
|
+
return;
|
|
54
|
+
const rect = root.getBoundingClientRect();
|
|
55
|
+
const offsetX = e.clientX - rect.left;
|
|
56
|
+
const offsetY = e.clientY - rect.top;
|
|
57
|
+
const delta = -e.deltaY;
|
|
58
|
+
setViewBox(vb => {
|
|
59
|
+
const MIN_ZOOM = 0.1;
|
|
60
|
+
const MAX_ZOOM = 2;
|
|
61
|
+
const FACTOR = 1.2;
|
|
62
|
+
const newZoom = delta > 0 ? Math.min(MAX_ZOOM, vb.zoom * FACTOR) : Math.max(MIN_ZOOM, vb.zoom / FACTOR);
|
|
63
|
+
if (newZoom === vb.zoom)
|
|
64
|
+
return vb;
|
|
65
|
+
const worldX = offsetX / vb.zoom + vb.x;
|
|
66
|
+
const worldY = offsetY / vb.zoom + vb.y;
|
|
67
|
+
const x = worldX - offsetX / newZoom;
|
|
68
|
+
const y = worldY - offsetY / newZoom;
|
|
69
|
+
return { ...vb, x, y, zoom: newZoom };
|
|
70
|
+
});
|
|
71
|
+
}, []);
|
|
72
|
+
const handleMouseMove = useCallback((e) => {
|
|
73
|
+
if (!panRef.current.panning)
|
|
74
|
+
return;
|
|
75
|
+
setViewBox(vb => {
|
|
76
|
+
return {
|
|
77
|
+
...vb,
|
|
78
|
+
x: vb.x - e.movementX / vb.zoom,
|
|
79
|
+
y: vb.y - e.movementY / vb.zoom,
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}, []);
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
const el = rootRef.current;
|
|
85
|
+
if (!el)
|
|
86
|
+
return;
|
|
87
|
+
function checkDimension() {
|
|
88
|
+
setViewBox(vb => {
|
|
89
|
+
if (!el)
|
|
90
|
+
return vb;
|
|
91
|
+
return {
|
|
92
|
+
...vb,
|
|
93
|
+
width: el.clientWidth,
|
|
94
|
+
height: el.clientHeight,
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
el.addEventListener('wheel', handleWheel, { passive: false });
|
|
99
|
+
checkDimension();
|
|
100
|
+
const observer = new ResizeObserver(checkDimension);
|
|
101
|
+
observer.observe(el);
|
|
102
|
+
return () => {
|
|
103
|
+
el.removeEventListener('wheel', handleWheel);
|
|
104
|
+
observer.disconnect();
|
|
105
|
+
};
|
|
106
|
+
}, [handleWheel]);
|
|
107
|
+
// Valida IDs duplicados entre nós e links
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
const ids = new Map();
|
|
110
|
+
for (const def of nodeDefs) {
|
|
111
|
+
if (!ids.has(def.id))
|
|
112
|
+
ids.set(def.id, []);
|
|
113
|
+
ids.get(def.id).push("node");
|
|
114
|
+
}
|
|
115
|
+
for (const def of linkDefs) {
|
|
116
|
+
if (!ids.has(def.id))
|
|
117
|
+
ids.set(def.id, []);
|
|
118
|
+
ids.get(def.id).push("link");
|
|
119
|
+
}
|
|
120
|
+
for (const [id, types] of ids) {
|
|
121
|
+
if (types.length > 1) {
|
|
122
|
+
handleError({
|
|
123
|
+
code: "DUPLICATE_ID",
|
|
124
|
+
message: `Duplicate id "${id}" found across: ${types.join(", ")}`,
|
|
125
|
+
details: { id, types },
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}, [nodeDefs, linkDefs, handleError]);
|
|
130
|
+
return (_jsx(ErrorContext.Provider, { value: { reportError: handleError }, children: _jsx(GraphContext.Provider, { value: {
|
|
131
|
+
viewbox,
|
|
132
|
+
nodes,
|
|
133
|
+
links,
|
|
134
|
+
mode,
|
|
135
|
+
}, children: _jsx(GraphRootContext.Provider, { value: rootRef, children: _jsxs(ConnectionProvider, { graphApiRef: graphApiRef, children: [_jsx(GraphHandle, { ref: ref, graphApiRef: graphApiRef, setNodeDefs: setNodeDefs, setLinkDefs: setLinkDefs }), _jsx("graph-root", { ref: rootRef, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, onMouseMove: handleMouseMove, children: _jsx(ViewBox, {}) })] }) }) }) }));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Componente auxiliar que implementa a API imperativa do Graph (GraphApi)
|
|
139
|
+
* e a expõe através da ref fornecida pelo componente pai.
|
|
140
|
+
*
|
|
141
|
+
* Esta função não renderiza nada (retorna null) e serve apenas para vincular
|
|
142
|
+
* handlers/estado ao objeto de API.
|
|
143
|
+
*/
|
|
144
|
+
function GraphHandle({ ref, graphApiRef, setNodeDefs, setLinkDefs }) {
|
|
145
|
+
const { connect, disconnect, connections } = useContext(ConnectionContext);
|
|
146
|
+
useImperativeHandle(ref, () => {
|
|
147
|
+
const api = {
|
|
148
|
+
addNode: (node) => setNodeDefs(prev => [...prev, node]),
|
|
149
|
+
removeNode: (id) => setNodeDefs(prev => prev.filter(n => n.id !== id)),
|
|
150
|
+
addLink: (link) => setLinkDefs(prev => [...prev, link]),
|
|
151
|
+
removeLink: (id) => setLinkDefs(prev => prev.filter(l => l.id !== id)),
|
|
152
|
+
connect,
|
|
153
|
+
disconnect,
|
|
154
|
+
getConnections: () => connections,
|
|
155
|
+
};
|
|
156
|
+
graphApiRef.current = api;
|
|
157
|
+
return api;
|
|
158
|
+
}, [connect, disconnect, connections, setNodeDefs, setLinkDefs, graphApiRef]);
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Componente ViewBox responsável por aplicar a transformação de escala e
|
|
3
|
+
* translação do graph com base no estado do viewbox. Renderiza nós, links
|
|
4
|
+
* e o componente temporário de link quando em modo de edição.
|
|
5
|
+
*
|
|
6
|
+
* @returns JSX.Element
|
|
7
|
+
*/
|
|
8
|
+
export default function ViewBox(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=viewbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewbox.d.ts","sourceRoot":"","sources":["../../src/graph/viewbox.tsx"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,4CAuB9B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect } from "react";
|
|
3
|
+
import useGraphItems from "../hooks/graph";
|
|
4
|
+
import useViewbox from "../hooks/viewbox";
|
|
5
|
+
import TempLink from "../link/temp-link";
|
|
6
|
+
import useGraphMode from "../hooks/graph-mode";
|
|
7
|
+
/**
|
|
8
|
+
* Componente ViewBox responsável por aplicar a transformação de escala e
|
|
9
|
+
* translação do graph com base no estado do viewbox. Renderiza nós, links
|
|
10
|
+
* e o componente temporário de link quando em modo de edição.
|
|
11
|
+
*
|
|
12
|
+
* @returns JSX.Element
|
|
13
|
+
*/
|
|
14
|
+
export default function ViewBox() {
|
|
15
|
+
const ref = useRef(null);
|
|
16
|
+
const viewbox = useViewbox();
|
|
17
|
+
const mode = useGraphMode();
|
|
18
|
+
const { nodes, links } = useGraphItems();
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!ref.current)
|
|
21
|
+
return;
|
|
22
|
+
ref.current.style.transform = [
|
|
23
|
+
`scale(${viewbox.zoom})`,
|
|
24
|
+
`translate(${-viewbox.x}px, ${-viewbox.y}px)`,
|
|
25
|
+
].join(' ');
|
|
26
|
+
ref.current.style.transformOrigin = '0 0';
|
|
27
|
+
}, [viewbox]);
|
|
28
|
+
return (_jsxs("graph-viewbox", { ref: ref, children: [links, nodes, mode === 'edit' && _jsx(TempLink, {})] }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=viewbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewbox.js","sourceRoot":"","sources":["../../src/graph/viewbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAG/C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG;YAC1B,SAAS,OAAO,CAAC,IAAI,GAAG;YACxB,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK;SAChD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9C,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACH,yBAAe,GAAG,EAAE,GAAG,aAClB,KAAK,EACL,KAAK,EACL,IAAI,KAAK,MAAM,IAAI,KAAC,QAAQ,KAAG,IACpB,CACnB,CAAA;AAEL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ConnectionApi } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Hook que expõe a API de conexões do grafo (connect/disconnect/getConnections)
|
|
4
|
+
* a partir do ConnectionContext.
|
|
5
|
+
*
|
|
6
|
+
* @returns ConnectionApi
|
|
7
|
+
*/
|
|
8
|
+
export default function useConnectionApi(): ConnectionApi;
|
|
9
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/hooks/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,IAAI,aAAa,CAGxD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { ConnectionContext } from "../context/connection-context";
|
|
3
|
+
/**
|
|
4
|
+
* Hook que expõe a API de conexões do grafo (connect/disconnect/getConnections)
|
|
5
|
+
* a partir do ConnectionContext.
|
|
6
|
+
*
|
|
7
|
+
* @returns ConnectionApi
|
|
8
|
+
*/
|
|
9
|
+
export default function useConnectionApi() {
|
|
10
|
+
const { connect, disconnect, connections } = useContext(ConnectionContext);
|
|
11
|
+
return { connect, disconnect, getConnections: () => connections };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/hooks/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACpC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ConnectionType } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Hook que expõe o estado de conexões e operações básicas (connect/disconnect)
|
|
4
|
+
* a partir do ConnectionContext.
|
|
5
|
+
*
|
|
6
|
+
* @returns {{ connections: PortConnection[], connect: Function, disconnect: Function }}
|
|
7
|
+
*/
|
|
8
|
+
export declare function useConnections(): {
|
|
9
|
+
connections: import("../types").PortConnection[];
|
|
10
|
+
connect: (connection: import("../types").PortConnection) => void;
|
|
11
|
+
disconnect: (connection: import("../types").PortConnection) => void;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Hook que fornece handlers de drag para uma porta específica. Inicia o
|
|
15
|
+
* processo de arraste quando o usuário pressiona a porta (somente em modo
|
|
16
|
+
* de edição).
|
|
17
|
+
*
|
|
18
|
+
* @param nodeId Id do nó que contém a porta
|
|
19
|
+
* @param portName Nome da porta
|
|
20
|
+
* @param connectionType Tipo de conexão suportada
|
|
21
|
+
* @returns dragHandlers, isDragging, canDrag
|
|
22
|
+
*/
|
|
23
|
+
export declare function usePortDrag(nodeId: string, portName: string, connectionType: ConnectionType): {
|
|
24
|
+
dragHandlers: {
|
|
25
|
+
onMouseDown: (e: React.MouseEvent) => void;
|
|
26
|
+
};
|
|
27
|
+
isDragging: boolean;
|
|
28
|
+
canDrag: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Hook que fornece handlers de drop para uma porta específica. Finaliza o
|
|
32
|
+
* arraste e chama endDrag quando o usuário solta sobre a porta (somente em
|
|
33
|
+
* modo de edição).
|
|
34
|
+
*
|
|
35
|
+
* @param nodeId Id do nó que contém a porta
|
|
36
|
+
* @param portName Nome da porta
|
|
37
|
+
* @param connectionType Tipo de conexão suportada
|
|
38
|
+
* @returns dropHandlers, canDrop
|
|
39
|
+
*/
|
|
40
|
+
export declare function usePortDrop(nodeId: string, portName: string, connectionType: ConnectionType): {
|
|
41
|
+
dropHandlers: {
|
|
42
|
+
onMouseUp: (e: React.MouseEvent) => void;
|
|
43
|
+
};
|
|
44
|
+
canDrop: boolean;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/hooks/connection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;;;;GAKG;AACH,wBAAgB,cAAc;;;;EAG7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;;yBAKhF,KAAK,CAAC,UAAU;;;;EAmB3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;;uBAWhF,KAAK,CAAC,UAAU;;;EAuB3B"}
|