@antv/layout 1.2.13 → 1.2.14-beta.1

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 (232) hide show
  1. package/dist/85db61ddc757dae66e04.worker.js +2 -0
  2. package/dist/85db61ddc757dae66e04.worker.js.map +1 -0
  3. package/dist/index.min.js +1 -1
  4. package/dist/index.min.js.map +1 -1
  5. package/lib/{dagre → antv-dagre}/acyclic.d.ts +1 -1
  6. package/lib/antv-dagre/acyclic.js +61 -0
  7. package/lib/antv-dagre/acyclic.js.map +1 -0
  8. package/lib/{dagre → antv-dagre}/add-border-segments.js +12 -12
  9. package/lib/antv-dagre/add-border-segments.js.map +1 -0
  10. package/lib/{dagre → antv-dagre}/coordinate-system.d.ts +2 -1
  11. package/lib/antv-dagre/coordinate-system.js +65 -0
  12. package/lib/antv-dagre/coordinate-system.js.map +1 -0
  13. package/lib/{dagre → antv-dagre}/data/list.d.ts +1 -1
  14. package/lib/{dagre → antv-dagre}/data/list.js +20 -22
  15. package/lib/antv-dagre/data/list.js.map +1 -0
  16. package/lib/{dagre → antv-dagre}/greedy-fas.d.ts +2 -2
  17. package/lib/antv-dagre/greedy-fas.js +136 -0
  18. package/lib/antv-dagre/greedy-fas.js.map +1 -0
  19. package/lib/{dagre → antv-dagre}/layout.d.ts +2 -1
  20. package/lib/{dagre → antv-dagre}/layout.js +125 -127
  21. package/lib/antv-dagre/layout.js.map +1 -0
  22. package/lib/{dagre → antv-dagre}/nesting-graph.js +36 -37
  23. package/lib/antv-dagre/nesting-graph.js.map +1 -0
  24. package/lib/{dagre → antv-dagre}/normalize.d.ts +2 -2
  25. package/lib/{dagre → antv-dagre}/normalize.js +24 -24
  26. package/lib/antv-dagre/normalize.js.map +1 -0
  27. package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.js +9 -9
  28. package/lib/antv-dagre/order/add-subgraph-constraints.js.map +1 -0
  29. package/lib/{dagre → antv-dagre}/order/barycenter.d.ts +2 -2
  30. package/lib/{dagre → antv-dagre}/order/barycenter.js +8 -8
  31. package/lib/antv-dagre/order/barycenter.js.map +1 -0
  32. package/lib/{dagre → antv-dagre}/order/build-layer-graph.js +18 -22
  33. package/lib/antv-dagre/order/build-layer-graph.js.map +1 -0
  34. package/lib/antv-dagre/order/cross-count.d.ts +3 -0
  35. package/lib/{dagre → antv-dagre}/order/cross-count.js +17 -17
  36. package/lib/antv-dagre/order/cross-count.js.map +1 -0
  37. package/lib/{dagre → antv-dagre}/order/index.d.ts +1 -1
  38. package/lib/{dagre → antv-dagre}/order/index.js +35 -35
  39. package/lib/antv-dagre/order/index.js.map +1 -0
  40. package/lib/{dagre → antv-dagre}/order/init-data-order.js +8 -9
  41. package/lib/antv-dagre/order/init-data-order.js.map +1 -0
  42. package/lib/antv-dagre/order/init-order.js +47 -0
  43. package/lib/antv-dagre/order/init-order.js.map +1 -0
  44. package/lib/{dagre → antv-dagre}/order/resolve-conflicts.d.ts +3 -3
  45. package/lib/{dagre → antv-dagre}/order/resolve-conflicts.js +32 -35
  46. package/lib/antv-dagre/order/resolve-conflicts.js.map +1 -0
  47. package/lib/{dagre → antv-dagre}/order/sort-subgraph.js +20 -20
  48. package/lib/antv-dagre/order/sort-subgraph.js.map +1 -0
  49. package/lib/{dagre → antv-dagre}/order/sort.d.ts +2 -2
  50. package/lib/{dagre → antv-dagre}/order/sort.js +19 -19
  51. package/lib/antv-dagre/order/sort.js.map +1 -0
  52. package/lib/{dagre → antv-dagre}/parent-dummy-chains.js +28 -28
  53. package/lib/antv-dagre/parent-dummy-chains.js.map +1 -0
  54. package/lib/{dagre → antv-dagre}/position/bk.d.ts +5 -4
  55. package/lib/{dagre → antv-dagre}/position/bk.js +140 -143
  56. package/lib/antv-dagre/position/bk.js.map +1 -0
  57. package/lib/{dagre → antv-dagre}/position/index.d.ts +2 -1
  58. package/lib/antv-dagre/position/index.js +51 -0
  59. package/lib/antv-dagre/position/index.js.map +1 -0
  60. package/lib/{dagre → antv-dagre}/rank/feasible-tree.d.ts +2 -2
  61. package/lib/{dagre → antv-dagre}/rank/feasible-tree.js +32 -32
  62. package/lib/antv-dagre/rank/feasible-tree.js.map +1 -0
  63. package/lib/antv-dagre/rank/index.d.ts +2 -0
  64. package/lib/{dagre → antv-dagre}/rank/index.js +10 -10
  65. package/lib/antv-dagre/rank/index.js.map +1 -0
  66. package/lib/{dagre → antv-dagre}/rank/network-simplex.d.ts +2 -2
  67. package/lib/{dagre → antv-dagre}/rank/network-simplex.js +70 -71
  68. package/lib/antv-dagre/rank/network-simplex.js.map +1 -0
  69. package/lib/{dagre → antv-dagre}/rank/util.d.ts +2 -2
  70. package/lib/{dagre → antv-dagre}/rank/util.js +31 -31
  71. package/lib/antv-dagre/rank/util.js.map +1 -0
  72. package/lib/antv-dagre/types.d.ts +2 -0
  73. package/lib/antv-dagre/types.js +2 -0
  74. package/lib/antv-dagre/types.js.map +1 -0
  75. package/lib/{dagre → antv-dagre}/util.d.ts +1 -1
  76. package/lib/{dagre → antv-dagre}/util.js +90 -98
  77. package/lib/antv-dagre/util.js.map +1 -0
  78. package/lib/antv-dagre.d.ts +50 -0
  79. package/lib/antv-dagre.js +538 -0
  80. package/lib/antv-dagre.js.map +1 -0
  81. package/lib/bundle-entry.d.ts +2 -18
  82. package/lib/bundle-entry.js +2 -18
  83. package/lib/bundle-entry.js.map +1 -1
  84. package/lib/bundle-supervisor.d.ts +4 -22
  85. package/lib/bundle-supervisor.js +54 -53
  86. package/lib/bundle-supervisor.js.map +1 -1
  87. package/lib/bundle-worker.d.ts +1 -1
  88. package/lib/bundle-worker.js +31 -33
  89. package/lib/bundle-worker.js.map +1 -1
  90. package/lib/circular.d.ts +1 -1
  91. package/lib/circular.js +124 -140
  92. package/lib/circular.js.map +1 -1
  93. package/lib/comboCombined.d.ts +1 -1
  94. package/lib/comboCombined.js +254 -284
  95. package/lib/comboCombined.js.map +1 -1
  96. package/lib/concentric.d.ts +1 -1
  97. package/lib/concentric.js +166 -176
  98. package/lib/concentric.js.map +1 -1
  99. package/lib/d3Force/forceInBox.js +75 -77
  100. package/lib/d3Force/forceInBox.js.map +1 -1
  101. package/lib/d3Force/index.d.ts +2 -2
  102. package/lib/d3Force/index.js +196 -222
  103. package/lib/d3Force/index.js.map +1 -1
  104. package/lib/dagre.d.ts +13 -24
  105. package/lib/dagre.js +57 -542
  106. package/lib/dagre.js.map +1 -1
  107. package/lib/exports.d.ts +17 -0
  108. package/lib/exports.js +17 -0
  109. package/lib/exports.js.map +1 -0
  110. package/lib/force/forceNBody.js +42 -45
  111. package/lib/force/forceNBody.js.map +1 -1
  112. package/lib/force/index.d.ts +1 -1
  113. package/lib/force/index.js +282 -309
  114. package/lib/force/index.js.map +1 -1
  115. package/lib/force/types.d.ts +5 -5
  116. package/lib/forceAtlas2/body.d.ts +1 -1
  117. package/lib/forceAtlas2/body.js +29 -31
  118. package/lib/forceAtlas2/body.js.map +1 -1
  119. package/lib/forceAtlas2/index.d.ts +1 -1
  120. package/lib/forceAtlas2/index.js +206 -218
  121. package/lib/forceAtlas2/index.js.map +1 -1
  122. package/lib/forceAtlas2/quad.d.ts +2 -2
  123. package/lib/forceAtlas2/quad.js +40 -42
  124. package/lib/forceAtlas2/quad.js.map +1 -1
  125. package/lib/forceAtlas2/quadTree.js +16 -17
  126. package/lib/forceAtlas2/quadTree.js.map +1 -1
  127. package/lib/fruchterman.d.ts +1 -1
  128. package/lib/fruchterman.js +185 -205
  129. package/lib/fruchterman.js.map +1 -1
  130. package/lib/grid.d.ts +1 -1
  131. package/lib/grid.js +197 -207
  132. package/lib/grid.js.map +1 -1
  133. package/lib/index.d.ts +1 -15
  134. package/lib/index.js +1 -15
  135. package/lib/index.js.map +1 -1
  136. package/lib/mds.d.ts +1 -1
  137. package/lib/mds.js +68 -78
  138. package/lib/mds.js.map +1 -1
  139. package/lib/radial/index.d.ts +1 -1
  140. package/lib/radial/index.js +177 -184
  141. package/lib/radial/index.js.map +1 -1
  142. package/lib/radial/mds.d.ts +1 -1
  143. package/lib/radial/mds.js +15 -13
  144. package/lib/radial/mds.js.map +1 -1
  145. package/lib/radial/radial-nonoverlap-force.d.ts +2 -2
  146. package/lib/radial/radial-nonoverlap-force.js +36 -37
  147. package/lib/radial/radial-nonoverlap-force.js.map +1 -1
  148. package/lib/random.d.ts +1 -1
  149. package/lib/random.js +53 -66
  150. package/lib/random.js.map +1 -1
  151. package/lib/registry.d.ts +2 -2
  152. package/lib/registry.js +3 -1
  153. package/lib/registry.js.map +1 -1
  154. package/lib/supervisor.d.ts +2 -3
  155. package/lib/supervisor.js +57 -56
  156. package/lib/supervisor.js.map +1 -1
  157. package/lib/types.d.ts +20 -75
  158. package/lib/types.js.map +1 -1
  159. package/lib/util/array.js +1 -1
  160. package/lib/util/array.js.map +1 -1
  161. package/lib/util/common.d.ts +1 -1
  162. package/lib/util/common.js +7 -8
  163. package/lib/util/common.js.map +1 -1
  164. package/lib/util/function.js +23 -25
  165. package/lib/util/function.js.map +1 -1
  166. package/lib/util/index.d.ts +0 -2
  167. package/lib/util/index.js +0 -2
  168. package/lib/util/index.js.map +1 -1
  169. package/lib/util/math.d.ts +1 -26
  170. package/lib/util/math.js +41 -149
  171. package/lib/util/math.js.map +1 -1
  172. package/lib/util/object.d.ts +1 -1
  173. package/lib/util/object.js +13 -13
  174. package/lib/util/object.js.map +1 -1
  175. package/lib/util/size.d.ts +3 -0
  176. package/lib/util/size.js +12 -0
  177. package/lib/util/size.js.map +1 -0
  178. package/lib/worker.js +30 -31
  179. package/lib/worker.js.map +1 -1
  180. package/package.json +9 -5
  181. package/dist/aa1bb0ccc06b11cf79c1.worker.js +0 -2
  182. package/dist/aa1bb0ccc06b11cf79c1.worker.js.map +0 -1
  183. package/lib/dagre/acyclic.js +0 -62
  184. package/lib/dagre/acyclic.js.map +0 -1
  185. package/lib/dagre/add-border-segments.js.map +0 -1
  186. package/lib/dagre/coordinate-system.js +0 -65
  187. package/lib/dagre/coordinate-system.js.map +0 -1
  188. package/lib/dagre/data/list.js.map +0 -1
  189. package/lib/dagre/greedy-fas.js +0 -147
  190. package/lib/dagre/greedy-fas.js.map +0 -1
  191. package/lib/dagre/layout.js.map +0 -1
  192. package/lib/dagre/nesting-graph.js.map +0 -1
  193. package/lib/dagre/normalize.js.map +0 -1
  194. package/lib/dagre/order/add-subgraph-constraints.js.map +0 -1
  195. package/lib/dagre/order/barycenter.js.map +0 -1
  196. package/lib/dagre/order/build-layer-graph.js.map +0 -1
  197. package/lib/dagre/order/cross-count.d.ts +0 -3
  198. package/lib/dagre/order/cross-count.js.map +0 -1
  199. package/lib/dagre/order/index.js.map +0 -1
  200. package/lib/dagre/order/init-data-order.js.map +0 -1
  201. package/lib/dagre/order/init-order.js +0 -50
  202. package/lib/dagre/order/init-order.js.map +0 -1
  203. package/lib/dagre/order/resolve-conflicts.js.map +0 -1
  204. package/lib/dagre/order/sort-subgraph.js.map +0 -1
  205. package/lib/dagre/order/sort.js.map +0 -1
  206. package/lib/dagre/parent-dummy-chains.js.map +0 -1
  207. package/lib/dagre/position/bk.js.map +0 -1
  208. package/lib/dagre/position/index.js +0 -54
  209. package/lib/dagre/position/index.js.map +0 -1
  210. package/lib/dagre/rank/feasible-tree.js.map +0 -1
  211. package/lib/dagre/rank/index.d.ts +0 -2
  212. package/lib/dagre/rank/index.js.map +0 -1
  213. package/lib/dagre/rank/network-simplex.js.map +0 -1
  214. package/lib/dagre/rank/util.js.map +0 -1
  215. package/lib/dagre/util.js.map +0 -1
  216. package/lib/util/gpu.d.ts +0 -45
  217. package/lib/util/gpu.js +0 -214
  218. package/lib/util/gpu.js.map +0 -1
  219. package/lib/util/number.d.ts +0 -1
  220. package/lib/util/number.js +0 -5
  221. package/lib/util/number.js.map +0 -1
  222. package/lib/util/string.d.ts +0 -1
  223. package/lib/util/string.js +0 -15
  224. package/lib/util/string.js.map +0 -1
  225. /package/lib/{dagre → antv-dagre}/add-border-segments.d.ts +0 -0
  226. /package/lib/{dagre → antv-dagre}/nesting-graph.d.ts +0 -0
  227. /package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.d.ts +0 -0
  228. /package/lib/{dagre → antv-dagre}/order/build-layer-graph.d.ts +0 -0
  229. /package/lib/{dagre → antv-dagre}/order/init-data-order.d.ts +0 -0
  230. /package/lib/{dagre → antv-dagre}/order/init-order.d.ts +0 -0
  231. /package/lib/{dagre → antv-dagre}/order/sort-subgraph.d.ts +0 -0
  232. /package/lib/{dagre → antv-dagre}/parent-dummy-chains.d.ts +0 -0
