@antv/layout 1.2.0 → 1.2.2

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 (142) hide show
  1. package/dist/0229766b7896aada2515.worker.js +2 -0
  2. package/dist/0229766b7896aada2515.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/bundle-entry.d.ts +18 -0
  6. package/lib/bundle-entry.js +19 -0
  7. package/lib/bundle-entry.js.map +1 -0
  8. package/lib/bundle-supervisor.d.ts +51 -0
  9. package/lib/bundle-supervisor.js +93 -0
  10. package/lib/bundle-supervisor.js.map +1 -0
  11. package/lib/bundle-worker.d.ts +3 -0
  12. package/lib/bundle-worker.js +53 -0
  13. package/lib/bundle-worker.js.map +1 -0
  14. package/lib/circular.js +258 -0
  15. package/lib/circular.js.map +1 -0
  16. package/lib/concentric.js +221 -0
  17. package/lib/concentric.js.map +1 -0
  18. package/lib/d3Force/forceInBox.js +331 -0
  19. package/lib/d3Force/forceInBox.js.map +1 -0
  20. package/lib/d3Force/index.js +339 -0
  21. package/lib/d3Force/index.js.map +1 -0
  22. package/lib/dagre/acyclic.js +62 -0
  23. package/lib/dagre/acyclic.js.map +1 -0
  24. package/lib/dagre/add-border-segments.js +37 -0
  25. package/lib/dagre/add-border-segments.js.map +1 -0
  26. package/lib/dagre/coordinate-system.js +65 -0
  27. package/lib/dagre/coordinate-system.js.map +1 -0
  28. package/lib/dagre/data/list.js +50 -0
  29. package/lib/dagre/data/list.js.map +1 -0
  30. package/lib/dagre/greedy-fas.js +147 -0
  31. package/lib/dagre/greedy-fas.js.map +1 -0
  32. package/lib/dagre/layout.js +468 -0
  33. package/lib/dagre/layout.js.map +1 -0
  34. package/lib/dagre/nesting-graph.js +153 -0
  35. package/lib/dagre/nesting-graph.js.map +1 -0
  36. package/lib/dagre/normalize.js +98 -0
  37. package/lib/dagre/normalize.js.map +1 -0
  38. package/lib/dagre/order/add-subgraph-constraints.js +41 -0
  39. package/lib/dagre/order/add-subgraph-constraints.js.map +1 -0
  40. package/lib/dagre/order/barycenter.js +23 -0
  41. package/lib/dagre/order/barycenter.js.map +1 -0
  42. package/lib/dagre/order/build-layer-graph.js +96 -0
  43. package/lib/dagre/order/build-layer-graph.js.map +1 -0
  44. package/lib/dagre/order/cross-count.js +63 -0
  45. package/lib/dagre/order/cross-count.js.map +1 -0
  46. package/lib/dagre/order/index.js +91 -0
  47. package/lib/dagre/order/index.js.map +1 -0
  48. package/lib/dagre/order/init-data-order.js +28 -0
  49. package/lib/dagre/order/init-data-order.js.map +1 -0
  50. package/lib/dagre/order/init-order.js +50 -0
  51. package/lib/dagre/order/init-order.js.map +1 -0
  52. package/lib/dagre/order/resolve-conflicts.js +121 -0
  53. package/lib/dagre/order/resolve-conflicts.js.map +1 -0
  54. package/lib/dagre/order/sort-subgraph.js +84 -0
  55. package/lib/dagre/order/sort-subgraph.js.map +1 -0
  56. package/lib/dagre/order/sort.js +74 -0
  57. package/lib/dagre/order/sort.js.map +1 -0
  58. package/lib/dagre/parent-dummy-chains.js +80 -0
  59. package/lib/dagre/parent-dummy-chains.js.map +1 -0
  60. package/lib/dagre/position/bk.js +398 -0
  61. package/lib/dagre/position/bk.js.map +1 -0
  62. package/lib/dagre/position/index.js +54 -0
  63. package/lib/dagre/position/index.js.map +1 -0
  64. package/lib/dagre/rank/feasible-tree.js +164 -0
  65. package/lib/dagre/rank/feasible-tree.js.map +1 -0
  66. package/lib/dagre/rank/index.js +48 -0
  67. package/lib/dagre/rank/index.js.map +1 -0
  68. package/lib/dagre/rank/network-simplex.js +232 -0
  69. package/lib/dagre/rank/network-simplex.js.map +1 -0
  70. package/lib/dagre/rank/util.js +138 -0
  71. package/lib/dagre/rank/util.js.map +1 -0
  72. package/lib/dagre/util.js +289 -0
  73. package/lib/dagre/util.js.map +1 -0
  74. package/lib/dagre.d.ts +1 -2
  75. package/lib/dagre.js +543 -0
  76. package/lib/dagre.js.map +1 -0
  77. package/lib/force/forceNBody.js +103 -0
  78. package/lib/force/forceNBody.js.map +1 -0
  79. package/lib/force/index.js +797 -0
  80. package/lib/force/index.js.map +1 -0
  81. package/lib/force/types.js +2 -0
  82. package/lib/force/types.js.map +1 -0
  83. package/lib/forceAtlas2/body.js +91 -0
  84. package/lib/forceAtlas2/body.js.map +1 -0
  85. package/lib/forceAtlas2/index.js +562 -0
  86. package/lib/forceAtlas2/index.js.map +1 -0
  87. package/lib/forceAtlas2/quad.js +98 -0
  88. package/lib/forceAtlas2/quad.js.map +1 -0
  89. package/lib/forceAtlas2/quadTree.js +105 -0
  90. package/lib/forceAtlas2/quadTree.js.map +1 -0
  91. package/lib/fruchterman.js +376 -0
  92. package/lib/fruchterman.js.map +1 -0
  93. package/lib/grid.js +308 -0
  94. package/lib/grid.js.map +1 -0
  95. package/lib/index.js +16 -0
  96. package/lib/index.js.map +1 -0
  97. package/lib/mds.js +137 -0
  98. package/lib/mds.js.map +1 -0
  99. package/lib/radial/index.js +355 -0
  100. package/lib/radial/index.js.map +1 -0
  101. package/lib/radial/mds.js +29 -0
  102. package/lib/radial/mds.js.map +1 -0
  103. package/lib/radial/radial-nonoverlap-force.js +100 -0
  104. package/lib/radial/radial-nonoverlap-force.js.map +1 -0
  105. package/lib/random.js +98 -0
  106. package/lib/random.js.map +1 -0
  107. package/lib/registry.d.ts +0 -1
  108. package/lib/registry.js +25 -0
  109. package/lib/registry.js.map +1 -0
  110. package/lib/supervisor.js +86 -0
  111. package/lib/supervisor.js.map +1 -0
  112. package/lib/types.js +4 -0
  113. package/lib/types.js.map +1 -0
  114. package/lib/util/array.js +2 -0
  115. package/lib/util/array.js.map +1 -0
  116. package/lib/util/common.d.ts +12 -0
  117. package/lib/util/common.js +32 -0
  118. package/lib/util/common.js.map +1 -0
  119. package/lib/util/function.js +124 -0
  120. package/lib/util/function.js.map +1 -0
  121. package/lib/util/gpu.js +214 -0
  122. package/lib/util/gpu.js.map +1 -0
  123. package/lib/util/index.js +7 -0
  124. package/lib/util/index.js.map +1 -0
  125. package/lib/util/math.js +228 -0
  126. package/lib/util/math.js.map +1 -0
  127. package/lib/util/number.js +5 -0
  128. package/lib/util/number.js.map +1 -0
  129. package/lib/util/object.js +42 -0
  130. package/lib/util/object.js.map +1 -0
  131. package/lib/util/string.js +15 -0
  132. package/lib/util/string.js.map +1 -0
  133. package/lib/worker.d.ts +1 -3
  134. package/lib/worker.js +45 -0
  135. package/lib/worker.js.map +1 -0
  136. package/package.json +6 -5
  137. package/dist/5e37927bd3e57252658c.worker.js +0 -2
  138. package/dist/5e37927bd3e57252658c.worker.js.map +0 -1
  139. package/esm/5e37927bd3e57252658c.worker.js +0 -2
  140. package/esm/5e37927bd3e57252658c.worker.js.map +0 -1
  141. package/esm/index.esm.js +0 -2
  142. package/esm/index.esm.js.map +0 -1
