@coral-viz/viz 0.2.3 → 0.2.5
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/README.md +25 -4
- package/dist/compatibility/CompatibilityEdge.d.ts +16 -11
- package/dist/compatibility/CompatibilityEdge.d.ts.map +1 -1
- package/dist/compatibility/CompatibilityEdge.js +144 -28
- package/dist/compatibility/CompatibilityEdge.js.map +1 -1
- package/dist/components/DiagramFontFaces.d.ts +8 -0
- package/dist/components/DiagramFontFaces.d.ts.map +1 -0
- package/dist/components/DiagramFontFaces.js +18 -0
- package/dist/components/DiagramFontFaces.js.map +1 -0
- package/dist/components/SymbolNode.d.ts.map +1 -1
- package/dist/components/SymbolNode.js +59 -11
- package/dist/components/SymbolNode.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/editor/CoralEditor.js +1 -1
- package/dist/editor/CoralEditor.js.map +1 -1
- package/dist/editor/converter.d.ts +1 -1
- package/dist/editor/converter.d.ts.map +1 -1
- package/dist/editor/converter.js +41 -21
- package/dist/editor/converter.js.map +1 -1
- package/dist/editor/dimensions.d.ts +7 -0
- package/dist/editor/dimensions.d.ts.map +1 -0
- package/dist/editor/dimensions.js +26 -0
- package/dist/editor/dimensions.js.map +1 -0
- package/dist/file/deserialize.d.ts.map +1 -1
- package/dist/file/deserialize.js +9 -14
- package/dist/file/deserialize.js.map +1 -1
- package/dist/file/index.d.ts +2 -1
- package/dist/file/index.d.ts.map +1 -1
- package/dist/file/index.js +2 -1
- package/dist/file/index.js.map +1 -1
- package/dist/file/layoutProfile.d.ts +11 -0
- package/dist/file/layoutProfile.d.ts.map +1 -0
- package/dist/file/layoutProfile.js +89 -0
- package/dist/file/layoutProfile.js.map +1 -0
- package/dist/file/migrate.d.ts.map +1 -1
- package/dist/file/migrate.js +15 -3
- package/dist/file/migrate.js.map +1 -1
- package/dist/file/schema.d.ts +27 -0
- package/dist/file/schema.d.ts.map +1 -1
- package/dist/file/schema.js +70 -0
- package/dist/file/schema.js.map +1 -1
- package/dist/file/serialize.d.ts.map +1 -1
- package/dist/file/serialize.js +61 -16
- package/dist/file/serialize.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/layout/elk.d.ts +2 -51
- package/dist/layout/elk.d.ts.map +1 -1
- package/dist/layout/elk.js +107 -337
- package/dist/layout/elk.js.map +1 -1
- package/dist/layout/nodeSizing.d.ts +4 -61
- package/dist/layout/nodeSizing.d.ts.map +1 -1
- package/dist/layout/nodeSizing.js +4 -315
- package/dist/layout/nodeSizing.js.map +1 -1
- package/dist/layout/positionStability.d.ts +2 -1
- package/dist/layout/positionStability.d.ts.map +1 -1
- package/dist/layout/positionStability.js +40 -29
- package/dist/layout/positionStability.js.map +1 -1
- package/dist/layout/useAxisConstrain.d.ts.map +1 -1
- package/dist/layout/useAxisConstrain.js +20 -20
- package/dist/layout/useAxisConstrain.js.map +1 -1
- package/dist/layout/useDiagramState.d.ts +2 -1
- package/dist/layout/useDiagramState.d.ts.map +1 -1
- package/dist/layout/useLayoutHistory.d.ts +8 -0
- package/dist/layout/useLayoutHistory.d.ts.map +1 -1
- package/dist/layout/useLayoutHistory.js +78 -100
- package/dist/layout/useLayoutHistory.js.map +1 -1
- package/dist/properties/NodePropertiesPanel.d.ts +5 -1
- package/dist/properties/NodePropertiesPanel.d.ts.map +1 -1
- package/dist/properties/NodePropertiesPanel.js +95 -28
- package/dist/properties/NodePropertiesPanel.js.map +1 -1
- package/dist/settings/FontSettingsForm.d.ts.map +1 -1
- package/dist/settings/FontSettingsForm.js +9 -4
- package/dist/settings/FontSettingsForm.js.map +1 -1
- package/dist/settings/LayoutSettingsForm.d.ts +3 -1
- package/dist/settings/LayoutSettingsForm.d.ts.map +1 -1
- package/dist/settings/LayoutSettingsForm.js +43 -20
- package/dist/settings/LayoutSettingsForm.js.map +1 -1
- package/dist/settings/SettingsPanel.d.ts +10 -2
- package/dist/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/settings/SettingsPanel.js +45 -3
- package/dist/settings/SettingsPanel.js.map +1 -1
- package/dist/settings/useSettings.d.ts +8 -2
- package/dist/settings/useSettings.d.ts.map +1 -1
- package/dist/settings/useSettings.js +29 -7
- package/dist/settings/useSettings.js.map +1 -1
- package/dist/text-editor/SplitEditor.d.ts +5 -1
- package/dist/text-editor/SplitEditor.d.ts.map +1 -1
- package/dist/text-editor/SplitEditor.js +5 -12
- package/dist/text-editor/SplitEditor.js.map +1 -1
- package/dist/text-editor/TextEditor.d.ts +45 -33
- package/dist/text-editor/TextEditor.d.ts.map +1 -1
- package/dist/text-editor/TextEditor.js +178 -168
- package/dist/text-editor/TextEditor.js.map +1 -1
- package/dist/text-editor/hooks/useBidirectionalSync.d.ts +15 -0
- package/dist/text-editor/hooks/useBidirectionalSync.d.ts.map +1 -1
- package/dist/text-editor/hooks/useBidirectionalSync.js +9 -22
- package/dist/text-editor/hooks/useBidirectionalSync.js.map +1 -1
- package/dist/text-editor/index.d.ts +2 -2
- package/dist/text-editor/index.d.ts.map +1 -1
- package/dist/text-editor/index.js +1 -1
- package/dist/text-editor/index.js.map +1 -1
- package/dist/types.d.ts +24 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/viewMetadata.d.ts +4 -0
- package/dist/viewMetadata.d.ts.map +1 -0
- package/dist/viewMetadata.js +63 -0
- package/dist/viewMetadata.js.map +1 -0
- package/dist/waypoints/useWaypointManager.d.ts.map +1 -1
- package/dist/waypoints/useWaypointManager.js +60 -84
- package/dist/waypoints/useWaypointManager.js.map +1 -1
- package/package.json +10 -9
package/dist/layout/elk.js
CHANGED
|
@@ -1,378 +1,148 @@
|
|
|
1
|
-
|
|
2
|
-
* ELK Layout Integration
|
|
3
|
-
*
|
|
4
|
-
* Uses elkjs to compute automatic layouts for Graph-IR diagrams.
|
|
5
|
-
*/
|
|
6
|
-
import ELK from 'elkjs/lib/elk.bundled.js';
|
|
7
|
-
import { applyAdaptiveSizing } from './nodeSizing.js';
|
|
1
|
+
import { computeElkLayout, getElkLayoutEngine, resolveSpatialLayout, } from '@coral-viz/render/layout';
|
|
8
2
|
import { symbolRegistry } from '@coral-viz/render';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* Default node dimensions when not specified
|
|
12
|
-
*/
|
|
3
|
+
import { applyAdaptiveSizing } from './nodeSizing.js';
|
|
4
|
+
const elk = getElkLayoutEngine();
|
|
13
5
|
const DEFAULT_NODE_WIDTH = 150;
|
|
14
6
|
const DEFAULT_NODE_HEIGHT = 50;
|
|
15
7
|
const DEFAULT_GROUP_PADDING = 20;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const directionMap = {
|
|
20
|
-
DOWN: 'DOWN',
|
|
21
|
-
UP: 'UP',
|
|
22
|
-
LEFT: 'LEFT',
|
|
23
|
-
RIGHT: 'RIGHT',
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Map Graph-IR algorithm to ELK algorithm
|
|
27
|
-
*/
|
|
28
|
-
const algorithmMap = {
|
|
29
|
-
layered: 'layered',
|
|
30
|
-
force: 'force',
|
|
31
|
-
radial: 'radial',
|
|
32
|
-
tree: 'mrtree',
|
|
33
|
-
fixed: 'fixed',
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Convert Graph-IR layout options to ELK options
|
|
37
|
-
*/
|
|
38
|
-
function toElkOptions(options) {
|
|
39
|
-
const elkOptions = {
|
|
40
|
-
'elk.algorithm': algorithmMap[options?.algorithm || 'layered'] || 'layered',
|
|
41
|
-
'elk.direction': directionMap[options?.direction || 'DOWN'] || 'DOWN',
|
|
42
|
-
};
|
|
43
|
-
if (options?.spacing) {
|
|
44
|
-
if (options.spacing.nodeNode !== undefined) {
|
|
45
|
-
elkOptions['elk.spacing.nodeNode'] = String(options.spacing.nodeNode);
|
|
46
|
-
}
|
|
47
|
-
if (options.spacing.layerSpacing !== undefined) {
|
|
48
|
-
elkOptions['elk.layered.spacing.nodeNodeBetweenLayers'] = String(options.spacing.layerSpacing);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return elkOptions;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Convert a GraphNode to ELK node format
|
|
55
|
-
*/
|
|
56
|
-
function toElkNode(node) {
|
|
57
|
-
const elkNode = {
|
|
58
|
-
id: node.id,
|
|
59
|
-
width: node.dimensions?.width || DEFAULT_NODE_WIDTH,
|
|
60
|
-
height: node.dimensions?.height || DEFAULT_NODE_HEIGHT,
|
|
61
|
-
};
|
|
62
|
-
// Handle children for group nodes
|
|
63
|
-
if (node.children && node.children.length > 0) {
|
|
64
|
-
elkNode.children = node.children.map(toElkNode);
|
|
65
|
-
elkNode.layoutOptions = {
|
|
66
|
-
'elk.padding': `[top=${DEFAULT_GROUP_PADDING},left=${DEFAULT_GROUP_PADDING},bottom=${DEFAULT_GROUP_PADDING},right=${DEFAULT_GROUP_PADDING}]`,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
return elkNode;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Convert a GraphEdge to ELK edge format
|
|
73
|
-
*/
|
|
74
|
-
function toElkEdge(edge) {
|
|
8
|
+
function graphOptions(options) {
|
|
9
|
+
if (!options)
|
|
10
|
+
return undefined;
|
|
75
11
|
return {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
12
|
+
algorithm: options.algorithm,
|
|
13
|
+
direction: options.direction,
|
|
14
|
+
spacing: options.spacing,
|
|
15
|
+
edgeRouting: options.edgeRouting,
|
|
16
|
+
hierarchyHandling: options.hierarchyHandling,
|
|
79
17
|
};
|
|
80
18
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
x,
|
|
93
|
-
y,
|
|
94
|
-
width: elkNode.width,
|
|
95
|
-
height: elkNode.height,
|
|
96
|
-
});
|
|
97
|
-
if (elkNode.children) {
|
|
98
|
-
collectPositions(elkNode.children, x, y);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
collectPositions(elkNodes);
|
|
103
|
-
// Apply positions to GraphNodes
|
|
104
|
-
function applyToNodes(nodes) {
|
|
105
|
-
return nodes.map((node) => {
|
|
106
|
-
const pos = positionMap.get(node.id);
|
|
107
|
-
const result = {
|
|
108
|
-
...node,
|
|
109
|
-
position: pos ? { x: pos.x, y: pos.y } : node.position,
|
|
110
|
-
};
|
|
111
|
-
if (pos?.width && pos?.height) {
|
|
112
|
-
result.dimensions = { width: pos.width, height: pos.height };
|
|
113
|
-
}
|
|
114
|
-
if (node.children) {
|
|
115
|
-
result.children = applyToNodes(node.children);
|
|
116
|
-
}
|
|
117
|
-
return result;
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
return applyToNodes(nodes);
|
|
19
|
+
function applyGraphPositions(nodes, result) {
|
|
20
|
+
const byId = new Map(result.nodes.map((node) => [node.id, node]));
|
|
21
|
+
return nodes.map((node) => {
|
|
22
|
+
const laid = byId.get(node.id);
|
|
23
|
+
return {
|
|
24
|
+
...node,
|
|
25
|
+
position: laid?.absolutePosition ?? node.position,
|
|
26
|
+
...(laid?.width && laid.height ? { dimensions: { width: laid.width, height: laid.height } } : {}),
|
|
27
|
+
...(node.children ? { children: applyGraphPositions(node.children, result) } : {}),
|
|
28
|
+
};
|
|
29
|
+
});
|
|
121
30
|
}
|
|
122
|
-
/**
|
|
123
|
-
* Layout a Graph-IR structure using ELK
|
|
124
|
-
*
|
|
125
|
-
* @param graph - The Graph-IR to layout
|
|
126
|
-
* @returns Graph-IR with positions computed for all nodes
|
|
127
|
-
*/
|
|
128
31
|
export async function layoutGraph(graph) {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return {
|
|
137
|
-
...graph,
|
|
138
|
-
nodes: applyPositions(graph.nodes, layoutedGraph.children || []),
|
|
139
|
-
};
|
|
32
|
+
const result = await resolveSpatialLayout({
|
|
33
|
+
revision: `viz:${graph.id}`,
|
|
34
|
+
graph,
|
|
35
|
+
operation: 'load',
|
|
36
|
+
defaults: { algorithm: 'layered', direction: 'DOWN' },
|
|
37
|
+
options: graphOptions(graph.layoutOptions),
|
|
38
|
+
});
|
|
39
|
+
return { ...graph, nodes: applyGraphPositions(graph.nodes, result) };
|
|
140
40
|
}
|
|
141
|
-
/**
|
|
142
|
-
* Get shape ID from node data
|
|
143
|
-
*/
|
|
144
41
|
function getShapeIdFromNode(node) {
|
|
145
|
-
// Check symbolId first
|
|
146
42
|
const symbolId = node.data.symbolId;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
service: 'rectangle',
|
|
156
|
-
database: 'cylinder',
|
|
157
|
-
external_api: 'cloud',
|
|
158
|
-
actor: 'actor',
|
|
159
|
-
module: 'rectangle',
|
|
160
|
-
group: 'rectangle',
|
|
161
|
-
process: 'rectangle',
|
|
162
|
-
decision: 'diamond',
|
|
163
|
-
terminal: 'stadium',
|
|
164
|
-
io: 'parallelogram',
|
|
165
|
-
document: 'document',
|
|
166
|
-
};
|
|
167
|
-
return typeToShape[node.data.nodeType] || 'rectangle';
|
|
43
|
+
const symbol = symbolId ? symbolRegistry.get(symbolId) : undefined;
|
|
44
|
+
if (symbol)
|
|
45
|
+
return symbol.shape;
|
|
46
|
+
return {
|
|
47
|
+
service: 'rectangle', database: 'cylinder', external_api: 'cloud', actor: 'actor',
|
|
48
|
+
module: 'rectangle', group: 'rectangle', process: 'rectangle', decision: 'diamond',
|
|
49
|
+
terminal: 'stadium', io: 'parallelogram', document: 'document',
|
|
50
|
+
}[node.data.nodeType] || 'rectangle';
|
|
168
51
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
getShapeId: getShapeIdFromNode,
|
|
186
|
-
fontSize: options.fontSize,
|
|
187
|
-
fontFamily: options.fontFamily,
|
|
188
|
-
});
|
|
52
|
+
function sizeFlowNodes(nodes, options) {
|
|
53
|
+
if (!options?.sizingMode)
|
|
54
|
+
return nodes;
|
|
55
|
+
return applyAdaptiveSizing(nodes, {
|
|
56
|
+
sizingMode: options.sizingMode,
|
|
57
|
+
getShapeId: getShapeIdFromNode,
|
|
58
|
+
fontSize: options.fontSize,
|
|
59
|
+
fontFamily: options.fontFamily,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function flowHierarchy(nodes) {
|
|
63
|
+
const children = new Map();
|
|
64
|
+
for (const node of nodes) {
|
|
65
|
+
if (!node.parentId)
|
|
66
|
+
continue;
|
|
67
|
+
children.set(node.parentId, [...(children.get(node.parentId) ?? []), node]);
|
|
189
68
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
const childMap = new Map();
|
|
194
|
-
// First pass: create ELK nodes and group children
|
|
195
|
-
for (const node of sizedNodes) {
|
|
196
|
-
const elkNode = {
|
|
69
|
+
const convert = (node) => {
|
|
70
|
+
const nested = children.get(node.id);
|
|
71
|
+
return {
|
|
197
72
|
id: node.id,
|
|
198
73
|
width: node.measured?.width || node.width || DEFAULT_NODE_WIDTH,
|
|
199
74
|
height: node.measured?.height || node.height || DEFAULT_NODE_HEIGHT,
|
|
75
|
+
...(nested?.length ? {
|
|
76
|
+
layoutOptions: { padding: {
|
|
77
|
+
top: DEFAULT_GROUP_PADDING, right: DEFAULT_GROUP_PADDING,
|
|
78
|
+
bottom: DEFAULT_GROUP_PADDING, left: DEFAULT_GROUP_PADDING,
|
|
79
|
+
} },
|
|
80
|
+
children: nested.map(convert),
|
|
81
|
+
} : {}),
|
|
200
82
|
};
|
|
201
|
-
if (node.parentId) {
|
|
202
|
-
const siblings = childMap.get(node.parentId) || [];
|
|
203
|
-
siblings.push(elkNode);
|
|
204
|
-
childMap.set(node.parentId, siblings);
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
rootNodes.push(elkNode);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
// Second pass: attach children to parents
|
|
211
|
-
for (const elkNode of rootNodes) {
|
|
212
|
-
const children = childMap.get(elkNode.id);
|
|
213
|
-
if (children) {
|
|
214
|
-
elkNode.children = children;
|
|
215
|
-
elkNode.layoutOptions = {
|
|
216
|
-
'elk.padding': `[top=${DEFAULT_GROUP_PADDING},left=${DEFAULT_GROUP_PADDING},bottom=${DEFAULT_GROUP_PADDING},right=${DEFAULT_GROUP_PADDING}]`,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// Convert edges
|
|
221
|
-
const elkEdges = edges.map((e) => ({
|
|
222
|
-
id: e.id,
|
|
223
|
-
sources: [e.source],
|
|
224
|
-
targets: [e.target],
|
|
225
|
-
}));
|
|
226
|
-
const elkGraph = {
|
|
227
|
-
id: 'root',
|
|
228
|
-
layoutOptions: toElkOptions(options),
|
|
229
|
-
children: rootNodes,
|
|
230
|
-
edges: elkEdges,
|
|
231
83
|
};
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
collectPositions(elkNode.children, 0, 0);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
collectPositions(layoutedGraph.children || []);
|
|
247
|
-
// Apply positions to React Flow nodes (use sizedNodes to preserve computed dimensions)
|
|
248
|
-
return sizedNodes.map((node) => {
|
|
249
|
-
const pos = positionMap.get(node.id);
|
|
250
|
-
if (pos) {
|
|
251
|
-
return {
|
|
252
|
-
...node,
|
|
253
|
-
position: { x: pos.x, y: pos.y },
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
return node;
|
|
84
|
+
return nodes.filter((node) => !node.parentId).map(convert);
|
|
85
|
+
}
|
|
86
|
+
async function layoutFlow(nodes, edges, options) {
|
|
87
|
+
const sizedNodes = sizeFlowNodes(nodes, options);
|
|
88
|
+
const result = await computeElkLayout({
|
|
89
|
+
id: 'root',
|
|
90
|
+
defaults: { algorithm: 'layered', direction: 'DOWN' },
|
|
91
|
+
options: graphOptions(options),
|
|
92
|
+
nodes: flowHierarchy(sizedNodes),
|
|
93
|
+
edges: edges.map((edge) => ({ id: edge.id, source: edge.source, target: edge.target })),
|
|
257
94
|
});
|
|
95
|
+
return { sizedNodes, result };
|
|
96
|
+
}
|
|
97
|
+
export async function layoutFlowNodes(nodes, edges, options) {
|
|
98
|
+
const { sizedNodes, result } = await layoutFlow(nodes, edges, options);
|
|
99
|
+
const byId = new Map(result.nodes.map((node) => [node.id, node.position]));
|
|
100
|
+
return sizedNodes.map((node) => ({ ...node, position: byId.get(node.id) ?? node.position }));
|
|
258
101
|
}
|
|
259
|
-
/**
|
|
260
|
-
* Extract edge routing sections from ELK layout result.
|
|
261
|
-
*
|
|
262
|
-
* ELK computes edge sections with start/end points and bend points.
|
|
263
|
-
* Previously Coral discarded this data — now we capture it.
|
|
264
|
-
*/
|
|
265
102
|
export function extractEdgeSections(elkEdges) {
|
|
266
103
|
const routing = new Map();
|
|
267
|
-
|
|
268
|
-
return routing;
|
|
269
|
-
for (const edge of elkEdges) {
|
|
104
|
+
for (const edge of elkEdges ?? []) {
|
|
270
105
|
const section = edge.sections?.[0];
|
|
271
106
|
if (!section)
|
|
272
107
|
continue;
|
|
273
|
-
const bendPoints = (section.bendPoints ?? []).map((bp) => ({
|
|
274
|
-
x: bp.x,
|
|
275
|
-
y: bp.y,
|
|
276
|
-
}));
|
|
277
108
|
routing.set(edge.id, {
|
|
278
109
|
id: edge.id,
|
|
279
|
-
startPoint: {
|
|
280
|
-
endPoint: {
|
|
281
|
-
bendPoints,
|
|
110
|
+
startPoint: { ...section.startPoint },
|
|
111
|
+
endPoint: { ...section.endPoint },
|
|
112
|
+
bendPoints: (section.bendPoints ?? []).map((point) => ({ ...point })),
|
|
282
113
|
sourceId: edge.sources[0],
|
|
283
114
|
targetId: edge.targets[0],
|
|
284
115
|
});
|
|
285
116
|
}
|
|
286
117
|
return routing;
|
|
287
118
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
fontFamily: options.fontFamily,
|
|
119
|
+
function routingMap(result, edges) {
|
|
120
|
+
const input = new Map(edges.map((edge) => [edge.id, edge]));
|
|
121
|
+
const routing = new Map();
|
|
122
|
+
for (const edge of result.edges) {
|
|
123
|
+
const section = edge.sections[0];
|
|
124
|
+
const original = input.get(edge.id);
|
|
125
|
+
if (!section || !original)
|
|
126
|
+
continue;
|
|
127
|
+
routing.set(edge.id, {
|
|
128
|
+
id: edge.id,
|
|
129
|
+
startPoint: section.startPoint,
|
|
130
|
+
endPoint: section.endPoint,
|
|
131
|
+
bendPoints: section.bendPoints,
|
|
132
|
+
sourceId: original.source,
|
|
133
|
+
targetId: original.target,
|
|
304
134
|
});
|
|
305
135
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
};
|
|
315
|
-
if (node.parentId) {
|
|
316
|
-
const siblings = childMap.get(node.parentId) || [];
|
|
317
|
-
siblings.push(elkNode);
|
|
318
|
-
childMap.set(node.parentId, siblings);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
rootNodes.push(elkNode);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
for (const elkNode of rootNodes) {
|
|
325
|
-
const children = childMap.get(elkNode.id);
|
|
326
|
-
if (children) {
|
|
327
|
-
elkNode.children = children;
|
|
328
|
-
elkNode.layoutOptions = {
|
|
329
|
-
'elk.padding': `[top=${DEFAULT_GROUP_PADDING},left=${DEFAULT_GROUP_PADDING},bottom=${DEFAULT_GROUP_PADDING},right=${DEFAULT_GROUP_PADDING}]`,
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
const elkEdges = edges.map((e) => ({
|
|
334
|
-
id: e.id,
|
|
335
|
-
sources: [e.source],
|
|
336
|
-
targets: [e.target],
|
|
337
|
-
}));
|
|
338
|
-
const elkGraph = {
|
|
339
|
-
id: 'root',
|
|
340
|
-
layoutOptions: toElkOptions(options),
|
|
341
|
-
children: rootNodes,
|
|
342
|
-
edges: elkEdges,
|
|
136
|
+
return routing;
|
|
137
|
+
}
|
|
138
|
+
export async function layoutFlowNodesWithEdges(nodes, edges, options) {
|
|
139
|
+
const { sizedNodes, result } = await layoutFlow(nodes, edges, options);
|
|
140
|
+
const byId = new Map(result.nodes.map((node) => [node.id, node.position]));
|
|
141
|
+
return {
|
|
142
|
+
nodes: sizedNodes.map((node) => ({ ...node, position: byId.get(node.id) ?? node.position })),
|
|
143
|
+
edgeRouting: routingMap(result, edges),
|
|
343
144
|
};
|
|
344
|
-
const layoutedGraph = await elk.layout(elkGraph);
|
|
345
|
-
// Build position map
|
|
346
|
-
const positionMap = new Map();
|
|
347
|
-
function collectPositions(elkNodes, offsetX = 0, offsetY = 0) {
|
|
348
|
-
for (const elkNode of elkNodes) {
|
|
349
|
-
const x = (elkNode.x || 0) + offsetX;
|
|
350
|
-
const y = (elkNode.y || 0) + offsetY;
|
|
351
|
-
positionMap.set(elkNode.id, { x, y });
|
|
352
|
-
if (elkNode.children) {
|
|
353
|
-
collectPositions(elkNode.children, 0, 0);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
collectPositions(layoutedGraph.children || []);
|
|
358
|
-
// Extract edge routing from ELK
|
|
359
|
-
const edgeRouting = extractEdgeSections(layoutedGraph.edges);
|
|
360
|
-
// Apply positions to React Flow nodes
|
|
361
|
-
const layoutedNodes = sizedNodes.map((node) => {
|
|
362
|
-
const pos = positionMap.get(node.id);
|
|
363
|
-
if (pos) {
|
|
364
|
-
return {
|
|
365
|
-
...node,
|
|
366
|
-
position: { x: pos.x, y: pos.y },
|
|
367
|
-
};
|
|
368
|
-
}
|
|
369
|
-
return node;
|
|
370
|
-
});
|
|
371
|
-
return { nodes: layoutedNodes, edgeRouting };
|
|
372
145
|
}
|
|
373
|
-
/**
|
|
374
|
-
* Get ELK instance for advanced usage
|
|
375
|
-
*/
|
|
376
146
|
export function getElk() {
|
|
377
147
|
return elk;
|
|
378
148
|
}
|
package/dist/layout/elk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elk.js","sourceRoot":"","sources":["../../src/layout/elk.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elk.js","sourceRoot":"","sources":["../../src/layout/elk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,65 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Compatibility exports for deterministic node sizing.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* - Shape geometry constraints (textBoundsRatio)
|
|
7
|
-
* - Minimum size requirements
|
|
8
|
-
* - Padding specifications
|
|
4
|
+
* The implementation lives in @coral-viz/render so the editor, server-side
|
|
5
|
+
* renderer, exporters, and MCP tools all use the same bundled font metrics.
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Measure text dimensions using canvas
|
|
13
|
-
*
|
|
14
|
-
* Uses the Canvas API's measureText() for accurate text width measurement,
|
|
15
|
-
* with word wrapping support when maxWidth is specified.
|
|
16
|
-
*/
|
|
17
|
-
export declare function measureText(options: TextMeasureOptions): TextDimensions;
|
|
18
|
-
/**
|
|
19
|
-
* Compute optimal node size based on text content and shape geometry
|
|
20
|
-
*
|
|
21
|
-
* The sizing algorithm:
|
|
22
|
-
* 1. Measure text dimensions
|
|
23
|
-
* 2. Apply shape's textBoundsRatio to account for geometry (e.g., diamond needs more space)
|
|
24
|
-
* 3. Add padding for visual breathing room
|
|
25
|
-
* 4. Enforce minimum size constraints
|
|
26
|
-
* 5. Optionally apply uniform sizing across nodes of the same shape
|
|
27
|
-
*/
|
|
28
|
-
export declare function computeNodeSize(options: NodeSizingOptions): NodeDimensions;
|
|
29
|
-
/**
|
|
30
|
-
* Compute uniform sizes for all shapes in a diagram
|
|
31
|
-
*
|
|
32
|
-
* For uniform sizing mode, we need to find the maximum required size
|
|
33
|
-
* for each shape type, then apply that to all nodes of that type.
|
|
34
|
-
*/
|
|
35
|
-
export declare function computeUniformSizes(nodes: Array<{
|
|
36
|
-
text: string;
|
|
37
|
-
shapeId: string;
|
|
38
|
-
}>, options?: {
|
|
39
|
-
fontSize?: number;
|
|
40
|
-
fontFamily?: string;
|
|
41
|
-
fontWeight?: string | number;
|
|
42
|
-
}): Map<string, {
|
|
43
|
-
width: number;
|
|
44
|
-
height: number;
|
|
45
|
-
}>;
|
|
46
|
-
/**
|
|
47
|
-
* Apply adaptive sizing to a set of nodes
|
|
48
|
-
*
|
|
49
|
-
* This is the main entry point for layout integration.
|
|
50
|
-
* Returns nodes with updated width/height properties.
|
|
51
|
-
*/
|
|
52
|
-
export declare function applyAdaptiveSizing<T extends {
|
|
53
|
-
data: {
|
|
54
|
-
label?: string;
|
|
55
|
-
};
|
|
56
|
-
width?: number;
|
|
57
|
-
height?: number;
|
|
58
|
-
}>(nodes: T[], options: {
|
|
59
|
-
sizingMode: SizingMode;
|
|
60
|
-
getShapeId: (node: T) => string;
|
|
61
|
-
fontSize?: number;
|
|
62
|
-
fontFamily?: string;
|
|
63
|
-
fontWeight?: string | number;
|
|
64
|
-
}): T[];
|
|
7
|
+
export { applyAdaptiveSizing, computeNodeSize, computeUniformSizes, measureText, } from '@coral-viz/render';
|
|
65
8
|
//# sourceMappingURL=nodeSizing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeSizing.d.ts","sourceRoot":"","sources":["../../src/layout/nodeSizing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nodeSizing.d.ts","sourceRoot":"","sources":["../../src/layout/nodeSizing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
|