@antv/layout 1.2.14-beta.0 → 1.2.14-beta.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 (148) hide show
  1. package/dist/62953f7fd7012203b024.worker.js +2 -0
  2. package/dist/62953f7fd7012203b024.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/antv-dagre/acyclic.js +3 -7
  6. package/lib/antv-dagre/acyclic.js.map +1 -1
  7. package/lib/antv-dagre/add-border-segments.js +3 -7
  8. package/lib/antv-dagre/add-border-segments.js.map +1 -1
  9. package/lib/antv-dagre/coordinate-system.js +1 -5
  10. package/lib/antv-dagre/coordinate-system.js.map +1 -1
  11. package/lib/antv-dagre/data/list.js +1 -4
  12. package/lib/antv-dagre/data/list.js.map +1 -1
  13. package/lib/antv-dagre/greedy-fas.js +5 -10
  14. package/lib/antv-dagre/greedy-fas.js.map +1 -1
  15. package/lib/antv-dagre/layout.js +37 -41
  16. package/lib/antv-dagre/layout.js.map +1 -1
  17. package/lib/antv-dagre/nesting-graph.js +5 -9
  18. package/lib/antv-dagre/nesting-graph.js.map +1 -1
  19. package/lib/antv-dagre/normalize.js +3 -7
  20. package/lib/antv-dagre/normalize.js.map +1 -1
  21. package/lib/antv-dagre/order/add-subgraph-constraints.js +1 -5
  22. package/lib/antv-dagre/order/add-subgraph-constraints.js.map +1 -1
  23. package/lib/antv-dagre/order/barycenter.js +1 -5
  24. package/lib/antv-dagre/order/barycenter.js.map +1 -1
  25. package/lib/antv-dagre/order/build-layer-graph.js +3 -7
  26. package/lib/antv-dagre/order/build-layer-graph.js.map +1 -1
  27. package/lib/antv-dagre/order/cross-count.js +3 -7
  28. package/lib/antv-dagre/order/cross-count.js.map +1 -1
  29. package/lib/antv-dagre/order/index.js +22 -26
  30. package/lib/antv-dagre/order/index.js.map +1 -1
  31. package/lib/antv-dagre/order/init-data-order.js +1 -5
  32. package/lib/antv-dagre/order/init-data-order.js.map +1 -1
  33. package/lib/antv-dagre/order/init-order.js +1 -5
  34. package/lib/antv-dagre/order/init-order.js.map +1 -1
  35. package/lib/antv-dagre/order/resolve-conflicts.js +1 -3
  36. package/lib/antv-dagre/order/resolve-conflicts.js.map +1 -1
  37. package/lib/antv-dagre/order/sort-subgraph.js +8 -13
  38. package/lib/antv-dagre/order/sort-subgraph.js.map +1 -1
  39. package/lib/antv-dagre/order/sort.js +3 -7
  40. package/lib/antv-dagre/order/sort.js.map +1 -1
  41. package/lib/antv-dagre/parent-dummy-chains.js +1 -5
  42. package/lib/antv-dagre/parent-dummy-chains.js.map +1 -1
  43. package/lib/antv-dagre/position/bk.js +31 -48
  44. package/lib/antv-dagre/position/bk.js.map +1 -1
  45. package/lib/antv-dagre/position/index.js +12 -16
  46. package/lib/antv-dagre/position/index.js.map +1 -1
  47. package/lib/antv-dagre/rank/feasible-tree.js +12 -16
  48. package/lib/antv-dagre/rank/feasible-tree.js.map +1 -1
  49. package/lib/antv-dagre/rank/index.js +8 -12
  50. package/lib/antv-dagre/rank/index.js.map +1 -1
  51. package/lib/antv-dagre/rank/network-simplex.js +25 -35
  52. package/lib/antv-dagre/rank/network-simplex.js.map +1 -1
  53. package/lib/antv-dagre/rank/util.js +1 -6
  54. package/lib/antv-dagre/rank/util.js.map +1 -1
  55. package/lib/antv-dagre/types.js +1 -2
  56. package/lib/antv-dagre/util.js +23 -41
  57. package/lib/antv-dagre/util.js.map +1 -1
  58. package/lib/antv-dagre.js +17 -21
  59. package/lib/antv-dagre.js.map +1 -1
  60. package/lib/bundle-entry.js +2 -5
  61. package/lib/bundle-entry.js.map +1 -1
  62. package/lib/bundle-supervisor.js +7 -11
  63. package/lib/bundle-supervisor.js.map +1 -1
  64. package/lib/bundle-worker.js +10 -15
  65. package/lib/bundle-worker.js.map +1 -1
  66. package/lib/circular.js +16 -20
  67. package/lib/circular.js.map +1 -1
  68. package/lib/comboCombined.js +35 -39
  69. package/lib/comboCombined.js.map +1 -1
  70. package/lib/concentric.js +19 -23
  71. package/lib/concentric.js.map +1 -1
  72. package/lib/d3-force/index.d.ts +33 -0
  73. package/lib/d3-force/index.js +162 -0
  74. package/lib/d3-force/index.js.map +1 -0
  75. package/lib/d3-force/types.d.ts +108 -0
  76. package/lib/d3-force/types.js +2 -0
  77. package/lib/d3-force/types.js.map +1 -0
  78. package/lib/d3-force-3d/index.d.ts +25 -0
  79. package/lib/d3-force-3d/index.js +47 -0
  80. package/lib/d3-force-3d/index.js.map +1 -0
  81. package/lib/d3-force-3d/types.d.ts +44 -0
  82. package/lib/d3-force-3d/types.js +2 -0
  83. package/lib/d3-force-3d/types.js.map +1 -0
  84. package/lib/dagre.js +13 -17
  85. package/lib/dagre.js.map +1 -1
  86. package/lib/exports.d.ts +4 -1
  87. package/lib/exports.js +17 -19
  88. package/lib/exports.js.map +1 -1
  89. package/lib/force/forceNBody.js +5 -9
  90. package/lib/force/forceNBody.js.map +1 -1
  91. package/lib/force/index.js +23 -27
  92. package/lib/force/index.js.map +1 -1
  93. package/lib/force/types.js +1 -2
  94. package/lib/forceAtlas2/body.js +1 -4
  95. package/lib/forceAtlas2/body.js.map +1 -1
  96. package/lib/forceAtlas2/index.js +26 -30
  97. package/lib/forceAtlas2/index.js.map +1 -1
  98. package/lib/forceAtlas2/quad.js +1 -4
  99. package/lib/forceAtlas2/quad.js.map +1 -1
  100. package/lib/forceAtlas2/quadTree.js +1 -4
  101. package/lib/forceAtlas2/quadTree.js.map +1 -1
  102. package/lib/fruchterman.js +24 -28
  103. package/lib/fruchterman.js.map +1 -1
  104. package/lib/grid.js +15 -19
  105. package/lib/grid.js.map +1 -1
  106. package/lib/index.js +2 -5
  107. package/lib/index.js.map +1 -1
  108. package/lib/mds.js +17 -21
  109. package/lib/mds.js.map +1 -1
  110. package/lib/radial/index.js +22 -26
  111. package/lib/radial/index.js.map +1 -1
  112. package/lib/radial/mds.js +6 -10
  113. package/lib/radial/mds.js.map +1 -1
  114. package/lib/radial/radial-nonoverlap-force.js +1 -5
  115. package/lib/radial/radial-nonoverlap-force.js.map +1 -1
  116. package/lib/random.js +5 -9
  117. package/lib/random.js.map +1 -1
  118. package/lib/registry.js +29 -30
  119. package/lib/registry.js.map +1 -1
  120. package/lib/supervisor.js +8 -12
  121. package/lib/supervisor.js.map +1 -1
  122. package/lib/types.js +1 -5
  123. package/lib/types.js.map +1 -1
  124. package/lib/util/array.js +1 -4
  125. package/lib/util/array.js.map +1 -1
  126. package/lib/util/common.js +1 -5
  127. package/lib/util/common.js.map +1 -1
  128. package/lib/util/function.js +14 -20
  129. package/lib/util/function.js.map +1 -1
  130. package/lib/util/index.js +4 -7
  131. package/lib/util/index.js.map +1 -1
  132. package/lib/util/math.js +11 -20
  133. package/lib/util/math.js.map +1 -1
  134. package/lib/util/object.js +8 -13
  135. package/lib/util/object.js.map +1 -1
  136. package/lib/util/size.js +3 -7
  137. package/lib/util/size.js.map +1 -1
  138. package/lib/worker.js +9 -11
  139. package/lib/worker.js.map +1 -1
  140. package/package.json +3 -2
  141. package/dist/85db61ddc757dae66e04.worker.js +0 -2
  142. package/dist/85db61ddc757dae66e04.worker.js.map +0 -1
  143. package/lib/d3Force/forceInBox.d.ts +0 -28
  144. package/lib/d3Force/forceInBox.js +0 -333
  145. package/lib/d3Force/forceInBox.js.map +0 -1
  146. package/lib/d3Force/index.d.ts +0 -57
  147. package/lib/d3Force/index.js +0 -317
  148. package/lib/d3Force/index.js.map +0 -1