@@ -0,0 +1,398 @@
1
+ import { __assign, __read, __spreadArray } from "tslib";
2
+ /*
3
+ * This module provides coordinate assignment based on Brandes and Köpf, "Fast
4
+ * and Simple Horizontal Coordinate Assignment."
5
+ */
6
+ import { Graph } from "@antv/graphlib";
7
+ import { buildLayerMatrix, minBy } from "../util";
8
+ export var findType1Conflicts = function (g, layering) {
9
+ var conflicts = {};
10
+ var visitLayer = function (prevLayer, layer) {
11
+ // last visited node in the previous layer that is incident on an inner
12
+ // segment.
13
+ var k0 = 0;
14
+ // Tracks the last node in this layer scanned for crossings with a type-1
15
+ // segment.
16
+ var scanPos = 0;
17
+ var prevLayerLength = prevLayer.length;
18
+ var lastNode = layer === null || layer === void 0 ? void 0 : layer[(layer === null || layer === void 0 ? void 0 : layer.length) - 1];
19
+ layer === null || layer === void 0 ? void 0 : layer.forEach(function (v, i) {
20
+ var _a;
21
+ var w = findOtherInnerSegmentNode(g, v);
22
+ var k1 = w ? g.getNode(w.id).data.order : prevLayerLength;
23
+ if (w || v === lastNode) {
24
+ (_a = layer.slice(scanPos, i + 1)) === null || _a === void 0 ? void 0 : _a.forEach(function (scanNode) {
25
+ var _a;
26
+ (_a = g.getPredecessors(scanNode)) === null || _a === void 0 ? void 0 : _a.forEach(function (u) {
27
+ var _a;
28
+ var uLabel = g.getNode(u.id);
29
+ var uPos = uLabel.data.order;
30
+ if ((uPos < k0 || k1 < uPos) &&
31
+ !(uLabel.data.dummy && ((_a = g.getNode(scanNode)) === null || _a === void 0 ? void 0 : _a.data.dummy))) {
32
+ addConflict(conflicts, u.id, scanNode);
33
+ }
34
+ });
35
+ });
36
+ scanPos = i + 1;
37
+ k0 = k1;
38
+ }
39
+ });
40
+ return layer;
41
+ };
42
+ if (layering === null || layering === void 0 ? void 0 : layering.length) {
43
+ layering.reduce(visitLayer);
44
+ }
45
+ return conflicts;
46
+ };
47
+ export var findType2Conflicts = function (g, layering) {
48
+ var conflicts = {};
49
+ function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {
50
+ var _a, _b;
51
+ var v;
52
+ for (var i = southPos; i < southEnd; i++) {
53
+ v = south[i];
54
+ if ((_a = g.getNode(v)) === null || _a === void 0 ? void 0 : _a.data.dummy) {
55
+ (_b = g.getPredecessors(v)) === null || _b === void 0 ? void 0 : _b.forEach(function (u) {
56
+ var uNode = g.getNode(u.id);
57
+ if (uNode.data.dummy &&
58
+ (uNode.data.order < prevNorthBorder ||
59
+ uNode.data.order > nextNorthBorder)) {
60
+ addConflict(conflicts, u.id, v);
61
+ }
62
+ });
63
+ }
64
+ }
65
+ }
66
+ function getScannedKey(params) {
67
+ // south数组可能很大,不适合做key
68
+ return JSON.stringify(params.slice(1));
69
+ }
70
+ function scanIfNeeded(params, scanCache) {
71
+ var cacheKey = getScannedKey(params);
72
+ if (scanCache.get(cacheKey))
73
+ return;
74
+ scan.apply(void 0, __spreadArray([], __read(params)));
75
+ scanCache.set(cacheKey, true);
76
+ }
77
+ var visitLayer = function (north, south) {
78
+ var prevNorthPos = -1;
79
+ var nextNorthPos;
80
+ var southPos = 0;
81
+ var scanned = new Map();
82
+ south === null || south === void 0 ? void 0 : south.forEach(function (v, southLookahead) {
83
+ var _a;
84
+ if (((_a = g.getNode(v)) === null || _a === void 0 ? void 0 : _a.data.dummy) === "border") {
85
+ var predecessors = g.getPredecessors(v) || [];
86
+ if (predecessors.length) {
87
+ nextNorthPos = g.getNode(predecessors[0].id).data.order;
88
+ scanIfNeeded([south, southPos, southLookahead, prevNorthPos, nextNorthPos], scanned);
89
+ southPos = southLookahead;
90
+ prevNorthPos = nextNorthPos;
91
+ }
92
+ }
93
+ scanIfNeeded([south, southPos, south.length, nextNorthPos, north.length], scanned);
94
+ });
95
+ return south;
96
+ };
97
+ if (layering === null || layering === void 0 ? void 0 : layering.length) {
98
+ layering.reduce(visitLayer);
99
+ }
100
+ return conflicts;
101
+ };
102
+ export var findOtherInnerSegmentNode = function (g, v) {
103
+ var _a, _b;
104
+ if ((_a = g.getNode(v)) === null || _a === void 0 ? void 0 : _a.data.dummy) {
105
+ return (_b = g.getPredecessors(v)) === null || _b === void 0 ? void 0 : _b.find(function (u) { return g.getNode(u.id).data.dummy; });
106
+ }
107
+ };
108
+ export var addConflict = function (conflicts, v, w) {
109
+ var vv = v;
110
+ var ww = w;
111
+ if (vv > ww) {
112
+ var tmp = vv;
113
+ vv = ww;
114
+ ww = tmp;
115
+ }
116
+ var conflictsV = conflicts[vv];
117
+ if (!conflictsV) {
118
+ conflicts[vv] = conflictsV = {};
119
+ }
120
+ conflictsV[ww] = true;
121
+ };
122
+ export var hasConflict = function (conflicts, v, w) {
123
+ var vv = v;
124
+ var ww = w;
125
+ if (vv > ww) {
126
+ var tmp = v;
127
+ vv = ww;
128
+ ww = tmp;
129
+ }
130
+ return !!conflicts[vv];
131
+ };
132
+ /*
133
+ * Try to align nodes into vertical "blocks" where possible. This algorithm
134
+ * attempts to align a node with one of its median neighbors. If the edge
135
+ * connecting a neighbor is a type-1 conflict then we ignore that possibility.
136
+ * If a previous node has already formed a block with a node after the node
137
+ * we're trying to form a block with, we also ignore that possibility - our
138
+ * blocks would be split in that scenario.
139
+ */
140
+ export var verticalAlignment = function (g, layering, conflicts, neighborFn) {
141
+ var root = {};
142
+ var align = {};
143
+ var pos = {};
144
+ // We cache the position here based on the layering because the graph and
145
+ // layering may be out of sync. The layering matrix is manipulated to
146
+ // generate different extreme alignments.
147
+ layering === null || layering === void 0 ? void 0 : layering.forEach(function (layer) {
148
+ layer === null || layer === void 0 ? void 0 : layer.forEach(function (v, order) {
149
+ root[v] = v;
150
+ align[v] = v;
151
+ pos[v] = order;
152
+ });
153
+ });
154
+ layering === null || layering === void 0 ? void 0 : layering.forEach(function (layer) {
155
+ var prevIdx = -1;
156
+ layer === null || layer === void 0 ? void 0 : layer.forEach(function (v) {
157
+ var ws = neighborFn(v).map(function (n) { return n.id; });
158
+ if (ws.length) {
159
+ ws = ws.sort(function (a, b) { return pos[a] - pos[b]; });
160
+ var mp = (ws.length - 1) / 2;
161
+ for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {
162
+ var w = ws[i];
163
+ if (align[v] === v &&
164
+ prevIdx < pos[w] &&
165
+ !hasConflict(conflicts, v, w)) {
166
+ align[w] = v;
167
+ align[v] = root[v] = root[w];
168
+ prevIdx = pos[w];
169
+ }
170
+ }
171
+ }
172
+ });
173
+ });
174
+ return { root: root, align: align };
175
+ };
176
+ export var horizontalCompaction = function (g, layering, root, align, nodesep, edgesep, reverseSep) {
177
+ var _a;
178
+ // This portion of the algorithm differs from BK due to a number of problems.
179
+ // Instead of their algorithm we construct a new block graph and do two
180
+ // sweeps. The first sweep places blocks with the smallest possible
181
+ // coordinates. The second sweep removes unused space by moving blocks to the
182
+ // greatest coordinates without violating separation.
183
+ var xs = {};
184
+ var blockG = buildBlockGraph(g, layering, root, nodesep, edgesep, reverseSep);
185
+ var borderType = reverseSep ? "borderLeft" : "borderRight";
186
+ var iterate = function (setXsFunc, nextNodesFunc) {
187
+ var stack = blockG.getAllNodes();
188
+ var elem = stack.pop();
189
+ var visited = {};
190
+ while (elem) {
191
+ if (visited[elem.id]) {
192
+ setXsFunc(elem.id);
193
+ }
194
+ else {
195
+ visited[elem.id] = true;
196
+ stack.push(elem);
197
+ stack = stack.concat(nextNodesFunc(elem.id));
198
+ }
199
+ elem = stack.pop();
200
+ }
201
+ };
202
+ // First pass, assign smallest coordinates
203
+ var pass1 = function (elem) {
204
+ xs[elem] = (blockG.getRelatedEdges(elem, "in") || []).reduce(function (acc, e) {
205
+ return Math.max(acc, (xs[e.source] || 0) + e.data.weight);
206
+ }, 0);
207
+ };
208
+ // Second pass, assign greatest coordinates
209
+ var pass2 = function (elem) {
210
+ var min = (blockG.getRelatedEdges(elem, "out") || []).reduce(function (acc, e) {
211
+ return Math.min(acc, (xs[e.target] || 0) - e.data.weight);
212
+ }, Number.POSITIVE_INFINITY);
213
+ var node = g.getNode(elem);
214
+ if (min !== Number.POSITIVE_INFINITY &&
215
+ node.data.borderType !== borderType) {
216
+ xs[elem] = Math.max(xs[elem], min);
217
+ }
218
+ };
219
+ iterate(pass1, blockG.getPredecessors.bind(blockG));
220
+ iterate(pass2, blockG.getSuccessors.bind(blockG));
221
+ // Assign x coordinates to all nodes
222
+ (_a = Object.values(align)) === null || _a === void 0 ? void 0 : _a.forEach(function (v) {
223
+ xs[v] = xs[root[v]];
224
+ });
225
+ return xs;
226
+ };
227
+ export var buildBlockGraph = function (g, layering, root, nodesep, edgesep, reverseSep) {
228
+ var blockGraph = new Graph();
229
+ var sepFn = sep(nodesep, edgesep, reverseSep);
230
+ layering === null || layering === void 0 ? void 0 : layering.forEach(function (layer) {
231
+ var u;
232
+ layer === null || layer === void 0 ? void 0 : layer.forEach(function (v) {
233
+ var vRoot = root[v];
234
+ if (!blockGraph.hasNode(vRoot)) {
235
+ blockGraph.addNode({
236
+ id: vRoot,
237
+ data: {},
238
+ });
239
+ }
240
+ if (u) {
241
+ var uRoot = root[u];
242
+ var edge = blockGraph
243
+ .getRelatedEdges(uRoot, "out")
244
+ .find(function (edge) { return edge.target === vRoot; });
245
+ if (!edge) {
246
+ blockGraph.addEdge({
247
+ id: "e" + Math.random(),
248
+ source: uRoot,
249
+ target: vRoot,
250
+ data: {
251
+ weight: Math.max(sepFn(g, v, u), 0),
252
+ },
253
+ });
254
+ }
255
+ else {
256
+ blockGraph.updateEdgeData(edge.id, __assign(__assign({}, edge.data), { weight: Math.max(sepFn(g, v, u), edge.data.weight || 0) }));
257
+ }
258
+ }
259
+ u = v;
260
+ });
261
+ });
262
+ return blockGraph;
263
+ };
264
+ /*
265
+ * Returns the alignment that has the smallest width of the given alignments.
266
+ */
267
+ export var findSmallestWidthAlignment = function (g, xss) {
268
+ return minBy(Object.values(xss), function (xs) {
269
+ var _a;
270
+ var max = Number.NEGATIVE_INFINITY;
271
+ var min = Number.POSITIVE_INFINITY;
272
+ (_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach(function (v) {
273
+ var x = xs[v];
274
+ var halfWidth = width(g, v) / 2;
275
+ max = Math.max(x + halfWidth, max);
276
+ min = Math.min(x - halfWidth, min);
277
+ });
278
+ return max - min;
279
+ });
280
+ };
281
+ /*
282
+ * Align the coordinates of each of the layout alignments such that
283
+ * left-biased alignments have their minimum coordinate at the same point as
284
+ * the minimum coordinate of the smallest width alignment and right-biased
285
+ * alignments have their maximum coordinate at the same point as the maximum
286
+ * coordinate of the smallest width alignment.
287
+ */
288
+ export function alignCoordinates(xss, alignTo) {
289
+ var alignToVals = Object.values(alignTo);
290
+ var alignToMin = Math.min.apply(Math, __spreadArray([], __read(alignToVals)));
291
+ var alignToMax = Math.max.apply(Math, __spreadArray([], __read(alignToVals)));
292
+ ["u", "d"].forEach(function (vert) {
293
+ ["l", "r"].forEach(function (horiz) {
294
+ var alignment = vert + horiz;
295
+ var xs = xss[alignment];
296
+ var delta;
297
+ if (xs === alignTo)
298
+ return;
299
+ var xsVals = Object.values(xs);
300
+ delta =
301
+ horiz === "l"
302
+ ? alignToMin - Math.min.apply(Math, __spreadArray([], __read(xsVals)))
303
+ : alignToMax - Math.max.apply(Math, __spreadArray([], __read(xsVals)));
304
+ if (delta) {
305
+ xss[alignment] = {};
306
+ Object.keys(xs).forEach(function (key) {
307
+ xss[alignment][key] = xs[key] + delta;
308
+ });
309
+ }
310
+ });
311
+ });
312
+ }
313
+ export var balance = function (xss, align) {
314
+ var result = {};
315
+ Object.keys(xss.ul).forEach(function (key) {
316
+ if (align) {
317
+ result[key] = xss[align.toLowerCase()][key];
318
+ }
319
+ else {
320
+ var values = Object.values(xss).map(function (x) { return x[key]; });
321
+ result[key] = (values[0] + values[1]) / 2; // (ur + ul) / 2
322
+ }
323
+ });
324
+ return result;
325
+ };
326
+ export var positionX = function (g, options) {
327
+ var _a = options || {}, graphAlign = _a.align, _b = _a.nodesep, nodesep = _b === void 0 ? 0 : _b, _c = _a.edgesep, edgesep = _c === void 0 ? 0 : _c;
328
+ var layering = buildLayerMatrix(g);
329
+ var conflicts = Object.assign(findType1Conflicts(g, layering), findType2Conflicts(g, layering));
330
+ var xss = {};
331
+ var adjustedLayering;
332
+ ["u", "d"].forEach(function (vert) {
333
+ adjustedLayering =
334
+ vert === "u" ? layering : Object.values(layering).reverse();
335
+ ["l", "r"].forEach(function (horiz) {
336
+ if (horiz === "r") {
337
+ adjustedLayering = adjustedLayering.map(function (inner) {
338
+ return Object.values(inner).reverse();
339
+ });
340
+ }
341
+ var neighborFn = (vert === "u" ? g.getPredecessors : g.getSuccessors).bind(g);
342
+ var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);
343
+ var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, nodesep, edgesep, horiz === "r");
344
+ if (horiz === "r") {
345
+ Object.keys(xs).forEach(function (key) {
346
+ xs[key] = -xs[key];
347
+ });
348
+ }
349
+ xss[vert + horiz] = xs;
350
+ });
351
+ });
352
+ var smallestWidth = findSmallestWidthAlignment(g, xss);
353
+ alignCoordinates(xss, smallestWidth);
354
+ return balance(xss, graphAlign);
355
+ };
356
+ export var sep = function (nodeSep, edgeSep, reverseSep) {
357
+ return function (g, v, w) {
358
+ var vLabel = g.getNode(v);
359
+ var wLabel = g.getNode(w);
360
+ var sum = 0;
361
+ var delta = 0;
362
+ sum += vLabel.data.width / 2;
363
+ if (vLabel.data.hasOwnProperty("labelpos")) {
364
+ switch ((vLabel.data.labelpos || "").toLowerCase()) {
365
+ case "l":
366
+ delta = -vLabel.data.width / 2;
367
+ break;
368
+ case "r":
369
+ delta = vLabel.data.width / 2;
370
+ break;
371
+ }
372
+ }
373
+ if (delta) {
374
+ sum += reverseSep ? delta : -delta;
375
+ }
376
+ delta = 0;
377
+ sum += (vLabel.data.dummy ? edgeSep : nodeSep) / 2;
378
+ sum += (wLabel.data.dummy ? edgeSep : nodeSep) / 2;
379
+ sum += wLabel.data.width / 2;
380
+ if (wLabel.data.labelpos) {
381
+ switch ((wLabel.data.labelpos || "").toLowerCase()) {
382
+ case "l":
383
+ delta = wLabel.data.width / 2;
384
+ break;
385
+ case "r":
386
+ delta = -wLabel.data.width / 2;
387
+ break;
388
+ }
389
+ }
390
+ if (delta) {
391
+ sum += reverseSep ? delta : -delta;
392
+ }
393
+ delta = 0;
394
+ return sum;
395
+ };
396
+ };
397
+ export var width = function (g, v) { return g.getNode(v).data.width || 0; };
398
+ //# sourceMappingURL=bk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bk.js","sourceRoot":"","sources":["../../../src/dagre/position/bk.ts"],"names":[],"mappings":";AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAAY,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAsBlD,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,CAAS,EAAE,QAAiB;IAC7D,IAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAM,UAAU,GAAG,UAAC,SAAe,EAAE,KAAW;QAC9C,uEAAuE;QACvE,WAAW;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,yEAAyE;QACzE,WAAW;QACX,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;QACzC,IAAM,QAAQ,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC,CAAC,CAAC;QAE5C,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,UAAC,CAAK,EAAE,CAAS;;YAC9B,IAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,eAAe,CAAC;YAE9D,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACvB,MAAA,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,0CAAE,OAAO,CAAC,UAAC,QAAQ;;oBAC5C,MAAA,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,0CAAE,OAAO,CAAC,UAAC,CAAC;;wBACrC,IAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;wBAChC,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAM,CAAC;wBAChC,IACE,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;4BACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAI,MAAA,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,0CAAE,IAAI,CAAC,KAAK,CAAA,CAAC,EACvD;4BACA,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;yBACxC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,EAAE,GAAG,EAAE,CAAC;aACT;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE;QACpB,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAC7B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,CAAS,EAAE,QAAiB;IAC7D,IAAM,SAAS,GAAG,EAAE,CAAC;IAErB,SAAS,IAAI,CACX,KAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,eAAuB,EACvB,eAAuB;;QAEvB,IAAI,CAAS,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACxC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,IAAI,MAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,KAAK,EAAE;gBAC5B,MAAA,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,UAAC,CAAC;oBAC9B,IAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;oBAC/B,IACE,KAAK,CAAC,IAAI,CAAC,KAAK;wBAChB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAM,GAAG,eAAe;4BAClC,KAAK,CAAC,IAAI,CAAC,KAAM,GAAG,eAAe,CAAC,EACtC;wBACA,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBACjC;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAED,SAAS,aAAa,CAAC,MAA+B;QACpD,sBAAsB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,YAAY,CACnB,MAA+B,EAC/B,SAA+B;QAE/B,IAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAEpC,IAAI,wCAAI,MAAM,IAAE;QAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAM,UAAU,GAAG,UAAC,KAAe,EAAE,KAAe;QAClD,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,YAAoB,CAAC;QACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,IAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE3C,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,UAAC,CAAS,EAAE,cAAsB;;YAC/C,IAAI,CAAA,MAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,KAAK,MAAK,QAAQ,EAAE;gBACzC,IAAM,YAAY,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,KAAM,CAAC;oBAC1D,YAAY,CACV,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,EAC7D,OAAO,CACR,CAAC;oBACF,QAAQ,GAAG,cAAc,CAAC;oBAC1B,YAAY,GAAG,YAAY,CAAC;iBAC7B;aACF;YACD,YAAY,CACV,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAC3D,OAAO,CACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE;QACpB,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAC7B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,CAAS,EAAE,CAAK;;IACxD,IAAI,MAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,KAAK,EAAE;QAC5B,OAAO,MAAA,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAA1B,CAA0B,CAAC,CAAC;KACtE;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,SAAoB,EAAE,CAAK,EAAE,CAAK;IAC5D,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,EAAE,EAAE;QACX,IAAM,GAAG,GAAG,EAAE,CAAC;QACf,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,GAAG,CAAC;KACV;IAED,IAAI,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE;QACf,SAAS,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC;KACjC;IACD,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,SAAoB,EAAE,CAAK,EAAE,CAAK;IAC5D,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,EAAE,EAAE;QACX,IAAM,GAAG,GAAG,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,GAAG,CAAC;KACV;IACD,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAC/B,CAAS,EACT,QAAgB,EAChB,SAAoB,EACpB,UAAuC;IAEvC,IAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,IAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAM,GAAG,GAAuB,EAAE,CAAC;IAEnC,yEAAyE;IACzE,qEAAqE;IACrE,yCAAyC;IACzC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,UAAC,KAAK;QACtB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,UAAC,CAAC,EAAE,KAAa;YAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,UAAC,KAAK;QACtB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACjB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,UAAC,CAAC;YACf,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC;YAExC,IAAI,EAAE,CAAC,MAAM,EAAE;gBACb,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAC,CAAK,EAAE,CAAK,IAAK,OAAA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAf,CAAe,CAAC,CAAC;gBAChD,IAAM,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;oBAC7D,IAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBAChB,IACE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;wBACd,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;wBAChB,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAC7B;wBACA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACb,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC7B,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;qBAClB;iBACF;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAClC,CAAS,EACT,QAAgB,EAChB,IAAoB,EACpB,KAAqB,EACrB,OAAe,EACf,OAAe,EACf,UAAoB;;IAEpB,6EAA6E;IAC7E,uEAAuE;IACvE,mEAAmE;IACnE,6EAA6E;IAC7E,qDAAqD;IACrD,IAAM,EAAE,GAAuB,EAAE,CAAC;IAClC,IAAM,MAAM,GAAG,eAAe,CAC5B,CAAC,EACD,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAU,CACX,CAAC;IACF,IAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAE7D,IAAM,OAAO,GAAG,UACd,SAA8B,EAC9B,aAA4C;QAE5C,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACvB,IAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,OAAO,IAAI,EAAE;YACX,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACpB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACpB;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC9C;YAED,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;SACpB;IACH,CAAC,CAAC;IAEF,0CAA0C;IAC1C,IAAM,KAAK,GAAG,UAAC,IAAQ;QACrB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1D,UAAC,GAAW,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;QAC7D,CAAC,EACD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,2CAA2C;IAC3C,IAAM,KAAK,GAAG,UAAC,IAAQ;QACrB,IAAM,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC5D,UAAC,GAAW,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;QAC7D,CAAC,EACD,MAAM,CAAC,iBAAiB,CACzB,CAAC;QAEF,IAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;QAC9B,IACE,GAAG,KAAK,MAAM,CAAC,iBAAiB;YAChC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,EACnC;YACA,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;SACpC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAElD,oCAAoC;IACpC,MAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,OAAO,CAAC,UAAC,CAAC;QAC9B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAC7B,CAAS,EACT,QAAgB,EAChB,IAAoB,EACpB,OAAe,EACf,OAAe,EACf,UAAoB;IAEpB,IAAM,UAAU,GAAG,IAAI,KAAK,EAAsB,CAAC;IACnD,IAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAqB,CAAC,CAAC;IAE3D,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,UAAC,KAAK;QACtB,IAAI,CAAK,CAAC;QACV,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,UAAC,CAAC;YACf,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC9B,UAAU,CAAC,OAAO,CAAC;oBACjB,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,EAAE;gBACL,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEtB,IAAM,IAAI,GAAG,UAAU;qBACpB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,MAAM,KAAK,KAAK,EAArB,CAAqB,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,EAAE;oBACT,UAAU,CAAC,OAAO,CAAC;wBACjB,EAAE,EAAE,MAAI,IAAI,CAAC,MAAM,EAAI;wBACvB,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE;4BACJ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;yBACpC;qBACF,CAAC,CAAC;iBACJ;qBAAM;oBACL,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,wBAC5B,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAO,IAAI,CAAC,CAAC,IACxD,CAAC;iBACJ;aACF;YACD,CAAC,GAAG,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AACF;;GAEG;AACH,MAAM,CAAC,IAAM,0BAA0B,GAAG,UACxC,CAAS,EACT,GAA2C;IAE3C,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAC,EAAE;;QAClC,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnC,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEnC,MAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,OAAO,CAAC,UAAC,CAAS;YACjC,IAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAElC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC;YACnC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAA2C,EAC3C,OAA+B;IAE/B,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,WAAW,GAAC,CAAC;IAC5C,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,WAAW,GAAC,CAAC;IAE5C,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;QACtB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK;YACvB,IAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1B,IAAI,KAAa,CAAC;YAClB,IAAI,EAAE,KAAK,OAAO;gBAAE,OAAO;YAE3B,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,KAAK;gBACH,KAAK,KAAK,GAAG;oBACX,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,MAAM,GAAC;oBAClC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,MAAM,GAAC,CAAC;YAEvC,IAAI,KAAK,EAAE;gBACT,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;oBAC1B,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACxC,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,IAAM,OAAO,GAAG,UACrB,GAA2C,EAC3C,KAAkB;IAElB,IAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;QAC9B,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SAC7C;aAAM;YACL,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,EAAN,CAAM,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB;SAC5D;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,SAAS,GAAG,UACvB,CAAS,EACT,OAIE;IAEI,IAAA,KAAkD,OAAO,IAAI,EAAE,EAAtD,UAAU,WAAA,EAAE,eAAW,EAAX,OAAO,mBAAG,CAAC,KAAA,EAAE,eAAW,EAAX,OAAO,mBAAG,CAAC,KAAkB,CAAC;IAEtE,IAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrC,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAC7B,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC/B,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAChC,CAAC;IAEF,IAAM,GAAG,GAAuC,EAAE,CAAC;IACnD,IAAI,gBAAwB,CAAC;IAC7B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;QACtB,gBAAgB;YACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9D,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK;YACvB,IAAI,KAAK,KAAK,GAAG,EAAE;gBACjB,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAC,KAAK;oBAC5C,OAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;gBAA9B,CAA8B,CAC/B,CAAC;aACH;YAED,IAAM,UAAU,GAAG,CACjB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CACnD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,IAAM,KAAK,GAAG,iBAAiB,CAC7B,CAAC,EACD,gBAAgB,EAChB,SAAS,EACT,UAAU,CACX,CAAC;YACF,IAAM,EAAE,GAAG,oBAAoB,CAC7B,CAAC,EACD,gBAAgB,EAChB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,OAAO,EACP,OAAO,EACP,KAAK,KAAK,GAAG,CACd,CAAC;YACF,IAAI,KAAK,KAAK,GAAG,EAAE;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;oBAC1B,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;aACJ;YACD,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAM,aAAa,GAAG,0BAA0B,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,GAAG,GAAG,UAAC,OAAe,EAAE,OAAe,EAAE,UAAmB;IACvE,OAAO,UAAC,CAAS,EAAE,CAAK,EAAE,CAAK;QAC7B,IAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,GAAW,CAAC,CAAC;QAEtB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YAC1C,QAAQ,CAAE,MAAM,CAAC,IAAI,CAAC,QAAmB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC9D,KAAK,GAAG;oBACN,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAM,GAAG,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,GAAG;oBACN,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAM,GAAG,CAAC,CAAC;oBAC/B,MAAM;aACT;SACF;QACD,IAAI,KAAK,EAAE;YACT,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACpC;QACD,KAAK,GAAG,CAAC,CAAC;QAEV,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnD,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxB,QAAQ,CAAE,MAAM,CAAC,IAAI,CAAC,QAAmB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC9D,KAAK,GAAG;oBACN,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAM,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,GAAG;oBACN,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAM,GAAG,CAAC,CAAC;oBAChC,MAAM;aACT;SACF;QACD,IAAI,KAAK,EAAE;YACT,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACpC;QACD,KAAK,GAAG,CAAC,CAAC;QAEV,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,KAAK,GAAG,UAAC,CAAS,EAAE,CAAK,IAAK,OAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAM,IAAI,CAAC,EAA9B,CAA8B,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ import { asNonCompoundGraph, buildLayerMatrix } from "../util";
3
+ import { alignCoordinates, balance, findSmallestWidthAlignment, findType1Conflicts, findType2Conflicts, horizontalCompaction, verticalAlignment, } from "./bk";
4
+ var positionY = function (g, options) {
5
+ var _a = (options || {}).ranksep, ranksep = _a === void 0 ? 0 : _a;
6
+ var layering = buildLayerMatrix(g);
7
+ var prevY = 0;
8
+ layering === null || layering === void 0 ? void 0 : layering.forEach(function (layer) {
9
+ var heights = layer.map(function (v) { return g.getNode(v).data.height; });
10
+ var maxHeight = Math.max.apply(Math, __spreadArray(__spreadArray([], __read(heights)), [0]));
11
+ layer === null || layer === void 0 ? void 0 : layer.forEach(function (v) {
12
+ g.getNode(v).data.y = prevY + maxHeight / 2;
13
+ });
14
+ prevY += maxHeight + ranksep;
15
+ });
16
+ };
17
+ var positionX = function (g, options) {
18
+ var _a = options || {}, graphAlign = _a.align, _b = _a.nodesep, nodesep = _b === void 0 ? 0 : _b, _c = _a.edgesep, edgesep = _c === void 0 ? 0 : _c;
19
+ var layering = buildLayerMatrix(g);
20
+ var conflicts = Object.assign(findType1Conflicts(g, layering), findType2Conflicts(g, layering));
21
+ var xss = {};
22
+ var adjustedLayering = [];
23
+ ["u", "d"].forEach(function (vert) {
24
+ adjustedLayering =
25
+ vert === "u" ? layering : Object.values(layering).reverse();
26
+ ["l", "r"].forEach(function (horiz) {
27
+ if (horiz === "r") {
28
+ adjustedLayering = adjustedLayering.map(function (inner) {
29
+ return Object.values(inner).reverse();
30
+ });
31
+ }
32
+ var neighborFn = (vert === "u" ? g.getPredecessors : g.getSuccessors).bind(g);
33
+ var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);
34
+ var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, nodesep, edgesep, horiz === "r");
35
+ if (horiz === "r") {
36
+ Object.keys(xs).forEach(function (xsKey) { return (xs[xsKey] = -xs[xsKey]); });
37
+ }
38
+ xss[vert + horiz] = xs;
39
+ });
40
+ });
41
+ var smallestWidth = findSmallestWidthAlignment(g, xss);
42
+ smallestWidth && alignCoordinates(xss, smallestWidth);
43
+ return balance(xss, graphAlign);
44
+ };
45
+ export var position = function (g, options) {
46
+ var _a;
47
+ var ng = asNonCompoundGraph(g);
48
+ positionY(ng, options);
49
+ var xs = positionX(ng, options);
50
+ (_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach(function (key) {
51
+ ng.getNode(key).data.x = xs[key];
52
+ });
53
+ };
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dagre/position/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import { slack } from "./util";
2
+ import { minBy } from "../util";
3
+ import { Graph } from "@antv/graphlib";
4
+ /*
5
+ * Constructs a spanning tree with tight edges and adjusted the input node's
6
+ * ranks to achieve this. A tight edge is one that is has a length that matches
7
+ * its "minlen" attribute.
8
+ *
9
+ * The basic structure for this function is derived from Gansner, et al., "A
10
+ * Technique for Drawing Directed Graphs."
11
+ *
12
+ * Pre-conditions:
13
+ *
14
+ * 1. Graph must be a DAG.
15
+ * 2. Graph must be connected.
16
+ * 3. Graph must have at least one node.
17
+ * 5. Graph nodes must have been previously assigned a "rank" property that
18
+ * respects the "minlen" property of incident edges.
19
+ * 6. Graph edges must have a "minlen" property.
20
+ *
21
+ * Post-conditions:
22
+ *
23
+ * - Graph nodes will have their rank adjusted to ensure that all edges are
24
+ * tight.
25
+ *
26
+ * Returns a tree (undirected graph) that is constructed using only "tight"
27
+ * edges.
28
+ */
29
+ var feasibleTree = function (g) {
30
+ var t = new Graph({
31
+ tree: [],
32
+ });
33
+ // Choose arbitrary node from which to start our tree
34
+ var start = g.getAllNodes()[0];
35
+ var size = g.getAllNodes().length;
36
+ t.addNode(start);
37
+ var edge;
38
+ var delta;
39
+ while (tightTree(t, g) < size) {
40
+ edge = findMinSlackEdge(t, g);
41
+ delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);
42
+ shiftRanks(t, g, delta);
43
+ }
44
+ return t;
45
+ };
46
+ /*
47
+ * Finds a maximal tree of tight edges and returns the number of nodes in the
48
+ * tree.
49
+ */
50
+ var tightTree = function (t, g) {
51
+ var dfs = function (v) {
52
+ g.getRelatedEdges(v, "both").forEach(function (e) {
53
+ var edgeV = e.source;
54
+ var w = v === edgeV ? e.target : edgeV;
55
+ if (!t.hasNode(w) && !slack(g, e)) {
56
+ t.addNode({
57
+ id: w,
58
+ data: {},
59
+ });
60
+ t.addEdge({
61
+ id: e.id,
62
+ source: v,
63
+ target: w,
64
+ data: {},
65
+ });
66
+ dfs(w);
67
+ }
68
+ });
69
+ };
70
+ t.getAllNodes().forEach(function (n) { return dfs(n.id); });
71
+ return t.getAllNodes().length;
72
+ };
73
+ /*
74
+ * Constructs a spanning tree with tight edges and adjusted the input node's
75
+ * ranks to achieve this. A tight edge is one that is has a length that matches
76
+ * its "minlen" attribute.
77
+ *
78
+ * The basic structure for this function is derived from Gansner, et al., "A
79
+ * Technique for Drawing Directed Graphs."
80
+ *
81
+ * Pre-conditions:
82
+ *
83
+ * 1. Graph must be a DAG.
84
+ * 2. Graph must be connected.
85
+ * 3. Graph must have at least one node.
86
+ * 5. Graph nodes must have been previously assigned a "rank" property that
87
+ * respects the "minlen" property of incident edges.
88
+ * 6. Graph edges must have a "minlen" property.
89
+ *
90
+ * Post-conditions:
91
+ *
92
+ * - Graph nodes will have their rank adjusted to ensure that all edges are
93
+ * tight.
94
+ *
95
+ * Returns a tree (undirected graph) that is constructed using only "tight"
96
+ * edges.
97
+ */
98
+ var feasibleTreeWithLayer = function (g) {
99
+ var t = new Graph({ tree: [] });
100
+ // Choose arbitrary node from which to start our tree
101
+ var start = g.getAllNodes()[0];
102
+ var size = g.getAllNodes().length;
103
+ t.addNode(start);
104
+ var edge;
105
+ var delta;
106
+ while (tightTreeWithLayer(t, g) < size) {
107
+ edge = findMinSlackEdge(t, g);
108
+ delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);
109
+ shiftRanks(t, g, delta);
110
+ }
111
+ return t;
112
+ };
113
+ /*
114
+ * Finds a maximal tree of tight edges and returns the number of nodes in the
115
+ * tree.
116
+ */
117
+ var tightTreeWithLayer = function (t, g) {
118
+ var dfs = function (v) {
119
+ var _a;
120
+ (_a = g.getRelatedEdges(v, "both")) === null || _a === void 0 ? void 0 : _a.forEach(function (e) {
121
+ var edgeV = e.source;
122
+ var w = v === edgeV ? e.target : edgeV;
123
+ // 对于指定layer的,直接加入tight-tree,不参与调整
124
+ if (!t.hasNode(w) &&
125
+ (g.getNode(w).data.layer !== undefined || !slack(g, e))) {
126
+ t.addNode({
127
+ id: w,
128
+ data: {},
129
+ });
130
+ t.addEdge({
131
+ id: e.id,
132
+ source: v,
133
+ target: w,
134
+ data: {},
135
+ });
136
+ dfs(w);
137
+ }
138
+ });
139
+ };
140
+ t.getAllNodes().forEach(function (n) { return dfs(n.id); });
141
+ return t.getAllNodes().length;
142
+ };
143
+ /*
144
+ * Finds the edge with the smallest slack that is incident on tree and returns
145
+ * it.
146
+ */
147
+ var findMinSlackEdge = function (t, g) {
148
+ return minBy(g.getAllEdges(), function (e) {
149
+ if (t.hasNode(e.source) !== t.hasNode(e.target)) {
150
+ return slack(g, e);
151
+ }
152
+ return Infinity;
153
+ });
154
+ };
155
+ var shiftRanks = function (t, g, delta) {
156
+ t.getAllNodes().forEach(function (tn) {
157
+ var v = g.getNode(tn.id);
158
+ if (!v.data.rank)
159
+ v.data.rank = 0;
160
+ v.data.rank += delta;
161
+ });
162
+ };
163
+ export { feasibleTree, feasibleTreeWithLayer };
164
+ //# sourceMappingURL=feasible-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feasible-tree.js","sourceRoot":"","sources":["../../../src/dagre/rank/feasible-tree.ts"],"names":[],"mappings":"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"}