@antv/layout 1.2.10 → 1.2.11

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 (143) hide show
  1. package/dist/747bfdc8efc94bc1fa90.worker.js +2 -0
  2. package/dist/747bfdc8efc94bc1fa90.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 +52 -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 +440 -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 +338 -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.d.ts +1 -1
  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 +470 -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 +45 -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.d.ts +1 -1
  53. package/lib/dagre/order/resolve-conflicts.js +121 -0
  54. package/lib/dagre/order/resolve-conflicts.js.map +1 -0
  55. package/lib/dagre/order/sort-subgraph.js +84 -0
  56. package/lib/dagre/order/sort-subgraph.js.map +1 -0
  57. package/lib/dagre/order/sort.js +74 -0
  58. package/lib/dagre/order/sort.js.map +1 -0
  59. package/lib/dagre/parent-dummy-chains.js +80 -0
  60. package/lib/dagre/parent-dummy-chains.js.map +1 -0
  61. package/lib/dagre/position/bk.d.ts +1 -1
  62. package/lib/dagre/position/bk.js +398 -0
  63. package/lib/dagre/position/bk.js.map +1 -0
  64. package/lib/dagre/position/index.js +54 -0
  65. package/lib/dagre/position/index.js.map +1 -0
  66. package/lib/dagre/rank/feasible-tree.js +164 -0
  67. package/lib/dagre/rank/feasible-tree.js.map +1 -0
  68. package/lib/dagre/rank/index.js +48 -0
  69. package/lib/dagre/rank/index.js.map +1 -0
  70. package/lib/dagre/rank/network-simplex.js +232 -0
  71. package/lib/dagre/rank/network-simplex.js.map +1 -0
  72. package/lib/dagre/rank/util.js +138 -0
  73. package/lib/dagre/rank/util.js.map +1 -0
  74. package/lib/dagre/util.js +289 -0
  75. package/lib/dagre/util.js.map +1 -0
  76. package/lib/dagre.js +545 -0
  77. package/lib/dagre.js.map +1 -0
  78. package/lib/force/forceNBody.js +123 -0
  79. package/lib/force/forceNBody.js.map +1 -0
  80. package/lib/force/index.js +805 -0
  81. package/lib/force/index.js.map +1 -0
  82. package/lib/force/types.d.ts +3 -3
  83. package/lib/force/types.js +2 -0
  84. package/lib/force/types.js.map +1 -0
  85. package/lib/forceAtlas2/body.d.ts +1 -1
  86. package/lib/forceAtlas2/body.js +91 -0
  87. package/lib/forceAtlas2/body.js.map +1 -0
  88. package/lib/forceAtlas2/index.js +562 -0
  89. package/lib/forceAtlas2/index.js.map +1 -0
  90. package/lib/forceAtlas2/quad.d.ts +1 -1
  91. package/lib/forceAtlas2/quad.js +98 -0
  92. package/lib/forceAtlas2/quad.js.map +1 -0
  93. package/lib/forceAtlas2/quadTree.js +105 -0
  94. package/lib/forceAtlas2/quadTree.js.map +1 -0
  95. package/lib/fruchterman.js +376 -0
  96. package/lib/fruchterman.js.map +1 -0
  97. package/lib/grid.js +308 -0
  98. package/lib/grid.js.map +1 -0
  99. package/lib/index.js +17 -0
  100. package/lib/index.js.map +1 -0
  101. package/lib/mds.js +137 -0
  102. package/lib/mds.js.map +1 -0
  103. package/lib/radial/index.js +355 -0
  104. package/lib/radial/index.js.map +1 -0
  105. package/lib/radial/mds.js +29 -0
  106. package/lib/radial/mds.js.map +1 -0
  107. package/lib/radial/radial-nonoverlap-force.d.ts +1 -1
  108. package/lib/radial/radial-nonoverlap-force.js +100 -0
  109. package/lib/radial/radial-nonoverlap-force.js.map +1 -0
  110. package/lib/random.js +98 -0
  111. package/lib/random.js.map +1 -0
  112. package/lib/registry.js +27 -0
  113. package/lib/registry.js.map +1 -0
  114. package/lib/supervisor.js +90 -0
  115. package/lib/supervisor.js.map +1 -0
  116. package/lib/types.d.ts +13 -13
  117. package/lib/types.js +4 -0
  118. package/lib/types.js.map +1 -0
  119. package/lib/util/array.js +2 -0
  120. package/lib/util/array.js.map +1 -0
  121. package/lib/util/common.d.ts +12 -0
  122. package/lib/util/common.js +32 -0
  123. package/lib/util/common.js.map +1 -0
  124. package/lib/util/function.js +126 -0
  125. package/lib/util/function.js.map +1 -0
  126. package/lib/util/gpu.js +214 -0
  127. package/lib/util/gpu.js.map +1 -0
  128. package/lib/util/index.js +7 -0
  129. package/lib/util/index.js.map +1 -0
  130. package/lib/util/math.js +257 -0
  131. package/lib/util/math.js.map +1 -0
  132. package/lib/util/number.js +5 -0
  133. package/lib/util/number.js.map +1 -0
  134. package/lib/util/object.js +42 -0
  135. package/lib/util/object.js.map +1 -0
  136. package/lib/util/string.js +15 -0
  137. package/lib/util/string.js.map +1 -0
  138. package/lib/worker.d.ts +1 -0
  139. package/lib/worker.js +45 -0
  140. package/lib/worker.js.map +1 -0
  141. package/package.json +2 -2
  142. package/dist/5fc550bbb6f708833d84.worker.js +0 -2
  143. package/dist/5fc550bbb6f708833d84.worker.js.map +0 -1
