@antv/layout 1.2.0 → 1.2.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 (137) hide show
  1. package/dist/11.index.min.js +2 -0
  2. package/dist/11.index.min.js.map +1 -0
  3. package/dist/435.index.min.js +3 -0
  4. package/dist/435.index.min.js.LICENSE.txt +5 -0
  5. package/dist/435.index.min.js.map +1 -0
  6. package/dist/index.min.js +2 -1
  7. package/dist/index.min.js.LICENSE.txt +5 -0
  8. package/dist/index.min.js.map +1 -1
  9. package/lib/circular.js +258 -0
  10. package/lib/circular.js.map +1 -0
  11. package/lib/concentric.js +221 -0
  12. package/lib/concentric.js.map +1 -0
  13. package/lib/d3Force/forceInBox.js +331 -0
  14. package/lib/d3Force/forceInBox.js.map +1 -0
  15. package/lib/d3Force/index.js +339 -0
  16. package/lib/d3Force/index.js.map +1 -0
  17. package/lib/dagre/acyclic.js +62 -0
  18. package/lib/dagre/acyclic.js.map +1 -0
  19. package/lib/dagre/add-border-segments.js +37 -0
  20. package/lib/dagre/add-border-segments.js.map +1 -0
  21. package/lib/dagre/coordinate-system.js +65 -0
  22. package/lib/dagre/coordinate-system.js.map +1 -0
  23. package/lib/dagre/data/list.js +50 -0
  24. package/lib/dagre/data/list.js.map +1 -0
  25. package/lib/dagre/greedy-fas.js +147 -0
  26. package/lib/dagre/greedy-fas.js.map +1 -0
  27. package/lib/dagre/layout.js +468 -0
  28. package/lib/dagre/layout.js.map +1 -0
  29. package/lib/dagre/nesting-graph.js +153 -0
  30. package/lib/dagre/nesting-graph.js.map +1 -0
  31. package/lib/dagre/normalize.js +98 -0
  32. package/lib/dagre/normalize.js.map +1 -0
  33. package/lib/dagre/order/add-subgraph-constraints.js +41 -0
  34. package/lib/dagre/order/add-subgraph-constraints.js.map +1 -0
  35. package/lib/dagre/order/barycenter.js +23 -0
  36. package/lib/dagre/order/barycenter.js.map +1 -0
  37. package/lib/dagre/order/build-layer-graph.js +96 -0
  38. package/lib/dagre/order/build-layer-graph.js.map +1 -0
  39. package/lib/dagre/order/cross-count.js +63 -0
  40. package/lib/dagre/order/cross-count.js.map +1 -0
  41. package/lib/dagre/order/index.js +91 -0
  42. package/lib/dagre/order/index.js.map +1 -0
  43. package/lib/dagre/order/init-data-order.js +28 -0
  44. package/lib/dagre/order/init-data-order.js.map +1 -0
  45. package/lib/dagre/order/init-order.js +50 -0
  46. package/lib/dagre/order/init-order.js.map +1 -0
  47. package/lib/dagre/order/resolve-conflicts.js +121 -0
  48. package/lib/dagre/order/resolve-conflicts.js.map +1 -0
  49. package/lib/dagre/order/sort-subgraph.js +84 -0
  50. package/lib/dagre/order/sort-subgraph.js.map +1 -0
  51. package/lib/dagre/order/sort.js +74 -0
  52. package/lib/dagre/order/sort.js.map +1 -0
  53. package/lib/dagre/parent-dummy-chains.js +80 -0
  54. package/lib/dagre/parent-dummy-chains.js.map +1 -0
  55. package/lib/dagre/position/bk.js +398 -0
  56. package/lib/dagre/position/bk.js.map +1 -0
  57. package/lib/dagre/position/index.js +54 -0
  58. package/lib/dagre/position/index.js.map +1 -0
  59. package/lib/dagre/rank/feasible-tree.js +164 -0
  60. package/lib/dagre/rank/feasible-tree.js.map +1 -0
  61. package/lib/dagre/rank/index.js +48 -0
  62. package/lib/dagre/rank/index.js.map +1 -0
  63. package/lib/dagre/rank/network-simplex.js +232 -0
  64. package/lib/dagre/rank/network-simplex.js.map +1 -0
  65. package/lib/dagre/rank/util.js +138 -0
  66. package/lib/dagre/rank/util.js.map +1 -0
  67. package/lib/dagre/util.js +289 -0
  68. package/lib/dagre/util.js.map +1 -0
  69. package/lib/dagre.d.ts +1 -2
  70. package/lib/dagre.js +543 -0
  71. package/lib/dagre.js.map +1 -0
  72. package/lib/force/forceNBody.js +103 -0
  73. package/lib/force/forceNBody.js.map +1 -0
  74. package/lib/force/index.js +797 -0
  75. package/lib/force/index.js.map +1 -0
  76. package/lib/force/types.js +2 -0
  77. package/lib/force/types.js.map +1 -0
  78. package/lib/forceAtlas2/body.js +91 -0
  79. package/lib/forceAtlas2/body.js.map +1 -0
  80. package/lib/forceAtlas2/index.js +562 -0
  81. package/lib/forceAtlas2/index.js.map +1 -0
  82. package/lib/forceAtlas2/quad.js +98 -0
  83. package/lib/forceAtlas2/quad.js.map +1 -0
  84. package/lib/forceAtlas2/quadTree.js +105 -0
  85. package/lib/forceAtlas2/quadTree.js.map +1 -0
  86. package/lib/fruchterman.js +376 -0
  87. package/lib/fruchterman.js.map +1 -0
  88. package/lib/grid.js +308 -0
  89. package/lib/grid.js.map +1 -0
  90. package/lib/index.js +16 -0
  91. package/lib/index.js.map +1 -0
  92. package/lib/mds.js +137 -0
  93. package/lib/mds.js.map +1 -0
  94. package/lib/radial/index.js +355 -0
  95. package/lib/radial/index.js.map +1 -0
  96. package/lib/radial/mds.js +29 -0
  97. package/lib/radial/mds.js.map +1 -0
  98. package/lib/radial/radial-nonoverlap-force.js +100 -0
  99. package/lib/radial/radial-nonoverlap-force.js.map +1 -0
  100. package/lib/random.js +98 -0
  101. package/lib/random.js.map +1 -0
  102. package/lib/registry.d.ts +0 -1
  103. package/lib/registry.js +25 -0
  104. package/lib/registry.js.map +1 -0
  105. package/lib/supervisor.js +95 -0
  106. package/lib/supervisor.js.map +1 -0
  107. package/lib/types.js +4 -0
  108. package/lib/types.js.map +1 -0
  109. package/lib/util/array.js +2 -0
  110. package/lib/util/array.js.map +1 -0
  111. package/lib/util/common.d.ts +12 -0
  112. package/lib/util/common.js +32 -0
  113. package/lib/util/common.js.map +1 -0
  114. package/lib/util/function.js +124 -0
  115. package/lib/util/function.js.map +1 -0
  116. package/lib/util/gpu.js +214 -0
  117. package/lib/util/gpu.js.map +1 -0
  118. package/lib/util/index.js +7 -0
  119. package/lib/util/index.js.map +1 -0
  120. package/lib/util/math.js +228 -0
  121. package/lib/util/math.js.map +1 -0
  122. package/lib/util/number.js +5 -0
  123. package/lib/util/number.js.map +1 -0
  124. package/lib/util/object.js +42 -0
  125. package/lib/util/object.js.map +1 -0
  126. package/lib/util/string.js +15 -0
  127. package/lib/util/string.js.map +1 -0
  128. package/lib/worker.d.ts +1 -3
  129. package/lib/worker.js +45 -0
  130. package/lib/worker.js.map +1 -0
  131. package/package.json +6 -8
  132. package/dist/5e37927bd3e57252658c.worker.js +0 -2
  133. package/dist/5e37927bd3e57252658c.worker.js.map +0 -1
  134. package/esm/5e37927bd3e57252658c.worker.js +0 -2
  135. package/esm/5e37927bd3e57252658c.worker.js.map +0 -1
  136. package/esm/index.esm.js +0 -2
  137. package/esm/index.esm.js.map +0 -1
