@antv/layout 1.2.9 → 1.2.10

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 (135) hide show
  1. package/dist/5fc550bbb6f708833d84.worker.js +2 -0
  2. package/dist/5fc550bbb6f708833d84.worker.js.map +1 -0
  3. package/dist/index.min.js +1 -1
  4. package/dist/index.min.js.map +1 -1
  5. package/package.json +1 -1
  6. package/dist/5c9e0aa9cf0218d179e9.worker.js +0 -2
  7. package/dist/5c9e0aa9cf0218d179e9.worker.js.map +0 -1
  8. package/lib/bundle-entry.js +0 -19
  9. package/lib/bundle-entry.js.map +0 -1
  10. package/lib/bundle-supervisor.js +0 -94
  11. package/lib/bundle-supervisor.js.map +0 -1
  12. package/lib/bundle-worker.js +0 -53
  13. package/lib/bundle-worker.js.map +0 -1
  14. package/lib/circular.js +0 -258
  15. package/lib/circular.js.map +0 -1
  16. package/lib/comboCombined.js +0 -441
  17. package/lib/comboCombined.js.map +0 -1
  18. package/lib/concentric.js +0 -229
  19. package/lib/concentric.js.map +0 -1
  20. package/lib/d3Force/forceInBox.js +0 -331
  21. package/lib/d3Force/forceInBox.js.map +0 -1
  22. package/lib/d3Force/index.js +0 -339
  23. package/lib/d3Force/index.js.map +0 -1
  24. package/lib/dagre/acyclic.js +0 -62
  25. package/lib/dagre/acyclic.js.map +0 -1
  26. package/lib/dagre/add-border-segments.js +0 -37
  27. package/lib/dagre/add-border-segments.js.map +0 -1
  28. package/lib/dagre/coordinate-system.js +0 -65
  29. package/lib/dagre/coordinate-system.js.map +0 -1
  30. package/lib/dagre/data/list.js +0 -50
  31. package/lib/dagre/data/list.js.map +0 -1
  32. package/lib/dagre/greedy-fas.js +0 -147
  33. package/lib/dagre/greedy-fas.js.map +0 -1
  34. package/lib/dagre/layout.js +0 -470
  35. package/lib/dagre/layout.js.map +0 -1
  36. package/lib/dagre/nesting-graph.js +0 -153
  37. package/lib/dagre/nesting-graph.js.map +0 -1
  38. package/lib/dagre/normalize.js +0 -98
  39. package/lib/dagre/normalize.js.map +0 -1
  40. package/lib/dagre/order/add-subgraph-constraints.js +0 -45
  41. package/lib/dagre/order/add-subgraph-constraints.js.map +0 -1
  42. package/lib/dagre/order/barycenter.js +0 -23
  43. package/lib/dagre/order/barycenter.js.map +0 -1
  44. package/lib/dagre/order/build-layer-graph.js +0 -96
  45. package/lib/dagre/order/build-layer-graph.js.map +0 -1
  46. package/lib/dagre/order/cross-count.js +0 -63
  47. package/lib/dagre/order/cross-count.js.map +0 -1
  48. package/lib/dagre/order/index.js +0 -91
  49. package/lib/dagre/order/index.js.map +0 -1
  50. package/lib/dagre/order/init-data-order.js +0 -28
  51. package/lib/dagre/order/init-data-order.js.map +0 -1
  52. package/lib/dagre/order/init-order.js +0 -50
  53. package/lib/dagre/order/init-order.js.map +0 -1
  54. package/lib/dagre/order/resolve-conflicts.js +0 -121
  55. package/lib/dagre/order/resolve-conflicts.js.map +0 -1
  56. package/lib/dagre/order/sort-subgraph.js +0 -84
  57. package/lib/dagre/order/sort-subgraph.js.map +0 -1
  58. package/lib/dagre/order/sort.js +0 -74
  59. package/lib/dagre/order/sort.js.map +0 -1
  60. package/lib/dagre/parent-dummy-chains.js +0 -80
  61. package/lib/dagre/parent-dummy-chains.js.map +0 -1
  62. package/lib/dagre/position/bk.js +0 -398
  63. package/lib/dagre/position/bk.js.map +0 -1
  64. package/lib/dagre/position/index.js +0 -54
  65. package/lib/dagre/position/index.js.map +0 -1
  66. package/lib/dagre/rank/feasible-tree.js +0 -164
  67. package/lib/dagre/rank/feasible-tree.js.map +0 -1
  68. package/lib/dagre/rank/index.js +0 -48
  69. package/lib/dagre/rank/index.js.map +0 -1
  70. package/lib/dagre/rank/network-simplex.js +0 -232
  71. package/lib/dagre/rank/network-simplex.js.map +0 -1
  72. package/lib/dagre/rank/util.js +0 -138
  73. package/lib/dagre/rank/util.js.map +0 -1
  74. package/lib/dagre/util.js +0 -289
  75. package/lib/dagre/util.js.map +0 -1
  76. package/lib/dagre.js +0 -545
  77. package/lib/dagre.js.map +0 -1
  78. package/lib/force/forceNBody.js +0 -123
  79. package/lib/force/forceNBody.js.map +0 -1
  80. package/lib/force/index.js +0 -805
  81. package/lib/force/index.js.map +0 -1
  82. package/lib/force/types.js +0 -2
  83. package/lib/force/types.js.map +0 -1
  84. package/lib/forceAtlas2/body.js +0 -91
  85. package/lib/forceAtlas2/body.js.map +0 -1
  86. package/lib/forceAtlas2/index.js +0 -562
  87. package/lib/forceAtlas2/index.js.map +0 -1
  88. package/lib/forceAtlas2/quad.js +0 -98
  89. package/lib/forceAtlas2/quad.js.map +0 -1
  90. package/lib/forceAtlas2/quadTree.js +0 -105
  91. package/lib/forceAtlas2/quadTree.js.map +0 -1
  92. package/lib/fruchterman.js +0 -376
  93. package/lib/fruchterman.js.map +0 -1
  94. package/lib/grid.js +0 -308
  95. package/lib/grid.js.map +0 -1
  96. package/lib/index.js +0 -17
  97. package/lib/index.js.map +0 -1
  98. package/lib/mds.js +0 -137
  99. package/lib/mds.js.map +0 -1
  100. package/lib/radial/index.js +0 -355
  101. package/lib/radial/index.js.map +0 -1
  102. package/lib/radial/mds.js +0 -29
  103. package/lib/radial/mds.js.map +0 -1
  104. package/lib/radial/radial-nonoverlap-force.js +0 -100
  105. package/lib/radial/radial-nonoverlap-force.js.map +0 -1
  106. package/lib/random.js +0 -98
  107. package/lib/random.js.map +0 -1
  108. package/lib/registry.js +0 -27
  109. package/lib/registry.js.map +0 -1
  110. package/lib/supervisor.js +0 -90
  111. package/lib/supervisor.js.map +0 -1
  112. package/lib/types.js +0 -4
  113. package/lib/types.js.map +0 -1
  114. package/lib/util/array.js +0 -2
  115. package/lib/util/array.js.map +0 -1
  116. package/lib/util/common.d.ts +0 -12
  117. package/lib/util/common.js +0 -32
  118. package/lib/util/common.js.map +0 -1
  119. package/lib/util/function.js +0 -127
  120. package/lib/util/function.js.map +0 -1
  121. package/lib/util/gpu.js +0 -214
  122. package/lib/util/gpu.js.map +0 -1
  123. package/lib/util/index.js +0 -7
  124. package/lib/util/index.js.map +0 -1
  125. package/lib/util/math.js +0 -257
  126. package/lib/util/math.js.map +0 -1
  127. package/lib/util/number.js +0 -5
  128. package/lib/util/number.js.map +0 -1
  129. package/lib/util/object.js +0 -42
  130. package/lib/util/object.js.map +0 -1
  131. package/lib/util/string.js +0 -15
  132. package/lib/util/string.js.map +0 -1
  133. package/lib/worker.d.ts +0 -1
  134. package/lib/worker.js +0 -45
  135. package/lib/worker.js.map +0 -1
