@antv/layout 1.2.10 → 1.2.11-beta.0

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 (134) hide show
  1. package/dist/{5fc550bbb6f708833d84.worker.js → 1364056b7ad586222caf.worker.js} +2 -2
  2. package/dist/1364056b7ad586222caf.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.js +19 -0
  6. package/lib/bundle-entry.js.map +1 -0
  7. package/lib/bundle-supervisor.js +94 -0
  8. package/lib/bundle-supervisor.js.map +1 -0
  9. package/lib/bundle-worker.js +53 -0
  10. package/lib/bundle-worker.js.map +1 -0
  11. package/lib/circular.js +258 -0
  12. package/lib/circular.js.map +1 -0
  13. package/lib/comboCombined.js +441 -0
  14. package/lib/comboCombined.js.map +1 -0
  15. package/lib/concentric.js +229 -0
  16. package/lib/concentric.js.map +1 -0
  17. package/lib/d3Force/forceInBox.js +331 -0
  18. package/lib/d3Force/forceInBox.js.map +1 -0
  19. package/lib/d3Force/index.js +339 -0
  20. package/lib/d3Force/index.js.map +1 -0
  21. package/lib/dagre/acyclic.js +62 -0
  22. package/lib/dagre/acyclic.js.map +1 -0
  23. package/lib/dagre/add-border-segments.js +37 -0
  24. package/lib/dagre/add-border-segments.js.map +1 -0
  25. package/lib/dagre/coordinate-system.js +65 -0
  26. package/lib/dagre/coordinate-system.js.map +1 -0
  27. package/lib/dagre/data/list.js +50 -0
  28. package/lib/dagre/data/list.js.map +1 -0
  29. package/lib/dagre/greedy-fas.js +147 -0
  30. package/lib/dagre/greedy-fas.js.map +1 -0
  31. package/lib/dagre/layout.js +470 -0
  32. package/lib/dagre/layout.js.map +1 -0
  33. package/lib/dagre/nesting-graph.js +153 -0
  34. package/lib/dagre/nesting-graph.js.map +1 -0
  35. package/lib/dagre/normalize.js +98 -0
  36. package/lib/dagre/normalize.js.map +1 -0
  37. package/lib/dagre/order/add-subgraph-constraints.js +45 -0
  38. package/lib/dagre/order/add-subgraph-constraints.js.map +1 -0
  39. package/lib/dagre/order/barycenter.js +23 -0
  40. package/lib/dagre/order/barycenter.js.map +1 -0
  41. package/lib/dagre/order/build-layer-graph.js +96 -0
  42. package/lib/dagre/order/build-layer-graph.js.map +1 -0
  43. package/lib/dagre/order/cross-count.js +63 -0
  44. package/lib/dagre/order/cross-count.js.map +1 -0
  45. package/lib/dagre/order/index.js +91 -0
  46. package/lib/dagre/order/index.js.map +1 -0
  47. package/lib/dagre/order/init-data-order.js +28 -0
  48. package/lib/dagre/order/init-data-order.js.map +1 -0
  49. package/lib/dagre/order/init-order.js +50 -0
  50. package/lib/dagre/order/init-order.js.map +1 -0
  51. package/lib/dagre/order/resolve-conflicts.js +121 -0
  52. package/lib/dagre/order/resolve-conflicts.js.map +1 -0
  53. package/lib/dagre/order/sort-subgraph.js +84 -0
  54. package/lib/dagre/order/sort-subgraph.js.map +1 -0
  55. package/lib/dagre/order/sort.js +74 -0
  56. package/lib/dagre/order/sort.js.map +1 -0
  57. package/lib/dagre/parent-dummy-chains.js +80 -0
  58. package/lib/dagre/parent-dummy-chains.js.map +1 -0
  59. package/lib/dagre/position/bk.js +398 -0
  60. package/lib/dagre/position/bk.js.map +1 -0
  61. package/lib/dagre/position/index.js +54 -0
  62. package/lib/dagre/position/index.js.map +1 -0
  63. package/lib/dagre/rank/feasible-tree.js +164 -0
  64. package/lib/dagre/rank/feasible-tree.js.map +1 -0
  65. package/lib/dagre/rank/index.js +48 -0
  66. package/lib/dagre/rank/index.js.map +1 -0
  67. package/lib/dagre/rank/network-simplex.js +232 -0
  68. package/lib/dagre/rank/network-simplex.js.map +1 -0
  69. package/lib/dagre/rank/util.js +138 -0
  70. package/lib/dagre/rank/util.js.map +1 -0
  71. package/lib/dagre/util.js +289 -0
  72. package/lib/dagre/util.js.map +1 -0
  73. package/lib/dagre.js +552 -0
  74. package/lib/dagre.js.map +1 -0
  75. package/lib/force/forceNBody.js +123 -0
  76. package/lib/force/forceNBody.js.map +1 -0
  77. package/lib/force/index.js +805 -0
  78. package/lib/force/index.js.map +1 -0
  79. package/lib/force/types.js +2 -0
  80. package/lib/force/types.js.map +1 -0
  81. package/lib/forceAtlas2/body.js +91 -0
  82. package/lib/forceAtlas2/body.js.map +1 -0
  83. package/lib/forceAtlas2/index.js +562 -0
  84. package/lib/forceAtlas2/index.js.map +1 -0
  85. package/lib/forceAtlas2/quad.js +98 -0
  86. package/lib/forceAtlas2/quad.js.map +1 -0
  87. package/lib/forceAtlas2/quadTree.js +105 -0
  88. package/lib/forceAtlas2/quadTree.js.map +1 -0
  89. package/lib/fruchterman.js +376 -0
  90. package/lib/fruchterman.js.map +1 -0
  91. package/lib/grid.js +308 -0
  92. package/lib/grid.js.map +1 -0
  93. package/lib/index.js +17 -0
  94. package/lib/index.js.map +1 -0
  95. package/lib/mds.js +137 -0
  96. package/lib/mds.js.map +1 -0
  97. package/lib/radial/index.js +355 -0
  98. package/lib/radial/index.js.map +1 -0
  99. package/lib/radial/mds.js +29 -0
  100. package/lib/radial/mds.js.map +1 -0
  101. package/lib/radial/radial-nonoverlap-force.js +100 -0
  102. package/lib/radial/radial-nonoverlap-force.js.map +1 -0
  103. package/lib/random.js +98 -0
  104. package/lib/random.js.map +1 -0
  105. package/lib/registry.js +27 -0
  106. package/lib/registry.js.map +1 -0
  107. package/lib/supervisor.js +90 -0
  108. package/lib/supervisor.js.map +1 -0
  109. package/lib/types.js +4 -0
  110. package/lib/types.js.map +1 -0
  111. package/lib/util/array.js +2 -0
  112. package/lib/util/array.js.map +1 -0
  113. package/lib/util/common.d.ts +12 -0
  114. package/lib/util/common.js +32 -0
  115. package/lib/util/common.js.map +1 -0
  116. package/lib/util/function.js +126 -0
  117. package/lib/util/function.js.map +1 -0
  118. package/lib/util/gpu.js +214 -0
  119. package/lib/util/gpu.js.map +1 -0
  120. package/lib/util/index.js +7 -0
  121. package/lib/util/index.js.map +1 -0
  122. package/lib/util/math.js +257 -0
  123. package/lib/util/math.js.map +1 -0
  124. package/lib/util/number.js +5 -0
  125. package/lib/util/number.js.map +1 -0
  126. package/lib/util/object.js +42 -0
  127. package/lib/util/object.js.map +1 -0
  128. package/lib/util/string.js +15 -0
  129. package/lib/util/string.js.map +1 -0
  130. package/lib/worker.d.ts +1 -0
  131. package/lib/worker.js +45 -0
  132. package/lib/worker.js.map +1 -0
  133. package/package.json +1 -1
  134. package/dist/5fc550bbb6f708833d84.worker.js.map +0 -1
