@antv/layout 1.2.0 → 1.2.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.
- package/dist/0229766b7896aada2515.worker.js +2 -0
- package/dist/0229766b7896aada2515.worker.js.map +1 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/lib/bundle-entry.d.ts +18 -0
- package/lib/bundle-entry.js +19 -0
- package/lib/bundle-entry.js.map +1 -0
- package/lib/bundle-supervisor.d.ts +51 -0
- package/lib/bundle-supervisor.js +93 -0
- package/lib/bundle-supervisor.js.map +1 -0
- package/lib/bundle-worker.d.ts +3 -0
- package/lib/bundle-worker.js +53 -0
- package/lib/bundle-worker.js.map +1 -0
- package/lib/circular.js +258 -0
- package/lib/circular.js.map +1 -0
- package/lib/concentric.js +221 -0
- package/lib/concentric.js.map +1 -0
- package/lib/d3Force/forceInBox.js +331 -0
- package/lib/d3Force/forceInBox.js.map +1 -0
- package/lib/d3Force/index.js +339 -0
- package/lib/d3Force/index.js.map +1 -0
- package/lib/dagre/acyclic.js +62 -0
- package/lib/dagre/acyclic.js.map +1 -0
- package/lib/dagre/add-border-segments.js +37 -0
- package/lib/dagre/add-border-segments.js.map +1 -0
- package/lib/dagre/coordinate-system.js +65 -0
- package/lib/dagre/coordinate-system.js.map +1 -0
- package/lib/dagre/data/list.js +50 -0
- package/lib/dagre/data/list.js.map +1 -0
- package/lib/dagre/greedy-fas.js +147 -0
- package/lib/dagre/greedy-fas.js.map +1 -0
- package/lib/dagre/layout.js +468 -0
- package/lib/dagre/layout.js.map +1 -0
- package/lib/dagre/nesting-graph.js +153 -0
- package/lib/dagre/nesting-graph.js.map +1 -0
- package/lib/dagre/normalize.js +98 -0
- package/lib/dagre/normalize.js.map +1 -0
- package/lib/dagre/order/add-subgraph-constraints.js +41 -0
- package/lib/dagre/order/add-subgraph-constraints.js.map +1 -0
- package/lib/dagre/order/barycenter.js +23 -0
- package/lib/dagre/order/barycenter.js.map +1 -0
- package/lib/dagre/order/build-layer-graph.js +96 -0
- package/lib/dagre/order/build-layer-graph.js.map +1 -0
- package/lib/dagre/order/cross-count.js +63 -0
- package/lib/dagre/order/cross-count.js.map +1 -0
- package/lib/dagre/order/index.js +91 -0
- package/lib/dagre/order/index.js.map +1 -0
- package/lib/dagre/order/init-data-order.js +28 -0
- package/lib/dagre/order/init-data-order.js.map +1 -0
- package/lib/dagre/order/init-order.js +50 -0
- package/lib/dagre/order/init-order.js.map +1 -0
- package/lib/dagre/order/resolve-conflicts.js +121 -0
- package/lib/dagre/order/resolve-conflicts.js.map +1 -0
- package/lib/dagre/order/sort-subgraph.js +84 -0
- package/lib/dagre/order/sort-subgraph.js.map +1 -0
- package/lib/dagre/order/sort.js +74 -0
- package/lib/dagre/order/sort.js.map +1 -0
- package/lib/dagre/parent-dummy-chains.js +80 -0
- package/lib/dagre/parent-dummy-chains.js.map +1 -0
- package/lib/dagre/position/bk.js +398 -0
- package/lib/dagre/position/bk.js.map +1 -0
- package/lib/dagre/position/index.js +54 -0
- package/lib/dagre/position/index.js.map +1 -0
- package/lib/dagre/rank/feasible-tree.js +164 -0
- package/lib/dagre/rank/feasible-tree.js.map +1 -0
- package/lib/dagre/rank/index.js +48 -0
- package/lib/dagre/rank/index.js.map +1 -0
- package/lib/dagre/rank/network-simplex.js +232 -0
- package/lib/dagre/rank/network-simplex.js.map +1 -0
- package/lib/dagre/rank/util.js +138 -0
- package/lib/dagre/rank/util.js.map +1 -0
- package/lib/dagre/util.js +289 -0
- package/lib/dagre/util.js.map +1 -0
- package/lib/dagre.d.ts +1 -2
- package/lib/dagre.js +543 -0
- package/lib/dagre.js.map +1 -0
- package/lib/force/forceNBody.js +103 -0
- package/lib/force/forceNBody.js.map +1 -0
- package/lib/force/index.js +797 -0
- package/lib/force/index.js.map +1 -0
- package/lib/force/types.js +2 -0
- package/lib/force/types.js.map +1 -0
- package/lib/forceAtlas2/body.js +91 -0
- package/lib/forceAtlas2/body.js.map +1 -0
- package/lib/forceAtlas2/index.js +562 -0
- package/lib/forceAtlas2/index.js.map +1 -0
- package/lib/forceAtlas2/quad.js +98 -0
- package/lib/forceAtlas2/quad.js.map +1 -0
- package/lib/forceAtlas2/quadTree.js +105 -0
- package/lib/forceAtlas2/quadTree.js.map +1 -0
- package/lib/fruchterman.js +376 -0
- package/lib/fruchterman.js.map +1 -0
- package/lib/grid.js +308 -0
- package/lib/grid.js.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/mds.js +137 -0
- package/lib/mds.js.map +1 -0
- package/lib/radial/index.js +355 -0
- package/lib/radial/index.js.map +1 -0
- package/lib/radial/mds.js +29 -0
- package/lib/radial/mds.js.map +1 -0
- package/lib/radial/radial-nonoverlap-force.js +100 -0
- package/lib/radial/radial-nonoverlap-force.js.map +1 -0
- package/lib/random.js +98 -0
- package/lib/random.js.map +1 -0
- package/lib/registry.d.ts +0 -1
- package/lib/registry.js +25 -0
- package/lib/registry.js.map +1 -0
- package/lib/supervisor.js +86 -0
- package/lib/supervisor.js.map +1 -0
- package/lib/types.js +4 -0
- package/lib/types.js.map +1 -0
- package/lib/util/array.js +2 -0
- package/lib/util/array.js.map +1 -0
- package/lib/util/common.d.ts +12 -0
- package/lib/util/common.js +32 -0
- package/lib/util/common.js.map +1 -0
- package/lib/util/function.js +124 -0
- package/lib/util/function.js.map +1 -0
- package/lib/util/gpu.js +214 -0
- package/lib/util/gpu.js.map +1 -0
- package/lib/util/index.js +7 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/math.js +228 -0
- package/lib/util/math.js.map +1 -0
- package/lib/util/number.js +5 -0
- package/lib/util/number.js.map +1 -0
- package/lib/util/object.js +42 -0
- package/lib/util/object.js.map +1 -0
- package/lib/util/string.js +15 -0
- package/lib/util/string.js.map +1 -0
- package/lib/worker.d.ts +1 -3
- package/lib/worker.js +45 -0
- package/lib/worker.js.map +1 -0
- package/package.json +6 -5
- package/dist/5e37927bd3e57252658c.worker.js +0 -2
- package/dist/5e37927bd3e57252658c.worker.js.map +0 -1
- package/esm/5e37927bd3e57252658c.worker.js +0 -2
- package/esm/5e37927bd3e57252658c.worker.js.map +0 -1
- package/esm/index.esm.js +0 -2
- package/esm/index.esm.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,CAAC,IAAM,QAAQ,GAA2C;IAC9D,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,gBAAgB;IAC5B,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,KAAK,EAAE,WAAW;CACnB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { __awaiter, __extends, __generator, __read, __rest } from "tslib";
|
|
2
|
+
import EventEmitter from "eventemitter3";
|
|
3
|
+
import * as Comlink from "comlink";
|
|
4
|
+
/**
|
|
5
|
+
* @example
|
|
6
|
+
* const graph = new Graph();
|
|
7
|
+
* const layout = new CircularLayout();
|
|
8
|
+
*
|
|
9
|
+
* const supervisor = new Supervisor(graph, layout, { iterations: 1000 });
|
|
10
|
+
* const positions = await supervisor.execute();
|
|
11
|
+
* supervisor.stop();
|
|
12
|
+
* supervisor.kill();
|
|
13
|
+
*/
|
|
14
|
+
var Supervisor = /** @class */ (function (_super) {
|
|
15
|
+
__extends(Supervisor, _super);
|
|
16
|
+
function Supervisor(graph, layout, options) {
|
|
17
|
+
var _this = _super.call(this) || this;
|
|
18
|
+
_this.graph = graph;
|
|
19
|
+
_this.layout = layout;
|
|
20
|
+
_this.options = options;
|
|
21
|
+
_this.spawnWorker();
|
|
22
|
+
return _this;
|
|
23
|
+
}
|
|
24
|
+
Supervisor.prototype.spawnWorker = function () {
|
|
25
|
+
if (this.worker) {
|
|
26
|
+
this.worker.terminate();
|
|
27
|
+
}
|
|
28
|
+
this.worker = Comlink.wrap(
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
new Worker(new URL("./worker.js", import.meta.url)));
|
|
31
|
+
if (this.running) {
|
|
32
|
+
this.running = false;
|
|
33
|
+
this.execute();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
Supervisor.prototype.execute = function () {
|
|
37
|
+
var _a;
|
|
38
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
39
|
+
var _b, onTick, rest, payload, arraybufferWithNodesEdges, _c, positions;
|
|
40
|
+
return __generator(this, function (_d) {
|
|
41
|
+
switch (_d.label) {
|
|
42
|
+
case 0:
|
|
43
|
+
if (this.running)
|
|
44
|
+
return [2 /*return*/, this];
|
|
45
|
+
this.running = true;
|
|
46
|
+
_b = this.layout.options, onTick = _b.onTick, rest = __rest(_b, ["onTick"]);
|
|
47
|
+
payload = {
|
|
48
|
+
layout: {
|
|
49
|
+
id: this.layout.id,
|
|
50
|
+
options: rest,
|
|
51
|
+
iterations: (_a = this.options) === null || _a === void 0 ? void 0 : _a.iterations,
|
|
52
|
+
},
|
|
53
|
+
nodes: this.graph.getAllNodes(),
|
|
54
|
+
edges: this.graph.getAllEdges(),
|
|
55
|
+
};
|
|
56
|
+
arraybufferWithNodesEdges = new Float32Array([0]);
|
|
57
|
+
return [4 /*yield*/, this.worker.calculateLayout(payload, [
|
|
58
|
+
arraybufferWithNodesEdges,
|
|
59
|
+
])];
|
|
60
|
+
case 1:
|
|
61
|
+
_c = __read.apply(void 0, [_d.sent(), 1]), positions = _c[0];
|
|
62
|
+
return [2 /*return*/, positions];
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
Supervisor.prototype.stop = function () {
|
|
68
|
+
this.running = false;
|
|
69
|
+
// trigger `layout.stop()` if needed
|
|
70
|
+
this.worker.stopLayout();
|
|
71
|
+
return this;
|
|
72
|
+
};
|
|
73
|
+
Supervisor.prototype.kill = function () {
|
|
74
|
+
// if (this.worker) {
|
|
75
|
+
// this.worker.terminate();
|
|
76
|
+
// }
|
|
77
|
+
// TODO: unbind listeners on graph.
|
|
78
|
+
// TODO: release attached memory
|
|
79
|
+
};
|
|
80
|
+
Supervisor.prototype.isRunning = function () {
|
|
81
|
+
return this.running;
|
|
82
|
+
};
|
|
83
|
+
return Supervisor;
|
|
84
|
+
}(EventEmitter));
|
|
85
|
+
export { Supervisor };
|
|
86
|
+
//# sourceMappingURL=supervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAuBnC;;;;;;;;;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,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI;QACxB,aAAa;QACb,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACpD,CAAC;QAEF,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,qBAAqB;QACrB,6BAA6B;QAC7B,IAAI;QAEJ,mCAAmC;QAEnC,gCAAgC;IAClC,CAAC;IAED,8BAAS,GAAT;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACH,iBAAC;AAAD,CAAC,AAnGD,CAAgC,YAAY,GAmG3C"}
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAmGA,MAAM,UAAU,sBAAsB,CACpC,MAAW;IAEX,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/util/array.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PointTuple, Graph } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Assign or only return the result for the graph who has no nodes or only one node.
|
|
4
|
+
* @param graph original graph
|
|
5
|
+
* @param assign whether assign result to original graph
|
|
6
|
+
* @param center the layout center
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare const handleSingleNodeGraph: (graph: Graph, assign: boolean, center: PointTuple) => {
|
|
10
|
+
nodes: any[];
|
|
11
|
+
edges: import("@antv/graphlib").Edge<import("../types").EdgeData>[];
|
|
12
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
/**
|
|
3
|
+
* Assign or only return the result for the graph who has no nodes or only one node.
|
|
4
|
+
* @param graph original graph
|
|
5
|
+
* @param assign whether assign result to original graph
|
|
6
|
+
* @param center the layout center
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export var handleSingleNodeGraph = function (graph, assign, center) {
|
|
10
|
+
var nodes = graph.getAllNodes();
|
|
11
|
+
var edges = graph.getAllEdges();
|
|
12
|
+
if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {
|
|
13
|
+
var result = { nodes: [], edges: edges };
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
if (nodes.length === 1) {
|
|
17
|
+
if (assign) {
|
|
18
|
+
graph.mergeNodeData(nodes[0].id, {
|
|
19
|
+
x: center[0],
|
|
20
|
+
y: center[1],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
var result = {
|
|
24
|
+
nodes: [
|
|
25
|
+
__assign(__assign({}, nodes[0]), { data: __assign(__assign({}, nodes[0].data), { x: center[0], y: center[1] }) }),
|
|
26
|
+
],
|
|
27
|
+
edges: edges,
|
|
28
|
+
};
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/util/common.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,qBAAqB,GAAG,UACnC,KAAY,EACZ,MAAe,EACf,MAAkB;IAElB,IAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;QAClB,IAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAW,EAAE,KAAK,OAAA,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC;KACf;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,IAAI,MAAM,EAAE;YACV,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;aACb,CAAC,CAAC;SACJ;QACD,IAAM,MAAM,GAAG;YACb,KAAK,EAAE;sCAEA,KAAK,CAAC,CAAC,CAAC,KACX,IAAI,wBACC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAChB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;aAGjB;YACD,KAAK,OAAA;SACN,CAAC;QACF,OAAO,MAAM,CAAC;KACf;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { __read, __spreadArray } from "tslib";
|
|
2
|
+
import { isFunction, isNumber, isObject } from "@antv/util";
|
|
3
|
+
import { isArray } from ".";
|
|
4
|
+
/**
|
|
5
|
+
* Format value with multiple types into a function returns number.
|
|
6
|
+
* @param defaultValue default value when value is invalid
|
|
7
|
+
* @param value value to be formatted
|
|
8
|
+
* @returns formatted result, a function returns number
|
|
9
|
+
*/
|
|
10
|
+
export function formatNumberFn(defaultValue, value) {
|
|
11
|
+
var resultFunc;
|
|
12
|
+
if (isFunction(value)) {
|
|
13
|
+
resultFunc = value;
|
|
14
|
+
}
|
|
15
|
+
else if (isNumber(value)) {
|
|
16
|
+
// value is number
|
|
17
|
+
resultFunc = function () { return value; };
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
// value is not number and function
|
|
21
|
+
resultFunc = function () { return defaultValue; };
|
|
22
|
+
}
|
|
23
|
+
return resultFunc;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Format size config with multiple types into a function returns number
|
|
27
|
+
* @param defaultValue default value when value is invalid
|
|
28
|
+
* @param value value to be formatted
|
|
29
|
+
* @param resultIsNumber whether returns number
|
|
30
|
+
* @returns formatted result, a function returns number
|
|
31
|
+
*/
|
|
32
|
+
export function formatSizeFn(defaultValue, value, resultIsNumber) {
|
|
33
|
+
if (resultIsNumber === void 0) { resultIsNumber = true; }
|
|
34
|
+
if (!value && value !== 0) {
|
|
35
|
+
return function (d) {
|
|
36
|
+
var size = (d.data || {}).size;
|
|
37
|
+
if (size) {
|
|
38
|
+
if (isArray(size)) {
|
|
39
|
+
return size[0] > size[1] ? size[0] : size[1];
|
|
40
|
+
}
|
|
41
|
+
if (isObject(size)) {
|
|
42
|
+
return size.width > size.height ? size.width : size.height;
|
|
43
|
+
}
|
|
44
|
+
return size;
|
|
45
|
+
}
|
|
46
|
+
return defaultValue;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (isFunction(value)) {
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
if (isNumber(value)) {
|
|
53
|
+
return function () { return value; };
|
|
54
|
+
}
|
|
55
|
+
if (isArray(value)) {
|
|
56
|
+
return function () {
|
|
57
|
+
if (resultIsNumber) {
|
|
58
|
+
var max = Math.max.apply(Math, __spreadArray([], __read(value)));
|
|
59
|
+
return isNaN(max) ? defaultValue : max;
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (isObject(value)) {
|
|
65
|
+
return function () {
|
|
66
|
+
if (resultIsNumber) {
|
|
67
|
+
var max = Math.max(value.width, value.height);
|
|
68
|
+
return isNaN(max) ? defaultValue : max;
|
|
69
|
+
}
|
|
70
|
+
return [value.width, value.height];
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return function () { return defaultValue; };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* format the props nodeSize and nodeSpacing to a function
|
|
77
|
+
* @param nodeSize
|
|
78
|
+
* @param nodeSpacing
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
export var formatNodeSize = function (nodeSize, nodeSpacing) {
|
|
82
|
+
var nodeSizeFunc;
|
|
83
|
+
var nodeSpacingFunc;
|
|
84
|
+
if (isNumber(nodeSpacing)) {
|
|
85
|
+
nodeSpacingFunc = function () { return nodeSpacing; };
|
|
86
|
+
}
|
|
87
|
+
else if (isFunction(nodeSpacing)) {
|
|
88
|
+
nodeSpacingFunc = nodeSpacing;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
nodeSpacingFunc = function () { return 0; };
|
|
92
|
+
}
|
|
93
|
+
if (!nodeSize) {
|
|
94
|
+
nodeSizeFunc = function (d) {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
if ((_a = d.data) === null || _a === void 0 ? void 0 : _a.bboxSize) {
|
|
97
|
+
return (Math.max(d.data.bboxSize[0], d.data.bboxSize[1]) + nodeSpacingFunc(d));
|
|
98
|
+
}
|
|
99
|
+
if ((_b = d.data) === null || _b === void 0 ? void 0 : _b.size) {
|
|
100
|
+
if (isArray(d.data.size)) {
|
|
101
|
+
return Math.max(d.data.size[0], d.data.size[1]) + nodeSpacingFunc(d);
|
|
102
|
+
}
|
|
103
|
+
var dataSize = d.data.size;
|
|
104
|
+
if (isObject(dataSize)) {
|
|
105
|
+
var res = dataSize.width > dataSize.height ? dataSize.width : dataSize.height;
|
|
106
|
+
return res + nodeSpacingFunc(d);
|
|
107
|
+
}
|
|
108
|
+
return dataSize + nodeSpacingFunc(d);
|
|
109
|
+
}
|
|
110
|
+
return 10 + nodeSpacingFunc(d);
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
else if (isArray(nodeSize)) {
|
|
114
|
+
nodeSizeFunc = function (d) {
|
|
115
|
+
var res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];
|
|
116
|
+
return res + nodeSpacingFunc(d);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
nodeSizeFunc = function (d) { return nodeSize + nodeSpacingFunc(d); };
|
|
121
|
+
}
|
|
122
|
+
return nodeSizeFunc;
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/util/function.ts"],"names":[],"mappings":"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"}
|
package/lib/util/gpu.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数
|
|
3
|
+
* @param {NodeConfig[]} nodes 需要被转换的值
|
|
4
|
+
* @param {EdgeConfig[]} edges 返回函数的默认返回值
|
|
5
|
+
* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象
|
|
6
|
+
*/
|
|
7
|
+
export var buildTextureData = function (nodes, edges) {
|
|
8
|
+
var dataArray = [];
|
|
9
|
+
var nodeDict = [];
|
|
10
|
+
var mapIdPos = {};
|
|
11
|
+
var i = 0;
|
|
12
|
+
for (i = 0; i < nodes.length; i++) {
|
|
13
|
+
var n = nodes[i];
|
|
14
|
+
mapIdPos[n.id] = i;
|
|
15
|
+
dataArray.push(n.data.x);
|
|
16
|
+
dataArray.push(n.data.y);
|
|
17
|
+
dataArray.push(0);
|
|
18
|
+
dataArray.push(0);
|
|
19
|
+
nodeDict.push([]);
|
|
20
|
+
}
|
|
21
|
+
for (i = 0; i < edges.length; i++) {
|
|
22
|
+
var _a = edges[i], source = _a.source, target = _a.target;
|
|
23
|
+
if (!isNaN(mapIdPos[source]) && !isNaN(mapIdPos[target])) {
|
|
24
|
+
nodeDict[mapIdPos[source]].push(mapIdPos[target]);
|
|
25
|
+
nodeDict[mapIdPos[target]].push(mapIdPos[source]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
var maxEdgePerVetex = 0;
|
|
29
|
+
for (i = 0; i < nodes.length; i++) {
|
|
30
|
+
var offset = dataArray.length;
|
|
31
|
+
var dests = nodeDict[i];
|
|
32
|
+
var len = dests.length;
|
|
33
|
+
dataArray[i * 4 + 2] = offset;
|
|
34
|
+
dataArray[i * 4 + 3] = len;
|
|
35
|
+
maxEdgePerVetex = Math.max(maxEdgePerVetex, len);
|
|
36
|
+
for (var j = 0; j < len; ++j) {
|
|
37
|
+
var dest = dests[j];
|
|
38
|
+
dataArray.push(+dest);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
while (dataArray.length % 4 !== 0) {
|
|
42
|
+
dataArray.push(0);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
maxEdgePerVetex: maxEdgePerVetex,
|
|
46
|
+
array: new Float32Array(dataArray),
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数
|
|
51
|
+
* @param {NodeConfig[]} nodes 节点数组
|
|
52
|
+
* @param {EdgeConfig[]} edges 边数组
|
|
53
|
+
* @param {Function} attrs 读取边属性的函数
|
|
54
|
+
* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象
|
|
55
|
+
*/
|
|
56
|
+
// export const buildTextureDataWithOneEdgeAttr = (nodes: OutNode[], edges: Edge[], attrs: Function): {
|
|
57
|
+
// array: Float32Array,
|
|
58
|
+
// maxEdgePerVetex: number
|
|
59
|
+
// } => {
|
|
60
|
+
// const dataArray = [];
|
|
61
|
+
// const nodeDict: any = [];
|
|
62
|
+
// const mapIdPos: IndexMap = {};
|
|
63
|
+
// let i = 0;
|
|
64
|
+
// for (i = 0; i < nodes.length; i++) {
|
|
65
|
+
// const n = nodes[i];
|
|
66
|
+
// mapIdPos[n.id] = i;
|
|
67
|
+
// dataArray.push(n.x);
|
|
68
|
+
// dataArray.push(n.y);
|
|
69
|
+
// dataArray.push(0);
|
|
70
|
+
// dataArray.push(0);
|
|
71
|
+
// nodeDict.push([]);
|
|
72
|
+
// }
|
|
73
|
+
// for (i = 0; i < edges.length; i++) {
|
|
74
|
+
// const e = edges[i];
|
|
75
|
+
// nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);
|
|
76
|
+
// nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同
|
|
77
|
+
// nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);
|
|
78
|
+
// nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同
|
|
79
|
+
// }
|
|
80
|
+
// let maxEdgePerVetex = 0;
|
|
81
|
+
// for (i = 0; i < nodes.length; i++) {
|
|
82
|
+
// const offset: number = dataArray.length;
|
|
83
|
+
// const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……
|
|
84
|
+
// const len = dests.length;
|
|
85
|
+
// dataArray[i * 4 + 2] = offset;
|
|
86
|
+
// dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数
|
|
87
|
+
// maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);
|
|
88
|
+
// for (let j = 0; j < len; ++j) {
|
|
89
|
+
// const dest = dests[j];
|
|
90
|
+
// dataArray.push(+dest);
|
|
91
|
+
// }
|
|
92
|
+
// }
|
|
93
|
+
// // 不是 4 的倍数,填充 0
|
|
94
|
+
// while (dataArray.length % 4 !== 0) {
|
|
95
|
+
// dataArray.push(0);
|
|
96
|
+
// }
|
|
97
|
+
// return {
|
|
98
|
+
// array: new Float32Array(dataArray),
|
|
99
|
+
// maxEdgePerVetex
|
|
100
|
+
// }
|
|
101
|
+
// }
|
|
102
|
+
/**
|
|
103
|
+
* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数
|
|
104
|
+
* @param {NodeConfig[]} nodes 节点数组
|
|
105
|
+
* @param {EdgeConfig[]} edges 边数组
|
|
106
|
+
* @param {Function} attrs 读取边属性的函数
|
|
107
|
+
* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象
|
|
108
|
+
*/
|
|
109
|
+
export var buildTextureDataWithTwoEdgeAttr = function (nodes, edges, attrs1, attrs2) {
|
|
110
|
+
var dataArray = [];
|
|
111
|
+
var nodeDict = [];
|
|
112
|
+
var mapIdPos = {};
|
|
113
|
+
var i = 0;
|
|
114
|
+
for (i = 0; i < nodes.length; i++) {
|
|
115
|
+
var n = nodes[i];
|
|
116
|
+
mapIdPos[n.id] = i;
|
|
117
|
+
dataArray.push(n.data.x);
|
|
118
|
+
dataArray.push(n.data.y);
|
|
119
|
+
dataArray.push(0);
|
|
120
|
+
dataArray.push(0);
|
|
121
|
+
nodeDict.push([]);
|
|
122
|
+
}
|
|
123
|
+
for (i = 0; i < edges.length; i++) {
|
|
124
|
+
var e = edges[i];
|
|
125
|
+
var source = e.source, target = e.target;
|
|
126
|
+
nodeDict[mapIdPos[source]].push(mapIdPos[target]);
|
|
127
|
+
nodeDict[mapIdPos[source]].push(attrs1(e));
|
|
128
|
+
nodeDict[mapIdPos[source]].push(attrs2(e));
|
|
129
|
+
nodeDict[mapIdPos[source]].push(0);
|
|
130
|
+
nodeDict[mapIdPos[target]].push(mapIdPos[source]);
|
|
131
|
+
nodeDict[mapIdPos[target]].push(attrs1(e));
|
|
132
|
+
nodeDict[mapIdPos[target]].push(attrs2(e));
|
|
133
|
+
nodeDict[mapIdPos[target]].push(0);
|
|
134
|
+
}
|
|
135
|
+
var maxEdgePerVetex = 0;
|
|
136
|
+
for (i = 0; i < nodes.length; i++) {
|
|
137
|
+
var offset = dataArray.length;
|
|
138
|
+
var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……
|
|
139
|
+
var len = dests.length;
|
|
140
|
+
// dataArray[i * 4 + 2] = offset;
|
|
141
|
+
// dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数
|
|
142
|
+
// pack offset & length into float32: offset 20bit, length 12bit
|
|
143
|
+
dataArray[i * 4 + 2] = offset + (1048576 * len) / 4;
|
|
144
|
+
dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值
|
|
145
|
+
maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);
|
|
146
|
+
for (var j = 0; j < len; ++j) {
|
|
147
|
+
var dest = dests[j];
|
|
148
|
+
dataArray.push(+dest);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// 不是 4 的倍数,填充 0
|
|
152
|
+
while (dataArray.length % 4 !== 0) {
|
|
153
|
+
dataArray.push(0);
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
maxEdgePerVetex: maxEdgePerVetex,
|
|
157
|
+
array: new Float32Array(dataArray),
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* transform the extended attributes of nodes or edges to a texture array
|
|
162
|
+
* @param {string[]} attributeNames attributes' name to be read from items and put into output array
|
|
163
|
+
* @param {ModelConfig[]} items the items to be read
|
|
164
|
+
* @return {Float32Array} the attributes' value array to be read by GPU
|
|
165
|
+
*/
|
|
166
|
+
export var attributesToTextureData = function (attributeNames, items) {
|
|
167
|
+
var dataArray = [];
|
|
168
|
+
var attributeNum = attributeNames.length;
|
|
169
|
+
var attributteStringMap = {};
|
|
170
|
+
items.forEach(function (item) {
|
|
171
|
+
attributeNames.forEach(function (name, i) {
|
|
172
|
+
if (attributteStringMap[item[name]] === undefined) {
|
|
173
|
+
attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;
|
|
174
|
+
}
|
|
175
|
+
dataArray.push(attributteStringMap[item[name]]);
|
|
176
|
+
// insure each node's attributes take inter number of grids
|
|
177
|
+
if (i === attributeNum - 1) {
|
|
178
|
+
while (dataArray.length % 4 !== 0) {
|
|
179
|
+
dataArray.push(0);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
array: new Float32Array(dataArray),
|
|
186
|
+
count: Object.keys(attributteStringMap).length,
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* transform the number array format of extended attributes of nodes or edges to a texture array
|
|
191
|
+
* @param {string[]} attributeNames attributes' name to be read from items and put into output array
|
|
192
|
+
* @return {Float32Array} the attributes' value array to be read by GPU
|
|
193
|
+
*/
|
|
194
|
+
export var arrayToTextureData = function (valueArrays) {
|
|
195
|
+
var dataArray = [];
|
|
196
|
+
var attributeNum = valueArrays.length;
|
|
197
|
+
var itemNum = valueArrays[0].length;
|
|
198
|
+
var _loop_1 = function (j) {
|
|
199
|
+
valueArrays.forEach(function (valueArray, i) {
|
|
200
|
+
dataArray.push(valueArray[j]);
|
|
201
|
+
// insure each node's attributes take inter number of grids
|
|
202
|
+
if (i === attributeNum - 1) {
|
|
203
|
+
while (dataArray.length % 4 !== 0) {
|
|
204
|
+
dataArray.push(0);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
for (var j = 0; j < itemNum; j++) {
|
|
210
|
+
_loop_1(j);
|
|
211
|
+
}
|
|
212
|
+
return new Float32Array(dataArray);
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=gpu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpu.js","sourceRoot":"","sources":["../../src/util/gpu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|