@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.
Files changed (123) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +199 -0
  3. package/dist/src/cli/check.d.ts.map +1 -1
  4. package/dist/src/cli/check.js +1 -1
  5. package/dist/src/cli/check.js.map +1 -1
  6. package/dist/src/cli/format.d.ts.map +1 -1
  7. package/dist/src/cli/format.js +4 -35
  8. package/dist/src/cli/format.js.map +1 -1
  9. package/dist/src/cli/main.d.ts +0 -16
  10. package/dist/src/cli/main.d.ts.map +1 -1
  11. package/dist/src/cli/main.js +0 -7
  12. package/dist/src/cli/main.js.map +1 -1
  13. package/dist/src/cli/render.d.ts.map +1 -1
  14. package/dist/src/cli/render.js +0 -15
  15. package/dist/src/cli/render.js.map +1 -1
  16. package/dist/src/diagnostics.d.ts +4 -18
  17. package/dist/src/diagnostics.d.ts.map +1 -1
  18. package/dist/src/diagnostics.js.map +1 -1
  19. package/dist/src/index.d.ts +7 -9
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/language/completion.d.ts +1 -2
  23. package/dist/src/language/completion.d.ts.map +1 -1
  24. package/dist/src/language/completion.js.map +1 -1
  25. package/dist/src/language/definitions.d.ts +6 -3
  26. package/dist/src/language/definitions.d.ts.map +1 -1
  27. package/dist/src/language/definitions.js.map +1 -1
  28. package/dist/src/language/diagnosticsService.d.ts +4 -5
  29. package/dist/src/language/diagnosticsService.d.ts.map +1 -1
  30. package/dist/src/language/diagnosticsService.js.map +1 -1
  31. package/dist/src/language/folding.d.ts +2 -3
  32. package/dist/src/language/folding.d.ts.map +1 -1
  33. package/dist/src/language/folding.js.map +1 -1
  34. package/dist/src/language/formatting.d.ts +2 -3
  35. package/dist/src/language/formatting.d.ts.map +1 -1
  36. package/dist/src/language/formatting.js.map +1 -1
  37. package/dist/src/language/highlighting.d.ts +2 -3
  38. package/dist/src/language/highlighting.d.ts.map +1 -1
  39. package/dist/src/language/highlighting.js.map +1 -1
  40. package/dist/src/language/hover.d.ts +4 -2
  41. package/dist/src/language/hover.d.ts.map +1 -1
  42. package/dist/src/language/hover.js.map +1 -1
  43. package/dist/src/language/indentation.d.ts +4 -7
  44. package/dist/src/language/indentation.d.ts.map +1 -1
  45. package/dist/src/language/indentation.js.map +1 -1
  46. package/dist/src/language/index.d.ts +45 -17
  47. package/dist/src/language/index.d.ts.map +1 -1
  48. package/dist/src/language/index.js.map +1 -1
  49. package/dist/src/language/references.d.ts +3 -4
  50. package/dist/src/language/references.d.ts.map +1 -1
  51. package/dist/src/language/references.js.map +1 -1
  52. package/dist/src/language/rename.d.ts +43 -15
  53. package/dist/src/language/rename.d.ts.map +1 -1
  54. package/dist/src/language/rename.js.map +1 -1
  55. package/dist/src/language/semanticModel.d.ts +14 -19
  56. package/dist/src/language/semanticModel.d.ts.map +1 -1
  57. package/dist/src/language/semanticModel.js.map +1 -1
  58. package/dist/src/language/symbols.d.ts +2 -3
  59. package/dist/src/language/symbols.d.ts.map +1 -1
  60. package/dist/src/language/symbols.js.map +1 -1
  61. package/dist/src/language/types.d.ts +0 -44
  62. package/dist/src/language/types.d.ts.map +1 -1
  63. package/dist/src/language/utils.d.ts +20 -18
  64. package/dist/src/language/utils.d.ts.map +1 -1
  65. package/dist/src/language/utils.js.map +1 -1
  66. package/dist/src/layout/dagre.d.ts +2 -2
  67. package/dist/src/layout/dagre.d.ts.map +1 -1
  68. package/dist/src/layout/dagre.js +14 -55
  69. package/dist/src/layout/dagre.js.map +1 -1
  70. package/dist/src/layout/index.d.ts +1 -9
  71. package/dist/src/layout/index.d.ts.map +1 -1
  72. package/dist/src/layout/index.js +1 -10
  73. package/dist/src/layout/index.js.map +1 -1
  74. package/dist/src/layout/simple.d.ts +1 -1
  75. package/dist/src/layout/simple.d.ts.map +1 -1
  76. package/dist/src/layout/simple.js +20 -166
  77. package/dist/src/layout/simple.js.map +1 -1
  78. package/dist/src/layout/types.d.ts +0 -1
  79. package/dist/src/layout/types.d.ts.map +1 -1
  80. package/dist/src/lexer.d.ts +0 -3
  81. package/dist/src/lexer.d.ts.map +1 -1
  82. package/dist/src/lexer.js +13 -54
  83. package/dist/src/lexer.js.map +1 -1
  84. package/dist/src/lsp/documents.d.ts +8 -17
  85. package/dist/src/lsp/documents.d.ts.map +1 -1
  86. package/dist/src/lsp/documents.js.map +1 -1
  87. package/dist/src/lsp/server.d.ts +138 -63
  88. package/dist/src/lsp/server.d.ts.map +1 -1
  89. package/dist/src/lsp/server.js.map +1 -1
  90. package/dist/src/lsp/utils.d.ts +13 -20
  91. package/dist/src/lsp/utils.d.ts.map +1 -1
  92. package/dist/src/lsp/utils.js.map +1 -1
  93. package/dist/src/parser.d.ts +94 -68
  94. package/dist/src/parser.d.ts.map +1 -1
  95. package/dist/src/parser.js.map +1 -1
  96. package/dist/src/pipeline.d.ts +0 -20
  97. package/dist/src/pipeline.d.ts.map +1 -1
  98. package/dist/src/pipeline.js +2 -28
  99. package/dist/src/pipeline.js.map +1 -1
  100. package/dist/src/range.d.ts +2 -5
  101. package/dist/src/range.d.ts.map +1 -1
  102. package/dist/src/range.js +0 -7
  103. package/dist/src/range.js.map +1 -1
  104. package/dist/src/render/shapes.d.ts +0 -8
  105. package/dist/src/render/shapes.d.ts.map +1 -1
  106. package/dist/src/render/shapes.js +13 -60
  107. package/dist/src/render/shapes.js.map +1 -1
  108. package/dist/src/render/svg.d.ts +0 -9
  109. package/dist/src/render/svg.d.ts.map +1 -1
  110. package/dist/src/render/svg.js +18 -83
  111. package/dist/src/render/svg.js.map +1 -1
  112. package/dist/src/security/url.d.ts +2 -2
  113. package/dist/src/security/url.d.ts.map +1 -1
  114. package/dist/src/security/url.js.map +1 -1
  115. package/dist/src/types.d.ts +3 -45
  116. package/dist/src/types.d.ts.map +1 -1
  117. package/dist/src/types.js +0 -5
  118. package/dist/src/types.js.map +1 -1
  119. package/dist/src/validator.d.ts +4 -33
  120. package/dist/src/validator.d.ts.map +1 -1
  121. package/dist/src/validator.js +4 -2
  122. package/dist/src/validator.js.map +1 -1
  123. 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 bounded relaxation
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,EAAwB,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAuC,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;IAuL1C,OAAO,CAAC,YAAY;IAyGpB,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,iBAAiB;IAiHzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;CAiFtB"}
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 bounded relaxation
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
- // Compute max extents from positioned nodes
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
- if (predRank > maxPred)
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
- const sz = nodeSizes.get(id);
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
- // Compute bounds for TB to allow flipping
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; // since tbHeight is the extent in y direction which becomes x
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 { // RL
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 }, // bottom
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; // space for group label
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
- // Ensure width handles type decorations: database needs extra for cylinder? Keep same
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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"}
@@ -41,7 +41,6 @@ export interface LayoutGroup {
41
41
  height: number;
42
42
  data: import("../types.js").FloeGroup;
43
43
  memberIds: string[];
44
- /** child group ids? */
45
44
  children: LayoutGroup[];
46
45
  }
47
46
  export interface LayoutResult {