@dpuse/dpuse-tool-d3-visualiser 0.0.18 → 0.0.22

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.
@@ -1,21 +1,21 @@
1
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";
2
+ import { a as t, n, o as r, r as i, t as a } from "./point-BwTGxj8U.js";
3
+ import { t as o } from "./linear-J4iYa1Bf.js";
4
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));
5
+ function s(e, s) {
6
+ var c = r(!0), l = null, u = o, d = null, f = t(p);
7
+ e = typeof e == "function" ? e : e === void 0 ? a : r(e), s = typeof s == "function" ? s : s === void 0 ? n : r(s);
8
+ function p(t) {
9
+ var n, r = (t = i(t)).length, a, o = !1, p;
10
+ for (l ?? (d = u(p = f())), n = 0; n <= r; ++n) !(n < r && c(a = t[n], n, t)) === o && ((o = !o) ? d.lineStart() : d.lineEnd()), o && d.point(+e(a, n, t), +s(a, n, t));
11
11
  if (p) return d = null, p + "" || null;
12
12
  }
13
13
  return p.x = function(t) {
14
- return arguments.length ? (e = typeof t == "function" ? t : n(+t), p) : e;
14
+ return arguments.length ? (e = typeof t == "function" ? t : r(+t), p) : e;
15
15
  }, p.y = function(e) {
16
- return arguments.length ? (i = typeof e == "function" ? e : n(+e), p) : i;
16
+ return arguments.length ? (s = typeof e == "function" ? e : r(+e), p) : s;
17
17
  }, p.defined = function(e) {
18
- return arguments.length ? (c = typeof e == "function" ? e : n(!!e), p) : c;
18
+ return arguments.length ? (c = typeof e == "function" ? e : r(!!e), p) : c;
19
19
  }, p.curve = function(e) {
20
20
  return arguments.length ? (u = e, l != null && (d = u(l)), p) : u;
21
21
  }, p.context = function(e) {
@@ -24,29 +24,29 @@ function c(e, i) {
24
24
  }
25
25
  //#endregion
26
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, {
27
+ var c = Object.defineProperty, l = (e, t, n) => t in e ? c(e, t, {
28
28
  enumerable: !0,
29
29
  configurable: !0,
30
30
  writable: !0,
31
31
  value: n
32
- }) : e[t] = n, d = (e, t) => {
33
- for (var n in t) l(e, n, {
32
+ }) : e[t] = n, u = (e, t) => {
33
+ for (var n in t) c(e, n, {
34
34
  get: t[n],
35
35
  enumerable: !0
36
36
  });
37
- }, f = (e, t, n) => u(e, typeof t == "symbol" ? t : t + "", n), p = {};
38
- d(p, {
39
- Graph: () => g,
37
+ }, d = (e, t, n) => l(e, typeof t == "symbol" ? t : t + "", n), f = {};
38
+ u(f, {
39
+ Graph: () => h,
40
40
  alg: () => S,
41
- json: () => te,
42
- version: () => ee
41
+ json: () => ee,
42
+ version: () => x
43
43
  });
44
- var m = Object.defineProperty, h = (e, t) => {
45
- for (var n in t) m(e, n, {
44
+ var p = Object.defineProperty, m = (e, t) => {
45
+ for (var n in t) p(e, n, {
46
46
  get: t[n],
47
47
  enumerable: !0
48
48
  });
49
- }, g = class {
49
+ }, h = class {
50
50
  constructor(e) {
51
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
52
  }
@@ -181,15 +181,15 @@ var m = Object.defineProperty, h = (e, t) => {
181
181
  setEdge(e, t, n, r) {
182
182
  let i, a, o, s, c = !1;
183
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);
184
+ let l = v(this._isDirected, i, a, o);
185
185
  if (l in this._edgeLabels) return c && (this._edgeLabels[l] = s), this;
186
186
  if (o !== void 0 && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
187
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;
188
+ let u = y(this._isDirected, i, a, o);
189
+ return i = u.v, a = u.w, Object.freeze(u), this._edgeObjs[l] = u, g(this._preds[a], i), g(this._sucs[i], a), this._in[a][l] = u, this._out[i][l] = u, this._edgeCount++, this;
190
190
  }
191
191
  edge(e, t, n) {
192
- let r = arguments.length === 1 ? x(this._isDirected, e) : y(this._isDirected, e, t, n);
192
+ let r = arguments.length === 1 ? b(this._isDirected, e) : v(this._isDirected, e, t, n);
193
193
  return this._edgeLabels[r];
194
194
  }
195
195
  edgeAsObj(e, t, n) {
@@ -197,13 +197,13 @@ var m = Object.defineProperty, h = (e, t) => {
197
197
  return typeof r == "object" ? r : { label: r };
198
198
  }
199
199
  hasEdge(e, t, n) {
200
- return (arguments.length === 1 ? x(this._isDirected, e) : y(this._isDirected, e, t, n)) in this._edgeLabels;
200
+ return (arguments.length === 1 ? b(this._isDirected, e) : v(this._isDirected, e, t, n)) in this._edgeLabels;
201
201
  }
202
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];
203
+ let r = arguments.length === 1 ? b(this._isDirected, e) : v(this._isDirected, e, t, n), i = this._edgeObjs[r];
204
204
  if (i) {
205
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--;
206
+ delete this._edgeLabels[r], delete this._edgeObjs[r], _(this._preds[t], e), _(this._sucs[e], t), delete this._in[t][r], delete this._out[e][r], this._edgeCount--;
207
207
  }
208
208
  return this;
209
209
  }
@@ -228,13 +228,13 @@ var m = Object.defineProperty, h = (e, t) => {
228
228
  return n ? r.filter((e) => e.v === t && e.w === n || e.v === n && e.w === t) : r;
229
229
  }
230
230
  };
231
- function _(e, t) {
231
+ function g(e, t) {
232
232
  e[t] ? e[t]++ : e[t] = 1;
233
233
  }
234
- function v(e, t) {
234
+ function _(e, t) {
235
235
  e[t] !== void 0 && !--e[t] && delete e[t];
236
236
  }
237
- function y(e, t, n, r) {
237
+ function v(e, t, n, r) {
238
238
  let i = "" + t, a = "" + n;
239
239
  if (!e && i > a) {
240
240
  let e = i;
@@ -242,7 +242,7 @@ function y(e, t, n, r) {
242
242
  }
243
243
  return i + "" + a + "" + (r === void 0 ? "\0" : r);
244
244
  }
245
- function b(e, t, n, r) {
245
+ function y(e, t, n, r) {
246
246
  let i = "" + t, a = "" + n;
247
247
  if (!e && i > a) {
248
248
  let e = i;
@@ -254,33 +254,33 @@ function b(e, t, n, r) {
254
254
  };
255
255
  return r && (o.name = r), o;
256
256
  }
257
- function x(e, t) {
258
- return y(e, t.v, t.w, t.name);
257
+ function b(e, t) {
258
+ return v(e, t.v, t.w, t.name);
259
259
  }
260
- var ee = "4.0.1", te = {};
261
- h(te, {
262
- read: () => ae,
263
- write: () => ne
260
+ var x = "4.0.1", ee = {};
261
+ m(ee, {
262
+ read: () => ie,
263
+ write: () => te
264
264
  });
265
- function ne(e) {
265
+ function te(e) {
266
266
  let t = {
267
267
  options: {
268
268
  directed: e.isDirected(),
269
269
  multigraph: e.isMultigraph(),
270
270
  compound: e.isCompound()
271
271
  },
272
- nodes: re(e),
273
- edges: ie(e)
272
+ nodes: ne(e),
273
+ edges: re(e)
274
274
  }, n = e.graph();
275
275
  return n !== void 0 && (t.value = structuredClone(n)), t;
276
276
  }
277
- function re(e) {
277
+ function ne(e) {
278
278
  return e.nodes().map((t) => {
279
279
  let n = e.node(t), r = e.parent(t), i = { v: t };
280
280
  return n !== void 0 && (i.value = n), r !== void 0 && (i.parent = r), i;
281
281
  });
282
282
  }
283
- function ie(e) {
283
+ function re(e) {
284
284
  return e.edges().map((t) => {
285
285
  let n = e.edge(t), r = {
286
286
  v: t.v,
@@ -289,8 +289,8 @@ function ie(e) {
289
289
  return t.name !== void 0 && (r.name = t.name), n !== void 0 && (r.value = n), r;
290
290
  });
291
291
  }
292
- function ae(e) {
293
- let t = new g(e.options);
292
+ function ie(e) {
293
+ let t = new h(e.options);
294
294
  return e.value !== void 0 && t.setGraph(e.value), e.nodes.forEach((e) => {
295
295
  t.setNode(e.v, e.value), e.parent && t.setParent(e.v, e.parent);
296
296
  }), e.edges.forEach((e) => {
@@ -302,29 +302,29 @@ function ae(e) {
302
302
  }), t;
303
303
  }
304
304
  var S = {};
305
- h(S, {
305
+ m(S, {
306
306
  CycleException: () => T,
307
307
  bellmanFord: () => C,
308
- components: () => ce,
308
+ components: () => se,
309
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
310
+ dijkstraAll: () => de,
311
+ findCycles: () => pe,
312
+ floydWarshall: () => he,
313
+ isAcyclic: () => ve,
314
+ postorder: () => Se,
315
+ preorder: () => Ce,
316
+ prim: () => we,
317
+ shortestPaths: () => Te,
318
+ tarjan: () => fe,
319
+ topsort: () => _e
320
320
  });
321
- var oe = () => 1;
321
+ var ae = () => 1;
322
322
  function C(e, t, n, r) {
323
- return se(e, String(t), n || oe, r || function(t) {
323
+ return oe(e, String(t), n || ae, r || function(t) {
324
324
  return e.outEdges(t);
325
325
  });
326
326
  }
327
- function se(e, t, n, r) {
327
+ function oe(e, t, n, r) {
328
328
  let i = {}, a, o = 0, s = e.nodes(), c = function(e) {
329
329
  let t = n(e);
330
330
  i[e.v].distance + t < i[e.w].distance && (i[e.w] = {
@@ -353,7 +353,7 @@ function se(e, t, n, r) {
353
353
  if (o === u - 1 && (a = !1, l(), a)) throw Error("The graph contains a negative weight cycle");
354
354
  return i;
355
355
  }
356
- function ce(e) {
356
+ function se(e) {
357
357
  let t = {}, n = [], r;
358
358
  function i(n) {
359
359
  n in t || (t[n] = !0, r.push(n), e.successors(n).forEach(i), e.predecessors(n).forEach(i));
@@ -362,7 +362,7 @@ function ce(e) {
362
362
  r = [], i(e), r.length && n.push(r);
363
363
  }), n;
364
364
  }
365
- var le = class {
365
+ var ce = class {
366
366
  constructor() {
367
367
  this._arr = [], this._keyIndices = {};
368
368
  }
@@ -418,14 +418,14 @@ var le = class {
418
418
  let n = this._arr, r = this._keyIndices, i = n[e], a = n[t];
419
419
  n[e] = a, n[t] = i, r[a.key] = e, r[i.key] = t;
420
420
  }
421
- }, ue = () => 1;
421
+ }, le = () => 1;
422
422
  function w(e, t, n, r) {
423
- return de(e, String(t), n || ue, r || function(t) {
423
+ return ue(e, String(t), n || le, r || function(t) {
424
424
  return e.outEdges(t);
425
425
  });
426
426
  }
427
- function de(e, t, n, r) {
428
- let i = {}, a = new le(), o, s, c = function(e) {
427
+ function ue(e, t, n, r) {
428
+ let i = {}, a = new ce(), o, s, c = function(e) {
429
429
  let t = e.v === o ? e.w : e.v, r = i[t], c = n(e), l = s.distance + c;
430
430
  if (c < 0) throw Error("dijkstra does not allow negative edge weights. Bad edge: " + e + " Weight: " + c);
431
431
  l < r.distance && (r.distance = l, r.predecessor = o, a.decrease(t, l));
@@ -439,12 +439,12 @@ function de(e, t, n, r) {
439
439
  }); a.size() > 0 && (o = a.removeMin(), s = i[o], s.distance !== Infinity);) r(o).forEach(c);
440
440
  return i;
441
441
  }
442
- function fe(e, t, n) {
442
+ function de(e, t, n) {
443
443
  return e.nodes().reduce(function(r, i) {
444
444
  return r[i] = w(e, i, t, n), r;
445
445
  }, {});
446
446
  }
447
- function pe(e) {
447
+ function fe(e) {
448
448
  let t = 0, n = [], r = {}, i = [];
449
449
  function a(o) {
450
450
  let s = r[o] = {
@@ -466,18 +466,18 @@ function pe(e) {
466
466
  e in r || a(e);
467
467
  }), i;
468
468
  }
469
- function me(e) {
470
- return pe(e).filter(function(t) {
469
+ function pe(e) {
470
+ return fe(e).filter(function(t) {
471
471
  return t.length > 1 || t.length === 1 && e.hasEdge(t[0], t[0]);
472
472
  });
473
473
  }
474
- var he = () => 1;
475
- function ge(e, t, n) {
476
- return _e(e, t || he, n || function(t) {
474
+ var me = () => 1;
475
+ function he(e, t, n) {
476
+ return ge(e, t || me, n || function(t) {
477
477
  return e.outEdges(t);
478
478
  });
479
479
  }
480
- function _e(e, t, n) {
480
+ function ge(e, t, n) {
481
481
  let r = {}, i = e.nodes();
482
482
  return i.forEach(function(e) {
483
483
  r[e] = {}, r[e][e] = {
@@ -511,7 +511,7 @@ var T = class extends Error {
511
511
  super(...e);
512
512
  }
513
513
  };
514
- function ve(e) {
514
+ function _e(e) {
515
515
  let t = {}, n = {}, r = [];
516
516
  function i(a) {
517
517
  if (a in n) throw new T();
@@ -520,41 +520,41 @@ function ve(e) {
520
520
  if (e.sinks().forEach(i), Object.keys(t).length !== e.nodeCount()) throw new T();
521
521
  return r;
522
522
  }
523
- function ye(e) {
523
+ function ve(e) {
524
524
  try {
525
- ve(e);
525
+ _e(e);
526
526
  } catch (e) {
527
527
  if (e instanceof T) return !1;
528
528
  throw e;
529
529
  }
530
530
  return !0;
531
531
  }
532
- function be(e, t, n, r, i) {
532
+ function ye(e, t, n, r, i) {
533
533
  Array.isArray(t) || (t = [t]);
534
534
  let a = ((t) => (e.isDirected() ? e.successors(t) : e.neighbors(t)) ?? []), o = {};
535
535
  return t.forEach(function(t) {
536
536
  if (!e.hasNode(t)) throw Error("Graph does not have node: " + t);
537
- i = E(e, t, n === "post", o, a, r, i);
537
+ i = be(e, t, n === "post", o, a, r, i);
538
538
  }), i;
539
539
  }
540
- function E(e, t, n, r, i, a, o) {
540
+ function be(e, t, n, r, i, a, o) {
541
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);
542
+ o = be(e, t, n, r, i, a, o);
543
543
  }), n && (o = a(o, t))), o;
544
544
  }
545
- function D(e, t, n) {
546
- return be(e, t, n, function(e, t) {
545
+ function xe(e, t, n) {
546
+ return ye(e, t, n, function(e, t) {
547
547
  return e.push(t), e;
548
548
  }, []);
549
549
  }
550
- function xe(e, t) {
551
- return D(e, t, "post");
552
- }
553
550
  function Se(e, t) {
554
- return D(e, t, "pre");
551
+ return xe(e, t, "post");
555
552
  }
556
553
  function Ce(e, t) {
557
- let n = new g(), r = {}, i = new le(), a;
554
+ return xe(e, t, "pre");
555
+ }
556
+ function we(e, t) {
557
+ let n = new h(), r = {}, i = new ce(), a;
558
558
  function o(e) {
559
559
  let n = e.v === a ? e.w : e.v, o = i.priority(n);
560
560
  if (o !== void 0) {
@@ -577,10 +577,10 @@ function Ce(e, t) {
577
577
  }
578
578
  return n;
579
579
  }
580
- function we(e, t, n, r) {
581
- return Te(e, t, n, r ?? ((t) => e.outEdges(t) ?? []));
582
- }
583
580
  function Te(e, t, n, r) {
581
+ return Ee(e, t, n, r ?? ((t) => e.outEdges(t) ?? []));
582
+ }
583
+ function Ee(e, t, n, r) {
584
584
  if (n === void 0) return w(e, t, n, r);
585
585
  let i = !1, a = e.nodes();
586
586
  for (let o = 0; o < a.length; o++) {
@@ -596,13 +596,13 @@ function Te(e, t, n, r) {
596
596
  }
597
597
  return w(e, t, n, r);
598
598
  }
599
- function O(e, t, n, r) {
599
+ function E(e, t, n, r) {
600
600
  let i = r;
601
- for (; e.hasNode(i);) i = I(r);
601
+ for (; e.hasNode(i);) i = P(r);
602
602
  return n.dummy = t, e.setNode(i, n), i;
603
603
  }
604
- function Ee(e) {
605
- let t = new g().setGraph(e.graph());
604
+ function De(e) {
605
+ let t = new h().setGraph(e.graph());
606
606
  return e.nodes().forEach((n) => t.setNode(n, e.node(n))), e.edges().forEach((n) => {
607
607
  let r = t.edge(n.v, n.w) || {
608
608
  weight: 0,
@@ -614,15 +614,15 @@ function Ee(e) {
614
614
  });
615
615
  }), t;
616
616
  }
617
- function k(e) {
618
- let t = new g({ multigraph: e.isMultigraph() }).setGraph(e.graph());
617
+ function D(e) {
618
+ let t = new h({ multigraph: e.isMultigraph() }).setGraph(e.graph());
619
619
  return e.nodes().forEach((n) => {
620
620
  e.children(n).length || t.setNode(n, e.node(n));
621
621
  }), e.edges().forEach((n) => {
622
622
  t.setEdge(n, e.edge(n));
623
623
  }), t;
624
624
  }
625
- function A(e, t) {
625
+ function O(e, t) {
626
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
627
  if (!i && !a) throw Error("Not possible to find intersection inside of the rectangle");
628
628
  let c, l;
@@ -631,25 +631,25 @@ function A(e, t) {
631
631
  y: r + l
632
632
  };
633
633
  }
634
- function j(e) {
635
- let t = L(F(e) + 1).map(() => []);
634
+ function k(e) {
635
+ let t = F(N(e) + 1).map(() => []);
636
636
  return e.nodes().forEach((n) => {
637
637
  let r = e.node(n), i = r.rank;
638
638
  i !== void 0 && (t[i] || (t[i] = []), t[i][r.order] = n);
639
639
  }), t;
640
640
  }
641
- function De(e) {
641
+ function Oe(e) {
642
642
  let t = e.nodes().map((t) => {
643
643
  let n = e.node(t).rank;
644
644
  return n === void 0 ? Number.MAX_VALUE : n;
645
- }), n = P(Math.min, t);
645
+ }), n = M(Math.min, t);
646
646
  e.nodes().forEach((t) => {
647
647
  let r = e.node(t);
648
648
  Object.hasOwn(r, "rank") && (r.rank -= n);
649
649
  });
650
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 = [];
651
+ function ke(e) {
652
+ let t = e.nodes().map((t) => e.node(t).rank).filter((e) => e !== void 0), n = M(Math.min, t), r = [];
653
653
  e.nodes().forEach((t) => {
654
654
  let i = e.node(t).rank - n;
655
655
  r[i] || (r[i] = []), r[i].push(t);
@@ -659,14 +659,14 @@ function Oe(e) {
659
659
  t === void 0 && n % a !== 0 ? --i : t !== void 0 && i && t.forEach((t) => e.node(t).rank += i);
660
660
  });
661
661
  }
662
- function M(e, t, n, r) {
662
+ function A(e, t, n, r) {
663
663
  let i = {
664
664
  width: 0,
665
665
  height: 0
666
666
  };
667
- return arguments.length >= 4 && (i.rank = n, i.order = r), O(e, "border", i, t);
667
+ return arguments.length >= 4 && (i.rank = n, i.order = r), E(e, "border", i, t);
668
668
  }
669
- function ke(e, t = N) {
669
+ function Ae(e, t = j) {
670
670
  let n = [];
671
671
  for (let r = 0; r < e.length; r += t) {
672
672
  let i = e.slice(r, r + t);
@@ -674,18 +674,18 @@ function ke(e, t = N) {
674
674
  }
675
675
  return n;
676
676
  }
677
- var N = 65535;
678
- function P(e, t) {
679
- return t.length > N ? e(...ke(t).map((t) => e(...t))) : e(...t);
677
+ var j = 65535;
678
+ function M(e, t) {
679
+ return t.length > j ? e(...Ae(t).map((t) => e(...t))) : e(...t);
680
680
  }
681
- function F(e) {
681
+ function N(e) {
682
682
  let t = e.nodes().map((t) => {
683
683
  let n = e.node(t).rank;
684
684
  return n === void 0 ? Number.MIN_VALUE : n;
685
685
  });
686
- return P(Math.max, t);
686
+ return M(Math.max, t);
687
687
  }
688
- function Ae(e, t) {
688
+ function je(e, t) {
689
689
  let n = {
690
690
  lhs: [],
691
691
  rhs: []
@@ -694,22 +694,14 @@ function Ae(e, t) {
694
694
  t(e) ? n.lhs.push(e) : n.rhs.push(e);
695
695
  }), n;
696
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
697
  function Me(e, t) {
706
698
  return t();
707
699
  }
708
700
  var Ne = 0;
709
- function I(e) {
701
+ function P(e) {
710
702
  return e + ("" + ++Ne);
711
703
  }
712
- function L(e, t, n = 1) {
704
+ function F(e, t, n = 1) {
713
705
  t ?? (t = e, e = 0);
714
706
  let r = (e) => e < t;
715
707
  n < 0 && (r = (e) => t < e);
@@ -717,21 +709,31 @@ function L(e, t, n = 1) {
717
709
  for (let t = e; r(t); t += n) i.push(t);
718
710
  return i;
719
711
  }
720
- function R(e, t) {
712
+ function I(e, t) {
721
713
  let n = {};
722
714
  for (let r of t) e[r] !== void 0 && (n[r] = e[r]);
723
715
  return n;
724
716
  }
725
- function z(e, t) {
717
+ function L(e, t) {
726
718
  let n;
727
719
  return n = typeof t == "string" ? (e) => e[t] : t, Object.entries(e).reduce((e, [t, r]) => (e[t] = n(r, t), e), {});
728
720
  }
729
721
  function Pe(e, t) {
730
722
  return e.reduce((e, n, r) => (e[n] = t[r], e), {});
731
723
  }
732
- var B = "\0", Fe = class {
724
+ var R = "\0";
725
+ function z(e, t, n) {
726
+ if (!(e && t && n && t.dummy === "edge" && n.dummy === "edge" && t.edgeObj && n.edgeObj && e[t.edgeObj.v] && e[n.edgeObj.v] && e[t.edgeObj.w] && e[n.edgeObj.w])) return 0;
727
+ let r = !0;
728
+ t.edgeObj.w === n.edgeObj.w && (r = !1);
729
+ let i = r ? e[t.edgeObj.v]?.rank ?? NaN : e[t.edgeObj.w]?.rank ?? NaN, a = Object.entries(e).find((e) => e[1].edgeObj?.v === t.edgeObj.v && e[1].edgeObj?.w === t.edgeObj.w && e[1].rank === i), o = Object.entries(e).find((e) => e[1].edgeObj?.v === n.edgeObj.v && e[1].edgeObj?.w === n.edgeObj.w && e[1].rank === i);
730
+ if (!a || !o) return 0;
731
+ let s = a[1].order ?? NaN, c = o[1].order ?? NaN;
732
+ return isNaN(s - c) ? 0 : s - c;
733
+ }
734
+ var Fe = class {
733
735
  constructor() {
734
- f(this, "_sentinel");
736
+ d(this, "_sentinel");
735
737
  let e = {};
736
738
  e._next = e._prev = e, this._sentinel = e;
737
739
  }
@@ -764,32 +766,32 @@ function Be(e, t) {
764
766
  function Ve(e, t, n) {
765
767
  let r = [], i = t[t.length - 1], a = t[0], o;
766
768
  for (; e.nodeCount();) {
767
- for (; o = a.dequeue();) V(e, t, n, o);
768
- for (; o = i.dequeue();) V(e, t, n, o);
769
+ for (; o = a.dequeue();) B(e, t, n, o);
770
+ for (; o = i.dequeue();) B(e, t, n, o);
769
771
  if (e.nodeCount()) {
770
772
  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) || []);
773
+ r = r.concat(B(e, t, n, o, !0) || []);
772
774
  break;
773
775
  }
774
776
  }
775
777
  }
776
778
  return r;
777
779
  }
778
- function V(e, t, n, r, i) {
780
+ function B(e, t, n, r, i) {
779
781
  let a = [], o = i ? a : void 0;
780
782
  return (e.inEdges(r.v) || []).forEach((r) => {
781
783
  let o = e.edge(r), s = e.node(r.v);
782
784
  i && a.push({
783
785
  v: r.v,
784
786
  w: r.w
785
- }), s.out -= o, H(t, n, s);
787
+ }), s.out -= o, V(t, n, s);
786
788
  }), (e.outEdges(r.v) || []).forEach((r) => {
787
789
  let i = e.edge(r), a = r.w, o = e.node(a);
788
- o.in -= i, H(t, n, o);
790
+ o.in -= i, V(t, n, o);
789
791
  }), e.removeNode(r.v), o;
790
792
  }
791
793
  function He(e, t) {
792
- let n = new g(), r = 0, i = 0;
794
+ let n = new h(), r = 0, i = 0;
793
795
  e.nodes().forEach((e) => {
794
796
  n.setNode(e, {
795
797
  v: e,
@@ -804,14 +806,14 @@ function He(e, t) {
804
806
  });
805
807
  let a = Ue(i + r + 3).map(() => new Re()), o = r + 1;
806
808
  return n.nodes().forEach((e) => {
807
- H(a, o, n.node(e));
809
+ V(a, o, n.node(e));
808
810
  }), {
809
811
  graph: n,
810
812
  buckets: a,
811
813
  zeroIdx: o
812
814
  };
813
815
  }
814
- function H(e, t, n) {
816
+ function V(e, t, n) {
815
817
  var r, i, a;
816
818
  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
819
  }
@@ -820,23 +822,30 @@ function Ue(e) {
820
822
  for (let n = 0; n < e; n++) t.push(n);
821
823
  return t;
822
824
  }
823
- function We(e) {
824
- (e.graph().acyclicer === "greedy" ? Be(e, t(e)) : Ge(e)).forEach((t) => {
825
+ function We(e, t) {
826
+ (e.graph().acyclicer === "greedy" ? Be(e, n(e)) : Ge(e, t ?? null)).forEach((t) => {
825
827
  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"));
828
+ e.removeEdge(t), n.forwardName = t.name, n.reversed = !0, e.setEdge(t.w, t.v, n, P("rev"));
827
829
  });
828
- function t(e) {
830
+ function n(e) {
829
831
  return (t) => e.edge(t).weight;
830
832
  }
831
833
  }
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]);
834
+ function Ge(e, t) {
835
+ let n = [], r = {}, i = {};
836
+ function a(t) {
837
+ Object.hasOwn(i, t) || (i[t] = !0, r[t] = !0, e.outEdges(t).forEach((e) => {
838
+ Object.hasOwn(r, e.w) ? n.push(e) : a(e.w);
839
+ }), delete r[t]);
840
+ }
841
+ function o(a) {
842
+ var s;
843
+ Object.hasOwn(i, a) || (i[a] = !0, r[a] = !0, (s = e.outEdges(a)) == null || s.forEach((i) => {
844
+ Object.hasOwn(r, i.w) || t.node(a)?.rank > t.node(i.w)?.rank && qe(e, i.w, i) ? n.push(i) : o(i.w);
845
+ }), delete r[a]);
838
846
  }
839
- return e.nodes().forEach(i), t;
847
+ let s = a;
848
+ return t && typeof t.node == "function" && (s = o), e.sources().forEach(s), e.nodes().forEach(s), n;
840
849
  }
841
850
  function Ke(e) {
842
851
  e.edges().forEach((t) => {
@@ -848,10 +857,20 @@ function Ke(e) {
848
857
  }
849
858
  });
850
859
  }
851
- function qe(e) {
852
- e.graph().dummyChains = [], e.edges().forEach((t) => Je(e, t));
860
+ function qe(e, t, n) {
861
+ let r = /* @__PURE__ */ new Set();
862
+ function i(t) {
863
+ if (e.sources().includes(t)) return !0;
864
+ r.add(t);
865
+ for (let a of e.inEdges(t) ?? []) if ((a.v !== n.v || a.w !== n.w) && !r.has(a.v) && i(a.v)) return !0;
866
+ return !1;
867
+ }
868
+ return i(t);
869
+ }
870
+ function Je(e) {
871
+ e.graph().dummyChains = [], e.edges().forEach((t) => Ye(e, t));
853
872
  }
854
- function Je(e, t) {
873
+ function Ye(e, t) {
855
874
  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
875
  if (a === r + 1) return;
857
876
  e.removeEdge(t);
@@ -862,10 +881,10 @@ function Je(e, t) {
862
881
  edgeLabel: s,
863
882
  edgeObj: t,
864
883
  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;
884
+ }, l = E(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
885
  e.setEdge(n, i, { weight: s.weight }, o);
867
886
  }
868
- function Ye(e) {
887
+ function Xe(e) {
869
888
  e.graph().dummyChains.forEach((t) => {
870
889
  let n = e.node(t), r = n.edgeLabel, i;
871
890
  for (e.setEdge(n.edgeObj, r); n.dummy;) i = e.successors(t)[0], e.removeNode(t), r.points.push({
@@ -874,67 +893,67 @@ function Ye(e) {
874
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);
875
894
  });
876
895
  }
877
- function U(e) {
896
+ function H(e) {
878
897
  let t = {};
879
898
  function n(r) {
880
899
  let i = e.node(r);
881
900
  if (Object.hasOwn(t, r)) return i.rank;
882
901
  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);
902
+ let a = e.outEdges(r), o = a ? a.map((t) => t == null ? Infinity : n(t.w) - e.edge(t).minlen) : [], s = M(Math.min, o);
884
903
  return s === Infinity && (s = 0), i.rank = s;
885
904
  }
886
905
  e.sources().forEach(n);
887
906
  }
888
- function W(e, t) {
907
+ function U(e, t) {
889
908
  return e.node(t.w).rank - e.node(t.v).rank - e.edge(t).minlen;
890
909
  }
891
- var Xe = Ze;
892
- function Ze(e) {
893
- let t = new g({ directed: !1 }), n = e.nodes();
910
+ var Ze = Qe;
911
+ function Qe(e) {
912
+ let t = new h({ directed: !1 }), n = e.nodes();
894
913
  if (n.length === 0) throw Error("Graph must have at least one node");
895
914
  let r = n[0], i = e.nodeCount();
896
915
  t.setNode(r, {});
897
916
  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);
917
+ for (; $e(t, e) < i && (a = et(t, e), a);) o = t.hasNode(a.v) ? U(e, a) : -U(e, a), tt(t, e, o);
899
918
  return t;
900
919
  }
901
- function Qe(e, t) {
920
+ function $e(e, t) {
902
921
  function n(r) {
903
922
  let i = t.nodeEdges(r);
904
923
  i && i.forEach((i) => {
905
924
  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));
925
+ !e.hasNode(o) && !U(t, i) && (e.setNode(o, {}), e.setEdge(r, o, {}), n(o));
907
926
  });
908
927
  }
909
928
  return e.nodes().forEach(n), e.nodeCount();
910
929
  }
911
- function $e(e, t) {
930
+ function et(e, t) {
912
931
  return t.edges().reduce((n, r) => {
913
932
  let i = Infinity;
914
- return e.hasNode(r.v) !== e.hasNode(r.w) && (i = W(t, r)), i < n[0] ? [i, r] : n;
933
+ return e.hasNode(r.v) !== e.hasNode(r.w) && (i = U(t, r)), i < n[0] ? [i, r] : n;
915
934
  }, [Infinity, null])[1];
916
935
  }
917
- function et(e, t, n) {
936
+ function tt(e, t, n) {
918
937
  e.nodes().forEach((e) => t.node(e).rank += n);
919
938
  }
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);
939
+ var { preorder: nt, postorder: rt } = S, it = W;
940
+ W.initLowLimValues = K, W.initCutValues = G, W.calcCutValue = ot, W.leaveEdge = ct, W.enterEdge = lt, W.exchangeEdges = ut;
941
+ function W(e) {
942
+ e = De(e), H(e);
943
+ let t = Ze(e);
944
+ K(t), G(t, e);
926
945
  let n, r;
927
- for (; n = st(t);) r = ct(t, e, n), lt(t, e, n, r);
946
+ for (; n = ct(t);) r = lt(t, e, n), ut(t, e, n, r);
928
947
  }
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));
948
+ function G(e, t) {
949
+ let n = rt(e, e.nodes());
950
+ n = n.slice(0, n.length - 1), n.forEach((n) => at(e, t, n));
932
951
  }
933
- function it(e, t, n) {
952
+ function at(e, t, n) {
934
953
  let r = e.node(n).parent, i = e.edge(n, r);
935
- i.cutvalue = at(e, t, n);
954
+ i.cutvalue = ot(e, t, n);
936
955
  }
937
- function at(e, t, n) {
956
+ function ot(e, t, n) {
938
957
  let r = e.node(n).parent, i = !0, a = t.edge(n, r), o = 0;
939
958
  a ||= (i = !1, t.edge(r, n)), o = a.weight;
940
959
  let s = t.nodeEdges(n);
@@ -942,82 +961,82 @@ function at(e, t, n) {
942
961
  let s = a.v === n, c = s ? a.w : a.v;
943
962
  if (c !== r) {
944
963
  let r = s === i, l = t.edge(a).weight;
945
- if (o += r ? l : -l, dt(e, n, c)) {
964
+ if (o += r ? l : -l, ft(e, n, c)) {
946
965
  let t = e.edge(n, c).cutvalue;
947
966
  o += r ? -t : t;
948
967
  }
949
968
  }
950
969
  }), o;
951
970
  }
952
- function q(e, t) {
953
- arguments.length < 2 && (t = e.nodes()[0]), ot(e, {}, 1, t);
971
+ function K(e, t) {
972
+ arguments.length < 2 && (t = e.nodes()[0]), st(e, {}, 1, t);
954
973
  }
955
- function ot(e, t, n, r, i) {
974
+ function st(e, t, n, r, i) {
956
975
  let a = n, o = e.node(r);
957
976
  t[r] = !0;
958
977
  let s = e.neighbors(r);
959
978
  return s && s.forEach((i) => {
960
- Object.hasOwn(t, i) || (n = ot(e, t, n, i, r));
979
+ Object.hasOwn(t, i) || (n = st(e, t, n, i, r));
961
980
  }), o.low = a, o.lim = n++, i ? o.parent = i : delete o.parent, n;
962
981
  }
963
- function st(e) {
982
+ function ct(e) {
964
983
  return e.edges().find((t) => e.edge(t).cutvalue < 0);
965
984
  }
966
- function ct(e, t, n) {
985
+ function lt(e, t, n) {
967
986
  let r = n.v, i = n.w;
968
987
  t.hasEdge(r, i) || (r = n.w, i = n.v);
969
988
  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);
989
+ return a.lim > o.lim && (s = o, c = !0), t.edges().filter((t) => c === pt(e, e.node(t.v), s) && c !== pt(e, e.node(t.w), s)).reduce((e, n) => U(t, n) < U(t, e) ? n : e);
971
990
  }
972
- function lt(e, t, n, r) {
991
+ function ut(e, t, n, r) {
973
992
  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);
993
+ e.removeEdge(i, a), e.setEdge(r.v, r.w, {}), K(e), G(e, t), dt(e, t);
975
994
  }
976
- function ut(e, t) {
995
+ function dt(e, t) {
977
996
  let n = e.nodes().find((t) => !e.node(t).parent);
978
997
  if (!n) return;
979
- let r = tt(e, [n]);
998
+ let r = nt(e, [n]);
980
999
  r = r.slice(1), r.forEach((n) => {
981
1000
  let r = e.node(n).parent, i = t.edge(n, r), a = !1;
982
1001
  i || (i = t.edge(r, n), a = !0), t.node(n).rank = t.node(r).rank + (a ? i.minlen : -i.minlen);
983
1002
  });
984
1003
  }
985
- function dt(e, t, n) {
1004
+ function ft(e, t, n) {
986
1005
  return e.hasEdge(t, n);
987
1006
  }
988
- function ft(e, t, n) {
1007
+ function pt(e, t, n) {
989
1008
  return n.low <= t.lim && t.lim <= n.lim;
990
1009
  }
991
- var pt = mt;
992
- function mt(e) {
1010
+ var mt = ht;
1011
+ function ht(e) {
993
1012
  let t = e.graph().ranker;
994
1013
  if (typeof t == "function") return t(e);
995
1014
  switch (t) {
996
1015
  case "network-simplex":
997
- _t(e);
1016
+ vt(e);
998
1017
  break;
999
1018
  case "tight-tree":
1000
- gt(e);
1019
+ _t(e);
1001
1020
  break;
1002
1021
  case "longest-path":
1003
- ht(e);
1022
+ gt(e);
1004
1023
  break;
1005
1024
  case "none": break;
1006
- default: _t(e);
1025
+ default: vt(e);
1007
1026
  }
1008
1027
  }
1009
- var ht = U;
1010
- function gt(e) {
1011
- U(e), Xe(e);
1012
- }
1028
+ var gt = H;
1013
1029
  function _t(e) {
1014
- rt(e);
1030
+ H(e), Ze(e);
1015
1031
  }
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;
1032
+ function vt(e) {
1033
+ it(e);
1034
+ }
1035
+ var yt = bt;
1036
+ function bt(e) {
1037
+ let t = St(e), n = e.graph();
1038
+ Array.isArray(n.dummyChains) && n.dummyChains.forEach((n) => {
1039
+ let r = e.node(n), i = r.edgeObj, a = xt(e, t, i.v, i.w), o = a.path, s = a.lca, c = 0, l = o[c], u = !0;
1021
1040
  for (; n !== i.w;) {
1022
1041
  if (r = e.node(n), u) {
1023
1042
  for (; (l = o[c]) !== s && e.node(l).maxRank < r.rank;) c++;
@@ -1031,7 +1050,7 @@ function yt(e) {
1031
1050
  }
1032
1051
  });
1033
1052
  }
1034
- function bt(e, t, n, r) {
1053
+ function xt(e, t, n, r) {
1035
1054
  let i = [], a = [], o = Math.min(t[n].low, t[r].low), s = Math.max(t[n].lim, t[r].lim), c;
1036
1055
  c = n;
1037
1056
  do
@@ -1044,7 +1063,7 @@ function bt(e, t, n, r) {
1044
1063
  lca: l
1045
1064
  };
1046
1065
  }
1047
- function xt(e) {
1066
+ function St(e) {
1048
1067
  let t = {}, n = 0;
1049
1068
  function r(i) {
1050
1069
  let a = n;
@@ -1053,15 +1072,17 @@ function xt(e) {
1053
1072
  lim: n++
1054
1073
  };
1055
1074
  }
1056
- return e.children(B).forEach(r), t;
1075
+ return e.children(R).forEach(r), t;
1057
1076
  }
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;
1077
+ function Ct(e) {
1078
+ let t = E(e, "root", {}, "_root"), n = wt(e), r = Object.values(n), i = M(Math.max, r) - 1, a = 2 * i + 1;
1060
1079
  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;
1080
+ let o = Tt(e) + 1;
1081
+ e.children(R).forEach((r) => {
1082
+ q(e, t, a, o, i, n, r);
1083
+ }), e.graph().nodeRankFactor = a;
1063
1084
  }
1064
- function J(e, t, n, r, i, a, o) {
1085
+ function q(e, t, n, r, i, a, o) {
1065
1086
  let s = e.children(o);
1066
1087
  if (!s.length) {
1067
1088
  o !== t && e.setEdge(t, o, {
@@ -1070,9 +1091,9 @@ function J(e, t, n, r, i, a, o) {
1070
1091
  });
1071
1092
  return;
1072
1093
  }
1073
- let c = M(e, "_bt"), l = M(e, "_bb"), u = e.node(o);
1094
+ let c = A(e, "_bt"), l = A(e, "_bb"), u = e.node(o);
1074
1095
  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);
1096
+ q(e, t, n, r, i, a, s);
1076
1097
  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
1098
  e.setEdge(c, d, {
1078
1099
  weight: p,
@@ -1088,97 +1109,101 @@ function J(e, t, n, r, i, a, o) {
1088
1109
  minlen: i + (a[o] ?? 0)
1089
1110
  });
1090
1111
  }
1091
- function Ct(e) {
1112
+ function wt(e) {
1092
1113
  let t = {};
1093
1114
  function n(r, i) {
1094
1115
  let a = e.children(r);
1095
1116
  a && a.length && a.forEach((e) => n(e, i + 1)), t[r] = i;
1096
1117
  }
1097
- return e.children(B).forEach((e) => n(e, 1)), t;
1118
+ return e.children(R).forEach((e) => n(e, 1)), t;
1098
1119
  }
1099
- function wt(e) {
1120
+ function Tt(e) {
1100
1121
  return e.edges().reduce((t, n) => t + e.edge(n).weight, 0);
1101
1122
  }
1102
- function Tt(e) {
1123
+ function Et(e) {
1103
1124
  let t = e.graph();
1104
1125
  e.removeNode(t.nestingRoot), delete t.nestingRoot, e.edges().forEach((t) => {
1105
1126
  e.edge(t).nestingEdge && e.removeEdge(t);
1106
1127
  });
1107
1128
  }
1108
- var Et = Dt;
1109
- function Dt(e) {
1129
+ var Dt = Ot;
1130
+ function Ot(e) {
1110
1131
  function t(n) {
1111
1132
  let r = e.children(n), i = e.node(n);
1112
- if (r.length && r.forEach(t), Object.hasOwn(i, "minRank")) {
1133
+ if (r.length && r.forEach(t), i && Object.hasOwn(i, "minRank")) {
1113
1134
  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);
1135
+ for (let t = i.minRank, r = i.maxRank + 1; t < r; ++t) kt(e, "borderLeft", "_bl", n, i, t), kt(e, "borderRight", "_br", n, i, t);
1115
1136
  }
1116
1137
  }
1117
- e.children(B).forEach(t);
1138
+ e.children(R).forEach(t);
1118
1139
  }
1119
- function Ot(e, t, n, r, i, a) {
1140
+ function kt(e, t, n, r, i, a) {
1120
1141
  let o = {
1121
1142
  width: 0,
1122
1143
  height: 0,
1123
1144
  rank: a,
1124
1145
  borderType: t
1125
- }, s = i[t][a - 1], c = O(e, "border", o, n);
1146
+ }, s = i[t][a - 1], c = E(e, "border", o, n);
1126
1147
  i[t][a] = c, e.setParent(c, r), s && e.setEdge(s, c, { weight: 1 });
1127
1148
  }
1128
- function kt(e) {
1129
- let t = e.graph().rankdir?.toLowerCase();
1130
- (t === "lr" || t === "rl") && jt(e);
1131
- }
1132
1149
  function At(e) {
1133
1150
  let t = e.graph().rankdir?.toLowerCase();
1134
- (t === "bt" || t === "rl") && Nt(e), (t === "lr" || t === "rl") && (Pt(e), jt(e));
1151
+ (t === "lr" || t === "rl") && Mt(e);
1135
1152
  }
1136
1153
  function jt(e) {
1137
- e.nodes().forEach((t) => Mt(e.node(t))), e.edges().forEach((t) => Mt(e.edge(t)));
1154
+ let t = e.graph().rankdir?.toLowerCase();
1155
+ (t === "bt" || t === "rl") && Pt(e), (t === "lr" || t === "rl") && (Ft(e), Mt(e));
1138
1156
  }
1139
1157
  function Mt(e) {
1158
+ e.nodes().forEach((t) => Nt(e.node(t))), e.edges().forEach((t) => Nt(e.edge(t)));
1159
+ }
1160
+ function Nt(e) {
1140
1161
  let t = e.width;
1141
1162
  e.width = e.height, e.height = t;
1142
1163
  }
1143
- function Nt(e) {
1144
- e.nodes().forEach((t) => Y(e.node(t))), e.edges().forEach((t) => {
1164
+ function Pt(e) {
1165
+ e.nodes().forEach((t) => J(e.node(t))), e.edges().forEach((t) => {
1145
1166
  var n;
1146
1167
  let r = e.edge(t);
1147
- (n = r.points) == null || n.forEach(Y), Object.hasOwn(r, "y") && Y(r);
1168
+ (n = r.points) == null || n.forEach(J), Object.hasOwn(r, "y") && J(r);
1148
1169
  });
1149
1170
  }
1150
- function Y(e) {
1171
+ function J(e) {
1151
1172
  e.y = -e.y;
1152
1173
  }
1153
- function Pt(e) {
1154
- e.nodes().forEach((t) => X(e.node(t))), e.edges().forEach((t) => {
1174
+ function Ft(e) {
1175
+ e.nodes().forEach((t) => Y(e.node(t))), e.edges().forEach((t) => {
1155
1176
  var n;
1156
1177
  let r = e.edge(t);
1157
- (n = r.points) == null || n.forEach(X), Object.hasOwn(r, "x") && X(r);
1178
+ (n = r.points) == null || n.forEach(Y), Object.hasOwn(r, "x") && Y(r);
1158
1179
  });
1159
1180
  }
1160
- function X(e) {
1181
+ function Y(e) {
1161
1182
  let t = e.x;
1162
1183
  e.x = e.y, e.y = t;
1163
1184
  }
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);
1185
+ function It(e, t = null) {
1186
+ let n = {}, r = e.nodes().filter((t) => !e.children(t).length), i = r.map((t) => e.node(t).rank), a = F(M(Math.max, i) + 1).map(() => []);
1187
+ function o(t) {
1188
+ if (n[t]) return;
1189
+ n[t] = !0;
1190
+ let r = e.node(t);
1191
+ a[r.rank].push(t);
1192
+ let i = e.successors(t);
1193
+ i && [...i].sort((e, t) => s(e, t)).forEach(o);
1173
1194
  }
1174
- return n.sort((t, n) => e.node(t).rank - e.node(n).rank).forEach(a), i;
1195
+ r.sort((t, n) => e.node(t).rank - e.node(n).rank).forEach(o);
1196
+ function s(n, r) {
1197
+ return z(t, e.node(n), e.node(r));
1198
+ }
1199
+ return a;
1175
1200
  }
1176
- function It(e, t) {
1201
+ function Lt(e, t) {
1177
1202
  let n = 0;
1178
- for (let r = 1; r < t.length; ++r) n += Lt(e, t[r - 1], t[r]);
1203
+ for (let r = 1; r < t.length; ++r) n += Rt(e, t[r - 1], t[r]);
1179
1204
  return n;
1180
1205
  }
1181
- function Lt(e, t, n) {
1206
+ function Rt(e, t, n) {
1182
1207
  let r = Pe(n, n.map((e, t) => t)), i = t.flatMap((t) => {
1183
1208
  let n = e.outEdges(t);
1184
1209
  return n ? n.map((t) => ({
@@ -1198,7 +1223,7 @@ function Lt(e, t, n) {
1198
1223
  c += e.weight * n;
1199
1224
  }), c;
1200
1225
  }
1201
- function Rt(e, t = []) {
1226
+ function zt(e, t = []) {
1202
1227
  return t.map((t) => {
1203
1228
  let n = e.inEdges(t);
1204
1229
  if (!n || !n.length) return { v: t };
@@ -1221,7 +1246,7 @@ function Rt(e, t = []) {
1221
1246
  }
1222
1247
  });
1223
1248
  }
1224
- function zt(e, t) {
1249
+ function Bt(e, t) {
1225
1250
  let n = {};
1226
1251
  return e.forEach((e, t) => {
1227
1252
  let r = {
@@ -1235,13 +1260,13 @@ function zt(e, t) {
1235
1260
  }), t.edges().forEach((e) => {
1236
1261
  let t = n[e.v], r = n[e.w];
1237
1262
  t !== void 0 && r !== void 0 && (r.indegree++, t.out.push(r));
1238
- }), Bt(Object.values(n).filter((e) => !e.indegree));
1263
+ }), Vt(Object.values(n).filter((e) => !e.indegree));
1239
1264
  }
1240
- function Bt(e) {
1265
+ function Vt(e) {
1241
1266
  let t = [];
1242
1267
  function n(e) {
1243
1268
  return (t) => {
1244
- t.merged || (t.barycenter === void 0 || e.barycenter === void 0 || t.barycenter >= e.barycenter) && Vt(e, t);
1269
+ t.merged || (t.barycenter === void 0 || e.barycenter === void 0 || t.barycenter >= e.barycenter) && Ht(e, t);
1245
1270
  };
1246
1271
  }
1247
1272
  function r(t) {
@@ -1253,71 +1278,108 @@ function Bt(e) {
1253
1278
  let i = e.pop();
1254
1279
  t.push(i), i.in.reverse().forEach(n(i)), i.out.forEach(r(i));
1255
1280
  }
1256
- return t.filter((e) => !e.merged).map((e) => R(e, [
1281
+ return t.filter((e) => !e.merged).map((e) => I(e, [
1257
1282
  "vs",
1258
1283
  "i",
1259
1284
  "barycenter",
1260
1285
  "weight"
1261
1286
  ]));
1262
1287
  }
1263
- function Vt(e, t) {
1288
+ function Ht(e, t) {
1264
1289
  let n = 0, r = 0;
1265
1290
  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
1291
  }
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);
1292
+ function Ut(e, t, n, r, i) {
1293
+ let a = {}, o = null, s = null, c = i;
1294
+ typeof t == "boolean" ? (c = t, a = {}) : t && (a = t, o = n ?? null, s = r ?? null);
1295
+ let l = je(e, (e) => Object.hasOwn(e, "barycenter")), u = l.lhs, d = l.rhs.sort((e, t) => t.i - e.i), f = [], p = 0, m = 0, h = 0;
1296
+ u.sort(Gt(s, o, !!c));
1297
+ for (let [e, t] of Object.entries(a)) {
1298
+ let n = u.findIndex((t) => t.vs[0] === e);
1299
+ u.splice(n + 1, 0, t);
1300
+ }
1301
+ h = Wt(f, d, h), u.forEach((e) => {
1302
+ h += e.vs.length, f.push(e.vs), p += e.barycenter * e.weight, m += e.weight, h = Wt(f, d, h);
1271
1303
  });
1272
- let l = { vs: a.flat(1) };
1273
- return s && (l.barycenter = o / s, l.weight = s), l;
1304
+ let g = { vs: f.flat(1) };
1305
+ return m && (g.barycenter = p / m, g.weight = m), g;
1274
1306
  }
1275
- function Ut(e, t, n) {
1307
+ function Wt(e, t, n) {
1276
1308
  let r;
1277
1309
  for (; t.length && (r = t[t.length - 1]).i <= n;) t.pop(), e.push(r.vs), n++;
1278
1310
  return n;
1279
1311
  }
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;
1312
+ function Gt(e, t, n) {
1313
+ return (r, i) => {
1314
+ if (r.barycenter < i.barycenter) return -1;
1315
+ if (r.barycenter > i.barycenter) return 1;
1316
+ if (e && (typeof r.vs[0] == "string" || typeof i.vs[0] == "string")) {
1317
+ let n = z(t, e.node(r.vs[0]), e.node(i.vs[0]));
1318
+ if (n !== 0) return n;
1319
+ }
1320
+ return n ? i.i - r.i : r.i - i.i;
1321
+ };
1282
1322
  }
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) => {
1323
+ function Kt(e, t, n, r, i) {
1324
+ var a, o;
1325
+ let s = null, c = i;
1326
+ typeof r == "boolean" ? (c = r, s = null) : r !== void 0 && (s = r);
1327
+ let l = e.children(t), u = e.node(t), d = u ? u.borderLeft : void 0, f = u ? u.borderRight : void 0, p = {};
1328
+ d && (l = l.filter((e) => e !== d && e !== f));
1329
+ let m = zt(e, l);
1330
+ m.forEach((t) => {
1288
1331
  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);
1332
+ let { result: r } = Kt(e, t.v, n, s, c);
1333
+ p[t.v] = r, Object.hasOwn(r, "barycenter") && Jt(t, r);
1291
1334
  }
1292
1335
  });
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
1336
+ let h = Bt(m, n);
1337
+ qt(h, p);
1338
+ let g = {}, _ = !1;
1339
+ for (let t = 0; t < h.length; t++) for (let n = t + 1; n < h.length; n++) if (!(!h[t] || !h[n] || !((a = h[t]) != null && a.barycenter) || !((o = h[n]) != null && o.barycenter)) && h[t]?.barycenter === h[n].barycenter) {
1340
+ let r = h[t]?.vs[0] ?? "", i = h[n]?.vs[0] ?? "", a = e.node(r), o = e.node(i);
1341
+ if (a.dummy === "edge" && o.dummy === "edge" && a.edgeObj?.v === o.edgeObj?.v && a.edgeObj?.w === o.edgeObj?.w) if (a.edgeLabel.reversed) {
1342
+ g[i] = h[t], h.splice(t, 1), t--;
1343
+ break;
1344
+ } else g[r] = h[n], h.splice(n, 1), n--;
1345
+ else _ = !0;
1346
+ }
1347
+ let v = Ut(h, g, s, e, c);
1348
+ if (d && f) {
1349
+ v.vs = [
1350
+ d,
1351
+ v.vs,
1352
+ f
1301
1353
  ].flat(1);
1302
- let t = e.predecessors(o);
1354
+ let t = e.predecessors(d);
1303
1355
  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;
1356
+ let n = e.node(t[0]), r = e.predecessors(f), i = e.node(r[0]);
1357
+ Object.hasOwn(v, "barycenter") || (v.barycenter = 0, v.weight = 0), v.barycenter = (v.barycenter * v.weight + n.order + i.order) / (v.weight + 2), v.weight += 2;
1306
1358
  }
1307
1359
  }
1308
- return d;
1360
+ return Object.defineProperty(v, "result", {
1361
+ value: v,
1362
+ enumerable: !1,
1363
+ configurable: !0,
1364
+ writable: !0
1365
+ }), Object.defineProperty(v, "usedBias", {
1366
+ value: _,
1367
+ enumerable: !1,
1368
+ configurable: !0,
1369
+ writable: !0
1370
+ }), v;
1309
1371
  }
1310
- function Kt(e, t) {
1372
+ function qt(e, t) {
1311
1373
  e.forEach((e) => {
1312
1374
  e.vs = e.vs.flatMap((e) => t[e] ? t[e].vs : e);
1313
1375
  });
1314
1376
  }
1315
- function qt(e, t) {
1377
+ function Jt(e, t) {
1316
1378
  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
1379
  }
1318
- function Jt(e, t, n, r) {
1380
+ function Yt(e, t, n, r) {
1319
1381
  r ||= e.nodes();
1320
- let i = Yt(e), a = new g({ compound: !0 }).setGraph({ root: i }).setDefaultNodeLabel((t) => e.node(t));
1382
+ let i = Xt(e), a = new h({ compound: !0 }).setGraph({ root: i }).setDefaultNodeLabel((t) => e.node(t));
1321
1383
  return r.forEach((r) => {
1322
1384
  let o = e.node(r), s = e.parent(r);
1323
1385
  if (o.rank === t || o.minRank <= t && t <= o.maxRank) {
@@ -1333,12 +1395,12 @@ function Jt(e, t, n, r) {
1333
1395
  }
1334
1396
  }), a;
1335
1397
  }
1336
- function Yt(e) {
1398
+ function Xt(e) {
1337
1399
  let t;
1338
- for (; e.hasNode(t = I("_root")););
1400
+ for (; e.hasNode(t = P("_root")););
1339
1401
  return t;
1340
1402
  }
1341
- function Xt(e, t, n) {
1403
+ function Zt(e, t, n) {
1342
1404
  let r = {}, i;
1343
1405
  n.forEach((n) => {
1344
1406
  let a = e.parent(n), o, s;
@@ -1351,22 +1413,22 @@ function Xt(e, t, n) {
1351
1413
  }
1352
1414
  });
1353
1415
  }
1354
- function Zt(e, t = {}) {
1416
+ function Qt(e, t = {}, n = null) {
1355
1417
  if (typeof t.customOrder == "function") {
1356
- t.customOrder(e, Zt);
1418
+ t.customOrder(e, Qt);
1357
1419
  return;
1358
1420
  }
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));
1421
+ let r = N(e), i = $t(e, F(1, r + 1), "inEdges"), a = $t(e, F(r - 1, -1, -1), "outEdges"), o = It(e, n);
1422
+ if (tn(e, o), t.disableOptimalOrderHeuristic) return;
1423
+ let s = Infinity, c, l = t.constraints || [];
1424
+ for (let t = 0, r = 0; r < 4; ++t, ++r) {
1425
+ en(t % 2 ? i : a, t % 4 >= 2, l, n), o = k(e);
1426
+ let u = Lt(e, o);
1427
+ u < s ? (r = 0, c = Object.assign({}, o), s = u) : u === s && (c = structuredClone(o));
1366
1428
  }
1367
- en(e, s);
1429
+ tn(e, c);
1368
1430
  }
1369
- function Qt(e, t, n) {
1431
+ function $t(e, t, n) {
1370
1432
  let r = /* @__PURE__ */ new Map(), i = (e, t) => {
1371
1433
  r.has(e) || r.set(e, []), r.get(e).push(t);
1372
1434
  };
@@ -1375,48 +1437,48 @@ function Qt(e, t, n) {
1375
1437
  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
1438
  }
1377
1439
  return t.map(function(t) {
1378
- return Jt(e, t, n, r.get(t) || []);
1440
+ return Yt(e, t, n, r.get(t) || []);
1379
1441
  });
1380
1442
  }
1381
- function $t(e, t, n) {
1382
- let r = new g();
1443
+ function en(e, t, n, r) {
1444
+ let i = !0, a = new h();
1383
1445
  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);
1446
+ n.forEach((e) => a.setEdge(e.left, e.right));
1447
+ let o = e.graph().root, { result: s, usedBias: c } = Kt(e, o, a, r, i);
1448
+ t && c && (i = !i), s.vs.forEach((t, n) => e.node(t).order = n), Zt(e, a, s.vs);
1387
1449
  });
1388
1450
  }
1389
- function en(e, t) {
1451
+ function tn(e, t) {
1390
1452
  Object.values(t).forEach((t) => t.forEach((t, n) => e.node(t).order = n));
1391
1453
  }
1392
- function tn(e, t) {
1454
+ function nn(e, t) {
1393
1455
  let n = {};
1394
1456
  function r(t, r) {
1395
1457
  let i = 0, a = 0, o = t.length, s = r[r.length - 1];
1396
1458
  return r.forEach((t, c) => {
1397
- let l = rn(e, t), u = l ? e.node(l).order : o;
1459
+ let l = an(e, t), u = l ? e.node(l).order : o;
1398
1460
  (l || t === s) && (r.slice(a, c + 1).forEach((t) => {
1399
1461
  let r = e.predecessors(t);
1400
1462
  r && r.forEach((r) => {
1401
1463
  let a = e.node(r), o = a.order;
1402
- (o < i || u < o) && !(a.dummy && e.node(t).dummy) && an(n, r, t);
1464
+ (o < i || u < o) && !(a.dummy && e.node(t).dummy) && on(n, r, t);
1403
1465
  });
1404
1466
  }), a = c + 1, i = u);
1405
1467
  }), r;
1406
1468
  }
1407
1469
  return t.length && t.reduce(r), n;
1408
1470
  }
1409
- function nn(e, t) {
1471
+ function rn(e, t) {
1410
1472
  let n = {};
1411
1473
  function r(t, r, i, a, o) {
1412
- L(r, i).forEach((r) => {
1474
+ F(r, i).forEach((r) => {
1413
1475
  let i = t[r];
1414
1476
  if (i !== void 0 && e.node(i).dummy) {
1415
1477
  let t = e.predecessors(i);
1416
1478
  t && t.forEach((t) => {
1417
1479
  if (t === void 0) return;
1418
1480
  let r = e.node(t);
1419
- r.dummy && (r.order < a || r.order > o) && an(n, t, i);
1481
+ r.dummy && (r.order < a || r.order > o) && on(n, t, i);
1420
1482
  });
1421
1483
  }
1422
1484
  });
@@ -1437,13 +1499,13 @@ function nn(e, t) {
1437
1499
  }
1438
1500
  return t.length && t.reduce(i), n;
1439
1501
  }
1440
- function rn(e, t) {
1502
+ function an(e, t) {
1441
1503
  if (e.node(t).dummy) {
1442
1504
  let n = e.predecessors(t);
1443
1505
  if (n) return n.find((t) => e.node(t).dummy);
1444
1506
  }
1445
1507
  }
1446
- function an(e, t, n) {
1508
+ function on(e, t, n) {
1447
1509
  if (t > n) {
1448
1510
  let e = t;
1449
1511
  t = n, n = e;
@@ -1451,7 +1513,7 @@ function an(e, t, n) {
1451
1513
  let r = e[t];
1452
1514
  r || (e[t] = r = {}), r[n] = !0;
1453
1515
  }
1454
- function on(e, t, n) {
1516
+ function sn(e, t, n) {
1455
1517
  if (t > n) {
1456
1518
  let e = t;
1457
1519
  t = n, n = e;
@@ -1459,39 +1521,44 @@ function on(e, t, n) {
1459
1521
  let r = e[t];
1460
1522
  return r !== void 0 && Object.hasOwn(r, n);
1461
1523
  }
1462
- function sn(e, t, n, r) {
1463
- let i = {}, a = {}, o = {};
1524
+ function cn(e, t, n, r, i) {
1525
+ let a = {}, o = {}, s = {};
1464
1526
  return t.forEach((e) => {
1465
1527
  e.forEach((e, t) => {
1466
- i[e] = e, a[e] = e, o[e] = t;
1528
+ a[e] = e, o[e] = e, s[e] = t;
1467
1529
  });
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];
1530
+ }), t.forEach((t) => {
1531
+ let c = -1, l = -1, u = !1, d = t, f = t.findIndex((t) => i?.includes(t) || _n(t, e, i));
1532
+ f > 0 && (d = [
1533
+ t[f],
1534
+ ...t.slice(0, f),
1535
+ ...t.slice(f + 1)
1536
+ ], u = !0), d.forEach((t) => {
1537
+ let d = r(t);
1538
+ if (d && d.length) {
1539
+ i != null && i.includes(t) && (d = d.filter((t) => _n(t, e, i)));
1540
+ let r = d.sort((e, t) => {
1541
+ let n = s[e], r = s[t];
1475
1542
  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);
1543
+ }), f = (r.length - 1) / 2;
1544
+ for (let e = Math.floor(f), i = Math.ceil(f); e <= i; ++e) {
1545
+ let i = r[e];
1546
+ if (i === void 0) continue;
1547
+ let d = s[i];
1548
+ if (d !== void 0 && o[t] === t && c < d && s[i] !== l && !sn(n, t, i)) {
1549
+ let e = a[i];
1550
+ e !== void 0 && (o[i] = t, o[t] = a[t] = e, c = d, u &&= (c = -1, l = s[i] ?? -1, !1));
1484
1551
  }
1485
1552
  }
1486
1553
  }
1487
1554
  });
1488
1555
  }), {
1489
- root: i,
1490
- align: a
1556
+ root: a,
1557
+ align: o
1491
1558
  };
1492
1559
  }
1493
- function cn(e, t, n, r, i = !1) {
1494
- let a = {}, o = ln(e, t, n, i), s = i ? "borderLeft" : "borderRight";
1560
+ function ln(e, t, n, r, i = !1) {
1561
+ let a = {}, o = un(e, t, n, i), s = i ? "borderLeft" : "borderRight";
1495
1562
  function c(e, t) {
1496
1563
  let n = o.nodes().slice(), r = {}, i = n.pop();
1497
1564
  for (; i;) {
@@ -1530,8 +1597,8 @@ function cn(e, t, n, r, i = !1) {
1530
1597
  t !== void 0 && (a[e] = a[t] ?? 0);
1531
1598
  }), a;
1532
1599
  }
1533
- function ln(e, t, n, r) {
1534
- let i = new g(), a = e.graph(), o = mn(a.nodesep, a.edgesep, r);
1600
+ function un(e, t, n, r) {
1601
+ let i = new h(), a = e.graph(), o = hn(a.nodesep, a.edgesep, r);
1535
1602
  return t.forEach((t) => {
1536
1603
  let r;
1537
1604
  t.forEach((t) => {
@@ -1549,31 +1616,31 @@ function ln(e, t, n, r) {
1549
1616
  });
1550
1617
  }), i;
1551
1618
  }
1552
- function un(e, t) {
1619
+ function dn(e, t) {
1553
1620
  return Object.values(t).reduce((t, n) => {
1554
1621
  let r = -Infinity, i = Infinity;
1555
1622
  Object.entries(n).forEach(([t, n]) => {
1556
- let a = hn(e, t) / 2;
1623
+ let a = gn(e, t) / 2;
1557
1624
  r = Math.max(n + a, r), i = Math.min(n - a, i);
1558
1625
  });
1559
1626
  let a = r - i;
1560
1627
  return a < t[0] && (t = [a, n]), t;
1561
1628
  }, [Infinity, null])[1];
1562
1629
  }
1563
- function dn(e, t) {
1564
- let n = Object.values(t), r = P(Math.min, n), i = P(Math.max, n);
1630
+ function fn(e, t) {
1631
+ let n = Object.values(t), r = M(Math.min, n), i = M(Math.max, n);
1565
1632
  ["u", "d"].forEach((n) => {
1566
1633
  ["l", "r"].forEach((a) => {
1567
1634
  let o = n + a, s = e[o];
1568
1635
  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));
1636
+ let c = Object.values(s), l = r - M(Math.min, c);
1637
+ a !== "l" && (l = i - M(Math.max, c)), l && (e[o] = L(s, (e) => e + l));
1571
1638
  });
1572
1639
  });
1573
1640
  }
1574
- function fn(e, t = void 0) {
1641
+ function pn(e, t = void 0) {
1575
1642
  let n = e.ul;
1576
- return n ? z(n, (n, r) => {
1643
+ return n ? L(n, (n, r) => {
1577
1644
  if (t) {
1578
1645
  let n = e[t.toLowerCase()];
1579
1646
  if (n && n[r] !== void 0) return n[r];
@@ -1585,17 +1652,17 @@ function fn(e, t = void 0) {
1585
1652
  return ((i[1] ?? 0) + (i[2] ?? 0)) / 2;
1586
1653
  }) : {};
1587
1654
  }
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;
1655
+ function mn(e, t) {
1656
+ let n = k(e), r = Object.assign(nn(e, n), rn(e, n)), i = {}, a;
1657
+ return ["u", "d"].forEach((o) => {
1658
+ a = o === "u" ? n : Object.values(n).reverse(), ["l", "r"].forEach((n) => {
1659
+ n === "r" && (a = a.map((e) => Object.values(e).reverse()));
1660
+ let s = cn(e, a, r, (t) => (o === "u" ? e.predecessors(t) : e.successors(t)) || [], t), c = ln(e, a, s.root, s.align, n === "r");
1661
+ n === "r" && (c = L(c, (e) => -e)), i[o + n] = c;
1595
1662
  });
1596
- }), dn(r, un(e, r)), fn(r, e.graph().align);
1663
+ }), fn(i, dn(e, i)), pn(i, e.graph().align);
1597
1664
  }
1598
- function mn(e, t, n) {
1665
+ function hn(e, t, n) {
1599
1666
  return (r, i, a) => {
1600
1667
  let o = r.node(i), s = r.node(a), c = 0, l;
1601
1668
  if (c += o.width / 2, Object.hasOwn(o, "labelpos")) switch (o.labelpos.toLowerCase()) {
@@ -1617,14 +1684,21 @@ function mn(e, t, n) {
1617
1684
  return l && (c += n ? l : -l), c;
1618
1685
  };
1619
1686
  }
1620
- function hn(e, t) {
1687
+ function gn(e, t) {
1621
1688
  return e.node(t).width;
1622
1689
  }
1623
- function gn(e) {
1624
- e = k(e), _n(e), Object.entries(pn(e)).forEach(([t, n]) => e.node(t).x = n);
1690
+ function _n(e, t, n) {
1691
+ if (!n) return !1;
1692
+ let r = t.node(e)?.edgeObj;
1693
+ if (!r || t.node(e).edgeLabel.reversed) return !1;
1694
+ let i = n.indexOf(r?.v), a = n.indexOf(r?.w);
1695
+ return i !== -1 && a !== -1 && i === (a + 1) % n.length || i === (a - 1) % n.length;
1625
1696
  }
1626
- function _n(e) {
1627
- let t = j(e), n = e.graph(), r = n.ranksep, i = n.rankalign, a = 0;
1697
+ function vn(e, t) {
1698
+ e = D(e), yn(e), Object.entries(mn(e, t)).forEach(([t, n]) => e.node(t).x = n);
1699
+ }
1700
+ function yn(e) {
1701
+ let t = k(e), n = e.graph(), r = n.ranksep, i = n.rankalign, a = 0;
1628
1702
  t.forEach((t) => {
1629
1703
  let n = t.reduce((t, n) => {
1630
1704
  let r = e.node(n).height ?? 0;
@@ -1636,17 +1710,160 @@ function _n(e) {
1636
1710
  }), a += n + r;
1637
1711
  });
1638
1712
  }
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;
1713
+ var X = null, Z = null;
1714
+ function bn(e, t = {}) {
1715
+ return Sn(e, Me, t), e;
1716
+ }
1717
+ function xn(e, t, n) {
1718
+ let r = t;
1719
+ for (; r !== void 0;) {
1720
+ let t = e.parent(r);
1721
+ if (t === n) return r;
1722
+ r = t;
1723
+ }
1724
+ }
1725
+ function Sn(e, t, n) {
1726
+ let r = e.nodes().filter((t) => e.children(t).length), i = {};
1727
+ r.forEach((r) => {
1728
+ let a = e.node(r);
1729
+ if (a && a.rankdir) {
1730
+ let o = new h({
1731
+ multigraph: !0,
1732
+ compound: !0
1733
+ });
1734
+ o.setGraph({ rankdir: a.rankdir });
1735
+ let s = e.children(r);
1736
+ s.forEach((t) => {
1737
+ let n = { ...e.node(t) };
1738
+ o.setNode(t, n);
1739
+ let i = e.parent(t);
1740
+ i && i !== r && s.includes(i) && o.setParent(t, i);
1741
+ });
1742
+ let c = /* @__PURE__ */ new Set();
1743
+ e.edges().forEach((t) => {
1744
+ let n = xn(e, t.v, r), i = xn(e, t.w, r);
1745
+ if (n && i && n !== i) {
1746
+ let r = `${n}\0${i}`;
1747
+ c.has(r) || (c.add(r), o.setEdge(n, i, { ...e.edge(t) }));
1748
+ }
1749
+ }), Sn(o, t, n);
1750
+ let l = Nn(o);
1751
+ Cn(l, t, n), wn(o, l);
1752
+ let u = Infinity, d = Infinity, f = -Infinity, p = -Infinity;
1753
+ o.nodes().forEach((e) => {
1754
+ if (e === r) return;
1755
+ let t = o.node(e);
1756
+ t && typeof t.x == "number" && typeof t.y == "number" && typeof t.width == "number" && typeof t.height == "number" && (u = Math.min(u, t.x - t.width / 2), f = Math.max(f, t.x + t.width / 2), d = Math.min(d, t.y - t.height / 2), p = Math.max(p, t.y + t.height / 2));
1757
+ }), (!isFinite(u) || !isFinite(d) || !isFinite(f) || !isFinite(p)) && (u = d = 0, f = p = 0);
1758
+ let m = f - u, g = p - d;
1759
+ i[r] = {
1760
+ minX: u,
1761
+ minY: d,
1762
+ maxX: f,
1763
+ maxY: p,
1764
+ width: m,
1765
+ height: g,
1766
+ offsetX: u,
1767
+ offsetY: d
1768
+ }, a._dagreClusterSubgraph = o;
1769
+ }
1770
+ });
1771
+ let a = [], o = (t) => {
1772
+ let n = [], r = (e.children(t) || []).filter((e) => e !== t);
1773
+ for (; r.length > 0;) {
1774
+ let t = r.shift();
1775
+ n.push(t), (e.children(t) || []).filter((e) => e !== t).forEach((e) => r.push(e));
1776
+ }
1777
+ return n;
1778
+ }, s = /* @__PURE__ */ new Map();
1779
+ r.forEach((t) => {
1780
+ let n = e.node(t);
1781
+ n && n.rankdir && i[t] && s.set(t, (e.children(t) || []).filter((e) => e !== t));
1782
+ });
1783
+ let c = new Set([...s.values()].flat()), l = /* @__PURE__ */ new Map();
1784
+ s.forEach((e, t) => {
1785
+ c.has(t) || l.set(t, o(t));
1786
+ });
1787
+ let u = new Set([...l.values()].flat()), d = (e) => {
1788
+ for (let [t, n] of l) if (n.includes(e)) return t;
1789
+ return e;
1790
+ }, f = [];
1791
+ e.edges().forEach((t) => {
1792
+ (u.has(t.v) || u.has(t.w)) && f.push({
1793
+ edge: t,
1794
+ label: e.edge(t)
1795
+ });
1796
+ });
1797
+ let p = /* @__PURE__ */ new Map();
1798
+ u.forEach((t) => {
1799
+ let n = e.parent(t);
1800
+ p.set(t, typeof n == "string" ? n : void 0);
1801
+ }), l.forEach((t, n) => {
1802
+ let r = e.node(n), o = [];
1803
+ t.forEach((t) => {
1804
+ let n = e.node(t);
1805
+ n && (o.push({
1806
+ id: t,
1807
+ node: n,
1808
+ parent: p.get(t)
1809
+ }), e.removeNode(t));
1810
+ });
1811
+ let s = f.filter(({ edge: e }) => t.includes(e.v) || t.includes(e.w)), c = i[n];
1812
+ r && (a.push({
1813
+ clusterId: n,
1814
+ subgraph: r._dagreClusterSubgraph,
1815
+ bounds: c,
1816
+ children: t,
1817
+ removedNodes: o,
1818
+ removedEdges: s
1819
+ }), r.width = c.width, r.height = c.height);
1820
+ });
1821
+ let m = /* @__PURE__ */ new Set();
1822
+ f.forEach(({ edge: t, label: n }) => {
1823
+ let r = d(t.v), i = d(t.w);
1824
+ if (r !== i && e.hasNode(r) && e.hasNode(i)) {
1825
+ let t = `${r}\0${i}`;
1826
+ m.has(t) || (m.add(t), e.setEdge(r, i, {
1827
+ ...n,
1828
+ width: 0,
1829
+ height: 0
1830
+ }));
1831
+ }
1832
+ });
1833
+ let g = Nn(e);
1834
+ Cn(g, t, n), wn(e, g), m.forEach((t) => {
1835
+ let n = t.indexOf("\0"), r = t.slice(0, n), i = t.slice(n + 1);
1836
+ e.hasEdge(r, i) && e.removeEdge(r, i);
1837
+ }), a.forEach(({ clusterId: t, subgraph: n, bounds: r, removedNodes: i, removedEdges: a }) => {
1838
+ let o = e.node(t), s = o?.x ?? 0, c = o?.y ?? 0, l = (r.minX + r.maxX) / 2, u = (r.minY + r.maxY) / 2;
1839
+ i.forEach(({ id: t, node: n, parent: r }) => {
1840
+ e.setNode(t, n), r !== void 0 && e.setParent(t, r);
1841
+ }), a.forEach(({ edge: t, label: n }) => {
1842
+ e.setEdge(t, n);
1843
+ }), n.nodes().forEach((r) => {
1844
+ if (r === t) return;
1845
+ let i = n.node(r), a = e.node(r);
1846
+ a && i && typeof i.x == "number" && typeof i.y == "number" && (a.x = s + (i.x - l), a.y = c + (i.y - u));
1847
+ }), delete o._dagreClusterSubgraph;
1848
+ }), r.forEach((t) => {
1849
+ let n = e.node(t), r = i[t];
1850
+ if (n && n.rankdir && n._dagreClusterSubgraph && r) {
1851
+ let i = n._dagreClusterSubgraph, a = n.x ?? 0, o = n.y ?? 0, s = (r.minX + r.maxX) / 2, c = (r.minY + r.maxY) / 2;
1852
+ i.nodes().forEach((n) => {
1853
+ if (n === t) return;
1854
+ let r = i.node(n), l = e.node(n);
1855
+ if (l && r && typeof r.x == "number" && typeof r.y == "number") {
1856
+ let e = r.x - s, t = r.y - c;
1857
+ l.x = a + e, l.y = o + t;
1858
+ }
1859
+ }), delete n._dagreClusterSubgraph;
1860
+ }
1644
1861
  });
1645
1862
  }
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));
1863
+ function Cn(e, t, n) {
1864
+ n?.useDynamic === !1 && (X = null, Z = null), t(" makeSpaceForEdgeLabels", () => Pn(e)), t(" removeSelfEdges", () => Un(e)), t(" acyclic", () => We(e, X)), t(" nestingGraph.run", () => Ct(e)), t(" rank", () => mt(D(e))), t(" injectEdgeLabelProxies", () => Fn(e)), t(" removeEmptyRanks", () => ke(e)), t(" nestingGraph.cleanup", () => Et(e)), t(" normalizeRanks", () => Oe(e)), t(" assignRankMinMax", () => In(e)), t(" removeEdgeLabelProxies", () => Ln(e)), t(" normalize.run", () => Je(e)), t(" parentDummyChains", () => yt(e)), t(" addBorderSegments", () => Dt(e)), t(" order", () => Qt(e, n, Z)), t(" insertSelfEdges", () => Wn(e)), t(" adjustCoordinateSystem", () => At(e)), t(" position", () => vn(e, n.corePath)), t(" positionSelfEdges", () => Gn(e)), Z = JSON.parse(JSON.stringify(e._nodes)), t(" removeBorderNodes", () => Hn(e)), t(" normalize.undo", () => Xe(e)), t(" fixupEdgeLabelCoords", () => Bn(e)), t(" undoCoordinateSystem", () => jt(e)), t(" translateGraph", () => Rn(e)), t(" assignNodeIntersects", () => zn(e)), t(" reversePoints", () => Vn(e)), t(" acyclic.undo", () => Ke(e)), X = e;
1648
1865
  }
1649
- function bn(e, t) {
1866
+ function wn(e, t) {
1650
1867
  e.nodes().forEach((n) => {
1651
1868
  let r = e.node(n), i = t.node(n);
1652
1869
  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));
@@ -1655,89 +1872,89 @@ function bn(e, t) {
1655
1872
  r.points = i.points, Object.hasOwn(i, "x") && (r.x = i.x, r.y = i.y);
1656
1873
  }), e.graph().width = t.graph().width, e.graph().height = t.graph().height;
1657
1874
  }
1658
- var xn = [
1875
+ var Tn = [
1659
1876
  "nodesep",
1660
1877
  "edgesep",
1661
1878
  "ranksep",
1662
1879
  "marginx",
1663
1880
  "marginy"
1664
- ], Sn = {
1881
+ ], En = {
1665
1882
  ranksep: 50,
1666
1883
  edgesep: 20,
1667
1884
  nodesep: 50,
1668
1885
  rankdir: "TB",
1669
1886
  rankalign: "center"
1670
- }, Cn = [
1887
+ }, Dn = [
1671
1888
  "acyclicer",
1672
1889
  "ranker",
1673
1890
  "rankdir",
1674
1891
  "align",
1675
1892
  "rankalign"
1676
- ], wn = [
1893
+ ], On = [
1677
1894
  "width",
1678
1895
  "height",
1679
1896
  "rank"
1680
- ], Tn = {
1897
+ ], kn = {
1681
1898
  width: 0,
1682
1899
  height: 0
1683
- }, En = [
1900
+ }, An = [
1684
1901
  "minlen",
1685
1902
  "weight",
1686
1903
  "width",
1687
1904
  "height",
1688
1905
  "labeloffset"
1689
- ], Dn = {
1906
+ ], jn = {
1690
1907
  minlen: 1,
1691
1908
  weight: 1,
1692
1909
  width: 0,
1693
1910
  height: 0,
1694
1911
  labeloffset: 10,
1695
1912
  labelpos: "r"
1696
- }, On = ["labelpos"];
1697
- function kn(e) {
1698
- let t = new g({
1913
+ }, Mn = ["labelpos"];
1914
+ function Nn(e) {
1915
+ let t = new h({
1699
1916
  multigraph: !0,
1700
1917
  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]);
1918
+ }), n = $(e.graph());
1919
+ return t.setGraph(Object.assign({}, En, Q(n, Tn), I(n, Dn))), e.nodes().forEach((n) => {
1920
+ let r = Q($(e.node(n)), On);
1921
+ Object.keys(kn).forEach((e) => {
1922
+ r[e] === void 0 && (r[e] = kn[e]);
1706
1923
  }), t.setNode(n, r);
1707
1924
  let i = e.parent(n);
1708
1925
  i !== void 0 && t.setParent(n, i);
1709
1926
  }), e.edges().forEach((n) => {
1710
- let r = Q(e.edge(n));
1711
- t.setEdge(n, Object.assign({}, Dn, Z(r, En), R(r, On)));
1927
+ let r = $(e.edge(n));
1928
+ t.setEdge(n, Object.assign({}, jn, Q(r, An), I(r, Mn)));
1712
1929
  }), t;
1713
1930
  }
1714
- function An(e) {
1931
+ function Pn(e) {
1715
1932
  let t = e.graph();
1716
1933
  t.ranksep /= 2, e.edges().forEach((n) => {
1717
1934
  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);
1935
+ r.minlen *= 2, (r.labelpos ?? "r").toLowerCase() !== "c" && (t.rankdir === "TB" || t.rankdir === "BT" ? r.width += r.labeloffset : r.height += r.labeloffset);
1719
1936
  });
1720
1937
  }
1721
- function jn(e) {
1938
+ function Fn(e) {
1722
1939
  e.edges().forEach((t) => {
1723
1940
  let n = e.edge(t);
1724
1941
  if (n.width && n.height) {
1725
1942
  let n = e.node(t.v);
1726
- O(e, "edge-proxy", {
1943
+ E(e, "edge-proxy", {
1727
1944
  rank: (e.node(t.w).rank - n.rank) / 2 + n.rank,
1728
1945
  e: t
1729
1946
  }, "_ep");
1730
1947
  }
1731
1948
  });
1732
1949
  }
1733
- function Mn(e) {
1950
+ function In(e) {
1734
1951
  let t = 0;
1735
1952
  e.nodes().forEach((n) => {
1736
1953
  let r = e.node(n);
1737
1954
  r.borderTop && (r.minRank = e.node(r.borderTop).rank, r.maxRank = e.node(r.borderBottom).rank, t = Math.max(t, r.maxRank));
1738
1955
  }), e.graph().maxRank = t;
1739
1956
  }
1740
- function Nn(e) {
1957
+ function Ln(e) {
1741
1958
  e.nodes().forEach((t) => {
1742
1959
  let n = e.node(t);
1743
1960
  if (n.dummy === "edge-proxy") {
@@ -1746,7 +1963,7 @@ function Nn(e) {
1746
1963
  }
1747
1964
  });
1748
1965
  }
1749
- function Pn(e) {
1966
+ function Rn(e) {
1750
1967
  let t = Infinity, n = 0, r = Infinity, i = 0, a = e.graph(), o = a.marginx || 0, s = a.marginy || 0;
1751
1968
  function c(e) {
1752
1969
  let a = e.x, o = e.y, s = e.width, c = e.height;
@@ -1765,13 +1982,14 @@ function Pn(e) {
1765
1982
  }), Object.hasOwn(i, "x") && (i.x -= t), Object.hasOwn(i, "y") && (i.y -= r);
1766
1983
  }), a.width = n - t + o, a.height = i - r + s;
1767
1984
  }
1768
- function Fn(e) {
1985
+ function zn(e) {
1769
1986
  e.edges().forEach((t) => {
1987
+ if (t.v === t.w) return;
1770
1988
  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));
1989
+ n.points ? (a = n.points[0], o = n.points[n.points.length - 1]) : (n.points = [], a = i, o = r), n.points.unshift(O(r, a)), n.points.push(O(i, o));
1772
1990
  });
1773
1991
  }
1774
- function In(e) {
1992
+ function Bn(e) {
1775
1993
  e.edges().forEach((t) => {
1776
1994
  let n = e.edge(t);
1777
1995
  if (Object.hasOwn(n, "x")) switch ((n.labelpos === "l" || n.labelpos === "r") && (n.width -= n.labeloffset), n.labelpos) {
@@ -1784,13 +2002,13 @@ function In(e) {
1784
2002
  }
1785
2003
  });
1786
2004
  }
1787
- function Ln(e) {
2005
+ function Vn(e) {
1788
2006
  e.edges().forEach((t) => {
1789
2007
  let n = e.edge(t);
1790
2008
  n.reversed && n.points.reverse();
1791
2009
  });
1792
2010
  }
1793
- function Rn(e) {
2011
+ function Hn(e) {
1794
2012
  e.nodes().forEach((t) => {
1795
2013
  if (e.children(t).length) {
1796
2014
  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]);
@@ -1800,7 +2018,7 @@ function Rn(e) {
1800
2018
  e.node(t).dummy === "border" && e.removeNode(t);
1801
2019
  });
1802
2020
  }
1803
- function zn(e) {
2021
+ function Un(e) {
1804
2022
  e.edges().forEach((t) => {
1805
2023
  if (t.v === t.w) {
1806
2024
  let n = e.node(t.v);
@@ -1811,58 +2029,129 @@ function zn(e) {
1811
2029
  }
1812
2030
  });
1813
2031
  }
1814
- function Bn(e) {
1815
- j(e).forEach((t) => {
2032
+ function Wn(e) {
2033
+ k(e).forEach((t) => {
1816
2034
  let n = 0;
1817
2035
  t.forEach((t, r) => {
1818
2036
  let i = e.node(t);
1819
- i.order = r + n, (i.selfEdges || []).forEach((t) => {
1820
- O(e, "selfedge", {
2037
+ typeof i.rank != "number" && (i.rank = 0), i.order = r + n, (i.selfEdges || []).forEach((t) => {
2038
+ E(e, "selfedge", {
1821
2039
  width: t.label.width,
1822
2040
  height: t.label.height,
1823
2041
  rank: i.rank,
1824
2042
  order: r + ++n,
1825
2043
  e: t.e,
1826
- label: t.label
1827
- }, "_se");
2044
+ edgeLabel: t.label
2045
+ }, "_se"), (!Array.isArray(t.label.points) || t.label.points.length !== 7) && (t.label.points = [
2046
+ {
2047
+ x: 0,
2048
+ y: -10
2049
+ },
2050
+ {
2051
+ x: 0,
2052
+ y: -10
2053
+ },
2054
+ {
2055
+ x: 0,
2056
+ y: 0
2057
+ },
2058
+ {
2059
+ x: 0,
2060
+ y: 10
2061
+ },
2062
+ {
2063
+ x: 0,
2064
+ y: 10
2065
+ },
2066
+ {
2067
+ x: 0,
2068
+ y: 0
2069
+ },
2070
+ {
2071
+ x: 0,
2072
+ y: 0
2073
+ }
2074
+ ]);
1828
2075
  }), delete i.selfEdges;
1829
2076
  });
1830
2077
  });
1831
2078
  }
1832
- function Vn(e) {
2079
+ function Gn(e) {
1833
2080
  e.nodes().forEach((t) => {
1834
- let n = e.node(t);
2081
+ let n = e.node(t), r = (e) => typeof e == "number" && isFinite(e);
1835
2082
  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 = [
2083
+ let i = n, a = e.node(i.e.v), o = r(a?.x) ? a.x : 0, s = r(a?.y) ? a.y : 0, c = r(a?.width) ? a.width : 0, l = r(a?.height) ? a.height : 0, u = r(n.x) ? n.x : o, d = r(n.y) ? n.y : s, f = c / 2, p = l / 2;
2084
+ i.edgeLabel.points = [
1838
2085
  {
1839
- x: a + 2 * s / 3,
1840
- y: o - c
2086
+ x: u + f,
2087
+ y: d - p
1841
2088
  },
1842
2089
  {
1843
- x: a + 5 * s / 6,
1844
- y: o - c
2090
+ x: u + f,
2091
+ y: d - p
1845
2092
  },
1846
2093
  {
1847
- x: a + s,
1848
- y: o
2094
+ x: u,
2095
+ y: d
1849
2096
  },
1850
2097
  {
1851
- x: a + 5 * s / 6,
1852
- y: o + c
2098
+ x: u - f,
2099
+ y: d + p
1853
2100
  },
1854
2101
  {
1855
- x: a + 2 * s / 3,
1856
- y: o + c
2102
+ x: u - f,
2103
+ y: d + p
2104
+ },
2105
+ {
2106
+ x: u,
2107
+ y: d
2108
+ },
2109
+ {
2110
+ x: u,
2111
+ y: d
1857
2112
  }
1858
- ], r.label.x = n.x, r.label.y = n.y;
1859
- }
2113
+ ], i.edgeLabel.x = u, i.edgeLabel.y = d, e.setEdge(i.e, i.edgeLabel), e.removeNode(t);
2114
+ } else n && Array.isArray(n.selfEdges) && n.selfEdges.forEach((e) => {
2115
+ if (!Array.isArray(e.label.points) || e.label.points.length !== 7) {
2116
+ let t = r(n.x) ? n.x : 0, i = r(n.y) ? n.y : 0, a = r(n.width) ? n.width : 0, o = r(n.height) ? n.height : 0, s = a / 2, c = o / 2;
2117
+ e.label.points = [
2118
+ {
2119
+ x: t + s,
2120
+ y: i - c
2121
+ },
2122
+ {
2123
+ x: t + s,
2124
+ y: i - c
2125
+ },
2126
+ {
2127
+ x: t,
2128
+ y: i
2129
+ },
2130
+ {
2131
+ x: t - s,
2132
+ y: i + c
2133
+ },
2134
+ {
2135
+ x: t - s,
2136
+ y: i + c
2137
+ },
2138
+ {
2139
+ x: t,
2140
+ y: i
2141
+ },
2142
+ {
2143
+ x: t,
2144
+ y: i
2145
+ }
2146
+ ];
2147
+ }
2148
+ });
1860
2149
  });
1861
2150
  }
1862
- function Z(e, t) {
1863
- return z(R(e, t), Number);
2151
+ function Q(e, t) {
2152
+ return L(I(e, t), Number);
1864
2153
  }
1865
- function Q(e) {
2154
+ function $(e) {
1866
2155
  let t = {};
1867
2156
  return e && Object.entries(e).forEach(([e, n]) => {
1868
2157
  typeof e == "string" && (e = e.toLowerCase()), t[e] = n;
@@ -1870,7 +2159,7 @@ function Q(e) {
1870
2159
  }
1871
2160
  //#endregion
1872
2161
  //#region src/erdDiagram.ts
1873
- var Hn = 160, Un = 50, Wn = 8, Gn = 24, Kn = {
2162
+ var Kn = 160, qn = 50, Jn = 8, Yn = 24, Xn = {
1874
2163
  child: {
1875
2164
  fill: "#dae8fc",
1876
2165
  stroke: "#6c8ebf"
@@ -1879,20 +2168,20 @@ var Hn = 160, Un = 50, Wn = 8, Gn = 24, Kn = {
1879
2168
  fill: "#d5e8d4",
1880
2169
  stroke: "#82b366"
1881
2170
  }
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() {
2171
+ }, Zn = "dpuse-tool-d3-erd-arrow";
2172
+ function Qn(t, n, r = {}) {
2173
+ let i = r.nodeWidth ?? Kn, a = r.nodeHeight ?? qn, c = r.padding ?? Jn, l = r.selfEdgeSize ?? Yn, u = r.nodeColors ?? Xn, d = r.orderConstraints ?? [];
2174
+ function p() {
1886
2175
  e(n).selectAll("svg").remove();
1887
- let r = new p.Graph();
2176
+ let r = new f.Graph();
1888
2177
  r.setGraph({
1889
2178
  rankdir: "TB",
1890
2179
  nodesep: 40,
1891
2180
  ranksep: 60
1892
2181
  }), r.setDefaultEdgeLabel(() => ({}));
1893
2182
  for (let e of t.nodes) r.setNode(e.id, {
1894
- width: a,
1895
- height: o,
2183
+ width: i,
2184
+ height: a,
1896
2185
  label: e.label,
1897
2186
  typeId: e.typeId
1898
2187
  });
@@ -1900,35 +2189,35 @@ function qn(t, n, r = {}) {
1900
2189
  width: l,
1901
2190
  height: l
1902
2191
  }) : 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) => {
2192
+ bn(r, { constraints: d });
2193
+ let { width: p = 0, height: m = 0 } = r.graph(), h = p + c * 2, g = m + c * 2, _ = e(n).append("svg").attr("viewBox", `0 0 ${String(h)} ${String(g)}`).attr("width", h).attr("height", g), v = _.append("g").attr("transform", `translate(${String(c)}, ${String(c)})`);
2194
+ _.append("defs").append("marker").attr("id", Zn).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");
2195
+ let y = s().x((e) => e.x).y((e) => e.y).curve(o);
2196
+ v.append("g").attr("fill", "none").attr("stroke", "#6c8ebf").attr("stroke-width", 1.5).selectAll("path").data(r.edges()).join("path").attr("marker-end", `url(#${Zn})`).attr("d", (e) => e.v === e.w ? $n(r.node(e.v), l) : y(r.edge(e).points ?? []) ?? "");
2197
+ let b = v.append("g").selectAll("g").data(r.nodes()).join("g").attr("transform", (e) => {
1909
2198
  let t = r.node(e);
1910
2199
  return `translate(${String((t.x ?? 0) - t.width / 2)}, ${String((t.y ?? 0) - t.height / 2)})`;
1911
2200
  });
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;
2201
+ b.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), b.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 ?? "");
2202
+ let x = _.node();
2203
+ if (x == null) throw Error("Failed to create ERD diagram SVG element.");
2204
+ return x;
1916
2205
  }
1917
- let f = d();
2206
+ let m = p();
1918
2207
  return {
1919
2208
  resize: () => {
1920
- f = d();
2209
+ m = p();
1921
2210
  },
1922
2211
  get svg() {
1923
- return f;
2212
+ return m;
1924
2213
  }
1925
2214
  };
1926
2215
  }
1927
- function Jn(e, t) {
2216
+ function $n(e, t) {
1928
2217
  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
2218
  return `M ${String(n)} ${String(i)} C ${String(r)} ${String(i)}, ${String(r)} ${String(a)}, ${String(n)} ${String(a)}`;
1930
2219
  }
1931
2220
  //#endregion
1932
- export { qn as renderErdDiagram };
2221
+ export { Qn as renderErdDiagram };
1933
2222
 
1934
- //# sourceMappingURL=erdDiagram-b-qDkEhY.js.map
2223
+ //# sourceMappingURL=erdDiagram-C-wRJWHp.js.map