@@ -0,0 +1,440 @@
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), false)) || 32;
172
+ var targetSize = Math.max.apply(Math, __spreadArray([], __read(target.data.size), false)) || 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 data = _a.data;
208
+ var x = data.x, y = data.y, visited = data.visited, nodes = data.nodes;
209
+ nodes === null || nodes === void 0 ? void 0 : nodes.forEach(function (node) {
210
+ if (!visited) {
211
+ var layoutNode = layoutNodes.find(function (n) { return n.id === node.id; });
212
+ layoutNode.data.x += x || 0;
213
+ layoutNode.data.y += y || 0;
214
+ }
215
+ });
216
+ });
217
+ _a.label = 7;
218
+ case 7:
219
+ if (assign) {
220
+ layoutNodes.forEach(function (node) {
221
+ graph.mergeNodeData(node.id, {
222
+ x: node.data.x,
223
+ y: node.data.y,
224
+ });
225
+ });
226
+ }
227
+ result = {
228
+ nodes: layoutNodes,
229
+ edges: edges,
230
+ };
231
+ return [2 /*return*/, result];
232
+ }
233
+ });
234
+ });
235
+ };
236
+ ComboCombinedLayout.prototype.initVals = function (options) {
237
+ var formattedOptions = __assign({}, options);
238
+ var nodeSize = options.nodeSize, spacing = options.spacing, comboPadding = options.comboPadding;
239
+ var nodeSizeFunc;
240
+ var spacingFunc;
241
+ // nodeSpacing to function
242
+ if (isNumber(spacing)) {
243
+ spacingFunc = function () { return spacing; };
244
+ }
245
+ else if (isFunction(spacing)) {
246
+ spacingFunc = spacing;
247
+ }
248
+ else {
249
+ spacingFunc = function () { return 0; };
250
+ }
251
+ formattedOptions.spacing = spacingFunc;
252
+ // nodeSize to function
253
+ if (!nodeSize) {
254
+ nodeSizeFunc = function (d) {
255
+ var spacing = spacingFunc(d);
256
+ if (d.size) {
257
+ if (isArray(d.size)) {
258
+ var res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
259
+ return (res + spacing) / 2;
260
+ }
261
+ if (isObject(d.size)) {
262
+ var res = d.size.width > d.size.height ? d.size.width : d.size.height;
263
+ return (res + spacing) / 2;
264
+ }
265
+ return (d.size + spacing) / 2;
266
+ }
267
+ return 32 + spacing / 2;
268
+ };
269
+ }
270
+ else if (isFunction(nodeSize)) {
271
+ nodeSizeFunc = function (d) {
272
+ var size = nodeSize(d);
273
+ var spacing = spacingFunc(d);
274
+ if (isArray(d.size)) {
275
+ var res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
276
+ return (res + spacing) / 2;
277
+ }
278
+ return ((size || 32) + spacing) / 2;
279
+ };
280
+ }
281
+ else if (isArray(nodeSize)) {
282
+ var larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];
283
+ var radius_1 = larger / 2;
284
+ nodeSizeFunc = function (d) { return radius_1 + spacingFunc(d) / 2; };
285
+ }
286
+ else {
287
+ // number type
288
+ var radius_2 = nodeSize / 2;
289
+ nodeSizeFunc = function (d) { return radius_2 + spacingFunc(d) / 2; };
290
+ }
291
+ formattedOptions.nodeSize = nodeSizeFunc;
292
+ // comboPadding to function
293
+ var comboPaddingFunc;
294
+ if (isNumber(comboPadding)) {
295
+ comboPaddingFunc = function () { return comboPadding; };
296
+ }
297
+ else if (isArray(comboPadding)) {
298
+ comboPaddingFunc = function () { return Math.max.apply(null, comboPadding); };
299
+ }
300
+ else if (isFunction(comboPadding)) {
301
+ comboPaddingFunc = comboPadding;
302
+ }
303
+ else {
304
+ // null type
305
+ comboPaddingFunc = function () { return 0; };
306
+ }
307
+ formattedOptions.comboPadding = comboPaddingFunc;
308
+ return formattedOptions;
309
+ };
310
+ ComboCombinedLayout.prototype.getInnerGraphs = function (graph, treeKey, nodeMap, comboMap, edges, options, comboNodes) {
311
+ var _this = this;
312
+ var nodeSize = options.nodeSize, comboPadding = options.comboPadding, spacing = options.spacing, innerLayout = options.innerLayout;
313
+ var innerGraphLayout = innerLayout || new ConcentricLayout({});
314
+ var innerLayoutOptions = {
315
+ center: [0, 0],
316
+ preventOverlap: true,
317
+ nodeSpacing: spacing,
318
+ };
319
+ var innerLayoutPromises = [];
320
+ var getSize = function (node) {
321
+ // @ts-ignore
322
+ var padding = (comboPadding === null || comboPadding === void 0 ? void 0 : comboPadding(node)) || 10;
323
+ if (isArray(padding))
324
+ padding = Math.max.apply(Math, __spreadArray([], __read(padding), false));
325
+ return {
326
+ size: padding ? [padding * 2, padding * 2] : [30, 30],
327
+ padding: padding,
328
+ };
329
+ };
330
+ graph.getRoots(treeKey).forEach(function (root) {
331
+ // @ts-ignore
332
+ comboNodes.set(root.id, {
333
+ id: root.id,
334
+ data: {
335
+ nodes: [],
336
+ size: getSize(root).size,
337
+ },
338
+ });
339
+ var start = Promise.resolve();
340
+ // Regard the child nodes in one combo as a graph, and layout them from bottom to top
341
+ graphTreeDfs(graph, [root], function (treeNode) {
342
+ var _a;
343
+ if (!treeNode.data._isCombo)
344
+ return;
345
+ var _b = getSize(treeNode), nsize = _b.size, padding = _b.padding;
346
+ if (!((_a = graph.getChildren(treeNode.id, treeKey)) === null || _a === void 0 ? void 0 : _a.length)) {
347
+ // empty combo
348
+ comboNodes.set(treeNode.id, {
349
+ id: treeNode.id,
350
+ data: __assign(__assign({}, treeNode.data), { size: nsize }),
351
+ });
352
+ }
353
+ else {
354
+ // combo not empty
355
+ var comboNode = comboNodes.get(treeNode.id);
356
+ comboNodes.set(treeNode.id, {
357
+ id: treeNode.id,
358
+ data: __assign({ nodes: [] }, comboNode === null || comboNode === void 0 ? void 0 : comboNode.data),
359
+ });
360
+ var innerLayoutNodeIds_1 = new Map();
361
+ var innerLayoutNodes_1 = graph
362
+ .getChildren(treeNode.id, treeKey)
363
+ .map(function (child) {
364
+ if (child.data._isCombo) {
365
+ if (!comboNodes.has(child.id))
366
+ comboNodes.set(child.id, {
367
+ id: child.id,
368
+ data: __assign({}, child.data),
369
+ });
370
+ innerLayoutNodeIds_1.set(child.id, true);
371
+ return comboNodes.get(child.id);
372
+ }
373
+ var oriNode = nodeMap.get(child.id) || comboMap.get(child.id);
374
+ innerLayoutNodeIds_1.set(child.id, true);
375
+ return {
376
+ id: child.id,
377
+ data: __assign(__assign({}, oriNode.data), child.data),
378
+ };
379
+ });
380
+ var innerGraphData_1 = {
381
+ nodes: innerLayoutNodes_1,
382
+ edges: edges.filter(function (edge) {
383
+ return innerLayoutNodeIds_1.has(edge.source) &&
384
+ innerLayoutNodeIds_1.has(edge.target);
385
+ }),
386
+ };
387
+ var minNodeSize_1 = Infinity;
388
+ innerLayoutNodes_1.forEach(function (node) {
389
+ var _a;
390
+ var size = node.data.size;
391
+ if (!size) {
392
+ size = ((_a = comboNodes.get(node.id)) === null || _a === void 0 ? void 0 : _a.data.size) ||
393
+ (nodeSize === null || nodeSize === void 0 ? void 0 : nodeSize(node)) || [30, 30];
394
+ }
395
+ if (isNumber(size))
396
+ size = [size, size];
397
+ var _b = __read(size, 2), size0 = _b[0], size1 = _b[1];
398
+ if (minNodeSize_1 > size0)
399
+ minNodeSize_1 = size0;
400
+ if (minNodeSize_1 > size1)
401
+ minNodeSize_1 = size1;
402
+ node.data.size = size;
403
+ });
404
+ // innerGraphLayout.assign(innerGraphCore, innerLayoutOptions);
405
+ start = start.then(function () { return __awaiter(_this, void 0, void 0, function () {
406
+ var innerGraphCore, innerLayout, _a, minX, minY, maxX, maxY, center, size;
407
+ return __generator(this, function (_b) {
408
+ switch (_b.label) {
409
+ case 0:
410
+ innerGraphCore = new GraphCore(innerGraphData_1);
411
+ return [4 /*yield*/, innerGraphLayout.assign(innerGraphCore, innerLayoutOptions)];
412
+ case 1:
413
+ innerLayout = _b.sent();
414
+ _a = getLayoutBBox(innerLayoutNodes_1), minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;
415
+ center = { x: (maxX + minX) / 2, y: (maxY + minY) / 2 };
416
+ innerGraphData_1.nodes.forEach(function (node) {
417
+ node.data.x -= center.x;
418
+ node.data.y -= center.y;
419
+ });
420
+ size = [
421
+ Math.max(maxX - minX, minNodeSize_1) + padding * 2,
422
+ Math.max(maxY - minY, minNodeSize_1) + padding * 2,
423
+ ];
424
+ comboNodes.get(treeNode.id).data.size = size;
425
+ comboNodes.get(treeNode.id).data.nodes = innerLayoutNodes_1;
426
+ return [2 /*return*/, innerLayout];
427
+ }
428
+ });
429
+ }); });
430
+ }
431
+ return true;
432
+ }, 'BT', treeKey);
433
+ innerLayoutPromises.push(start);
434
+ });
435
+ return innerLayoutPromises;
436
+ };
437
+ return ComboCombinedLayout;
438
+ }());
439
+ export { ComboCombinedLayout };
440
+ //# sourceMappingURL=comboCombined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comboCombined.js","sourceRoot":"","sources":["../src/comboCombined.ts"],"names":[],"mappings":"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"}