@fazelstudio/floe 1.0.0 → 1.0.1
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/CHANGELOG.md +21 -0
- package/README.md +199 -0
- package/dist/src/cli/check.d.ts.map +1 -1
- package/dist/src/cli/check.js +1 -1
- package/dist/src/cli/check.js.map +1 -1
- package/dist/src/cli/format.d.ts.map +1 -1
- package/dist/src/cli/format.js +4 -35
- package/dist/src/cli/format.js.map +1 -1
- package/dist/src/cli/main.d.ts +0 -16
- package/dist/src/cli/main.d.ts.map +1 -1
- package/dist/src/cli/main.js +0 -7
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/render.d.ts.map +1 -1
- package/dist/src/cli/render.js +0 -15
- package/dist/src/cli/render.js.map +1 -1
- package/dist/src/diagnostics.d.ts +4 -18
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/index.d.ts +7 -9
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/language/completion.d.ts +1 -2
- package/dist/src/language/completion.d.ts.map +1 -1
- package/dist/src/language/completion.js.map +1 -1
- package/dist/src/language/definitions.d.ts +6 -3
- package/dist/src/language/definitions.d.ts.map +1 -1
- package/dist/src/language/definitions.js.map +1 -1
- package/dist/src/language/diagnosticsService.d.ts +4 -5
- package/dist/src/language/diagnosticsService.d.ts.map +1 -1
- package/dist/src/language/diagnosticsService.js.map +1 -1
- package/dist/src/language/folding.d.ts +2 -3
- package/dist/src/language/folding.d.ts.map +1 -1
- package/dist/src/language/folding.js.map +1 -1
- package/dist/src/language/formatting.d.ts +2 -3
- package/dist/src/language/formatting.d.ts.map +1 -1
- package/dist/src/language/formatting.js.map +1 -1
- package/dist/src/language/highlighting.d.ts +2 -3
- package/dist/src/language/highlighting.d.ts.map +1 -1
- package/dist/src/language/highlighting.js.map +1 -1
- package/dist/src/language/hover.d.ts +4 -2
- package/dist/src/language/hover.d.ts.map +1 -1
- package/dist/src/language/hover.js.map +1 -1
- package/dist/src/language/indentation.d.ts +4 -7
- package/dist/src/language/indentation.d.ts.map +1 -1
- package/dist/src/language/indentation.js.map +1 -1
- package/dist/src/language/index.d.ts +45 -17
- package/dist/src/language/index.d.ts.map +1 -1
- package/dist/src/language/index.js.map +1 -1
- package/dist/src/language/references.d.ts +3 -4
- package/dist/src/language/references.d.ts.map +1 -1
- package/dist/src/language/references.js.map +1 -1
- package/dist/src/language/rename.d.ts +43 -15
- package/dist/src/language/rename.d.ts.map +1 -1
- package/dist/src/language/rename.js.map +1 -1
- package/dist/src/language/semanticModel.d.ts +14 -19
- package/dist/src/language/semanticModel.d.ts.map +1 -1
- package/dist/src/language/semanticModel.js.map +1 -1
- package/dist/src/language/symbols.d.ts +2 -3
- package/dist/src/language/symbols.d.ts.map +1 -1
- package/dist/src/language/symbols.js.map +1 -1
- package/dist/src/language/types.d.ts +0 -44
- package/dist/src/language/types.d.ts.map +1 -1
- package/dist/src/language/utils.d.ts +20 -18
- package/dist/src/language/utils.d.ts.map +1 -1
- package/dist/src/language/utils.js.map +1 -1
- package/dist/src/layout/dagre.d.ts +2 -2
- package/dist/src/layout/dagre.d.ts.map +1 -1
- package/dist/src/layout/dagre.js +14 -55
- package/dist/src/layout/dagre.js.map +1 -1
- package/dist/src/layout/index.d.ts +1 -9
- package/dist/src/layout/index.d.ts.map +1 -1
- package/dist/src/layout/index.js +1 -10
- package/dist/src/layout/index.js.map +1 -1
- package/dist/src/layout/simple.d.ts +1 -1
- package/dist/src/layout/simple.d.ts.map +1 -1
- package/dist/src/layout/simple.js +20 -166
- package/dist/src/layout/simple.js.map +1 -1
- package/dist/src/layout/types.d.ts +0 -1
- package/dist/src/layout/types.d.ts.map +1 -1
- package/dist/src/lexer.d.ts +0 -3
- package/dist/src/lexer.d.ts.map +1 -1
- package/dist/src/lexer.js +13 -54
- package/dist/src/lexer.js.map +1 -1
- package/dist/src/lsp/documents.d.ts +8 -17
- package/dist/src/lsp/documents.d.ts.map +1 -1
- package/dist/src/lsp/documents.js.map +1 -1
- package/dist/src/lsp/server.d.ts +138 -63
- package/dist/src/lsp/server.d.ts.map +1 -1
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/lsp/utils.d.ts +13 -20
- package/dist/src/lsp/utils.d.ts.map +1 -1
- package/dist/src/lsp/utils.js.map +1 -1
- package/dist/src/parser.d.ts +94 -68
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js.map +1 -1
- package/dist/src/pipeline.d.ts +0 -20
- package/dist/src/pipeline.d.ts.map +1 -1
- package/dist/src/pipeline.js +2 -28
- package/dist/src/pipeline.js.map +1 -1
- package/dist/src/range.d.ts +2 -5
- package/dist/src/range.d.ts.map +1 -1
- package/dist/src/range.js +0 -7
- package/dist/src/range.js.map +1 -1
- package/dist/src/render/shapes.d.ts +0 -8
- package/dist/src/render/shapes.d.ts.map +1 -1
- package/dist/src/render/shapes.js +13 -60
- package/dist/src/render/shapes.js.map +1 -1
- package/dist/src/render/svg.d.ts +0 -9
- package/dist/src/render/svg.d.ts.map +1 -1
- package/dist/src/render/svg.js +18 -83
- package/dist/src/render/svg.js.map +1 -1
- package/dist/src/security/url.d.ts +2 -2
- package/dist/src/security/url.d.ts.map +1 -1
- package/dist/src/security/url.js.map +1 -1
- package/dist/src/types.d.ts +3 -45
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +0 -5
- package/dist/src/types.js.map +1 -1
- package/dist/src/validator.d.ts +4 -33
- package/dist/src/validator.d.ts.map +1 -1
- package/dist/src/validator.js +4 -2
- package/dist/src/validator.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import type { LayoutEngine, LayoutResult, LayoutOptions } from "./types.js";
|
|
|
4
4
|
* Deterministic, zero-dependency layered layout.
|
|
5
5
|
* - No random, no timestamps, no nondeterministic ordering
|
|
6
6
|
* - Supports TB, BT, LR, RL via coordinate transform
|
|
7
|
-
* - Handles cycles via
|
|
7
|
+
* - Handles cycles via Kahn's topological longest-path (deterministic)
|
|
8
8
|
*/
|
|
9
9
|
export declare class SimpleLayoutEngine implements LayoutEngine {
|
|
10
10
|
private opts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../../src/layout/simple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../../src/layout/simple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAA0B,aAAa,EAAe,MAAM,YAAY,CAAC;AAYjH;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,IAAI,CAA0B;gBAE1B,IAAI,CAAC,EAAE,aAAa;IAIhC,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY;IAqI1C,OAAO,CAAC,YAAY;IAmFpB,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,iBAAiB;IAsDzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;CAsEtB"}
|
|
@@ -11,7 +11,7 @@ const DEFAULT_OPTS = {
|
|
|
11
11
|
* Deterministic, zero-dependency layered layout.
|
|
12
12
|
* - No random, no timestamps, no nondeterministic ordering
|
|
13
13
|
* - Supports TB, BT, LR, RL via coordinate transform
|
|
14
|
-
* - Handles cycles via
|
|
14
|
+
* - Handles cycles via Kahn's topological longest-path (deterministic)
|
|
15
15
|
*/
|
|
16
16
|
export class SimpleLayoutEngine {
|
|
17
17
|
opts;
|
|
@@ -31,13 +31,6 @@ export class SimpleLayoutEngine {
|
|
|
31
31
|
height: this.opts.margin * 2 + 60,
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
// Include isolated groups handling: even if nodes empty but groups with members? But members are nodes, so nodes empty => groups empty too fallback.
|
|
35
|
-
// Deterministic node ordering: sort by id for rank grouping stability,
|
|
36
|
-
// but preserve original rank discovery order? We sort copy for processing.
|
|
37
|
-
const nodesById = new Map();
|
|
38
|
-
for (const n of diagram.nodes)
|
|
39
|
-
nodesById.set(n.id, n);
|
|
40
|
-
// Deterministic edge ordering: sort by source, target, label
|
|
41
34
|
const edgesSorted = [...diagram.edges].sort((a, b) => {
|
|
42
35
|
if (a.source !== b.source)
|
|
43
36
|
return a.source.localeCompare(b.source);
|
|
@@ -45,34 +38,25 @@ export class SimpleLayoutEngine {
|
|
|
45
38
|
return a.target.localeCompare(b.target);
|
|
46
39
|
return (a.label ?? "").localeCompare(b.label ?? "");
|
|
47
40
|
});
|
|
48
|
-
// Compute node sizes deterministically based on label length
|
|
49
41
|
const nodeSizes = new Map();
|
|
50
42
|
for (const n of diagram.nodes) {
|
|
51
43
|
const label = n.label ?? n.id;
|
|
52
44
|
const size = estimateNodeSize(label, n.type, this.opts);
|
|
53
45
|
nodeSizes.set(n.id, size);
|
|
54
46
|
}
|
|
55
|
-
// ---- Rank assignment (longest path layering, deterministic) ----
|
|
56
47
|
const ranks = this.computeRanks(diagram.nodes, edgesSorted);
|
|
57
|
-
// Group by rank
|
|
58
48
|
const rankGroups = new Map();
|
|
59
49
|
for (const [id, rank] of ranks.entries()) {
|
|
60
50
|
const arr = rankGroups.get(rank) ?? [];
|
|
61
51
|
arr.push(id);
|
|
62
52
|
rankGroups.set(rank, arr);
|
|
63
53
|
}
|
|
64
|
-
// Sort ranks ascending
|
|
65
54
|
const sortedRanks = Array.from(rankGroups.keys()).sort((a, b) => a - b);
|
|
66
|
-
// Within each rank, sort ids alphabetically for determinism (stable)
|
|
67
55
|
for (const r of sortedRanks) {
|
|
68
56
|
rankGroups.get(r).sort((a, b) => a.localeCompare(b));
|
|
69
57
|
}
|
|
70
|
-
// ---- Coordinate assignment ----
|
|
71
|
-
// We first compute TB layout, then transform for other directions
|
|
72
58
|
const tbPositions = this.assignTbPositions(rankGroups, sortedRanks, nodeSizes);
|
|
73
|
-
// Transform for direction
|
|
74
59
|
const positioned = this.applyDirection(tbPositions, diagram.direction, nodeSizes);
|
|
75
|
-
// Build LayoutNodes
|
|
76
60
|
const layoutNodes = diagram.nodes
|
|
77
61
|
.slice()
|
|
78
62
|
.sort((a, b) => a.id.localeCompare(b.id))
|
|
@@ -90,8 +74,6 @@ export class SimpleLayoutEngine {
|
|
|
90
74
|
data: n,
|
|
91
75
|
};
|
|
92
76
|
});
|
|
93
|
-
// For deterministic output, sort layoutNodes by id (already)
|
|
94
|
-
// Need width/height: compute bounds
|
|
95
77
|
let width;
|
|
96
78
|
let height;
|
|
97
79
|
if (positioned.size === 0) {
|
|
@@ -99,79 +81,48 @@ export class SimpleLayoutEngine {
|
|
|
99
81
|
height = this.opts.margin * 2 + 60;
|
|
100
82
|
}
|
|
101
83
|
else {
|
|
102
|
-
|
|
103
|
-
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
84
|
+
let maxX = -Infinity, maxY = -Infinity;
|
|
104
85
|
for (const [id, pos] of positioned.entries()) {
|
|
105
86
|
const sz = nodeSizes.get(id);
|
|
106
|
-
const left = pos.x - sz.w / 2;
|
|
107
87
|
const right = pos.x + sz.w / 2;
|
|
108
|
-
const top = pos.y - sz.h / 2;
|
|
109
88
|
const bottom = pos.y + sz.h / 2;
|
|
110
|
-
if (left < minX)
|
|
111
|
-
minX = left;
|
|
112
89
|
if (right > maxX)
|
|
113
90
|
maxX = right;
|
|
114
|
-
if (top < minY)
|
|
115
|
-
minY = top;
|
|
116
91
|
if (bottom > maxY)
|
|
117
92
|
maxY = bottom;
|
|
118
93
|
}
|
|
119
|
-
width = maxX + this.opts.margin;
|
|
120
|
-
height = maxY + this.opts.margin;
|
|
121
|
-
// Also account for min if not at margin (should be margin due to assignment, but ensure >=)
|
|
122
|
-
// Our positions already start at margin + w/2, so minX >= margin.
|
|
123
|
-
// Ensure deterministic rounding
|
|
124
|
-
width = Math.ceil(width);
|
|
125
|
-
height = Math.ceil(height);
|
|
126
|
-
// Ensure minimal size
|
|
94
|
+
width = Math.ceil(maxX + this.opts.margin);
|
|
95
|
+
height = Math.ceil(maxY + this.opts.margin);
|
|
127
96
|
if (width < this.opts.margin * 2 + 100)
|
|
128
97
|
width = this.opts.margin * 2 + 100;
|
|
129
98
|
if (height < this.opts.margin * 2 + 60)
|
|
130
99
|
height = this.opts.margin * 2 + 60;
|
|
131
100
|
}
|
|
132
|
-
// Build LayoutEdges with points
|
|
133
101
|
const nodePosMap = positioned;
|
|
134
102
|
const layoutEdges = edgesSorted.map((e) => {
|
|
135
103
|
const srcPos = nodePosMap.get(e.source);
|
|
136
104
|
const tgtPos = nodePosMap.get(e.target);
|
|
137
|
-
// Fallback if missing (should not happen, but handle deterministically)
|
|
138
105
|
if (!srcPos || !tgtPos) {
|
|
139
106
|
return {
|
|
140
107
|
source: e.source,
|
|
141
108
|
target: e.target,
|
|
142
109
|
label: e.label,
|
|
143
|
-
points: [
|
|
144
|
-
{ x: 0, y: 0 },
|
|
145
|
-
{ x: 0, y: 0 },
|
|
146
|
-
],
|
|
110
|
+
points: [{ x: 0, y: 0 }, { x: 0, y: 0 }],
|
|
147
111
|
data: e,
|
|
148
112
|
};
|
|
149
113
|
}
|
|
150
114
|
const srcSize = nodeSizes.get(e.source);
|
|
151
115
|
const tgtSize = nodeSizes.get(e.target);
|
|
152
116
|
const points = this.computeEdgePoints({ x: srcPos.x, y: srcPos.y, w: srcSize.w, h: srcSize.h }, { x: tgtPos.x, y: tgtPos.y, w: tgtSize.w, h: tgtSize.h }, diagram.direction, srcPos, tgtPos);
|
|
153
|
-
// label position: midpoint of polyline
|
|
154
117
|
let labelPos;
|
|
155
|
-
if (e.label)
|
|
118
|
+
if (e.label)
|
|
156
119
|
labelPos = this.computeLabelPos(points);
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
source: e.source,
|
|
160
|
-
target: e.target,
|
|
161
|
-
label: e.label,
|
|
162
|
-
points,
|
|
163
|
-
labelPos,
|
|
164
|
-
data: e,
|
|
165
|
-
};
|
|
120
|
+
return { source: e.source, target: e.target, label: e.label, points, labelPos, data: e };
|
|
166
121
|
});
|
|
167
|
-
// Sort layoutEdges already sorted
|
|
168
|
-
// ---- Compute group layouts ----
|
|
169
122
|
const layoutGroups = this.computeGroups(diagram.groups ?? [], positioned, nodeSizes);
|
|
170
|
-
// Expand width/height to include groups if needed
|
|
171
123
|
let finalWidth = width;
|
|
172
124
|
let finalHeight = height;
|
|
173
125
|
for (const lg of layoutGroups) {
|
|
174
|
-
// flatten recursively
|
|
175
126
|
const all = flattenGroups([lg]);
|
|
176
127
|
for (const g of all) {
|
|
177
128
|
const right = g.x + g.width / 2;
|
|
@@ -196,14 +147,12 @@ export class SimpleLayoutEngine {
|
|
|
196
147
|
const ranks = new Map();
|
|
197
148
|
for (const n of nodes)
|
|
198
149
|
ranks.set(n.id, 0);
|
|
199
|
-
// Build indegree and adjacency for Kahn's topological layering (deterministic)
|
|
200
150
|
const indeg = new Map();
|
|
201
151
|
const adj = new Map();
|
|
202
152
|
for (const n of nodes) {
|
|
203
153
|
indeg.set(n.id, 0);
|
|
204
154
|
adj.set(n.id, []);
|
|
205
155
|
}
|
|
206
|
-
// Sort edges deterministically before building graph
|
|
207
156
|
const sortedEdges = [...edges].sort((a, b) => {
|
|
208
157
|
if (a.source !== b.source)
|
|
209
158
|
return a.source.localeCompare(b.source);
|
|
@@ -212,16 +161,13 @@ export class SimpleLayoutEngine {
|
|
|
212
161
|
return (a.label ?? "").localeCompare(b.label ?? "");
|
|
213
162
|
});
|
|
214
163
|
for (const e of sortedEdges) {
|
|
215
|
-
// Only count edges where both nodes exist (should be all)
|
|
216
164
|
if (!indeg.has(e.target) || !adj.has(e.source))
|
|
217
165
|
continue;
|
|
218
166
|
indeg.set(e.target, (indeg.get(e.target) ?? 0) + 1);
|
|
219
167
|
adj.get(e.source).push(e.target);
|
|
220
168
|
}
|
|
221
|
-
// Sort adjacency lists for determinism
|
|
222
169
|
for (const list of adj.values())
|
|
223
170
|
list.sort((a, b) => a.localeCompare(b));
|
|
224
|
-
// Queue with indegree 0, sorted alphabetically
|
|
225
171
|
const queue = [];
|
|
226
172
|
for (const [id, d] of indeg.entries())
|
|
227
173
|
if (d === 0)
|
|
@@ -229,14 +175,11 @@ export class SimpleLayoutEngine {
|
|
|
229
175
|
queue.sort((a, b) => a.localeCompare(b));
|
|
230
176
|
const processed = new Set();
|
|
231
177
|
while (queue.length > 0) {
|
|
232
|
-
// Deterministic: always take smallest alphabetically
|
|
233
|
-
// Since we keep queue sorted after each insertion, shift gives deterministic order
|
|
234
178
|
const u = queue.shift();
|
|
235
179
|
processed.add(u);
|
|
236
180
|
const uRank = ranks.get(u) ?? 0;
|
|
237
181
|
const neighbors = adj.get(u) ?? [];
|
|
238
182
|
for (const v of neighbors) {
|
|
239
|
-
// longest path: rank[v] = max(rank[v], rank[u]+1)
|
|
240
183
|
const cur = ranks.get(v) ?? 0;
|
|
241
184
|
const proposed = uRank + 1;
|
|
242
185
|
if (proposed > cur)
|
|
@@ -249,48 +192,37 @@ export class SimpleLayoutEngine {
|
|
|
249
192
|
}
|
|
250
193
|
}
|
|
251
194
|
}
|
|
252
|
-
// Handle cycles: remaining nodes not processed (part of cycles)
|
|
253
195
|
if (processed.size < nodes.length) {
|
|
254
196
|
const remaining = nodes
|
|
255
197
|
.map((n) => n.id)
|
|
256
198
|
.filter((id) => !processed.has(id))
|
|
257
199
|
.sort((a, b) => a.localeCompare(b));
|
|
258
|
-
// Current max rank among processed
|
|
259
200
|
let maxRank = 0;
|
|
260
201
|
for (const v of ranks.values())
|
|
261
202
|
if (v > maxRank)
|
|
262
203
|
maxRank = v;
|
|
263
|
-
// For remaining nodes, assign ranks based on predecessors that are already ranked
|
|
264
|
-
// Iterate in sorted order, allowing cycle nodes to reference each other if earlier in order
|
|
265
204
|
for (const id of remaining) {
|
|
266
205
|
let maxPred = -1;
|
|
267
206
|
for (const e of sortedEdges) {
|
|
268
207
|
if (e.target === id) {
|
|
269
208
|
const predRank = ranks.get(e.source);
|
|
270
|
-
if (predRank !== undefined)
|
|
271
|
-
|
|
272
|
-
maxPred = predRank;
|
|
273
|
-
}
|
|
209
|
+
if (predRank !== undefined && predRank > maxPred)
|
|
210
|
+
maxPred = predRank;
|
|
274
211
|
}
|
|
275
212
|
}
|
|
276
213
|
if (maxPred >= 0) {
|
|
277
|
-
// If predecessor exists, put at maxPred+1, but if that predecessor is also in remaining and not yet assigned beyond initial 0,
|
|
278
|
-
// we still use its current rank (which may be 0). To avoid artificially high ranks, we clamp to maxRank+1 max
|
|
279
214
|
const proposed = maxPred + 1;
|
|
280
|
-
// Ensure not too high: if proposed > maxRank + remaining.length, clamp?
|
|
281
215
|
ranks.set(id, proposed);
|
|
282
216
|
if (proposed > maxRank)
|
|
283
217
|
maxRank = proposed;
|
|
284
218
|
}
|
|
285
219
|
else {
|
|
286
|
-
// No predecessor or isolated cycle entry
|
|
287
220
|
const proposed = maxRank + 1;
|
|
288
221
|
ranks.set(id, proposed);
|
|
289
222
|
maxRank = proposed;
|
|
290
223
|
}
|
|
291
224
|
}
|
|
292
225
|
}
|
|
293
|
-
// Normalize to start at 0 (should already, but ensure)
|
|
294
226
|
const minRank = Math.min(...Array.from(ranks.values()));
|
|
295
227
|
if (minRank !== 0) {
|
|
296
228
|
for (const [k, v] of ranks.entries())
|
|
@@ -301,30 +233,23 @@ export class SimpleLayoutEngine {
|
|
|
301
233
|
assignTbPositions(rankGroups, sortedRanks, nodeSizes) {
|
|
302
234
|
const pos = new Map();
|
|
303
235
|
const { nodeHeight, rankSep, nodeSep, margin } = this.opts;
|
|
304
|
-
// Compute max group width for centering
|
|
305
236
|
let maxGroupWidth = 0;
|
|
306
237
|
for (const r of sortedRanks) {
|
|
307
238
|
const ids = rankGroups.get(r);
|
|
308
239
|
let w = 0;
|
|
309
|
-
for (const id of ids)
|
|
310
|
-
|
|
311
|
-
w += sz.w;
|
|
312
|
-
}
|
|
240
|
+
for (const id of ids)
|
|
241
|
+
w += nodeSizes.get(id).w;
|
|
313
242
|
w += Math.max(0, ids.length - 1) * nodeSep;
|
|
314
243
|
if (w > maxGroupWidth)
|
|
315
244
|
maxGroupWidth = w;
|
|
316
245
|
}
|
|
317
|
-
// Assign y per rank, x per node within rank
|
|
318
246
|
for (const rank of sortedRanks) {
|
|
319
247
|
const ids = rankGroups.get(rank);
|
|
320
|
-
// compute group width
|
|
321
248
|
let groupWidth = 0;
|
|
322
249
|
for (const id of ids)
|
|
323
250
|
groupWidth += nodeSizes.get(id).w;
|
|
324
251
|
groupWidth += Math.max(0, ids.length - 1) * nodeSep;
|
|
325
|
-
// y center for this rank
|
|
326
252
|
const y = margin + rank * (nodeHeight + rankSep) + nodeHeight / 2;
|
|
327
|
-
// starting x to center group
|
|
328
253
|
const startX = margin + (maxGroupWidth - groupWidth) / 2;
|
|
329
254
|
let cursor = startX;
|
|
330
255
|
for (const id of ids) {
|
|
@@ -334,75 +259,43 @@ export class SimpleLayoutEngine {
|
|
|
334
259
|
cursor += sz.w + nodeSep;
|
|
335
260
|
}
|
|
336
261
|
}
|
|
337
|
-
// For TB, the maxGroupWidth ensures centered, but height computed from ranks
|
|
338
262
|
return pos;
|
|
339
263
|
}
|
|
340
264
|
applyDirection(tbPos, direction, nodeSizes) {
|
|
341
265
|
if (direction === "TB")
|
|
342
266
|
return tbPos;
|
|
343
|
-
|
|
344
|
-
let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
|
|
267
|
+
let maxX = -Infinity, maxY = -Infinity;
|
|
345
268
|
for (const [id, p] of tbPos.entries()) {
|
|
346
269
|
const sz = nodeSizes.get(id);
|
|
347
|
-
const left = p.x - sz.w / 2;
|
|
348
270
|
const right = p.x + sz.w / 2;
|
|
349
|
-
const top = p.y - sz.h / 2;
|
|
350
271
|
const bottom = p.y + sz.h / 2;
|
|
351
|
-
if (left < minX)
|
|
352
|
-
minX = left;
|
|
353
272
|
if (right > maxX)
|
|
354
273
|
maxX = right;
|
|
355
|
-
if (top < minY)
|
|
356
|
-
minY = top;
|
|
357
274
|
if (bottom > maxY)
|
|
358
275
|
maxY = bottom;
|
|
359
276
|
}
|
|
360
|
-
const tbWidth = maxX + this.opts.margin;
|
|
361
277
|
const tbHeight = maxY + this.opts.margin;
|
|
362
278
|
const result = new Map();
|
|
363
279
|
for (const [id, p] of tbPos.entries()) {
|
|
364
280
|
let x = p.x;
|
|
365
281
|
let y = p.y;
|
|
366
|
-
if (direction === "BT")
|
|
367
|
-
// flip Y: y' = tbHeight - y
|
|
282
|
+
if (direction === "BT")
|
|
368
283
|
y = tbHeight - y;
|
|
369
|
-
}
|
|
370
284
|
else if (direction === "LR") {
|
|
371
|
-
// swap axes: x' = y, y' = x but need to maintain margin? Simpler: transpose
|
|
372
|
-
// For LR, rank becomes horizontal: so original y (rank) becomes x
|
|
373
|
-
// Original x (within rank) becomes y
|
|
374
|
-
// We can just swap
|
|
375
285
|
const tmp = x;
|
|
376
286
|
x = y;
|
|
377
287
|
y = tmp;
|
|
378
288
|
}
|
|
379
289
|
else if (direction === "RL") {
|
|
380
290
|
const tmp = x;
|
|
381
|
-
x = tbHeight - y;
|
|
291
|
+
x = tbHeight - y;
|
|
382
292
|
y = tmp;
|
|
383
293
|
}
|
|
384
294
|
result.set(id, { x: round2(x), y: round2(y) });
|
|
385
295
|
}
|
|
386
|
-
// For LR/RL, we swapped but need to re-normalize to ensure margin? The swap already includes margin, so fine.
|
|
387
|
-
// However for RL we used tbHeight as width after transpose; ensure not negative.
|
|
388
|
-
// Simpler alternative for LR/RL: recompute via same method but swapped rankSep logic.
|
|
389
|
-
// But our transpose approach is deterministic and preserves relative spacing.
|
|
390
|
-
// For LR, after transpose, we may want to ensure left margin still applies: x values start at margin, which they do after swap because y originally started at margin+...
|
|
391
|
-
// It's okay.
|
|
392
296
|
return result;
|
|
393
297
|
}
|
|
394
298
|
computeEdgePoints(src, tgt, direction, srcPos, tgtPos) {
|
|
395
|
-
// Determine exit/entry sides based on direction and relative positions
|
|
396
|
-
// For TB/BT, use vertical sides unless same rank then use horizontal
|
|
397
|
-
// For LR/RL, use horizontal sides unless same "rank" (now column) then vertical
|
|
398
|
-
// If direction is TB: source bottom, target top
|
|
399
|
-
// BT: source top, target bottom
|
|
400
|
-
// LR: source right, target left
|
|
401
|
-
// RL: source left, target right
|
|
402
|
-
// For edges that go backwards (e.g., cycle where source rank > target rank), we still use direction's side? That may cause overlap but deterministic.
|
|
403
|
-
// To handle backwards, we could choose side based on vector between nodes.
|
|
404
|
-
// We'll use direction default, but if edge is reverse rank, we flip side to keep line going backwards visually.
|
|
405
|
-
// Determine if edge is "backward" by comparing rank order approximated via positions
|
|
406
299
|
let isBackward = false;
|
|
407
300
|
if (direction === "TB")
|
|
408
301
|
isBackward = srcPos.y > tgtPos.y;
|
|
@@ -412,11 +305,9 @@ export class SimpleLayoutEngine {
|
|
|
412
305
|
isBackward = srcPos.x > tgtPos.x;
|
|
413
306
|
else if (direction === "RL")
|
|
414
307
|
isBackward = srcPos.x < tgtPos.x;
|
|
415
|
-
// If same rank (positions equal in rank axis), use horizontal for TB/BT and vertical for LR/RL
|
|
416
308
|
const sameRank = (direction === "TB" || direction === "BT") ? Math.abs(srcPos.y - tgtPos.y) < 1 : Math.abs(srcPos.x - tgtPos.x) < 1;
|
|
417
309
|
let sx, sy, tx, ty;
|
|
418
310
|
if (sameRank) {
|
|
419
|
-
// horizontal edge within same rank for TB
|
|
420
311
|
if (srcPos.x < tgtPos.x) {
|
|
421
312
|
sx = src.x + src.w / 2;
|
|
422
313
|
sy = src.y;
|
|
@@ -429,7 +320,6 @@ export class SimpleLayoutEngine {
|
|
|
429
320
|
tx = tgt.x + tgt.w / 2;
|
|
430
321
|
ty = tgt.y;
|
|
431
322
|
}
|
|
432
|
-
// For LR same column, vertical
|
|
433
323
|
if (direction === "LR" || direction === "RL") {
|
|
434
324
|
if (srcPos.y < tgtPos.y) {
|
|
435
325
|
sx = src.x;
|
|
@@ -453,7 +343,6 @@ export class SimpleLayoutEngine {
|
|
|
453
343
|
ty = tgt.y - tgt.h / 2;
|
|
454
344
|
}
|
|
455
345
|
else {
|
|
456
|
-
// backward: exit top, enter bottom
|
|
457
346
|
sx = src.x;
|
|
458
347
|
sy = src.y - src.h / 2;
|
|
459
348
|
tx = tgt.x;
|
|
@@ -488,7 +377,7 @@ export class SimpleLayoutEngine {
|
|
|
488
377
|
ty = tgt.y;
|
|
489
378
|
}
|
|
490
379
|
}
|
|
491
|
-
else {
|
|
380
|
+
else {
|
|
492
381
|
if (!isBackward) {
|
|
493
382
|
sx = src.x - src.w / 2;
|
|
494
383
|
sy = src.y;
|
|
@@ -502,26 +391,17 @@ export class SimpleLayoutEngine {
|
|
|
502
391
|
ty = tgt.y;
|
|
503
392
|
}
|
|
504
393
|
}
|
|
505
|
-
// Round
|
|
506
394
|
sx = round2(sx);
|
|
507
395
|
sy = round2(sy);
|
|
508
396
|
tx = round2(tx);
|
|
509
397
|
ty = round2(ty);
|
|
510
|
-
// For straight edge, points are [start, end]
|
|
511
|
-
// For more interesting routing, if edge spans multiple ranks, we could add intermediate bend points
|
|
512
|
-
// For now, provide straight line. For orthogonal look, we could add one bend if needed for RL/LR?
|
|
513
|
-
// Keep simple deterministic: two points
|
|
514
|
-
// If edge is not straight due to needing to avoid overlapping nodes? Keep straight for simplicity
|
|
515
|
-
// Optionally add midpoint for label? But points length 2 is fine
|
|
516
|
-
// If source and target are same node (self-loop), create loop points
|
|
517
398
|
if (src.x === tgt.x && src.y === tgt.y) {
|
|
518
|
-
// self-loop: create small loop to the right
|
|
519
399
|
const loopSize = 24;
|
|
520
400
|
return [
|
|
521
401
|
{ x: sx, y: sy },
|
|
522
402
|
{ x: sx + loopSize, y: sy },
|
|
523
403
|
{ x: sx + loopSize, y: sy + loopSize },
|
|
524
|
-
{ x: src.x, y: src.y + src.h / 2 },
|
|
404
|
+
{ x: src.x, y: src.y + src.h / 2 },
|
|
525
405
|
];
|
|
526
406
|
}
|
|
527
407
|
return [{ x: sx, y: sy }, { x: tx, y: ty }];
|
|
@@ -541,11 +421,9 @@ export class SimpleLayoutEngine {
|
|
|
541
421
|
}
|
|
542
422
|
computeGroups(groups, positioned, nodeSizes) {
|
|
543
423
|
const groupPadding = 20;
|
|
544
|
-
const headerHeight = 24;
|
|
424
|
+
const headerHeight = 24;
|
|
545
425
|
const recurse = (grp) => {
|
|
546
|
-
// Compute child layouts first
|
|
547
426
|
const childLayouts = grp.groups.map(recurse);
|
|
548
|
-
// Compute bounds of members + children
|
|
549
427
|
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
550
428
|
let hasContent = false;
|
|
551
429
|
for (const nid of grp.nodeIds) {
|
|
@@ -554,10 +432,7 @@ export class SimpleLayoutEngine {
|
|
|
554
432
|
if (!pos || !sz)
|
|
555
433
|
continue;
|
|
556
434
|
hasContent = true;
|
|
557
|
-
const l = pos.x - sz.w / 2;
|
|
558
|
-
const r = pos.x + sz.w / 2;
|
|
559
|
-
const t = pos.y - sz.h / 2;
|
|
560
|
-
const b = pos.y + sz.h / 2;
|
|
435
|
+
const l = pos.x - sz.w / 2, r = pos.x + sz.w / 2, t = pos.y - sz.h / 2, b = pos.y + sz.h / 2;
|
|
561
436
|
if (l < minX)
|
|
562
437
|
minX = l;
|
|
563
438
|
if (r > maxX)
|
|
@@ -569,10 +444,7 @@ export class SimpleLayoutEngine {
|
|
|
569
444
|
}
|
|
570
445
|
for (const cl of childLayouts) {
|
|
571
446
|
hasContent = true;
|
|
572
|
-
const l = cl.x - cl.width / 2;
|
|
573
|
-
const r = cl.x + cl.width / 2;
|
|
574
|
-
const t = cl.y - cl.height / 2;
|
|
575
|
-
const b = cl.y + cl.height / 2;
|
|
447
|
+
const l = cl.x - cl.width / 2, r = cl.x + cl.width / 2, t = cl.y - cl.height / 2, b = cl.y + cl.height / 2;
|
|
576
448
|
if (l < minX)
|
|
577
449
|
minX = l;
|
|
578
450
|
if (r > maxX)
|
|
@@ -583,7 +455,6 @@ export class SimpleLayoutEngine {
|
|
|
583
455
|
maxY = b;
|
|
584
456
|
}
|
|
585
457
|
if (!hasContent) {
|
|
586
|
-
// Empty group: small placeholder centered near margin
|
|
587
458
|
const cx = this.opts.margin + 50;
|
|
588
459
|
const cy = this.opts.margin + 30;
|
|
589
460
|
return {
|
|
@@ -599,7 +470,6 @@ export class SimpleLayoutEngine {
|
|
|
599
470
|
children: childLayouts,
|
|
600
471
|
};
|
|
601
472
|
}
|
|
602
|
-
// Add padding and header
|
|
603
473
|
minX -= groupPadding;
|
|
604
474
|
maxX += groupPadding;
|
|
605
475
|
minY -= groupPadding + headerHeight;
|
|
@@ -621,43 +491,27 @@ export class SimpleLayoutEngine {
|
|
|
621
491
|
children: childLayouts,
|
|
622
492
|
};
|
|
623
493
|
};
|
|
624
|
-
// For top-level groups, compute deterministically sorted by id
|
|
625
494
|
const sorted = [...groups].sort((a, b) => a.id.localeCompare(b.id));
|
|
626
495
|
return sorted.map(recurse);
|
|
627
496
|
}
|
|
628
497
|
}
|
|
629
498
|
function estimateNodeSize(label, type, opts) {
|
|
630
|
-
// Deterministic size based on label length and type
|
|
631
|
-
// Use char width 7, padding
|
|
632
499
|
const charW = 7;
|
|
633
500
|
const paddingX = 24;
|
|
634
|
-
const paddingY = 12;
|
|
635
|
-
const baseH = 36;
|
|
636
501
|
let minW = opts.minNodeWidth;
|
|
637
502
|
let maxW = opts.maxNodeWidth;
|
|
638
503
|
let h = opts.nodeHeight;
|
|
639
|
-
// Type-specific adjustments
|
|
640
504
|
if (type === "database") {
|
|
641
|
-
// database slightly wider
|
|
642
505
|
minW = Math.max(minW, 90);
|
|
643
506
|
h = 48;
|
|
644
507
|
}
|
|
645
508
|
else if (type === "person") {
|
|
646
|
-
// person as circle-like, make square
|
|
647
|
-
// width based on label but ensure at least height
|
|
648
509
|
minW = Math.max(minW, 80);
|
|
649
510
|
h = 48;
|
|
650
511
|
}
|
|
651
|
-
else if (type === "service") {
|
|
652
|
-
minW = Math.max(minW, 90);
|
|
653
|
-
}
|
|
654
512
|
const textW = label.length * charW + paddingX;
|
|
655
513
|
let w = Math.max(minW, Math.min(maxW, textW));
|
|
656
|
-
|
|
657
|
-
// Snap to even for determinism
|
|
658
|
-
w = Math.round(w);
|
|
659
|
-
h = Math.round(h);
|
|
660
|
-
return { w, h };
|
|
514
|
+
return { w: Math.round(w), h: Math.round(h) };
|
|
661
515
|
}
|
|
662
516
|
function flattenGroups(groups) {
|
|
663
517
|
const out = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../../../src/layout/simple.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../../../src/layout/simple.ts"],"names":[],"mappings":"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"}
|