@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.
- package/README.md +223 -223
- package/dist/dpuse-tool-d3-visualiser.es.js +1 -1
- package/dist/{erdDiagram-b-qDkEhY.js → erdDiagram-CWFK8bsD.js} +683 -394
- package/dist/erdDiagram-CWFK8bsD.js.map +1 -0
- package/dist/types/src/erdDiagram.d.ts +4 -0
- package/package.json +2 -2
- package/dist/erdDiagram-b-qDkEhY.js.map +0 -1
|
@@ -311,10 +311,10 @@ h(S, {
|
|
|
311
311
|
findCycles: () => me,
|
|
312
312
|
floydWarshall: () => ge,
|
|
313
313
|
isAcyclic: () => ye,
|
|
314
|
-
postorder: () =>
|
|
315
|
-
preorder: () =>
|
|
316
|
-
prim: () =>
|
|
317
|
-
shortestPaths: () =>
|
|
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 =
|
|
537
|
+
i = xe(e, t, n === "post", o, a, r, i);
|
|
538
538
|
}), i;
|
|
539
539
|
}
|
|
540
|
-
function
|
|
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 =
|
|
542
|
+
o = xe(e, t, n, r, i, a, o);
|
|
543
543
|
}), n && (o = a(o, t))), o;
|
|
544
544
|
}
|
|
545
|
-
function
|
|
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
|
|
551
|
-
return
|
|
550
|
+
function Ce(e, t) {
|
|
551
|
+
return Se(e, t, "post");
|
|
552
552
|
}
|
|
553
|
-
function
|
|
554
|
-
return
|
|
553
|
+
function we(e, t) {
|
|
554
|
+
return Se(e, t, "pre");
|
|
555
555
|
}
|
|
556
|
-
function
|
|
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
|
|
581
|
-
return
|
|
580
|
+
function Ee(e, t, n, r) {
|
|
581
|
+
return De(e, t, n, r ?? ((t) => e.outEdges(t) ?? []));
|
|
582
582
|
}
|
|
583
|
-
function
|
|
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
|
|
599
|
+
function E(e, t, n, r) {
|
|
600
600
|
let i = r;
|
|
601
|
-
for (; e.hasNode(i);) i =
|
|
601
|
+
for (; e.hasNode(i);) i = P(r);
|
|
602
602
|
return n.dummy = t, e.setNode(i, n), i;
|
|
603
603
|
}
|
|
604
|
-
function
|
|
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
|
|
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
|
|
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
|
|
635
|
-
let t =
|
|
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
|
|
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 =
|
|
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
|
|
652
|
-
let t = e.nodes().map((t) => e.node(t).rank).filter((e) => e !== void 0), n =
|
|
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
|
|
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),
|
|
667
|
+
return arguments.length >= 4 && (i.rank = n, i.order = r), E(e, "border", i, t);
|
|
668
668
|
}
|
|
669
|
-
function
|
|
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
|
|
678
|
-
function
|
|
679
|
-
return t.length >
|
|
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
|
|
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
|
|
686
|
+
return M(Math.max, t);
|
|
687
687
|
}
|
|
688
|
-
function
|
|
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
|
|
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
|
|
709
|
-
function
|
|
710
|
-
return e + ("" + ++
|
|
700
|
+
var Pe = 0;
|
|
701
|
+
function P(e) {
|
|
702
|
+
return e + ("" + ++Pe);
|
|
711
703
|
}
|
|
712
|
-
function
|
|
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
|
|
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
|
|
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
|
|
721
|
+
function Fe(e, t) {
|
|
730
722
|
return e.reduce((e, n, r) => (e[n] = t[r], e), {});
|
|
731
723
|
}
|
|
732
|
-
var
|
|
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
|
|
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 &&
|
|
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,
|
|
750
|
+
for (; n !== t;) e.push(JSON.stringify(n, Re)), n = n._prev;
|
|
749
751
|
return "[" + e.join(", ") + "]";
|
|
750
752
|
}
|
|
751
753
|
};
|
|
752
|
-
function
|
|
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
|
|
757
|
+
function Re(e, t) {
|
|
756
758
|
if (e !== "_next" && e !== "_prev") return t;
|
|
757
759
|
}
|
|
758
|
-
var
|
|
759
|
-
function
|
|
760
|
+
var ze = Ie, Be = () => 1;
|
|
761
|
+
function Ve(e, t) {
|
|
760
762
|
if (e.nodeCount() <= 1) return [];
|
|
761
|
-
let n =
|
|
762
|
-
return
|
|
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
|
|
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();)
|
|
768
|
-
for (; o = i.dequeue();)
|
|
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(
|
|
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
|
|
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,
|
|
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,
|
|
790
|
+
o.in -= i, V(t, n, o);
|
|
789
791
|
}), e.removeNode(r.v), o;
|
|
790
792
|
}
|
|
791
|
-
function
|
|
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 =
|
|
807
|
+
let a = We(i + r + 3).map(() => new ze()), o = r + 1;
|
|
806
808
|
return n.nodes().forEach((e) => {
|
|
807
|
-
|
|
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
|
|
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
|
|
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
|
|
824
|
-
(e.graph().acyclicer === "greedy" ?
|
|
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,
|
|
828
|
+
e.removeEdge(t), n.forwardName = t.name, n.reversed = !0, e.setEdge(t.w, t.v, n, P("rev"));
|
|
827
829
|
});
|
|
828
|
-
function
|
|
830
|
+
function n(e) {
|
|
829
831
|
return (t) => e.edge(t).weight;
|
|
830
832
|
}
|
|
831
833
|
}
|
|
832
|
-
function
|
|
833
|
-
let
|
|
834
|
-
function
|
|
835
|
-
Object.hasOwn(
|
|
836
|
-
Object.hasOwn(
|
|
837
|
-
}), delete
|
|
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
|
-
|
|
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
|
|
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
|
|
852
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
892
|
-
function
|
|
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 (;
|
|
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
|
|
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) && !
|
|
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
|
|
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 =
|
|
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
|
|
936
|
+
function nt(e, t, n) {
|
|
918
937
|
e.nodes().forEach((e) => t.node(e).rank += n);
|
|
919
938
|
}
|
|
920
|
-
var { preorder:
|
|
921
|
-
|
|
922
|
-
function
|
|
923
|
-
e =
|
|
924
|
-
let t =
|
|
925
|
-
|
|
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 =
|
|
946
|
+
for (; n = lt(t);) r = ut(t, e, n), dt(t, e, n, r);
|
|
928
947
|
}
|
|
929
|
-
function
|
|
930
|
-
let n =
|
|
931
|
-
n = n.slice(0, n.length - 1), n.forEach((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
|
|
952
|
+
function ot(e, t, n) {
|
|
934
953
|
let r = e.node(n).parent, i = e.edge(n, r);
|
|
935
|
-
i.cutvalue =
|
|
954
|
+
i.cutvalue = st(e, t, n);
|
|
936
955
|
}
|
|
937
|
-
function
|
|
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,
|
|
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
|
|
953
|
-
arguments.length < 2 && (t = e.nodes()[0]),
|
|
971
|
+
function K(e, t) {
|
|
972
|
+
arguments.length < 2 && (t = e.nodes()[0]), ct(e, {}, 1, t);
|
|
954
973
|
}
|
|
955
|
-
function
|
|
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 =
|
|
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
|
|
982
|
+
function lt(e) {
|
|
964
983
|
return e.edges().find((t) => e.edge(t).cutvalue < 0);
|
|
965
984
|
}
|
|
966
|
-
function
|
|
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 ===
|
|
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
|
|
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, {}),
|
|
993
|
+
e.removeEdge(i, a), e.setEdge(r.v, r.w, {}), K(e), G(e, t), ft(e, t);
|
|
975
994
|
}
|
|
976
|
-
function
|
|
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 =
|
|
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
|
|
1004
|
+
function pt(e, t, n) {
|
|
986
1005
|
return e.hasEdge(t, n);
|
|
987
1006
|
}
|
|
988
|
-
function
|
|
1007
|
+
function mt(e, t, n) {
|
|
989
1008
|
return n.low <= t.lim && t.lim <= n.lim;
|
|
990
1009
|
}
|
|
991
|
-
var
|
|
992
|
-
function
|
|
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
|
-
|
|
1016
|
+
q(e);
|
|
998
1017
|
break;
|
|
999
1018
|
case "tight-tree":
|
|
1000
|
-
|
|
1019
|
+
vt(e);
|
|
1001
1020
|
break;
|
|
1002
1021
|
case "longest-path":
|
|
1003
|
-
|
|
1022
|
+
_t(e);
|
|
1004
1023
|
break;
|
|
1005
1024
|
case "none": break;
|
|
1006
|
-
default:
|
|
1025
|
+
default: q(e);
|
|
1007
1026
|
}
|
|
1008
1027
|
}
|
|
1009
|
-
var
|
|
1010
|
-
function
|
|
1011
|
-
|
|
1028
|
+
var _t = H;
|
|
1029
|
+
function vt(e) {
|
|
1030
|
+
H(e), Qe(e);
|
|
1012
1031
|
}
|
|
1013
|
-
function
|
|
1014
|
-
|
|
1032
|
+
function q(e) {
|
|
1033
|
+
at(e);
|
|
1015
1034
|
}
|
|
1016
|
-
var
|
|
1017
|
-
function
|
|
1018
|
-
let t =
|
|
1019
|
-
|
|
1020
|
-
let r = e.node(n), i = r.edgeObj, a =
|
|
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
|
|
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
|
|
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(
|
|
1075
|
+
return e.children(R).forEach(r), t;
|
|
1057
1076
|
}
|
|
1058
|
-
function
|
|
1059
|
-
let t =
|
|
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 =
|
|
1062
|
-
e.children(
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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(
|
|
1118
|
+
return e.children(R).forEach((e) => n(e, 1)), t;
|
|
1098
1119
|
}
|
|
1099
|
-
function
|
|
1120
|
+
function Et(e) {
|
|
1100
1121
|
return e.edges().reduce((t, n) => t + e.edge(n).weight, 0);
|
|
1101
1122
|
}
|
|
1102
|
-
function
|
|
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
|
|
1109
|
-
function
|
|
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)
|
|
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(
|
|
1138
|
+
e.children(R).forEach(t);
|
|
1118
1139
|
}
|
|
1119
|
-
function
|
|
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 =
|
|
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
|
|
1149
|
+
function jt(e) {
|
|
1129
1150
|
let t = e.graph().rankdir?.toLowerCase();
|
|
1130
|
-
(t === "lr" || t === "rl") &&
|
|
1151
|
+
(t === "lr" || t === "rl") && Nt(e);
|
|
1131
1152
|
}
|
|
1132
|
-
function
|
|
1153
|
+
function Mt(e) {
|
|
1133
1154
|
let t = e.graph().rankdir?.toLowerCase();
|
|
1134
|
-
(t === "bt" || t === "rl") &&
|
|
1155
|
+
(t === "bt" || t === "rl") && Ft(e), (t === "lr" || t === "rl") && (It(e), Nt(e));
|
|
1135
1156
|
}
|
|
1136
|
-
function
|
|
1137
|
-
e.nodes().forEach((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
|
|
1160
|
+
function Pt(e) {
|
|
1140
1161
|
let t = e.width;
|
|
1141
1162
|
e.width = e.height, e.height = t;
|
|
1142
1163
|
}
|
|
1143
|
-
function
|
|
1144
|
-
e.nodes().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(
|
|
1168
|
+
(n = r.points) == null || n.forEach(J), Object.hasOwn(r, "y") && J(r);
|
|
1148
1169
|
});
|
|
1149
1170
|
}
|
|
1150
|
-
function
|
|
1171
|
+
function J(e) {
|
|
1151
1172
|
e.y = -e.y;
|
|
1152
1173
|
}
|
|
1153
|
-
function
|
|
1154
|
-
e.nodes().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(
|
|
1178
|
+
(n = r.points) == null || n.forEach(Y), Object.hasOwn(r, "x") && Y(r);
|
|
1158
1179
|
});
|
|
1159
1180
|
}
|
|
1160
|
-
function
|
|
1181
|
+
function Y(e) {
|
|
1161
1182
|
let t = e.x;
|
|
1162
1183
|
e.x = e.y, e.y = t;
|
|
1163
1184
|
}
|
|
1164
|
-
function
|
|
1165
|
-
let
|
|
1166
|
-
function
|
|
1167
|
-
if (t
|
|
1168
|
-
t
|
|
1169
|
-
let r = e.node(
|
|
1170
|
-
|
|
1171
|
-
let
|
|
1172
|
-
|
|
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
|
-
|
|
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
|
|
1201
|
+
function Rt(e, t) {
|
|
1177
1202
|
let n = 0;
|
|
1178
|
-
for (let r = 1; r < t.length; ++r) n +=
|
|
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
|
|
1182
|
-
let r =
|
|
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
|
|
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
|
|
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
|
-
}),
|
|
1263
|
+
}), Ht(Object.values(n).filter((e) => !e.indegree));
|
|
1239
1264
|
}
|
|
1240
|
-
function
|
|
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) &&
|
|
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) =>
|
|
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
|
|
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
|
|
1268
|
-
let
|
|
1269
|
-
|
|
1270
|
-
|
|
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
|
|
1273
|
-
return
|
|
1304
|
+
let g = { vs: f.flat(1) };
|
|
1305
|
+
return m && (g.barycenter = p / m, g.weight = m), g;
|
|
1274
1306
|
}
|
|
1275
|
-
function
|
|
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
|
|
1281
|
-
return (
|
|
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
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
l.
|
|
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
|
|
1290
|
-
|
|
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
|
|
1294
|
-
|
|
1295
|
-
let
|
|
1296
|
-
if (o &&
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
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(
|
|
1354
|
+
let t = e.predecessors(d);
|
|
1303
1355
|
if (t && t.length) {
|
|
1304
|
-
let n = e.node(t[0]), r = e.predecessors(
|
|
1305
|
-
Object.hasOwn(
|
|
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
|
|
1309
|
-
|
|
1310
|
-
|
|
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
|
|
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
|
|
1380
|
+
function Xt(e, t, n, r) {
|
|
1319
1381
|
r ||= e.nodes();
|
|
1320
|
-
let i =
|
|
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
|
|
1398
|
+
function Zt(e) {
|
|
1337
1399
|
let t;
|
|
1338
|
-
for (; e.hasNode(t =
|
|
1400
|
+
for (; e.hasNode(t = P("_root")););
|
|
1339
1401
|
return t;
|
|
1340
1402
|
}
|
|
1341
|
-
function
|
|
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
|
|
1416
|
+
function $t(e, t = {}, n = null) {
|
|
1355
1417
|
if (typeof t.customOrder == "function") {
|
|
1356
|
-
t.customOrder(e,
|
|
1418
|
+
t.customOrder(e, $t);
|
|
1357
1419
|
return;
|
|
1358
1420
|
}
|
|
1359
|
-
let
|
|
1360
|
-
if (
|
|
1361
|
-
let
|
|
1362
|
-
for (let t = 0,
|
|
1363
|
-
|
|
1364
|
-
let
|
|
1365
|
-
|
|
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
|
-
|
|
1429
|
+
nn(e, c);
|
|
1368
1430
|
}
|
|
1369
|
-
function
|
|
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
|
|
1440
|
+
return Xt(e, t, n, r.get(t) || []);
|
|
1379
1441
|
});
|
|
1380
1442
|
}
|
|
1381
|
-
function
|
|
1382
|
-
let
|
|
1443
|
+
function tn(e, t, n, r) {
|
|
1444
|
+
let i = !0, a = new g();
|
|
1383
1445
|
e.forEach(function(e) {
|
|
1384
|
-
n.forEach((e) =>
|
|
1385
|
-
let
|
|
1386
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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) &&
|
|
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
|
|
1471
|
+
function an(e, t) {
|
|
1410
1472
|
let n = {};
|
|
1411
1473
|
function r(t, r, i, a, o) {
|
|
1412
|
-
|
|
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) &&
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1463
|
-
let
|
|
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
|
-
|
|
1528
|
+
a[e] = e, o[e] = e, s[e] = t;
|
|
1467
1529
|
});
|
|
1468
|
-
}), t.forEach((
|
|
1469
|
-
let
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
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
|
-
}),
|
|
1477
|
-
for (let
|
|
1478
|
-
let
|
|
1479
|
-
if (
|
|
1480
|
-
let
|
|
1481
|
-
if (
|
|
1482
|
-
let
|
|
1483
|
-
|
|
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:
|
|
1490
|
-
align:
|
|
1556
|
+
root: a,
|
|
1557
|
+
align: o
|
|
1491
1558
|
};
|
|
1492
1559
|
}
|
|
1493
|
-
function
|
|
1494
|
-
let a = {}, o =
|
|
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
|
|
1534
|
-
let i = new g(), a = e.graph(), o =
|
|
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
|
|
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 =
|
|
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
|
|
1564
|
-
let n = Object.values(t), r =
|
|
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 -
|
|
1570
|
-
a !== "l" && (l = i -
|
|
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
|
|
1641
|
+
function mn(e, t = void 0) {
|
|
1575
1642
|
let n = e.ul;
|
|
1576
|
-
return n ?
|
|
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
|
|
1589
|
-
let
|
|
1590
|
-
return ["u", "d"].forEach((
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
let
|
|
1594
|
-
|
|
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
|
-
}),
|
|
1663
|
+
}), pn(i, fn(e, i)), mn(i, e.graph().align);
|
|
1597
1664
|
}
|
|
1598
|
-
function
|
|
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
|
|
1687
|
+
function _n(e, t) {
|
|
1621
1688
|
return e.node(t).width;
|
|
1622
1689
|
}
|
|
1623
|
-
function
|
|
1624
|
-
|
|
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
|
|
1627
|
-
|
|
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
|
-
|
|
1640
|
-
|
|
1641
|
-
return
|
|
1642
|
-
|
|
1643
|
-
|
|
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
|
|
1647
|
-
t(" makeSpaceForEdgeLabels", () =>
|
|
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
|
|
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
|
|
1875
|
+
var En = [
|
|
1659
1876
|
"nodesep",
|
|
1660
1877
|
"edgesep",
|
|
1661
1878
|
"ranksep",
|
|
1662
1879
|
"marginx",
|
|
1663
1880
|
"marginy"
|
|
1664
|
-
],
|
|
1881
|
+
], Dn = {
|
|
1665
1882
|
ranksep: 50,
|
|
1666
1883
|
edgesep: 20,
|
|
1667
1884
|
nodesep: 50,
|
|
1668
1885
|
rankdir: "TB",
|
|
1669
1886
|
rankalign: "center"
|
|
1670
|
-
},
|
|
1887
|
+
}, On = [
|
|
1671
1888
|
"acyclicer",
|
|
1672
1889
|
"ranker",
|
|
1673
1890
|
"rankdir",
|
|
1674
1891
|
"align",
|
|
1675
1892
|
"rankalign"
|
|
1676
|
-
],
|
|
1893
|
+
], kn = [
|
|
1677
1894
|
"width",
|
|
1678
1895
|
"height",
|
|
1679
1896
|
"rank"
|
|
1680
|
-
],
|
|
1897
|
+
], An = {
|
|
1681
1898
|
width: 0,
|
|
1682
1899
|
height: 0
|
|
1683
|
-
},
|
|
1900
|
+
}, jn = [
|
|
1684
1901
|
"minlen",
|
|
1685
1902
|
"weight",
|
|
1686
1903
|
"width",
|
|
1687
1904
|
"height",
|
|
1688
1905
|
"labeloffset"
|
|
1689
|
-
],
|
|
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
|
-
},
|
|
1697
|
-
function
|
|
1913
|
+
}, Nn = ["labelpos"];
|
|
1914
|
+
function Pn(e) {
|
|
1698
1915
|
let t = new g({
|
|
1699
1916
|
multigraph: !0,
|
|
1700
1917
|
compound: !0
|
|
1701
|
-
}), n =
|
|
1702
|
-
return t.setGraph(Object.assign({},
|
|
1703
|
-
let r =
|
|
1704
|
-
Object.keys(
|
|
1705
|
-
r[e] === void 0 && (r[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 =
|
|
1711
|
-
t.setEdge(n, Object.assign({},
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1815
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
1837
|
-
|
|
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:
|
|
1840
|
-
y:
|
|
2086
|
+
x: u + f,
|
|
2087
|
+
y: d - p
|
|
1841
2088
|
},
|
|
1842
2089
|
{
|
|
1843
|
-
x:
|
|
1844
|
-
y:
|
|
2090
|
+
x: u + f,
|
|
2091
|
+
y: d - p
|
|
1845
2092
|
},
|
|
1846
2093
|
{
|
|
1847
|
-
x:
|
|
1848
|
-
y:
|
|
2094
|
+
x: u,
|
|
2095
|
+
y: d
|
|
1849
2096
|
},
|
|
1850
2097
|
{
|
|
1851
|
-
x:
|
|
1852
|
-
y:
|
|
2098
|
+
x: u - f,
|
|
2099
|
+
y: d + p
|
|
1853
2100
|
},
|
|
1854
2101
|
{
|
|
1855
|
-
x:
|
|
1856
|
-
y:
|
|
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
|
-
],
|
|
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
|
|
1863
|
-
return
|
|
2151
|
+
function Q(e, t) {
|
|
2152
|
+
return L(I(e, t), Number);
|
|
1864
2153
|
}
|
|
1865
|
-
function
|
|
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
|
|
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
|
-
},
|
|
1883
|
-
function
|
|
1884
|
-
let a = r.nodeWidth ??
|
|
1885
|
-
function
|
|
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
|
-
|
|
1904
|
-
let { width:
|
|
1905
|
-
|
|
1906
|
-
let
|
|
1907
|
-
|
|
1908
|
-
let
|
|
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
|
-
|
|
1913
|
-
let
|
|
1914
|
-
if (
|
|
1915
|
-
return
|
|
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
|
|
2206
|
+
let m = f();
|
|
1918
2207
|
return {
|
|
1919
2208
|
resize: () => {
|
|
1920
|
-
|
|
2209
|
+
m = f();
|
|
1921
2210
|
},
|
|
1922
2211
|
get svg() {
|
|
1923
|
-
return
|
|
2212
|
+
return m;
|
|
1924
2213
|
}
|
|
1925
2214
|
};
|
|
1926
2215
|
}
|
|
1927
|
-
function
|
|
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 {
|
|
2221
|
+
export { $n as renderErdDiagram };
|
|
1933
2222
|
|
|
1934
|
-
//# sourceMappingURL=erdDiagram-
|
|
2223
|
+
//# sourceMappingURL=erdDiagram-CWFK8bsD.js.map
|