@antv/layout 1.2.12 → 1.2.14-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/85db61ddc757dae66e04.worker.js +2 -0
- package/dist/85db61ddc757dae66e04.worker.js.map +1 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/lib/{dagre → antv-dagre}/acyclic.d.ts +1 -1
- package/lib/antv-dagre/acyclic.js +65 -0
- package/lib/antv-dagre/acyclic.js.map +1 -0
- package/lib/antv-dagre/add-border-segments.js +41 -0
- package/lib/antv-dagre/add-border-segments.js.map +1 -0
- package/lib/{dagre → antv-dagre}/coordinate-system.d.ts +2 -1
- package/lib/antv-dagre/coordinate-system.js +69 -0
- package/lib/antv-dagre/coordinate-system.js.map +1 -0
- package/lib/{dagre → antv-dagre}/data/list.d.ts +1 -1
- package/lib/{dagre → antv-dagre}/data/list.js +23 -22
- package/lib/antv-dagre/data/list.js.map +1 -0
- package/lib/{dagre → antv-dagre}/greedy-fas.d.ts +2 -2
- package/lib/antv-dagre/greedy-fas.js +141 -0
- package/lib/antv-dagre/greedy-fas.js.map +1 -0
- package/lib/{dagre → antv-dagre}/layout.d.ts +2 -1
- package/lib/{dagre → antv-dagre}/layout.js +156 -154
- package/lib/antv-dagre/layout.js.map +1 -0
- package/lib/{dagre → antv-dagre}/nesting-graph.js +42 -39
- package/lib/antv-dagre/nesting-graph.js.map +1 -0
- package/lib/{dagre → antv-dagre}/normalize.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/normalize.js +29 -25
- package/lib/antv-dagre/normalize.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.js +13 -9
- package/lib/antv-dagre/order/add-subgraph-constraints.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/barycenter.d.ts +2 -2
- package/lib/antv-dagre/order/barycenter.js +27 -0
- package/lib/antv-dagre/order/barycenter.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/build-layer-graph.js +23 -23
- package/lib/antv-dagre/order/build-layer-graph.js.map +1 -0
- package/lib/antv-dagre/order/cross-count.d.ts +3 -0
- package/lib/{dagre → antv-dagre}/order/cross-count.js +21 -17
- package/lib/antv-dagre/order/cross-count.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/index.d.ts +1 -1
- package/lib/antv-dagre/order/index.js +95 -0
- package/lib/antv-dagre/order/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/init-data-order.js +12 -9
- package/lib/antv-dagre/order/init-data-order.js.map +1 -0
- package/lib/antv-dagre/order/init-order.js +51 -0
- package/lib/antv-dagre/order/init-order.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/resolve-conflicts.d.ts +3 -3
- package/lib/{dagre → antv-dagre}/order/resolve-conflicts.js +35 -36
- package/lib/antv-dagre/order/resolve-conflicts.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/sort-subgraph.js +28 -23
- package/lib/antv-dagre/order/sort-subgraph.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/sort.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/order/sort.js +23 -19
- package/lib/antv-dagre/order/sort.js.map +1 -0
- package/lib/{dagre → antv-dagre}/parent-dummy-chains.js +32 -28
- package/lib/antv-dagre/parent-dummy-chains.js.map +1 -0
- package/lib/{dagre → antv-dagre}/position/bk.d.ts +5 -4
- package/lib/{dagre → antv-dagre}/position/bk.js +162 -148
- package/lib/antv-dagre/position/bk.js.map +1 -0
- package/lib/{dagre → antv-dagre}/position/index.d.ts +2 -1
- package/lib/antv-dagre/position/index.js +55 -0
- package/lib/antv-dagre/position/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/rank/feasible-tree.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/rank/feasible-tree.js +42 -38
- package/lib/antv-dagre/rank/feasible-tree.js.map +1 -0
- package/lib/antv-dagre/rank/index.d.ts +2 -0
- package/lib/{dagre → antv-dagre}/rank/index.js +17 -13
- package/lib/antv-dagre/rank/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/rank/network-simplex.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/rank/network-simplex.js +90 -81
- package/lib/antv-dagre/rank/network-simplex.js.map +1 -0
- package/lib/{dagre → antv-dagre}/rank/util.d.ts +2 -2
- package/lib/{dagre → antv-dagre}/rank/util.js +37 -32
- package/lib/antv-dagre/rank/util.js.map +1 -0
- package/lib/antv-dagre/types.d.ts +2 -0
- package/lib/antv-dagre/types.js +3 -0
- package/lib/antv-dagre/types.js.map +1 -0
- package/lib/{dagre → antv-dagre}/util.d.ts +1 -1
- package/lib/antv-dagre/util.js +299 -0
- package/lib/antv-dagre/util.js.map +1 -0
- package/lib/antv-dagre.d.ts +50 -0
- package/lib/antv-dagre.js +542 -0
- package/lib/antv-dagre.js.map +1 -0
- package/lib/bundle-entry.d.ts +2 -18
- package/lib/bundle-entry.js +5 -18
- package/lib/bundle-entry.js.map +1 -1
- package/lib/bundle-supervisor.d.ts +4 -22
- package/lib/bundle-supervisor.js +59 -54
- package/lib/bundle-supervisor.js.map +1 -1
- package/lib/bundle-worker.d.ts +1 -1
- package/lib/bundle-worker.js +38 -35
- package/lib/bundle-worker.js.map +1 -1
- package/lib/circular.d.ts +1 -1
- package/lib/circular.js +133 -145
- package/lib/circular.js.map +1 -1
- package/lib/comboCombined.d.ts +1 -1
- package/lib/comboCombined.js +273 -299
- package/lib/comboCombined.js.map +1 -1
- package/lib/concentric.d.ts +1 -1
- package/lib/concentric.js +173 -179
- package/lib/concentric.js.map +1 -1
- package/lib/d3Force/forceInBox.js +80 -78
- package/lib/d3Force/forceInBox.js.map +1 -1
- package/lib/d3Force/index.d.ts +2 -2
- package/lib/d3Force/index.js +207 -229
- package/lib/d3Force/index.js.map +1 -1
- package/lib/dagre.d.ts +13 -24
- package/lib/dagre.js +61 -541
- package/lib/dagre.js.map +1 -1
- package/lib/exports.d.ts +17 -0
- package/lib/exports.js +20 -0
- package/lib/exports.js.map +1 -0
- package/lib/force/forceNBody.js +48 -47
- package/lib/force/forceNBody.js.map +1 -1
- package/lib/force/index.d.ts +1 -1
- package/lib/force/index.js +301 -324
- package/lib/force/index.js.map +1 -1
- package/lib/force/types.d.ts +5 -5
- package/lib/force/types.js +2 -1
- package/lib/forceAtlas2/body.d.ts +1 -1
- package/lib/forceAtlas2/body.js +32 -31
- package/lib/forceAtlas2/body.js.map +1 -1
- package/lib/forceAtlas2/index.d.ts +1 -1
- package/lib/forceAtlas2/index.js +219 -227
- package/lib/forceAtlas2/index.js.map +1 -1
- package/lib/forceAtlas2/quad.d.ts +2 -2
- package/lib/forceAtlas2/quad.js +43 -42
- package/lib/forceAtlas2/quad.js.map +1 -1
- package/lib/forceAtlas2/quadTree.js +19 -17
- package/lib/forceAtlas2/quadTree.js.map +1 -1
- package/lib/fruchterman.d.ts +1 -1
- package/lib/fruchterman.js +203 -219
- package/lib/fruchterman.js.map +1 -1
- package/lib/grid.d.ts +1 -1
- package/lib/grid.js +201 -207
- package/lib/grid.js.map +1 -1
- package/lib/index.d.ts +1 -15
- package/lib/index.js +5 -16
- package/lib/index.js.map +1 -1
- package/lib/mds.d.ts +1 -1
- package/lib/mds.js +73 -79
- package/lib/mds.js.map +1 -1
- package/lib/radial/index.d.ts +1 -1
- package/lib/radial/index.js +183 -186
- package/lib/radial/index.js.map +1 -1
- package/lib/radial/mds.d.ts +1 -1
- package/lib/radial/mds.js +20 -14
- package/lib/radial/mds.js.map +1 -1
- package/lib/radial/radial-nonoverlap-force.d.ts +2 -2
- package/lib/radial/radial-nonoverlap-force.js +40 -37
- package/lib/radial/radial-nonoverlap-force.js.map +1 -1
- package/lib/random.d.ts +1 -1
- package/lib/random.js +57 -66
- package/lib/random.js.map +1 -1
- package/lib/registry.d.ts +2 -2
- package/lib/registry.js +30 -25
- package/lib/registry.js.map +1 -1
- package/lib/supervisor.d.ts +2 -3
- package/lib/supervisor.js +63 -58
- package/lib/supervisor.js.map +1 -1
- package/lib/types.d.ts +20 -74
- package/lib/types.js +5 -1
- package/lib/types.js.map +1 -1
- package/lib/util/array.js +4 -1
- package/lib/util/array.js.map +1 -1
- package/lib/util/common.d.ts +1 -1
- package/lib/util/common.js +11 -8
- package/lib/util/common.js.map +1 -1
- package/lib/util/function.js +41 -37
- package/lib/util/function.js.map +1 -1
- package/lib/util/index.d.ts +0 -2
- package/lib/util/index.js +7 -6
- package/lib/util/index.js.map +1 -1
- package/lib/util/math.d.ts +1 -26
- package/lib/util/math.js +55 -154
- package/lib/util/math.js.map +1 -1
- package/lib/util/object.d.ts +1 -1
- package/lib/util/object.js +20 -15
- package/lib/util/object.js.map +1 -1
- package/lib/util/size.d.ts +3 -0
- package/lib/util/size.js +16 -0
- package/lib/util/size.js.map +1 -0
- package/lib/worker.js +36 -35
- package/lib/worker.js.map +1 -1
- package/package.json +10 -6
- package/dist/4161e9d58bae8f39711a.worker.js +0 -2
- package/dist/4161e9d58bae8f39711a.worker.js.map +0 -1
- package/lib/dagre/acyclic.js +0 -62
- package/lib/dagre/acyclic.js.map +0 -1
- package/lib/dagre/add-border-segments.js +0 -37
- package/lib/dagre/add-border-segments.js.map +0 -1
- package/lib/dagre/coordinate-system.js +0 -65
- package/lib/dagre/coordinate-system.js.map +0 -1
- package/lib/dagre/data/list.js.map +0 -1
- package/lib/dagre/greedy-fas.js +0 -147
- package/lib/dagre/greedy-fas.js.map +0 -1
- package/lib/dagre/layout.js.map +0 -1
- package/lib/dagre/nesting-graph.js.map +0 -1
- package/lib/dagre/normalize.js.map +0 -1
- package/lib/dagre/order/add-subgraph-constraints.js.map +0 -1
- package/lib/dagre/order/barycenter.js +0 -23
- package/lib/dagre/order/barycenter.js.map +0 -1
- package/lib/dagre/order/build-layer-graph.js.map +0 -1
- package/lib/dagre/order/cross-count.d.ts +0 -3
- package/lib/dagre/order/cross-count.js.map +0 -1
- package/lib/dagre/order/index.js +0 -91
- package/lib/dagre/order/index.js.map +0 -1
- package/lib/dagre/order/init-data-order.js.map +0 -1
- package/lib/dagre/order/init-order.js +0 -50
- package/lib/dagre/order/init-order.js.map +0 -1
- package/lib/dagre/order/resolve-conflicts.js.map +0 -1
- package/lib/dagre/order/sort-subgraph.js.map +0 -1
- package/lib/dagre/order/sort.js.map +0 -1
- package/lib/dagre/parent-dummy-chains.js.map +0 -1
- package/lib/dagre/position/bk.js.map +0 -1
- package/lib/dagre/position/index.js +0 -54
- package/lib/dagre/position/index.js.map +0 -1
- package/lib/dagre/rank/feasible-tree.js.map +0 -1
- package/lib/dagre/rank/index.d.ts +0 -2
- package/lib/dagre/rank/index.js.map +0 -1
- package/lib/dagre/rank/network-simplex.js.map +0 -1
- package/lib/dagre/rank/util.js.map +0 -1
- package/lib/dagre/util.js +0 -289
- package/lib/dagre/util.js.map +0 -1
- package/lib/util/gpu.d.ts +0 -45
- package/lib/util/gpu.js +0 -214
- package/lib/util/gpu.js.map +0 -1
- package/lib/util/number.d.ts +0 -1
- package/lib/util/number.js +0 -5
- package/lib/util/number.js.map +0 -1
- package/lib/util/string.d.ts +0 -1
- package/lib/util/string.js +0 -15
- package/lib/util/string.js.map +0 -1
- /package/lib/{dagre → antv-dagre}/add-border-segments.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/nesting-graph.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/build-layer-graph.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/init-data-order.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/init-order.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/order/sort-subgraph.d.ts +0 -0
- /package/lib/{dagre → antv-dagre}/parent-dummy-chains.d.ts +0 -0
package/lib/util/math.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.graphTreeDfs = exports.getEuclideanDistance = exports.getLayoutBBox = exports.scaleMatrix = exports.getAdjMatrix = exports.floydWarshall = void 0;
|
|
4
|
+
const util_1 = require("@antv/util");
|
|
5
|
+
const array_1 = require("./array");
|
|
6
|
+
const floydWarshall = (adjMatrix) => {
|
|
4
7
|
// initialize
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
for (
|
|
8
|
+
const dist = [];
|
|
9
|
+
const size = adjMatrix.length;
|
|
10
|
+
for (let i = 0; i < size; i += 1) {
|
|
8
11
|
dist[i] = [];
|
|
9
|
-
for (
|
|
12
|
+
for (let j = 0; j < size; j += 1) {
|
|
10
13
|
if (i === j) {
|
|
11
14
|
dist[i][j] = 0;
|
|
12
15
|
}
|
|
@@ -19,9 +22,9 @@ export var floydWarshall = function (adjMatrix) {
|
|
|
19
22
|
}
|
|
20
23
|
}
|
|
21
24
|
// floyd
|
|
22
|
-
for (
|
|
23
|
-
for (
|
|
24
|
-
for (
|
|
25
|
+
for (let k = 0; k < size; k += 1) {
|
|
26
|
+
for (let i = 0; i < size; i += 1) {
|
|
27
|
+
for (let j = 0; j < size; j += 1) {
|
|
25
28
|
if (dist[i][j] > dist[i][k] + dist[k][j]) {
|
|
26
29
|
dist[i][j] = dist[i][k] + dist[k][j];
|
|
27
30
|
}
|
|
@@ -30,25 +33,26 @@ export var floydWarshall = function (adjMatrix) {
|
|
|
30
33
|
}
|
|
31
34
|
return dist;
|
|
32
35
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
exports.floydWarshall = floydWarshall;
|
|
37
|
+
const getAdjMatrix = (data, directed) => {
|
|
38
|
+
const { nodes, edges } = data;
|
|
39
|
+
const matrix = [];
|
|
36
40
|
// map node with index in data.nodes
|
|
37
|
-
|
|
41
|
+
const nodeMap = {};
|
|
38
42
|
if (!nodes) {
|
|
39
43
|
throw new Error('invalid nodes data!');
|
|
40
44
|
}
|
|
41
45
|
if (nodes) {
|
|
42
|
-
nodes.forEach(
|
|
46
|
+
nodes.forEach((node, i) => {
|
|
43
47
|
nodeMap[node.id] = i;
|
|
44
|
-
|
|
48
|
+
const row = [];
|
|
45
49
|
matrix.push(row);
|
|
46
50
|
});
|
|
47
51
|
}
|
|
48
|
-
edges === null || edges === void 0 ? void 0 : edges.forEach(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
edges === null || edges === void 0 ? void 0 : edges.forEach((e) => {
|
|
53
|
+
const { source, target } = e;
|
|
54
|
+
const sIndex = nodeMap[source];
|
|
55
|
+
const tIndex = nodeMap[target];
|
|
52
56
|
if (sIndex === undefined || tIndex === undefined)
|
|
53
57
|
return;
|
|
54
58
|
matrix[sIndex][tIndex] = 1;
|
|
@@ -58,75 +62,51 @@ export var getAdjMatrix = function (data, directed) {
|
|
|
58
62
|
});
|
|
59
63
|
return matrix;
|
|
60
64
|
};
|
|
65
|
+
exports.getAdjMatrix = getAdjMatrix;
|
|
61
66
|
/**
|
|
62
67
|
* scale matrix
|
|
63
68
|
* @param matrix [ [], [], [] ]
|
|
64
69
|
* @param ratio
|
|
65
70
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
matrix.forEach(
|
|
69
|
-
|
|
70
|
-
row.forEach(
|
|
71
|
+
const scaleMatrix = (matrix, ratio) => {
|
|
72
|
+
const result = [];
|
|
73
|
+
matrix.forEach((row) => {
|
|
74
|
+
const newRow = [];
|
|
75
|
+
row.forEach((v) => {
|
|
71
76
|
newRow.push(v * ratio);
|
|
72
77
|
});
|
|
73
78
|
result.push(newRow);
|
|
74
79
|
});
|
|
75
80
|
return result;
|
|
76
81
|
};
|
|
77
|
-
|
|
78
|
-
* depth first traverse, from leaves to root, children in inverse order
|
|
79
|
-
* if the fn returns false, terminate the traverse
|
|
80
|
-
*/
|
|
81
|
-
var traverseUp = function (data, fn) {
|
|
82
|
-
if (data && data.children) {
|
|
83
|
-
for (var i = data.children.length - 1; i >= 0; i--) {
|
|
84
|
-
if (!traverseUp(data.children[i], fn))
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (!fn(data)) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
return true;
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* depth first traverse, from leaves to root, children in inverse order
|
|
95
|
-
* if the fn returns false, terminate the traverse
|
|
96
|
-
*/
|
|
97
|
-
export var traverseTreeUp = function (data, fn) {
|
|
98
|
-
if (typeof fn !== 'function') {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
traverseUp(data, fn);
|
|
102
|
-
};
|
|
82
|
+
exports.scaleMatrix = scaleMatrix;
|
|
103
83
|
/**
|
|
104
84
|
* calculate the bounding box for the nodes according to their x, y, and size
|
|
105
85
|
* @param nodes nodes in the layout
|
|
106
86
|
* @returns
|
|
107
87
|
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
nodes.forEach(
|
|
114
|
-
|
|
115
|
-
if (isArray(size)) {
|
|
88
|
+
const getLayoutBBox = (nodes) => {
|
|
89
|
+
let minX = Infinity;
|
|
90
|
+
let minY = Infinity;
|
|
91
|
+
let maxX = -Infinity;
|
|
92
|
+
let maxY = -Infinity;
|
|
93
|
+
nodes.forEach((node) => {
|
|
94
|
+
let size = node.data.size;
|
|
95
|
+
if ((0, array_1.isArray)(size)) {
|
|
116
96
|
if (size.length === 1)
|
|
117
97
|
size = [size[0], size[0]];
|
|
118
98
|
}
|
|
119
|
-
else if (isNumber(size)) {
|
|
99
|
+
else if ((0, util_1.isNumber)(size)) {
|
|
120
100
|
size = [size, size];
|
|
121
101
|
}
|
|
122
102
|
else if (size === undefined || isNaN(size)) {
|
|
123
103
|
size = [30, 30];
|
|
124
104
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
105
|
+
const halfSize = [size[0] / 2, size[1] / 2];
|
|
106
|
+
const left = node.data.x - halfSize[0];
|
|
107
|
+
const right = node.data.x + halfSize[0];
|
|
108
|
+
const top = node.data.y - halfSize[1];
|
|
109
|
+
const bottom = node.data.y + halfSize[1];
|
|
130
110
|
if (minX > left)
|
|
131
111
|
minX = left;
|
|
132
112
|
if (minY > top)
|
|
@@ -136,95 +116,17 @@ export var getLayoutBBox = function (nodes) {
|
|
|
136
116
|
if (maxY < bottom)
|
|
137
117
|
maxY = bottom;
|
|
138
118
|
});
|
|
139
|
-
return { minX
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* 获取节点集合的平均位置信息
|
|
143
|
-
* @param nodes 节点集合
|
|
144
|
-
* @returns 平局内置
|
|
145
|
-
*/
|
|
146
|
-
export var getAvgNodePosition = function (nodes) {
|
|
147
|
-
var totalNodes = { x: 0, y: 0 };
|
|
148
|
-
nodes.forEach(function (node) {
|
|
149
|
-
totalNodes.x += node.data.x || 0;
|
|
150
|
-
totalNodes.y += node.data.y || 0;
|
|
151
|
-
});
|
|
152
|
-
// 获取均值向量
|
|
153
|
-
var length = nodes.length || 1;
|
|
154
|
-
return {
|
|
155
|
-
x: totalNodes.x / length,
|
|
156
|
-
y: totalNodes.y / length,
|
|
157
|
-
};
|
|
158
|
-
};
|
|
159
|
-
// 找出指定节点关联的边的起点或终点
|
|
160
|
-
var getCoreNode = function (type, node, edges) {
|
|
161
|
-
var _a, _b;
|
|
162
|
-
if (type === 'source') {
|
|
163
|
-
return (((_a = edges === null || edges === void 0 ? void 0 : edges.find(function (edge) { return edge.target === node.id; })) === null || _a === void 0 ? void 0 : _a.source) ||
|
|
164
|
-
{});
|
|
165
|
-
}
|
|
166
|
-
return (((_b = edges === null || edges === void 0 ? void 0 : edges.find(function (edge) { return edge.source === node.id; })) === null || _b === void 0 ? void 0 : _b.target) || {});
|
|
167
|
-
};
|
|
168
|
-
// 找出指定节点为起点或终点的所有一度叶子节点
|
|
169
|
-
var getRelativeNodeIds = function (type, coreNode, edges) {
|
|
170
|
-
var relativeNodes = [];
|
|
171
|
-
switch (type) {
|
|
172
|
-
case 'source':
|
|
173
|
-
relativeNodes = edges === null || edges === void 0 ? void 0 : edges.filter(function (edge) { return edge.source === coreNode.id; }).map(function (edge) { return edge.target; });
|
|
174
|
-
break;
|
|
175
|
-
case 'target':
|
|
176
|
-
relativeNodes = edges === null || edges === void 0 ? void 0 : edges.filter(function (edge) { return edge.target === coreNode.id; }).map(function (edge) { return edge.source; });
|
|
177
|
-
break;
|
|
178
|
-
case 'both':
|
|
179
|
-
relativeNodes = edges === null || edges === void 0 ? void 0 : edges.filter(function (edge) { return edge.source === coreNode.id; }).map(function (edge) { return edge.target; }).concat(edges === null || edges === void 0 ? void 0 : edges.filter(function (edge) { return edge.target === coreNode.id; }).map(function (edge) { return edge.source; }));
|
|
180
|
-
break;
|
|
181
|
-
default:
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
// 去重
|
|
185
|
-
var set = new Set(relativeNodes);
|
|
186
|
-
return Array.from(set);
|
|
187
|
-
};
|
|
188
|
-
// 找出同类型的节点
|
|
189
|
-
var getSameTypeNodes = function (type, nodeClusterBy, node, relativeNodes, degreesMap) {
|
|
190
|
-
var typeName = node[nodeClusterBy] || '';
|
|
191
|
-
var sameTypeNodes = (relativeNodes === null || relativeNodes === void 0 ? void 0 : relativeNodes.filter(function (item) { return item[nodeClusterBy] === typeName; })) || [];
|
|
192
|
-
if (type === 'leaf') {
|
|
193
|
-
sameTypeNodes = sameTypeNodes.filter(function (node) { var _a, _b; return ((_a = degreesMap[node.id]) === null || _a === void 0 ? void 0 : _a.in) === 0 || ((_b = degreesMap[node.id]) === null || _b === void 0 ? void 0 : _b.out) === 0; });
|
|
194
|
-
}
|
|
195
|
-
return sameTypeNodes;
|
|
196
|
-
};
|
|
197
|
-
// 找出与指定节点关联的边的起点或终点出发的所有一度叶子节点
|
|
198
|
-
export var getCoreNodeAndRelativeLeafNodes = function (type, node, edges, nodeClusterBy, degreesMap, nodeMap) {
|
|
199
|
-
var _a = degreesMap[node.id], inDegree = _a.in, outDegree = _a.out;
|
|
200
|
-
var coreNode = node;
|
|
201
|
-
var relativeLeafNodes = [];
|
|
202
|
-
if (inDegree === 0) {
|
|
203
|
-
// 如果为没有出边的叶子节点,则找出与它关联的边的起点出发的所有一度节点
|
|
204
|
-
coreNode = getCoreNode('source', node, edges);
|
|
205
|
-
relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map(function (nodeId) { return nodeMap[nodeId]; });
|
|
206
|
-
}
|
|
207
|
-
else if (outDegree === 0) {
|
|
208
|
-
// 如果为没有入边边的叶子节点,则找出与它关联的边的起点出发的所有一度节点
|
|
209
|
-
coreNode = getCoreNode('target', node, edges);
|
|
210
|
-
relativeLeafNodes = getRelativeNodeIds('both', coreNode, edges).map(function (nodeId) { return nodeMap[nodeId]; });
|
|
211
|
-
}
|
|
212
|
-
relativeLeafNodes = relativeLeafNodes.filter(function (node) {
|
|
213
|
-
return degreesMap[node.id] &&
|
|
214
|
-
(degreesMap[node.id].in === 0 || degreesMap[node.id].out === 0);
|
|
215
|
-
});
|
|
216
|
-
var sameTypeLeafNodes = getSameTypeNodes(type, nodeClusterBy, node, relativeLeafNodes, degreesMap);
|
|
217
|
-
return { coreNode: coreNode, relativeLeafNodes: relativeLeafNodes, sameTypeLeafNodes: sameTypeLeafNodes };
|
|
119
|
+
return { minX, minY, maxX, maxY };
|
|
218
120
|
};
|
|
121
|
+
exports.getLayoutBBox = getLayoutBBox;
|
|
219
122
|
/**
|
|
220
123
|
* calculate the euclidean distance form p1 to p2
|
|
221
124
|
* @param p1
|
|
222
125
|
* @param p2
|
|
223
126
|
* @returns
|
|
224
127
|
*/
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
};
|
|
128
|
+
const getEuclideanDistance = (p1, p2) => Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
|
|
129
|
+
exports.getEuclideanDistance = getEuclideanDistance;
|
|
228
130
|
/**
|
|
229
131
|
* Depth first search begin from nodes in graphCore data.
|
|
230
132
|
* @param graphCore graphlib data structure
|
|
@@ -233,14 +135,12 @@ export var getEuclideanDistance = function (p1, p2) {
|
|
|
233
135
|
* @param mode 'TB' - visit from top to bottom; 'BT' - visit from bottom to top;
|
|
234
136
|
* @returns
|
|
235
137
|
*/
|
|
236
|
-
|
|
237
|
-
if (mode === void 0) { mode = 'TB'; }
|
|
238
|
-
if (stopFns === void 0) { stopFns = {}; }
|
|
138
|
+
const graphTreeDfs = (graph, nodes, fn, mode = 'TB', treeKey, stopFns = {}) => {
|
|
239
139
|
if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))
|
|
240
140
|
return;
|
|
241
|
-
|
|
242
|
-
for (
|
|
243
|
-
|
|
141
|
+
const { stopBranchFn, stopAllFn } = stopFns;
|
|
142
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
143
|
+
const node = nodes[i];
|
|
244
144
|
if (!graph.hasNode(node.id))
|
|
245
145
|
continue;
|
|
246
146
|
if (stopBranchFn === null || stopBranchFn === void 0 ? void 0 : stopBranchFn(node))
|
|
@@ -249,9 +149,10 @@ export var graphTreeDfs = function (graph, nodes, fn, mode, treeKey, stopFns) {
|
|
|
249
149
|
return; // Stop all
|
|
250
150
|
if (mode === 'TB')
|
|
251
151
|
fn(node); // Traverse from top to bottom
|
|
252
|
-
graphTreeDfs(graph, graph.getChildren(node.id, treeKey), fn, mode, treeKey, stopFns);
|
|
152
|
+
(0, exports.graphTreeDfs)(graph, graph.getChildren(node.id, treeKey), fn, mode, treeKey, stopFns);
|
|
253
153
|
if (mode !== 'TB')
|
|
254
154
|
fn(node); // Traverse from bottom to top
|
|
255
155
|
}
|
|
256
156
|
};
|
|
157
|
+
exports.graphTreeDfs = graphTreeDfs;
|
|
257
158
|
//# sourceMappingURL=math.js.map
|
package/lib/util/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/util/math.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/util/math.ts"],"names":[],"mappings":"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"}
|
package/lib/util/object.d.ts
CHANGED
package/lib/util/object.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloneFormatData = exports.clone = void 0;
|
|
4
|
+
const util_1 = require("@antv/util");
|
|
5
|
+
const clone = (target) => {
|
|
3
6
|
if (target === null) {
|
|
4
7
|
return target;
|
|
5
8
|
}
|
|
@@ -7,36 +10,38 @@ export var clone = function (target) {
|
|
|
7
10
|
return new Date(target.getTime());
|
|
8
11
|
}
|
|
9
12
|
if (target instanceof Array) {
|
|
10
|
-
|
|
11
|
-
target.forEach(
|
|
12
|
-
|
|
13
|
+
const cp = [];
|
|
14
|
+
target.forEach((v) => {
|
|
15
|
+
cp.push(v);
|
|
13
16
|
});
|
|
14
|
-
return
|
|
17
|
+
return cp.map((n) => (0, exports.clone)(n));
|
|
15
18
|
}
|
|
16
|
-
if (typeof target ===
|
|
17
|
-
|
|
18
|
-
Object.keys(target).forEach(
|
|
19
|
-
|
|
19
|
+
if (typeof target === 'object') {
|
|
20
|
+
const cp = {};
|
|
21
|
+
Object.keys(target).forEach((k) => {
|
|
22
|
+
cp[k] = (0, exports.clone)(target[k]);
|
|
20
23
|
});
|
|
21
|
-
return
|
|
24
|
+
return cp;
|
|
22
25
|
}
|
|
23
26
|
return target;
|
|
24
27
|
};
|
|
28
|
+
exports.clone = clone;
|
|
25
29
|
/**
|
|
26
30
|
* Clone node or edge data and format it
|
|
27
31
|
* @param target node/edge to be cloned
|
|
28
32
|
* @param initRange whether init the x and y in data with the range, which means [xRange, yRange]
|
|
29
33
|
* @returns cloned node/edge
|
|
30
34
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
const cloneFormatData = (target, initRange) => {
|
|
36
|
+
const cloned = (0, exports.clone)(target);
|
|
33
37
|
cloned.data = cloned.data || {};
|
|
34
38
|
if (initRange) {
|
|
35
|
-
if (!isNumber(cloned.data.x))
|
|
39
|
+
if (!(0, util_1.isNumber)(cloned.data.x))
|
|
36
40
|
cloned.data.x = Math.random() * initRange[0];
|
|
37
|
-
if (!isNumber(cloned.data.y))
|
|
41
|
+
if (!(0, util_1.isNumber)(cloned.data.y))
|
|
38
42
|
cloned.data.y = Math.random() * initRange[1];
|
|
39
43
|
}
|
|
40
44
|
return cloned;
|
|
41
45
|
};
|
|
46
|
+
exports.cloneFormatData = cloneFormatData;
|
|
42
47
|
//# sourceMappingURL=object.js.map
|
package/lib/util/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/util/object.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/util/object.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAG/B,MAAM,KAAK,GAAG,CAAI,MAAS,EAAK,EAAE;IACvC,IAAI,MAAM,KAAK,IAAI,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,MAAM,YAAY,IAAI,EAAE;QAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAQ,CAAC;KAC1C;IACD,IAAI,MAAM,YAAY,KAAK,EAAE;QAC3B,MAAM,EAAE,GAAG,EAAW,CAAC;QACtB,MAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,aAAK,EAAM,CAAC,CAAC,CAAQ,CAAC;KACjD;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,EAAE,GAAG,EAA4B,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAA,aAAK,EAAO,MAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,OAAO,EAAO,CAAC;KAChB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAtBW,QAAA,KAAK,SAsBhB;AAEF;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAC7B,MAAS,EACT,SAA4B,EACzB,EAAE;IACL,MAAM,MAAM,GAAG,IAAA,aAAK,EAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,IAAI,SAAS,EAAE;QACb,IAAI,CAAC,IAAA,eAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAA,eAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;KAC5E;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B"}
|
package/lib/util/size.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSize = void 0;
|
|
4
|
+
const util_1 = require("@antv/util");
|
|
5
|
+
function parseSize(size) {
|
|
6
|
+
if (!size)
|
|
7
|
+
return [0, 0, 0];
|
|
8
|
+
if ((0, util_1.isNumber)(size))
|
|
9
|
+
return [size, size, size];
|
|
10
|
+
else if (size.length === 0)
|
|
11
|
+
return [0, 0, 0];
|
|
12
|
+
const [x, y = x, z = x] = size;
|
|
13
|
+
return [x, y, z];
|
|
14
|
+
}
|
|
15
|
+
exports.parseSize = parseSize;
|
|
16
|
+
//# sourceMappingURL=size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/util/size.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAKtC,SAAgB,SAAS,CAAC,IAAW;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,IAAA,eAAQ,EAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC;AAND,8BAMC"}
|
package/lib/worker.js
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const graphlib_1 = require("@antv/graphlib");
|
|
5
|
+
const Comlink = tslib_1.__importStar(require("comlink"));
|
|
6
|
+
const registry_1 = require("./registry");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
let currentLayout;
|
|
9
|
+
const obj = {
|
|
10
|
+
stopLayout() {
|
|
9
11
|
if (currentLayout === null || currentLayout === void 0 ? void 0 : currentLayout.stop) {
|
|
10
12
|
currentLayout.stop();
|
|
11
13
|
}
|
|
12
14
|
},
|
|
13
|
-
calculateLayout
|
|
14
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
layoutCtor = registry[id];
|
|
25
|
-
if (layoutCtor) {
|
|
26
|
-
currentLayout = new layoutCtor(options);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
throw new Error("Unknown layout id: " + id);
|
|
30
|
-
}
|
|
31
|
-
return [4 /*yield*/, currentLayout.execute(graph)];
|
|
32
|
-
case 1:
|
|
33
|
-
positions = _b.sent();
|
|
34
|
-
if (isLayoutWithIterations(currentLayout)) {
|
|
35
|
-
currentLayout.stop();
|
|
36
|
-
positions = currentLayout.tick(iterations);
|
|
37
|
-
}
|
|
38
|
-
return [2 /*return*/, [positions, transferables]];
|
|
39
|
-
}
|
|
15
|
+
calculateLayout(payload, transferables) {
|
|
16
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
const { layout: { id, options, iterations }, nodes, edges, } = payload;
|
|
18
|
+
// Sync graph on the worker side.
|
|
19
|
+
// TODO: Use transferable objects like ArrayBuffer for nodes & edges,
|
|
20
|
+
// in which case we don't need the whole graph.
|
|
21
|
+
// @see https://github.com/graphology/graphology/blob/master/src/layout-noverlap/webworker.tpl.js#L32
|
|
22
|
+
const graph = new graphlib_1.Graph({
|
|
23
|
+
nodes,
|
|
24
|
+
edges,
|
|
40
25
|
});
|
|
26
|
+
/**
|
|
27
|
+
* Create layout instance on the worker side.
|
|
28
|
+
*/
|
|
29
|
+
const layoutCtor = registry_1.registry[id];
|
|
30
|
+
if (layoutCtor) {
|
|
31
|
+
currentLayout = new layoutCtor(options);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new Error(`Unknown layout id: ${id}`);
|
|
35
|
+
}
|
|
36
|
+
let positions = yield currentLayout.execute(graph);
|
|
37
|
+
if ((0, types_1.isLayoutWithIterations)(currentLayout)) {
|
|
38
|
+
currentLayout.stop();
|
|
39
|
+
positions = currentLayout.tick(iterations);
|
|
40
|
+
}
|
|
41
|
+
return [positions, transferables];
|
|
41
42
|
});
|
|
42
43
|
},
|
|
43
44
|
};
|
package/lib/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.js"],"names":[],"mappings":";;;AAAA,6CAAuC;AACvC,yDAAmC;AACnC,yCAAsC;AACtC,mCAAiD;AAEjD,IAAI,aAAa,CAAC;AAElB,MAAM,GAAG,GAAG;IACV,UAAU;QACR,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,EAAE;YACvB,aAAa,CAAC,IAAI,EAAE,CAAC;SACtB;IACH,CAAC;IACK,eAAe,CAAC,OAAO,EAAE,aAAa;;YAC1C,MAAM,EACJ,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EACnC,KAAK,EACL,KAAK,GACN,GAAG,OAAO,CAAC;YAEZ,iCAAiC;YACjC,qEAAqE;YACrE,+CAA+C;YAC/C,qGAAqG;YACrG,MAAM,KAAK,GAAG,IAAI,gBAAK,CAAC;gBACtB,KAAK;gBACL,KAAK;aACN,CAAC,CAAC;YAEH;;eAEG;YAEH,MAAM,UAAU,GAAG,mBAAQ,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,UAAU,EAAE;gBACd,aAAa,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;aACzC;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;aAC7C;YAED,IAAI,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,IAAA,8BAAsB,EAAC,aAAa,CAAC,EAAE;gBACzC,aAAa,CAAC,IAAI,EAAE,CAAC;gBACrB,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC5C;YACD,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpC,CAAC;KAAA;CACF,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/layout",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.14-beta.0",
|
|
4
4
|
"description": "graph layout algorithm",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,8 +33,9 @@
|
|
|
33
33
|
"@naoak/workerize-transferable": "^0.1.0",
|
|
34
34
|
"comlink": "^4.4.1",
|
|
35
35
|
"d3-force": "^3.0.0",
|
|
36
|
-
"d3-quadtree": "^3.0.1",
|
|
37
36
|
"d3-octree": "^1.0.2",
|
|
37
|
+
"d3-quadtree": "^3.0.1",
|
|
38
|
+
"dagre": "^0.8.5",
|
|
38
39
|
"ml-matrix": "^6.10.4",
|
|
39
40
|
"tslib": "^2.5.0"
|
|
40
41
|
},
|
|
@@ -43,6 +44,8 @@
|
|
|
43
44
|
"@babel/plugin-proposal-class-properties": "^7.1.0",
|
|
44
45
|
"@babel/preset-react": "^7.7.4",
|
|
45
46
|
"@types/d3-force": "^3.0.4",
|
|
47
|
+
"@types/d3-quadtree": "^2.0.6",
|
|
48
|
+
"@types/dagre": "^0.7.52",
|
|
46
49
|
"babel-loader": "^8.0.6",
|
|
47
50
|
"ts-loader": "^7.0.3",
|
|
48
51
|
"typescript": "^4.0.3",
|
|
@@ -53,10 +56,11 @@
|
|
|
53
56
|
"scripts": {
|
|
54
57
|
"clean": "rimraf dist lib tsconfig.tsbuildinfo",
|
|
55
58
|
"dev": "webpack --config webpack.dev.config.js --mode development",
|
|
56
|
-
"build": "npm run clean &&
|
|
57
|
-
"
|
|
58
|
-
"build:
|
|
59
|
+
"build": "npm run clean && run-p build:*",
|
|
60
|
+
"ci": "npm run build && npm run test",
|
|
61
|
+
"build:cjs": "rimraf ./lib && tsc --module commonjs --outDir lib",
|
|
59
62
|
"build:umd": "webpack --config webpack.config.js --mode production",
|
|
60
|
-
"publish:alpha": "npm publish --tag alpha"
|
|
63
|
+
"publish:alpha": "npm publish --tag alpha",
|
|
64
|
+
"test": "jest"
|
|
61
65
|
}
|
|
62
66
|
}
|