@@ -0,0 +1,468 @@
1
+ import { __assign } from "tslib";
2
+ import { Graph } from "@antv/graphlib";
3
+ import { isNil } from "@antv/util";
4
+ 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
+ import { addBorderSegments } from "./add-border-segments";
11
+ import { adjust as adjustCoordinateSystem, undo as undoCoordinateSystem, } from "./coordinate-system";
12
+ import { order } from "./order";
13
+ import { position } from "./position";
14
+ import { initDataOrder } from "./order/init-data-order";
15
+ // const graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"];
16
+ // const graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" };
17
+ // 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;
20
+ // 如果在原图基础上修改,继承原图的order结果
21
+ if (!keepNodeOrder && prevGraph) {
22
+ inheritOrder(g, prevGraph);
23
+ }
24
+ var layoutGraph = buildLayoutGraph(g);
25
+ // 控制是否为边的label留位置(这会影响是否在边中间添加dummy node)
26
+ if (!(!edgeLabelSpace)) {
27
+ options.ranksep = makeSpaceForEdgeLabels(layoutGraph, {
28
+ rankdir: rankdir,
29
+ ranksep: ranksep,
30
+ });
31
+ }
32
+ var dimension;
33
+ // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级
34
+ try {
35
+ dimension = runLayout(layoutGraph, options);
36
+ }
37
+ catch (e) {
38
+ if (e.message === "Not possible to find intersection inside of the rectangle") {
39
+ console.error("The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure:\n", e);
40
+ return;
41
+ }
42
+ throw e;
43
+ }
44
+ updateInputGraph(g, layoutGraph);
45
+ return dimension;
46
+ };
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;
49
+ removeSelfEdges(g);
50
+ runAcyclic(g, acyclicer);
51
+ var _e = runNestingGraph(g), nestingRoot = _e.nestingRoot, nodeRankFactor = _e.nodeRankFactor;
52
+ rank(asNonCompoundGraph(g), ranker);
53
+ injectEdgeLabelProxies(g);
54
+ removeEmptyRanks(g, nodeRankFactor);
55
+ cleanupNestingGraph(g, nestingRoot);
56
+ normalizeRanks(g);
57
+ assignRankMinMax(g);
58
+ removeEdgeLabelProxies(g);
59
+ var dummyChains = [];
60
+ runNormalize(g, dummyChains);
61
+ parentDummyChains(g, dummyChains);
62
+ addBorderSegments(g);
63
+ if (keepNodeOrder) {
64
+ initDataOrder(g, nodeOrder);
65
+ }
66
+ order(g, keepNodeOrder);
67
+ insertSelfEdges(g);
68
+ adjustCoordinateSystem(g, rankdir);
69
+ position(g, {
70
+ align: align,
71
+ nodesep: nodesep,
72
+ edgesep: edgesep,
73
+ ranksep: ranksep,
74
+ });
75
+ positionSelfEdges(g);
76
+ removeBorderNodes(g);
77
+ undoNormalize(g, dummyChains);
78
+ fixupEdgeLabelCoords(g);
79
+ undoCoordinateSystem(g, rankdir);
80
+ var _f = translateGraph(g), width = _f.width, height = _f.height;
81
+ assignNodeIntersects(g);
82
+ reversePointsForReversedEdges(g);
83
+ undoAcyclic(g);
84
+ return { width: width, height: height };
85
+ };
86
+ /**
87
+ * 继承上一个布局中的order,防止翻转
88
+ * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变
89
+ */
90
+ var inheritOrder = function (currG, prevG) {
91
+ currG.getAllNodes().forEach(function (n) {
92
+ var node = currG.getNode(n.id);
93
+ var prevNode = prevG.getNode(n.id);
94
+ if (prevNode !== undefined) {
95
+ node.data.fixorder = prevNode.data._order;
96
+ delete prevNode.data._order;
97
+ }
98
+ else {
99
+ delete node.data.fixorder;
100
+ }
101
+ });
102
+ };
103
+ /*
104
+ * Copies final layout information from the layout graph back to the input
105
+ * graph. This process only copies whitelisted attributes from the layout graph
106
+ * to the input graph, so it serves as a good place to determine what
107
+ * attributes can influence layout.
108
+ */
109
+ var updateInputGraph = function (inputGraph, layoutGraph) {
110
+ inputGraph.getAllNodes().forEach(function (v) {
111
+ var _a;
112
+ var inputLabel = inputGraph.getNode(v.id);
113
+ if (inputLabel) {
114
+ var layoutLabel = layoutGraph.getNode(v.id);
115
+ inputLabel.data.x = layoutLabel.data.x;
116
+ inputLabel.data.y = layoutLabel.data.y;
117
+ inputLabel.data._order = layoutLabel.data.order;
118
+ inputLabel.data._rank = layoutLabel.data.rank;
119
+ if ((_a = layoutGraph.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length) {
120
+ inputLabel.data.width = layoutLabel.data.width;
121
+ inputLabel.data.height = layoutLabel.data.height;
122
+ }
123
+ }
124
+ });
125
+ inputGraph.getAllEdges().forEach(function (e) {
126
+ var inputLabel = inputGraph.getEdge(e.id);
127
+ var layoutLabel = layoutGraph.getEdge(e.id);
128
+ inputLabel.data.points = layoutLabel ? layoutLabel.data.points : [];
129
+ if (layoutLabel && layoutLabel.data.hasOwnProperty("x")) {
130
+ inputLabel.data.x = layoutLabel.data.x;
131
+ inputLabel.data.y = layoutLabel.data.y;
132
+ }
133
+ });
134
+ // inputGraph.graph().width = layoutGraph.graph().width;
135
+ // inputGraph.graph().height = layoutGraph.graph().height;
136
+ };
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 = {
141
+ minlen: 1,
142
+ weight: 1,
143
+ width: 0,
144
+ height: 0,
145
+ labeloffset: 10,
146
+ labelpos: "r",
147
+ };
148
+ var edgeAttrs = ["labelpos"];
149
+ /*
150
+ * Constructs a new graph from the input graph, which can be used for layout.
151
+ * This process copies only whitelisted attributes from the input graph to the
152
+ * layout graph. Thus this function serves as a good place to determine what
153
+ * attributes can influence layout.
154
+ */
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);
161
+ if (!g.hasNode(v.id)) {
162
+ g.addNode({
163
+ id: v.id,
164
+ data: __assign({}, defaultAttrs),
165
+ });
166
+ }
167
+ var parent = inputGraph.getParent(v.id);
168
+ if (!isNil(parent)) {
169
+ if (!g.hasNode(parent.id)) {
170
+ g.addNode(__assign({}, parent));
171
+ }
172
+ g.setParent(v.id, parent.id);
173
+ }
174
+ });
175
+ inputGraph.getAllEdges().forEach(function (e) {
176
+ var edge = canonicalize(inputGraph.getEdge(e.id).data);
177
+ var pickedProperties = {};
178
+ edgeAttrs === null || edgeAttrs === void 0 ? void 0 : edgeAttrs.forEach(function (key) {
179
+ if (edge[key] !== undefined)
180
+ pickedProperties[key] = edge[key];
181
+ });
182
+ g.addEdge({
183
+ id: e.id,
184
+ source: e.source,
185
+ target: e.target,
186
+ data: Object.assign({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pickedProperties),
187
+ });
188
+ });
189
+ return g;
190
+ };
191
+ /*
192
+ * This idea comes from the Gansner paper: to account for edge labels in our
193
+ * layout we split each rank in half by doubling minlen and halving ranksep.
194
+ * Then we can place labels at these mid-points between nodes.
195
+ *
196
+ * We also add some minimal padding to the width to push the label for the edge
197
+ * away from the edge itself a bit.
198
+ */
199
+ var makeSpaceForEdgeLabels = function (g, options) {
200
+ var _a = options.ranksep, ranksep = _a === void 0 ? 0 : _a, rankdir = options.rankdir;
201
+ g.getAllNodes().forEach(function (node) {
202
+ if (!isNaN(node.data.layer)) {
203
+ if (!node.data.layer)
204
+ node.data.layer = 0;
205
+ }
206
+ });
207
+ g.getAllEdges().forEach(function (edge) {
208
+ var _a;
209
+ edge.data.minlen *= 2;
210
+ if (((_a = edge.data.labelpos) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== "c") {
211
+ if (rankdir === "TB" || rankdir === "BT") {
212
+ edge.data.width += edge.data.labeloffset;
213
+ }
214
+ else {
215
+ edge.data.height += edge.data.labeloffset;
216
+ }
217
+ }
218
+ });
219
+ return ranksep / 2;
220
+ };
221
+ /*
222
+ * Creates temporary dummy nodes that capture the rank in which each edge's
223
+ * label is going to, if it has one of non-zero width and height. We do this
224
+ * so that we can safely remove empty ranks while preserving balance for the
225
+ * label's position.
226
+ */
227
+ var injectEdgeLabelProxies = function (g) {
228
+ g.getAllEdges().forEach(function (e) {
229
+ if (e.data.width && e.data.height) {
230
+ var v = g.getNode(e.source);
231
+ var w = g.getNode(e.target);
232
+ var label = {
233
+ e: e,
234
+ rank: (w.data.rank - v.data.rank) / 2 + v.data.rank,
235
+ };
236
+ addDummyNode(g, "edge-proxy", label, "_ep");
237
+ }
238
+ });
239
+ };
240
+ var assignRankMinMax = function (g) {
241
+ var maxRank = 0;
242
+ g.getAllNodes().forEach(function (node) {
243
+ var _a, _b;
244
+ if (node.data.borderTop) {
245
+ node.data.minRank = (_a = g.getNode(node.data.borderTop)) === null || _a === void 0 ? void 0 : _a.data.rank;
246
+ node.data.maxRank = (_b = g.getNode(node.data.borderBottom)) === null || _b === void 0 ? void 0 : _b.data.rank;
247
+ maxRank = Math.max(maxRank, node.data.maxRank || -Infinity);
248
+ }
249
+ });
250
+ return maxRank;
251
+ };
252
+ var removeEdgeLabelProxies = function (g) {
253
+ g.getAllNodes().forEach(function (node) {
254
+ if (node.data.dummy === "edge-proxy") {
255
+ g.getEdge(node.data.e.id).data.labelRank = node.data.rank;
256
+ g.removeNode(node.id);
257
+ }
258
+ });
259
+ };
260
+ var translateGraph = function (g, options) {
261
+ var minX;
262
+ var maxX = 0;
263
+ var minY;
264
+ var maxY = 0;
265
+ var _a = options || {}, _b = _a.marginx, marginX = _b === void 0 ? 0 : _b, _c = _a.marginy, marginY = _c === void 0 ? 0 : _c;
266
+ var getExtremes = function (attrs) {
267
+ if (!attrs.data)
268
+ return;
269
+ var x = attrs.data.x;
270
+ var y = attrs.data.y;
271
+ var w = attrs.data.width;
272
+ var h = attrs.data.height;
273
+ if (!isNaN(x) && !isNaN(w)) {
274
+ if (minX === undefined) {
275
+ minX = x - w / 2;
276
+ }
277
+ minX = Math.min(minX, x - w / 2);
278
+ maxX = Math.max(maxX, x + w / 2);
279
+ }
280
+ if (!isNaN(y) && !isNaN(h)) {
281
+ if (minY === undefined) {
282
+ minY = y - h / 2;
283
+ }
284
+ minY = Math.min(minY, y - h / 2);
285
+ maxY = Math.max(maxY, y + h / 2);
286
+ }
287
+ };
288
+ g.getAllNodes().forEach(function (v) {
289
+ getExtremes(v);
290
+ });
291
+ g.getAllEdges().forEach(function (e) {
292
+ if (e === null || e === void 0 ? void 0 : e.data.hasOwnProperty("x")) {
293
+ getExtremes(e);
294
+ }
295
+ });
296
+ minX -= marginX;
297
+ minY -= marginY;
298
+ g.getAllNodes().forEach(function (node) {
299
+ node.data.x -= minX;
300
+ node.data.y -= minY;
301
+ });
302
+ g.getAllEdges().forEach(function (edge) {
303
+ var _a;
304
+ (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach(function (p) {
305
+ p.x -= minX;
306
+ p.y -= minY;
307
+ });
308
+ if (edge.data.hasOwnProperty("x")) {
309
+ edge.data.x -= minX;
310
+ }
311
+ if (edge.data.hasOwnProperty("y")) {
312
+ edge.data.y -= minY;
313
+ }
314
+ });
315
+ return {
316
+ width: maxX - minX + marginX,
317
+ height: maxY - minY + marginY,
318
+ };
319
+ };
320
+ var assignNodeIntersects = function (g) {
321
+ g.getAllEdges().forEach(function (e) {
322
+ var nodeV = g.getNode(e.source);
323
+ var nodeW = g.getNode(e.target);
324
+ var p1;
325
+ var p2;
326
+ if (!e.data.points) {
327
+ e.data.points = [];
328
+ p1 = { x: nodeW.data.x, y: nodeW.data.y };
329
+ p2 = { x: nodeV.data.x, y: nodeV.data.y };
330
+ }
331
+ else {
332
+ p1 = e.data.points[0];
333
+ p2 = e.data.points[e.data.points.length - 1];
334
+ }
335
+ e.data.points.unshift(intersectRect(nodeV.data, p1));
336
+ e.data.points.push(intersectRect(nodeW.data, p2));
337
+ });
338
+ };
339
+ var fixupEdgeLabelCoords = function (g) {
340
+ g.getAllEdges().forEach(function (edge) {
341
+ if (edge.data.hasOwnProperty("x")) {
342
+ if (edge.data.labelpos === "l" || edge.data.labelpos === "r") {
343
+ edge.data.width -= edge.data.labeloffset;
344
+ }
345
+ switch (edge.data.labelpos) {
346
+ case "l":
347
+ edge.data.x -= edge.data.width / 2 + edge.data.labeloffset;
348
+ break;
349
+ case "r":
350
+ edge.data.x += edge.data.width / 2 + edge.data.labeloffset;
351
+ break;
352
+ }
353
+ }
354
+ });
355
+ };
356
+ var reversePointsForReversedEdges = function (g) {
357
+ g.getAllEdges().forEach(function (edge) {
358
+ var _a;
359
+ if (edge.data.reversed) {
360
+ (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.reverse();
361
+ }
362
+ });
363
+ };
364
+ var removeBorderNodes = function (g) {
365
+ g.getAllNodes().forEach(function (v) {
366
+ var _a, _b, _c;
367
+ if ((_a = g.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length) {
368
+ var node = g.getNode(v.id);
369
+ var t = g.getNode(node.data.borderTop);
370
+ var b = g.getNode(node.data.borderBottom);
371
+ var l = g.getNode(node.data.borderLeft[((_b = node.data.borderLeft) === null || _b === void 0 ? void 0 : _b.length) - 1]);
372
+ var r = g.getNode(node.data.borderRight[((_c = node.data.borderRight) === null || _c === void 0 ? void 0 : _c.length) - 1]);
373
+ 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;
374
+ 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;
375
+ node.data.x = ((l === null || l === void 0 ? void 0 : l.data.x) || 0) + node.data.width / 2;
376
+ node.data.y = ((t === null || t === void 0 ? void 0 : t.data.y) || 0) + node.data.height / 2;
377
+ }
378
+ });
379
+ g.getAllNodes().forEach(function (n) {
380
+ if (n.data.dummy === "border") {
381
+ g.removeNode(n.id);
382
+ }
383
+ });
384
+ };
385
+ var removeSelfEdges = function (g) {
386
+ g.getAllEdges().forEach(function (e) {
387
+ if (e.source === e.target) {
388
+ var node = g.getNode(e.source);
389
+ if (!node.data.selfEdges) {
390
+ node.data.selfEdges = [];
391
+ }
392
+ node.data.selfEdges.push(e);
393
+ g.removeEdge(e.id);
394
+ }
395
+ });
396
+ };
397
+ var insertSelfEdges = function (g) {
398
+ var layers = buildLayerMatrix(g);
399
+ layers === null || layers === void 0 ? void 0 : layers.forEach(function (layer) {
400
+ var orderShift = 0;
401
+ layer === null || layer === void 0 ? void 0 : layer.forEach(function (v, i) {
402
+ var _a;
403
+ var node = g.getNode(v);
404
+ node.data.order = i + orderShift;
405
+ (_a = node.data.selfEdges) === null || _a === void 0 ? void 0 : _a.forEach(function (selfEdge) {
406
+ addDummyNode(g, "selfedge", {
407
+ width: selfEdge.data.width,
408
+ height: selfEdge.data.height,
409
+ rank: node.data.rank,
410
+ order: i + ++orderShift,
411
+ e: selfEdge,
412
+ }, "_se");
413
+ });
414
+ delete node.data.selfEdges;
415
+ });
416
+ });
417
+ };
418
+ var positionSelfEdges = function (g) {
419
+ g.getAllNodes().forEach(function (v) {
420
+ var node = g.getNode(v.id);
421
+ if (node.data.dummy === "selfedge") {
422
+ var selfNode = g.getNode(node.data.e.source);
423
+ var x = selfNode.data.x + selfNode.data.width / 2;
424
+ var y = selfNode.data.y;
425
+ var dx = node.data.x - x;
426
+ var dy = selfNode.data.height / 2;
427
+ if (g.hasEdge(node.data.e.id)) {
428
+ g.updateEdgeData(node.data.e.id, node.data.e.data);
429
+ }
430
+ else {
431
+ g.addEdge({
432
+ id: node.data.e.id,
433
+ source: node.data.e.source,
434
+ target: node.data.e.target,
435
+ data: node.data.e.data,
436
+ });
437
+ }
438
+ g.removeNode(v.id);
439
+ node.data.e.data.points = [
440
+ { x: x + (2 * dx) / 3, y: y - dy },
441
+ { x: x + (5 * dx) / 6, y: y - dy },
442
+ { y: y, x: x + dx },
443
+ { x: x + (5 * dx) / 6, y: y + dy },
444
+ { x: x + (2 * dx) / 3, y: y + dy },
445
+ ];
446
+ node.data.e.data.x = node.data.x;
447
+ node.data.e.data.y = node.data.y;
448
+ }
449
+ });
450
+ };
451
+ var selectNumberAttrs = function (obj, attrs) {
452
+ var pickedProperties = {};
453
+ attrs === null || attrs === void 0 ? void 0 : attrs.forEach(function (key) {
454
+ if (obj[key] === undefined)
455
+ return;
456
+ pickedProperties[key] = +obj[key];
457
+ });
458
+ return pickedProperties;
459
+ };
460
+ var canonicalize = function (attrs) {
461
+ if (attrs === void 0) { attrs = {}; }
462
+ var newAttrs = {};
463
+ Object.keys(attrs).forEach(function (k) {
464
+ newAttrs[k.toLowerCase()] = attrs[k];
465
+ });
466
+ return newAttrs;
467
+ };
468
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/dagre/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ import { addBorderNode, addDummyNode } from "./util";
3
+ /*
4
+ * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,
5
+ * adds appropriate edges to ensure that all cluster nodes are placed between
6
+ * these boundries, and ensures that the graph is connected.
7
+ *
8
+ * In addition we ensure, through the use of the minlen property, that nodes
9
+ * and subgraph border nodes to not end up on the same rank.
10
+ *
11
+ * Preconditions:
12
+ *
13
+ * 1. Input graph is a DAG
14
+ * 2. Nodes in the input graph has a minlen attribute
15
+ *
16
+ * Postconditions:
17
+ *
18
+ * 1. Input graph is connected.
19
+ * 2. Dummy nodes are added for the tops and bottoms of subgraphs.
20
+ * 3. The minlen attribute for nodes is adjusted to ensure nodes do not
21
+ * get placed on the same rank as subgraph border nodes.
22
+ *
23
+ * The nesting graph idea comes from Sander, "Layout of Compound Directed
24
+ * Graphs."
25
+ */
26
+ var run = function (g) {
27
+ var root = addDummyNode(g, "root", {}, "_root");
28
+ var depths = treeDepths(g);
29
+ var maxDepth = Math.max.apply(Math, __spreadArray([], __read(Object.values(depths))));
30
+ if (Math.abs(maxDepth) === Infinity) {
31
+ maxDepth = 1;
32
+ }
33
+ var height = maxDepth - 1; // Note: depths is an Object not an array
34
+ var nodeSep = 2 * height + 1;
35
+ // g.graph().nestingRoot = root;
36
+ // Multiply minlen by nodeSep to align nodes on non-border ranks.
37
+ g.getAllEdges().forEach(function (e) {
38
+ e.data.minlen *= nodeSep;
39
+ });
40
+ // Calculate a weight that is sufficient to keep subgraphs vertically compact
41
+ var weight = sumWeights(g) + 1;
42
+ // Create border nodes and link them up
43
+ // g.children()?.forEach((child) => {
44
+ // dfs(g, root, nodeSep, weight, height, depths, child);
45
+ // });
46
+ g.getRoots().forEach(function (child) {
47
+ dfs(g, root, nodeSep, weight, height, depths, child.id);
48
+ });
49
+ // Save the multiplier for node layers for later removal of empty border
50
+ // layers.
51
+ // g.graph().nodeRankFactor = nodeSep;
52
+ return {
53
+ nestingRoot: root,
54
+ nodeRankFactor: nodeSep,
55
+ };
56
+ };
57
+ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
58
+ var children = g.getChildren(v);
59
+ if (!(children === null || children === void 0 ? void 0 : children.length)) {
60
+ if (v !== root) {
61
+ // g.setEdge(root, v, { weight: 0, minlen: nodeSep });
62
+ g.addEdge({
63
+ id: "e" + Math.random(),
64
+ source: root,
65
+ target: v,
66
+ data: { weight: 0, minlen: nodeSep },
67
+ });
68
+ }
69
+ return;
70
+ }
71
+ var top = addBorderNode(g, "_bt");
72
+ var bottom = addBorderNode(g, "_bb");
73
+ var label = g.getNode(v);
74
+ g.setParent(top, v);
75
+ label.data.borderTop = top;
76
+ g.setParent(bottom, v);
77
+ label.data.borderBottom = bottom;
78
+ children === null || children === void 0 ? void 0 : children.forEach(function (childNode) {
79
+ dfs(g, root, nodeSep, weight, height, depths, childNode.id);
80
+ var childTop = childNode.data.borderTop
81
+ ? childNode.data.borderTop
82
+ : childNode.id;
83
+ var childBottom = childNode.data.borderBottom
84
+ ? childNode.data.borderBottom
85
+ : childNode.id;
86
+ var thisWeight = childNode.data.borderTop ? weight : 2 * weight;
87
+ var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;
88
+ g.addEdge({
89
+ id: "e" + Math.random(),
90
+ source: top,
91
+ target: childTop,
92
+ data: {
93
+ minlen: minlen,
94
+ weight: thisWeight,
95
+ nestingEdge: true,
96
+ },
97
+ });
98
+ g.addEdge({
99
+ id: "e" + Math.random(),
100
+ source: childBottom,
101
+ target: bottom,
102
+ data: {
103
+ minlen: minlen,
104
+ weight: thisWeight,
105
+ nestingEdge: true,
106
+ },
107
+ });
108
+ });
109
+ if (!g.getParent(v)) {
110
+ g.addEdge({
111
+ id: "e" + Math.random(),
112
+ source: root,
113
+ target: top,
114
+ data: {
115
+ weight: 0,
116
+ minlen: height + depths[v],
117
+ },
118
+ });
119
+ }
120
+ };
121
+ var treeDepths = function (g) {
122
+ var depths = {};
123
+ var dfs = function (v, depth) {
124
+ var children = g.getChildren(v);
125
+ children === null || children === void 0 ? void 0 : children.forEach(function (child) { return dfs(child.id, depth + 1); });
126
+ depths[v] = depth;
127
+ };
128
+ // g.children()?.forEach((v) => dfs(v, 1));
129
+ g.getRoots().forEach(function (v) { return dfs(v.id, 1); });
130
+ return depths;
131
+ };
132
+ var sumWeights = function (g) {
133
+ var result = 0;
134
+ g.getAllEdges().forEach(function (e) {
135
+ result += e.data.weight;
136
+ });
137
+ return result;
138
+ };
139
+ var cleanup = function (g, nestingRoot) {
140
+ // const graphLabel = g.graph();
141
+ // graphLabel.nestingRoot && g.removeNode(graphLabel.nestingRoot);
142
+ // delete graphLabel.nestingRoot;
143
+ if (nestingRoot) {
144
+ g.removeNode(nestingRoot);
145
+ }
146
+ g.getAllEdges().forEach(function (e) {
147
+ if (e.data.nestingEdge) {
148
+ g.removeEdge(e.id);
149
+ }
150
+ });
151
+ };
152
+ export { run, cleanup };
153
+ //# sourceMappingURL=nesting-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nesting-graph.js","sourceRoot":"","sources":["../../src/dagre/nesting-graph.ts"],"names":[],"mappings":"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"}