@@ -1,35 +1,34 @@
1
- import { __assign } from "tslib";
2
1
  import { Graph } from '@antv/graphlib';
3
2
  import { isNil } from '@antv/util';
4
3
  import { run as runAcyclic, undo as undoAcyclic } from './acyclic';
5
- import { run as runNormalize, undo as undoNormalize } from './normalize';
6
- import { rank } from './rank';
7
- import { normalizeRanks, removeEmptyRanks, asNonCompoundGraph, addDummyNode, intersectRect, buildLayerMatrix, } from './util';
8
- import { parentDummyChains } from './parent-dummy-chains';
9
- import { run as runNestingGraph, cleanup as cleanupNestingGraph, } from './nesting-graph';
10
4
  import { addBorderSegments } from './add-border-segments';
11
5
  import { adjust as adjustCoordinateSystem, undo as undoCoordinateSystem, } from './coordinate-system';
6
+ import { cleanup as cleanupNestingGraph, run as runNestingGraph, } from './nesting-graph';
7
+ import { run as runNormalize, undo as undoNormalize } from './normalize';
12
8
  import { order } from './order';
13
- import { position } from './position';
14
9
  import { initDataOrder } from './order/init-data-order';
10
+ import { parentDummyChains } from './parent-dummy-chains';
11
+ import { position } from './position';
12
+ import { rank } from './rank';
13
+ import { addDummyNode, asNonCompoundGraph, buildLayerMatrix, intersectRect, normalizeRanks, removeEmptyRanks, } from './util';
15
14
  // const graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"];