@@ -1,317 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.D3ForceLayout = void 0;
4
- const tslib_1 = require("tslib");
5
- const util_1 = require("@antv/util");
6
- const d3Force = tslib_1.__importStar(require("d3-force"));
7
- const util_2 = require("../util");
8
- const forceInBox_1 = tslib_1.__importDefault(require("./forceInBox"));
9
- const DEFAULTS_LAYOUT_OPTIONS = {
10
- center: [0, 0],
11
- preventOverlap: false,
12
- nodeSize: undefined,
13
- nodeSpacing: undefined,
14
- linkDistance: 50,
15
- forceSimulation: null,
16
- alphaDecay: 0.028,
17
- alphaMin: 0.001,
18
- alpha: 0.3,
19
- collideStrength: 1,
20
- clustering: false,
21
- clusterNodeStrength: -1,
22
- clusterEdgeStrength: 0.1,
23
- clusterEdgeDistance: 100,
24
- clusterFociStrength: 0.8,
25
- clusterNodeSize: 10,
26
- };
27
- /**
28
- * Layout the nodes' positions with d3's basic classic force
29
- *
30
- * @example
31
- * // Assign layout options when initialization.
32
- * const layout = new D3ForceLayout({ center: [100, 100] });
33
- * const positions = await layout.execute(graph); // { nodes: [], edges: [] }
34
- *
35
- * // Or use different options later.
36
- * const layout = new D3ForceLayout({ center: [100, 100] });
37
- * const positions = await layout.execute(graph, { center: [100, 100] }); // { nodes: [], edges: [] }
38
- *
39
- * // If you want to assign the positions directly to the nodes, use assign method.
40
- * await layout.assign(graph, { center: [100, 100] });
41
- */
42
- class D3ForceLayout {
43
- constructor(options = {}) {
44
- this.options = options;
45
- this.id = 'd3force';
46
- this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);
47
- }
48
- /**
49
- * Return the positions of nodes and edges(if needed).
50
- */
51
- execute(graph, options) {
52
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
53
- return this.genericForceLayout(false, graph, options);
54
- });
55
- }
56
- /**
57
- * To directly assign the positions to the nodes.
58
- */
59
- assign(graph, options) {
60
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
61
- this.genericForceLayout(true, graph, options);
62
- });
63
- }
64
- /**
65
- * Stop simulation immediately.
66
- */
67
- stop() {
68
- var _a;
69
- (_a = this.forceSimulation) === null || _a === void 0 ? void 0 : _a.stop();
70
- }
71
- /**
72
- * Manually steps the simulation by the specified number of iterations.
73
- * @see https://github.com/d3/d3-force#simulation_tick
74
- */
75
- tick(iterations = 1) {
76
- this.forceSimulation.tick(iterations);
77
- const result = {
78
- nodes: formatOutNodes(this.lastLayoutNodes),
79
- edges: formatOutEdges(this.lastLayoutEdges),
80
- };
81
- if (this.lastAssign) {
82
- result.nodes.forEach((node) => this.lastGraph.mergeNodeData(node.id, {
83
- x: node.data.x,
84
- y: node.data.y,
85
- }));
86
- }
87
- return result;
88
- }
89
- genericForceLayout(assign, graph, options) {
90
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
91
- const mergedOptions = Object.assign(Object.assign({}, this.options), options);
92
- const nodes = graph.getAllNodes();
93
- const edges = graph.getAllEdges();
94
- const layoutNodes = nodes.map((node) => {
95
- var _a, _b;
96
- return (Object.assign(Object.assign({}, (0, util_2.cloneFormatData)(node)), { x: (_a = node.data) === null || _a === void 0 ? void 0 : _a.x, y: (_b = node.data) === null || _b === void 0 ? void 0 : _b.y }));
97
- });
98
- const layoutEdges = edges.map((edge) => (0, util_2.cloneFormatData)(edge));
99
- // Use them later in `tick`.
100
- this.lastLayoutNodes = layoutNodes;
101
- this.lastLayoutEdges = layoutEdges;
102
- this.lastAssign = assign;
103
- this.lastGraph = graph;
104
- const { alphaMin, alphaDecay, alpha, nodeStrength, edgeStrength, linkDistance, clustering, clusterFociStrength, clusterEdgeDistance, clusterEdgeStrength, clusterNodeStrength, clusterNodeSize, collideStrength = 1, center = [0, 0], preventOverlap, nodeSize, nodeSpacing, onTick, } = mergedOptions;
105
- let { forceSimulation } = mergedOptions;
106
- return new Promise((resolve) => {
107
- if (!forceSimulation) {
108
- try {
109
- // 定义节点的力
110
- const nodeForce = d3Force.forceManyBody();
111
- if (nodeStrength) {
112
- nodeForce.strength(nodeStrength);
113
- }
114
- forceSimulation = d3Force.forceSimulation().nodes(layoutNodes);
115
- if (clustering) {
116
- const clusterForce = (0, forceInBox_1.default)();
117
- clusterForce
118
- .centerX(center[0])
119
- .centerY(center[1])
120
- .template('force')
121
- .strength(clusterFociStrength);
122
- if (layoutEdges) {
123
- clusterForce.links(layoutEdges);
124
- }
125
- if (layoutNodes) {
126
- clusterForce.nodes(layoutNodes);
127
- }
128
- clusterForce
129
- .forceLinkDistance(clusterEdgeDistance)
130
- .forceLinkStrength(clusterEdgeStrength)
131
- .forceCharge(clusterNodeStrength)
132
- .forceNodeSize(clusterNodeSize);
133
- forceSimulation.force('group', clusterForce);
134
- }
135
- forceSimulation
136
- .force('center', d3Force.forceCenter(center[0], center[1]))
137
- .force('charge', nodeForce)
138
- .alpha(alpha)
139
- .alphaDecay(alphaDecay)
140
- .alphaMin(alphaMin);
141
- if (preventOverlap) {
142
- this.overlapProcess(forceSimulation, {
143
- nodeSize,
144
- nodeSpacing,
145
- collideStrength,
146
- });
147
- }
148
- // 如果有边,定义边的力
149
- if (layoutEdges) {
150
- // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据
151
- const edgeForce = d3Force
152
- .forceLink()
153
- .id((d) => d.id)
154
- .links(layoutEdges);
155
- if (edgeStrength) {
156
- edgeForce.strength(edgeStrength);
157
- }
158
- if (linkDistance) {
159
- edgeForce.distance(linkDistance);
160
- }
161
- forceSimulation.force('link', edgeForce);
162
- }
163
- forceSimulation
164
- .on('tick', () => {
165
- const outNodes = formatOutNodes(layoutNodes);
166
- onTick === null || onTick === void 0 ? void 0 : onTick({
167
- nodes: outNodes,
168
- edges: formatOutEdges(layoutEdges),
169
- });
170
- if (assign) {
171
- outNodes.forEach((node) => graph.mergeNodeData(node.id, {
172
- x: node.data.x,
173
- y: node.data.y,
174
- }));
175
- }
176
- })
177
- .on('end', () => {
178
- const outNodes = formatOutNodes(layoutNodes);
179
- if (assign) {
180
- outNodes.forEach((node) => graph.mergeNodeData(node.id, {
181
- x: node.data.x,
182
- y: node.data.y,
183
- }));
184
- }
185
- resolve({
186
- nodes: outNodes,
187
- edges: formatOutEdges(layoutEdges),
188
- });
189
- });
190
- }
191
- catch (e) {
192
- console.warn(e);
193
- }
194
- }
195
- else {
196
- // forceSimulation is defined
197
- if (clustering) {
198
- const clusterForce = (0, forceInBox_1.default)();
199
- clusterForce.nodes(layoutNodes);
200
- clusterForce.links(layoutEdges);
201
- }
202
- forceSimulation.nodes(layoutNodes);
203
- if (layoutEdges) {
204
- // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据
205
- const edgeForce = d3Force
206
- .forceLink()
207
- .id((d) => d.id)
208
- .links(layoutEdges);
209
- if (edgeStrength) {
210
- edgeForce.strength(edgeStrength);
211
- }
212
- if (linkDistance) {
213
- edgeForce.distance(linkDistance);
214
- }
215
- forceSimulation.force('link', edgeForce);
216
- }
217
- if (preventOverlap) {
218
- this.overlapProcess(forceSimulation, {
219
- nodeSize,
220
- nodeSpacing,
221
- collideStrength,
222
- });
223
- }
224
- forceSimulation.alpha(alpha).restart();
225
- // since d3 writes x and y as node's first level properties, format them into data
226
- const outNodes = formatOutNodes(layoutNodes);
227
- const outEdges = formatOutEdges(layoutEdges);
228
- if (assign) {
229
- outNodes.forEach((node) => graph.mergeNodeData(node.id, {
230
- x: node.data.x,
231
- y: node.data.y,
232
- }));
233
- }
234
- resolve({
235
- nodes: outNodes,
236
- edges: outEdges,
237
- });
238
- }
239
- this.forceSimulation = forceSimulation;
240
- });
241
- });
242
- }
243
- /**
244
- * Prevent overlappings.
245
- * @param {object} simulation force simulation of d3
246
- */
247
- overlapProcess(simulation, options) {
248
- const { nodeSize, nodeSpacing, collideStrength } = options;
249
- let nodeSizeFunc;
250
- let nodeSpacingFunc;
251
- if ((0, util_1.isNumber)(nodeSpacing)) {
252
- nodeSpacingFunc = () => nodeSpacing;
253
- }
254
- else if ((0, util_1.isFunction)(nodeSpacing)) {
255
- nodeSpacingFunc = nodeSpacing;
256
- }
257
- else {
258
- nodeSpacingFunc = () => 0;
259
- }
260
- if (!nodeSize) {
261
- nodeSizeFunc = (d) => {
262
- if (d.size) {
263
- if ((0, util_2.isArray)(d.size)) {
264
- const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
265
- return res / 2 + nodeSpacingFunc(d);
266
- }
267
- if ((0, util_1.isObject)(d.size)) {
268
- const res = d.size.width > d.size.height ? d.size.width : d.size.height;
269
- return res / 2 + nodeSpacingFunc(d);
270
- }
271
- return d.size / 2 + nodeSpacingFunc(d);
272
- }
273
- return 10 + nodeSpacingFunc(d);
274
- };
275
- }
276
- else if ((0, util_1.isFunction)(nodeSize)) {
277
- nodeSizeFunc = (d) => {
278
- const size = nodeSize(d);
279
- return size + nodeSpacingFunc(d);
280
- };
281
- }
282
- else if ((0, util_2.isArray)(nodeSize)) {
283
- const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];
284
- const radius = larger / 2;
285
- nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);
286
- }
287
- else if ((0, util_1.isNumber)(nodeSize)) {
288
- const radius = nodeSize / 2;
289
- nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);
290
- }
291
- else {
292
- nodeSizeFunc = () => 10;
293
- }
294
- // forceCollide's parameter is a radius
295
- simulation.force('collisionForce', d3Force.forceCollide(nodeSizeFunc).strength(collideStrength));
296
- }
297
- }
298
- exports.D3ForceLayout = D3ForceLayout;
299
- /**
300
- * Format the calculation nodes into output nodes.
301
- * Since d3 reads properties in plain node data object which is not compact to the OutNode
302
- * @param layoutNodes
303
- * @returns
304
- */
305
- const formatOutNodes = (layoutNodes) => layoutNodes.map((node) => {
306
- const { x, y } = node, others = tslib_1.__rest(node, ["x", "y"]);
307
- return Object.assign(Object.assign({}, others), { data: Object.assign(Object.assign({}, others.data), { x,
308
- y }) });
309
- });
310
- /**
311
- * d3 will modify `source` and `target` on edge object.
312
- */
313
- const formatOutEdges = (edges) => edges.map((edge) => {
314
- const { source, target } = edge, rest = tslib_1.__rest(edge, ["source", "target"]);
315
- return Object.assign(Object.assign({}, rest), { source: source.id, target: target.id });
316
- });
317
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/d3Force/index.ts"],"names":[],"mappings":"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"}