package/lib/dagre.js DELETED
@@ -1,545 +0,0 @@
1
- import { __assign, __awaiter, __generator } from "tslib";
2
- import { Graph } from '@antv/graphlib';
3
- import { isNumber } from '@antv/util';
4
- import { layout } from './dagre/layout';
5
- import { cloneFormatData, formatNumberFn, formatNodeSize } from './util';
6
- var DEFAULTS_LAYOUT_OPTIONS = {
7
- rankdir: 'TB',
8
- nodesep: 50,
9
- ranksep: 50,
10
- edgeLabelSpace: true,
11
- controlPoints: false,
12
- radial: false,
13
- focusNode: null, // radial 为 true 时生效,关注的节点
14
- };
15
- /**
16
- * Layout arranging the nodes in a circle.
17
- *
18
- * @example
19
- * // Assign layout options when initialization.
20
- * const layout = new CircularLayout({ radius: 10 });
21
- * const positions = await layout.execute(graph); // { nodes: [], edges: [] }
22
- *
23
- * // Or use different options later.
24
- * const layout = new CircularLayout({ radius: 10 });
25
- * const positions = await layout.execute(graph, { radius: 20 }); // { nodes: [], edges: [] }
26
- *
27
- * // If you want to assign the positions directly to the nodes, use assign method.
28
- * await layout.assign(graph, { radius: 20 });
29
- */
30
- var DagreLayout = /** @class */ (function () {
31
- function DagreLayout(options) {
32
- if (options === void 0) { options = {}; }
33
- this.options = options;
34
- this.id = 'dagre';
35
- this.options = __assign(__assign({}, DEFAULTS_LAYOUT_OPTIONS), options);
36
- }
37
- /**
38
- * Return the positions of nodes and edges(if needed).
39
- */
40
- DagreLayout.prototype.execute = function (graph, options) {
41
- return __awaiter(this, void 0, void 0, function () {
42
- return __generator(this, function (_a) {
43
- return [2 /*return*/, this.genericDagreLayout(false, graph, options)];
44
- });
45
- });
46
- };
47
- /**
48
- * To directly assign the positions to the nodes.
49
- */
50
- DagreLayout.prototype.assign = function (graph, options) {
51
- return __awaiter(this, void 0, void 0, function () {
52
- return __generator(this, function (_a) {
53
- switch (_a.label) {
54
- case 0: return [4 /*yield*/, this.genericDagreLayout(true, graph, options)];
55
- case 1:
56
- _a.sent();
57
- return [2 /*return*/];
58
- }
59
- });
60
- });
61
- };
62
- DagreLayout.prototype.genericDagreLayout = function (assign, graph, options) {
63
- return __awaiter(this, void 0, void 0, function () {
64
- var mergedOptions, nodeSize, align, _a, rankdir, ranksep, nodesep, ranksepFunc, nodesepFunc, edgeLabelSpace, nodeOrder, begin, controlPoints, radial, sortByCombo, g, ranksepfunc, nodesepfunc, horisep, vertisep, nodeSizeFunc, nodes, edges, layoutTopLeft, minX_1, minY_1, isHorizontal, layerCoords_1, isInvert, layerCoordSort, layerCoordsArr_1, isDifferentLayer_1, filterControlPointsOutOfBoundary_1, layoutNodes, layoutEdges, result;
65
- return __generator(this, function (_b) {
66
- mergedOptions = __assign(__assign({}, this.options), options);
67
- nodeSize = mergedOptions.nodeSize, align = mergedOptions.align, _a = mergedOptions.rankdir, rankdir = _a === void 0 ? 'TB' : _a, ranksep = mergedOptions.ranksep, nodesep = mergedOptions.nodesep, ranksepFunc = mergedOptions.ranksepFunc, nodesepFunc = mergedOptions.nodesepFunc, edgeLabelSpace = mergedOptions.edgeLabelSpace, nodeOrder = mergedOptions.nodeOrder, begin = mergedOptions.begin, controlPoints = mergedOptions.controlPoints, radial = mergedOptions.radial, sortByCombo = mergedOptions.sortByCombo;
68
- g = new Graph({
69
- tree: [],
70
- });
71
- ranksepfunc = formatNumberFn(ranksep || 50, ranksepFunc);
72
- nodesepfunc = formatNumberFn(nodesep || 50, nodesepFunc);
73
- horisep = nodesepfunc;
74
- vertisep = ranksepfunc;
75
- if (rankdir === 'LR' || rankdir === 'RL') {
76
- horisep = ranksepfunc;
77
- vertisep = nodesepfunc;
78
- }
79
- nodeSizeFunc = formatNodeSize(nodeSize, undefined);
80
- nodes = graph.getAllNodes();
81
- edges = graph.getAllEdges();
82
- nodes.forEach(function (node) {
83
- var size = nodeSizeFunc(node);
84
- var verti = vertisep(node);
85
- var hori = horisep(node);
86
- // FIXME: support 2 dimensions?
87
- // const width = size[0] + 2 * hori;
88
- // const height = size[1] + 2 * verti;
89
- var width = size + 2 * hori;
90
- var height = size + 2 * verti;
91
- var layer = node.data.layer;
92
- if (isNumber(layer)) {
93
- // 如果有layer属性,加入到node的label中
94
- g.addNode({
95
- id: node.id,
96
- data: { width: width, height: height, layer: layer },
97
- });
98
- }
99
- else {
100
- g.addNode({
101
- id: node.id,
102
- data: { width: width, height: height },
103
- });
104
- }
105
- });
106
- if (sortByCombo) {
107
- g.attachTreeStructure('combo');
108
- nodes.forEach(function (node) {
109
- var parentId = node.data.parentId;
110
- if (parentId === undefined)
111
- return;
112
- if (g.hasNode(parentId)) {
113
- g.setParent(node.id, parentId, 'combo');
114
- }
115
- });
116
- }
117
- edges.forEach(function (edge) {
118
- // dagrejs Wiki https://github.com/dagrejs/dagre/wiki#configuring-the-layout
119
- g.addEdge({
120
- id: edge.id,
121
- source: edge.source,
122
- target: edge.target,
123
- data: {
124
- weight: edge.data.weight || 1,
125
- },
126
- });
127
- });
128
- // TODO: combo & prevGraph
129
- layout(g, {
130
- prevGraph: null,
131
- edgeLabelSpace: edgeLabelSpace,
132
- keepNodeOrder: !!nodeOrder,
133
- nodeOrder: nodeOrder || [],
134
- acyclicer: 'greedy',
135
- ranker: 'network-simplex',
136
- rankdir: rankdir,
137
- nodesep: nodesep,
138
- align: align,
139
- });
140
- layoutTopLeft = [0, 0];
141
- if (begin) {
142
- minX_1 = Infinity;
143
- minY_1 = Infinity;
144
- g.getAllNodes().forEach(function (node) {
145
- if (minX_1 > node.data.x)
146
- minX_1 = node.data.x;
147
- if (minY_1 > node.data.y)
148
- minY_1 = node.data.y;
149
- });
150
- g.getAllEdges().forEach(function (edge) {
151
- var _a;
152
- (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach(function (point) {
153
- if (minX_1 > point.x)
154
- minX_1 = point.x;
155
- if (minY_1 > point.y)
156
- minY_1 = point.y;
157
- });
158
- });
159
- layoutTopLeft[0] = begin[0] - minX_1;
160
- layoutTopLeft[1] = begin[1] - minY_1;
161
- }
162
- isHorizontal = rankdir === 'LR' || rankdir === 'RL';
163
- if (radial) {
164
- // const focusId = (isString(focusNode) ? focusNode : focusNode?.id) as ID;
165
- // const focusLayer = focusId ? g.getNode(focusId)?.data._rank as number : 0;
166
- // const layers: any[] = [];
167
- // const dim = isHorizontal ? "y" : "x";
168
- // const sizeDim = isHorizontal ? "height" : "width";
169
- // // 找到整个图作为环的坐标维度(dim)的最大、最小值,考虑节点宽度
170
- // let min = Infinity;
171
- // let max = -Infinity;
172
- // g.getAllNodes().forEach((node) => {
173
- // const currentNodesep = nodesepfunc(node);
174
- // if (focusLayer === 0) {
175
- // if (!layers[node.data._rank!]) {
176
- // layers[node.data._rank!] = {
177
- // nodes: [],
178
- // totalWidth: 0,
179
- // maxSize: -Infinity,
180
- // };
181
- // }
182
- // layers[node.data._rank!].nodes.push(node);
183
- // layers[node.data._rank!].totalWidth += currentNodesep * 2 + node.data[sizeDim]!;
184
- // if (
185
- // layers[node.data._rank!].maxSize < Math.max(node.data.width!, node.data.height!)
186
- // ) {
187
- // layers[node.data._rank!].maxSize = Math.max(node.data.width!, node.data.height!);
188
- // }
189
- // } else {
190
- // const diffLayer = node.data._rank! - focusLayer!;
191
- // if (diffLayer === 0) {
192
- // if (!layers[diffLayer]) {
193
- // layers[diffLayer] = {
194
- // nodes: [],
195
- // totalWidth: 0,
196
- // maxSize: -Infinity,
197
- // };
198
- // }
199
- // layers[diffLayer].nodes.push(node);
200
- // layers[diffLayer].totalWidth += currentNodesep * 2 + node.data[sizeDim]!;
201
- // if (
202
- // layers[diffLayer].maxSize < Math.max(node.data.width!, node.data.height!)
203
- // ) {
204
- // layers[diffLayer].maxSize = Math.max(node.data.width!, node.data.height!);
205
- // }
206
- // } else {
207
- // const diffLayerAbs = Math.abs(diffLayer);
208
- // if (!layers[diffLayerAbs]) {
209
- // layers[diffLayerAbs] = {
210
- // left: [],
211
- // right: [],
212
- // totalWidth: 0,
213
- // maxSize: -Infinity,
214
- // };
215
- // }
216
- // layers[diffLayerAbs].totalWidth +=
217
- // currentNodesep * 2 + node.data[sizeDim]!;
218
- // if (
219
- // layers[diffLayerAbs].maxSize < Math.max(node.data.width!, node.data.height!)
220
- // ) {
221
- // layers[diffLayerAbs].maxSize = Math.max(
222
- // node.data.width!,
223
- // node.data.height!
224
- // );
225
- // }
226
- // if (diffLayer < 0) {
227
- // layers[diffLayerAbs].left.push(node);
228
- // } else {
229
- // layers[diffLayerAbs].right.push(node);
230
- // }
231
- // }
232
- // }
233
- // const leftPos = node.data[dim]! - node.data[sizeDim]! / 2 - currentNodesep;
234
- // const rightPos = node.data[dim]! + node.data[sizeDim]! / 2 + currentNodesep;
235
- // if (leftPos < min) min = leftPos;
236
- // if (rightPos > max) max = rightPos;
237
- // });
238
- // // const padding = (max - min) * 0.1; // TODO
239
- // // 初始化为第一圈的半径,后面根据每层 ranksep 叠加
240
- // let radius = ranksep || 50; // TODO;
241
- // const radiusMap: any = {};
242
- // // 扩大最大最小值范围,以便为环上留出接缝处的空隙
243
- // const rangeLength = (max - min) / 0.9;
244
- // const range = [
245
- // (min + max - rangeLength) * 0.5,
246
- // (min + max + rangeLength) * 0.5,
247
- // ];
248
- // // 根据半径、分布比例,计算节点在环上的位置,并返回该组节点中最大的 ranksep 值
249
- // const processNodes = (
250
- // layerNodes: any,
251
- // radius: number,
252
- // propsMaxRanksep = -Infinity,
253
- // arcRange = [0, 1]
254
- // ) => {
255
- // let maxRanksep = propsMaxRanksep;
256
- // layerNodes.forEach((node: any) => {
257
- // const coord = g.node(node);
258
- // radiusMap[node] = radius;
259
- // // 获取变形为 radial 后的直角坐标系坐标
260
- // const { x: newX, y: newY } = getRadialPos(
261
- // coord![dim]!,
262
- // range,
263
- // rangeLength,
264
- // radius,
265
- // arcRange
266
- // );
267
- // // 将新坐标写入源数据
268
- // const i = nodes.findIndex((it) => it.id === node);
269
- // if (!nodes[i]) return;
270
- // nodes[i].x = newX + dBegin[0];
271
- // nodes[i].y = newY + dBegin[1];
272
- // // @ts-ignore: pass layer order to data for increment layout use
273
- // nodes[i]._order = coord._order;
274
- // // 找到本层最大的一个 ranksep,作为下一层与本层的间隙,叠加到下一层的半径上
275
- // const currentNodeRanksep = ranksepfunc(nodes[i]);
276
- // if (maxRanksep < currentNodeRanksep) maxRanksep = currentNodeRanksep;
277
- // });
278
- // return maxRanksep;
279
- // };
280
- // let isFirstLevel = true;
281
- // const lastLayerMaxNodeSize = 0;
282
- // layers.forEach((layerNodes) => {
283
- // if (
284
- // !layerNodes?.nodes?.length &&
285
- // !layerNodes?.left?.length &&
286
- // !layerNodes?.right?.length
287
- // ) {
288
- // return;
289
- // }
290
- // // 第一层只有一个节点,直接放在圆心,初始半径设定为 0
291
- // if (isFirstLevel && layerNodes.nodes.length === 1) {
292
- // // 将新坐标写入源数据
293
- // const i = nodes.findIndex((it) => it.id === layerNodes.nodes[0]);
294
- // if (i <= -1) return;
295
- // nodes[i].x = dBegin[0];
296
- // nodes[i].y = dBegin[1];
297
- // radiusMap[layerNodes.nodes[0]] = 0;
298
- // radius = ranksepfunc(nodes[i]);
299
- // isFirstLevel = false;
300
- // return;
301
- // }
302
- // // 为接缝留出空隙,半径也需要扩大
303
- // radius = Math.max(radius, layerNodes.totalWidth / (2 * Math.PI)); // / 0.9;
304
- // let maxRanksep = -Infinity;
305
- // if (focusLayer === 0 || layerNodes.nodes?.length) {
306
- // maxRanksep = processNodes(
307
- // layerNodes.nodes,
308
- // radius,
309
- // maxRanksep,
310
- // [0, 1]
311
- // ); // 0.8
312
- // } else {
313
- // const leftRatio =
314
- // layerNodes.left?.length /
315
- // (layerNodes.left?.length + layerNodes.right?.length);
316
- // maxRanksep = processNodes(layerNodes.left, radius, maxRanksep, [
317
- // 0,
318
- // leftRatio,
319
- // ]); // 接缝留出 0.05 的缝隙
320
- // maxRanksep = processNodes(layerNodes.right, radius, maxRanksep, [
321
- // leftRatio + 0.05,
322
- // 1,
323
- // ]); // 接缝留出 0.05 的缝隙
324
- // }
325
- // radius += maxRanksep;
326
- // isFirstLevel = false;
327
- // lastLayerMaxNodeSize - layerNodes.maxSize;
328
- // });
329
- // g.edges().forEach((edge: any) => {
330
- // const coord = g.edge(edge);
331
- // const i = edges.findIndex((it) => {
332
- // const source = getEdgeTerminal(it, "source");
333
- // const target = getEdgeTerminal(it, "target");
334
- // return source === edge.v && target === edge.w;
335
- // });
336
- // if (i <= -1) return;
337
- // if (
338
- // self.edgeLabelSpace &&
339
- // self.controlPoints &&
340
- // edges[i].type !== "loop"
341
- // ) {
342
- // const otherDim = dim === "x" ? "y" : "x";
343
- // const controlPoints = coord?.points?.slice(
344
- // 1,
345
- // coord.points.length - 1
346
- // );
347
- // const newControlPoints: Point[] = [];
348
- // const sourceOtherDimValue = g.node(edge.v)?.[otherDim]!;
349
- // const otherDimDist =
350
- // sourceOtherDimValue - g.node(edge.w)?.[otherDim]!;
351
- // const sourceRadius = radiusMap[edge.v];
352
- // const radiusDist = sourceRadius - radiusMap[edge.w];
353
- // controlPoints?.forEach((point: any) => {
354
- // // 根据该边的起点、终点半径,及起点、终点、控制点位置关系,确定该控制点的半径
355
- // const cRadius =
356
- // ((point[otherDim] - sourceOtherDimValue) / otherDimDist) *
357
- // radiusDist +
358
- // sourceRadius;
359
- // // 获取变形为 radial 后的直角坐标系坐标
360
- // const newPos = getRadialPos(
361
- // point[dim],
362
- // range,
363
- // rangeLength,
364
- // cRadius
365
- // );
366
- // newControlPoints.push({
367
- // x: newPos.x + dBegin[0],
368
- // y: newPos.y + dBegin[1],
369
- // });
370
- // });
371
- // edges[i].controlPoints = newControlPoints;
372
- // }
373
- // });
374
- }
375
- else {
376
- layerCoords_1 = new Set();
377
- isInvert = rankdir === 'BT' || rankdir === 'RL';
378
- layerCoordSort = isInvert
379
- ? function (a, b) { return b - a; }
380
- : function (a, b) { return a - b; };
381
- g.getAllNodes().forEach(function (node) {
382
- // let ndata: any = this.nodeMap[node];
383
- // if (!ndata) {
384
- // ndata = combos?.find((it) => it.id === node);
385
- // }
386
- // if (!ndata) return;
387
- // ndata.x = node.data.x! + dBegin[0];
388
- // ndata.y = node.data.y! + dBegin[1];
389
- // // pass layer order to data for increment layout use
390
- // ndata._order = node.data._order;
391
- // layerCoords.add(isHorizontal ? ndata.x : ndata.y);
392
- node.data.x = node.data.x + layoutTopLeft[0];
393
- node.data.y = node.data.y + layoutTopLeft[1];
394
- layerCoords_1.add(isHorizontal ? node.data.x : node.data.y);
395
- });
396
- layerCoordsArr_1 = Array.from(layerCoords_1).sort(layerCoordSort);
397
- isDifferentLayer_1 = isHorizontal
398
- ? function (point1, point2) { return point1.x !== point2.x; }
399
- : function (point1, point2) { return point1.y !== point2.y; };
400
- filterControlPointsOutOfBoundary_1 = isHorizontal
401
- ? function (ps, point1, point2) {
402
- var max = Math.max(point1.y, point2.y);
403
- var min = Math.min(point1.y, point2.y);
404
- return ps.filter(function (point) { return point.y <= max && point.y >= min; });
405
- }
406
- : function (ps, point1, point2) {
407
- var max = Math.max(point1.x, point2.x);
408
- var min = Math.min(point1.x, point2.x);
409
- return ps.filter(function (point) { return point.x <= max && point.x >= min; });
410
- };
411
- g.getAllEdges().forEach(function (edge, i) {
412
- var _a;
413
- // const i = edges.findIndex((it) => {
414
- // return it.source === edge.source && it.target === edge.target;
415
- // });
416
- // if (i <= -1) return;
417
- if (edgeLabelSpace && controlPoints && edge.data.type !== 'loop') {
418
- edge.data.controlPoints = getControlPoints((_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.map(function (_a) {
419
- var x = _a.x, y = _a.y;
420
- return ({
421
- x: x + layoutTopLeft[0],
422
- y: y + layoutTopLeft[1],
423
- });
424
- }), g.getNode(edge.source), g.getNode(edge.target), layerCoordsArr_1, isHorizontal, isDifferentLayer_1, filterControlPointsOutOfBoundary_1);
425
- }
426
- });
427
- }
428
- layoutNodes = [];
429
- // layout according to the original order in the data.nodes
430
- layoutNodes = g
431
- .getAllNodes()
432
- .map(function (node) { return cloneFormatData(node); });
433
- layoutEdges = g.getAllEdges();
434
- if (assign) {
435
- layoutNodes.forEach(function (node) {
436
- graph.mergeNodeData(node.id, {
437
- x: node.data.x,
438
- y: node.data.y,
439
- });
440
- });
441
- layoutEdges.forEach(function (edge) {
442
- graph.mergeEdgeData(edge.id, {
443
- controlPoints: edge.data.controlPoints,
444
- });
445
- });
446
- }
447
- result = {
448
- nodes: layoutNodes,
449
- edges: layoutEdges,
450
- };
451
- return [2 /*return*/, result];
452
- });
453
- });
454
- };
455
- return DagreLayout;
456
- }());
457
- export { DagreLayout };
458
- /**
459
- * Format controlPoints to avoid polylines crossing nodes
460
- * @param points
461
- * @param sourceNode
462
- * @param targetNode
463
- * @param layerCoordsArr
464
- * @param isHorizontal
465
- * @returns
466
- */
467
- var getControlPoints = function (points, sourceNode, targetNode, layerCoordsArr, isHorizontal, isDifferentLayer, filterControlPointsOutOfBoundary) {
468
- var controlPoints = (points === null || points === void 0 ? void 0 : points.slice(1, points.length - 1)) || []; // 去掉头尾
469
- // 酌情增加控制点,使折线不穿过跨层的节点
470
- if (sourceNode && targetNode) {
471
- var _a = sourceNode.data, sourceX = _a.x, sourceY = _a.y;
472
- var _b = targetNode.data, targetX = _b.x, targetY = _b.y;
473
- if (isHorizontal) {
474
- sourceX = sourceNode.data.y;
475
- sourceY = sourceNode.data.x;
476
- targetX = targetNode.data.y;
477
- targetY = targetNode.data.x;
478
- }
479
- // 为跨层级的边增加第一个控制点。忽略垂直的/横向的边。
480
- // 新控制点 = {
481
- // x: 终点x,
482
- // y: (起点y + 下一层y) / 2, #下一层y可能不等于终点y
483
- // }
484
- if (targetY !== sourceY && sourceX !== targetX) {
485
- var sourceLayer = layerCoordsArr.indexOf(sourceY);
486
- var sourceNextLayerCoord = layerCoordsArr[sourceLayer + 1];
487
- if (sourceNextLayerCoord) {
488
- var firstControlPoint = controlPoints[0];
489
- var insertStartControlPoint = (isHorizontal
490
- ? {
491
- x: (sourceY + sourceNextLayerCoord) / 2,
492
- y: (firstControlPoint === null || firstControlPoint === void 0 ? void 0 : firstControlPoint.y) || targetX,
493
- }
494
- : {
495
- x: (firstControlPoint === null || firstControlPoint === void 0 ? void 0 : firstControlPoint.x) || targetX,
496
- y: (sourceY + sourceNextLayerCoord) / 2,
497
- });
498
- // 当新增的控制点不存在(!=当前第一个控制点)时添加
499
- if (!firstControlPoint ||
500
- isDifferentLayer(firstControlPoint, insertStartControlPoint)) {
501
- controlPoints.unshift(insertStartControlPoint);
502
- }
503
- }
504
- var targetLayer = layerCoordsArr.indexOf(targetY);
505
- var layerDiff = Math.abs(targetLayer - sourceLayer);
506
- if (layerDiff === 1) {
507
- controlPoints = filterControlPointsOutOfBoundary(controlPoints, sourceNode.data, targetNode.data);
508
- // one controlPoint at least
509
- if (!controlPoints.length) {
510
- controlPoints.push((isHorizontal
511
- ? {
512
- x: (sourceY + targetY) / 2,
513
- y: sourceX,
514
- }
515
- : {
516
- x: sourceX,
517
- y: (sourceY + targetY) / 2,
518
- }));
519
- }
520
- }
521
- else if (layerDiff > 1) {
522
- var targetLastLayerCoord = layerCoordsArr[targetLayer - 1];
523
- if (targetLastLayerCoord) {
524
- var lastControlPoints = controlPoints[controlPoints.length - 1];
525
- var insertEndControlPoint = (isHorizontal
526
- ? {
527
- x: (targetY + targetLastLayerCoord) / 2,
528
- y: (lastControlPoints === null || lastControlPoints === void 0 ? void 0 : lastControlPoints.y) || targetX,
529
- }
530
- : {
531
- x: (lastControlPoints === null || lastControlPoints === void 0 ? void 0 : lastControlPoints.x) || sourceX,
532
- y: (targetY + targetLastLayerCoord) / 2,
533
- });
534
- // 当新增的控制点不存在(!=当前最后一个控制点)时添加
535
- if (!lastControlPoints ||
536
- isDifferentLayer(lastControlPoints, insertEndControlPoint)) {
537
- controlPoints.push(insertEndControlPoint);
538
- }
539
- }
540
- }
541
- }
542
- }
543
- return controlPoints;
544
- };
545
- //# sourceMappingURL=dagre.js.map
package/lib/dagre.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"dagre.js","sourceRoot":"","sources":["../src/dagre.ts"],"names":[],"mappings":"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"}