@antv/layout 0.1.19-beta.4 → 0.1.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.
Files changed (215) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/layout.min.js +1 -1
  3. package/dist/layout.min.js.LICENSE.txt +9 -0
  4. package/dist/layout.min.js.map +1 -1
  5. package/es/layout/comboForce.js +4 -19
  6. package/es/layout/comboForce.js.map +1 -1
  7. package/es/layout/dagre/index.d.ts +9 -0
  8. package/es/layout/dagre/index.js +33 -0
  9. package/es/layout/dagre/index.js.map +1 -0
  10. package/es/layout/dagre/src/acyclic.d.ts +7 -0
  11. package/es/layout/dagre/src/acyclic.js +52 -0
  12. package/es/layout/dagre/src/acyclic.js.map +1 -0
  13. package/es/layout/dagre/src/add-border-segments.d.ts +4 -0
  14. package/es/layout/dagre/src/add-border-segments.js +32 -0
  15. package/es/layout/dagre/src/add-border-segments.js.map +1 -0
  16. package/es/layout/dagre/src/coordinate-system.d.ts +7 -0
  17. package/es/layout/dagre/src/coordinate-system.js +57 -0
  18. package/es/layout/dagre/src/coordinate-system.js.map +1 -0
  19. package/es/layout/dagre/src/data/list.d.ts +8 -0
  20. package/es/layout/dagre/src/data/list.js +50 -0
  21. package/es/layout/dagre/src/data/list.js.map +1 -0
  22. package/es/layout/dagre/src/debug.d.ts +4 -0
  23. package/es/layout/dagre/src/debug.js +26 -0
  24. package/es/layout/dagre/src/debug.js.map +1 -0
  25. package/es/layout/dagre/src/graphlib.d.ts +2 -0
  26. package/es/layout/dagre/src/graphlib.js +8 -0
  27. package/es/layout/dagre/src/graphlib.js.map +1 -0
  28. package/es/layout/dagre/src/greedy-fas.d.ts +4 -0
  29. package/es/layout/dagre/src/greedy-fas.js +113 -0
  30. package/es/layout/dagre/src/greedy-fas.js.map +1 -0
  31. package/es/layout/dagre/src/layout.d.ts +4 -0
  32. package/es/layout/dagre/src/layout.js +435 -0
  33. package/es/layout/dagre/src/layout.js.map +1 -0
  34. package/es/layout/dagre/src/nesting-graph.d.ts +7 -0
  35. package/es/layout/dagre/src/nesting-graph.js +112 -0
  36. package/es/layout/dagre/src/nesting-graph.js.map +1 -0
  37. package/es/layout/dagre/src/normalize.d.ts +7 -0
  38. package/es/layout/dagre/src/normalize.js +88 -0
  39. package/es/layout/dagre/src/normalize.js.map +1 -0
  40. package/es/layout/dagre/src/order/add-subgraph-constraints.d.ts +4 -0
  41. package/es/layout/dagre/src/order/add-subgraph-constraints.js +27 -0
  42. package/es/layout/dagre/src/order/add-subgraph-constraints.js.map +1 -0
  43. package/es/layout/dagre/src/order/barycenter.d.ts +12 -0
  44. package/es/layout/dagre/src/order/barycenter.js +24 -0
  45. package/es/layout/dagre/src/order/barycenter.js.map +1 -0
  46. package/es/layout/dagre/src/order/build-layer-graph.d.ts +4 -0
  47. package/es/layout/dagre/src/order/build-layer-graph.js +67 -0
  48. package/es/layout/dagre/src/order/build-layer-graph.js.map +1 -0
  49. package/es/layout/dagre/src/order/cross-count.d.ts +4 -0
  50. package/es/layout/dagre/src/order/cross-count.js +64 -0
  51. package/es/layout/dagre/src/order/cross-count.js.map +1 -0
  52. package/es/layout/dagre/src/order/index.d.ts +4 -0
  53. package/es/layout/dagre/src/order/index.js +88 -0
  54. package/es/layout/dagre/src/order/index.js.map +1 -0
  55. package/es/layout/dagre/src/order/init-data-order.d.ts +7 -0
  56. package/es/layout/dagre/src/order/init-data-order.js +25 -0
  57. package/es/layout/dagre/src/order/init-data-order.js.map +1 -0
  58. package/es/layout/dagre/src/order/init-order.d.ts +4 -0
  59. package/es/layout/dagre/src/order/init-order.js +49 -0
  60. package/es/layout/dagre/src/order/init-order.js.map +1 -0
  61. package/es/layout/dagre/src/order/resolve-conflicts.d.ts +4 -0
  62. package/es/layout/dagre/src/order/resolve-conflicts.js +111 -0
  63. package/es/layout/dagre/src/order/resolve-conflicts.js.map +1 -0
  64. package/es/layout/dagre/src/order/sort-subgraph.d.ts +4 -0
  65. package/es/layout/dagre/src/order/sort-subgraph.js +79 -0
  66. package/es/layout/dagre/src/order/sort-subgraph.js.map +1 -0
  67. package/es/layout/dagre/src/order/sort.d.ts +2 -0
  68. package/es/layout/dagre/src/order/sort.js +67 -0
  69. package/es/layout/dagre/src/order/sort.js.map +1 -0
  70. package/es/layout/dagre/src/parent-dummy-chains.d.ts +4 -0
  71. package/es/layout/dagre/src/parent-dummy-chains.js +78 -0
  72. package/es/layout/dagre/src/parent-dummy-chains.js.map +1 -0
  73. package/es/layout/dagre/src/position/bk.d.ts +32 -0
  74. package/es/layout/dagre/src/position/bk.js +402 -0
  75. package/es/layout/dagre/src/position/bk.js.map +1 -0
  76. package/es/layout/dagre/src/position/index.d.ts +4 -0
  77. package/es/layout/dagre/src/position/index.js +53 -0
  78. package/es/layout/dagre/src/position/index.js.map +1 -0
  79. package/es/layout/dagre/src/rank/feasible-tree.d.ts +10 -0
  80. package/es/layout/dagre/src/rank/feasible-tree.js +149 -0
  81. package/es/layout/dagre/src/rank/feasible-tree.js.map +1 -0
  82. package/es/layout/dagre/src/rank/index.d.ts +4 -0
  83. package/es/layout/dagre/src/rank/index.js +53 -0
  84. package/es/layout/dagre/src/rank/index.js.map +1 -0
  85. package/es/layout/dagre/src/rank/network-simplex.d.ts +12 -0
  86. package/es/layout/dagre/src/rank/network-simplex.js +207 -0
  87. package/es/layout/dagre/src/rank/network-simplex.js.map +1 -0
  88. package/es/layout/dagre/src/rank/util.d.ts +12 -0
  89. package/es/layout/dagre/src/rank/util.js +109 -0
  90. package/es/layout/dagre/src/rank/util.js.map +1 -0
  91. package/es/layout/dagre/src/util.d.ts +50 -0
  92. package/es/layout/dagre/src/util.js +260 -0
  93. package/es/layout/dagre/src/util.js.map +1 -0
  94. package/es/layout/dagre.d.ts +3 -3
  95. package/es/layout/dagre.js +35 -11
  96. package/es/layout/dagre.js.map +1 -1
  97. package/es/layout/force/force-in-a-box.js +1 -0
  98. package/es/layout/force/force-in-a-box.js.map +1 -1
  99. package/es/layout/fruchterman.js +12 -36
  100. package/es/layout/fruchterman.js.map +1 -1
  101. package/es/layout/index.d.ts +2 -1
  102. package/es/layout/index.js +2 -1
  103. package/es/layout/index.js.map +1 -1
  104. package/es/layout/layout.js +33 -11
  105. package/es/layout/layout.js.map +1 -1
  106. package/es/layout/types.d.ts +2 -2
  107. package/es/registy/index.d.ts +1 -1
  108. package/es/registy/index.js +1 -0
  109. package/es/registy/index.js.map +1 -1
  110. package/lib/layout/comboForce.js +4 -19
  111. package/lib/layout/comboForce.js.map +1 -1
  112. package/lib/layout/dagre/index.d.ts +9 -0
  113. package/lib/layout/dagre/index.js +38 -0
  114. package/lib/layout/dagre/index.js.map +1 -0
  115. package/lib/layout/dagre/src/acyclic.d.ts +7 -0
  116. package/lib/layout/dagre/src/acyclic.js +57 -0
  117. package/lib/layout/dagre/src/acyclic.js.map +1 -0
  118. package/lib/layout/dagre/src/add-border-segments.d.ts +4 -0
  119. package/lib/layout/dagre/src/add-border-segments.js +37 -0
  120. package/lib/layout/dagre/src/add-border-segments.js.map +1 -0
  121. package/lib/layout/dagre/src/coordinate-system.d.ts +7 -0
  122. package/lib/layout/dagre/src/coordinate-system.js +59 -0
  123. package/lib/layout/dagre/src/coordinate-system.js.map +1 -0
  124. package/lib/layout/dagre/src/data/list.d.ts +8 -0
  125. package/lib/layout/dagre/src/data/list.js +53 -0
  126. package/lib/layout/dagre/src/data/list.js.map +1 -0
  127. package/lib/layout/dagre/src/debug.d.ts +4 -0
  128. package/lib/layout/dagre/src/debug.js +31 -0
  129. package/lib/layout/dagre/src/debug.js.map +1 -0
  130. package/lib/layout/dagre/src/graphlib.d.ts +2 -0
  131. package/lib/layout/dagre/src/graphlib.js +13 -0
  132. package/lib/layout/dagre/src/graphlib.js.map +1 -0
  133. package/lib/layout/dagre/src/greedy-fas.d.ts +4 -0
  134. package/lib/layout/dagre/src/greedy-fas.js +118 -0
  135. package/lib/layout/dagre/src/greedy-fas.js.map +1 -0
  136. package/lib/layout/dagre/src/layout.d.ts +4 -0
  137. package/lib/layout/dagre/src/layout.js +459 -0
  138. package/lib/layout/dagre/src/layout.js.map +1 -0
  139. package/lib/layout/dagre/src/nesting-graph.d.ts +7 -0
  140. package/lib/layout/dagre/src/nesting-graph.js +117 -0
  141. package/lib/layout/dagre/src/nesting-graph.js.map +1 -0
  142. package/lib/layout/dagre/src/normalize.d.ts +7 -0
  143. package/lib/layout/dagre/src/normalize.js +93 -0
  144. package/lib/layout/dagre/src/normalize.js.map +1 -0
  145. package/lib/layout/dagre/src/order/add-subgraph-constraints.d.ts +4 -0
  146. package/lib/layout/dagre/src/order/add-subgraph-constraints.js +29 -0
  147. package/lib/layout/dagre/src/order/add-subgraph-constraints.js.map +1 -0
  148. package/lib/layout/dagre/src/order/barycenter.d.ts +12 -0
  149. package/lib/layout/dagre/src/order/barycenter.js +26 -0
  150. package/lib/layout/dagre/src/order/barycenter.js.map +1 -0
  151. package/lib/layout/dagre/src/order/build-layer-graph.d.ts +4 -0
  152. package/lib/layout/dagre/src/order/build-layer-graph.js +72 -0
  153. package/lib/layout/dagre/src/order/build-layer-graph.js.map +1 -0
  154. package/lib/layout/dagre/src/order/cross-count.d.ts +4 -0
  155. package/lib/layout/dagre/src/order/cross-count.js +66 -0
  156. package/lib/layout/dagre/src/order/cross-count.js.map +1 -0
  157. package/lib/layout/dagre/src/order/index.d.ts +4 -0
  158. package/lib/layout/dagre/src/order/index.js +93 -0
  159. package/lib/layout/dagre/src/order/index.js.map +1 -0
  160. package/lib/layout/dagre/src/order/init-data-order.d.ts +7 -0
  161. package/lib/layout/dagre/src/order/init-data-order.js +27 -0
  162. package/lib/layout/dagre/src/order/init-data-order.js.map +1 -0
  163. package/lib/layout/dagre/src/order/init-order.d.ts +4 -0
  164. package/lib/layout/dagre/src/order/init-order.js +51 -0
  165. package/lib/layout/dagre/src/order/init-order.js.map +1 -0
  166. package/lib/layout/dagre/src/order/resolve-conflicts.d.ts +4 -0
  167. package/lib/layout/dagre/src/order/resolve-conflicts.js +116 -0
  168. package/lib/layout/dagre/src/order/resolve-conflicts.js.map +1 -0
  169. package/lib/layout/dagre/src/order/sort-subgraph.d.ts +4 -0
  170. package/lib/layout/dagre/src/order/sort-subgraph.js +84 -0
  171. package/lib/layout/dagre/src/order/sort-subgraph.js.map +1 -0
  172. package/lib/layout/dagre/src/order/sort.d.ts +2 -0
  173. package/lib/layout/dagre/src/order/sort.js +72 -0
  174. package/lib/layout/dagre/src/order/sort.js.map +1 -0
  175. package/lib/layout/dagre/src/parent-dummy-chains.d.ts +4 -0
  176. package/lib/layout/dagre/src/parent-dummy-chains.js +80 -0
  177. package/lib/layout/dagre/src/parent-dummy-chains.js.map +1 -0
  178. package/lib/layout/dagre/src/position/bk.d.ts +32 -0
  179. package/lib/layout/dagre/src/position/bk.js +417 -0
  180. package/lib/layout/dagre/src/position/bk.js.map +1 -0
  181. package/lib/layout/dagre/src/position/index.d.ts +4 -0
  182. package/lib/layout/dagre/src/position/index.js +58 -0
  183. package/lib/layout/dagre/src/position/index.js.map +1 -0
  184. package/lib/layout/dagre/src/rank/feasible-tree.d.ts +10 -0
  185. package/lib/layout/dagre/src/rank/feasible-tree.js +156 -0
  186. package/lib/layout/dagre/src/rank/feasible-tree.js.map +1 -0
  187. package/lib/layout/dagre/src/rank/index.d.ts +4 -0
  188. package/lib/layout/dagre/src/rank/index.js +58 -0
  189. package/lib/layout/dagre/src/rank/index.js.map +1 -0
  190. package/lib/layout/dagre/src/rank/network-simplex.d.ts +12 -0
  191. package/lib/layout/dagre/src/rank/network-simplex.js +212 -0
  192. package/lib/layout/dagre/src/rank/network-simplex.js.map +1 -0
  193. package/lib/layout/dagre/src/rank/util.d.ts +12 -0
  194. package/lib/layout/dagre/src/rank/util.js +114 -0
  195. package/lib/layout/dagre/src/rank/util.js.map +1 -0
  196. package/lib/layout/dagre/src/util.d.ts +50 -0
  197. package/lib/layout/dagre/src/util.js +281 -0
  198. package/lib/layout/dagre/src/util.js.map +1 -0
  199. package/lib/layout/dagre.d.ts +3 -3
  200. package/lib/layout/dagre.js +37 -13
  201. package/lib/layout/dagre.js.map +1 -1
  202. package/lib/layout/force/force-in-a-box.js +1 -0
  203. package/lib/layout/force/force-in-a-box.js.map +1 -1
  204. package/lib/layout/fruchterman.js +12 -36
  205. package/lib/layout/fruchterman.js.map +1 -1
  206. package/lib/layout/index.d.ts +2 -1
  207. package/lib/layout/index.js +3 -1
  208. package/lib/layout/index.js.map +1 -1
  209. package/lib/layout/layout.js +32 -10
  210. package/lib/layout/layout.js.map +1 -1
  211. package/lib/layout/types.d.ts +2 -2
  212. package/lib/registy/index.d.ts +1 -1
  213. package/lib/registy/index.js +1 -0
  214. package/lib/registy/index.js.map +1 -1
  215. package/package.json +4 -4