16
15
  // const graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" };
17
16
  // const graphAttrs = ["acyclicer", "ranker", "rankdir", "align"];
18
- export var layout = function (g, options) {
19
- var edgeLabelSpace = options.edgeLabelSpace, keepNodeOrder = options.keepNodeOrder, prevGraph = options.prevGraph, rankdir = options.rankdir, ranksep = options.ranksep;
17
+ export const layout = (g, options) => {
18
+ const { edgeLabelSpace, keepNodeOrder, prevGraph, rankdir, ranksep } = options;
20
19
  // 如果在原图基础上修改,继承原图的order结果
21
20
  if (!keepNodeOrder && prevGraph) {
22
21
  inheritOrder(g, prevGraph);
23
22
  }
24
- var layoutGraph = buildLayoutGraph(g);
23
+ const layoutGraph = buildLayoutGraph(g);
25
24
  // 控制是否为边的label留位置(这会影响是否在边中间添加dummy node)
26
25
  if (!!edgeLabelSpace) {
27
26
  options.ranksep = makeSpaceForEdgeLabels(layoutGraph, {
28
- rankdir: rankdir,
29
- ranksep: ranksep,
27
+ rankdir,
28
+ ranksep,
30
29
  });
31
30
  }
32
- var dimension;
31
+ let dimension;
33
32
  // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级
34
33
  try {
35
34
  dimension = runLayout(layoutGraph, options);
@@ -44,11 +43,11 @@ export var layout = function (g, options) {
44
43
  updateInputGraph(g, layoutGraph);
45
44
  return dimension;
46
45
  };
47
- var runLayout = function (g, options) {
48
- var acyclicer = options.acyclicer, ranker = options.ranker, _a = options.rankdir, rankdir = _a === void 0 ? 'tb' : _a, nodeOrder = options.nodeOrder, keepNodeOrder = options.keepNodeOrder, align = options.align, _b = options.nodesep, nodesep = _b === void 0 ? 50 : _b, _c = options.edgesep, edgesep = _c === void 0 ? 20 : _c, _d = options.ranksep, ranksep = _d === void 0 ? 50 : _d;
46
+ const runLayout = (g, options) => {
47
+ const { acyclicer, ranker, rankdir = 'tb', nodeOrder, keepNodeOrder, align, nodesep = 50, edgesep = 20, ranksep = 50, } = options;
49
48
  removeSelfEdges(g);
50
49
  runAcyclic(g, acyclicer);
51
- var _e = runNestingGraph(g), nestingRoot = _e.nestingRoot, nodeRankFactor = _e.nodeRankFactor;
50
+ const { nestingRoot, nodeRankFactor } = runNestingGraph(g);
52
51
  rank(asNonCompoundGraph(g), ranker);
53
52
  injectEdgeLabelProxies(g);
54
53
  removeEmptyRanks(g, nodeRankFactor);
@@ -56,7 +55,7 @@ var runLayout = function (g, options) {
56
55
  normalizeRanks(g);
57
56
  assignRankMinMax(g);
58
57
  removeEdgeLabelProxies(g);
59
- var dummyChains = [];
58
+ const dummyChains = [];
60
59
  runNormalize(g, dummyChains);
61
60
  parentDummyChains(g, dummyChains);
62
61
  addBorderSegments(g);
@@ -67,31 +66,31 @@ var runLayout = function (g, options) {
67
66
  insertSelfEdges(g);
68
67
  adjustCoordinateSystem(g, rankdir);
69
68
  position(g, {
70
- align: align,
71
- nodesep: nodesep,
72
- edgesep: edgesep,
73
- ranksep: ranksep,
69
+ align,
70
+ nodesep,
71
+ edgesep,
72
+ ranksep,
74
73
  });
75
74
  positionSelfEdges(g);
76
75
  removeBorderNodes(g);
77
76
  undoNormalize(g, dummyChains);
78
77
  fixupEdgeLabelCoords(g);
79
78
  undoCoordinateSystem(g, rankdir);
80
- var _f = translateGraph(g), width = _f.width, height = _f.height;
79
+ const { width, height } = translateGraph(g);
81
80
  assignNodeIntersects(g);
82
81
  reversePointsForReversedEdges(g);
83
82
  undoAcyclic(g);
84
- return { width: width, height: height };
83
+ return { width, height };
85
84
  };
86
85
  /**
87
86
  * 继承上一个布局中的order,防止翻转
88
87
  * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变
89
88
  */
90
- var inheritOrder = function (currG, prevG) {
91
- currG.getAllNodes().forEach(function (n) {
92
- var node = currG.getNode(n.id);
89
+ const inheritOrder = (currG, prevG) => {
90
+ currG.getAllNodes().forEach((n) => {
91
+ const node = currG.getNode(n.id);
93
92
  if (prevG.hasNode(n.id)) {
94
- var prevNode = prevG.getNode(n.id);
93
+ const prevNode = prevG.getNode(n.id);
95
94
  node.data.fixorder = prevNode.data._order;
96
95
  delete prevNode.data._order;
97
96
  }
@@ -106,12 +105,12 @@ var inheritOrder = function (currG, prevG) {
106
105
  * to the input graph, so it serves as a good place to determine what
107
106
  * attributes can influence layout.
108
107
  */
109
- var updateInputGraph = function (inputGraph, layoutGraph) {
110
- inputGraph.getAllNodes().forEach(function (v) {
108
+ const updateInputGraph = (inputGraph, layoutGraph) => {
109
+ inputGraph.getAllNodes().forEach((v) => {
111
110
  var _a;
112
- var inputLabel = inputGraph.getNode(v.id);
111
+ const inputLabel = inputGraph.getNode(v.id);
113
112
  if (inputLabel) {
114
- var layoutLabel = layoutGraph.getNode(v.id);
113
+ const layoutLabel = layoutGraph.getNode(v.id);
115
114
  inputLabel.data.x = layoutLabel.data.x;
116
115
  inputLabel.data.y = layoutLabel.data.y;
117
116
  inputLabel.data._order = layoutLabel.data.order;
@@ -122,9 +121,9 @@ var updateInputGraph = function (inputGraph, layoutGraph) {
122
121
  }
123
122
  }
124
123
  });
125
- inputGraph.getAllEdges().forEach(function (e) {
126
- var inputLabel = inputGraph.getEdge(e.id);
127
- var layoutLabel = layoutGraph.getEdge(e.id);
124
+ inputGraph.getAllEdges().forEach((e) => {
125
+ const inputLabel = inputGraph.getEdge(e.id);
126
+ const layoutLabel = layoutGraph.getEdge(e.id);
128
127
  inputLabel.data.points = layoutLabel ? layoutLabel.data.points : [];
129
128
  if (layoutLabel && layoutLabel.data.hasOwnProperty('x')) {
130
129
  inputLabel.data.x = layoutLabel.data.x;
@@ -134,10 +133,10 @@ var updateInputGraph = function (inputGraph, layoutGraph) {
134
133
  // inputGraph.graph().width = layoutGraph.graph().width;
135
134
  // inputGraph.graph().height = layoutGraph.graph().height;
136
135
  };
137
- var nodeNumAttrs = ['width', 'height', 'layer', 'fixorder']; // 需要传入layer, fixOrder作为参数参考
138
- var nodeDefaults = { width: 0, height: 0 };
139
- var edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];
140
- var edgeDefaults = {
136
+ const nodeNumAttrs = ['width', 'height', 'layer', 'fixorder']; // 需要传入layer, fixOrder作为参数参考
137
+ const nodeDefaults = { width: 0, height: 0 };
138
+ const edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];
139
+ const edgeDefaults = {
141
140
  minlen: 1,
142
141
  weight: 1,
143
142
  width: 0,
@@ -145,39 +144,39 @@ var edgeDefaults = {
145
144
  labeloffset: 10,
146
145
  labelpos: 'r',
147
146
  };
148
- var edgeAttrs = ['labelpos'];
147
+ const edgeAttrs = ['labelpos'];
149
148
  /*
150
149
  * Constructs a new graph from the input graph, which can be used for layout.
151
150
  * This process copies only whitelisted attributes from the input graph to the
152
151
  * layout graph. Thus this function serves as a good place to determine what
153
152
  * attributes can influence layout.
154
153
  */
155
- var buildLayoutGraph = function (inputGraph) {
156
- var g = new Graph({ tree: [] });
157
- inputGraph.getAllNodes().forEach(function (v) {
158
- var node = canonicalize(inputGraph.getNode(v.id).data);
159
- var defaultNode = __assign(__assign({}, nodeDefaults), node);
160
- var defaultAttrs = selectNumberAttrs(defaultNode, nodeNumAttrs);
154
+ const buildLayoutGraph = (inputGraph) => {
155
+ const g = new Graph({ tree: [] });
156
+ inputGraph.getAllNodes().forEach((v) => {
157
+ const node = canonicalize(inputGraph.getNode(v.id).data);
158
+ const defaultNode = Object.assign(Object.assign({}, nodeDefaults), node);
159
+ const defaultAttrs = selectNumberAttrs(defaultNode, nodeNumAttrs);
161
160
  if (!g.hasNode(v.id)) {
162
161
  g.addNode({
163
162
  id: v.id,
164
- data: __assign({}, defaultAttrs),
163
+ data: Object.assign({}, defaultAttrs),
165
164
  });
166
165
  }
167
- var parent = inputGraph.hasTreeStructure('combo')
166
+ const parent = inputGraph.hasTreeStructure('combo')
168
167
  ? inputGraph.getParent(v.id, 'combo')
169
168
  : inputGraph.getParent(v.id);
170
169
  if (!isNil(parent)) {
171
170
  if (!g.hasNode(parent.id)) {
172
- g.addNode(__assign({}, parent));
171
+ g.addNode(Object.assign({}, parent));
173
172
  }
174
173
  g.setParent(v.id, parent.id);
175
174
  }
176
175
  });
177
- inputGraph.getAllEdges().forEach(function (e) {
178
- var edge = canonicalize(inputGraph.getEdge(e.id).data);
179
- var pickedProperties = {};
180
- edgeAttrs === null || edgeAttrs === void 0 ? void 0 : edgeAttrs.forEach(function (key) {
176
+ inputGraph.getAllEdges().forEach((e) => {
177
+ const edge = canonicalize(inputGraph.getEdge(e.id).data);
178
+ const pickedProperties = {};
179
+ edgeAttrs === null || edgeAttrs === void 0 ? void 0 : edgeAttrs.forEach((key) => {
181
180
  if (edge[key] !== undefined)
182
181
  pickedProperties[key] = edge[key];
183
182
  });
@@ -198,15 +197,15 @@ var buildLayoutGraph = function (inputGraph) {
198
197
  * We also add some minimal padding to the width to push the label for the edge
199
198
  * away from the edge itself a bit.
200
199
  */
201
- var makeSpaceForEdgeLabels = function (g, options) {
202
- var _a = options.ranksep, ranksep = _a === void 0 ? 0 : _a, rankdir = options.rankdir;
203
- g.getAllNodes().forEach(function (node) {
200
+ const makeSpaceForEdgeLabels = (g, options) => {
201
+ const { ranksep = 0, rankdir } = options;
202
+ g.getAllNodes().forEach((node) => {
204
203
  if (!isNaN(node.data.layer)) {
205
204
  if (!node.data.layer)
206
205
  node.data.layer = 0;
207
206
  }
208
207
  });
209
- g.getAllEdges().forEach(function (edge) {
208
+ g.getAllEdges().forEach((edge) => {
210
209
  var _a;
211
210
  edge.data.minlen *= 2;
212
211
  if (((_a = edge.data.labelpos) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'c') {
@@ -226,22 +225,22 @@ var makeSpaceForEdgeLabels = function (g, options) {
226
225
  * so that we can safely remove empty ranks while preserving balance for the
227
226
  * label's position.
228
227
  */
229
- var injectEdgeLabelProxies = function (g) {
230
- g.getAllEdges().forEach(function (e) {
228
+ const injectEdgeLabelProxies = (g) => {
229
+ g.getAllEdges().forEach((e) => {
231
230
  if (e.data.width && e.data.height) {
232
- var v = g.getNode(e.source);
233
- var w = g.getNode(e.target);
234
- var label = {
235
- e: e,
231
+ const v = g.getNode(e.source);
232
+ const w = g.getNode(e.target);
233
+ const label = {
234
+ e,
236
235
  rank: (w.data.rank - v.data.rank) / 2 + v.data.rank,
237
236
  };
238
237
  addDummyNode(g, 'edge-proxy', label, '_ep');
239
238
  }
240
239
  });
241
240
  };
242
- var assignRankMinMax = function (g) {
243
- var maxRank = 0;
244
- g.getAllNodes().forEach(function (node) {
241
+ const assignRankMinMax = (g) => {
242
+ let maxRank = 0;
243
+ g.getAllNodes().forEach((node) => {
245
244
  var _a, _b;
246
245
  if (node.data.borderTop) {
247
246
  node.data.minRank = (_a = g.getNode(node.data.borderTop)) === null || _a === void 0 ? void 0 : _a.data.rank;
@@ -251,27 +250,27 @@ var assignRankMinMax = function (g) {
251
250
  });
252
251
  return maxRank;
253
252
  };
254
- var removeEdgeLabelProxies = function (g) {
255
- g.getAllNodes().forEach(function (node) {
253
+ const removeEdgeLabelProxies = (g) => {
254
+ g.getAllNodes().forEach((node) => {
256
255
  if (node.data.dummy === 'edge-proxy') {
257
256
  g.getEdge(node.data.e.id).data.labelRank = node.data.rank;
258
257
  g.removeNode(node.id);
259
258
  }
260
259
  });
261
260
  };
262
- var translateGraph = function (g, options) {
263
- var minX;
264
- var maxX = 0;
265
- var minY;
266
- var maxY = 0;
267
- var _a = options || {}, _b = _a.marginx, marginX = _b === void 0 ? 0 : _b, _c = _a.marginy, marginY = _c === void 0 ? 0 : _c;
268
- var getExtremes = function (attrs) {
261
+ const translateGraph = (g, options) => {
262
+ let minX;
263
+ let maxX = 0;
264
+ let minY;
265
+ let maxY = 0;
266
+ const { marginx: marginX = 0, marginy: marginY = 0 } = options || {};
267
+ const getExtremes = (attrs) => {
269
268
  if (!attrs.data)
270
269
  return;
271
- var x = attrs.data.x;
272
- var y = attrs.data.y;
273
- var w = attrs.data.width;
274
- var h = attrs.data.height;
270
+ const x = attrs.data.x;
271
+ const y = attrs.data.y;
272
+ const w = attrs.data.width;
273
+ const h = attrs.data.height;
275
274
  if (!isNaN(x) && !isNaN(w)) {
276
275
  if (minX === undefined) {
277
276
  minX = x - w / 2;
@@ -287,23 +286,23 @@ var translateGraph = function (g, options) {
287
286
  maxY = Math.max(maxY, y + h / 2);
288
287
  }
289
288
  };
290
- g.getAllNodes().forEach(function (v) {
289
+ g.getAllNodes().forEach((v) => {
291
290
  getExtremes(v);
292
291
  });
293
- g.getAllEdges().forEach(function (e) {
292
+ g.getAllEdges().forEach((e) => {
294
293
  if (e === null || e === void 0 ? void 0 : e.data.hasOwnProperty('x')) {
295
294
  getExtremes(e);
296
295
  }
297
296
  });
298
297
  minX -= marginX;
299
298
  minY -= marginY;
300
- g.getAllNodes().forEach(function (node) {
299
+ g.getAllNodes().forEach((node) => {
301
300
  node.data.x -= minX;
302
301
  node.data.y -= minY;
303
302
  });
304
- g.getAllEdges().forEach(function (edge) {
303
+ g.getAllEdges().forEach((edge) => {
305
304
  var _a;
306
- (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach(function (p) {
305
+ (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach((p) => {
307
306
  p.x -= minX;
308
307
  p.y -= minY;
309
308
  });
@@ -319,12 +318,12 @@ var translateGraph = function (g, options) {
319
318
  height: maxY - minY + marginY,
320
319
  };
321
320
  };
322
- var assignNodeIntersects = function (g) {
323
- g.getAllEdges().forEach(function (e) {
324
- var nodeV = g.getNode(e.source);
325
- var nodeW = g.getNode(e.target);
326
- var p1;
327
- var p2;
321
+ const assignNodeIntersects = (g) => {
322
+ g.getAllEdges().forEach((e) => {
323
+ const nodeV = g.getNode(e.source);
324
+ const nodeW = g.getNode(e.target);
325
+ let p1;
326
+ let p2;
328
327
  if (!e.data.points) {
329
328
  e.data.points = [];
330
329
  p1 = { x: nodeW.data.x, y: nodeW.data.y };
@@ -338,8 +337,8 @@ var assignNodeIntersects = function (g) {
338
337
  e.data.points.push(intersectRect(nodeW.data, p2));
339
338
  });
340
339
  };
341
- var fixupEdgeLabelCoords = function (g) {
342
- g.getAllEdges().forEach(function (edge) {
340
+ const fixupEdgeLabelCoords = (g) => {
341
+ g.getAllEdges().forEach((edge) => {
343
342
  if (edge.data.hasOwnProperty('x')) {
344
343
  if (edge.data.labelpos === 'l' || edge.data.labelpos === 'r') {
345
344
  edge.data.width -= edge.data.labeloffset;
@@ -355,39 +354,39 @@ var fixupEdgeLabelCoords = function (g) {
355
354
  }
356
355
  });
357
356
  };
358
- var reversePointsForReversedEdges = function (g) {
359
- g.getAllEdges().forEach(function (edge) {
357
+ const reversePointsForReversedEdges = (g) => {
358
+ g.getAllEdges().forEach((edge) => {
360
359
  var _a;
361
360
  if (edge.data.reversed) {
362
361
  (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.reverse();
363
362
  }
364
363
  });
365
364
  };
366
- var removeBorderNodes = function (g) {
367
- g.getAllNodes().forEach(function (v) {
365
+ const removeBorderNodes = (g) => {
366
+ g.getAllNodes().forEach((v) => {
368
367
  var _a, _b, _c;
369
368
  if ((_a = g.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length) {
370
- var node = g.getNode(v.id);
371
- var t = g.getNode(node.data.borderTop);
372
- var b = g.getNode(node.data.borderBottom);
373
- var l = g.getNode(node.data.borderLeft[((_b = node.data.borderLeft) === null || _b === void 0 ? void 0 : _b.length) - 1]);
374
- var r = g.getNode(node.data.borderRight[((_c = node.data.borderRight) === null || _c === void 0 ? void 0 : _c.length) - 1]);
369
+ const node = g.getNode(v.id);
370
+ const t = g.getNode(node.data.borderTop);
371
+ const b = g.getNode(node.data.borderBottom);
372
+ const l = g.getNode(node.data.borderLeft[((_b = node.data.borderLeft) === null || _b === void 0 ? void 0 : _b.length) - 1]);
373
+ const r = g.getNode(node.data.borderRight[((_c = node.data.borderRight) === null || _c === void 0 ? void 0 : _c.length) - 1]);
375
374
  node.data.width = Math.abs((r === null || r === void 0 ? void 0 : r.data.x) - (l === null || l === void 0 ? void 0 : l.data.x)) || 10;
376
375
  node.data.height = Math.abs((b === null || b === void 0 ? void 0 : b.data.y) - (t === null || t === void 0 ? void 0 : t.data.y)) || 10;
377
376
  node.data.x = ((l === null || l === void 0 ? void 0 : l.data.x) || 0) + node.data.width / 2;
378
377
  node.data.y = ((t === null || t === void 0 ? void 0 : t.data.y) || 0) + node.data.height / 2;
379
378
  }
380
379
  });
381
- g.getAllNodes().forEach(function (n) {
380
+ g.getAllNodes().forEach((n) => {
382
381
  if (n.data.dummy === 'border') {
383
382
  g.removeNode(n.id);
384
383
  }
385
384
  });
386
385
  };
387
- var removeSelfEdges = function (g) {
388
- g.getAllEdges().forEach(function (e) {
386
+ const removeSelfEdges = (g) => {
387
+ g.getAllEdges().forEach((e) => {
389
388
  if (e.source === e.target) {
390
- var node = g.getNode(e.source);
389
+ const node = g.getNode(e.source);
391
390
  if (!node.data.selfEdges) {
392
391
  node.data.selfEdges = [];
393
392
  }
@@ -396,15 +395,15 @@ var removeSelfEdges = function (g) {
396
395
  }
397
396
  });
398
397
  };
399
- var insertSelfEdges = function (g) {
400
- var layers = buildLayerMatrix(g);
401
- layers === null || layers === void 0 ? void 0 : layers.forEach(function (layer) {
402
- var orderShift = 0;
403
- layer === null || layer === void 0 ? void 0 : layer.forEach(function (v, i) {
398
+ const insertSelfEdges = (g) => {
399
+ const layers = buildLayerMatrix(g);
400
+ layers === null || layers === void 0 ? void 0 : layers.forEach((layer) => {
401
+ let orderShift = 0;
402
+ layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {
404
403
  var _a;
405
- var node = g.getNode(v);
404
+ const node = g.getNode(v);
406
405
  node.data.order = i + orderShift;
407
- (_a = node.data.selfEdges) === null || _a === void 0 ? void 0 : _a.forEach(function (selfEdge) {
406
+ (_a = node.data.selfEdges) === null || _a === void 0 ? void 0 : _a.forEach((selfEdge) => {
408
407
  addDummyNode(g, 'selfedge', {
409
408
  width: selfEdge.data.width,
410
409
  height: selfEdge.data.height,
@@ -417,15 +416,15 @@ var insertSelfEdges = function (g) {
417
416
  });
418
417
  });
419
418
  };
420
- var positionSelfEdges = function (g) {
421
- g.getAllNodes().forEach(function (v) {
422
- var node = g.getNode(v.id);
419
+ const positionSelfEdges = (g) => {
420
+ g.getAllNodes().forEach((v) => {
421
+ const node = g.getNode(v.id);
423
422
  if (node.data.dummy === 'selfedge') {
424
- var selfNode = g.getNode(node.data.e.source);
425
- var x = selfNode.data.x + selfNode.data.width / 2;
426
- var y = selfNode.data.y;
427
- var dx = node.data.x - x;
428
- var dy = selfNode.data.height / 2;
423
+ const selfNode = g.getNode(node.data.e.source);
424
+ const x = selfNode.data.x + selfNode.data.width / 2;
425
+ const y = selfNode.data.y;
426
+ const dx = node.data.x - x;
427
+ const dy = selfNode.data.height / 2;
429
428
  if (g.hasEdge(node.data.e.id)) {
430
429
  g.updateEdgeData(node.data.e.id, node.data.e.data);
431
430
  }
@@ -441,7 +440,7 @@ var positionSelfEdges = function (g) {
441
440
  node.data.e.data.points = [
442
441
  { x: x + (2 * dx) / 3, y: y - dy },
443
442
  { x: x + (5 * dx) / 6, y: y - dy },
444
- { y: y, x: x + dx },
443
+ { y, x: x + dx },
445
444
  { x: x + (5 * dx) / 6, y: y + dy },
446
445
  { x: x + (2 * dx) / 3, y: y + dy },
447
446
  ];
@@ -450,19 +449,18 @@ var positionSelfEdges = function (g) {
450
449
  }
451
450
  });
452
451
  };
453
- var selectNumberAttrs = function (obj, attrs) {
454
- var pickedProperties = {};
455
- attrs === null || attrs === void 0 ? void 0 : attrs.forEach(function (key) {
452
+ const selectNumberAttrs = (obj, attrs) => {
453
+ const pickedProperties = {};
454
+ attrs === null || attrs === void 0 ? void 0 : attrs.forEach((key) => {
456
455
  if (obj[key] === undefined)
457
456
  return;
458
457
  pickedProperties[key] = +obj[key];
459
458
  });
460
459
  return pickedProperties;
461
460
  };
462
- var canonicalize = function (attrs) {
463
- if (attrs === void 0) { attrs = {}; }
464
- var newAttrs = {};
465
- Object.keys(attrs).forEach(function (k) {
461
+ const canonicalize = (attrs = {}) => {
462
+ const newAttrs = {};
463
+ Object.keys(attrs).forEach((k) => {
466
464
  newAttrs[k.toLowerCase()] = attrs[k];
467
465
  });
468
466
  return newAttrs;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/antv-dagre/layout.ts"],"names":[],"mappings":"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"}