@blueking/ai-blueking 2.0.0-dev.1 → 2.0.0-dev.3
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/dist/vue2/_baseFor-DAbrc8SN.js +309 -0
- package/dist/vue2/arc-BqlAOiZb.js +78 -0
- package/dist/vue2/architecture-U656AL7Q-Dtuq8BzO.js +7 -0
- package/dist/vue2/architectureDiagram-VXUJARFQ-BQS5Ixrn.js +4052 -0
- package/dist/vue2/array-TB8zN_HT.js +5 -0
- package/dist/vue2/blockDiagram-VD42YOAC-Bp6L6c6e.js +3013 -0
- package/dist/vue2/c4Diagram-YG6GDRKO-B15ZDn3Z.js +2956 -0
- package/dist/vue2/channel-edTl5mpN.js +3 -0
- package/dist/vue2/chunk-4BX2VUAB-eAYYj1bL.js +6 -0
- package/dist/vue2/chunk-55IACEB6-CTzuTcHv.js +6 -0
- package/dist/vue2/chunk-76Q3JFCE-BrJX66ha.js +19 -0
- package/dist/vue2/chunk-ABZYJK2D-gsx40GnJ.js +1971 -0
- package/dist/vue2/chunk-ATLVNIR6-CTTwtx-5.js +65 -0
- package/dist/vue2/chunk-B4BG7PRW-D8o7VxRH.js +3108 -0
- package/dist/vue2/chunk-CVBHYZKI-Cs8lCw3u.js +10 -0
- package/dist/vue2/chunk-DI55MBZ5-Dl59YBtR.js +1994 -0
- package/dist/vue2/chunk-DNh5sLlG.js +18 -0
- package/dist/vue2/chunk-EXTU4WIE-BPc8ye_N.js +7 -0
- package/dist/vue2/chunk-FMBD7UC4-PFlLPz_s.js +3 -0
- package/dist/vue2/chunk-FPAJGGOC-DPvjUKQ8.js +13428 -0
- package/dist/vue2/chunk-FWNWRKHM-BlUTFsPK.js +56 -0
- package/dist/vue2/chunk-HN2XXSSU-DueSY85P.js +74 -0
- package/dist/vue2/chunk-JA3XYJ7Z-CRet4f6a.js +1845 -0
- package/dist/vue2/chunk-JZLCHNYA-Df0-MseJ.js +4861 -0
- package/dist/vue2/chunk-LBM3YZW2-B0-w2HZs.js +19 -0
- package/dist/vue2/chunk-LHMN2FUI-BOH3yE2u.js +19 -0
- package/dist/vue2/chunk-MI3HLSF2-6-T1J0MS.js +1140 -0
- package/dist/vue2/chunk-N4CR4FBY-jNnt5D3v.js +39 -0
- package/dist/vue2/chunk-O7ZBX7Z2-BEP34BEE.js +26 -0
- package/dist/vue2/chunk-QN33PNHL-DsC-XeM9.js +23 -0
- package/dist/vue2/chunk-QXUST7PY-DxFRymyS.js +486 -0
- package/dist/vue2/chunk-QZHKN3VN-D9B5jQvg.js +11 -0
- package/dist/vue2/chunk-S3R3BYOJ-Bs_r55Kk.js +1222 -0
- package/dist/vue2/chunk-S6J4BHB3-XXfWHJvh.js +19 -0
- package/dist/vue2/chunk-T53DSG4Q-CNvqP6Iy.js +24 -0
- package/dist/vue2/chunk-TZMSLE5B-C5ccYWGN.js +55 -0
- package/dist/vue2/chunk-XAJISQIX-XsDvU4jW.js +135 -0
- package/dist/vue2/classDiagram-2ON5EDUG-Cgf9yVXj.js +33 -0
- package/dist/vue2/classDiagram-v2-WZHVMYZB-BtF1_0UK.js +33 -0
- package/dist/vue2/clone-Bbr3WSpg.js +7 -0
- package/dist/vue2/cose-bilkent-S5V4N54A-Cmf6WLkk.js +2250 -0
- package/dist/vue2/cytoscape.esm-nrcriBSO.js +18100 -0
- package/dist/vue2/dagre-6UL2VRFP-CTl_U96l.js +298 -0
- package/dist/vue2/dagre-DUjlMe_B.js +1496 -0
- package/dist/vue2/defaultLocale-BLATqOV5.js +177 -0
- package/dist/vue2/diagram-PSM6KHXK-Bl7brR-1.js +497 -0
- package/dist/vue2/diagram-QEK2KX5R-CAeywSxy.js +226 -0
- package/dist/vue2/diagram-S2PKOQOG-6I6J4WRC.js +144 -0
- package/dist/vue2/dist-xWJvauxf.js +49 -0
- package/dist/vue2/erDiagram-Q2GNP2WA-C8EbfuTj.js +1603 -0
- package/dist/vue2/flatten-CfPhNHUL.js +34 -0
- package/dist/vue2/flowDiagram-NV44I4VS-lFr4G2WN.js +4132 -0
- package/dist/vue2/ganttDiagram-JELNMOA3-Bvtip7yn.js +3010 -0
- package/dist/vue2/gitGraph-F6HP7TQM-OQvD95bN.js +7 -0
- package/dist/vue2/gitGraphDiagram-NY62KEGX-Cjvy4fHM.js +634 -0
- package/dist/vue2/graphlib-KDKEjVHX.js +344 -0
- package/dist/vue2/index.es.min.js +26703 -786
- package/dist/vue2/index.umd.min.js +2796 -9
- package/dist/vue2/info-NVLQJR56-DBsOnIKy.js +7 -0
- package/dist/vue2/infoDiagram-WHAUD3N6-D_isj7oC.js +31 -0
- package/dist/vue2/init-hAkIK9Bd.js +13 -0
- package/dist/vue2/isEmpty-z27q3o-D.js +32 -0
- package/dist/vue2/journeyDiagram-XKPGCS4Q-DlXHMS3v.js +885 -0
- package/dist/vue2/kanban-definition-3W4ZIXB7-CV6572lv.js +971 -0
- package/dist/vue2/katex-CEAw-xiA.js +22097 -0
- package/dist/vue2/katex-D8o5-F7C.js +2 -0
- package/dist/vue2/line-wvheYP7S.js +30 -0
- package/dist/vue2/linear-STTevhnH.js +250 -0
- package/dist/vue2/math-DF_v6dOl.js +8 -0
- package/dist/vue2/mermaid-parser.core-VAa8Vi1g.js +48 -0
- package/dist/vue2/mermaid.core-vqI6KB9k.js +895 -0
- package/dist/vue2/mindmap-definition-VGOIOE7T-gtjvHqQ-.js +960 -0
- package/dist/vue2/ordinal-DOM6Fa9P.js +61 -0
- package/dist/vue2/packet-BFZMPI3H-CG049KmZ.js +7 -0
- package/dist/vue2/path-CW_-_Ti7.js +79 -0
- package/dist/vue2/pie-7BOR55EZ-BHq0KcLP.js +7 -0
- package/dist/vue2/pieDiagram-ADFJNKIX-CTUoM-kp.js +172 -0
- package/dist/vue2/purify.es-Cm_tUMzZ.js +547 -0
- package/dist/vue2/quadrantDiagram-AYHSOK5B-Njl7BMW7.js +1971 -0
- package/dist/vue2/radar-NHE76QYJ-CUoVtrAx.js +7 -0
- package/dist/vue2/reduce-BFKSG9Rs.js +451 -0
- package/dist/vue2/requirementDiagram-UZGBJVZJ-DKjE3cDK.js +2194 -0
- package/dist/vue2/sankeyDiagram-TZEHDZUN-DW2ap3zY.js +885 -0
- package/dist/vue2/sequenceDiagram-WL72ISMW-BjMq4OjH.js +3561 -0
- package/dist/vue2/src-VlKYSsxJ.js +1975 -0
- package/dist/vue2/stateDiagram-FKZM4ZOC-CnvtGM9U.js +224 -0
- package/dist/vue2/stateDiagram-v2-4FDKWEC3-C15xi-04.js +32 -0
- package/dist/vue2/style.css +1 -1
- package/dist/vue2/timeline-definition-IT6M3QCI-C7q6jdLA.js +831 -0
- package/dist/vue2/treemap-KMMF4GRG--FdijCcy.js +7 -0
- package/dist/vue2/xychartDiagram-PRI3JC2R-UcfQmj72.js +2022 -0
- package/dist/vue3/_baseFor-DAbrc8SN.js +309 -0
- package/dist/vue3/arc-BqlAOiZb.js +78 -0
- package/dist/vue3/architecture-U656AL7Q-Dtuq8BzO.js +7 -0
- package/dist/vue3/architectureDiagram-VXUJARFQ-BQS5Ixrn.js +4052 -0
- package/dist/vue3/array-TB8zN_HT.js +5 -0
- package/dist/vue3/blockDiagram-VD42YOAC-Bp6L6c6e.js +3013 -0
- package/dist/vue3/c4Diagram-YG6GDRKO-B15ZDn3Z.js +2956 -0
- package/dist/vue3/channel-edTl5mpN.js +3 -0
- package/dist/vue3/chunk-4BX2VUAB-eAYYj1bL.js +6 -0
- package/dist/vue3/chunk-55IACEB6-CTzuTcHv.js +6 -0
- package/dist/vue3/chunk-76Q3JFCE-BrJX66ha.js +19 -0
- package/dist/vue3/chunk-ABZYJK2D-gsx40GnJ.js +1971 -0
- package/dist/vue3/chunk-ATLVNIR6-CTTwtx-5.js +65 -0
- package/dist/vue3/chunk-B4BG7PRW-D8o7VxRH.js +3108 -0
- package/dist/vue3/chunk-CVBHYZKI-Cs8lCw3u.js +10 -0
- package/dist/vue3/chunk-DI55MBZ5-Dl59YBtR.js +1994 -0
- package/dist/vue3/chunk-DNh5sLlG.js +18 -0
- package/dist/vue3/chunk-EXTU4WIE-BPc8ye_N.js +7 -0
- package/dist/vue3/chunk-FMBD7UC4-PFlLPz_s.js +3 -0
- package/dist/vue3/chunk-FPAJGGOC-DPvjUKQ8.js +13428 -0
- package/dist/vue3/chunk-FWNWRKHM-BlUTFsPK.js +56 -0
- package/dist/vue3/chunk-HN2XXSSU-DueSY85P.js +74 -0
- package/dist/vue3/chunk-JA3XYJ7Z-CRet4f6a.js +1845 -0
- package/dist/vue3/chunk-JZLCHNYA-Df0-MseJ.js +4861 -0
- package/dist/vue3/chunk-LBM3YZW2-B0-w2HZs.js +19 -0
- package/dist/vue3/chunk-LHMN2FUI-BOH3yE2u.js +19 -0
- package/dist/vue3/chunk-MI3HLSF2-6-T1J0MS.js +1140 -0
- package/dist/vue3/chunk-N4CR4FBY-jNnt5D3v.js +39 -0
- package/dist/vue3/chunk-O7ZBX7Z2-BEP34BEE.js +26 -0
- package/dist/vue3/chunk-QN33PNHL-DsC-XeM9.js +23 -0
- package/dist/vue3/chunk-QXUST7PY-DxFRymyS.js +486 -0
- package/dist/vue3/chunk-QZHKN3VN-D9B5jQvg.js +11 -0
- package/dist/vue3/chunk-S3R3BYOJ-Bs_r55Kk.js +1222 -0
- package/dist/vue3/chunk-S6J4BHB3-XXfWHJvh.js +19 -0
- package/dist/vue3/chunk-T53DSG4Q-CNvqP6Iy.js +24 -0
- package/dist/vue3/chunk-TZMSLE5B-C5ccYWGN.js +55 -0
- package/dist/vue3/chunk-XAJISQIX-XsDvU4jW.js +135 -0
- package/dist/vue3/classDiagram-2ON5EDUG-Cgf9yVXj.js +33 -0
- package/dist/vue3/classDiagram-v2-WZHVMYZB-BtF1_0UK.js +33 -0
- package/dist/vue3/clone-Bbr3WSpg.js +7 -0
- package/dist/vue3/cose-bilkent-S5V4N54A-Cmf6WLkk.js +2250 -0
- package/dist/vue3/cytoscape.esm-nrcriBSO.js +18100 -0
- package/dist/vue3/dagre-6UL2VRFP-CTl_U96l.js +298 -0
- package/dist/vue3/dagre-DUjlMe_B.js +1496 -0
- package/dist/vue3/defaultLocale-BLATqOV5.js +177 -0
- package/dist/vue3/diagram-PSM6KHXK-Bl7brR-1.js +497 -0
- package/dist/vue3/diagram-QEK2KX5R-CAeywSxy.js +226 -0
- package/dist/vue3/diagram-S2PKOQOG-6I6J4WRC.js +144 -0
- package/dist/vue3/dist-xWJvauxf.js +49 -0
- package/dist/vue3/erDiagram-Q2GNP2WA-C8EbfuTj.js +1603 -0
- package/dist/vue3/flatten-CfPhNHUL.js +34 -0
- package/dist/vue3/flowDiagram-NV44I4VS-lFr4G2WN.js +4132 -0
- package/dist/vue3/ganttDiagram-JELNMOA3-Bvtip7yn.js +3010 -0
- package/dist/vue3/gitGraph-F6HP7TQM-OQvD95bN.js +7 -0
- package/dist/vue3/gitGraphDiagram-NY62KEGX-Cjvy4fHM.js +634 -0
- package/dist/vue3/graphlib-KDKEjVHX.js +344 -0
- package/dist/vue3/index.es.min.js +26730 -813
- package/dist/vue3/index.umd.min.js +2796 -9
- package/dist/vue3/info-NVLQJR56-DBsOnIKy.js +7 -0
- package/dist/vue3/infoDiagram-WHAUD3N6-D_isj7oC.js +31 -0
- package/dist/vue3/init-hAkIK9Bd.js +13 -0
- package/dist/vue3/isEmpty-z27q3o-D.js +32 -0
- package/dist/vue3/journeyDiagram-XKPGCS4Q-DlXHMS3v.js +885 -0
- package/dist/vue3/kanban-definition-3W4ZIXB7-CV6572lv.js +971 -0
- package/dist/vue3/katex-CEAw-xiA.js +22097 -0
- package/dist/vue3/katex-D8o5-F7C.js +2 -0
- package/dist/vue3/line-wvheYP7S.js +30 -0
- package/dist/vue3/linear-STTevhnH.js +250 -0
- package/dist/vue3/math-DF_v6dOl.js +8 -0
- package/dist/vue3/mermaid-parser.core-VAa8Vi1g.js +48 -0
- package/dist/vue3/mermaid.core-vqI6KB9k.js +895 -0
- package/dist/vue3/mindmap-definition-VGOIOE7T-gtjvHqQ-.js +960 -0
- package/dist/vue3/ordinal-DOM6Fa9P.js +61 -0
- package/dist/vue3/packet-BFZMPI3H-CG049KmZ.js +7 -0
- package/dist/vue3/path-CW_-_Ti7.js +79 -0
- package/dist/vue3/pie-7BOR55EZ-BHq0KcLP.js +7 -0
- package/dist/vue3/pieDiagram-ADFJNKIX-CTUoM-kp.js +172 -0
- package/dist/vue3/purify.es-Cm_tUMzZ.js +547 -0
- package/dist/vue3/quadrantDiagram-AYHSOK5B-Njl7BMW7.js +1971 -0
- package/dist/vue3/radar-NHE76QYJ-CUoVtrAx.js +7 -0
- package/dist/vue3/reduce-BFKSG9Rs.js +451 -0
- package/dist/vue3/requirementDiagram-UZGBJVZJ-DKjE3cDK.js +2194 -0
- package/dist/vue3/sankeyDiagram-TZEHDZUN-DW2ap3zY.js +885 -0
- package/dist/vue3/sequenceDiagram-WL72ISMW-BjMq4OjH.js +3561 -0
- package/dist/vue3/src-VlKYSsxJ.js +1975 -0
- package/dist/vue3/stateDiagram-FKZM4ZOC-CnvtGM9U.js +224 -0
- package/dist/vue3/stateDiagram-v2-4FDKWEC3-C15xi-04.js +32 -0
- package/dist/vue3/style.css +1 -1
- package/dist/vue3/timeline-definition-IT6M3QCI-C7q6jdLA.js +831 -0
- package/dist/vue3/treemap-KMMF4GRG--FdijCcy.js +7 -0
- package/dist/vue3/xychartDiagram-PRI3JC2R-UcfQmj72.js +2022 -0
- package/package.json +3 -3
|
@@ -0,0 +1,1496 @@
|
|
|
1
|
+
import { E as _arrayMap_default, _ as _castPath_default, c as filter_default, d as _baseIteratee_default, f as _baseProperty_default, g as _toKey_default, h as _baseGet_default, m as _hasPath_default, n as forEach_default, o as _baseFindIndex_default, p as hasIn_default, r as _castFunction_default, s as _baseFlatten_default, t as reduce_default, u as _baseForOwn_default, v as toString_default, x as keys_default, y as isSymbol_default } from "./reduce-BFKSG9Rs.js";
|
|
2
|
+
import { D as _root_default, O as eq_default, T as _baseGetTag_default, f as _isIndex_default, g as isArray_default, h as isObjectLike_default, i as isArrayLike_default, n as identity_default, t as _baseFor_default, u as _baseUnary_default, w as isObject_default } from "./_baseFor-DAbrc8SN.js";
|
|
3
|
+
import { i as _baseKeys_default, n as _getTag_default } from "./isEmpty-z27q3o-D.js";
|
|
4
|
+
import { a as map_default, i as _baseExtremum_default, n as min_default, o as _baseMap_default, r as _baseLt_default, t as flatten_default } from "./flatten-CfPhNHUL.js";
|
|
5
|
+
import { C as _overRest_default, E as _assignValue_default, P as _baseAssignValue_default, S as constant_default, b as _baseRest_default, v as merge_default, w as keysIn_default, x as _setToString_default, y as _isIterateeCall_default } from "./chunk-S3R3BYOJ-Bs_r55Kk.js";
|
|
6
|
+
import { i as _baseClone_default, n as isUndefined_default, r as values_default, t as Graph } from "./graphlib-KDKEjVHX.js";
|
|
7
|
+
var reWhitespace = /\s/;
|
|
8
|
+
function trimmedEndIndex(u) {
|
|
9
|
+
for (var z = u.length; z-- && reWhitespace.test(u.charAt(z)););
|
|
10
|
+
return z;
|
|
11
|
+
}
|
|
12
|
+
var _trimmedEndIndex_default = trimmedEndIndex, reTrimStart = /^\s+/;
|
|
13
|
+
function baseTrim(u) {
|
|
14
|
+
return u && u.slice(0, _trimmedEndIndex_default(u) + 1).replace(reTrimStart, "");
|
|
15
|
+
}
|
|
16
|
+
var _baseTrim_default = baseTrim, NAN = NaN, reIsBadHex = /^[-+]0x[0-9a-f]+$/i, reIsBinary = /^0b[01]+$/i, reIsOctal = /^0o[0-7]+$/i, freeParseInt = parseInt;
|
|
17
|
+
function toNumber(u) {
|
|
18
|
+
if (typeof u == "number") return u;
|
|
19
|
+
if (isSymbol_default(u)) return NAN;
|
|
20
|
+
if (isObject_default(u)) {
|
|
21
|
+
var z = typeof u.valueOf == "function" ? u.valueOf() : u;
|
|
22
|
+
u = isObject_default(z) ? z + "" : z;
|
|
23
|
+
}
|
|
24
|
+
if (typeof u != "string") return u === 0 ? u : +u;
|
|
25
|
+
u = _baseTrim_default(u);
|
|
26
|
+
var B = reIsBinary.test(u);
|
|
27
|
+
return B || reIsOctal.test(u) ? freeParseInt(u.slice(2), B ? 2 : 8) : reIsBadHex.test(u) ? NAN : +u;
|
|
28
|
+
}
|
|
29
|
+
var toNumber_default = toNumber, INFINITY = Infinity, MAX_INTEGER = 17976931348623157e292;
|
|
30
|
+
function toFinite(u) {
|
|
31
|
+
return u ? (u = toNumber_default(u), u === INFINITY || u === -INFINITY ? (u < 0 ? -1 : 1) * MAX_INTEGER : u === u ? u : 0) : u === 0 ? u : 0;
|
|
32
|
+
}
|
|
33
|
+
var toFinite_default = toFinite;
|
|
34
|
+
function toInteger(u) {
|
|
35
|
+
var z = toFinite_default(u), B = z % 1;
|
|
36
|
+
return z === z ? B ? z - B : z : 0;
|
|
37
|
+
}
|
|
38
|
+
var toInteger_default = toInteger;
|
|
39
|
+
function flatRest(u) {
|
|
40
|
+
return _setToString_default(_overRest_default(u, void 0, flatten_default), u + "");
|
|
41
|
+
}
|
|
42
|
+
var _flatRest_default = flatRest, reHasUnicode = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");
|
|
43
|
+
function hasUnicode(u) {
|
|
44
|
+
return reHasUnicode.test(u);
|
|
45
|
+
}
|
|
46
|
+
var _hasUnicode_default = hasUnicode, CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4;
|
|
47
|
+
function cloneDeep(u) {
|
|
48
|
+
return _baseClone_default(u, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
|
|
49
|
+
}
|
|
50
|
+
var cloneDeep_default = cloneDeep, now_default = function() {
|
|
51
|
+
return _root_default.Date.now();
|
|
52
|
+
}, objectProto = Object.prototype, hasOwnProperty$1 = objectProto.hasOwnProperty, defaults_default = _baseRest_default(function(u, z) {
|
|
53
|
+
u = Object(u);
|
|
54
|
+
var B = -1, V = z.length, H = V > 2 ? z[2] : void 0;
|
|
55
|
+
for (H && _isIterateeCall_default(z[0], z[1], H) && (V = 1); ++B < V;) for (var U = z[B], W = keysIn_default(U), G = -1, K = W.length; ++G < K;) {
|
|
56
|
+
var q = W[G], J = u[q];
|
|
57
|
+
(J === void 0 || eq_default(J, objectProto[q]) && !hasOwnProperty$1.call(u, q)) && (u[q] = U[q]);
|
|
58
|
+
}
|
|
59
|
+
return u;
|
|
60
|
+
});
|
|
61
|
+
function last(u) {
|
|
62
|
+
var z = u == null ? 0 : u.length;
|
|
63
|
+
return z ? u[z - 1] : void 0;
|
|
64
|
+
}
|
|
65
|
+
var last_default = last;
|
|
66
|
+
function createFind(u) {
|
|
67
|
+
return function(z, B, H) {
|
|
68
|
+
var U = Object(z);
|
|
69
|
+
if (!isArrayLike_default(z)) {
|
|
70
|
+
var W = _baseIteratee_default(B, 3);
|
|
71
|
+
z = keys_default(z), B = function(u) {
|
|
72
|
+
return W(U[u], u, U);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
var G = u(z, B, H);
|
|
76
|
+
return G > -1 ? U[W ? z[G] : G] : void 0;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
var _createFind_default = createFind, nativeMax$1 = Math.max;
|
|
80
|
+
function findIndex(u, z, B) {
|
|
81
|
+
var H = u == null ? 0 : u.length;
|
|
82
|
+
if (!H) return -1;
|
|
83
|
+
var U = B == null ? 0 : toInteger_default(B);
|
|
84
|
+
return U < 0 && (U = nativeMax$1(H + U, 0)), _baseFindIndex_default(u, _baseIteratee_default(z, 3), U);
|
|
85
|
+
}
|
|
86
|
+
var find_default = _createFind_default(findIndex);
|
|
87
|
+
function forIn(u, z) {
|
|
88
|
+
return u == null ? u : _baseFor_default(u, _castFunction_default(z), keysIn_default);
|
|
89
|
+
}
|
|
90
|
+
var forIn_default = forIn;
|
|
91
|
+
function forOwn(u, z) {
|
|
92
|
+
return u && _baseForOwn_default(u, _castFunction_default(z));
|
|
93
|
+
}
|
|
94
|
+
var forOwn_default = forOwn;
|
|
95
|
+
function baseGt(u, z) {
|
|
96
|
+
return u > z;
|
|
97
|
+
}
|
|
98
|
+
var _baseGt_default = baseGt, hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
99
|
+
function baseHas(u, z) {
|
|
100
|
+
return u != null && hasOwnProperty.call(u, z);
|
|
101
|
+
}
|
|
102
|
+
var _baseHas_default = baseHas;
|
|
103
|
+
function has(u, z) {
|
|
104
|
+
return u != null && _hasPath_default(u, z, _baseHas_default);
|
|
105
|
+
}
|
|
106
|
+
var has_default = has, stringTag = "[object String]";
|
|
107
|
+
function isString(u) {
|
|
108
|
+
return typeof u == "string" || !isArray_default(u) && isObjectLike_default(u) && _baseGetTag_default(u) == stringTag;
|
|
109
|
+
}
|
|
110
|
+
var isString_default = isString;
|
|
111
|
+
function mapValues(u, z) {
|
|
112
|
+
var B = {};
|
|
113
|
+
return z = _baseIteratee_default(z, 3), _baseForOwn_default(u, function(u, V, H) {
|
|
114
|
+
_baseAssignValue_default(B, V, z(u, V, H));
|
|
115
|
+
}), B;
|
|
116
|
+
}
|
|
117
|
+
var mapValues_default = mapValues;
|
|
118
|
+
function max(u) {
|
|
119
|
+
return u && u.length ? _baseExtremum_default(u, identity_default, _baseGt_default) : void 0;
|
|
120
|
+
}
|
|
121
|
+
var max_default = max;
|
|
122
|
+
function minBy(u, z) {
|
|
123
|
+
return u && u.length ? _baseExtremum_default(u, _baseIteratee_default(z, 2), _baseLt_default) : void 0;
|
|
124
|
+
}
|
|
125
|
+
var minBy_default = minBy;
|
|
126
|
+
function baseSet(u, B, V, H) {
|
|
127
|
+
if (!isObject_default(u)) return u;
|
|
128
|
+
B = _castPath_default(B, u);
|
|
129
|
+
for (var W = -1, G = B.length, K = G - 1, q = u; q != null && ++W < G;) {
|
|
130
|
+
var J = _toKey_default(B[W]), Y = V;
|
|
131
|
+
if (J === "__proto__" || J === "constructor" || J === "prototype") return u;
|
|
132
|
+
if (W != K) {
|
|
133
|
+
var X = q[J];
|
|
134
|
+
Y = H ? H(X, J, q) : void 0, Y === void 0 && (Y = isObject_default(X) ? X : _isIndex_default(B[W + 1]) ? [] : {});
|
|
135
|
+
}
|
|
136
|
+
_assignValue_default(q, J, Y), q = q[J];
|
|
137
|
+
}
|
|
138
|
+
return u;
|
|
139
|
+
}
|
|
140
|
+
var _baseSet_default = baseSet;
|
|
141
|
+
function basePickBy(u, B, V) {
|
|
142
|
+
for (var H = -1, U = B.length, G = {}; ++H < U;) {
|
|
143
|
+
var K = B[H], q = _baseGet_default(u, K);
|
|
144
|
+
V(q, K) && _baseSet_default(G, _castPath_default(K, u), q);
|
|
145
|
+
}
|
|
146
|
+
return G;
|
|
147
|
+
}
|
|
148
|
+
var _basePickBy_default = basePickBy;
|
|
149
|
+
function baseSortBy(u, z) {
|
|
150
|
+
var B = u.length;
|
|
151
|
+
for (u.sort(z); B--;) u[B] = u[B].value;
|
|
152
|
+
return u;
|
|
153
|
+
}
|
|
154
|
+
var _baseSortBy_default = baseSortBy;
|
|
155
|
+
function compareAscending(u, z) {
|
|
156
|
+
if (u !== z) {
|
|
157
|
+
var B = u !== void 0, V = u === null, H = u === u, U = isSymbol_default(u), W = z !== void 0, G = z === null, K = z === z, q = isSymbol_default(z);
|
|
158
|
+
if (!G && !q && !U && u > z || U && W && K && !G && !q || V && W && K || !B && K || !H) return 1;
|
|
159
|
+
if (!V && !U && !q && u < z || q && B && H && !V && !U || G && B && H || !W && H || !K) return -1;
|
|
160
|
+
}
|
|
161
|
+
return 0;
|
|
162
|
+
}
|
|
163
|
+
var _compareAscending_default = compareAscending;
|
|
164
|
+
function compareMultiple(u, z, B) {
|
|
165
|
+
for (var V = -1, H = u.criteria, U = z.criteria, W = H.length, G = B.length; ++V < W;) {
|
|
166
|
+
var K = _compareAscending_default(H[V], U[V]);
|
|
167
|
+
if (K) return V >= G ? K : K * (B[V] == "desc" ? -1 : 1);
|
|
168
|
+
}
|
|
169
|
+
return u.index - z.index;
|
|
170
|
+
}
|
|
171
|
+
var _compareMultiple_default = compareMultiple;
|
|
172
|
+
function baseOrderBy(z, B, H) {
|
|
173
|
+
B = B.length ? _arrayMap_default(B, function(u) {
|
|
174
|
+
return isArray_default(u) ? function(z) {
|
|
175
|
+
return _baseGet_default(z, u.length === 1 ? u[0] : u);
|
|
176
|
+
} : u;
|
|
177
|
+
}) : [identity_default];
|
|
178
|
+
var U = -1;
|
|
179
|
+
return B = _arrayMap_default(B, _baseUnary_default(_baseIteratee_default)), _baseSortBy_default(_baseMap_default(z, function(z, V, H) {
|
|
180
|
+
return {
|
|
181
|
+
criteria: _arrayMap_default(B, function(u) {
|
|
182
|
+
return u(z);
|
|
183
|
+
}),
|
|
184
|
+
index: ++U,
|
|
185
|
+
value: z
|
|
186
|
+
};
|
|
187
|
+
}), function(u, z) {
|
|
188
|
+
return _compareMultiple_default(u, z, H);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
var _baseOrderBy_default = baseOrderBy, _asciiSize_default = _baseProperty_default("length"), rsAstralRange = "\\ud800-\\udfff", rsComboRange = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff", rsVarRange = "\\ufe0e\\ufe0f", rsAstral = "[" + rsAstralRange + "]", rsCombo = "[" + rsComboRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsZWJ = "\\u200d", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [
|
|
192
|
+
rsNonAstral,
|
|
193
|
+
rsRegional,
|
|
194
|
+
rsSurrPair
|
|
195
|
+
].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsSymbol = "(?:" + [
|
|
196
|
+
rsNonAstral + rsCombo + "?",
|
|
197
|
+
rsCombo,
|
|
198
|
+
rsRegional,
|
|
199
|
+
rsSurrPair,
|
|
200
|
+
rsAstral
|
|
201
|
+
].join("|") + ")", reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
|
|
202
|
+
function unicodeSize(u) {
|
|
203
|
+
for (var z = reUnicode.lastIndex = 0; reUnicode.test(u);) ++z;
|
|
204
|
+
return z;
|
|
205
|
+
}
|
|
206
|
+
var _unicodeSize_default = unicodeSize;
|
|
207
|
+
function stringSize(u) {
|
|
208
|
+
return _hasUnicode_default(u) ? _unicodeSize_default(u) : _asciiSize_default(u);
|
|
209
|
+
}
|
|
210
|
+
var _stringSize_default = stringSize;
|
|
211
|
+
function basePick(u, z) {
|
|
212
|
+
return _basePickBy_default(u, z, function(z, B) {
|
|
213
|
+
return hasIn_default(u, B);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
var _basePick_default = basePick, pick_default = _flatRest_default(function(u, z) {
|
|
217
|
+
return u == null ? {} : _basePick_default(u, z);
|
|
218
|
+
}), nativeCeil = Math.ceil, nativeMax = Math.max;
|
|
219
|
+
function baseRange(u, z, B, V) {
|
|
220
|
+
for (var H = -1, U = nativeMax(nativeCeil((z - u) / (B || 1)), 0), W = Array(U); U--;) W[V ? U : ++H] = u, u += B;
|
|
221
|
+
return W;
|
|
222
|
+
}
|
|
223
|
+
var _baseRange_default = baseRange;
|
|
224
|
+
function createRange(u) {
|
|
225
|
+
return function(z, B, V) {
|
|
226
|
+
return V && typeof V != "number" && _isIterateeCall_default(z, B, V) && (B = V = void 0), z = toFinite_default(z), B === void 0 ? (B = z, z = 0) : B = toFinite_default(B), V = V === void 0 ? z < B ? 1 : -1 : toFinite_default(V), _baseRange_default(z, B, V, u);
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
var range_default = createRange(), mapTag = "[object Map]", setTag = "[object Set]";
|
|
230
|
+
function size(u) {
|
|
231
|
+
if (u == null) return 0;
|
|
232
|
+
if (isArrayLike_default(u)) return isString_default(u) ? _stringSize_default(u) : u.length;
|
|
233
|
+
var z = _getTag_default(u);
|
|
234
|
+
return z == mapTag || z == setTag ? u.size : _baseKeys_default(u).length;
|
|
235
|
+
}
|
|
236
|
+
var size_default = size, sortBy_default = _baseRest_default(function(u, z) {
|
|
237
|
+
if (u == null) return [];
|
|
238
|
+
var B = z.length;
|
|
239
|
+
return B > 1 && _isIterateeCall_default(u, z[0], z[1]) ? z = [] : B > 2 && _isIterateeCall_default(z[0], z[1], z[2]) && (z = [z[0]]), _baseOrderBy_default(u, _baseFlatten_default(z, 1), []);
|
|
240
|
+
}), idCounter = 0;
|
|
241
|
+
function uniqueId(u) {
|
|
242
|
+
var z = ++idCounter;
|
|
243
|
+
return toString_default(u) + z;
|
|
244
|
+
}
|
|
245
|
+
var uniqueId_default = uniqueId;
|
|
246
|
+
function baseZipObject(u, z, B) {
|
|
247
|
+
for (var V = -1, H = u.length, U = z.length, W = {}; ++V < H;) {
|
|
248
|
+
var G = V < U ? z[V] : void 0;
|
|
249
|
+
B(W, u[V], G);
|
|
250
|
+
}
|
|
251
|
+
return W;
|
|
252
|
+
}
|
|
253
|
+
var _baseZipObject_default = baseZipObject;
|
|
254
|
+
function zipObject(u, z) {
|
|
255
|
+
return _baseZipObject_default(u || [], z || [], _assignValue_default);
|
|
256
|
+
}
|
|
257
|
+
var zipObject_default = zipObject, List = class {
|
|
258
|
+
constructor() {
|
|
259
|
+
var u = {};
|
|
260
|
+
u._next = u._prev = u, this._sentinel = u;
|
|
261
|
+
}
|
|
262
|
+
dequeue() {
|
|
263
|
+
var u = this._sentinel, z = u._prev;
|
|
264
|
+
if (z !== u) return unlink(z), z;
|
|
265
|
+
}
|
|
266
|
+
enqueue(u) {
|
|
267
|
+
var z = this._sentinel;
|
|
268
|
+
u._prev && u._next && unlink(u), u._next = z._next, z._next._prev = u, z._next = u, u._prev = z;
|
|
269
|
+
}
|
|
270
|
+
toString() {
|
|
271
|
+
for (var u = [], z = this._sentinel, B = z._prev; B !== z;) u.push(JSON.stringify(B, filterOutLinks)), B = B._prev;
|
|
272
|
+
return "[" + u.join(", ") + "]";
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
function unlink(u) {
|
|
276
|
+
u._prev._next = u._next, u._next._prev = u._prev, delete u._next, delete u._prev;
|
|
277
|
+
}
|
|
278
|
+
function filterOutLinks(u, z) {
|
|
279
|
+
if (u !== "_next" && u !== "_prev") return z;
|
|
280
|
+
}
|
|
281
|
+
var DEFAULT_WEIGHT_FN = constant_default(1);
|
|
282
|
+
function greedyFAS(u, z) {
|
|
283
|
+
if (u.nodeCount() <= 1) return [];
|
|
284
|
+
var B = buildState(u, z || DEFAULT_WEIGHT_FN);
|
|
285
|
+
return flatten_default(map_default(doGreedyFAS(B.graph, B.buckets, B.zeroIdx), function(z) {
|
|
286
|
+
return u.outEdges(z.v, z.w);
|
|
287
|
+
}));
|
|
288
|
+
}
|
|
289
|
+
function doGreedyFAS(u, z, B) {
|
|
290
|
+
for (var V = [], H = z[z.length - 1], U = z[0], W; u.nodeCount();) {
|
|
291
|
+
for (; W = U.dequeue();) removeNode(u, z, B, W);
|
|
292
|
+
for (; W = H.dequeue();) removeNode(u, z, B, W);
|
|
293
|
+
if (u.nodeCount()) {
|
|
294
|
+
for (var G = z.length - 2; G > 0; --G) if (W = z[G].dequeue(), W) {
|
|
295
|
+
V = V.concat(removeNode(u, z, B, W, !0));
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return V;
|
|
301
|
+
}
|
|
302
|
+
function removeNode(u, z, B, V, H) {
|
|
303
|
+
var U = H ? [] : void 0;
|
|
304
|
+
return forEach_default(u.inEdges(V.v), function(V) {
|
|
305
|
+
var W = u.edge(V), G = u.node(V.v);
|
|
306
|
+
H && U.push({
|
|
307
|
+
v: V.v,
|
|
308
|
+
w: V.w
|
|
309
|
+
}), G.out -= W, assignBucket(z, B, G);
|
|
310
|
+
}), forEach_default(u.outEdges(V.v), function(V) {
|
|
311
|
+
var H = u.edge(V), U = V.w, W = u.node(U);
|
|
312
|
+
W.in -= H, assignBucket(z, B, W);
|
|
313
|
+
}), u.removeNode(V.v), U;
|
|
314
|
+
}
|
|
315
|
+
function buildState(u, z) {
|
|
316
|
+
var B = new Graph(), V = 0, H = 0;
|
|
317
|
+
forEach_default(u.nodes(), function(u) {
|
|
318
|
+
B.setNode(u, {
|
|
319
|
+
v: u,
|
|
320
|
+
in: 0,
|
|
321
|
+
out: 0
|
|
322
|
+
});
|
|
323
|
+
}), forEach_default(u.edges(), function(u) {
|
|
324
|
+
var U = B.edge(u.v, u.w) || 0, W = z(u), G = U + W;
|
|
325
|
+
B.setEdge(u.v, u.w, G), H = Math.max(H, B.node(u.v).out += W), V = Math.max(V, B.node(u.w).in += W);
|
|
326
|
+
});
|
|
327
|
+
var U = range_default(H + V + 3).map(function() {
|
|
328
|
+
return new List();
|
|
329
|
+
}), W = V + 1;
|
|
330
|
+
return forEach_default(B.nodes(), function(u) {
|
|
331
|
+
assignBucket(U, W, B.node(u));
|
|
332
|
+
}), {
|
|
333
|
+
graph: B,
|
|
334
|
+
buckets: U,
|
|
335
|
+
zeroIdx: W
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
function assignBucket(u, z, B) {
|
|
339
|
+
B.out ? B.in ? u[B.out - B.in + z].enqueue(B) : u[u.length - 1].enqueue(B) : u[0].enqueue(B);
|
|
340
|
+
}
|
|
341
|
+
function run$2(u) {
|
|
342
|
+
forEach_default(u.graph().acyclicer === "greedy" ? greedyFAS(u, z(u)) : dfsFAS(u), function(z) {
|
|
343
|
+
var B = u.edge(z);
|
|
344
|
+
u.removeEdge(z), B.forwardName = z.name, B.reversed = !0, u.setEdge(z.w, z.v, B, uniqueId_default("rev"));
|
|
345
|
+
});
|
|
346
|
+
function z(u) {
|
|
347
|
+
return function(z) {
|
|
348
|
+
return u.edge(z).weight;
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
function dfsFAS(u) {
|
|
353
|
+
var z = [], B = {}, V = {};
|
|
354
|
+
function H(U) {
|
|
355
|
+
Object.prototype.hasOwnProperty.call(V, U) || (V[U] = !0, B[U] = !0, forEach_default(u.outEdges(U), function(u) {
|
|
356
|
+
Object.prototype.hasOwnProperty.call(B, u.w) ? z.push(u) : H(u.w);
|
|
357
|
+
}), delete B[U]);
|
|
358
|
+
}
|
|
359
|
+
return forEach_default(u.nodes(), H), z;
|
|
360
|
+
}
|
|
361
|
+
function undo$2(u) {
|
|
362
|
+
forEach_default(u.edges(), function(z) {
|
|
363
|
+
var B = u.edge(z);
|
|
364
|
+
if (B.reversed) {
|
|
365
|
+
u.removeEdge(z);
|
|
366
|
+
var V = B.forwardName;
|
|
367
|
+
delete B.reversed, delete B.forwardName, u.setEdge(z.w, z.v, B, V);
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
function addDummyNode(u, z, B, V) {
|
|
372
|
+
var H;
|
|
373
|
+
do
|
|
374
|
+
H = uniqueId_default(V);
|
|
375
|
+
while (u.hasNode(H));
|
|
376
|
+
return B.dummy = z, u.setNode(H, B), H;
|
|
377
|
+
}
|
|
378
|
+
function simplify(u) {
|
|
379
|
+
var z = new Graph().setGraph(u.graph());
|
|
380
|
+
return forEach_default(u.nodes(), function(B) {
|
|
381
|
+
z.setNode(B, u.node(B));
|
|
382
|
+
}), forEach_default(u.edges(), function(B) {
|
|
383
|
+
var V = z.edge(B.v, B.w) || {
|
|
384
|
+
weight: 0,
|
|
385
|
+
minlen: 1
|
|
386
|
+
}, H = u.edge(B);
|
|
387
|
+
z.setEdge(B.v, B.w, {
|
|
388
|
+
weight: V.weight + H.weight,
|
|
389
|
+
minlen: Math.max(V.minlen, H.minlen)
|
|
390
|
+
});
|
|
391
|
+
}), z;
|
|
392
|
+
}
|
|
393
|
+
function asNonCompoundGraph(u) {
|
|
394
|
+
var z = new Graph({ multigraph: u.isMultigraph() }).setGraph(u.graph());
|
|
395
|
+
return forEach_default(u.nodes(), function(B) {
|
|
396
|
+
u.children(B).length || z.setNode(B, u.node(B));
|
|
397
|
+
}), forEach_default(u.edges(), function(B) {
|
|
398
|
+
z.setEdge(B, u.edge(B));
|
|
399
|
+
}), z;
|
|
400
|
+
}
|
|
401
|
+
function intersectRect(u, z) {
|
|
402
|
+
var B = u.x, V = u.y, H = z.x - B, U = z.y - V, W = u.width / 2, G = u.height / 2;
|
|
403
|
+
if (!H && !U) throw Error("Not possible to find intersection inside of the rectangle");
|
|
404
|
+
var K, q;
|
|
405
|
+
return Math.abs(U) * W > Math.abs(H) * G ? (U < 0 && (G = -G), K = G * H / U, q = G) : (H < 0 && (W = -W), K = W, q = W * U / H), {
|
|
406
|
+
x: B + K,
|
|
407
|
+
y: V + q
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
function buildLayerMatrix(u) {
|
|
411
|
+
var z = map_default(range_default(maxRank(u) + 1), function() {
|
|
412
|
+
return [];
|
|
413
|
+
});
|
|
414
|
+
return forEach_default(u.nodes(), function(B) {
|
|
415
|
+
var V = u.node(B), H = V.rank;
|
|
416
|
+
isUndefined_default(H) || (z[H][V.order] = B);
|
|
417
|
+
}), z;
|
|
418
|
+
}
|
|
419
|
+
function normalizeRanks(u) {
|
|
420
|
+
var z = min_default(map_default(u.nodes(), function(z) {
|
|
421
|
+
return u.node(z).rank;
|
|
422
|
+
}));
|
|
423
|
+
forEach_default(u.nodes(), function(B) {
|
|
424
|
+
var V = u.node(B);
|
|
425
|
+
has_default(V, "rank") && (V.rank -= z);
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
function removeEmptyRanks(u) {
|
|
429
|
+
var z = min_default(map_default(u.nodes(), function(z) {
|
|
430
|
+
return u.node(z).rank;
|
|
431
|
+
})), B = [];
|
|
432
|
+
forEach_default(u.nodes(), function(V) {
|
|
433
|
+
var H = u.node(V).rank - z;
|
|
434
|
+
B[H] || (B[H] = []), B[H].push(V);
|
|
435
|
+
});
|
|
436
|
+
var V = 0, H = u.graph().nodeRankFactor;
|
|
437
|
+
forEach_default(B, function(z, B) {
|
|
438
|
+
isUndefined_default(z) && B % H !== 0 ? --V : V && forEach_default(z, function(z) {
|
|
439
|
+
u.node(z).rank += V;
|
|
440
|
+
});
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
function addBorderNode$1(u, z, B, V) {
|
|
444
|
+
var H = {
|
|
445
|
+
width: 0,
|
|
446
|
+
height: 0
|
|
447
|
+
};
|
|
448
|
+
return arguments.length >= 4 && (H.rank = B, H.order = V), addDummyNode(u, "border", H, z);
|
|
449
|
+
}
|
|
450
|
+
function maxRank(u) {
|
|
451
|
+
return max_default(map_default(u.nodes(), function(z) {
|
|
452
|
+
var B = u.node(z).rank;
|
|
453
|
+
if (!isUndefined_default(B)) return B;
|
|
454
|
+
}));
|
|
455
|
+
}
|
|
456
|
+
function partition(u, z) {
|
|
457
|
+
var B = {
|
|
458
|
+
lhs: [],
|
|
459
|
+
rhs: []
|
|
460
|
+
};
|
|
461
|
+
return forEach_default(u, function(u) {
|
|
462
|
+
z(u) ? B.lhs.push(u) : B.rhs.push(u);
|
|
463
|
+
}), B;
|
|
464
|
+
}
|
|
465
|
+
function time(u, z) {
|
|
466
|
+
var B = now_default();
|
|
467
|
+
try {
|
|
468
|
+
return z();
|
|
469
|
+
} finally {
|
|
470
|
+
console.log(u + " time: " + (now_default() - B) + "ms");
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
function notime(u, z) {
|
|
474
|
+
return z();
|
|
475
|
+
}
|
|
476
|
+
function addBorderSegments(u) {
|
|
477
|
+
function z(B) {
|
|
478
|
+
var V = u.children(B), H = u.node(B);
|
|
479
|
+
if (V.length && forEach_default(V, z), Object.prototype.hasOwnProperty.call(H, "minRank")) {
|
|
480
|
+
H.borderLeft = [], H.borderRight = [];
|
|
481
|
+
for (var U = H.minRank, W = H.maxRank + 1; U < W; ++U) addBorderNode(u, "borderLeft", "_bl", B, H, U), addBorderNode(u, "borderRight", "_br", B, H, U);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
forEach_default(u.children(), z);
|
|
485
|
+
}
|
|
486
|
+
function addBorderNode(u, z, B, V, H, U) {
|
|
487
|
+
var W = {
|
|
488
|
+
width: 0,
|
|
489
|
+
height: 0,
|
|
490
|
+
rank: U,
|
|
491
|
+
borderType: z
|
|
492
|
+
}, G = H[z][U - 1], K = addDummyNode(u, "border", W, B);
|
|
493
|
+
H[z][U] = K, u.setParent(K, V), G && u.setEdge(G, K, { weight: 1 });
|
|
494
|
+
}
|
|
495
|
+
function adjust(u) {
|
|
496
|
+
var z = u.graph().rankdir.toLowerCase();
|
|
497
|
+
(z === "lr" || z === "rl") && swapWidthHeight(u);
|
|
498
|
+
}
|
|
499
|
+
function undo$1(u) {
|
|
500
|
+
var z = u.graph().rankdir.toLowerCase();
|
|
501
|
+
(z === "bt" || z === "rl") && reverseY(u), (z === "lr" || z === "rl") && (swapXY(u), swapWidthHeight(u));
|
|
502
|
+
}
|
|
503
|
+
function swapWidthHeight(u) {
|
|
504
|
+
forEach_default(u.nodes(), function(z) {
|
|
505
|
+
swapWidthHeightOne(u.node(z));
|
|
506
|
+
}), forEach_default(u.edges(), function(z) {
|
|
507
|
+
swapWidthHeightOne(u.edge(z));
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
function swapWidthHeightOne(u) {
|
|
511
|
+
var z = u.width;
|
|
512
|
+
u.width = u.height, u.height = z;
|
|
513
|
+
}
|
|
514
|
+
function reverseY(u) {
|
|
515
|
+
forEach_default(u.nodes(), function(z) {
|
|
516
|
+
reverseYOne(u.node(z));
|
|
517
|
+
}), forEach_default(u.edges(), function(z) {
|
|
518
|
+
var B = u.edge(z);
|
|
519
|
+
forEach_default(B.points, reverseYOne), Object.prototype.hasOwnProperty.call(B, "y") && reverseYOne(B);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
function reverseYOne(u) {
|
|
523
|
+
u.y = -u.y;
|
|
524
|
+
}
|
|
525
|
+
function swapXY(u) {
|
|
526
|
+
forEach_default(u.nodes(), function(z) {
|
|
527
|
+
swapXYOne(u.node(z));
|
|
528
|
+
}), forEach_default(u.edges(), function(z) {
|
|
529
|
+
var B = u.edge(z);
|
|
530
|
+
forEach_default(B.points, swapXYOne), Object.prototype.hasOwnProperty.call(B, "x") && swapXYOne(B);
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
function swapXYOne(u) {
|
|
534
|
+
var z = u.x;
|
|
535
|
+
u.x = u.y, u.y = z;
|
|
536
|
+
}
|
|
537
|
+
function run$1(u) {
|
|
538
|
+
u.graph().dummyChains = [], forEach_default(u.edges(), function(z) {
|
|
539
|
+
normalizeEdge(u, z);
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
function normalizeEdge(u, z) {
|
|
543
|
+
var B = z.v, V = u.node(B).rank, H = z.w, U = u.node(H).rank, W = z.name, G = u.edge(z), K = G.labelRank;
|
|
544
|
+
if (U !== V + 1) {
|
|
545
|
+
u.removeEdge(z);
|
|
546
|
+
var q = void 0, J, Y;
|
|
547
|
+
for (Y = 0, ++V; V < U; ++Y, ++V) G.points = [], q = {
|
|
548
|
+
width: 0,
|
|
549
|
+
height: 0,
|
|
550
|
+
edgeLabel: G,
|
|
551
|
+
edgeObj: z,
|
|
552
|
+
rank: V
|
|
553
|
+
}, J = addDummyNode(u, "edge", q, "_d"), V === K && (q.width = G.width, q.height = G.height, q.dummy = "edge-label", q.labelpos = G.labelpos), u.setEdge(B, J, { weight: G.weight }, W), Y === 0 && u.graph().dummyChains.push(J), B = J;
|
|
554
|
+
u.setEdge(B, H, { weight: G.weight }, W);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
function undo(u) {
|
|
558
|
+
forEach_default(u.graph().dummyChains, function(z) {
|
|
559
|
+
var B = u.node(z), V = B.edgeLabel, H;
|
|
560
|
+
for (u.setEdge(B.edgeObj, V); B.dummy;) H = u.successors(z)[0], u.removeNode(z), V.points.push({
|
|
561
|
+
x: B.x,
|
|
562
|
+
y: B.y
|
|
563
|
+
}), B.dummy === "edge-label" && (V.x = B.x, V.y = B.y, V.width = B.width, V.height = B.height), z = H, B = u.node(z);
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
function longestPath(u) {
|
|
567
|
+
var z = {};
|
|
568
|
+
function B(V) {
|
|
569
|
+
var H = u.node(V);
|
|
570
|
+
if (Object.prototype.hasOwnProperty.call(z, V)) return H.rank;
|
|
571
|
+
z[V] = !0;
|
|
572
|
+
var U = min_default(map_default(u.outEdges(V), function(z) {
|
|
573
|
+
return B(z.w) - u.edge(z).minlen;
|
|
574
|
+
}));
|
|
575
|
+
return (U === Infinity || U == null) && (U = 0), H.rank = U;
|
|
576
|
+
}
|
|
577
|
+
forEach_default(u.sources(), B);
|
|
578
|
+
}
|
|
579
|
+
function slack(u, z) {
|
|
580
|
+
return u.node(z.w).rank - u.node(z.v).rank - u.edge(z).minlen;
|
|
581
|
+
}
|
|
582
|
+
function feasibleTree(u) {
|
|
583
|
+
var z = new Graph({ directed: !1 }), B = u.nodes()[0], V = u.nodeCount();
|
|
584
|
+
z.setNode(B, {});
|
|
585
|
+
for (var H, U; tightTree(z, u) < V;) H = findMinSlackEdge(z, u), U = z.hasNode(H.v) ? slack(u, H) : -slack(u, H), shiftRanks(z, u, U);
|
|
586
|
+
return z;
|
|
587
|
+
}
|
|
588
|
+
function tightTree(u, z) {
|
|
589
|
+
function B(V) {
|
|
590
|
+
forEach_default(z.nodeEdges(V), function(H) {
|
|
591
|
+
var U = H.v, W = V === U ? H.w : U;
|
|
592
|
+
!u.hasNode(W) && !slack(z, H) && (u.setNode(W, {}), u.setEdge(V, W, {}), B(W));
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
return forEach_default(u.nodes(), B), u.nodeCount();
|
|
596
|
+
}
|
|
597
|
+
function findMinSlackEdge(u, z) {
|
|
598
|
+
return minBy_default(z.edges(), function(B) {
|
|
599
|
+
if (u.hasNode(B.v) !== u.hasNode(B.w)) return slack(z, B);
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
function shiftRanks(u, z, B) {
|
|
603
|
+
forEach_default(u.nodes(), function(u) {
|
|
604
|
+
z.node(u).rank += B;
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
constant_default(1), constant_default(1), topsort.CycleException = CycleException;
|
|
608
|
+
function topsort(u) {
|
|
609
|
+
var z = {}, B = {}, V = [];
|
|
610
|
+
function H(U) {
|
|
611
|
+
if (Object.prototype.hasOwnProperty.call(B, U)) throw new CycleException();
|
|
612
|
+
Object.prototype.hasOwnProperty.call(z, U) || (B[U] = !0, z[U] = !0, forEach_default(u.predecessors(U), H), delete B[U], V.push(U));
|
|
613
|
+
}
|
|
614
|
+
if (forEach_default(u.sinks(), H), size_default(z) !== u.nodeCount()) throw new CycleException();
|
|
615
|
+
return V;
|
|
616
|
+
}
|
|
617
|
+
function CycleException() {}
|
|
618
|
+
CycleException.prototype = /* @__PURE__ */ Error();
|
|
619
|
+
function dfs$1(u, z, B) {
|
|
620
|
+
isArray_default(z) || (z = [z]);
|
|
621
|
+
var V = (u.isDirected() ? u.successors : u.neighbors).bind(u), H = [], U = {};
|
|
622
|
+
return forEach_default(z, function(z) {
|
|
623
|
+
if (!u.hasNode(z)) throw Error("Graph does not have node: " + z);
|
|
624
|
+
doDfs(u, z, B === "post", U, V, H);
|
|
625
|
+
}), H;
|
|
626
|
+
}
|
|
627
|
+
function doDfs(u, z, B, V, H, U) {
|
|
628
|
+
Object.prototype.hasOwnProperty.call(V, z) || (V[z] = !0, B || U.push(z), forEach_default(H(z), function(z) {
|
|
629
|
+
doDfs(u, z, B, V, H, U);
|
|
630
|
+
}), B && U.push(z));
|
|
631
|
+
}
|
|
632
|
+
function postorder$1(u, z) {
|
|
633
|
+
return dfs$1(u, z, "post");
|
|
634
|
+
}
|
|
635
|
+
function preorder(u, z) {
|
|
636
|
+
return dfs$1(u, z, "pre");
|
|
637
|
+
}
|
|
638
|
+
networkSimplex.initLowLimValues = initLowLimValues, networkSimplex.initCutValues = initCutValues, networkSimplex.calcCutValue = calcCutValue, networkSimplex.leaveEdge = leaveEdge, networkSimplex.enterEdge = enterEdge, networkSimplex.exchangeEdges = exchangeEdges;
|
|
639
|
+
function networkSimplex(u) {
|
|
640
|
+
u = simplify(u), longestPath(u);
|
|
641
|
+
var z = feasibleTree(u);
|
|
642
|
+
initLowLimValues(z), initCutValues(z, u);
|
|
643
|
+
for (var B, V; B = leaveEdge(z);) V = enterEdge(z, u, B), exchangeEdges(z, u, B, V);
|
|
644
|
+
}
|
|
645
|
+
function initCutValues(u, z) {
|
|
646
|
+
var B = postorder$1(u, u.nodes());
|
|
647
|
+
B = B.slice(0, B.length - 1), forEach_default(B, function(B) {
|
|
648
|
+
assignCutValue(u, z, B);
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
function assignCutValue(u, z, B) {
|
|
652
|
+
var V = u.node(B).parent;
|
|
653
|
+
u.edge(B, V).cutvalue = calcCutValue(u, z, B);
|
|
654
|
+
}
|
|
655
|
+
function calcCutValue(u, z, B) {
|
|
656
|
+
var V = u.node(B).parent, H = !0, U = z.edge(B, V), W = 0;
|
|
657
|
+
return U ||= (H = !1, z.edge(V, B)), W = U.weight, forEach_default(z.nodeEdges(B), function(U) {
|
|
658
|
+
var G = U.v === B, K = G ? U.w : U.v;
|
|
659
|
+
if (K !== V) {
|
|
660
|
+
var q = G === H, J = z.edge(U).weight;
|
|
661
|
+
if (W += q ? J : -J, isTreeEdge(u, B, K)) {
|
|
662
|
+
var Y = u.edge(B, K).cutvalue;
|
|
663
|
+
W += q ? -Y : Y;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
}), W;
|
|
667
|
+
}
|
|
668
|
+
function initLowLimValues(u, z) {
|
|
669
|
+
arguments.length < 2 && (z = u.nodes()[0]), dfsAssignLowLim(u, {}, 1, z);
|
|
670
|
+
}
|
|
671
|
+
function dfsAssignLowLim(u, z, B, V, H) {
|
|
672
|
+
var U = B, W = u.node(V);
|
|
673
|
+
return z[V] = !0, forEach_default(u.neighbors(V), function(H) {
|
|
674
|
+
Object.prototype.hasOwnProperty.call(z, H) || (B = dfsAssignLowLim(u, z, B, H, V));
|
|
675
|
+
}), W.low = U, W.lim = B++, H ? W.parent = H : delete W.parent, B;
|
|
676
|
+
}
|
|
677
|
+
function leaveEdge(u) {
|
|
678
|
+
return find_default(u.edges(), function(z) {
|
|
679
|
+
return u.edge(z).cutvalue < 0;
|
|
680
|
+
});
|
|
681
|
+
}
|
|
682
|
+
function enterEdge(u, z, V) {
|
|
683
|
+
var H = V.v, U = V.w;
|
|
684
|
+
z.hasEdge(H, U) || (H = V.w, U = V.v);
|
|
685
|
+
var W = u.node(H), G = u.node(U), K = W, q = !1;
|
|
686
|
+
return W.lim > G.lim && (K = G, q = !0), minBy_default(filter_default(z.edges(), function(z) {
|
|
687
|
+
return q === isDescendant(u, u.node(z.v), K) && q !== isDescendant(u, u.node(z.w), K);
|
|
688
|
+
}), function(u) {
|
|
689
|
+
return slack(z, u);
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
function exchangeEdges(u, z, B, V) {
|
|
693
|
+
var H = B.v, U = B.w;
|
|
694
|
+
u.removeEdge(H, U), u.setEdge(V.v, V.w, {}), initLowLimValues(u), initCutValues(u, z), updateRanks(u, z);
|
|
695
|
+
}
|
|
696
|
+
function updateRanks(u, z) {
|
|
697
|
+
var B = preorder(u, find_default(u.nodes(), function(u) {
|
|
698
|
+
return !z.node(u).parent;
|
|
699
|
+
}));
|
|
700
|
+
B = B.slice(1), forEach_default(B, function(B) {
|
|
701
|
+
var V = u.node(B).parent, H = z.edge(B, V), U = !1;
|
|
702
|
+
H || (H = z.edge(V, B), U = !0), z.node(B).rank = z.node(V).rank + (U ? H.minlen : -H.minlen);
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
function isTreeEdge(u, z, B) {
|
|
706
|
+
return u.hasEdge(z, B);
|
|
707
|
+
}
|
|
708
|
+
function isDescendant(u, z, B) {
|
|
709
|
+
return B.low <= z.lim && z.lim <= B.lim;
|
|
710
|
+
}
|
|
711
|
+
function rank(u) {
|
|
712
|
+
switch (u.graph().ranker) {
|
|
713
|
+
case "network-simplex":
|
|
714
|
+
networkSimplexRanker(u);
|
|
715
|
+
break;
|
|
716
|
+
case "tight-tree":
|
|
717
|
+
tightTreeRanker(u);
|
|
718
|
+
break;
|
|
719
|
+
case "longest-path":
|
|
720
|
+
longestPathRanker(u);
|
|
721
|
+
break;
|
|
722
|
+
default: networkSimplexRanker(u);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
var longestPathRanker = longestPath;
|
|
726
|
+
function tightTreeRanker(u) {
|
|
727
|
+
longestPath(u), feasibleTree(u);
|
|
728
|
+
}
|
|
729
|
+
function networkSimplexRanker(u) {
|
|
730
|
+
networkSimplex(u);
|
|
731
|
+
}
|
|
732
|
+
function run(u) {
|
|
733
|
+
var z = addDummyNode(u, "root", {}, "_root"), B = treeDepths(u), V = max_default(values_default(B)) - 1, H = 2 * V + 1;
|
|
734
|
+
u.graph().nestingRoot = z, forEach_default(u.edges(), function(z) {
|
|
735
|
+
u.edge(z).minlen *= H;
|
|
736
|
+
});
|
|
737
|
+
var U = sumWeights(u) + 1;
|
|
738
|
+
forEach_default(u.children(), function(W) {
|
|
739
|
+
dfs(u, z, H, U, V, B, W);
|
|
740
|
+
}), u.graph().nodeRankFactor = H;
|
|
741
|
+
}
|
|
742
|
+
function dfs(u, z, B, V, H, U, W) {
|
|
743
|
+
var G = u.children(W);
|
|
744
|
+
if (!G.length) {
|
|
745
|
+
W !== z && u.setEdge(z, W, {
|
|
746
|
+
weight: 0,
|
|
747
|
+
minlen: B
|
|
748
|
+
});
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
751
|
+
var q = addBorderNode$1(u, "_bt"), J = addBorderNode$1(u, "_bb"), Y = u.node(W);
|
|
752
|
+
u.setParent(q, W), Y.borderTop = q, u.setParent(J, W), Y.borderBottom = J, forEach_default(G, function(G) {
|
|
753
|
+
dfs(u, z, B, V, H, U, G);
|
|
754
|
+
var K = u.node(G), Y = K.borderTop ? K.borderTop : G, X = K.borderBottom ? K.borderBottom : G, Z = K.borderTop ? V : 2 * V, Q = Y === X ? H - U[W] + 1 : 1;
|
|
755
|
+
u.setEdge(q, Y, {
|
|
756
|
+
weight: Z,
|
|
757
|
+
minlen: Q,
|
|
758
|
+
nestingEdge: !0
|
|
759
|
+
}), u.setEdge(X, J, {
|
|
760
|
+
weight: Z,
|
|
761
|
+
minlen: Q,
|
|
762
|
+
nestingEdge: !0
|
|
763
|
+
});
|
|
764
|
+
}), u.parent(W) || u.setEdge(z, q, {
|
|
765
|
+
weight: 0,
|
|
766
|
+
minlen: H + U[W]
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
function treeDepths(u) {
|
|
770
|
+
var z = {};
|
|
771
|
+
function B(V, H) {
|
|
772
|
+
var U = u.children(V);
|
|
773
|
+
U && U.length && forEach_default(U, function(u) {
|
|
774
|
+
B(u, H + 1);
|
|
775
|
+
}), z[V] = H;
|
|
776
|
+
}
|
|
777
|
+
return forEach_default(u.children(), function(u) {
|
|
778
|
+
B(u, 1);
|
|
779
|
+
}), z;
|
|
780
|
+
}
|
|
781
|
+
function sumWeights(u) {
|
|
782
|
+
return reduce_default(u.edges(), function(z, B) {
|
|
783
|
+
return z + u.edge(B).weight;
|
|
784
|
+
}, 0);
|
|
785
|
+
}
|
|
786
|
+
function cleanup(u) {
|
|
787
|
+
var z = u.graph();
|
|
788
|
+
u.removeNode(z.nestingRoot), delete z.nestingRoot, forEach_default(u.edges(), function(z) {
|
|
789
|
+
u.edge(z).nestingEdge && u.removeEdge(z);
|
|
790
|
+
});
|
|
791
|
+
}
|
|
792
|
+
function addSubgraphConstraints(u, z, B) {
|
|
793
|
+
var V = {}, H;
|
|
794
|
+
forEach_default(B, function(B) {
|
|
795
|
+
for (var U = u.parent(B), W, G; U;) {
|
|
796
|
+
if (W = u.parent(U), W ? (G = V[W], V[W] = U) : (G = H, H = U), G && G !== U) {
|
|
797
|
+
z.setEdge(G, U);
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
U = W;
|
|
801
|
+
}
|
|
802
|
+
});
|
|
803
|
+
}
|
|
804
|
+
function buildLayerGraph(u, z, B) {
|
|
805
|
+
var V = createRootNode(u), H = new Graph({ compound: !0 }).setGraph({ root: V }).setDefaultNodeLabel(function(z) {
|
|
806
|
+
return u.node(z);
|
|
807
|
+
});
|
|
808
|
+
return forEach_default(u.nodes(), function(U) {
|
|
809
|
+
var W = u.node(U), G = u.parent(U);
|
|
810
|
+
(W.rank === z || W.minRank <= z && z <= W.maxRank) && (H.setNode(U), H.setParent(U, G || V), forEach_default(u[B](U), function(z) {
|
|
811
|
+
var B = z.v === U ? z.w : z.v, V = H.edge(B, U), W = isUndefined_default(V) ? 0 : V.weight;
|
|
812
|
+
H.setEdge(B, U, { weight: u.edge(z).weight + W });
|
|
813
|
+
}), Object.prototype.hasOwnProperty.call(W, "minRank") && H.setNode(U, {
|
|
814
|
+
borderLeft: W.borderLeft[z],
|
|
815
|
+
borderRight: W.borderRight[z]
|
|
816
|
+
}));
|
|
817
|
+
}), H;
|
|
818
|
+
}
|
|
819
|
+
function createRootNode(u) {
|
|
820
|
+
for (var z; u.hasNode(z = uniqueId_default("_root")););
|
|
821
|
+
return z;
|
|
822
|
+
}
|
|
823
|
+
function crossCount(u, z) {
|
|
824
|
+
for (var B = 0, V = 1; V < z.length; ++V) B += twoLayerCrossCount(u, z[V - 1], z[V]);
|
|
825
|
+
return B;
|
|
826
|
+
}
|
|
827
|
+
function twoLayerCrossCount(u, z, B) {
|
|
828
|
+
for (var V = zipObject_default(B, map_default(B, function(u, z) {
|
|
829
|
+
return z;
|
|
830
|
+
})), H = flatten_default(map_default(z, function(z) {
|
|
831
|
+
return sortBy_default(map_default(u.outEdges(z), function(z) {
|
|
832
|
+
return {
|
|
833
|
+
pos: V[z.w],
|
|
834
|
+
weight: u.edge(z).weight
|
|
835
|
+
};
|
|
836
|
+
}), "pos");
|
|
837
|
+
})), U = 1; U < B.length;) U <<= 1;
|
|
838
|
+
var W = 2 * U - 1;
|
|
839
|
+
--U;
|
|
840
|
+
var G = map_default(Array(W), function() {
|
|
841
|
+
return 0;
|
|
842
|
+
}), q = 0;
|
|
843
|
+
return forEach_default(H.forEach(function(u) {
|
|
844
|
+
var z = u.pos + U;
|
|
845
|
+
G[z] += u.weight;
|
|
846
|
+
for (var B = 0; z > 0;) z % 2 && (B += G[z + 1]), z = z - 1 >> 1, G[z] += u.weight;
|
|
847
|
+
q += u.weight * B;
|
|
848
|
+
})), q;
|
|
849
|
+
}
|
|
850
|
+
function initOrder(u) {
|
|
851
|
+
var z = {}, V = filter_default(u.nodes(), function(z) {
|
|
852
|
+
return !u.children(z).length;
|
|
853
|
+
}), H = map_default(range_default(max_default(map_default(V, function(z) {
|
|
854
|
+
return u.node(z).rank;
|
|
855
|
+
})) + 1), function() {
|
|
856
|
+
return [];
|
|
857
|
+
});
|
|
858
|
+
function U(B) {
|
|
859
|
+
has_default(z, B) || (z[B] = !0, H[u.node(B).rank].push(B), forEach_default(u.successors(B), U));
|
|
860
|
+
}
|
|
861
|
+
return forEach_default(sortBy_default(V, function(z) {
|
|
862
|
+
return u.node(z).rank;
|
|
863
|
+
}), U), H;
|
|
864
|
+
}
|
|
865
|
+
function barycenter(u, z) {
|
|
866
|
+
return map_default(z, function(z) {
|
|
867
|
+
var B = u.inEdges(z);
|
|
868
|
+
if (B.length) {
|
|
869
|
+
var V = reduce_default(B, function(z, B) {
|
|
870
|
+
var V = u.edge(B), H = u.node(B.v);
|
|
871
|
+
return {
|
|
872
|
+
sum: z.sum + V.weight * H.order,
|
|
873
|
+
weight: z.weight + V.weight
|
|
874
|
+
};
|
|
875
|
+
}, {
|
|
876
|
+
sum: 0,
|
|
877
|
+
weight: 0
|
|
878
|
+
});
|
|
879
|
+
return {
|
|
880
|
+
v: z,
|
|
881
|
+
barycenter: V.sum / V.weight,
|
|
882
|
+
weight: V.weight
|
|
883
|
+
};
|
|
884
|
+
} else return { v: z };
|
|
885
|
+
});
|
|
886
|
+
}
|
|
887
|
+
function resolveConflicts(u, z) {
|
|
888
|
+
var V = {};
|
|
889
|
+
return forEach_default(u, function(u, z) {
|
|
890
|
+
var B = V[u.v] = {
|
|
891
|
+
indegree: 0,
|
|
892
|
+
in: [],
|
|
893
|
+
out: [],
|
|
894
|
+
vs: [u.v],
|
|
895
|
+
i: z
|
|
896
|
+
};
|
|
897
|
+
isUndefined_default(u.barycenter) || (B.barycenter = u.barycenter, B.weight = u.weight);
|
|
898
|
+
}), forEach_default(z.edges(), function(u) {
|
|
899
|
+
var z = V[u.v], B = V[u.w];
|
|
900
|
+
!isUndefined_default(z) && !isUndefined_default(B) && (B.indegree++, z.out.push(V[u.w]));
|
|
901
|
+
}), doResolveConflicts(filter_default(V, function(u) {
|
|
902
|
+
return !u.indegree;
|
|
903
|
+
}));
|
|
904
|
+
}
|
|
905
|
+
function doResolveConflicts(u) {
|
|
906
|
+
var z = [];
|
|
907
|
+
function V(u) {
|
|
908
|
+
return function(z) {
|
|
909
|
+
z.merged || (isUndefined_default(z.barycenter) || isUndefined_default(u.barycenter) || z.barycenter >= u.barycenter) && mergeEntries(u, z);
|
|
910
|
+
};
|
|
911
|
+
}
|
|
912
|
+
function H(z) {
|
|
913
|
+
return function(B) {
|
|
914
|
+
B.in.push(z), --B.indegree === 0 && u.push(B);
|
|
915
|
+
};
|
|
916
|
+
}
|
|
917
|
+
for (; u.length;) {
|
|
918
|
+
var U = u.pop();
|
|
919
|
+
z.push(U), forEach_default(U.in.reverse(), V(U)), forEach_default(U.out, H(U));
|
|
920
|
+
}
|
|
921
|
+
return map_default(filter_default(z, function(u) {
|
|
922
|
+
return !u.merged;
|
|
923
|
+
}), function(u) {
|
|
924
|
+
return pick_default(u, [
|
|
925
|
+
"vs",
|
|
926
|
+
"i",
|
|
927
|
+
"barycenter",
|
|
928
|
+
"weight"
|
|
929
|
+
]);
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
function mergeEntries(u, z) {
|
|
933
|
+
var B = 0, V = 0;
|
|
934
|
+
u.weight && (B += u.barycenter * u.weight, V += u.weight), z.weight && (B += z.barycenter * z.weight, V += z.weight), u.vs = z.vs.concat(u.vs), u.barycenter = B / V, u.weight = V, u.i = Math.min(z.i, u.i), z.merged = !0;
|
|
935
|
+
}
|
|
936
|
+
function sort(u, z) {
|
|
937
|
+
var B = partition(u, function(u) {
|
|
938
|
+
return Object.prototype.hasOwnProperty.call(u, "barycenter");
|
|
939
|
+
}), V = B.lhs, H = sortBy_default(B.rhs, function(u) {
|
|
940
|
+
return -u.i;
|
|
941
|
+
}), U = [], W = 0, G = 0, q = 0;
|
|
942
|
+
V.sort(compareWithBias(!!z)), q = consumeUnsortable(U, H, q), forEach_default(V, function(u) {
|
|
943
|
+
q += u.vs.length, U.push(u.vs), W += u.barycenter * u.weight, G += u.weight, q = consumeUnsortable(U, H, q);
|
|
944
|
+
});
|
|
945
|
+
var J = { vs: flatten_default(U) };
|
|
946
|
+
return G && (J.barycenter = W / G, J.weight = G), J;
|
|
947
|
+
}
|
|
948
|
+
function consumeUnsortable(u, z, B) {
|
|
949
|
+
for (var V; z.length && (V = last_default(z)).i <= B;) z.pop(), u.push(V.vs), B++;
|
|
950
|
+
return B;
|
|
951
|
+
}
|
|
952
|
+
function compareWithBias(u) {
|
|
953
|
+
return function(z, B) {
|
|
954
|
+
return z.barycenter < B.barycenter ? -1 : z.barycenter > B.barycenter ? 1 : u ? B.i - z.i : z.i - B.i;
|
|
955
|
+
};
|
|
956
|
+
}
|
|
957
|
+
function sortSubgraph(u, z, V, H) {
|
|
958
|
+
var U = u.children(z), W = u.node(z), G = W ? W.borderLeft : void 0, q = W ? W.borderRight : void 0, J = {};
|
|
959
|
+
G && (U = filter_default(U, function(u) {
|
|
960
|
+
return u !== G && u !== q;
|
|
961
|
+
}));
|
|
962
|
+
var Y = barycenter(u, U);
|
|
963
|
+
forEach_default(Y, function(z) {
|
|
964
|
+
if (u.children(z.v).length) {
|
|
965
|
+
var B = sortSubgraph(u, z.v, V, H);
|
|
966
|
+
J[z.v] = B, Object.prototype.hasOwnProperty.call(B, "barycenter") && mergeBarycenters(z, B);
|
|
967
|
+
}
|
|
968
|
+
});
|
|
969
|
+
var X = resolveConflicts(Y, V);
|
|
970
|
+
expandSubgraphs(X, J);
|
|
971
|
+
var Z = sort(X, H);
|
|
972
|
+
if (G && (Z.vs = flatten_default([
|
|
973
|
+
G,
|
|
974
|
+
Z.vs,
|
|
975
|
+
q
|
|
976
|
+
]), u.predecessors(G).length)) {
|
|
977
|
+
var Q = u.node(u.predecessors(G)[0]), $ = u.node(u.predecessors(q)[0]);
|
|
978
|
+
Object.prototype.hasOwnProperty.call(Z, "barycenter") || (Z.barycenter = 0, Z.weight = 0), Z.barycenter = (Z.barycenter * Z.weight + Q.order + $.order) / (Z.weight + 2), Z.weight += 2;
|
|
979
|
+
}
|
|
980
|
+
return Z;
|
|
981
|
+
}
|
|
982
|
+
function expandSubgraphs(u, z) {
|
|
983
|
+
forEach_default(u, function(u) {
|
|
984
|
+
u.vs = flatten_default(u.vs.map(function(u) {
|
|
985
|
+
return z[u] ? z[u].vs : u;
|
|
986
|
+
}));
|
|
987
|
+
});
|
|
988
|
+
}
|
|
989
|
+
function mergeBarycenters(u, z) {
|
|
990
|
+
isUndefined_default(u.barycenter) ? (u.barycenter = z.barycenter, u.weight = z.weight) : (u.barycenter = (u.barycenter * u.weight + z.barycenter * z.weight) / (u.weight + z.weight), u.weight += z.weight);
|
|
991
|
+
}
|
|
992
|
+
function order(u) {
|
|
993
|
+
var z = maxRank(u), B = buildLayerGraphs(u, range_default(1, z + 1), "inEdges"), V = buildLayerGraphs(u, range_default(z - 1, -1, -1), "outEdges"), H = initOrder(u);
|
|
994
|
+
assignOrder(u, H);
|
|
995
|
+
for (var U = Infinity, W, G = 0, K = 0; K < 4; ++G, ++K) {
|
|
996
|
+
sweepLayerGraphs(G % 2 ? B : V, G % 4 >= 2), H = buildLayerMatrix(u);
|
|
997
|
+
var q = crossCount(u, H);
|
|
998
|
+
q < U && (K = 0, W = cloneDeep_default(H), U = q);
|
|
999
|
+
}
|
|
1000
|
+
assignOrder(u, W);
|
|
1001
|
+
}
|
|
1002
|
+
function buildLayerGraphs(u, z, B) {
|
|
1003
|
+
return map_default(z, function(z) {
|
|
1004
|
+
return buildLayerGraph(u, z, B);
|
|
1005
|
+
});
|
|
1006
|
+
}
|
|
1007
|
+
function sweepLayerGraphs(u, z) {
|
|
1008
|
+
var B = new Graph();
|
|
1009
|
+
forEach_default(u, function(u) {
|
|
1010
|
+
var V = u.graph().root, H = sortSubgraph(u, V, B, z);
|
|
1011
|
+
forEach_default(H.vs, function(z, B) {
|
|
1012
|
+
u.node(z).order = B;
|
|
1013
|
+
}), addSubgraphConstraints(u, B, H.vs);
|
|
1014
|
+
});
|
|
1015
|
+
}
|
|
1016
|
+
function assignOrder(u, z) {
|
|
1017
|
+
forEach_default(z, function(z) {
|
|
1018
|
+
forEach_default(z, function(z, B) {
|
|
1019
|
+
u.node(z).order = B;
|
|
1020
|
+
});
|
|
1021
|
+
});
|
|
1022
|
+
}
|
|
1023
|
+
function parentDummyChains(u) {
|
|
1024
|
+
var z = postorder(u);
|
|
1025
|
+
forEach_default(u.graph().dummyChains, function(B) {
|
|
1026
|
+
for (var V = u.node(B), H = V.edgeObj, U = findPath(u, z, H.v, H.w), W = U.path, G = U.lca, K = 0, q = W[K], J = !0; B !== H.w;) {
|
|
1027
|
+
if (V = u.node(B), J) {
|
|
1028
|
+
for (; (q = W[K]) !== G && u.node(q).maxRank < V.rank;) K++;
|
|
1029
|
+
q === G && (J = !1);
|
|
1030
|
+
}
|
|
1031
|
+
if (!J) {
|
|
1032
|
+
for (; K < W.length - 1 && u.node(q = W[K + 1]).minRank <= V.rank;) K++;
|
|
1033
|
+
q = W[K];
|
|
1034
|
+
}
|
|
1035
|
+
u.setParent(B, q), B = u.successors(B)[0];
|
|
1036
|
+
}
|
|
1037
|
+
});
|
|
1038
|
+
}
|
|
1039
|
+
function findPath(u, z, B, V) {
|
|
1040
|
+
var H = [], U = [], W = Math.min(z[B].low, z[V].low), G = Math.max(z[B].lim, z[V].lim), K = B, q;
|
|
1041
|
+
do
|
|
1042
|
+
K = u.parent(K), H.push(K);
|
|
1043
|
+
while (K && (z[K].low > W || G > z[K].lim));
|
|
1044
|
+
for (q = K, K = V; (K = u.parent(K)) !== q;) U.push(K);
|
|
1045
|
+
return {
|
|
1046
|
+
path: H.concat(U.reverse()),
|
|
1047
|
+
lca: q
|
|
1048
|
+
};
|
|
1049
|
+
}
|
|
1050
|
+
function postorder(u) {
|
|
1051
|
+
var z = {}, B = 0;
|
|
1052
|
+
function V(H) {
|
|
1053
|
+
var U = B;
|
|
1054
|
+
forEach_default(u.children(H), V), z[H] = {
|
|
1055
|
+
low: U,
|
|
1056
|
+
lim: B++
|
|
1057
|
+
};
|
|
1058
|
+
}
|
|
1059
|
+
return forEach_default(u.children(), V), z;
|
|
1060
|
+
}
|
|
1061
|
+
function findType1Conflicts(u, z) {
|
|
1062
|
+
var B = {};
|
|
1063
|
+
function V(z, V) {
|
|
1064
|
+
var H = 0, U = 0, W = z.length, G = last_default(V);
|
|
1065
|
+
return forEach_default(V, function(z, q) {
|
|
1066
|
+
var J = findOtherInnerSegmentNode(u, z), Y = J ? u.node(J).order : W;
|
|
1067
|
+
(J || z === G) && (forEach_default(V.slice(U, q + 1), function(z) {
|
|
1068
|
+
forEach_default(u.predecessors(z), function(V) {
|
|
1069
|
+
var U = u.node(V), W = U.order;
|
|
1070
|
+
(W < H || Y < W) && !(U.dummy && u.node(z).dummy) && addConflict(B, V, z);
|
|
1071
|
+
});
|
|
1072
|
+
}), U = q + 1, H = Y);
|
|
1073
|
+
}), V;
|
|
1074
|
+
}
|
|
1075
|
+
return reduce_default(z, V), B;
|
|
1076
|
+
}
|
|
1077
|
+
function findType2Conflicts(u, z) {
|
|
1078
|
+
var B = {};
|
|
1079
|
+
function V(z, V, H, U, W) {
|
|
1080
|
+
var G;
|
|
1081
|
+
forEach_default(range_default(V, H), function(V) {
|
|
1082
|
+
G = z[V], u.node(G).dummy && forEach_default(u.predecessors(G), function(z) {
|
|
1083
|
+
var V = u.node(z);
|
|
1084
|
+
V.dummy && (V.order < U || V.order > W) && addConflict(B, z, G);
|
|
1085
|
+
});
|
|
1086
|
+
});
|
|
1087
|
+
}
|
|
1088
|
+
function H(z, B) {
|
|
1089
|
+
var H = -1, U, W = 0;
|
|
1090
|
+
return forEach_default(B, function(G, K) {
|
|
1091
|
+
if (u.node(G).dummy === "border") {
|
|
1092
|
+
var q = u.predecessors(G);
|
|
1093
|
+
q.length && (U = u.node(q[0]).order, V(B, W, K, H, U), W = K, H = U);
|
|
1094
|
+
}
|
|
1095
|
+
V(B, W, B.length, U, z.length);
|
|
1096
|
+
}), B;
|
|
1097
|
+
}
|
|
1098
|
+
return reduce_default(z, H), B;
|
|
1099
|
+
}
|
|
1100
|
+
function findOtherInnerSegmentNode(u, z) {
|
|
1101
|
+
if (u.node(z).dummy) return find_default(u.predecessors(z), function(z) {
|
|
1102
|
+
return u.node(z).dummy;
|
|
1103
|
+
});
|
|
1104
|
+
}
|
|
1105
|
+
function addConflict(u, z, B) {
|
|
1106
|
+
if (z > B) {
|
|
1107
|
+
var V = z;
|
|
1108
|
+
z = B, B = V;
|
|
1109
|
+
}
|
|
1110
|
+
Object.prototype.hasOwnProperty.call(u, z) || Object.defineProperty(u, z, {
|
|
1111
|
+
enumerable: !0,
|
|
1112
|
+
configurable: !0,
|
|
1113
|
+
value: {},
|
|
1114
|
+
writable: !0
|
|
1115
|
+
});
|
|
1116
|
+
var H = u[z];
|
|
1117
|
+
Object.defineProperty(H, B, {
|
|
1118
|
+
enumerable: !0,
|
|
1119
|
+
configurable: !0,
|
|
1120
|
+
value: !0,
|
|
1121
|
+
writable: !0
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1124
|
+
function hasConflict(u, z, B) {
|
|
1125
|
+
if (z > B) {
|
|
1126
|
+
var V = z;
|
|
1127
|
+
z = B, B = V;
|
|
1128
|
+
}
|
|
1129
|
+
return !!u[z] && Object.prototype.hasOwnProperty.call(u[z], B);
|
|
1130
|
+
}
|
|
1131
|
+
function verticalAlignment(u, z, B, V) {
|
|
1132
|
+
var H = {}, U = {}, W = {};
|
|
1133
|
+
return forEach_default(z, function(u) {
|
|
1134
|
+
forEach_default(u, function(u, z) {
|
|
1135
|
+
H[u] = u, U[u] = u, W[u] = z;
|
|
1136
|
+
});
|
|
1137
|
+
}), forEach_default(z, function(u) {
|
|
1138
|
+
var z = -1;
|
|
1139
|
+
forEach_default(u, function(u) {
|
|
1140
|
+
var G = V(u);
|
|
1141
|
+
if (G.length) {
|
|
1142
|
+
G = sortBy_default(G, function(u) {
|
|
1143
|
+
return W[u];
|
|
1144
|
+
});
|
|
1145
|
+
for (var K = (G.length - 1) / 2, q = Math.floor(K), J = Math.ceil(K); q <= J; ++q) {
|
|
1146
|
+
var Y = G[q];
|
|
1147
|
+
U[u] === u && z < W[Y] && !hasConflict(B, u, Y) && (U[Y] = u, U[u] = H[u] = H[Y], z = W[Y]);
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
});
|
|
1151
|
+
}), {
|
|
1152
|
+
root: H,
|
|
1153
|
+
align: U
|
|
1154
|
+
};
|
|
1155
|
+
}
|
|
1156
|
+
function horizontalCompaction(u, z, B, V, H) {
|
|
1157
|
+
var U = {}, W = buildBlockGraph(u, z, B, H), G = H ? "borderLeft" : "borderRight";
|
|
1158
|
+
function q(u, z) {
|
|
1159
|
+
for (var B = W.nodes(), V = B.pop(), H = {}; V;) H[V] ? u(V) : (H[V] = !0, B.push(V), B = B.concat(z(V))), V = B.pop();
|
|
1160
|
+
}
|
|
1161
|
+
function J(u) {
|
|
1162
|
+
U[u] = W.inEdges(u).reduce(function(u, z) {
|
|
1163
|
+
return Math.max(u, U[z.v] + W.edge(z));
|
|
1164
|
+
}, 0);
|
|
1165
|
+
}
|
|
1166
|
+
function Y(z) {
|
|
1167
|
+
var B = W.outEdges(z).reduce(function(u, z) {
|
|
1168
|
+
return Math.min(u, U[z.w] - W.edge(z));
|
|
1169
|
+
}, Infinity), V = u.node(z);
|
|
1170
|
+
B !== Infinity && V.borderType !== G && (U[z] = Math.max(U[z], B));
|
|
1171
|
+
}
|
|
1172
|
+
return q(J, W.predecessors.bind(W)), q(Y, W.successors.bind(W)), forEach_default(V, function(u) {
|
|
1173
|
+
U[u] = U[B[u]];
|
|
1174
|
+
}), U;
|
|
1175
|
+
}
|
|
1176
|
+
function buildBlockGraph(u, z, B, V) {
|
|
1177
|
+
var H = new Graph(), U = u.graph(), W = sep(U.nodesep, U.edgesep, V);
|
|
1178
|
+
return forEach_default(z, function(z) {
|
|
1179
|
+
var V;
|
|
1180
|
+
forEach_default(z, function(z) {
|
|
1181
|
+
var U = B[z];
|
|
1182
|
+
if (H.setNode(U), V) {
|
|
1183
|
+
var G = B[V], K = H.edge(G, U);
|
|
1184
|
+
H.setEdge(G, U, Math.max(W(u, z, V), K || 0));
|
|
1185
|
+
}
|
|
1186
|
+
V = z;
|
|
1187
|
+
});
|
|
1188
|
+
}), H;
|
|
1189
|
+
}
|
|
1190
|
+
function findSmallestWidthAlignment(u, z) {
|
|
1191
|
+
return minBy_default(values_default(z), function(z) {
|
|
1192
|
+
var B = -Infinity, V = Infinity;
|
|
1193
|
+
return forIn_default(z, function(z, H) {
|
|
1194
|
+
var U = width(u, H) / 2;
|
|
1195
|
+
B = Math.max(z + U, B), V = Math.min(z - U, V);
|
|
1196
|
+
}), B - V;
|
|
1197
|
+
});
|
|
1198
|
+
}
|
|
1199
|
+
function alignCoordinates(u, z) {
|
|
1200
|
+
var B = values_default(z), V = min_default(B), H = max_default(B);
|
|
1201
|
+
forEach_default(["u", "d"], function(B) {
|
|
1202
|
+
forEach_default(["l", "r"], function(U) {
|
|
1203
|
+
var W = B + U, G = u[W], K;
|
|
1204
|
+
if (G !== z) {
|
|
1205
|
+
var q = values_default(G);
|
|
1206
|
+
K = U === "l" ? V - min_default(q) : H - max_default(q), K && (u[W] = mapValues_default(G, function(u) {
|
|
1207
|
+
return u + K;
|
|
1208
|
+
}));
|
|
1209
|
+
}
|
|
1210
|
+
});
|
|
1211
|
+
});
|
|
1212
|
+
}
|
|
1213
|
+
function balance(u, z) {
|
|
1214
|
+
return mapValues_default(u.ul, function(B, V) {
|
|
1215
|
+
if (z) return u[z.toLowerCase()][V];
|
|
1216
|
+
var H = sortBy_default(map_default(u, V));
|
|
1217
|
+
return (H[1] + H[2]) / 2;
|
|
1218
|
+
});
|
|
1219
|
+
}
|
|
1220
|
+
function positionX(u) {
|
|
1221
|
+
var z = buildLayerMatrix(u), B = merge_default(findType1Conflicts(u, z), findType2Conflicts(u, z)), V = {}, H;
|
|
1222
|
+
return forEach_default(["u", "d"], function(U) {
|
|
1223
|
+
H = U === "u" ? z : values_default(z).reverse(), forEach_default(["l", "r"], function(z) {
|
|
1224
|
+
z === "r" && (H = map_default(H, function(u) {
|
|
1225
|
+
return values_default(u).reverse();
|
|
1226
|
+
}));
|
|
1227
|
+
var W = (U === "u" ? u.predecessors : u.successors).bind(u), G = verticalAlignment(u, H, B, W), K = horizontalCompaction(u, H, G.root, G.align, z === "r");
|
|
1228
|
+
z === "r" && (K = mapValues_default(K, function(u) {
|
|
1229
|
+
return -u;
|
|
1230
|
+
})), V[U + z] = K;
|
|
1231
|
+
});
|
|
1232
|
+
}), alignCoordinates(V, findSmallestWidthAlignment(u, V)), balance(V, u.graph().align);
|
|
1233
|
+
}
|
|
1234
|
+
function sep(u, z, B) {
|
|
1235
|
+
return function(V, H, U) {
|
|
1236
|
+
var W = V.node(H), G = V.node(U), K = 0, q;
|
|
1237
|
+
if (K += W.width / 2, Object.prototype.hasOwnProperty.call(W, "labelpos")) switch (W.labelpos.toLowerCase()) {
|
|
1238
|
+
case "l":
|
|
1239
|
+
q = -W.width / 2;
|
|
1240
|
+
break;
|
|
1241
|
+
case "r":
|
|
1242
|
+
q = W.width / 2;
|
|
1243
|
+
break;
|
|
1244
|
+
}
|
|
1245
|
+
if (q && (K += B ? q : -q), q = 0, K += (W.dummy ? z : u) / 2, K += (G.dummy ? z : u) / 2, K += G.width / 2, Object.prototype.hasOwnProperty.call(G, "labelpos")) switch (G.labelpos.toLowerCase()) {
|
|
1246
|
+
case "l":
|
|
1247
|
+
q = G.width / 2;
|
|
1248
|
+
break;
|
|
1249
|
+
case "r":
|
|
1250
|
+
q = -G.width / 2;
|
|
1251
|
+
break;
|
|
1252
|
+
}
|
|
1253
|
+
return q && (K += B ? q : -q), q = 0, K;
|
|
1254
|
+
};
|
|
1255
|
+
}
|
|
1256
|
+
function width(u, z) {
|
|
1257
|
+
return u.node(z).width;
|
|
1258
|
+
}
|
|
1259
|
+
function position(u) {
|
|
1260
|
+
u = asNonCompoundGraph(u), positionY(u), forOwn_default(positionX(u), function(z, B) {
|
|
1261
|
+
u.node(B).x = z;
|
|
1262
|
+
});
|
|
1263
|
+
}
|
|
1264
|
+
function positionY(u) {
|
|
1265
|
+
var z = buildLayerMatrix(u), B = u.graph().ranksep, V = 0;
|
|
1266
|
+
forEach_default(z, function(z) {
|
|
1267
|
+
var H = max_default(map_default(z, function(z) {
|
|
1268
|
+
return u.node(z).height;
|
|
1269
|
+
}));
|
|
1270
|
+
forEach_default(z, function(z) {
|
|
1271
|
+
u.node(z).y = V + H / 2;
|
|
1272
|
+
}), V += H + B;
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
function layout(u, z) {
|
|
1276
|
+
var B = z && z.debugTiming ? time : notime;
|
|
1277
|
+
B("layout", () => {
|
|
1278
|
+
var z = B(" buildLayoutGraph", () => buildLayoutGraph(u));
|
|
1279
|
+
B(" runLayout", () => runLayout(z, B)), B(" updateInputGraph", () => updateInputGraph(u, z));
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
function runLayout(u, z) {
|
|
1283
|
+
z(" makeSpaceForEdgeLabels", () => makeSpaceForEdgeLabels(u)), z(" removeSelfEdges", () => removeSelfEdges(u)), z(" acyclic", () => run$2(u)), z(" nestingGraph.run", () => run(u)), z(" rank", () => rank(asNonCompoundGraph(u))), z(" injectEdgeLabelProxies", () => injectEdgeLabelProxies(u)), z(" removeEmptyRanks", () => removeEmptyRanks(u)), z(" nestingGraph.cleanup", () => cleanup(u)), z(" normalizeRanks", () => normalizeRanks(u)), z(" assignRankMinMax", () => assignRankMinMax(u)), z(" removeEdgeLabelProxies", () => removeEdgeLabelProxies(u)), z(" normalize.run", () => run$1(u)), z(" parentDummyChains", () => parentDummyChains(u)), z(" addBorderSegments", () => addBorderSegments(u)), z(" order", () => order(u)), z(" insertSelfEdges", () => insertSelfEdges(u)), z(" adjustCoordinateSystem", () => adjust(u)), z(" position", () => position(u)), z(" positionSelfEdges", () => positionSelfEdges(u)), z(" removeBorderNodes", () => removeBorderNodes(u)), z(" normalize.undo", () => undo(u)), z(" fixupEdgeLabelCoords", () => fixupEdgeLabelCoords(u)), z(" undoCoordinateSystem", () => undo$1(u)), z(" translateGraph", () => translateGraph(u)), z(" assignNodeIntersects", () => assignNodeIntersects(u)), z(" reversePoints", () => reversePointsForReversedEdges(u)), z(" acyclic.undo", () => undo$2(u));
|
|
1284
|
+
}
|
|
1285
|
+
function updateInputGraph(u, z) {
|
|
1286
|
+
forEach_default(u.nodes(), function(B) {
|
|
1287
|
+
var V = u.node(B), H = z.node(B);
|
|
1288
|
+
V && (V.x = H.x, V.y = H.y, z.children(B).length && (V.width = H.width, V.height = H.height));
|
|
1289
|
+
}), forEach_default(u.edges(), function(B) {
|
|
1290
|
+
var V = u.edge(B), H = z.edge(B);
|
|
1291
|
+
V.points = H.points, Object.prototype.hasOwnProperty.call(H, "x") && (V.x = H.x, V.y = H.y);
|
|
1292
|
+
}), u.graph().width = z.graph().width, u.graph().height = z.graph().height;
|
|
1293
|
+
}
|
|
1294
|
+
var graphNumAttrs = [
|
|
1295
|
+
"nodesep",
|
|
1296
|
+
"edgesep",
|
|
1297
|
+
"ranksep",
|
|
1298
|
+
"marginx",
|
|
1299
|
+
"marginy"
|
|
1300
|
+
], graphDefaults = {
|
|
1301
|
+
ranksep: 50,
|
|
1302
|
+
edgesep: 20,
|
|
1303
|
+
nodesep: 50,
|
|
1304
|
+
rankdir: "tb"
|
|
1305
|
+
}, graphAttrs = [
|
|
1306
|
+
"acyclicer",
|
|
1307
|
+
"ranker",
|
|
1308
|
+
"rankdir",
|
|
1309
|
+
"align"
|
|
1310
|
+
], nodeNumAttrs = ["width", "height"], nodeDefaults = {
|
|
1311
|
+
width: 0,
|
|
1312
|
+
height: 0
|
|
1313
|
+
}, edgeNumAttrs = [
|
|
1314
|
+
"minlen",
|
|
1315
|
+
"weight",
|
|
1316
|
+
"width",
|
|
1317
|
+
"height",
|
|
1318
|
+
"labeloffset"
|
|
1319
|
+
], edgeDefaults = {
|
|
1320
|
+
minlen: 1,
|
|
1321
|
+
weight: 1,
|
|
1322
|
+
width: 0,
|
|
1323
|
+
height: 0,
|
|
1324
|
+
labeloffset: 10,
|
|
1325
|
+
labelpos: "r"
|
|
1326
|
+
}, edgeAttrs = ["labelpos"];
|
|
1327
|
+
function buildLayoutGraph(u) {
|
|
1328
|
+
var z = new Graph({
|
|
1329
|
+
multigraph: !0,
|
|
1330
|
+
compound: !0
|
|
1331
|
+
}), B = canonicalize(u.graph());
|
|
1332
|
+
return z.setGraph(merge_default({}, graphDefaults, selectNumberAttrs(B, graphNumAttrs), pick_default(B, graphAttrs))), forEach_default(u.nodes(), function(B) {
|
|
1333
|
+
var V = canonicalize(u.node(B));
|
|
1334
|
+
z.setNode(B, defaults_default(selectNumberAttrs(V, nodeNumAttrs), nodeDefaults)), z.setParent(B, u.parent(B));
|
|
1335
|
+
}), forEach_default(u.edges(), function(B) {
|
|
1336
|
+
var V = canonicalize(u.edge(B));
|
|
1337
|
+
z.setEdge(B, merge_default({}, edgeDefaults, selectNumberAttrs(V, edgeNumAttrs), pick_default(V, edgeAttrs)));
|
|
1338
|
+
}), z;
|
|
1339
|
+
}
|
|
1340
|
+
function makeSpaceForEdgeLabels(u) {
|
|
1341
|
+
var z = u.graph();
|
|
1342
|
+
z.ranksep /= 2, forEach_default(u.edges(), function(B) {
|
|
1343
|
+
var V = u.edge(B);
|
|
1344
|
+
V.minlen *= 2, V.labelpos.toLowerCase() !== "c" && (z.rankdir === "TB" || z.rankdir === "BT" ? V.width += V.labeloffset : V.height += V.labeloffset);
|
|
1345
|
+
});
|
|
1346
|
+
}
|
|
1347
|
+
function injectEdgeLabelProxies(u) {
|
|
1348
|
+
forEach_default(u.edges(), function(z) {
|
|
1349
|
+
var B = u.edge(z);
|
|
1350
|
+
if (B.width && B.height) {
|
|
1351
|
+
var V = u.node(z.v);
|
|
1352
|
+
addDummyNode(u, "edge-proxy", {
|
|
1353
|
+
rank: (u.node(z.w).rank - V.rank) / 2 + V.rank,
|
|
1354
|
+
e: z
|
|
1355
|
+
}, "_ep");
|
|
1356
|
+
}
|
|
1357
|
+
});
|
|
1358
|
+
}
|
|
1359
|
+
function assignRankMinMax(u) {
|
|
1360
|
+
var z = 0;
|
|
1361
|
+
forEach_default(u.nodes(), function(B) {
|
|
1362
|
+
var V = u.node(B);
|
|
1363
|
+
V.borderTop && (V.minRank = u.node(V.borderTop).rank, V.maxRank = u.node(V.borderBottom).rank, z = max_default(z, V.maxRank));
|
|
1364
|
+
}), u.graph().maxRank = z;
|
|
1365
|
+
}
|
|
1366
|
+
function removeEdgeLabelProxies(u) {
|
|
1367
|
+
forEach_default(u.nodes(), function(z) {
|
|
1368
|
+
var B = u.node(z);
|
|
1369
|
+
B.dummy === "edge-proxy" && (u.edge(B.e).labelRank = B.rank, u.removeNode(z));
|
|
1370
|
+
});
|
|
1371
|
+
}
|
|
1372
|
+
function translateGraph(u) {
|
|
1373
|
+
var z = Infinity, B = 0, V = Infinity, H = 0, U = u.graph(), W = U.marginx || 0, G = U.marginy || 0;
|
|
1374
|
+
function q(u) {
|
|
1375
|
+
var U = u.x, W = u.y, G = u.width, K = u.height;
|
|
1376
|
+
z = Math.min(z, U - G / 2), B = Math.max(B, U + G / 2), V = Math.min(V, W - K / 2), H = Math.max(H, W + K / 2);
|
|
1377
|
+
}
|
|
1378
|
+
forEach_default(u.nodes(), function(z) {
|
|
1379
|
+
q(u.node(z));
|
|
1380
|
+
}), forEach_default(u.edges(), function(z) {
|
|
1381
|
+
var B = u.edge(z);
|
|
1382
|
+
Object.prototype.hasOwnProperty.call(B, "x") && q(B);
|
|
1383
|
+
}), z -= W, V -= G, forEach_default(u.nodes(), function(B) {
|
|
1384
|
+
var H = u.node(B);
|
|
1385
|
+
H.x -= z, H.y -= V;
|
|
1386
|
+
}), forEach_default(u.edges(), function(B) {
|
|
1387
|
+
var H = u.edge(B);
|
|
1388
|
+
forEach_default(H.points, function(u) {
|
|
1389
|
+
u.x -= z, u.y -= V;
|
|
1390
|
+
}), Object.prototype.hasOwnProperty.call(H, "x") && (H.x -= z), Object.prototype.hasOwnProperty.call(H, "y") && (H.y -= V);
|
|
1391
|
+
}), U.width = B - z + W, U.height = H - V + G;
|
|
1392
|
+
}
|
|
1393
|
+
function assignNodeIntersects(u) {
|
|
1394
|
+
forEach_default(u.edges(), function(z) {
|
|
1395
|
+
var B = u.edge(z), V = u.node(z.v), H = u.node(z.w), U, W;
|
|
1396
|
+
B.points ? (U = B.points[0], W = B.points[B.points.length - 1]) : (B.points = [], U = H, W = V), B.points.unshift(intersectRect(V, U)), B.points.push(intersectRect(H, W));
|
|
1397
|
+
});
|
|
1398
|
+
}
|
|
1399
|
+
function fixupEdgeLabelCoords(u) {
|
|
1400
|
+
forEach_default(u.edges(), function(z) {
|
|
1401
|
+
var B = u.edge(z);
|
|
1402
|
+
if (Object.prototype.hasOwnProperty.call(B, "x")) switch ((B.labelpos === "l" || B.labelpos === "r") && (B.width -= B.labeloffset), B.labelpos) {
|
|
1403
|
+
case "l":
|
|
1404
|
+
B.x -= B.width / 2 + B.labeloffset;
|
|
1405
|
+
break;
|
|
1406
|
+
case "r":
|
|
1407
|
+
B.x += B.width / 2 + B.labeloffset;
|
|
1408
|
+
break;
|
|
1409
|
+
}
|
|
1410
|
+
});
|
|
1411
|
+
}
|
|
1412
|
+
function reversePointsForReversedEdges(u) {
|
|
1413
|
+
forEach_default(u.edges(), function(z) {
|
|
1414
|
+
var B = u.edge(z);
|
|
1415
|
+
B.reversed && B.points.reverse();
|
|
1416
|
+
});
|
|
1417
|
+
}
|
|
1418
|
+
function removeBorderNodes(u) {
|
|
1419
|
+
forEach_default(u.nodes(), function(z) {
|
|
1420
|
+
if (u.children(z).length) {
|
|
1421
|
+
var B = u.node(z), V = u.node(B.borderTop), H = u.node(B.borderBottom), U = u.node(last_default(B.borderLeft)), W = u.node(last_default(B.borderRight));
|
|
1422
|
+
B.width = Math.abs(W.x - U.x), B.height = Math.abs(H.y - V.y), B.x = U.x + B.width / 2, B.y = V.y + B.height / 2;
|
|
1423
|
+
}
|
|
1424
|
+
}), forEach_default(u.nodes(), function(z) {
|
|
1425
|
+
u.node(z).dummy === "border" && u.removeNode(z);
|
|
1426
|
+
});
|
|
1427
|
+
}
|
|
1428
|
+
function removeSelfEdges(u) {
|
|
1429
|
+
forEach_default(u.edges(), function(z) {
|
|
1430
|
+
if (z.v === z.w) {
|
|
1431
|
+
var B = u.node(z.v);
|
|
1432
|
+
B.selfEdges ||= [], B.selfEdges.push({
|
|
1433
|
+
e: z,
|
|
1434
|
+
label: u.edge(z)
|
|
1435
|
+
}), u.removeEdge(z);
|
|
1436
|
+
}
|
|
1437
|
+
});
|
|
1438
|
+
}
|
|
1439
|
+
function insertSelfEdges(u) {
|
|
1440
|
+
forEach_default(buildLayerMatrix(u), function(z) {
|
|
1441
|
+
var B = 0;
|
|
1442
|
+
forEach_default(z, function(z, V) {
|
|
1443
|
+
var H = u.node(z);
|
|
1444
|
+
H.order = V + B, forEach_default(H.selfEdges, function(z) {
|
|
1445
|
+
addDummyNode(u, "selfedge", {
|
|
1446
|
+
width: z.label.width,
|
|
1447
|
+
height: z.label.height,
|
|
1448
|
+
rank: H.rank,
|
|
1449
|
+
order: V + ++B,
|
|
1450
|
+
e: z.e,
|
|
1451
|
+
label: z.label
|
|
1452
|
+
}, "_se");
|
|
1453
|
+
}), delete H.selfEdges;
|
|
1454
|
+
});
|
|
1455
|
+
});
|
|
1456
|
+
}
|
|
1457
|
+
function positionSelfEdges(u) {
|
|
1458
|
+
forEach_default(u.nodes(), function(z) {
|
|
1459
|
+
var B = u.node(z);
|
|
1460
|
+
if (B.dummy === "selfedge") {
|
|
1461
|
+
var V = u.node(B.e.v), H = V.x + V.width / 2, U = V.y, W = B.x - H, G = V.height / 2;
|
|
1462
|
+
u.setEdge(B.e, B.label), u.removeNode(z), B.label.points = [
|
|
1463
|
+
{
|
|
1464
|
+
x: H + 2 * W / 3,
|
|
1465
|
+
y: U - G
|
|
1466
|
+
},
|
|
1467
|
+
{
|
|
1468
|
+
x: H + 5 * W / 6,
|
|
1469
|
+
y: U - G
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
x: H + W,
|
|
1473
|
+
y: U
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
x: H + 5 * W / 6,
|
|
1477
|
+
y: U + G
|
|
1478
|
+
},
|
|
1479
|
+
{
|
|
1480
|
+
x: H + 2 * W / 3,
|
|
1481
|
+
y: U + G
|
|
1482
|
+
}
|
|
1483
|
+
], B.label.x = B.x, B.label.y = B.y;
|
|
1484
|
+
}
|
|
1485
|
+
});
|
|
1486
|
+
}
|
|
1487
|
+
function selectNumberAttrs(u, z) {
|
|
1488
|
+
return mapValues_default(pick_default(u, z), Number);
|
|
1489
|
+
}
|
|
1490
|
+
function canonicalize(u) {
|
|
1491
|
+
var z = {};
|
|
1492
|
+
return forEach_default(u, function(u, B) {
|
|
1493
|
+
z[B.toLowerCase()] = u;
|
|
1494
|
+
}), z;
|
|
1495
|
+
}
|
|
1496
|
+
export { layout as t };
|