@antv/layout 1.2.8 → 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/5cb5472f0e3cc36231e3.worker.js +0 -2
  7. package/dist/5cb5472f0e3cc36231e3.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 -808
  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
@@ -1,19 +0,0 @@
1
- /**
2
- * Use as entry for webpack bundle
3
- */
4
- export * from "./circular";
5
- export * from "./bundle-supervisor";
6
- export * from "./registry";
7
- export * from "./grid";
8
- export * from "./random";
9
- export * from "./mds";
10
- export * from "./concentric";
11
- export * from "./radial";
12
- export * from "./fruchterman";
13
- export * from "./d3Force";
14
- export * from "./force";
15
- export * from "./forceAtlas2";
16
- export * from "./dagre";
17
- export * from "./types";
18
- export * from "./util";
19
- //# sourceMappingURL=bundle-entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle-entry.js","sourceRoot":"","sources":["../src/bundle-entry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -1,94 +0,0 @@
1
- import { __awaiter, __extends, __generator, __read, __rest } from "tslib";
2
- // @ts-ignore
3
- import EventEmitter from "@antv/event-emitter";
4
- // @ts-ignore
5
- // Inline the worker as a Blob. @see https://github.com/developit/workerize-loader#inline
6
- import worker from "workerize-loader?inline!./bundle-worker";
7
- /**
8
- * @example
9
- * const graph = new Graph();
10
- * const layout = new CircularLayout();
11
- *
12
- * const supervisor = new Supervisor(graph, layout, { iterations: 1000 });
13
- * const positions = await supervisor.execute();
14
- * supervisor.stop();
15
- * supervisor.kill();
16
- */
17
- var Supervisor = /** @class */ (function (_super) {
18
- __extends(Supervisor, _super);
19
- function Supervisor(graph, layout, options) {
20
- var _this = _super.call(this) || this;
21
- _this.graph = graph;
22
- _this.layout = layout;
23
- _this.options = options;
24
- _this.spawnWorker();
25
- return _this;
26
- }
27
- Supervisor.prototype.spawnWorker = function () {
28
- if (this.worker) {
29
- this.worker.terminate();
30
- }
31
- /**
32
- * Worker function
33
- */
34
- // this.worker = this.createWorker(workerFunctionString);
35
- // this.worker.addEventListener('message', this.handleWorkerMessage);
36
- // Use workerize-loader to create WebWorker.
37
- // @see https://github.com/developit/workerize-loader
38
- this.worker = worker();
39
- if (this.running) {
40
- this.running = false;
41
- this.execute();
42
- }
43
- };
44
- Supervisor.prototype.execute = function () {
45
- var _a;
46
- return __awaiter(this, void 0, void 0, function () {
47
- var _b, onTick, rest, payload, arraybufferWithNodesEdges, _c, positions;
48
- return __generator(this, function (_d) {
49
- switch (_d.label) {
50
- case 0:
51
- if (this.running)
52
- return [2 /*return*/, this];
53
- this.running = true;
54
- _b = this.layout.options, onTick = _b.onTick, rest = __rest(_b, ["onTick"]);
55
- payload = {
56
- layout: {
57
- id: this.layout.id,
58
- options: rest,
59
- iterations: (_a = this.options) === null || _a === void 0 ? void 0 : _a.iterations,
60
- },
61
- nodes: this.graph.getAllNodes(),
62
- edges: this.graph.getAllEdges(),
63
- };
64
- arraybufferWithNodesEdges = new Float32Array([0]);
65
- return [4 /*yield*/, this.worker.calculateLayout(payload, [
66
- arraybufferWithNodesEdges,
67
- ])];
68
- case 1:
69
- _c = __read.apply(void 0, [_d.sent(), 1]), positions = _c[0];
70
- return [2 /*return*/, positions];
71
- }
72
- });
73
- });
74
- };
75
- Supervisor.prototype.stop = function () {
76
- this.running = false;
77
- // trigger `layout.stop()` if needed
78
- this.worker.stopLayout();
79
- return this;
80
- };
81
- Supervisor.prototype.kill = function () {
82
- if (this.worker) {
83
- this.worker.terminate();
84
- }
85
- // TODO: unbind listeners on graph.
86
- // TODO: release attached memory
87
- };
88
- Supervisor.prototype.isRunning = function () {
89
- return this.running;
90
- };
91
- return Supervisor;
92
- }(EventEmitter));
93
- export { Supervisor };
94
- //# sourceMappingURL=bundle-supervisor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle-supervisor.js","sourceRoot":"","sources":["../src/bundle-supervisor.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAG/C,aAAa;AACb,yFAAyF;AACzF,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAuB7D;;;;;;;;;GASG;AACH;IAAgC,8BAAY;IAW1C,oBACU,KAAsB,EACtB,MAAmB,EACnB,OAAoC;QAH9C,YAKE,iBAAO,SAGR;QAPS,WAAK,GAAL,KAAK,CAAiB;QACtB,YAAM,GAAN,MAAM,CAAa;QACnB,aAAO,GAAP,OAAO,CAA6B;QAI5C,KAAI,CAAC,WAAW,EAAE,CAAC;;IACrB,CAAC;IAED,gCAAW,GAAX;QACE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;SACzB;QAED;;WAEG;QACH,yDAAyD;QACzD,qEAAqE;QAErE,4CAA4C;QAC5C,qDAAqD;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAEK,4BAAO,GAAb;;;;;;;wBACE,IAAI,IAAI,CAAC,OAAO;4BAAE,sBAAO,IAAI,EAAC;wBAE9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBAGd,KAAsB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAvC,MAAM,YAAA,EAAK,IAAI,cAAjB,UAAmB,CAAF,CAAyB;wBAC1C,OAAO,GAAG;4BACd,MAAM,EAAE;gCACN,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gCAClB,OAAO,EAAE,IAAI;gCACb,UAAU,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,UAAU;6BACrC;4BACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;4BAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;yBAChC,CAAC;wBAOI,yBAAyB,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAWpC,qBAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;gCAC7D,yBAAyB;6BAC1B,CAAC,EAAA;;wBAFI,KAAA,sBAAc,SAElB,KAAA,EAFK,SAAS,QAAA;wBAIhB,sBAAO,SAAS,EAAC;;;;KAClB;IAED,yBAAI,GAAJ;QACE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,oCAAoC;QACpC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAI,GAAJ;QACE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;SACzB;QAED,mCAAmC;QAEnC,gCAAgC;IAClC,CAAC;IAED,8BAAS,GAAT;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACH,iBAAC;AAAD,CAAC,AAxGD,CAAgC,YAAY,GAwG3C"}
@@ -1,53 +0,0 @@
1
- import { __awaiter, __generator } from "tslib";
2
- import { Graph } from "@antv/graphlib";
3
- // import { setupTransferableMethodsOnWorker } from "@naoak/workerize-transferable";
4
- import { registry } from "./registry";
5
- import { isLayoutWithIterations } from "./types";
6
- // @see https://www.npmjs.com/package/@naoak/workerize-transferable
7
- // setupTransferableMethodsOnWorker({
8
- // // The name of function which use some transferables.
9
- // calculateLayout: {
10
- // // Specify an instance of the function
11
- // fn: calculateLayout,
12
- // // Pick a transferable object from the result which is an instance of Float32Array
13
- // pickTransferablesFromResult: (result) => [result[1].buffer],
14
- // },
15
- // });
16
- var currentLayout;
17
- export function stopLayout() {
18
- var _a;
19
- if ((_a = currentLayout) === null || _a === void 0 ? void 0 : _a.stop) {
20
- currentLayout.stop();
21
- }
22
- }
23
- export function calculateLayout(payload, transferables) {
24
- return __awaiter(this, void 0, void 0, function () {
25
- var _a, id, options, iterations, nodes, edges, graph, layoutCtor, positions;
26
- return __generator(this, function (_b) {
27
- switch (_b.label) {
28
- case 0:
29
- _a = payload.layout, id = _a.id, options = _a.options, iterations = _a.iterations, nodes = payload.nodes, edges = payload.edges;
30
- graph = new Graph({
31
- nodes: nodes,
32
- edges: edges,
33
- });
34
- layoutCtor = registry[id];
35
- if (layoutCtor) {
36
- currentLayout = new layoutCtor(options);
37
- }
38
- else {
39
- throw new Error("Unknown layout id: " + id);
40
- }
41
- return [4 /*yield*/, currentLayout.execute(graph)];
42
- case 1:
43
- positions = _b.sent();
44
- if (isLayoutWithIterations(currentLayout)) {
45
- currentLayout.stop();
46
- positions = currentLayout.tick(iterations);
47
- }
48
- return [2 /*return*/, [positions, transferables]];
49
- }
50
- });
51
- });
52
- }
53
- //# sourceMappingURL=bundle-worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle-worker.js","sourceRoot":"","sources":["../src/bundle-worker.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,oFAAoF;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE/E,mEAAmE;AACnE,qCAAqC;AACrC,0DAA0D;AAC1D,uBAAuB;AACvB,6CAA6C;AAC7C,2BAA2B;AAC3B,yFAAyF;AACzF,mEAAmE;AACnE,OAAO;AACP,MAAM;AAEN,IAAI,aAA0B,CAAC;AAE/B,MAAM,UAAU,UAAU;;IACxB,IAAI,MAAC,aAA2C,0CAAE,IAAI,EAAE;QACrD,aAA2C,CAAC,IAAI,EAAE,CAAC;KACrD;AACH,CAAC;AAED,MAAM,UAAgB,eAAe,CACnC,OAAgB,EAChB,aAA6B;;;;;;oBAG3B,KAGE,OAAO,OAH0B,EAAzB,EAAE,QAAA,EAAE,OAAO,aAAA,EAAE,UAAU,gBAAA,EACjC,KAAK,GAEH,OAAO,MAFJ,EACL,KAAK,GACH,OAAO,MADJ,CACK;oBAMN,KAAK,GAAG,IAAI,KAAK,CAAC;wBACtB,KAAK,OAAA;wBACL,KAAK,OAAA;qBACN,CAAC,CAAC;oBAMG,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,UAAU,EAAE;wBACd,aAAa,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;qBACzC;yBAAM;wBACL,MAAM,IAAI,KAAK,CAAC,wBAAsB,EAAI,CAAC,CAAC;qBAC7C;oBAEe,qBAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAA;;oBAA9C,SAAS,GAAG,SAAkC;oBAClD,IAAI,sBAAsB,CAAC,aAAa,CAAC,EAAE;wBACzC,aAAa,CAAC,IAAI,EAAE,CAAC;wBACrB,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBAC5C;oBACD,sBAAO,CAAC,SAAS,EAAE,aAAa,CAAC,EAAC;;;;CACnC"}
package/lib/circular.js DELETED
@@ -1,258 +0,0 @@
1
- import { __assign, __awaiter, __generator, __read } from "tslib";
2
- import { formatSizeFn, formatNumberFn, cloneFormatData } from './util';
3
- import { handleSingleNodeGraph } from './util/common';
4
- var DEFAULTS_LAYOUT_OPTIONS = {
5
- radius: null,
6
- startRadius: null,
7
- endRadius: null,
8
- startAngle: 0,
9
- endAngle: 2 * Math.PI,
10
- clockwise: true,
11
- divisions: 1,
12
- ordering: null,
13
- angleRatio: 1,
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 CircularLayout = /** @class */ (function () {
31
- function CircularLayout(options) {
32
- if (options === void 0) { options = {}; }
33
- this.options = options;
34
- this.id = 'circular';
35
- this.options = __assign(__assign({}, DEFAULTS_LAYOUT_OPTIONS), options);
36
- }
37
- /**
38
- * Return the positions of nodes and edges(if needed).
39
- */
40
- CircularLayout.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.genericCircularLayout(false, graph, options)];
44
- });
45
- });
46
- };
47
- /**
48
- * To directly assign the positions to the nodes.
49
- */
50
- CircularLayout.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.genericCircularLayout(true, graph, options)];
55
- case 1:
56
- _a.sent();
57
- return [2 /*return*/];
58
- }
59
- });
60
- });
61
- };
62
- CircularLayout.prototype.genericCircularLayout = function (assign, graph, options) {
63
- return __awaiter(this, void 0, void 0, function () {
64
- var mergedOptions, width, height, center, divisions, _a, startAngle, _b, endAngle, angleRatio, ordering, clockwise, paramNodeSpacing, paramNodeSize, nodes, edges, _c, calculatedWidth, calculatedHeight, calculatedCenter, n, angleStep, radius, startRadius, endRadius, nodeSpacing_1, nodeSize_1, maxNodeSize_1, perimeter_1, astep, layoutNodes, divN, i, r, angle, result;
65
- return __generator(this, function (_d) {
66
- mergedOptions = __assign(__assign({}, this.options), options);
67
- width = mergedOptions.width, height = mergedOptions.height, center = mergedOptions.center, divisions = mergedOptions.divisions, _a = mergedOptions.startAngle, startAngle = _a === void 0 ? 0 : _a, _b = mergedOptions.endAngle, endAngle = _b === void 0 ? 2 * Math.PI : _b, angleRatio = mergedOptions.angleRatio, ordering = mergedOptions.ordering, clockwise = mergedOptions.clockwise, paramNodeSpacing = mergedOptions.nodeSpacing, paramNodeSize = mergedOptions.nodeSize;
68
- nodes = graph.getAllNodes();
69
- edges = graph.getAllEdges();
70
- _c = __read(calculateCenter(width, height, center), 3), calculatedWidth = _c[0], calculatedHeight = _c[1], calculatedCenter = _c[2];
71
- n = nodes === null || nodes === void 0 ? void 0 : nodes.length;
72
- if (!n || n === 1) {
73
- return [2 /*return*/, handleSingleNodeGraph(graph, assign, calculatedCenter)];
74
- }
75
- angleStep = (endAngle - startAngle) / n;
76
- radius = mergedOptions.radius, startRadius = mergedOptions.startRadius, endRadius = mergedOptions.endRadius;
77
- if (paramNodeSpacing) {
78
- nodeSpacing_1 = formatNumberFn(10, paramNodeSpacing);
79
- nodeSize_1 = formatSizeFn(10, paramNodeSize);
80
- maxNodeSize_1 = -Infinity;
81
- nodes.forEach(function (node) {
82
- var nSize = nodeSize_1(node);
83
- if (maxNodeSize_1 < nSize)
84
- maxNodeSize_1 = nSize;
85
- });
86
- perimeter_1 = 0;
87
- nodes.forEach(function (node, i) {
88
- if (i === 0)
89
- perimeter_1 += maxNodeSize_1 || 10;
90
- else
91
- perimeter_1 += (nodeSpacing_1(node) || 0) + (maxNodeSize_1 || 10);
92
- });
93
- radius = perimeter_1 / (2 * Math.PI);
94
- }
95
- else if (!radius && !startRadius && !endRadius) {
96
- radius = Math.min(calculatedHeight, calculatedWidth) / 2;
97
- }
98
- else if (!startRadius && endRadius) {
99
- startRadius = endRadius;
100
- }
101
- else if (startRadius && !endRadius) {
102
- endRadius = startRadius;
103
- }
104
- astep = angleStep * angleRatio;
105
- layoutNodes = [];
106
- if (ordering === 'topology') {
107
- // layout according to the topology
108
- layoutNodes = topologyOrdering(graph, nodes);
109
- }
110
- else if (ordering === 'topology-directed') {
111
- // layout according to the topology
112
- layoutNodes = topologyOrdering(graph, nodes, true);
113
- }
114
- else if (ordering === 'degree') {
115
- // layout according to the descent order of degrees
116
- layoutNodes = degreeOrdering(graph, nodes);
117
- }
118
- else {
119
- // layout according to the original order in the data.nodes
120
- layoutNodes = nodes.map(function (node) { return cloneFormatData(node); });
121
- }
122
- divN = Math.ceil(n / divisions);
123
- for (i = 0; i < n; ++i) {
124
- r = radius;
125
- if (!r && startRadius !== null && endRadius !== null) {
126
- r = startRadius + (i * (endRadius - startRadius)) / (n - 1);
127
- }
128
- if (!r) {
129
- r = 10 + (i * 100) / (n - 1);
130
- }
131
- angle = startAngle +
132
- (i % divN) * astep +
133
- ((2 * Math.PI) / divisions) * Math.floor(i / divN);
134
- if (!clockwise) {
135
- angle =
136
- endAngle -
137
- (i % divN) * astep -
138
- ((2 * Math.PI) / divisions) * Math.floor(i / divN);
139
- }
140
- layoutNodes[i].data.x = calculatedCenter[0] + Math.cos(angle) * r;
141
- layoutNodes[i].data.y = calculatedCenter[1] + Math.sin(angle) * r;
142
- }
143
- if (assign) {
144
- layoutNodes.forEach(function (node) {
145
- graph.mergeNodeData(node.id, {
146
- x: node.data.x,
147
- y: node.data.y,
148
- });
149
- });
150
- }
151
- result = {
152
- nodes: layoutNodes,
153
- edges: edges,
154
- };
155
- return [2 /*return*/, result];
156
- });
157
- });
158
- };
159
- return CircularLayout;
160
- }());
161
- export { CircularLayout };
162
- /**
163
- * order the nodes acoording to the graph topology
164
- * @param graph
165
- * @param nodes
166
- * @param directed
167
- * @returns
168
- */
169
- var topologyOrdering = function (graph, nodes, directed) {
170
- if (directed === void 0) { directed = false; }
171
- var orderedCNodes = [cloneFormatData(nodes[0])];
172
- var pickFlags = {};
173
- var n = nodes.length;
174
- pickFlags[nodes[0].id] = true;
175
- // write children into cnodes
176
- var k = 0;
177
- nodes.forEach(function (node, i) {
178
- if (i !== 0) {
179
- if ((i === n - 1 ||
180
- graph.getDegree(node.id, 'both') !==
181
- graph.getDegree(nodes[i + 1].id, 'both') ||
182
- graph.areNeighbors(orderedCNodes[k].id, node.id)) &&
183
- !pickFlags[node.id]) {
184
- orderedCNodes.push(cloneFormatData(node));
185
- pickFlags[node.id] = true;
186
- k++;
187
- }
188
- else {
189
- var children = directed
190
- ? graph.getSuccessors(orderedCNodes[k].id)
191
- : graph.getNeighbors(orderedCNodes[k].id);
192
- var foundChild = false;
193
- for (var j = 0; j < children.length; j++) {
194
- var child = children[j];
195
- if (graph.getDegree(child.id) === graph.getDegree(node.id) &&
196
- !pickFlags[child.id]) {
197
- orderedCNodes.push(cloneFormatData(child));
198
- pickFlags[child.id] = true;
199
- foundChild = true;
200
- break;
201
- }
202
- }
203
- var ii = 0;
204
- while (!foundChild) {
205
- if (!pickFlags[nodes[ii].id]) {
206
- orderedCNodes.push(cloneFormatData(nodes[ii]));
207
- pickFlags[nodes[ii].id] = true;
208
- foundChild = true;
209
- }
210
- ii++;
211
- if (ii === n) {
212
- break;
213
- }
214
- }
215
- }
216
- }
217
- });
218
- return orderedCNodes;
219
- };
220
- /**
221
- * order the nodes according to their degree
222
- * @param graph
223
- * @param nodes
224
- * @returns
225
- */
226
- function degreeOrdering(graph, nodes) {
227
- var orderedNodes = [];
228
- nodes.forEach(function (node, i) {
229
- orderedNodes.push(cloneFormatData(node));
230
- });
231
- orderedNodes.sort(function (nodeA, nodeB) {
232
- return graph.getDegree(nodeA.id, 'both') - graph.getDegree(nodeB.id, 'both');
233
- });
234
- return orderedNodes;
235
- }
236
- /**
237
- * format the invalide width and height, and get the center position
238
- * @param width
239
- * @param height
240
- * @param center
241
- * @returns
242
- */
243
- var calculateCenter = function (width, height, center) {
244
- var calculatedWidth = width;
245
- var calculatedHeight = height;
246
- var calculatedCenter = center;
247
- if (!calculatedWidth && typeof window !== 'undefined') {
248
- calculatedWidth = window.innerWidth;
249
- }
250
- if (!calculatedHeight && typeof window !== 'undefined') {
251
- calculatedHeight = window.innerHeight;
252
- }
253
- if (!calculatedCenter) {
254
- calculatedCenter = [calculatedWidth / 2, calculatedHeight / 2];
255
- }
256
- return [calculatedWidth, calculatedHeight, calculatedCenter];
257
- };
258
- //# sourceMappingURL=circular.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circular.js","sourceRoot":"","sources":["../src/circular.ts"],"names":[],"mappings":"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"}