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

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.
@@ -311,10 +311,10 @@ h(S, {
311
311
  findCycles: () => me,
312
312
  floydWarshall: () => ge,
313
313
  isAcyclic: () => ye,
314
- postorder: () => xe,
315
- preorder: () => Se,
316
- prim: () => Ce,
317
- shortestPaths: () => we,
314
+ postorder: () => Ce,
315
+ preorder: () => we,
316
+ prim: () => Te,
317
+ shortestPaths: () => Ee,
318
318
  tarjan: () => pe,
319
319
  topsort: () => ve
320
320
  });
@@ -534,26 +534,26 @@ function be(e, t, n, r, i) {
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 = xe(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 xe(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 = xe(e, t, n, r, i, a, o);
543
543
  }), n && (o = a(o, t))), o;
544
544
  }
545
- function D(e, t, n) {
545
+ function Se(e, t, n) {
546
546
  return be(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");
550
+ function Ce(e, t) {
551
+ return Se(e, t, "post");
552
552
  }
553
- function Se(e, t) {
554
- return D(e, t, "pre");
553
+ function we(e, t) {
554
+ return Se(e, t, "pre");
555
555
  }
556
- function Ce(e, t) {
556
+ function Te(e, t) {
557
557
  let n = new g(), r = {}, i = new le(), a;
558
558
  function o(e) {
559
559
  let n = e.v === a ? e.w : e.v, o = i.priority(n);
@@ -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) ?? []));
580
+ function Ee(e, t, n, r) {
581
+ return De(e, t, n, r ?? ((t) => e.outEdges(t) ?? []));
582
582
  }
583
- function Te(e, t, n, r) {
583
+ function De(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,12 +596,12 @@ 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) {
604
+ function Oe(e) {
605
605
  let t = new g().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) || {
@@ -614,7 +614,7 @@ function Ee(e) {
614
614
  });
615
615
  }), t;
616
616
  }
617
- function k(e) {
617
+ function D(e) {
618
618
  let t = new g({ 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));
@@ -622,7 +622,7 @@ function k(e) {
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 ke(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 Ae(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 je(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(...je(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 Me(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
- function Me(e, t) {
697
+ function Ne(e, t) {
706
698
  return t();
707
699
  }
708
- var Ne = 0;
709
- function I(e) {
710
- return e + ("" + ++Ne);
700
+ var Pe = 0;
701
+ function P(e) {
702
+ return e + ("" + ++Pe);
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,19 +709,29 @@ 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
- function Pe(e, t) {
721
+ function Fe(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 Ie = class {
733
735
  constructor() {
734
736
  f(this, "_sentinel");
735
737
  let e = {};
@@ -737,58 +739,58 @@ var B = "\0", Fe = class {
737
739
  }
738
740
  dequeue() {
739
741
  let e = this._sentinel, t = e._prev;
740
- if (t !== e) return Ie(t), t;
742
+ if (t !== e) return Le(t), t;
741
743
  }
742
744
  enqueue(e) {
743
745
  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;
746
+ e._prev && e._next && Le(e), e._next = t._next, t._next._prev = e, t._next = e, e._prev = t;
745
747
  }
746
748
  toString() {
747
749
  let e = [], t = this._sentinel, n = t._prev;
748
- for (; n !== t;) e.push(JSON.stringify(n, Le)), n = n._prev;
750
+ for (; n !== t;) e.push(JSON.stringify(n, Re)), n = n._prev;
749
751
  return "[" + e.join(", ") + "]";
750
752
  }
751
753
  };
752
- function Ie(e) {
754
+ function Le(e) {
753
755
  e._prev._next = e._next, e._next._prev = e._prev, delete e._next, delete e._prev;
754
756
  }
755
- function Le(e, t) {
757
+ function Re(e, t) {
756
758
  if (e !== "_next" && e !== "_prev") return t;
757
759
  }
758
- var Re = Fe, ze = () => 1;
759
- function Be(e, t) {
760
+ var ze = Ie, Be = () => 1;
761
+ function Ve(e, t) {
760
762
  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
+ let n = Ue(e, t || Be);
764
+ return He(n.graph, n.buckets, n.zeroIdx).flatMap((t) => e.outEdges(t.v, t.w) || []);
763
765
  }
764
- function Ve(e, t, n) {
766
+ function He(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
- function He(e, t) {
793
+ function Ue(e, t) {
792
794
  let n = new g(), r = 0, i = 0;
793
795
  e.nodes().forEach((e) => {
794
796
  n.setNode(e, {
@@ -802,43 +804,50 @@ function He(e, t) {
802
804
  let c = n.node(e.v), l = n.node(e.w);
803
805
  i = Math.max(i, c.out += o), r = Math.max(r, l.in += o);
804
806
  });
805
- let a = Ue(i + r + 3).map(() => new Re()), o = r + 1;
807
+ let a = We(i + r + 3).map(() => new ze()), 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
  }
818
- function Ue(e) {
820
+ function We(e) {
819
821
  let t = [];
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 Ge(e, t) {
826
+ (e.graph().acyclicer === "greedy" ? Ve(e, n(e)) : Ke(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 Ke(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]);
838
840
  }
839
- return e.nodes().forEach(i), t;
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 && Je(e, i.w, i) ? n.push(i) : o(i.w);
845
+ }), delete r[a]);
846
+ }
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
- function Ke(e) {
850
+ function qe(e) {
842
851
  e.edges().forEach((t) => {
843
852
  let n = e.edge(t);
844
853
  if (n.reversed) {
@@ -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 Je(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 Ye(e) {
871
+ e.graph().dummyChains = [], e.edges().forEach((t) => Xe(e, t));
853
872
  }
854
- function Je(e, t) {
873
+ function Xe(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 Ze(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) {
910
+ var Qe = $e;
911
+ function $e(e) {
893
912
  let t = new g({ 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 (; et(t, e) < i && (a = tt(t, e), a);) o = t.hasNode(a.v) ? U(e, a) : -U(e, a), nt(t, e, o);
899
918
  return t;
900
919
  }
901
- function Qe(e, t) {
920
+ function et(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 tt(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 nt(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: rt, postorder: it } = S, at = W;
940
+ W.initLowLimValues = K, W.initCutValues = G, W.calcCutValue = st, W.leaveEdge = lt, W.enterEdge = ut, W.exchangeEdges = dt;
941
+ function W(e) {
942
+ e = Oe(e), H(e);
943
+ let t = Qe(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 = lt(t);) r = ut(t, e, n), dt(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 = it(e, e.nodes());
950
+ n = n.slice(0, n.length - 1), n.forEach((n) => ot(e, t, n));
932
951
  }
933
- function it(e, t, n) {
952
+ function ot(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 = st(e, t, n);
936
955
  }
937
- function at(e, t, n) {
956
+ function st(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, pt(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]), ct(e, {}, 1, t);
954
973
  }
955
- function ot(e, t, n, r, i) {
974
+ function ct(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 = ct(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 lt(e) {
964
983
  return e.edges().find((t) => e.edge(t).cutvalue < 0);
965
984
  }
966
- function ct(e, t, n) {
985
+ function ut(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 === mt(e, e.node(t.v), s) && c !== mt(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 dt(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), ft(e, t);
975
994
  }
976
- function ut(e, t) {
995
+ function ft(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 = rt(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 pt(e, t, n) {
986
1005
  return e.hasEdge(t, n);
987
1006
  }
988
- function ft(e, t, n) {
1007
+ function mt(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 ht = gt;
1011
+ function gt(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
+ q(e);
998
1017
  break;
999
1018
  case "tight-tree":
1000
- gt(e);
1019
+ vt(e);
1001
1020
  break;
1002
1021
  case "longest-path":
1003
- ht(e);
1022
+ _t(e);
1004
1023
  break;
1005
1024
  case "none": break;
1006
- default: _t(e);
1025
+ default: q(e);
1007
1026
  }
1008
1027
  }
1009
- var ht = U;
1010
- function gt(e) {
1011
- U(e), Xe(e);
1028
+ var _t = H;
1029
+ function vt(e) {
1030
+ H(e), Qe(e);
1012
1031
  }
1013
- function _t(e) {
1014
- rt(e);
1032
+ function q(e) {
1033
+ at(e);
1015
1034
  }
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;
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 = Tt(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 = Et(e) + 1;
1081
+ e.children(R).forEach((r) => {
1082
+ wt(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 wt(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
+ wt(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,98 +1109,102 @@ 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 Tt(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 Et(e) {
1100
1121
  return e.edges().reduce((t, n) => t + e.edge(n).weight, 0);
1101
1122
  }
1102
- function Tt(e) {
1123
+ function Dt(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 Ot = kt;
1130
+ function kt(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) At(e, "borderLeft", "_bl", n, i, t), At(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 At(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) {
1149
+ function jt(e) {
1129
1150
  let t = e.graph().rankdir?.toLowerCase();
1130
- (t === "lr" || t === "rl") && jt(e);
1151
+ (t === "lr" || t === "rl") && Nt(e);
1131
1152
  }
1132
- function At(e) {
1153
+ function Mt(e) {
1133
1154
  let t = e.graph().rankdir?.toLowerCase();
1134
- (t === "bt" || t === "rl") && Nt(e), (t === "lr" || t === "rl") && (Pt(e), jt(e));
1155
+ (t === "bt" || t === "rl") && Ft(e), (t === "lr" || t === "rl") && (It(e), Nt(e));
1135
1156
  }
1136
- function jt(e) {
1137
- e.nodes().forEach((t) => Mt(e.node(t))), e.edges().forEach((t) => Mt(e.edge(t)));
1157
+ function Nt(e) {
1158
+ e.nodes().forEach((t) => Pt(e.node(t))), e.edges().forEach((t) => Pt(e.edge(t)));
1138
1159
  }
1139
- function Mt(e) {
1160
+ function Pt(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 Ft(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 It(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 Lt(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 Rt(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 += zt(e, t[r - 1], t[r]);
1179
1204
  return n;
1180
1205
  }
1181
- function Lt(e, t, n) {
1182
- let r = Pe(n, n.map((e, t) => t)), i = t.flatMap((t) => {
1206
+ function zt(e, t, n) {
1207
+ let r = Fe(n, n.map((e, t) => t)), i = t.flatMap((t) => {
1183
1208
  let n = e.outEdges(t);
1184
1209
  return n ? n.map((t) => ({
1185
1210
  pos: r[t.w],
@@ -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 Bt(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 Vt(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
+ }), Ht(Object.values(n).filter((e) => !e.indegree));
1239
1264
  }
1240
- function Bt(e) {
1265
+ function Ht(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) && Ut(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 Ut(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 Wt(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 = Me(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(Kt(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 = Gt(f, d, h), u.forEach((e) => {
1302
+ h += e.vs.length, f.push(e.vs), p += e.barycenter * e.weight, m += e.weight, h = Gt(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 Gt(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 Kt(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 qt(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 = Bt(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 } = qt(e, t.v, n, s, c);
1333
+ p[t.v] = r, Object.hasOwn(r, "barycenter") && Yt(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 = Vt(m, n);
1337
+ Jt(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 = Wt(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;
1309
- }
1310
- function Kt(e, t) {
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;
1371
+ }
1372
+ function Jt(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 Yt(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 Xt(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 = Zt(e), a = new g({ 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 Zt(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 Qt(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 $t(e, t = {}, n = null) {
1355
1417
  if (typeof t.customOrder == "function") {
1356
- t.customOrder(e, Zt);
1418
+ t.customOrder(e, $t);
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 = en(e, F(1, r + 1), "inEdges"), a = en(e, F(r - 1, -1, -1), "outEdges"), o = Lt(e, n);
1422
+ if (nn(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
+ tn(t % 2 ? i : a, t % 4 >= 2, l, n), o = k(e);
1426
+ let u = Rt(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
+ nn(e, c);
1368
1430
  }
1369
- function Qt(e, t, n) {
1431
+ function en(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 Xt(e, t, n, r.get(t) || []);
1379
1441
  });
1380
1442
  }
1381
- function $t(e, t, n) {
1382
- let r = new g();
1443
+ function tn(e, t, n, r) {
1444
+ let i = !0, a = new g();
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 } = qt(e, o, a, r, i);
1448
+ t && c && (i = !i), s.vs.forEach((t, n) => e.node(t).order = n), Qt(e, a, s.vs);
1387
1449
  });
1388
1450
  }
1389
- function en(e, t) {
1451
+ function nn(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 rn(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 = on(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) && sn(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 an(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) && sn(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 on(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 sn(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 cn(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 ln(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) || vn(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) => vn(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 && !cn(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 un(e, t, n, r, i = !1) {
1561
+ let a = {}, o = dn(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 dn(e, t, n, r) {
1601
+ let i = new g(), a = e.graph(), o = gn(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 fn(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 = _n(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 pn(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 mn(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 hn(e, t) {
1656
+ let n = k(e), r = Object.assign(rn(e, n), an(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 = ln(e, a, r, (t) => (o === "u" ? e.predecessors(t) : e.successors(t)) || [], t), c = un(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
+ }), pn(i, fn(e, i)), mn(i, e.graph().align);
1597
1664
  }
1598
- function mn(e, t, n) {
1665
+ function gn(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 _n(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 vn(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 yn(e, t) {
1698
+ e = D(e), bn(e), Object.entries(hn(e, t)).forEach(([t, n]) => e.node(t).x = n);
1699
+ }
1700
+ function bn(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 xn(e, t = {}) {
1715
+ return Cn(e, Ne, t), e;
1716
+ }
1717
+ function Sn(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 Cn(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 g({
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 = Sn(e, t.v, r), i = Sn(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
+ }), Cn(o, t, n);
1750
+ let l = Pn(o);
1751
+ wn(l, t, n), Tn(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, h = p - d;
1759
+ i[r] = {
1760
+ minX: u,
1761
+ minY: d,
1762
+ maxX: f,
1763
+ maxY: p,
1764
+ width: m,
1765
+ height: h,
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 h = Pn(e);
1834
+ wn(h, t, n), Tn(e, h), 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 wn(e, t, n) {
1864
+ n?.useDynamic === !1 && (X = null, Z = null), t(" makeSpaceForEdgeLabels", () => Fn(e)), t(" removeSelfEdges", () => Wn(e)), t(" acyclic", () => Ge(e, X)), t(" nestingGraph.run", () => Ct(e)), t(" rank", () => ht(D(e))), t(" injectEdgeLabelProxies", () => In(e)), t(" removeEmptyRanks", () => Ae(e)), t(" nestingGraph.cleanup", () => Dt(e)), t(" normalizeRanks", () => ke(e)), t(" assignRankMinMax", () => Ln(e)), t(" removeEdgeLabelProxies", () => Rn(e)), t(" normalize.run", () => Ye(e)), t(" parentDummyChains", () => yt(e)), t(" addBorderSegments", () => Ot(e)), t(" order", () => $t(e, n, Z)), t(" insertSelfEdges", () => Gn(e)), t(" adjustCoordinateSystem", () => jt(e)), t(" position", () => yn(e, n.corePath)), t(" positionSelfEdges", () => Kn(e)), Z = JSON.parse(JSON.stringify(e._nodes)), t(" removeBorderNodes", () => Un(e)), t(" normalize.undo", () => Ze(e)), t(" fixupEdgeLabelCoords", () => Vn(e)), t(" undoCoordinateSystem", () => Mt(e)), t(" translateGraph", () => zn(e)), t(" assignNodeIntersects", () => Bn(e)), t(" reversePoints", () => Hn(e)), t(" acyclic.undo", () => qe(e)), X = e;
1648
1865
  }
1649
- function bn(e, t) {
1866
+ function Tn(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 En = [
1659
1876
  "nodesep",
1660
1877
  "edgesep",
1661
1878
  "ranksep",
1662
1879
  "marginx",
1663
1880
  "marginy"
1664
- ], Sn = {
1881
+ ], Dn = {
1665
1882
  ranksep: 50,
1666
1883
  edgesep: 20,
1667
1884
  nodesep: 50,
1668
1885
  rankdir: "TB",
1669
1886
  rankalign: "center"
1670
- }, Cn = [
1887
+ }, On = [
1671
1888
  "acyclicer",
1672
1889
  "ranker",
1673
1890
  "rankdir",
1674
1891
  "align",
1675
1892
  "rankalign"
1676
- ], wn = [
1893
+ ], kn = [
1677
1894
  "width",
1678
1895
  "height",
1679
1896
  "rank"
1680
- ], Tn = {
1897
+ ], An = {
1681
1898
  width: 0,
1682
1899
  height: 0
1683
- }, En = [
1900
+ }, jn = [
1684
1901
  "minlen",
1685
1902
  "weight",
1686
1903
  "width",
1687
1904
  "height",
1688
1905
  "labeloffset"
1689
- ], Dn = {
1906
+ ], Mn = {
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) {
1913
+ }, Nn = ["labelpos"];
1914
+ function Pn(e) {
1698
1915
  let t = new g({
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({}, Dn, Q(n, En), I(n, On))), e.nodes().forEach((n) => {
1920
+ let r = Q($(e.node(n)), kn);
1921
+ Object.keys(An).forEach((e) => {
1922
+ r[e] === void 0 && (r[e] = An[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({}, Mn, Q(r, jn), I(r, Nn)));
1712
1929
  }), t;
1713
1930
  }
1714
- function An(e) {
1931
+ function Fn(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 In(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 Ln(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 Rn(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 zn(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 Bn(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 Vn(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 Hn(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 Un(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 Wn(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 Gn(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 Kn(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 qn = 160, Jn = 50, Yn = 8, Xn = 24, Zn = {
1874
2163
  child: {
1875
2164
  fill: "#dae8fc",
1876
2165
  stroke: "#6c8ebf"
@@ -1879,10 +2168,10 @@ 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
+ }, Qn = "dpuse-tool-d3-erd-arrow";
2172
+ function $n(t, n, r = {}) {
2173
+ let a = r.nodeWidth ?? qn, o = r.nodeHeight ?? Jn, s = r.padding ?? Yn, l = r.selfEdgeSize ?? Xn, u = r.nodeColors ?? Zn, d = r.orderConstraints ?? [];
2174
+ function f() {
1886
2175
  e(n).selectAll("svg").remove();
1887
2176
  let r = new p.Graph();
1888
2177
  r.setGraph({
@@ -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
+ xn(r, { constraints: d });
2193
+ let { width: f = 0, height: m = 0 } = r.graph(), h = f + s * 2, g = m + s * 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(s)}, ${String(s)})`);
2194
+ _.append("defs").append("marker").attr("id", Qn).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 = c().x((e) => e.x).y((e) => e.y).curve(i);
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(#${Qn})`).attr("d", (e) => e.v === e.w ? er(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 = f();
1918
2207
  return {
1919
2208
  resize: () => {
1920
- f = d();
2209
+ m = f();
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 er(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 { $n as renderErdDiagram };
1933
2222
 
1934
- //# sourceMappingURL=erdDiagram-b-qDkEhY.js.map
2223
+ //# sourceMappingURL=erdDiagram-CWFK8bsD.js.map