@@ -0,0 +1,7 @@
1
+ import { graphlib as IGraphLib } from "../../graphlib";
2
+ declare type Graph = IGraphLib.Graph;
3
+ /**
4
+ * 按照数据中的结果设置fixorder
5
+ */
6
+ declare const initDataOrder: (g: Graph, nodeOrder: string[]) => void;
7
+ export default initDataOrder;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * 按照数据中的结果设置fixorder
5
+ */
6
+ var initDataOrder = function (g, nodeOrder) {
7
+ var simpleNodes = g.nodes().filter(function (v) {
8
+ var _a;
9
+ return !((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length);
10
+ });
11
+ var ranks = simpleNodes.map(function (v) { return g.node(v).rank; });
12
+ var maxRank = Math.max.apply(Math, ranks);
13
+ var layers = [];
14
+ for (var i = 0; i < maxRank + 1; i++) {
15
+ layers.push([]);
16
+ }
17
+ nodeOrder.forEach(function (n) {
18
+ var node = g.node(n);
19
+ // 只考虑原有节点,dummy节点需要按照后续算法排出
20
+ if (!node || node.dummy)
21
+ return;
22
+ node.fixorder = layers[node.rank].length; // 设置fixorder为当层的顺序
23
+ layers[node.rank].push(n);
24
+ });
25
+ };
26
+ exports.default = initDataOrder;
27
+ //# sourceMappingURL=init-data-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-data-order.js","sourceRoot":"","sources":["../../../../../src/layout/dagre/src/order/init-data-order.ts"],"names":[],"mappings":";;AAIA;;GAEG;AACH,IAAM,aAAa,GAAG,UAAC,CAAQ,EAAE,SAAmB;IAClD,IAAM,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAC,CAAC;;QACrC,OAAO,CAAC,CAAA,MAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAA,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,IAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAe,EAA1B,CAA0B,CAAC,CAAC;IACjE,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,EAAQ,KAAK,CAAC,CAAC;IACnC,IAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAG,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACD,SAAS,CAAC,OAAO,CAAC,UAAC,CAAC;QAClB,IAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,4BAA4B;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAE,IAAI,CAAC,IAAe,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB;QACzE,MAAM,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { graphlib as IGraphLib } from "../../graphlib";
2
+ declare type Graph = IGraphLib.Graph;
3
+ declare const initOrder: (g: Graph) => any;
4
+ export default initOrder;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*
4
+ * Assigns an initial order value for each node by performing a DFS search
5
+ * starting from nodes in the first rank. Nodes are assigned an order in their
6
+ * rank as they are first visited.
7
+ *
8
+ * This approach comes from Gansner, et al., "A Technique for Drawing Directed
9
+ * Graphs."
10
+ *
11
+ * Returns a layering matrix with an array per layer and each layer sorted by
12
+ * the order of its nodes.
13
+ */
14
+ var initOrder = function (g) {
15
+ var visited = {};
16
+ var simpleNodes = g.nodes().filter(function (v) {
17
+ var _a;
18
+ return !((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length);
19
+ });
20
+ var nodeRanks = simpleNodes.map(function (v) { return g.node(v).rank; });
21
+ var maxRank = Math.max.apply(Math, nodeRanks);
22
+ var layers = [];
23
+ for (var i = 0; i < maxRank + 1; i++) {
24
+ layers.push([]);
25
+ }
26
+ // const layers = _.map(_.range(maxRank + 1), function() { return []; });
27
+ var dfs = function (v) {
28
+ var _a;
29
+ if (visited.hasOwnProperty(v))
30
+ return;
31
+ visited[v] = true;
32
+ var node = g.node(v);
33
+ layers[node.rank].push(v);
34
+ (_a = g.successors(v)) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { return dfs(child); });
35
+ };
36
+ var orderedVs = simpleNodes.sort(function (a, b) { return g.node(a).rank - g.node(b).rank; });
37
+ // const orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });
38
+ // 有fixOrder的,直接排序好放进去
39
+ var beforeSort = orderedVs.filter(function (n) {
40
+ return g.node(n).fixorder !== undefined;
41
+ });
42
+ var fixOrderNodes = beforeSort.sort(function (a, b) { return g.node(a).fixorder - g.node(b).fixorder; });
43
+ fixOrderNodes.forEach(function (n) {
44
+ layers[g.node(n).rank].push(n);
45
+ visited[n] = true;
46
+ });
47
+ orderedVs.forEach(dfs);
48
+ return layers;
49
+ };
50
+ exports.default = initOrder;
51
+ //# sourceMappingURL=init-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-order.js","sourceRoot":"","sources":["../../../../../src/layout/dagre/src/order/init-order.ts"],"names":[],"mappings":";;AAGA;;;;;;;;;;GAUG;AACH,IAAM,SAAS,GAAG,UAAC,CAAQ;IACzB,IAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAM,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAC,CAAC;;QACrC,OAAO,CAAC,CAAA,MAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAA,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,IAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAe,EAA1B,CAA0B,CAAC,CAAC;IACrE,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,EAAQ,SAAS,CAAC,CAAC;IACvC,IAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACD,yEAAyE;IAEzE,IAAM,GAAG,GAAG,UAAC,CAAS;;QACpB,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;YAAE,OAAO;QACtC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAClB,IAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAA,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,UAAC,KAAK,IAAK,OAAA,GAAG,CAAC,KAAY,CAAC,EAAjB,CAAiB,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAe,GAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAe,EAAvD,CAAuD,CAAC,CAAC;IACtG,mFAAmF;IAEnF,sBAAsB;IACtB,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,CAAC;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,IAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAmB,GAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAmB,EAA/D,CAA+D,CAAC,CAAC;IACjH,aAAa,CAAC,OAAO,CAAC,UAAC,CAAC;QACtB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { graphlib as IGraphLib } from "../../graphlib";
2
+ declare type Graph = IGraphLib.Graph;
3
+ declare const resolveConflicts: (entries: any, cg: Graph) => any[];
4
+ export default resolveConflicts;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*
4
+ * Given a list of entries of the form {v, barycenter, weight} and a
5
+ * constraint graph this function will resolve any conflicts between the
6
+ * constraint graph and the barycenters for the entries. If the barycenters for
7
+ * an entry would violate a constraint in the constraint graph then we coalesce
8
+ * the nodes in the conflict into a new node that respects the contraint and
9
+ * aggregates barycenter and weight information.
10
+ *
11
+ * This implementation is based on the description in Forster, "A Fast and
12
+ * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it
13
+ * differs in some specific details.
14
+ *
15
+ * Pre-conditions:
16
+ *
17
+ * 1. Each entry has the form {v, barycenter, weight}, or if the node has
18
+ * no barycenter, then {v}.
19
+ *
20
+ * Returns:
21
+ *
22
+ * A new list of entries of the form {vs, i, barycenter, weight}. The list
23
+ * `vs` may either be a singleton or it may be an aggregation of nodes
24
+ * ordered such that they do not violate constraints from the constraint
25
+ * graph. The property `i` is the lowest original index of any of the
26
+ * elements in `vs`.
27
+ */
28
+ var resolveConflicts = function (entries, cg) {
29
+ var _a, _b;
30
+ var mappedEntries = {};
31
+ entries.forEach(function (entry, i) {
32
+ var tmp = mappedEntries[entry.v] = {
33
+ i: i,
34
+ indegree: 0,
35
+ "in": [],
36
+ out: [],
37
+ vs: [entry.v],
38
+ };
39
+ if (entry.barycenter !== undefined) {
40
+ tmp.barycenter = entry.barycenter;
41
+ tmp.weight = entry.weight;
42
+ }
43
+ });
44
+ cg.edges().forEach(function (e) {
45
+ var entryV = mappedEntries[e.v];
46
+ var entryW = mappedEntries[e.w];
47
+ if (entryV !== undefined && entryW !== undefined) {
48
+ entryW.indegree++;
49
+ entryV.out.push(mappedEntries[e.w]);
50
+ }
51
+ });
52
+ // @ts-ignore
53
+ var sourceSet = (_b = (_a = Object.values(mappedEntries)).filter) === null || _b === void 0 ? void 0 : _b.call(_a, function (entry) { return !entry.indegree; });
54
+ return doResolveConflicts(sourceSet);
55
+ };
56
+ var doResolveConflicts = function (sourceSet) {
57
+ var entries = [];
58
+ var handleIn = function (vEntry) {
59
+ return function (uEntry) {
60
+ if (uEntry.merged)
61
+ return;
62
+ if (uEntry.barycenter !== undefined ||
63
+ vEntry.barycenter !== undefined ||
64
+ uEntry.barycenter >= vEntry.barycenter) {
65
+ mergeEntries(vEntry, uEntry);
66
+ }
67
+ };
68
+ };
69
+ var handleOut = function (vEntry) {
70
+ return function (wEntry) {
71
+ wEntry["in"].push(vEntry);
72
+ if (--wEntry.indegree === 0) {
73
+ sourceSet.push(wEntry);
74
+ }
75
+ };
76
+ };
77
+ var _loop_1 = function () {
78
+ var entry = sourceSet.pop();
79
+ entries.push(entry);
80
+ entry["in"].reverse().forEach(function (e) { return handleIn(entry); });
81
+ entry.out.forEach(function (e) { return handleOut(entry); });
82
+ };
83
+ while (sourceSet === null || sourceSet === void 0 ? void 0 : sourceSet.length) {
84
+ _loop_1();
85
+ }
86
+ var filtered = entries.filter(function (entry) { return !entry.merged; });
87
+ var keys = ["vs", "i", "barycenter", "weight"];
88
+ return filtered.map(function (entry) {
89
+ var picked = {};
90
+ keys.forEach(function (key) {
91
+ if (entry[key] === undefined)
92
+ return;
93
+ picked[key] = entry[key];
94
+ });
95
+ return picked;
96
+ });
97
+ };
98
+ var mergeEntries = function (target, source) {
99
+ var sum = 0;
100
+ var weight = 0;
101
+ if (target.weight) {
102
+ sum += target.barycenter * target.weight;
103
+ weight += target.weight;
104
+ }
105
+ if (source.weight) {
106
+ sum += source.barycenter * source.weight;
107
+ weight += source.weight;
108
+ }
109
+ target.vs = source.vs.concat(target.vs);
110
+ target.barycenter = sum / weight;
111
+ target.weight = weight;
112
+ target.i = Math.min(source.i, target.i);
113
+ source.merged = true;
114
+ };
115
+ exports.default = resolveConflicts;
116
+ //# sourceMappingURL=resolve-conflicts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-conflicts.js","sourceRoot":"","sources":["../../../../../src/layout/dagre/src/order/resolve-conflicts.ts"],"names":[],"mappings":";;AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,IAAM,gBAAgB,GAAG,UAAC,OAAY,EAAE,EAAS;;IAC/C,IAAM,aAAa,GAAQ,EAAE,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAC,UAAC,KAAU,EAAE,CAAS;QACpC,IAAM,GAAG,GAAQ,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;YACxC,CAAC,GAAA;YACD,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,EAAE;YACP,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SACd,CAAC;QACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;YAClC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAClC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;SAC3B;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,UAAC,CAAC;QACnB,IAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;YAChD,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,IAAM,SAAS,GAAG,MAAA,MAAA,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,MAAM,mDAAG,UAAC,KAAU,IAAK,OAAA,CAAC,KAAK,CAAC,QAAQ,EAAf,CAAe,CAAC,CAAC;IAEzF,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,IAAM,kBAAkB,GAAG,UAAC,SAAc;IACxC,IAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAM,QAAQ,GAAG,UAAC,MAAW;QAC3B,OAAO,UAAC,MAAW;YACjB,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO;YAC1B,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC1C,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG,UAAC,MAAW;QAC5B,OAAO,UAAC,MAAW;YACjB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;gBAC3B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxB;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;;QAGA,IAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB,CAAC,CAAC;;IAJlD,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM;;KAKvB;IAED,IAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,KAAK,CAAC,MAAM,EAAb,CAAa,CAAC,CAAC;IAC1D,IAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK;QACxB,IAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;YACf,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,OAAO;YACrC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,MAAW,EAAE,MAAW;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QACzC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QACzC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;KACzB;IAED,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,CAAC,CAAC;AAGF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { graphlib as IGraphLib } from '../../graphlib';
2
+ declare type Graph = IGraphLib.Graph;
3
+ declare const sortSubgraph: (g: Graph, v: string, cg: Graph, biasRight: any, usePrev?: any) => any;
4
+ export default sortSubgraph;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var barycenter_1 = __importDefault(require("./barycenter"));
7
+ var resolve_conflicts_1 = __importDefault(require("./resolve-conflicts"));
8
+ var sort_1 = __importDefault(require("./sort"));
9
+ var sortSubgraph = function (g, v, cg, biasRight, usePrev) {
10
+ var _a, _b, _c;
11
+ var movable = g.children(v);
12
+ // fixorder的点不参与排序(这个方案不合适,只排了新增节点,和原来的分离)
13
+ var node = g.node(v);
14
+ var bl = node ? node.borderLeft : undefined;
15
+ var br = node ? node.borderRight : undefined;
16
+ var subgraphs = {};
17
+ if (bl) {
18
+ movable = movable === null || movable === void 0 ? void 0 : movable.filter(function (w) {
19
+ return w !== bl && w !== br;
20
+ });
21
+ }
22
+ var barycenters = (0, barycenter_1.default)(g, movable || []);
23
+ barycenters.forEach(function (entry) {
24
+ var _a;
25
+ if ((_a = g.children(entry.v)) === null || _a === void 0 ? void 0 : _a.length) {
26
+ var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
27
+ subgraphs[entry.v] = subgraphResult;
28
+ if (subgraphResult.hasOwnProperty("barycenter")) {
29
+ mergeBarycenters(entry, subgraphResult);
30
+ }
31
+ }
32
+ });
33
+ var entries = (0, resolve_conflicts_1.default)(barycenters, cg);
34
+ expandSubgraphs(entries, subgraphs);
35
+ // 添加fixorder信息到entries里边
36
+ // TODO: 不考虑复合情况,只用第一个点的fixorder信息,后续考虑更完备的实现
37
+ entries.forEach(function (e) {
38
+ var node = g.node(e.vs[0]);
39
+ e.fixorder = node.fixorder;
40
+ e.order = node.order;
41
+ });
42
+ var result = (0, sort_1.default)(entries, biasRight, usePrev);
43
+ if (bl) {
44
+ // @ts-ignore
45
+ result.vs = [bl, result.vs, br].flat();
46
+ if ((_a = g.predecessors(bl)) === null || _a === void 0 ? void 0 : _a.length) {
47
+ var blPred = g.node(((_b = g.predecessors(bl)) === null || _b === void 0 ? void 0 : _b[0]) || {});
48
+ var brPred = g.node(((_c = g.predecessors(br)) === null || _c === void 0 ? void 0 : _c[0]) || {});
49
+ if (!result.hasOwnProperty("barycenter")) {
50
+ result.barycenter = 0;
51
+ result.weight = 0;
52
+ }
53
+ result.barycenter = (result.barycenter * result.weight +
54
+ blPred.order + brPred.order) / (result.weight + 2);
55
+ result.weight += 2;
56
+ }
57
+ }
58
+ return result;
59
+ };
60
+ var expandSubgraphs = function (entries, subgraphs) {
61
+ entries.forEach(function (entry) {
62
+ var vss = entry.vs.map(function (v) {
63
+ if (subgraphs[v]) {
64
+ return subgraphs[v].vs;
65
+ }
66
+ return v;
67
+ });
68
+ entry.vs = vss.flat();
69
+ });
70
+ };
71
+ var mergeBarycenters = function (target, other) {
72
+ if (target.barycenter !== undefined) {
73
+ target.barycenter = (target.barycenter * target.weight +
74
+ other.barycenter * other.weight) /
75
+ (target.weight + other.weight);
76
+ target.weight += other.weight;
77
+ }
78
+ else {
79
+ target.barycenter = other.barycenter;
80
+ target.weight = other.weight;
81
+ }
82
+ };
83
+ exports.default = sortSubgraph;
84
+ //# sourceMappingURL=sort-subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-subgraph.js","sourceRoot":"","sources":["../../../../../src/layout/dagre/src/order/sort-subgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const sort: (entries: any, biasRight: any, usePrev: any) => any;
2
+ export default sort;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var util_1 = __importDefault(require("../util"));
7
+ var sort = function (entries, biasRight, usePrev) {
8
+ var parts = util_1.default.partition(entries, function (entry) {
9
+ // NOTE: 有fixorder的也可以排
10
+ return (entry.hasOwnProperty("fixorder") && !isNaN(entry.fixorder)) || entry.hasOwnProperty("barycenter");
11
+ });
12
+ var sortable = parts.lhs;
13
+ var unsortable = parts.rhs.sort(function (a, b) { return -a.i - (-b.i); });
14
+ var vs = [];
15
+ var sum = 0;
16
+ var weight = 0;
17
+ var vsIndex = 0;
18
+ sortable.sort(compareWithBias(!!biasRight, !!usePrev));
19
+ vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
20
+ sortable.forEach(function (entry) {
21
+ vsIndex += entry.vs.length;
22
+ vs.push(entry.vs);
23
+ sum += entry.barycenter * entry.weight;
24
+ weight += entry.weight;
25
+ vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
26
+ });
27
+ var result = { vs: vs.flat() };
28
+ if (weight) {
29
+ result.barycenter = sum / weight;
30
+ result.weight = weight;
31
+ }
32
+ return result;
33
+ };
34
+ var consumeUnsortable = function (vs, unsortable, index) {
35
+ var iindex = index;
36
+ var last;
37
+ while (unsortable.length && (last = unsortable[unsortable.length - 1]).i <= iindex) {
38
+ unsortable.pop();
39
+ vs.push(last.vs);
40
+ iindex++;
41
+ }
42
+ return iindex;
43
+ };
44
+ /**
45
+ * 配置是否考虑使用之前的布局结果
46
+ */
47
+ var compareWithBias = function (bias, usePrev) {
48
+ return function (entryV, entryW) {
49
+ // 排序的时候先判断fixorder,不行再判断重心
50
+ if (entryV.fixorder !== undefined && entryW.fixorder !== undefined) {
51
+ return entryV.fixorder - entryW.fixorder;
52
+ }
53
+ if (entryV.barycenter < entryW.barycenter) {
54
+ return -1;
55
+ }
56
+ if (entryV.barycenter > entryW.barycenter) {
57
+ return 1;
58
+ }
59
+ // 重心相同,考虑之前排好的顺序
60
+ if (usePrev && entryV.order !== undefined && entryW.order !== undefined) {
61
+ if (entryV.order < entryW.order) {
62
+ return -1;
63
+ }
64
+ if (entryV.order > entryW.order) {
65
+ return 1;
66
+ }
67
+ }
68
+ return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;
69
+ };
70
+ };
71
+ exports.default = sort;
72
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../src/layout/dagre/src/order/sort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { graphlib } from '../graphlib';
2
+ declare type Graph = graphlib.Graph;
3
+ declare const parentDummyChains: (g: Graph) => void;
4
+ export default parentDummyChains;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var parentDummyChains = function (g) {
4
+ var _a;
5
+ var postorderNums = postorder(g);
6
+ (_a = g.graph().dummyChains) === null || _a === void 0 ? void 0 : _a.forEach(function (v) {
7
+ var _a, _b;
8
+ var node = g.node(v);
9
+ var edgeObj = node.edgeObj;
10
+ if (!edgeObj)
11
+ return;
12
+ var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
13
+ var path = pathData.path;
14
+ var lca = pathData.lca;
15
+ var pathIdx = 0;
16
+ var pathV = path[pathIdx];
17
+ var ascending = true;
18
+ while (v !== edgeObj.w) {
19
+ node = g.node(v);
20
+ if (ascending) {
21
+ while ((pathV = path[pathIdx]) !== lca &&
22
+ g.node(pathV).maxRank < node.rank) {
23
+ pathIdx++;
24
+ }
25
+ if (pathV === lca) {
26
+ ascending = false;
27
+ }
28
+ }
29
+ if (!ascending) {
30
+ while (pathIdx < path.length - 1 &&
31
+ ((_a = g.node(pathV = path[pathIdx + 1])) === null || _a === void 0 ? void 0 : _a.minRank) <= node.rank) {
32
+ pathIdx++;
33
+ }
34
+ pathV = path[pathIdx];
35
+ }
36
+ g.setParent(v, pathV);
37
+ // tslint:disable-next-line
38
+ v = (_b = g.successors(v)) === null || _b === void 0 ? void 0 : _b[0];
39
+ }
40
+ });
41
+ };
42
+ // Find a path from v to w through the lowest common ancestor (LCA). Return the
43
+ // full path and the LCA.
44
+ var findPath = function (g, postorderNums, v, w) {
45
+ var vPath = [];
46
+ var wPath = [];
47
+ var low = Math.min(postorderNums[v].low, postorderNums[w].low);
48
+ var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
49
+ var parent;
50
+ var lca;
51
+ // Traverse up from v to find the LCA
52
+ parent = v;
53
+ do {
54
+ parent = g.parent(parent);
55
+ vPath.push(parent);
56
+ } while (parent &&
57
+ (postorderNums[parent].low > low || lim > postorderNums[parent].lim));
58
+ lca = parent;
59
+ // Traverse from w to LCA
60
+ parent = w;
61
+ while ((parent = g.parent(parent)) !== lca) {
62
+ wPath.push(parent);
63
+ }
64
+ return { lca: lca, path: vPath.concat(wPath.reverse()) };
65
+ };
66
+ var postorder = function (g) {
67
+ var _a;
68
+ var result = {};
69
+ var lim = 0;
70
+ var dfs = function (v) {
71
+ var _a;
72
+ var low = lim;
73
+ (_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.forEach(dfs);
74
+ result[v] = { low: low, lim: lim++ };
75
+ };
76
+ (_a = g.children()) === null || _a === void 0 ? void 0 : _a.forEach(dfs);
77
+ return result;
78
+ };
79
+ exports.default = parentDummyChains;
80
+ //# sourceMappingURL=parent-dummy-chains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parent-dummy-chains.js","sourceRoot":"","sources":["../../../../src/layout/dagre/src/parent-dummy-chains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { graphlib as IGraphLib } from '../../graphlib';
2
+ declare type IGraph = IGraphLib.Graph;
3
+ declare const findType1Conflicts: (g: IGraph, layering?: any) => {};
4
+ declare const findType2Conflicts: (g: IGraph, layering?: any) => {};
5
+ declare const addConflict: (conflicts: any, v: number, w: number) => void;
6
+ declare const hasConflict: (conflicts: any, v: number, w: number) => any;
7
+ declare const verticalAlignment: (g: IGraph, layering: any, conflicts: any, neighborFn: (v: string) => unknown) => {
8
+ root: any;
9
+ align: any;
10
+ };
11
+ declare const horizontalCompaction: (g: IGraph, layering: any, root: string, align: string[], reverseSep: boolean) => any;
12
+ declare const findSmallestWidthAlignment: (g: IGraph, xss: any) => undefined;
13
+ declare function alignCoordinates(xss: any, alignTo: any): void;
14
+ declare const balance: (xss: any, align: string) => any;
15
+ declare const positionX: (g: IGraph) => any;
16
+ export { positionX, findType1Conflicts, findType2Conflicts, addConflict, hasConflict, verticalAlignment, horizontalCompaction, alignCoordinates, findSmallestWidthAlignment, balance };
17
+ declare const _default: {
18
+ positionX: (g: IGraph) => any;
19
+ findType1Conflicts: (g: IGraph, layering?: any) => {};
20
+ findType2Conflicts: (g: IGraph, layering?: any) => {};
21
+ addConflict: (conflicts: any, v: number, w: number) => void;
22
+ hasConflict: (conflicts: any, v: number, w: number) => any;
23
+ verticalAlignment: (g: IGraph, layering: any, conflicts: any, neighborFn: (v: string) => unknown) => {
24
+ root: any;
25
+ align: any;
26
+ };
27
+ horizontalCompaction: (g: IGraph, layering: any, root: string, align: string[], reverseSep: boolean) => any;
28
+ alignCoordinates: typeof alignCoordinates;
29
+ findSmallestWidthAlignment: (g: IGraph, xss: any) => undefined;
30
+ balance: (xss: any, align: string) => any;
31
+ };
32
+ export default _default;