@@ -0,0 +1,441 @@
1
+ import { __assign, __awaiter, __generator, __read, __spreadArray } from "tslib";
2
+ import { isFunction, isNumber, isObject } from '@antv/util';
3
+ import { Graph as GraphCore } from '@antv/graphlib';
4
+ import { isArray, getLayoutBBox, graphTreeDfs } from './util';
5
+ import { handleSingleNodeGraph } from './util/common';
6
+ import { MDSLayout } from './mds';
7
+ import { ForceLayout } from './force';
8
+ import { ConcentricLayout } from './concentric';
9
+ var FORCE_LAYOUT_TYPE_MAP = {
10
+ gForce: true,
11
+ force2: true,
12
+ d3force: true,
13
+ fruchterman: true,
14
+ forceAtlas2: true,
15
+ force: true,
16
+ 'graphin-force': true,
17
+ };
18
+ var DEFAULTS_LAYOUT_OPTIONS = {
19
+ center: [0, 0],
20
+ comboPadding: 10,
21
+ treeKey: 'combo',
22
+ };
23
+ /**
24
+ * Layout arranging the nodes and combos with combination of inner and outer layouts.
25
+ *
26
+ * @example
27
+ * // Assign layout options when initialization.
28
+ * const layout = new ComboCombinedLayout({});
29
+ * const positions = await layout.execute(graph); // { nodes: [], edges: [] }
30
+ *
31
+ * // Or use different options later.
32
+ * const layout = new ComboCombinedLayout({ radius: 10 });
33
+ * const positions = await layout.execute(graph, { radius: 20 }); // { nodes: [], edges: [] }
34
+ *
35
+ * // If you want to assign the positions directly to the nodes, use assign method.
36
+ * await layout.assign(graph, { radius: 20 });
37
+ */
38
+ var ComboCombinedLayout = /** @class */ (function () {
39
+ function ComboCombinedLayout(options) {
40
+ if (options === void 0) { options = {}; }
41
+ this.options = options;
42
+ this.id = 'comboCombined';
43
+ this.options = __assign(__assign({}, DEFAULTS_LAYOUT_OPTIONS), options);
44
+ }
45
+ /**
46
+ * Return the positions of nodes and edges(if needed).
47
+ */
48
+ ComboCombinedLayout.prototype.execute = function (graph, options) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ return __generator(this, function (_a) {
51
+ return [2 /*return*/, this.genericComboCombinedLayout(false, graph, options)];
52
+ });
53
+ });
54
+ };
55
+ /**
56
+ * To directly assign the positions to the nodes.
57
+ */
58
+ ComboCombinedLayout.prototype.assign = function (graph, options) {
59
+ return __awaiter(this, void 0, void 0, function () {
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0: return [4 /*yield*/, this.genericComboCombinedLayout(true, graph, options)];
63
+ case 1:
64
+ _a.sent();
65
+ return [2 /*return*/];
66
+ }
67
+ });
68
+ });
69
+ };
70
+ ComboCombinedLayout.prototype.genericComboCombinedLayout = function (assign, graph, options) {
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ var mergedOptions, center, treeKey, propsOuterLayout, nodes, combos, edges, n, layoutNodes, nodeMap, comboMap, comboNodes, innerGraphLayoutPromises, outerNodeIds, outerLayoutNodes, nodeAncestorIdMap, allHaveNoPosition, outerLayoutEdges, outerPositions, outerLayoutGraph, outerLayout, outerLayoutPreset, result;
73
+ return __generator(this, function (_a) {
74
+ switch (_a.label) {
75
+ case 0:
76
+ mergedOptions = this.initVals(__assign(__assign({}, this.options), options));
77
+ center = mergedOptions.center, treeKey = mergedOptions.treeKey, propsOuterLayout = mergedOptions.outerLayout;
78
+ nodes = graph
79
+ .getAllNodes()
80
+ .filter(function (node) { return !node.data._isCombo; });
81
+ combos = graph
82
+ .getAllNodes()
83
+ .filter(function (node) { return node.data._isCombo; });
84
+ edges = graph.getAllEdges();
85
+ n = nodes === null || nodes === void 0 ? void 0 : nodes.length;
86
+ if (!n || n === 1) {
87
+ return [2 /*return*/, handleSingleNodeGraph(graph, assign, center)];
88
+ }
89
+ layoutNodes = [];
90
+ nodeMap = new Map();
91
+ nodes.forEach(function (node) {
92
+ nodeMap.set(node.id, node);
93
+ });
94
+ comboMap = new Map();
95
+ combos.forEach(function (combo) {
96
+ comboMap.set(combo.id, combo);
97
+ });
98
+ comboNodes = new Map();
99
+ innerGraphLayoutPromises = this.getInnerGraphs(graph, treeKey, nodeMap, comboMap, edges, mergedOptions, comboNodes);
100
+ return [4 /*yield*/, Promise.all(innerGraphLayoutPromises)];
101
+ case 1:
102
+ _a.sent();
103
+ outerNodeIds = new Map();
104
+ outerLayoutNodes = [];
105
+ nodeAncestorIdMap = new Map();
106
+ allHaveNoPosition = true;
107
+ graph.getRoots(treeKey).forEach(function (root) {
108
+ var combo = comboNodes.get(root.id);
109
+ var cacheCombo = comboMap.get(root.id) || nodeMap.get(root.id);
110
+ var comboLayoutNode = {
111
+ id: root.id,
112
+ data: __assign(__assign({}, root.data), { x: combo.data.x || cacheCombo.data.x, y: combo.data.y || cacheCombo.data.y, fx: combo.data.fx || cacheCombo.data.fx, fy: combo.data.fy || cacheCombo.data.fy, mass: combo.data.mass || cacheCombo.data.mass, size: combo.data.size }),
113
+ };
114
+ outerLayoutNodes.push(comboLayoutNode);
115
+ outerNodeIds.set(root.id, true);
116
+ if (!isNaN(comboLayoutNode.data.x) &&
117
+ comboLayoutNode.data.x !== 0 &&
118
+ !isNaN(comboLayoutNode.data.y) &&
119
+ comboLayoutNode.data.y !== 0) {
120
+ allHaveNoPosition = false;
121
+ }
122
+ else {
123
+ comboLayoutNode.data.x = Math.random() * 100;
124
+ comboLayoutNode.data.y = Math.random() * 100;
125
+ }
126
+ graphTreeDfs(graph, [root], function (child) {
127
+ if (child.id !== root.id)
128
+ nodeAncestorIdMap.set(child.id, root.id);
129
+ }, 'TB', treeKey);
130
+ });
131
+ outerLayoutEdges = [];
132
+ edges.forEach(function (edge) {
133
+ var sourceAncestorId = nodeAncestorIdMap.get(edge.source) || edge.source;
134
+ var targetAncestorId = nodeAncestorIdMap.get(edge.target) || edge.target;
135
+ // create an edge for outer layout if both source and target's ancestor combo is in outer layout nodes
136
+ if (sourceAncestorId !== targetAncestorId &&
137
+ outerNodeIds.has(sourceAncestorId) &&
138
+ outerNodeIds.has(targetAncestorId)) {
139
+ outerLayoutEdges.push({
140
+ id: edge.id,
141
+ source: sourceAncestorId,
142
+ target: targetAncestorId,
143
+ data: {},
144
+ });
145
+ }
146
+ });
147
+ if (!(outerLayoutNodes === null || outerLayoutNodes === void 0 ? void 0 : outerLayoutNodes.length)) return [3 /*break*/, 7];
148
+ if (!(outerLayoutNodes.length === 1)) return [3 /*break*/, 2];
149
+ outerLayoutNodes[0].data.x = center[0];
150
+ outerLayoutNodes[0].data.y = center[1];
151
+ return [3 /*break*/, 6];
152
+ case 2:
153
+ outerLayoutGraph = new GraphCore({
154
+ nodes: outerLayoutNodes,
155
+ edges: outerLayoutEdges,
156
+ });
157
+ outerLayout = propsOuterLayout || new ForceLayout();
158
+ if (!(allHaveNoPosition && FORCE_LAYOUT_TYPE_MAP[outerLayout.id])) return [3 /*break*/, 4];
159
+ outerLayoutPreset = outerLayoutNodes.length < 100
160
+ ? new MDSLayout()
161
+ : new ConcentricLayout();
162
+ return [4 /*yield*/, outerLayoutPreset.assign(outerLayoutGraph)];
163
+ case 3:
164
+ _a.sent();
165
+ _a.label = 4;
166
+ case 4: return [4 /*yield*/, outerLayout.execute(outerLayoutGraph, __assign({ center: center, kg: 5, preventOverlap: true, animate: false }, (outerLayout.id === 'force'
167
+ ? {
168
+ gravity: 1,
169
+ factor: 4,
170
+ linkDistance: function (edge, source, target) {
171
+ var sourceSize = Math.max.apply(Math, __spreadArray([], __read(source.data.size))) || 32;
172
+ var targetSize = Math.max.apply(Math, __spreadArray([], __read(target.data.size))) || 32;
173
+ return sourceSize / 2 + targetSize / 2 + 200;
174
+ },
175
+ }
176
+ : {})))];
177
+ case 5:
178
+ outerPositions = _a.sent();
179
+ _a.label = 6;
180
+ case 6:
181
+ // move the combos and their child nodes
182
+ comboNodes.forEach(function (comboNode) {
183
+ var _a;
184
+ var outerPosition = outerPositions.nodes.find(function (pos) { return pos.id === comboNode.id; });
185
+ if (outerPosition) {
186
+ // if it is one of the outer layout nodes, update the positions
187
+ var _b = outerPosition.data, x_1 = _b.x, y_1 = _b.y;
188
+ comboNode.data.visited = true;
189
+ comboNode.data.x = x_1;
190
+ comboNode.data.y = y_1;
191
+ layoutNodes.push({
192
+ id: comboNode.id,
193
+ data: { x: x_1, y: y_1 },
194
+ });
195
+ }
196
+ // move the child nodes
197
+ var _c = comboNode.data, x = _c.x, y = _c.y;
198
+ (_a = comboNode.data.nodes) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {
199
+ layoutNodes.push({
200
+ id: node.id,
201
+ data: { x: node.data.x + x, y: node.data.y + y },
202
+ });
203
+ });
204
+ });
205
+ // move the nodes from top to bottom
206
+ comboNodes.forEach(function (_a) {
207
+ var _b;
208
+ var data = _a.data;
209
+ var x = data.x, y = data.y, visited = data.visited, nodes = data.nodes;
210
+ (_b = nodes) === null || _b === void 0 ? void 0 : _b.forEach(function (node) {
211
+ if (!visited) {
212
+ var layoutNode = layoutNodes.find(function (n) { return n.id === node.id; });
213
+ layoutNode.data.x += x || 0;
214
+ layoutNode.data.y += y || 0;
215
+ }
216
+ });
217
+ });
218
+ _a.label = 7;
219
+ case 7:
220
+ if (assign) {
221
+ layoutNodes.forEach(function (node) {
222
+ graph.mergeNodeData(node.id, {
223
+ x: node.data.x,
224
+ y: node.data.y,
225
+ });
226
+ });
227
+ }
228
+ result = {
229
+ nodes: layoutNodes,
230
+ edges: edges,
231
+ };
232
+ return [2 /*return*/, result];
233
+ }
234
+ });
235
+ });
236
+ };
237
+ ComboCombinedLayout.prototype.initVals = function (options) {
238
+ var formattedOptions = __assign({}, options);
239
+ var nodeSize = options.nodeSize, spacing = options.spacing, comboPadding = options.comboPadding;
240
+ var nodeSizeFunc;
241
+ var spacingFunc;
242
+ // nodeSpacing to function
243
+ if (isNumber(spacing)) {
244
+ spacingFunc = function () { return spacing; };
245
+ }
246
+ else if (isFunction(spacing)) {
247
+ spacingFunc = spacing;
248
+ }
249
+ else {
250
+ spacingFunc = function () { return 0; };
251
+ }
252
+ formattedOptions.spacing = spacingFunc;
253
+ // nodeSize to function
254
+ if (!nodeSize) {
255
+ nodeSizeFunc = function (d) {
256
+ var spacing = spacingFunc(d);
257
+ if (d.size) {
258
+ if (isArray(d.size)) {
259
+ var res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
260
+ return (res + spacing) / 2;
261
+ }
262
+ if (isObject(d.size)) {
263
+ var res = d.size.width > d.size.height ? d.size.width : d.size.height;
264
+ return (res + spacing) / 2;
265
+ }
266
+ return (d.size + spacing) / 2;
267
+ }
268
+ return 32 + spacing / 2;
269
+ };
270
+ }
271
+ else if (isFunction(nodeSize)) {
272
+ nodeSizeFunc = function (d) {
273
+ var size = nodeSize(d);
274
+ var spacing = spacingFunc(d);
275
+ if (isArray(d.size)) {
276
+ var res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
277
+ return (res + spacing) / 2;
278
+ }
279
+ return ((size || 32) + spacing) / 2;
280
+ };
281
+ }
282
+ else if (isArray(nodeSize)) {
283
+ var larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];
284
+ var radius_1 = larger / 2;
285
+ nodeSizeFunc = function (d) { return radius_1 + spacingFunc(d) / 2; };
286
+ }
287
+ else {
288
+ // number type
289
+ var radius_2 = nodeSize / 2;
290
+ nodeSizeFunc = function (d) { return radius_2 + spacingFunc(d) / 2; };
291
+ }
292
+ formattedOptions.nodeSize = nodeSizeFunc;
293
+ // comboPadding to function
294
+ var comboPaddingFunc;
295
+ if (isNumber(comboPadding)) {
296
+ comboPaddingFunc = function () { return comboPadding; };
297
+ }
298
+ else if (isArray(comboPadding)) {
299
+ comboPaddingFunc = function () { return Math.max.apply(null, comboPadding); };
300
+ }
301
+ else if (isFunction(comboPadding)) {
302
+ comboPaddingFunc = comboPadding;
303
+ }
304
+ else {
305
+ // null type
306
+ comboPaddingFunc = function () { return 0; };
307
+ }
308
+ formattedOptions.comboPadding = comboPaddingFunc;
309
+ return formattedOptions;
310
+ };
311
+ ComboCombinedLayout.prototype.getInnerGraphs = function (graph, treeKey, nodeMap, comboMap, edges, options, comboNodes) {
312
+ var _this = this;
313
+ var nodeSize = options.nodeSize, comboPadding = options.comboPadding, spacing = options.spacing, innerLayout = options.innerLayout;
314
+ var innerGraphLayout = innerLayout || new ConcentricLayout({});
315
+ var innerLayoutOptions = {
316
+ center: [0, 0],
317
+ preventOverlap: true,
318
+ nodeSpacing: spacing,
319
+ };
320
+ var innerLayoutPromises = [];
321
+ var getSize = function (node) {
322
+ // @ts-ignore
323
+ var padding = (comboPadding === null || comboPadding === void 0 ? void 0 : comboPadding(node)) || 10;
324
+ if (isArray(padding))
325
+ padding = Math.max.apply(Math, __spreadArray([], __read(padding)));
326
+ return {
327
+ size: padding ? [padding * 2, padding * 2] : [30, 30],
328
+ padding: padding,
329
+ };
330
+ };
331
+ graph.getRoots(treeKey).forEach(function (root) {
332
+ // @ts-ignore
333
+ comboNodes.set(root.id, {
334
+ id: root.id,
335
+ data: {
336
+ nodes: [],
337
+ size: getSize(root).size,
338
+ },
339
+ });
340
+ var start = Promise.resolve();
341
+ // Regard the child nodes in one combo as a graph, and layout them from bottom to top
342
+ graphTreeDfs(graph, [root], function (treeNode) {
343
+ var _a;
344
+ if (!treeNode.data._isCombo)
345
+ return;
346
+ var _b = getSize(treeNode), nsize = _b.size, padding = _b.padding;
347
+ if (!((_a = graph.getChildren(treeNode.id, treeKey)) === null || _a === void 0 ? void 0 : _a.length)) {
348
+ // empty combo
349
+ comboNodes.set(treeNode.id, {
350
+ id: treeNode.id,
351
+ data: __assign(__assign({}, treeNode.data), { size: nsize }),
352
+ });
353
+ }
354
+ else {
355
+ // combo not empty
356
+ var comboNode = comboNodes.get(treeNode.id);
357
+ comboNodes.set(treeNode.id, {
358
+ id: treeNode.id,
359
+ data: __assign({ nodes: [] }, comboNode === null || comboNode === void 0 ? void 0 : comboNode.data),
360
+ });
361
+ var innerLayoutNodeIds_1 = new Map();
362
+ var innerLayoutNodes_1 = graph
363
+ .getChildren(treeNode.id, treeKey)
364
+ .map(function (child) {
365
+ if (child.data._isCombo) {
366
+ if (!comboNodes.has(child.id))
367
+ comboNodes.set(child.id, {
368
+ id: child.id,
369
+ data: __assign({}, child.data),
370
+ });
371
+ innerLayoutNodeIds_1.set(child.id, true);
372
+ return comboNodes.get(child.id);
373
+ }
374
+ var oriNode = nodeMap.get(child.id) || comboMap.get(child.id);
375
+ innerLayoutNodeIds_1.set(child.id, true);
376
+ return {
377
+ id: child.id,
378
+ data: __assign(__assign({}, oriNode.data), child.data),
379
+ };
380
+ });
381
+ var innerGraphData_1 = {
382
+ nodes: innerLayoutNodes_1,
383
+ edges: edges.filter(function (edge) {
384
+ return innerLayoutNodeIds_1.has(edge.source) &&
385
+ innerLayoutNodeIds_1.has(edge.target);
386
+ }),
387
+ };
388
+ var minNodeSize_1 = Infinity;
389
+ innerLayoutNodes_1.forEach(function (node) {
390
+ var _a, _b;
391
+ var size = node.data.size;
392
+ if (!size) {
393
+ size = ((_a = comboNodes.get(node.id)) === null || _a === void 0 ? void 0 : _a.data.size) ||
394
+ ((_b = nodeSize) === null || _b === void 0 ? void 0 : _b(node)) || [30, 30];
395
+ }
396
+ if (isNumber(size))
397
+ size = [size, size];
398
+ var _c = __read(size, 2), size0 = _c[0], size1 = _c[1];
399
+ if (minNodeSize_1 > size0)
400
+ minNodeSize_1 = size0;
401
+ if (minNodeSize_1 > size1)
402
+ minNodeSize_1 = size1;
403
+ node.data.size = size;
404
+ });
405
+ // innerGraphLayout.assign(innerGraphCore, innerLayoutOptions);
406
+ start = start.then(function () { return __awaiter(_this, void 0, void 0, function () {
407
+ var innerGraphCore, innerLayout, _a, minX, minY, maxX, maxY, center, size;
408
+ return __generator(this, function (_b) {
409
+ switch (_b.label) {
410
+ case 0:
411
+ innerGraphCore = new GraphCore(innerGraphData_1);
412
+ return [4 /*yield*/, innerGraphLayout.assign(innerGraphCore, innerLayoutOptions)];
413
+ case 1:
414
+ innerLayout = _b.sent();
415
+ _a = getLayoutBBox(innerLayoutNodes_1), minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;
416
+ center = { x: (maxX + minX) / 2, y: (maxY + minY) / 2 };
417
+ innerGraphData_1.nodes.forEach(function (node) {
418
+ node.data.x -= center.x;
419
+ node.data.y -= center.y;
420
+ });
421
+ size = [
422
+ Math.max(maxX - minX, minNodeSize_1) + padding * 2,
423
+ Math.max(maxY - minY, minNodeSize_1) + padding * 2,
424
+ ];
425
+ comboNodes.get(treeNode.id).data.size = size;
426
+ comboNodes.get(treeNode.id).data.nodes = innerLayoutNodes_1;
427
+ return [2 /*return*/, innerLayout];
428
+ }
429
+ });
430
+ }); });
431
+ }
432
+ return true;
433
+ }, 'BT', treeKey);
434
+ innerLayoutPromises.push(start);
435
+ });
436
+ return innerLayoutPromises;
437
+ };
438
+ return ComboCombinedLayout;
439
+ }());
440
+ export { ComboCombinedLayout };
441
+ //# sourceMappingURL=comboCombined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comboCombined.js","sourceRoot":"","sources":["../src/comboCombined.ts"],"names":[],"mappings":"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"}