likec4 1.58.0 → 1.59.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.
Files changed (63) hide show
  1. package/__app__/codegen/webcomponent.mjs +14 -14
  2. package/__app__/src/chunks/AIChat.mjs +153 -156
  3. package/__app__/src/chunks/LikeC4Styles.mjs +1553 -1255
  4. package/__app__/src/chunks/ProjectsOverview.mjs +127 -130
  5. package/__app__/src/chunks/hooks.mjs +419 -106
  6. package/__app__/src/chunks/libs/@floating-ui.mjs +8 -8
  7. package/__app__/src/chunks/libs/@mantine.mjs +3039 -2135
  8. package/__app__/src/chunks/libs/@tanstack-ai.mjs +4 -4
  9. package/__app__/src/chunks/libs/@tanstack.mjs +93 -118
  10. package/__app__/src/chunks/libs/@xstate/react.mjs +30 -16
  11. package/__app__/src/chunks/libs/@xyflow/react.mjs +50 -26
  12. package/__app__/src/chunks/libs/bezier-js.mjs +11 -8
  13. package/__app__/src/chunks/libs/framer.mjs +1188 -1155
  14. package/__app__/src/chunks/libs/zod.mjs +191 -188
  15. package/__app__/src/chunks/rolldown-runtime.mjs +8 -1
  16. package/__app__/src/chunks/styled-system.mjs +23 -16
  17. package/__app__/src/main.mjs +22275 -9432
  18. package/__app__/src/style.css +1 -1
  19. package/dist/chunks/dist.mjs +10 -0
  20. package/dist/chunks/enableServer.mjs +1 -1
  21. package/dist/chunks/index.d.mts +9 -9
  22. package/dist/chunks/index2.d.mts +386 -229
  23. package/dist/chunks/libs/@chevrotain/gast.mjs +1 -1
  24. package/dist/chunks/libs/@chevrotain/regexp-to-ast.mjs +1 -1
  25. package/dist/chunks/libs/@logtape/logtape.mjs +3 -3
  26. package/dist/chunks/libs/@ts-graphviz/common.d.mts +1 -2
  27. package/dist/chunks/libs/@ts-graphviz/core.mjs +1 -1
  28. package/dist/chunks/libs/chevrotain-allstar.mjs +1 -1
  29. package/dist/chunks/libs/chevrotain.mjs +4 -4
  30. package/dist/chunks/libs/json5.mjs +1 -1
  31. package/dist/chunks/libs/langium.d.mts +2940 -2914
  32. package/dist/chunks/libs/langium.mjs +9 -9
  33. package/dist/chunks/libs/merge-error-cause.mjs +1 -1
  34. package/dist/chunks/libs/p-queue.mjs +1 -1
  35. package/dist/chunks/libs/package-manager-detector.mjs +1 -1
  36. package/dist/chunks/libs/pako.mjs +1 -1
  37. package/dist/chunks/libs/picomatch.mjs +1 -1
  38. package/dist/chunks/libs/remeda.mjs +1 -1
  39. package/dist/chunks/libs/unstorage.d.mts +1 -0
  40. package/dist/chunks/libs/which.mjs +1 -1
  41. package/dist/chunks/libs/zod.d.mts +48 -36
  42. package/dist/chunks/libs/zod.mjs +4 -4
  43. package/dist/chunks/logger.mjs +1 -0
  44. package/dist/chunks/node.mjs +57 -66
  45. package/dist/chunks/rolldown-runtime.mjs +1 -1
  46. package/dist/chunks/sequence-view.mjs +1 -1
  47. package/dist/chunks/vite-plugin.mjs +43 -43
  48. package/dist/cli/index.mjs +159 -157
  49. package/dist/index.d.mts +2 -3
  50. package/dist/index.mjs +1 -1
  51. package/dist/model/index.d.mts +5 -4
  52. package/dist/vite-plugin/index.d.mts +6 -9
  53. package/dist/vite-plugin/internal/index.d.mts +15 -10
  54. package/package.json +37 -37
  55. package/react/index.d.mts +761 -111
  56. package/react/index.mjs +13974 -10232
  57. package/__app__/src/chunks/DiagramActorProvider.mjs +0 -7638
  58. package/__app__/src/chunks/Markdown.mjs +0 -146
  59. package/__app__/src/chunks/NavigationPanel.mjs +0 -61
  60. package/__app__/src/chunks/adhoc-editor.mjs +0 -3386
  61. package/__app__/src/chunks/libs/@dagrejs/dagre.mjs +0 -1894
  62. package/__app__/src/chunks/libs/@tabler/icons-react.mjs +0 -252
  63. package/__app__/src/chunks/libs/remeda.mjs +0 -642
