@dpuse/dpuse-tool-d3 0.0.9 → 0.0.11

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