@@ -1,1894 +0,0 @@
1
- import { t as e } from "../../rolldown-runtime.mjs";
2
- //#region ../../node_modules/.pnpm/@dagrejs+graphlib@2.2.4/node_modules/@dagrejs/graphlib/lib/graph.js
3
- var t = /* @__PURE__ */ e(((e, t) => {
4
- var n = "\0", r = "\0", i = "", Graph = class {
5
- _isDirected = !0;
6
- _isMultigraph = !1;
7
- _isCompound = !1;
8
- _label;
9
- _defaultNodeLabelFn = () => void 0;
10
- _defaultEdgeLabelFn = () => void 0;
11
- _nodes = {};
12
- _in = {};
13
- _preds = {};
14
- _out = {};
15
- _sucs = {};
16
- _edgeObjs = {};
17
- _edgeLabels = {};
18
- _nodeCount = 0;
19
- _edgeCount = 0;
20
- _parent;
21
- _children;
22
- constructor(e) {
23
- e && (this._isDirected = Object.hasOwn(e, "directed") ? e.directed : !0, this._isMultigraph = Object.hasOwn(e, "multigraph") ? e.multigraph : !1, this._isCompound = Object.hasOwn(e, "compound") ? e.compound : !1), this._isCompound && (this._parent = {}, this._children = {}, this._children[r] = {});
24
- }
25
- isDirected() {
26
- return this._isDirected;
27
- }
28
- isMultigraph() {
29
- return this._isMultigraph;
30
- }
31
- isCompound() {
32
- return this._isCompound;
33
- }
34
- setGraph(e) {
35
- return this._label = e, this;
36
- }
37
- graph() {
38
- return this._label;
39
- }
40
- setDefaultNodeLabel(e) {
41
- return this._defaultNodeLabelFn = e, typeof e != "function" && (this._defaultNodeLabelFn = () => e), this;
42
- }
43
- nodeCount() {
44
- return this._nodeCount;
45
- }
46
- nodes() {
47
- return Object.keys(this._nodes);
48
- }
49
- sources() {
50
- var e = this;
51
- return this.nodes().filter((t) => Object.keys(e._in[t]).length === 0);
52
- }
53
- sinks() {
54
- var e = this;
55
- return this.nodes().filter((t) => Object.keys(e._out[t]).length === 0);
56
- }
57
- setNodes(e, t) {
58
- var n = arguments, r = this;
59
- return e.forEach(function(e) {
60
- n.length > 1 ? r.setNode(e, t) : r.setNode(e);
61
- }), this;
62
- }
63
- setNode(e, t) {
64
- return Object.hasOwn(this._nodes, e) ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = r, this._children[e] = {}, this._children[r][e] = !0), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this);
65
- }
66
- node(e) {
67
- return this._nodes[e];
68
- }
69
- hasNode(e) {
70
- return Object.hasOwn(this._nodes, e);
71
- }
72
- removeNode(e) {
73
- var t = this;
74
- if (Object.hasOwn(this._nodes, e)) {
75
- var removeEdge = (e) => t.removeEdge(t._edgeObjs[e]);
76
- delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], this.children(e).forEach(function(e) {
77
- t.setParent(e);
78
- }), delete this._children[e]), Object.keys(this._in[e]).forEach(removeEdge), delete this._in[e], delete this._preds[e], Object.keys(this._out[e]).forEach(removeEdge), delete this._out[e], delete this._sucs[e], --this._nodeCount;
79
- }
80
- return this;
81
- }
82
- setParent(e, t) {
83
- if (!this._isCompound) throw Error("Cannot set parent in a non-compound graph");
84
- if (t === void 0) t = r;
85
- else {
86
- t += "";
87
- for (var n = t; n !== void 0; n = this.parent(n)) if (n === e) throw Error("Setting " + t + " as parent of " + e + " would create a cycle");
88
- this.setNode(t);
89
- }
90
- return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = !0, this;
91
- }
92
- _removeFromParentsChildList(e) {
93
- delete this._children[this._parent[e]][e];
94
- }
95
- parent(e) {
96
- if (this._isCompound) {
97
- var t = this._parent[e];
98
- if (t !== r) return t;
99
- }
100
- }
101
- children(e = r) {
102
- if (this._isCompound) {
103
- var t = this._children[e];
104
- if (t) return Object.keys(t);
105
- } else if (e === r) return this.nodes();
106
- else if (this.hasNode(e)) return [];
107
- }
108
- predecessors(e) {
109
- var t = this._preds[e];
110
- if (t) return Object.keys(t);
111
- }
112
- successors(e) {
113
- var t = this._sucs[e];
114
- if (t) return Object.keys(t);
115
- }
116
- neighbors(e) {
117
- var t = this.predecessors(e);
118
- if (t) {
119
- let r = new Set(t);
120
- for (var n of this.successors(e)) r.add(n);
121
- return Array.from(r.values());
122
- }
123
- }
124
- isLeaf(e) {
125
- return (this.isDirected() ? this.successors(e) : this.neighbors(e)).length === 0;
126
- }
127
- filterNodes(e) {
128
- var t = new this.constructor({
129
- directed: this._isDirected,
130
- multigraph: this._isMultigraph,
131
- compound: this._isCompound
132
- });
133
- t.setGraph(this.graph());
134
- var n = this;
135
- Object.entries(this._nodes).forEach(function([n, r]) {
136
- e(n) && t.setNode(n, r);
137
- }), Object.values(this._edgeObjs).forEach(function(e) {
138
- t.hasNode(e.v) && t.hasNode(e.w) && t.setEdge(e, n.edge(e));
139
- });
140
- var r = {};
141
- function findParent(e) {
142
- var i = n.parent(e);
143
- return i === void 0 || t.hasNode(i) ? (r[e] = i, i) : i in r ? r[i] : findParent(i);
144
- }
145
- return this._isCompound && t.nodes().forEach((e) => t.setParent(e, findParent(e))), t;
146
- }
147
- setDefaultEdgeLabel(e) {
148
- return this._defaultEdgeLabelFn = e, typeof e != "function" && (this._defaultEdgeLabelFn = () => e), this;
149
- }
150
- edgeCount() {
151
- return this._edgeCount;
152
- }
153
- edges() {
154
- return Object.values(this._edgeObjs);
155
- }
156
- setPath(e, t) {
157
- var n = this, r = arguments;
158
- return e.reduce(function(e, i) {
159
- return r.length > 1 ? n.setEdge(e, i, t) : n.setEdge(e, i), i;
160
- }), this;
161
- }
162
- setEdge() {
163
- var e, t, n, r, i = !1, a = arguments[0];
164
- typeof a == "object" && a && "v" in a ? (e = a.v, t = a.w, n = a.name, arguments.length === 2 && (r = arguments[1], i = !0)) : (e = a, t = arguments[1], n = arguments[3], arguments.length > 2 && (r = arguments[2], i = !0)), e = "" + e, t = "" + t, n !== void 0 && (n = "" + n);
165
- var o = edgeArgsToId(this._isDirected, e, t, n);
166
- if (Object.hasOwn(this._edgeLabels, o)) return i && (this._edgeLabels[o] = r), this;
167
- if (n !== void 0 && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
168
- this.setNode(e), this.setNode(t), this._edgeLabels[o] = i ? r : this._defaultEdgeLabelFn(e, t, n);
169
- var s = edgeArgsToObj(this._isDirected, e, t, n);
170
- return e = s.v, t = s.w, Object.freeze(s), this._edgeObjs[o] = s, incrementOrInitEntry(this._preds[t], e), incrementOrInitEntry(this._sucs[e], t), this._in[t][o] = s, this._out[e][o] = s, this._edgeCount++, this;
171
- }
172
- edge(e, t, n) {
173
- var r = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, e, t, n);
174
- return this._edgeLabels[r];
175
- }
176
- edgeAsObj() {
177
- let e = this.edge(...arguments);
178
- return typeof e == "object" ? e : { label: e };
179
- }
180
- hasEdge(e, t, n) {
181
- var r = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, e, t, n);
182
- return Object.hasOwn(this._edgeLabels, r);
183
- }
184
- removeEdge(e, t, n) {
185
- var r = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, e, t, n), i = this._edgeObjs[r];
186
- return i && (e = i.v, t = i.w, delete this._edgeLabels[r], delete this._edgeObjs[r], decrementOrRemoveEntry(this._preds[t], e), decrementOrRemoveEntry(this._sucs[e], t), delete this._in[t][r], delete this._out[e][r], this._edgeCount--), this;
187
- }
188
- inEdges(e, t) {
189
- var n = this._in[e];
190
- if (n) {
191
- var r = Object.values(n);
192
- return t ? r.filter((e) => e.v === t) : r;
193
- }
194
- }
195
- outEdges(e, t) {
196
- var n = this._out[e];
197
- if (n) {
198
- var r = Object.values(n);
199
- return t ? r.filter((e) => e.w === t) : r;
200
- }
201
- }
202
- nodeEdges(e, t) {
203
- var n = this.inEdges(e, t);
204
- if (n) return n.concat(this.outEdges(e, t));
205
- }
206
- };
207
- function incrementOrInitEntry(e, t) {
208
- e[t] ? e[t]++ : e[t] = 1;
209
- }
210
- function decrementOrRemoveEntry(e, t) {
211
- --e[t] || delete e[t];
212
- }
213
- function edgeArgsToId(e, t, r, a) {
214
- var o = "" + t, s = "" + r;
215
- if (!e && o > s) {
216
- var c = o;
217
- o = s, s = c;
218
- }
219
- return o + i + s + i + (a === void 0 ? n : a);
220
- }
221
- function edgeArgsToObj(e, t, n, r) {
222
- var i = "" + t, a = "" + n;
223
- if (!e && i > a) {
224
- var o = i;
225
- i = a, a = o;
226
- }
227
- var s = {
228
- v: i,
229
- w: a
230
- };
231
- return r && (s.name = r), s;
232
- }
233
- function edgeObjToId(e, t) {
234
- return edgeArgsToId(e, t.v, t.w, t.name);
235
- }
236
- t.exports = Graph;
237
- })), n = /* @__PURE__ */ e(((e, t) => {
238
- t.exports = "2.2.4";
239
- })), r = /* @__PURE__ */ e(((e, r) => {
240
- r.exports = {
241
- Graph: t(),
242
- version: n()
243
- };
244
- })), i = /* @__PURE__ */ e(((e, n) => {
245
- var r = t();
246
- n.exports = {
247
- write,
248
- read
249
- };
250
- function write(e) {
251
- var t = {
252
- options: {
253
- directed: e.isDirected(),
254
- multigraph: e.isMultigraph(),
255
- compound: e.isCompound()
256
- },
257
- nodes: writeNodes(e),
258
- edges: writeEdges(e)
259
- };
260
- return e.graph() !== void 0 && (t.value = structuredClone(e.graph())), t;
261
- }
262
- function writeNodes(e) {
263
- return e.nodes().map(function(t) {
264
- var n = e.node(t), r = e.parent(t), i = { v: t };
265
- return n !== void 0 && (i.value = n), r !== void 0 && (i.parent = r), i;
266
- });
267
- }
268
- function writeEdges(e) {
269
- return e.edges().map(function(t) {
270
- var n = e.edge(t), r = {
271
- v: t.v,
272
- w: t.w
273
- };
274
- return t.name !== void 0 && (r.name = t.name), n !== void 0 && (r.value = n), r;
275
- });
276
- }
277
- function read(e) {
278
- var t = new r(e.options).setGraph(e.value);
279
- return e.nodes.forEach(function(e) {
280
- t.setNode(e.v, e.value), e.parent && t.setParent(e.v, e.parent);
281
- }), e.edges.forEach(function(e) {
282
- t.setEdge({
283
- v: e.v,
284
- w: e.w,
285
- name: e.name
286
- }, e.value);
287
- }), t;
288
- }
289
- })), a = /* @__PURE__ */ e(((e, t) => {
290
- t.exports = components;
291
- function components(e) {
292
- var t = {}, n = [], r;
293
- function dfs(n) {
294
- Object.hasOwn(t, n) || (t[n] = !0, r.push(n), e.successors(n).forEach(dfs), e.predecessors(n).forEach(dfs));
295
- }
296
- return e.nodes().forEach(function(e) {
297
- r = [], dfs(e), r.length && n.push(r);
298
- }), n;
299
- }
300
- })), o = /* @__PURE__ */ e(((e, t) => {
301
- var PriorityQueue = class {
302
- _arr = [];
303
- _keyIndices = {};
304
- size() {
305
- return this._arr.length;
306
- }
307
- keys() {
308
- return this._arr.map(function(e) {
309
- return e.key;
310
- });
311
- }
312
- has(e) {
313
- return Object.hasOwn(this._keyIndices, e);
314
- }
315
- priority(e) {
316
- var t = this._keyIndices[e];
317
- if (t !== void 0) return this._arr[t].priority;
318
- }
319
- min() {
320
- if (this.size() === 0) throw Error("Queue underflow");
321
- return this._arr[0].key;
322
- }
323
- add(e, t) {
324
- var n = this._keyIndices;
325
- if (e = String(e), !Object.hasOwn(n, e)) {
326
- var r = this._arr, i = r.length;
327
- return n[e] = i, r.push({
328
- key: e,
329
- priority: t
330
- }), this._decrease(i), !0;
331
- }
332
- return !1;
333
- }
334
- removeMin() {
335
- this._swap(0, this._arr.length - 1);
336
- var e = this._arr.pop();
337
- return delete this._keyIndices[e.key], this._heapify(0), e.key;
338
- }
339
- decrease(e, t) {
340
- var n = this._keyIndices[e];
341
- if (t > this._arr[n].priority) throw Error("New priority is greater than current priority. Key: " + e + " Old: " + this._arr[n].priority + " New: " + t);
342
- this._arr[n].priority = t, this._decrease(n);
343
- }
344
- _heapify(e) {
345
- var t = this._arr, n = 2 * e, r = n + 1, i = e;
346
- n < t.length && (i = t[n].priority < t[i].priority ? n : i, r < t.length && (i = t[r].priority < t[i].priority ? r : i), i !== e && (this._swap(e, i), this._heapify(i)));
347
- }
348
- _decrease(e) {
349
- for (var t = this._arr, n = t[e].priority, r; e !== 0 && (r = e >> 1, !(t[r].priority < n));) this._swap(e, r), e = r;
350
- }
351
- _swap(e, t) {
352
- var n = this._arr, r = this._keyIndices, i = n[e], a = n[t];
353
- n[e] = a, n[t] = i, r[a.key] = e, r[i.key] = t;
354
- }
355
- };
356
- t.exports = PriorityQueue;
357
- })), s = /* @__PURE__ */ e(((e, t) => {
358
- var n = o();
359
- t.exports = dijkstra;
360
- var DEFAULT_WEIGHT_FUNC = () => 1;
361
- function dijkstra(e, t, n, r) {
362
- return runDijkstra(e, String(t), n || DEFAULT_WEIGHT_FUNC, r || function(t) {
363
- return e.outEdges(t);
364
- });
365
- }
366
- function runDijkstra(e, t, r, i) {
367
- var a = {}, o = new n(), s, c, updateNeighbors = function(e) {
368
- var t = e.v === s ? e.w : e.v, n = a[t], i = r(e), l = c.distance + i;
369
- if (i < 0) throw Error("dijkstra does not allow negative edge weights. Bad edge: " + e + " Weight: " + i);
370
- l < n.distance && (n.distance = l, n.predecessor = s, o.decrease(t, l));
371
- };
372
- for (e.nodes().forEach(function(e) {
373
- var n = e === t ? 0 : Infinity;
374
- a[e] = { distance: n }, o.add(e, n);
375
- }); o.size() > 0 && (s = o.removeMin(), c = a[s], c.distance !== Infinity);) i(s).forEach(updateNeighbors);
376
- return a;
377
- }
378
- })), c = /* @__PURE__ */ e(((e, t) => {
379
- var n = s();
380
- t.exports = dijkstraAll;
381
- function dijkstraAll(e, t, r) {
382
- return e.nodes().reduce(function(i, a) {
383
- return i[a] = n(e, a, t, r), i;
384
- }, {});
385
- }
386
- })), l = /* @__PURE__ */ e(((e, t) => {
387
- t.exports = tarjan;
388
- function tarjan(e) {
389
- var t = 0, n = [], r = {}, i = [];
390
- function dfs(a) {
391
- var o = r[a] = {
392
- onStack: !0,
393
- lowlink: t,
394
- index: t++
395
- };
396
- if (n.push(a), e.successors(a).forEach(function(e) {
397
- Object.hasOwn(r, e) ? r[e].onStack && (o.lowlink = Math.min(o.lowlink, r[e].index)) : (dfs(e), o.lowlink = Math.min(o.lowlink, r[e].lowlink));
398
- }), o.lowlink === o.index) {
399
- var s = [], c;
400
- do
401
- c = n.pop(), r[c].onStack = !1, s.push(c);
402
- while (a !== c);
403
- i.push(s);
404
- }
405
- }
406
- return e.nodes().forEach(function(e) {
407
- Object.hasOwn(r, e) || dfs(e);
408
- }), i;
409
- }
410
- })), u = /* @__PURE__ */ e(((e, t) => {
411
- var n = l();
412
- t.exports = findCycles;
413
- function findCycles(e) {
414
- return n(e).filter(function(t) {
415
- return t.length > 1 || t.length === 1 && e.hasEdge(t[0], t[0]);
416
- });
417
- }
418
- })), d = /* @__PURE__ */ e(((e, t) => {
419
- t.exports = floydWarshall;
420
- var DEFAULT_WEIGHT_FUNC = () => 1;
421
- function floydWarshall(e, t, n) {
422
- return runFloydWarshall(e, t || DEFAULT_WEIGHT_FUNC, n || function(t) {
423
- return e.outEdges(t);
424
- });
425
- }
426
- function runFloydWarshall(e, t, n) {
427
- var r = {}, i = e.nodes();
428
- return i.forEach(function(e) {
429
- r[e] = {}, r[e][e] = { distance: 0 }, i.forEach(function(t) {
430
- e !== t && (r[e][t] = { distance: Infinity });
431
- }), n(e).forEach(function(n) {
432
- var i = n.v === e ? n.w : n.v, a = t(n);
433
- r[e][i] = {
434
- distance: a,
435
- predecessor: e
436
- };
437
- });
438
- }), i.forEach(function(e) {
439
- var t = r[e];
440
- i.forEach(function(n) {
441
- var a = r[n];
442
- i.forEach(function(n) {
443
- var r = a[e], i = t[n], o = a[n], s = r.distance + i.distance;
444
- s < o.distance && (o.distance = s, o.predecessor = i.predecessor);
445
- });
446
- });
447
- }), r;
448
- }
449
- })), f = /* @__PURE__ */ e(((e, t) => {
450
- function topsort(e) {
451
- var t = {}, n = {}, r = [];
452
- function visit(i) {
453
- if (Object.hasOwn(n, i)) throw new CycleException();
454
- Object.hasOwn(t, i) || (n[i] = !0, t[i] = !0, e.predecessors(i).forEach(visit), delete n[i], r.push(i));
455
- }
456
- if (e.sinks().forEach(visit), Object.keys(t).length !== e.nodeCount()) throw new CycleException();
457
- return r;
458
- }
459
- var CycleException = class extends Error {
460
- constructor() {
461
- super(...arguments);
462
- }
463
- };
464
- t.exports = topsort, topsort.CycleException = CycleException;
465
- })), p = /* @__PURE__ */ e(((e, t) => {
466
- var n = f();
467
- t.exports = isAcyclic;
468
- function isAcyclic(e) {
469
- try {
470
- n(e);
471
- } catch (e) {
472
- if (e instanceof n.CycleException) return !1;
473
- throw e;
474
- }
475
- return !0;
476
- }
477
- })), m = /* @__PURE__ */ e(((e, t) => {
478
- t.exports = dfs;
479
- function dfs(e, t, n) {
480
- Array.isArray(t) || (t = [t]);
481
- var r = e.isDirected() ? (t) => e.successors(t) : (t) => e.neighbors(t), i = n === "post" ? postOrderDfs : preOrderDfs, a = [], o = {};
482
- return t.forEach((t) => {
483
- if (!e.hasNode(t)) throw Error("Graph does not have node: " + t);
484
- i(t, r, o, a);
485
- }), a;
486
- }
487
- function postOrderDfs(e, t, n, r) {
488
- for (var i = [[e, !1]]; i.length > 0;) {
489
- var a = i.pop();
490
- a[1] ? r.push(a[0]) : Object.hasOwn(n, a[0]) || (n[a[0]] = !0, i.push([a[0], !0]), forEachRight(t(a[0]), (e) => i.push([e, !1])));
491
- }
492
- }
493
- function preOrderDfs(e, t, n, r) {
494
- for (var i = [e]; i.length > 0;) {
495
- var a = i.pop();
496
- Object.hasOwn(n, a) || (n[a] = !0, r.push(a), forEachRight(t(a), (e) => i.push(e)));
497
- }
498
- }
499
- function forEachRight(e, t) {
500
- for (var n = e.length; n--;) t(e[n], n, e);
501
- return e;
502
- }
503
- })), h = /* @__PURE__ */ e(((e, t) => {
504
- var n = m();
505
- t.exports = postorder;
506
- function postorder(e, t) {
507
- return n(e, t, "post");
508
- }
509
- })), g = /* @__PURE__ */ e(((e, t) => {
510
- var n = m();
511
- t.exports = preorder;
512
- function preorder(e, t) {
513
- return n(e, t, "pre");
514
- }
515
- })), _ = /* @__PURE__ */ e(((e, n) => {
516
- var r = t(), i = o();
517
- n.exports = prim;
518
- function prim(e, t) {
519
- var n = new r(), a = {}, o = new i(), s;
520
- function updateNeighbors(e) {
521
- var n = e.v === s ? e.w : e.v, r = o.priority(n);
522
- if (r !== void 0) {
523
- var i = t(e);
524
- i < r && (a[n] = s, o.decrease(n, i));
525
- }
526
- }
527
- if (e.nodeCount() === 0) return n;
528
- e.nodes().forEach(function(e) {
529
- o.add(e, Infinity), n.setNode(e);
530
- }), o.decrease(e.nodes()[0], 0);
531
- for (var c = !1; o.size() > 0;) {
532
- if (s = o.removeMin(), Object.hasOwn(a, s)) n.setEdge(s, a[s]);
533
- else if (c) throw Error("Input graph is not connected: " + e);
534
- else c = !0;
535
- e.nodeEdges(s).forEach(updateNeighbors);
536
- }
537
- return n;
538
- }
539
- })), v = /* @__PURE__ */ e(((e, t) => {
540
- t.exports = {
541
- components: a(),
542
- dijkstra: s(),
543
- dijkstraAll: c(),
544
- findCycles: u(),
545
- floydWarshall: d(),
546
- isAcyclic: p(),
547
- postorder: h(),
548
- preorder: g(),
549
- prim: _(),
550
- tarjan: l(),
551
- topsort: f()
552
- };
553
- })), y = /* @__PURE__ */ e(((e, t) => {
554
- var n = r();
555
- t.exports = {
556
- Graph: n.Graph,
557
- json: i(),
558
- alg: v(),
559
- version: n.version
560
- };
561
- })), b = /* @__PURE__ */ e(((e, t) => {
562
- var List = class {
563
- constructor() {
564
- let e = {};
565
- e._next = e._prev = e, this._sentinel = e;
566
- }
567
- dequeue() {
568
- let e = this._sentinel, t = e._prev;
569
- if (t !== e) return unlink(t), t;
570
- }
571
- enqueue(e) {
572
- let t = this._sentinel;
573
- e._prev && e._next && unlink(e), e._next = t._next, t._next._prev = e, t._next = e, e._prev = t;
574
- }
575
- toString() {
576
- let e = [], t = this._sentinel, n = t._prev;
577
- for (; n !== t;) e.push(JSON.stringify(n, filterOutLinks)), n = n._prev;
578
- return "[" + e.join(", ") + "]";
579
- }
580
- };
581
- function unlink(e) {
582
- e._prev._next = e._next, e._next._prev = e._prev, delete e._next, delete e._prev;
583
- }
584
- function filterOutLinks(e, t) {
585
- if (e !== "_next" && e !== "_prev") return t;
586
- }
587
- t.exports = List;
588
- })), x = /* @__PURE__ */ e(((e, t) => {
589
- var n = y().Graph, r = b();
590
- t.exports = greedyFAS;
591
- var DEFAULT_WEIGHT_FN = () => 1;
592
- function greedyFAS(e, t) {
593
- if (e.nodeCount() <= 1) return [];
594
- let n = buildState(e, t || DEFAULT_WEIGHT_FN);
595
- return doGreedyFAS(n.graph, n.buckets, n.zeroIdx).flatMap((t) => e.outEdges(t.v, t.w));
596
- }
597
- function doGreedyFAS(e, t, n) {
598
- let r = [], i = t[t.length - 1], a = t[0], o;
599
- for (; e.nodeCount();) {
600
- for (; o = a.dequeue();) removeNode(e, t, n, o);
601
- for (; o = i.dequeue();) removeNode(e, t, n, o);
602
- if (e.nodeCount()) {
603
- for (let i = t.length - 2; i > 0; --i) if (o = t[i].dequeue(), o) {
604
- r = r.concat(removeNode(e, t, n, o, !0));
605
- break;
606
- }
607
- }
608
- }
609
- return r;
610
- }
611
- function removeNode(e, t, n, r, i) {
612
- let a = i ? [] : void 0;
613
- return e.inEdges(r.v).forEach((r) => {
614
- let o = e.edge(r), s = e.node(r.v);
615
- i && a.push({
616
- v: r.v,
617
- w: r.w
618
- }), s.out -= o, assignBucket(t, n, s);
619
- }), e.outEdges(r.v).forEach((r) => {
620
- let i = e.edge(r), a = r.w, o = e.node(a);
621
- o.in -= i, assignBucket(t, n, o);
622
- }), e.removeNode(r.v), a;
623
- }
624
- function buildState(e, t) {
625
- let i = new n(), a = 0, o = 0;
626
- e.nodes().forEach((e) => {
627
- i.setNode(e, {
628
- v: e,
629
- in: 0,
630
- out: 0
631
- });
632
- }), e.edges().forEach((e) => {
633
- let n = i.edge(e.v, e.w) || 0, r = t(e), s = n + r;
634
- i.setEdge(e.v, e.w, s), o = Math.max(o, i.node(e.v).out += r), a = Math.max(a, i.node(e.w).in += r);
635
- });
636
- let s = range(o + a + 3).map(() => new r()), c = a + 1;
637
- return i.nodes().forEach((e) => {
638
- assignBucket(s, c, i.node(e));
639
- }), {
640
- graph: i,
641
- buckets: s,
642
- zeroIdx: c
643
- };
644
- }
645
- function assignBucket(e, t, n) {
646
- n.out ? n.in ? e[n.out - n.in + t].enqueue(n) : e[e.length - 1].enqueue(n) : e[0].enqueue(n);
647
- }
648
- function range(e) {
649
- let t = [];
650
- for (let n = 0; n < e; n++) t.push(n);
651
- return t;
652
- }
653
- })), S = /* @__PURE__ */ e(((e, t) => {
654
- var n = y().Graph;
655
- t.exports = {
656
- addBorderNode,
657
- addDummyNode,
658
- applyWithChunking,
659
- asNonCompoundGraph,
660
- buildLayerMatrix,
661
- intersectRect,
662
- mapValues,
663
- maxRank,
664
- normalizeRanks,
665
- notime,
666
- partition,
667
- pick,
668
- predecessorWeights,
669
- range,
670
- removeEmptyRanks,
671
- simplify,
672
- successorWeights,
673
- time,
674
- uniqueId,
675
- zipObject
676
- };
677
- function addDummyNode(e, t, n, r) {
678
- for (var i = r; e.hasNode(i);) i = uniqueId(r);
679
- return n.dummy = t, e.setNode(i, n), i;
680
- }
681
- function simplify(e) {
682
- let t = new n().setGraph(e.graph());
683
- return e.nodes().forEach((n) => t.setNode(n, e.node(n))), e.edges().forEach((n) => {
684
- let r = t.edge(n.v, n.w) || {
685
- weight: 0,
686
- minlen: 1
687
- }, i = e.edge(n);
688
- t.setEdge(n.v, n.w, {
689
- weight: r.weight + i.weight,
690
- minlen: Math.max(r.minlen, i.minlen)
691
- });
692
- }), t;
693
- }
694
- function asNonCompoundGraph(e) {
695
- let t = new n({ multigraph: e.isMultigraph() }).setGraph(e.graph());
696
- return e.nodes().forEach((n) => {
697
- e.children(n).length || t.setNode(n, e.node(n));
698
- }), e.edges().forEach((n) => {
699
- t.setEdge(n, e.edge(n));
700
- }), t;
701
- }
702
- function successorWeights(e) {
703
- let t = e.nodes().map((t) => {
704
- let n = {};
705
- return e.outEdges(t).forEach((t) => {
706
- n[t.w] = (n[t.w] || 0) + e.edge(t).weight;
707
- }), n;
708
- });
709
- return zipObject(e.nodes(), t);
710
- }
711
- function predecessorWeights(e) {
712
- let t = e.nodes().map((t) => {
713
- let n = {};
714
- return e.inEdges(t).forEach((t) => {
715
- n[t.v] = (n[t.v] || 0) + e.edge(t).weight;
716
- }), n;
717
- });
718
- return zipObject(e.nodes(), t);
719
- }
720
- function intersectRect(e, t) {
721
- let n = e.x, r = e.y, i = t.x - n, a = t.y - r, o = e.width / 2, s = e.height / 2;
722
- if (!i && !a) throw Error("Not possible to find intersection inside of the rectangle");
723
- let c, l;
724
- return Math.abs(a) * o > Math.abs(i) * s ? (a < 0 && (s = -s), c = s * i / a, l = s) : (i < 0 && (o = -o), c = o, l = o * a / i), {
725
- x: n + c,
726
- y: r + l
727
- };
728
- }
729
- function buildLayerMatrix(e) {
730
- let t = range(maxRank(e) + 1).map(() => []);
731
- return e.nodes().forEach((n) => {
732
- let r = e.node(n), i = r.rank;
733
- i !== void 0 && (t[i][r.order] = n);
734
- }), t;
735
- }
736
- function normalizeRanks(e) {
737
- let t = e.nodes().map((t) => {
738
- let n = e.node(t).rank;
739
- return n === void 0 ? Number.MAX_VALUE : n;
740
- }), n = applyWithChunking(Math.min, t);
741
- e.nodes().forEach((t) => {
742
- let r = e.node(t);
743
- Object.hasOwn(r, "rank") && (r.rank -= n);
744
- });
745
- }
746
- function removeEmptyRanks(e) {
747
- let t = e.nodes().map((t) => e.node(t).rank), n = applyWithChunking(Math.min, t), r = [];
748
- e.nodes().forEach((t) => {
749
- let i = e.node(t).rank - n;
750
- r[i] || (r[i] = []), r[i].push(t);
751
- });
752
- let i = 0, a = e.graph().nodeRankFactor;
753
- Array.from(r).forEach((t, n) => {
754
- t === void 0 && n % a !== 0 ? --i : t !== void 0 && i && t.forEach((t) => e.node(t).rank += i);
755
- });
756
- }
757
- function addBorderNode(e, t, n, r) {
758
- let i = {
759
- width: 0,
760
- height: 0
761
- };
762
- return arguments.length >= 4 && (i.rank = n, i.order = r), addDummyNode(e, "border", i, t);
763
- }
764
- function splitToChunks(e, t = r) {
765
- let n = [];
766
- for (let r = 0; r < e.length; r += t) {
767
- let i = e.slice(r, r + t);
768
- n.push(i);
769
- }
770
- return n;
771
- }
772
- var r = 65535;
773
- function applyWithChunking(e, t) {
774
- if (t.length > r) {
775
- let n = splitToChunks(t);
776
- return e.apply(null, n.map((t) => e.apply(null, t)));
777
- } else return e.apply(null, t);
778
- }
779
- function maxRank(e) {
780
- let t = e.nodes().map((t) => {
781
- let n = e.node(t).rank;
782
- return n === void 0 ? Number.MIN_VALUE : n;
783
- });
784
- return applyWithChunking(Math.max, t);
785
- }
786
- function partition(e, t) {
787
- let n = {
788
- lhs: [],
789
- rhs: []
790
- };
791
- return e.forEach((e) => {
792
- t(e) ? n.lhs.push(e) : n.rhs.push(e);
793
- }), n;
794
- }
795
- function time(e, t) {
796
- let n = Date.now();
797
- try {
798
- return t();
799
- } finally {
800
- console.log(e + " time: " + (Date.now() - n) + "ms");
801
- }
802
- }
803
- function notime(e, t) {
804
- return t();
805
- }
806
- var i = 0;
807
- function uniqueId(e) {
808
- return e + ("" + ++i);
809
- }
810
- function range(e, t, n = 1) {
811
- t ?? (t = e, e = 0);
812
- let endCon = (e) => e < t;
813
- n < 0 && (endCon = (e) => t < e);
814
- let r = [];
815
- for (let t = e; endCon(t); t += n) r.push(t);
816
- return r;
817
- }
818
- function pick(e, t) {
819
- let n = {};
820
- for (let r of t) e[r] !== void 0 && (n[r] = e[r]);
821
- return n;
822
- }
823
- function mapValues(e, t) {
824
- let func = t;
825
- return typeof t == "string" && (func = (e) => e[t]), Object.entries(e).reduce((e, [t, n]) => (e[t] = func(n, t), e), {});
826
- }
827
- function zipObject(e, t) {
828
- return e.reduce((e, n, r) => (e[n] = t[r], e), {});
829
- }
830
- })), C = /* @__PURE__ */ e(((e, t) => {
831
- var n = x(), r = S().uniqueId;
832
- t.exports = {
833
- run,
834
- undo
835
- };
836
- function run(e) {
837
- (e.graph().acyclicer === "greedy" ? n(e, weightFn(e)) : dfsFAS(e)).forEach((t) => {
838
- let n = e.edge(t);
839
- e.removeEdge(t), n.forwardName = t.name, n.reversed = !0, e.setEdge(t.w, t.v, n, r("rev"));
840
- });
841
- function weightFn(e) {
842
- return (t) => e.edge(t).weight;
843
- }
844
- }
845
- function dfsFAS(e) {
846
- let t = [], n = {}, r = {};
847
- function dfs(i) {
848
- Object.hasOwn(r, i) || (r[i] = !0, n[i] = !0, e.outEdges(i).forEach((e) => {
849
- Object.hasOwn(n, e.w) ? t.push(e) : dfs(e.w);
850
- }), delete n[i]);
851
- }
852
- return e.nodes().forEach(dfs), t;
853
- }
854
- function undo(e) {
855
- e.edges().forEach((t) => {
856
- let n = e.edge(t);
857
- if (n.reversed) {
858
- e.removeEdge(t);
859
- let r = n.forwardName;
860
- delete n.reversed, delete n.forwardName, e.setEdge(t.w, t.v, n, r);
861
- }
862
- });
863
- }
864
- })), w = /* @__PURE__ */ e(((e, t) => {
865
- var n = S();
866
- t.exports = {
867
- run,
868
- undo
869
- };
870
- function run(e) {
871
- e.graph().dummyChains = [], e.edges().forEach((t) => normalizeEdge(e, t));
872
- }
873
- function normalizeEdge(e, t) {
874
- let r = t.v, i = e.node(r).rank, a = t.w, o = e.node(a).rank, s = t.name, c = e.edge(t), l = c.labelRank;
875
- if (o === i + 1) return;
876
- e.removeEdge(t);
877
- let u, d, f;
878
- for (f = 0, ++i; i < o; ++f, ++i) c.points = [], d = {
879
- width: 0,
880
- height: 0,
881
- edgeLabel: c,
882
- edgeObj: t,
883
- rank: i
884
- }, u = n.addDummyNode(e, "edge", d, "_d"), i === l && (d.width = c.width, d.height = c.height, d.dummy = "edge-label", d.labelpos = c.labelpos), e.setEdge(r, u, { weight: c.weight }, s), f === 0 && e.graph().dummyChains.push(u), r = u;
885
- e.setEdge(r, a, { weight: c.weight }, s);
886
- }
887
- function undo(e) {
888
- e.graph().dummyChains.forEach((t) => {
889
- let n = e.node(t), r = n.edgeLabel, i;
890
- for (e.setEdge(n.edgeObj, r); n.dummy;) i = e.successors(t)[0], e.removeNode(t), r.points.push({
891
- x: n.x,
892
- y: n.y
893
- }), n.dummy === "edge-label" && (r.x = n.x, r.y = n.y, r.width = n.width, r.height = n.height), t = i, n = e.node(t);
894
- });
895
- }
896
- })), T = /* @__PURE__ */ e(((e, t) => {
897
- var { applyWithChunking: n } = S();
898
- t.exports = {
899
- longestPath,
900
- slack
901
- };
902
- function longestPath(e) {
903
- var t = {};
904
- function dfs(r) {
905
- var i = e.node(r);
906
- if (Object.hasOwn(t, r)) return i.rank;
907
- t[r] = !0;
908
- let a = e.outEdges(r).map((t) => t == null ? Infinity : dfs(t.w) - e.edge(t).minlen);
909
- var o = n(Math.min, a);
910
- return o === Infinity && (o = 0), i.rank = o;
911
- }
912
- e.sources().forEach(dfs);
913
- }
914
- function slack(e, t) {
915
- return e.node(t.w).rank - e.node(t.v).rank - e.edge(t).minlen;
916
- }
917
- })), E = /* @__PURE__ */ e(((e, t) => {
918
- var n = y().Graph, r = T().slack;
919
- t.exports = feasibleTree;
920
- function feasibleTree(e) {
921
- var t = new n({ directed: !1 }), i = e.nodes()[0], a = e.nodeCount();
922
- t.setNode(i, {});
923
- for (var o, s; tightTree(t, e) < a;) o = findMinSlackEdge(t, e), s = t.hasNode(o.v) ? r(e, o) : -r(e, o), shiftRanks(t, e, s);
924
- return t;
925
- }
926
- function tightTree(e, t) {
927
- function dfs(n) {
928
- t.nodeEdges(n).forEach((i) => {
929
- var a = i.v, o = n === a ? i.w : a;
930
- !e.hasNode(o) && !r(t, i) && (e.setNode(o, {}), e.setEdge(n, o, {}), dfs(o));
931
- });
932
- }
933
- return e.nodes().forEach(dfs), e.nodeCount();
934
- }
935
- function findMinSlackEdge(e, t) {
936
- return t.edges().reduce((n, i) => {
937
- let a = Infinity;
938
- return e.hasNode(i.v) !== e.hasNode(i.w) && (a = r(t, i)), a < n[0] ? [a, i] : n;
939
- }, [Infinity, null])[1];
940
- }
941
- function shiftRanks(e, t, n) {
942
- e.nodes().forEach((e) => t.node(e).rank += n);
943
- }
944
- })), D = /* @__PURE__ */ e(((e, t) => {
945
- var n = E(), r = T().slack, i = T().longestPath, a = y().alg.preorder, o = y().alg.postorder, s = S().simplify;
946
- t.exports = networkSimplex, networkSimplex.initLowLimValues = initLowLimValues, networkSimplex.initCutValues = initCutValues, networkSimplex.calcCutValue = calcCutValue, networkSimplex.leaveEdge = leaveEdge, networkSimplex.enterEdge = enterEdge, networkSimplex.exchangeEdges = exchangeEdges;
947
- function networkSimplex(e) {
948
- e = s(e), i(e);
949
- var t = n(e);
950
- initLowLimValues(t), initCutValues(t, e);
951
- for (var r, a; r = leaveEdge(t);) a = enterEdge(t, e, r), exchangeEdges(t, e, r, a);
952
- }
953
- function initCutValues(e, t) {
954
- var n = o(e, e.nodes());
955
- n = n.slice(0, n.length - 1), n.forEach((n) => assignCutValue(e, t, n));
956
- }
957
- function assignCutValue(e, t, n) {
958
- var r = e.node(n).parent;
959
- e.edge(n, r).cutvalue = calcCutValue(e, t, n);
960
- }
961
- function calcCutValue(e, t, n) {
962
- var r = e.node(n).parent, i = !0, a = t.edge(n, r), o = 0;
963
- return a ||= (i = !1, t.edge(r, n)), o = a.weight, t.nodeEdges(n).forEach((a) => {
964
- var s = a.v === n, c = s ? a.w : a.v;
965
- if (c !== r) {
966
- var l = s === i, u = t.edge(a).weight;
967
- if (o += l ? u : -u, isTreeEdge(e, n, c)) {
968
- var d = e.edge(n, c).cutvalue;
969
- o += l ? -d : d;
970
- }
971
- }
972
- }), o;
973
- }
974
- function initLowLimValues(e, t) {
975
- arguments.length < 2 && (t = e.nodes()[0]), dfsAssignLowLim(e, {}, 1, t);
976
- }
977
- function dfsAssignLowLim(e, t, n, r, i) {
978
- var a = n, o = e.node(r);
979
- return t[r] = !0, e.neighbors(r).forEach((i) => {
980
- Object.hasOwn(t, i) || (n = dfsAssignLowLim(e, t, n, i, r));
981
- }), o.low = a, o.lim = n++, i ? o.parent = i : delete o.parent, n;
982
- }
983
- function leaveEdge(e) {
984
- return e.edges().find((t) => e.edge(t).cutvalue < 0);
985
- }
986
- function enterEdge(e, t, n) {
987
- var i = n.v, a = n.w;
988
- t.hasEdge(i, a) || (i = n.w, a = n.v);
989
- var o = e.node(i), s = e.node(a), c = o, l = !1;
990
- return o.lim > s.lim && (c = s, l = !0), t.edges().filter((t) => l === isDescendant(e, e.node(t.v), c) && l !== isDescendant(e, e.node(t.w), c)).reduce((e, n) => r(t, n) < r(t, e) ? n : e);
991
- }
992
- function exchangeEdges(e, t, n, r) {
993
- var i = n.v, a = n.w;
994
- e.removeEdge(i, a), e.setEdge(r.v, r.w, {}), initLowLimValues(e), initCutValues(e, t), updateRanks(e, t);
995
- }
996
- function updateRanks(e, t) {
997
- var n = a(e, e.nodes().find((e) => !t.node(e).parent));
998
- n = n.slice(1), n.forEach((n) => {
999
- var r = e.node(n).parent, i = t.edge(n, r), a = !1;
1000
- i || (i = t.edge(r, n), a = !0), t.node(n).rank = t.node(r).rank + (a ? i.minlen : -i.minlen);
1001
- });
1002
- }
1003
- function isTreeEdge(e, t, n) {
1004
- return e.hasEdge(t, n);
1005
- }
1006
- function isDescendant(e, t, n) {
1007
- return n.low <= t.lim && t.lim <= n.lim;
1008
- }
1009
- })), O = /* @__PURE__ */ e(((e, t) => {
1010
- var n = T().longestPath, r = E(), i = D();
1011
- t.exports = rank;
1012
- function rank(e) {
1013
- var t = e.graph().ranker;
1014
- if (t instanceof Function) return t(e);
1015
- switch (e.graph().ranker) {
1016
- case "network-simplex":
1017
- networkSimplexRanker(e);
1018
- break;
1019
- case "tight-tree":
1020
- tightTreeRanker(e);
1021
- break;
1022
- case "longest-path":
1023
- a(e);
1024
- break;
1025
- case "none": break;
1026
- default: networkSimplexRanker(e);
1027
- }
1028
- }
1029
- var a = n;
1030
- function tightTreeRanker(e) {
1031
- n(e), r(e);
1032
- }
1033
- function networkSimplexRanker(e) {
1034
- i(e);
1035
- }
1036
- })), k = /* @__PURE__ */ e(((e, t) => {
1037
- t.exports = parentDummyChains;
1038
- function parentDummyChains(e) {
1039
- let t = postorder(e);
1040
- e.graph().dummyChains.forEach((n) => {
1041
- let r = e.node(n), i = r.edgeObj, a = findPath(e, t, i.v, i.w), o = a.path, s = a.lca, c = 0, l = o[c], u = !0;
1042
- for (; n !== i.w;) {
1043
- if (r = e.node(n), u) {
1044
- for (; (l = o[c]) !== s && e.node(l).maxRank < r.rank;) c++;
1045
- l === s && (u = !1);
1046
- }
1047
- if (!u) {
1048
- for (; c < o.length - 1 && e.node(l = o[c + 1]).minRank <= r.rank;) c++;
1049
- l = o[c];
1050
- }
1051
- e.setParent(n, l), n = e.successors(n)[0];
1052
- }
1053
- });
1054
- }
1055
- function findPath(e, t, n, r) {
1056
- let i = [], a = [], o = Math.min(t[n].low, t[r].low), s = Math.max(t[n].lim, t[r].lim), c, l;
1057
- c = n;
1058
- do
1059
- c = e.parent(c), i.push(c);
1060
- while (c && (t[c].low > o || s > t[c].lim));
1061
- for (l = c, c = r; (c = e.parent(c)) !== l;) a.push(c);
1062
- return {
1063
- path: i.concat(a.reverse()),
1064
- lca: l
1065
- };
1066
- }
1067
- function postorder(e) {
1068
- let t = {}, n = 0;
1069
- function dfs(r) {
1070
- let i = n;
1071
- e.children(r).forEach(dfs), t[r] = {
1072
- low: i,
1073
- lim: n++
1074
- };
1075
- }
1076
- return e.children().forEach(dfs), t;
1077
- }
1078
- })), A = /* @__PURE__ */ e(((e, t) => {
1079
- var n = S();
1080
- t.exports = {
1081
- run,
1082
- cleanup
1083
- };
1084
- function run(e) {
1085
- let t = n.addDummyNode(e, "root", {}, "_root"), r = treeDepths(e), i = Object.values(r), a = n.applyWithChunking(Math.max, i) - 1, o = 2 * a + 1;
1086
- e.graph().nestingRoot = t, e.edges().forEach((t) => e.edge(t).minlen *= o);
1087
- let s = sumWeights(e) + 1;
1088
- e.children().forEach((n) => dfs(e, t, o, s, a, r, n)), e.graph().nodeRankFactor = o;
1089
- }
1090
- function dfs(e, t, r, i, a, o, s) {
1091
- let c = e.children(s);
1092
- if (!c.length) {
1093
- s !== t && e.setEdge(t, s, {
1094
- weight: 0,
1095
- minlen: r
1096
- });
1097
- return;
1098
- }
1099
- let l = n.addBorderNode(e, "_bt"), u = n.addBorderNode(e, "_bb"), d = e.node(s);
1100
- e.setParent(l, s), d.borderTop = l, e.setParent(u, s), d.borderBottom = u, c.forEach((n) => {
1101
- dfs(e, t, r, i, a, o, n);
1102
- let c = e.node(n), d = c.borderTop ? c.borderTop : n, f = c.borderBottom ? c.borderBottom : n, p = c.borderTop ? i : 2 * i, m = d === f ? a - o[s] + 1 : 1;
1103
- e.setEdge(l, d, {
1104
- weight: p,
1105
- minlen: m,
1106
- nestingEdge: !0
1107
- }), e.setEdge(f, u, {
1108
- weight: p,
1109
- minlen: m,
1110
- nestingEdge: !0
1111
- });
1112
- }), e.parent(s) || e.setEdge(t, l, {
1113
- weight: 0,
1114
- minlen: a + o[s]
1115
- });
1116
- }
1117
- function treeDepths(e) {
1118
- var t = {};
1119
- function dfs(n, r) {
1120
- var i = e.children(n);
1121
- i && i.length && i.forEach((e) => dfs(e, r + 1)), t[n] = r;
1122
- }
1123
- return e.children().forEach((e) => dfs(e, 1)), t;
1124
- }
1125
- function sumWeights(e) {
1126
- return e.edges().reduce((t, n) => t + e.edge(n).weight, 0);
1127
- }
1128
- function cleanup(e) {
1129
- var t = e.graph();
1130
- e.removeNode(t.nestingRoot), delete t.nestingRoot, e.edges().forEach((t) => {
1131
- e.edge(t).nestingEdge && e.removeEdge(t);
1132
- });
1133
- }
1134
- })), j = /* @__PURE__ */ e(((e, t) => {
1135
- var n = S();
1136
- t.exports = addBorderSegments;
1137
- function addBorderSegments(e) {
1138
- function dfs(t) {
1139
- let n = e.children(t), r = e.node(t);
1140
- if (n.length && n.forEach(dfs), Object.hasOwn(r, "minRank")) {
1141
- r.borderLeft = [], r.borderRight = [];
1142
- for (let n = r.minRank, i = r.maxRank + 1; n < i; ++n) addBorderNode(e, "borderLeft", "_bl", t, r, n), addBorderNode(e, "borderRight", "_br", t, r, n);
1143
- }
1144
- }
1145
- e.children().forEach(dfs);
1146
- }
1147
- function addBorderNode(e, t, r, i, a, o) {
1148
- let s = {
1149
- width: 0,
1150
- height: 0,
1151
- rank: o,
1152
- borderType: t
1153
- }, c = a[t][o - 1], l = n.addDummyNode(e, "border", s, r);
1154
- a[t][o] = l, e.setParent(l, i), c && e.setEdge(c, l, { weight: 1 });
1155
- }
1156
- })), M = /* @__PURE__ */ e(((e, t) => {
1157
- t.exports = {
1158
- adjust,
1159
- undo
1160
- };
1161
- function adjust(e) {
1162
- let t = e.graph().rankdir.toLowerCase();
1163
- (t === "lr" || t === "rl") && swapWidthHeight(e);
1164
- }
1165
- function undo(e) {
1166
- let t = e.graph().rankdir.toLowerCase();
1167
- (t === "bt" || t === "rl") && reverseY(e), (t === "lr" || t === "rl") && (swapXY(e), swapWidthHeight(e));
1168
- }
1169
- function swapWidthHeight(e) {
1170
- e.nodes().forEach((t) => swapWidthHeightOne(e.node(t))), e.edges().forEach((t) => swapWidthHeightOne(e.edge(t)));
1171
- }
1172
- function swapWidthHeightOne(e) {
1173
- let t = e.width;
1174
- e.width = e.height, e.height = t;
1175
- }
1176
- function reverseY(e) {
1177
- e.nodes().forEach((t) => reverseYOne(e.node(t))), e.edges().forEach((t) => {
1178
- let n = e.edge(t);
1179
- n.points.forEach(reverseYOne), Object.hasOwn(n, "y") && reverseYOne(n);
1180
- });
1181
- }
1182
- function reverseYOne(e) {
1183
- e.y = -e.y;
1184
- }
1185
- function swapXY(e) {
1186
- e.nodes().forEach((t) => swapXYOne(e.node(t))), e.edges().forEach((t) => {
1187
- let n = e.edge(t);
1188
- n.points.forEach(swapXYOne), Object.hasOwn(n, "x") && swapXYOne(n);
1189
- });
1190
- }
1191
- function swapXYOne(e) {
1192
- let t = e.x;
1193
- e.x = e.y, e.y = t;
1194
- }
1195
- })), N = /* @__PURE__ */ e(((e, t) => {
1196
- var n = S();
1197
- t.exports = initOrder;
1198
- function initOrder(e) {
1199
- let t = {}, r = e.nodes().filter((t) => !e.children(t).length), i = r.map((t) => e.node(t).rank), a = n.applyWithChunking(Math.max, i), o = n.range(a + 1).map(() => []);
1200
- function dfs(n) {
1201
- t[n] || (t[n] = !0, o[e.node(n).rank].push(n), e.successors(n).forEach(dfs));
1202
- }
1203
- return r.sort((t, n) => e.node(t).rank - e.node(n).rank).forEach(dfs), o;
1204
- }
1205
- })), P = /* @__PURE__ */ e(((e, t) => {
1206
- var n = S().zipObject;
1207
- t.exports = crossCount;
1208
- function crossCount(e, t) {
1209
- let n = 0;
1210
- for (let r = 1; r < t.length; ++r) n += twoLayerCrossCount(e, t[r - 1], t[r]);
1211
- return n;
1212
- }
1213
- function twoLayerCrossCount(e, t, r) {
1214
- let i = n(r, r.map((e, t) => t)), a = t.flatMap((t) => e.outEdges(t).map((t) => ({
1215
- pos: i[t.w],
1216
- weight: e.edge(t).weight
1217
- })).sort((e, t) => e.pos - t.pos)), o = 1;
1218
- for (; o < r.length;) o <<= 1;
1219
- let s = 2 * o - 1;
1220
- --o;
1221
- let c = Array(s).fill(0), l = 0;
1222
- return a.forEach((e) => {
1223
- let t = e.pos + o;
1224
- c[t] += e.weight;
1225
- let n = 0;
1226
- for (; t > 0;) t % 2 && (n += c[t + 1]), t = t - 1 >> 1, c[t] += e.weight;
1227
- l += e.weight * n;
1228
- }), l;
1229
- }
1230
- })), F = /* @__PURE__ */ e(((e, t) => {
1231
- t.exports = barycenter;
1232
- function barycenter(e, t = []) {
1233
- return t.map((t) => {
1234
- let n = e.inEdges(t);
1235
- if (n.length) {
1236
- let r = n.reduce((t, n) => {
1237
- let r = e.edge(n), i = e.node(n.v);
1238
- return {
1239
- sum: t.sum + r.weight * i.order,
1240
- weight: t.weight + r.weight
1241
- };
1242
- }, {
1243
- sum: 0,
1244
- weight: 0
1245
- });
1246
- return {
1247
- v: t,
1248
- barycenter: r.sum / r.weight,
1249
- weight: r.weight
1250
- };
1251
- } else return { v: t };
1252
- });
1253
- }
1254
- })), I = /* @__PURE__ */ e(((e, t) => {
1255
- var n = S();
1256
- t.exports = resolveConflicts;
1257
- function resolveConflicts(e, t) {
1258
- let n = {};
1259
- return e.forEach((e, t) => {
1260
- let r = n[e.v] = {
1261
- indegree: 0,
1262
- in: [],
1263
- out: [],
1264
- vs: [e.v],
1265
- i: t
1266
- };
1267
- e.barycenter !== void 0 && (r.barycenter = e.barycenter, r.weight = e.weight);
1268
- }), t.edges().forEach((e) => {
1269
- let t = n[e.v], r = n[e.w];
1270
- t !== void 0 && r !== void 0 && (r.indegree++, t.out.push(n[e.w]));
1271
- }), doResolveConflicts(Object.values(n).filter((e) => !e.indegree));
1272
- }
1273
- function doResolveConflicts(e) {
1274
- let t = [];
1275
- function handleIn(e) {
1276
- return (t) => {
1277
- t.merged || (t.barycenter === void 0 || e.barycenter === void 0 || t.barycenter >= e.barycenter) && mergeEntries(e, t);
1278
- };
1279
- }
1280
- function handleOut(t) {
1281
- return (n) => {
1282
- n.in.push(t), --n.indegree === 0 && e.push(n);
1283
- };
1284
- }
1285
- for (; e.length;) {
1286
- let n = e.pop();
1287
- t.push(n), n.in.reverse().forEach(handleIn(n)), n.out.forEach(handleOut(n));
1288
- }
1289
- return t.filter((e) => !e.merged).map((e) => n.pick(e, [
1290
- "vs",
1291
- "i",
1292
- "barycenter",
1293
- "weight"
1294
- ]));
1295
- }
1296
- function mergeEntries(e, t) {
1297
- let n = 0, r = 0;
1298
- e.weight && (n += e.barycenter * e.weight, r += e.weight), t.weight && (n += t.barycenter * t.weight, r += t.weight), e.vs = t.vs.concat(e.vs), e.barycenter = n / r, e.weight = r, e.i = Math.min(t.i, e.i), t.merged = !0;
1299
- }
1300
- })), L = /* @__PURE__ */ e(((e, t) => {
1301
- var n = S();
1302
- t.exports = sort;
1303
- function sort(e, t) {
1304
- let r = n.partition(e, (e) => Object.hasOwn(e, "barycenter")), i = r.lhs, a = r.rhs.sort((e, t) => t.i - e.i), o = [], s = 0, c = 0, l = 0;
1305
- i.sort(compareWithBias(!!t)), l = consumeUnsortable(o, a, l), i.forEach((e) => {
1306
- l += e.vs.length, o.push(e.vs), s += e.barycenter * e.weight, c += e.weight, l = consumeUnsortable(o, a, l);
1307
- });
1308
- let u = { vs: o.flat(!0) };
1309
- return c && (u.barycenter = s / c, u.weight = c), u;
1310
- }
1311
- function consumeUnsortable(e, t, n) {
1312
- let r;
1313
- for (; t.length && (r = t[t.length - 1]).i <= n;) t.pop(), e.push(r.vs), n++;
1314
- return n;
1315
- }
1316
- function compareWithBias(e) {
1317
- return (t, n) => t.barycenter < n.barycenter ? -1 : t.barycenter > n.barycenter ? 1 : e ? n.i - t.i : t.i - n.i;
1318
- }
1319
- })), R = /* @__PURE__ */ e(((e, t) => {
1320
- var n = F(), r = I(), i = L();
1321
- t.exports = sortSubgraph;
1322
- function sortSubgraph(e, t, a, o) {
1323
- let s = e.children(t), c = e.node(t), l = c ? c.borderLeft : void 0, u = c ? c.borderRight : void 0, d = {};
1324
- l && (s = s.filter((e) => e !== l && e !== u));
1325
- let f = n(e, s);
1326
- f.forEach((t) => {
1327
- if (e.children(t.v).length) {
1328
- let n = sortSubgraph(e, t.v, a, o);
1329
- d[t.v] = n, Object.hasOwn(n, "barycenter") && mergeBarycenters(t, n);
1330
- }
1331
- });
1332
- let p = r(f, a);
1333
- expandSubgraphs(p, d);
1334
- let m = i(p, o);
1335
- if (l && (m.vs = [
1336
- l,
1337
- m.vs,
1338
- u
1339
- ].flat(!0), e.predecessors(l).length)) {
1340
- let t = e.node(e.predecessors(l)[0]), n = e.node(e.predecessors(u)[0]);
1341
- Object.hasOwn(m, "barycenter") || (m.barycenter = 0, m.weight = 0), m.barycenter = (m.barycenter * m.weight + t.order + n.order) / (m.weight + 2), m.weight += 2;
1342
- }
1343
- return m;
1344
- }
1345
- function expandSubgraphs(e, t) {
1346
- e.forEach((e) => {
1347
- e.vs = e.vs.flatMap((e) => t[e] ? t[e].vs : e);
1348
- });
1349
- }
1350
- function mergeBarycenters(e, t) {
1351
- e.barycenter === void 0 ? (e.barycenter = t.barycenter, e.weight = t.weight) : (e.barycenter = (e.barycenter * e.weight + t.barycenter * t.weight) / (e.weight + t.weight), e.weight += t.weight);
1352
- }
1353
- })), z = /* @__PURE__ */ e(((e, t) => {
1354
- var n = y().Graph, r = S();
1355
- t.exports = buildLayerGraph;
1356
- function buildLayerGraph(e, t, r, i) {
1357
- i ||= e.nodes();
1358
- let a = createRootNode(e), o = new n({ compound: !0 }).setGraph({ root: a }).setDefaultNodeLabel((t) => e.node(t));
1359
- return i.forEach((n) => {
1360
- let i = e.node(n), s = e.parent(n);
1361
- (i.rank === t || i.minRank <= t && t <= i.maxRank) && (o.setNode(n), o.setParent(n, s || a), e[r](n).forEach((t) => {
1362
- let r = t.v === n ? t.w : t.v, i = o.edge(r, n), a = i === void 0 ? 0 : i.weight;
1363
- o.setEdge(r, n, { weight: e.edge(t).weight + a });
1364
- }), Object.hasOwn(i, "minRank") && o.setNode(n, {
1365
- borderLeft: i.borderLeft[t],
1366
- borderRight: i.borderRight[t]
1367
- }));
1368
- }), o;
1369
- }
1370
- function createRootNode(e) {
1371
- for (var t; e.hasNode(t = r.uniqueId("_root")););
1372
- return t;
1373
- }
1374
- })), B = /* @__PURE__ */ e(((e, t) => {
1375
- t.exports = addSubgraphConstraints;
1376
- function addSubgraphConstraints(e, t, n) {
1377
- let r = {}, i;
1378
- n.forEach((n) => {
1379
- let a = e.parent(n), o, s;
1380
- for (; a;) {
1381
- if (o = e.parent(a), o ? (s = r[o], r[o] = a) : (s = i, i = a), s && s !== a) {
1382
- t.setEdge(s, a);
1383
- return;
1384
- }
1385
- a = o;
1386
- }
1387
- });
1388
- }
1389
- })), V = /* @__PURE__ */ e(((e, t) => {
1390
- var n = N(), r = P(), i = R(), a = z(), o = B(), s = y().Graph, c = S();
1391
- t.exports = order;
1392
- function order(e, t) {
1393
- if (t && typeof t.customOrder == "function") {
1394
- t.customOrder(e, order);
1395
- return;
1396
- }
1397
- let i = c.maxRank(e), a = buildLayerGraphs(e, c.range(1, i + 1), "inEdges"), o = buildLayerGraphs(e, c.range(i - 1, -1, -1), "outEdges"), s = n(e);
1398
- if (assignOrder(e, s), t && t.disableOptimalOrderHeuristic) return;
1399
- let l = Infinity, u;
1400
- for (let t = 0, n = 0; n < 4; ++t, ++n) {
1401
- sweepLayerGraphs(t % 2 ? a : o, t % 4 >= 2), s = c.buildLayerMatrix(e);
1402
- let i = r(e, s);
1403
- i < l && (n = 0, u = Object.assign({}, s), l = i);
1404
- }
1405
- assignOrder(e, u);
1406
- }
1407
- function buildLayerGraphs(e, t, n) {
1408
- let r = /* @__PURE__ */ new Map(), addNodeToRank = (e, t) => {
1409
- r.has(e) || r.set(e, []), r.get(e).push(t);
1410
- };
1411
- for (let t of e.nodes()) {
1412
- let n = e.node(t);
1413
- if (typeof n.rank == "number" && addNodeToRank(n.rank, t), typeof n.minRank == "number" && typeof n.maxRank == "number") for (let e = n.minRank; e <= n.maxRank; e++) e !== n.rank && addNodeToRank(e, t);
1414
- }
1415
- return t.map(function(t) {
1416
- return a(e, t, n, r.get(t) || []);
1417
- });
1418
- }
1419
- function sweepLayerGraphs(e, t) {
1420
- let n = new s();
1421
- e.forEach(function(e) {
1422
- let r = e.graph().root, a = i(e, r, n, t);
1423
- a.vs.forEach((t, n) => e.node(t).order = n), o(e, n, a.vs);
1424
- });
1425
- }
1426
- function assignOrder(e, t) {
1427
- Object.values(t).forEach((t) => t.forEach((t, n) => e.node(t).order = n));
1428
- }
1429
- })), H = /* @__PURE__ */ e(((e, t) => {
1430
- var n = y().Graph, r = S();
1431
- t.exports = {
1432
- positionX,
1433
- findType1Conflicts,
1434
- findType2Conflicts,
1435
- addConflict,
1436
- hasConflict,
1437
- verticalAlignment,
1438
- horizontalCompaction,
1439
- alignCoordinates,
1440
- findSmallestWidthAlignment,
1441
- balance
1442
- };
1443
- function findType1Conflicts(e, t) {
1444
- let n = {};
1445
- function visitLayer(t, r) {
1446
- let i = 0, a = 0, o = t.length, s = r[r.length - 1];
1447
- return r.forEach((t, c) => {
1448
- let l = findOtherInnerSegmentNode(e, t), u = l ? e.node(l).order : o;
1449
- (l || t === s) && (r.slice(a, c + 1).forEach((t) => {
1450
- e.predecessors(t).forEach((r) => {
1451
- let a = e.node(r), o = a.order;
1452
- (o < i || u < o) && !(a.dummy && e.node(t).dummy) && addConflict(n, r, t);
1453
- });
1454
- }), a = c + 1, i = u);
1455
- }), r;
1456
- }
1457
- return t.length && t.reduce(visitLayer), n;
1458
- }
1459
- function findType2Conflicts(e, t) {
1460
- let n = {};
1461
- function scan(t, i, a, o, s) {
1462
- let c;
1463
- r.range(i, a).forEach((r) => {
1464
- c = t[r], e.node(c).dummy && e.predecessors(c).forEach((t) => {
1465
- let r = e.node(t);
1466
- r.dummy && (r.order < o || r.order > s) && addConflict(n, t, c);
1467
- });
1468
- });
1469
- }
1470
- function visitLayer(t, n) {
1471
- let r = -1, i, a = 0;
1472
- return n.forEach((o, s) => {
1473
- if (e.node(o).dummy === "border") {
1474
- let t = e.predecessors(o);
1475
- t.length && (i = e.node(t[0]).order, scan(n, a, s, r, i), a = s, r = i);
1476
- }
1477
- scan(n, a, n.length, i, t.length);
1478
- }), n;
1479
- }
1480
- return t.length && t.reduce(visitLayer), n;
1481
- }
1482
- function findOtherInnerSegmentNode(e, t) {
1483
- if (e.node(t).dummy) return e.predecessors(t).find((t) => e.node(t).dummy);
1484
- }
1485
- function addConflict(e, t, n) {
1486
- if (t > n) {
1487
- let e = t;
1488
- t = n, n = e;
1489
- }
1490
- let r = e[t];
1491
- r || (e[t] = r = {}), r[n] = !0;
1492
- }
1493
- function hasConflict(e, t, n) {
1494
- if (t > n) {
1495
- let e = t;
1496
- t = n, n = e;
1497
- }
1498
- return !!e[t] && Object.hasOwn(e[t], n);
1499
- }
1500
- function verticalAlignment(e, t, n, r) {
1501
- let i = {}, a = {}, o = {};
1502
- return t.forEach((e) => {
1503
- e.forEach((e, t) => {
1504
- i[e] = e, a[e] = e, o[e] = t;
1505
- });
1506
- }), t.forEach((e) => {
1507
- let t = -1;
1508
- e.forEach((e) => {
1509
- let s = r(e);
1510
- if (s.length) {
1511
- s = s.sort((e, t) => o[e] - o[t]);
1512
- let r = (s.length - 1) / 2;
1513
- for (let c = Math.floor(r), l = Math.ceil(r); c <= l; ++c) {
1514
- let r = s[c];
1515
- a[e] === e && t < o[r] && !hasConflict(n, e, r) && (a[r] = e, a[e] = i[e] = i[r], t = o[r]);
1516
- }
1517
- }
1518
- });
1519
- }), {
1520
- root: i,
1521
- align: a
1522
- };
1523
- }
1524
- function horizontalCompaction(e, t, n, r, i) {
1525
- let a = {}, o = buildBlockGraph(e, t, n, i), s = i ? "borderLeft" : "borderRight";
1526
- function iterate(e, t) {
1527
- let n = o.nodes(), r = n.pop(), i = {};
1528
- for (; r;) i[r] ? e(r) : (i[r] = !0, n.push(r), n = n.concat(t(r))), r = n.pop();
1529
- }
1530
- function pass1(e) {
1531
- a[e] = o.inEdges(e).reduce((e, t) => Math.max(e, a[t.v] + o.edge(t)), 0);
1532
- }
1533
- function pass2(t) {
1534
- let n = o.outEdges(t).reduce((e, t) => Math.min(e, a[t.w] - o.edge(t)), Infinity), r = e.node(t);
1535
- n !== Infinity && r.borderType !== s && (a[t] = Math.max(a[t], n));
1536
- }
1537
- return iterate(pass1, o.predecessors.bind(o)), iterate(pass2, o.successors.bind(o)), Object.keys(r).forEach((e) => a[e] = a[n[e]]), a;
1538
- }
1539
- function buildBlockGraph(e, t, r, i) {
1540
- let a = new n(), o = e.graph(), s = sep(o.nodesep, o.edgesep, i);
1541
- return t.forEach((t) => {
1542
- let n;
1543
- t.forEach((t) => {
1544
- let i = r[t];
1545
- if (a.setNode(i), n) {
1546
- var o = r[n], c = a.edge(o, i);
1547
- a.setEdge(o, i, Math.max(s(e, t, n), c || 0));
1548
- }
1549
- n = t;
1550
- });
1551
- }), a;
1552
- }
1553
- function findSmallestWidthAlignment(e, t) {
1554
- return Object.values(t).reduce((t, n) => {
1555
- let r = -Infinity, i = Infinity;
1556
- Object.entries(n).forEach(([t, n]) => {
1557
- let a = width(e, t) / 2;
1558
- r = Math.max(n + a, r), i = Math.min(n - a, i);
1559
- });
1560
- let a = r - i;
1561
- return a < t[0] && (t = [a, n]), t;
1562
- }, [Infinity, null])[1];
1563
- }
1564
- function alignCoordinates(e, t) {
1565
- let n = Object.values(t), i = r.applyWithChunking(Math.min, n), a = r.applyWithChunking(Math.max, n);
1566
- ["u", "d"].forEach((n) => {
1567
- ["l", "r"].forEach((o) => {
1568
- let s = n + o, c = e[s];
1569
- if (c === t) return;
1570
- let l = Object.values(c), u = i - r.applyWithChunking(Math.min, l);
1571
- o !== "l" && (u = a - r.applyWithChunking(Math.max, l)), u && (e[s] = r.mapValues(c, (e) => e + u));
1572
- });
1573
- });
1574
- }
1575
- function balance(e, t) {
1576
- return r.mapValues(e.ul, (n, r) => {
1577
- if (t) return e[t.toLowerCase()][r];
1578
- {
1579
- let t = Object.values(e).map((e) => e[r]).sort((e, t) => e - t);
1580
- return (t[1] + t[2]) / 2;
1581
- }
1582
- });
1583
- }
1584
- function positionX(e) {
1585
- let t = r.buildLayerMatrix(e), n = Object.assign(findType1Conflicts(e, t), findType2Conflicts(e, t)), i = {}, a;
1586
- return ["u", "d"].forEach((o) => {
1587
- a = o === "u" ? t : Object.values(t).reverse(), ["l", "r"].forEach((t) => {
1588
- t === "r" && (a = a.map((e) => Object.values(e).reverse()));
1589
- let s = (o === "u" ? e.predecessors : e.successors).bind(e), c = verticalAlignment(e, a, n, s), l = horizontalCompaction(e, a, c.root, c.align, t === "r");
1590
- t === "r" && (l = r.mapValues(l, (e) => -e)), i[o + t] = l;
1591
- });
1592
- }), alignCoordinates(i, findSmallestWidthAlignment(e, i)), balance(i, e.graph().align);
1593
- }
1594
- function sep(e, t, n) {
1595
- return (r, i, a) => {
1596
- let o = r.node(i), s = r.node(a), c = 0, l;
1597
- if (c += o.width / 2, Object.hasOwn(o, "labelpos")) switch (o.labelpos.toLowerCase()) {
1598
- case "l":
1599
- l = -o.width / 2;
1600
- break;
1601
- case "r":
1602
- l = o.width / 2;
1603
- break;
1604
- }
1605
- if (l && (c += n ? l : -l), l = 0, c += (o.dummy ? t : e) / 2, c += (s.dummy ? t : e) / 2, c += s.width / 2, Object.hasOwn(s, "labelpos")) switch (s.labelpos.toLowerCase()) {
1606
- case "l":
1607
- l = s.width / 2;
1608
- break;
1609
- case "r":
1610
- l = -s.width / 2;
1611
- break;
1612
- }
1613
- return l && (c += n ? l : -l), l = 0, c;
1614
- };
1615
- }
1616
- function width(e, t) {
1617
- return e.node(t).width;
1618
- }
1619
- })), U = /* @__PURE__ */ e(((e, t) => {
1620
- var n = S(), r = H().positionX;
1621
- t.exports = position;
1622
- function position(e) {
1623
- e = n.asNonCompoundGraph(e), positionY(e), Object.entries(r(e)).forEach(([t, n]) => e.node(t).x = n);
1624
- }
1625
- function positionY(e) {
1626
- let t = n.buildLayerMatrix(e), r = e.graph().ranksep, i = 0;
1627
- t.forEach((t) => {
1628
- let n = t.reduce((t, n) => {
1629
- let r = e.node(n).height;
1630
- return t > r ? t : r;
1631
- }, 0);
1632
- t.forEach((t) => e.node(t).y = i + n / 2), i += n + r;
1633
- });
1634
- }
1635
- })), W = /* @__PURE__ */ e(((e, t) => {
1636
- var n = C(), r = w(), i = O(), a = S().normalizeRanks, o = k(), s = S().removeEmptyRanks, c = A(), l = j(), u = M(), d = V(), f = U(), p = S(), m = y().Graph;
1637
- t.exports = layout;
1638
- function layout(e, t) {
1639
- let n = t && t.debugTiming ? p.time : p.notime;
1640
- n("layout", () => {
1641
- let r = n(" buildLayoutGraph", () => buildLayoutGraph(e));
1642
- n(" runLayout", () => runLayout(r, n, t)), n(" updateInputGraph", () => updateInputGraph(e, r));
1643
- });
1644
- }
1645
- function runLayout(e, t, m) {
1646
- t(" makeSpaceForEdgeLabels", () => makeSpaceForEdgeLabels(e)), t(" removeSelfEdges", () => removeSelfEdges(e)), t(" acyclic", () => n.run(e)), t(" nestingGraph.run", () => c.run(e)), t(" rank", () => i(p.asNonCompoundGraph(e))), t(" injectEdgeLabelProxies", () => injectEdgeLabelProxies(e)), t(" removeEmptyRanks", () => s(e)), t(" nestingGraph.cleanup", () => c.cleanup(e)), t(" normalizeRanks", () => a(e)), t(" assignRankMinMax", () => assignRankMinMax(e)), t(" removeEdgeLabelProxies", () => removeEdgeLabelProxies(e)), t(" normalize.run", () => r.run(e)), t(" parentDummyChains", () => o(e)), t(" addBorderSegments", () => l(e)), t(" order", () => d(e, m)), t(" insertSelfEdges", () => insertSelfEdges(e)), t(" adjustCoordinateSystem", () => u.adjust(e)), t(" position", () => f(e)), t(" positionSelfEdges", () => positionSelfEdges(e)), t(" removeBorderNodes", () => removeBorderNodes(e)), t(" normalize.undo", () => r.undo(e)), t(" fixupEdgeLabelCoords", () => fixupEdgeLabelCoords(e)), t(" undoCoordinateSystem", () => u.undo(e)), t(" translateGraph", () => translateGraph(e)), t(" assignNodeIntersects", () => assignNodeIntersects(e)), t(" reversePoints", () => reversePointsForReversedEdges(e)), t(" acyclic.undo", () => n.undo(e));
1647
- }
1648
- function updateInputGraph(e, t) {
1649
- e.nodes().forEach((n) => {
1650
- let r = e.node(n), i = t.node(n);
1651
- r && (r.x = i.x, r.y = i.y, r.rank = i.rank, t.children(n).length && (r.width = i.width, r.height = i.height));
1652
- }), e.edges().forEach((n) => {
1653
- let r = e.edge(n), i = t.edge(n);
1654
- r.points = i.points, Object.hasOwn(i, "x") && (r.x = i.x, r.y = i.y);
1655
- }), e.graph().width = t.graph().width, e.graph().height = t.graph().height;
1656
- }
1657
- var h = [
1658
- "nodesep",
1659
- "edgesep",
1660
- "ranksep",
1661
- "marginx",
1662
- "marginy"
1663
- ], g = {
1664
- ranksep: 50,
1665
- edgesep: 20,
1666
- nodesep: 50,
1667
- rankdir: "tb"
1668
- }, _ = [
1669
- "acyclicer",
1670
- "ranker",
1671
- "rankdir",
1672
- "align"
1673
- ], v = [
1674
- "width",
1675
- "height",
1676
- "rank"
1677
- ], b = {
1678
- width: 0,
1679
- height: 0
1680
- }, x = [
1681
- "minlen",
1682
- "weight",
1683
- "width",
1684
- "height",
1685
- "labeloffset"
1686
- ], T = {
1687
- minlen: 1,
1688
- weight: 1,
1689
- width: 0,
1690
- height: 0,
1691
- labeloffset: 10,
1692
- labelpos: "r"
1693
- }, E = ["labelpos"];
1694
- function buildLayoutGraph(e) {
1695
- let t = new m({
1696
- multigraph: !0,
1697
- compound: !0
1698
- }), n = canonicalize(e.graph());
1699
- return t.setGraph(Object.assign({}, g, selectNumberAttrs(n, h), p.pick(n, _))), e.nodes().forEach((n) => {
1700
- let r = selectNumberAttrs(canonicalize(e.node(n)), v);
1701
- Object.keys(b).forEach((e) => {
1702
- r[e] === void 0 && (r[e] = b[e]);
1703
- }), t.setNode(n, r), t.setParent(n, e.parent(n));
1704
- }), e.edges().forEach((n) => {
1705
- let r = canonicalize(e.edge(n));
1706
- t.setEdge(n, Object.assign({}, T, selectNumberAttrs(r, x), p.pick(r, E)));
1707
- }), t;
1708
- }
1709
- function makeSpaceForEdgeLabels(e) {
1710
- let t = e.graph();
1711
- t.ranksep /= 2, e.edges().forEach((n) => {
1712
- let r = e.edge(n);
1713
- r.minlen *= 2, r.labelpos.toLowerCase() !== "c" && (t.rankdir === "TB" || t.rankdir === "BT" ? r.width += r.labeloffset : r.height += r.labeloffset);
1714
- });
1715
- }
1716
- function injectEdgeLabelProxies(e) {
1717
- e.edges().forEach((t) => {
1718
- let n = e.edge(t);
1719
- if (n.width && n.height) {
1720
- let n = e.node(t.v), r = {
1721
- rank: (e.node(t.w).rank - n.rank) / 2 + n.rank,
1722
- e: t
1723
- };
1724
- p.addDummyNode(e, "edge-proxy", r, "_ep");
1725
- }
1726
- });
1727
- }
1728
- function assignRankMinMax(e) {
1729
- let t = 0;
1730
- e.nodes().forEach((n) => {
1731
- let r = e.node(n);
1732
- r.borderTop && (r.minRank = e.node(r.borderTop).rank, r.maxRank = e.node(r.borderBottom).rank, t = Math.max(t, r.maxRank));
1733
- }), e.graph().maxRank = t;
1734
- }
1735
- function removeEdgeLabelProxies(e) {
1736
- e.nodes().forEach((t) => {
1737
- let n = e.node(t);
1738
- n.dummy === "edge-proxy" && (e.edge(n.e).labelRank = n.rank, e.removeNode(t));
1739
- });
1740
- }
1741
- function translateGraph(e) {
1742
- let t = Infinity, n = 0, r = Infinity, i = 0, a = e.graph(), o = a.marginx || 0, s = a.marginy || 0;
1743
- function getExtremes(e) {
1744
- let a = e.x, o = e.y, s = e.width, c = e.height;
1745
- t = Math.min(t, a - s / 2), n = Math.max(n, a + s / 2), r = Math.min(r, o - c / 2), i = Math.max(i, o + c / 2);
1746
- }
1747
- e.nodes().forEach((t) => getExtremes(e.node(t))), e.edges().forEach((t) => {
1748
- let n = e.edge(t);
1749
- Object.hasOwn(n, "x") && getExtremes(n);
1750
- }), t -= o, r -= s, e.nodes().forEach((n) => {
1751
- let i = e.node(n);
1752
- i.x -= t, i.y -= r;
1753
- }), e.edges().forEach((n) => {
1754
- let i = e.edge(n);
1755
- i.points.forEach((e) => {
1756
- e.x -= t, e.y -= r;
1757
- }), Object.hasOwn(i, "x") && (i.x -= t), Object.hasOwn(i, "y") && (i.y -= r);
1758
- }), a.width = n - t + o, a.height = i - r + s;
1759
- }
1760
- function assignNodeIntersects(e) {
1761
- e.edges().forEach((t) => {
1762
- let n = e.edge(t), r = e.node(t.v), i = e.node(t.w), a, o;
1763
- n.points ? (a = n.points[0], o = n.points[n.points.length - 1]) : (n.points = [], a = i, o = r), n.points.unshift(p.intersectRect(r, a)), n.points.push(p.intersectRect(i, o));
1764
- });
1765
- }
1766
- function fixupEdgeLabelCoords(e) {
1767
- e.edges().forEach((t) => {
1768
- let n = e.edge(t);
1769
- if (Object.hasOwn(n, "x")) switch ((n.labelpos === "l" || n.labelpos === "r") && (n.width -= n.labeloffset), n.labelpos) {
1770
- case "l":
1771
- n.x -= n.width / 2 + n.labeloffset;
1772
- break;
1773
- case "r":
1774
- n.x += n.width / 2 + n.labeloffset;
1775
- break;
1776
- }
1777
- });
1778
- }
1779
- function reversePointsForReversedEdges(e) {
1780
- e.edges().forEach((t) => {
1781
- let n = e.edge(t);
1782
- n.reversed && n.points.reverse();
1783
- });
1784
- }
1785
- function removeBorderNodes(e) {
1786
- e.nodes().forEach((t) => {
1787
- if (e.children(t).length) {
1788
- let n = e.node(t), r = e.node(n.borderTop), i = e.node(n.borderBottom), a = e.node(n.borderLeft[n.borderLeft.length - 1]), o = e.node(n.borderRight[n.borderRight.length - 1]);
1789
- n.width = Math.abs(o.x - a.x), n.height = Math.abs(i.y - r.y), n.x = a.x + n.width / 2, n.y = r.y + n.height / 2;
1790
- }
1791
- }), e.nodes().forEach((t) => {
1792
- e.node(t).dummy === "border" && e.removeNode(t);
1793
- });
1794
- }
1795
- function removeSelfEdges(e) {
1796
- e.edges().forEach((t) => {
1797
- if (t.v === t.w) {
1798
- var n = e.node(t.v);
1799
- n.selfEdges ||= [], n.selfEdges.push({
1800
- e: t,
1801
- label: e.edge(t)
1802
- }), e.removeEdge(t);
1803
- }
1804
- });
1805
- }
1806
- function insertSelfEdges(e) {
1807
- p.buildLayerMatrix(e).forEach((t) => {
1808
- var n = 0;
1809
- t.forEach((t, r) => {
1810
- var i = e.node(t);
1811
- i.order = r + n, (i.selfEdges || []).forEach((t) => {
1812
- p.addDummyNode(e, "selfedge", {
1813
- width: t.label.width,
1814
- height: t.label.height,
1815
- rank: i.rank,
1816
- order: r + ++n,
1817
- e: t.e,
1818
- label: t.label
1819
- }, "_se");
1820
- }), delete i.selfEdges;
1821
- });
1822
- });
1823
- }
1824
- function positionSelfEdges(e) {
1825
- e.nodes().forEach((t) => {
1826
- var n = e.node(t);
1827
- if (n.dummy === "selfedge") {
1828
- var r = e.node(n.e.v), i = r.x + r.width / 2, a = r.y, o = n.x - i, s = r.height / 2;
1829
- e.setEdge(n.e, n.label), e.removeNode(t), n.label.points = [
1830
- {
1831
- x: i + 2 * o / 3,
1832
- y: a - s
1833
- },
1834
- {
1835
- x: i + 5 * o / 6,
1836
- y: a - s
1837
- },
1838
- {
1839
- x: i + o,
1840
- y: a
1841
- },
1842
- {
1843
- x: i + 5 * o / 6,
1844
- y: a + s
1845
- },
1846
- {
1847
- x: i + 2 * o / 3,
1848
- y: a + s
1849
- }
1850
- ], n.label.x = n.x, n.label.y = n.y;
1851
- }
1852
- });
1853
- }
1854
- function selectNumberAttrs(e, t) {
1855
- return p.mapValues(p.pick(e, t), Number);
1856
- }
1857
- function canonicalize(e) {
1858
- var t = {};
1859
- return e && Object.entries(e).forEach(([e, n]) => {
1860
- typeof e == "string" && (e = e.toLowerCase()), t[e] = n;
1861
- }), t;
1862
- }
1863
- })), G = /* @__PURE__ */ e(((e, t) => {
1864
- var n = S(), r = y().Graph;
1865
- t.exports = { debugOrdering };
1866
- /* istanbul ignore next */
1867
- function debugOrdering(e) {
1868
- let t = n.buildLayerMatrix(e), i = new r({
1869
- compound: !0,
1870
- multigraph: !0
1871
- }).setGraph({});
1872
- return e.nodes().forEach((t) => {
1873
- i.setNode(t, { label: t }), i.setParent(t, "layer" + e.node(t).rank);
1874
- }), e.edges().forEach((e) => i.setEdge(e.v, e.w, {}, e.name)), t.forEach((e, t) => {
1875
- let n = "layer" + t;
1876
- i.setNode(n, { rank: "same" }), e.reduce((e, t) => (i.setEdge(e, t, { style: "invis" }), t));
1877
- }), i;
1878
- }
1879
- })), K = /* @__PURE__ */ e(((e, t) => {
1880
- t.exports = "1.1.8";
1881
- })), q = /* @__PURE__ */ e(((e, t) => {
1882
- t.exports = {
1883
- graphlib: y(),
1884
- layout: W(),
1885
- debug: G(),
1886
- util: {
1887
- time: S().time,
1888
- notime: S().notime
1889
- },
1890
- version: K()
1891
- };
1892
- }));
1893
- //#endregion
1894
- export { q as t };