@antv/layout 1.2.13 → 1.2.14-beta.1
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 +61 -0
- package/lib/antv-dagre/acyclic.js.map +1 -0
- package/lib/{dagre → antv-dagre}/add-border-segments.js +12 -12
- 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 +65 -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 +20 -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 +136 -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 +125 -127
- package/lib/antv-dagre/layout.js.map +1 -0
- package/lib/{dagre → antv-dagre}/nesting-graph.js +36 -37
- 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 +24 -24
- package/lib/antv-dagre/normalize.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/add-subgraph-constraints.js +9 -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/{dagre → antv-dagre}/order/barycenter.js +8 -8
- package/lib/antv-dagre/order/barycenter.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/build-layer-graph.js +18 -22
- 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 +17 -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/{dagre → antv-dagre}/order/index.js +35 -35
- package/lib/antv-dagre/order/index.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/init-data-order.js +8 -9
- package/lib/antv-dagre/order/init-data-order.js.map +1 -0
- package/lib/antv-dagre/order/init-order.js +47 -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 +32 -35
- package/lib/antv-dagre/order/resolve-conflicts.js.map +1 -0
- package/lib/{dagre → antv-dagre}/order/sort-subgraph.js +20 -20
- 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 +19 -19
- package/lib/antv-dagre/order/sort.js.map +1 -0
- package/lib/{dagre → antv-dagre}/parent-dummy-chains.js +28 -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 +140 -143
- 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 +51 -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 +32 -32
- 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 +10 -10
- 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 +70 -71
- 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 +31 -31
- 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 +2 -0
- package/lib/antv-dagre/types.js.map +1 -0
- package/lib/{dagre → antv-dagre}/util.d.ts +1 -1
- package/lib/{dagre → antv-dagre}/util.js +90 -98
- package/lib/antv-dagre/util.js.map +1 -0
- package/lib/antv-dagre.d.ts +50 -0
- package/lib/antv-dagre.js +538 -0
- package/lib/antv-dagre.js.map +1 -0
- package/lib/bundle-entry.d.ts +2 -18
- package/lib/bundle-entry.js +2 -18
- package/lib/bundle-entry.js.map +1 -1
- package/lib/bundle-supervisor.d.ts +4 -22
- package/lib/bundle-supervisor.js +54 -53
- package/lib/bundle-supervisor.js.map +1 -1
- package/lib/bundle-worker.d.ts +1 -1
- package/lib/bundle-worker.js +31 -33
- package/lib/bundle-worker.js.map +1 -1
- package/lib/circular.d.ts +1 -1
- package/lib/circular.js +124 -140
- package/lib/circular.js.map +1 -1
- package/lib/comboCombined.d.ts +1 -1
- package/lib/comboCombined.js +254 -284
- package/lib/comboCombined.js.map +1 -1
- package/lib/concentric.d.ts +1 -1
- package/lib/concentric.js +166 -176
- package/lib/concentric.js.map +1 -1
- package/lib/d3Force/forceInBox.js +75 -77
- package/lib/d3Force/forceInBox.js.map +1 -1
- package/lib/d3Force/index.d.ts +2 -2
- package/lib/d3Force/index.js +196 -222
- package/lib/d3Force/index.js.map +1 -1
- package/lib/dagre.d.ts +13 -24
- package/lib/dagre.js +57 -542
- package/lib/dagre.js.map +1 -1
- package/lib/exports.d.ts +17 -0
- package/lib/exports.js +17 -0
- package/lib/exports.js.map +1 -0
- package/lib/force/forceNBody.js +42 -45
- package/lib/force/forceNBody.js.map +1 -1
- package/lib/force/index.d.ts +1 -1
- package/lib/force/index.js +282 -309
- package/lib/force/index.js.map +1 -1
- package/lib/force/types.d.ts +5 -5
- package/lib/forceAtlas2/body.d.ts +1 -1
- package/lib/forceAtlas2/body.js +29 -31
- package/lib/forceAtlas2/body.js.map +1 -1
- package/lib/forceAtlas2/index.d.ts +1 -1
- package/lib/forceAtlas2/index.js +206 -218
- package/lib/forceAtlas2/index.js.map +1 -1
- package/lib/forceAtlas2/quad.d.ts +2 -2
- package/lib/forceAtlas2/quad.js +40 -42
- package/lib/forceAtlas2/quad.js.map +1 -1
- package/lib/forceAtlas2/quadTree.js +16 -17
- package/lib/forceAtlas2/quadTree.js.map +1 -1
- package/lib/fruchterman.d.ts +1 -1
- package/lib/fruchterman.js +185 -205
- package/lib/fruchterman.js.map +1 -1
- package/lib/grid.d.ts +1 -1
- package/lib/grid.js +197 -207
- package/lib/grid.js.map +1 -1
- package/lib/index.d.ts +1 -15
- package/lib/index.js +1 -15
- package/lib/index.js.map +1 -1
- package/lib/mds.d.ts +1 -1
- package/lib/mds.js +68 -78
- package/lib/mds.js.map +1 -1
- package/lib/radial/index.d.ts +1 -1
- package/lib/radial/index.js +177 -184
- package/lib/radial/index.js.map +1 -1
- package/lib/radial/mds.d.ts +1 -1
- package/lib/radial/mds.js +15 -13
- 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 +36 -37
- package/lib/radial/radial-nonoverlap-force.js.map +1 -1
- package/lib/random.d.ts +1 -1
- package/lib/random.js +53 -66
- package/lib/random.js.map +1 -1
- package/lib/registry.d.ts +2 -2
- package/lib/registry.js +3 -1
- package/lib/registry.js.map +1 -1
- package/lib/supervisor.d.ts +2 -3
- package/lib/supervisor.js +57 -56
- package/lib/supervisor.js.map +1 -1
- package/lib/types.d.ts +20 -75
- package/lib/types.js.map +1 -1
- package/lib/util/array.js +1 -1
- package/lib/util/array.js.map +1 -1
- package/lib/util/common.d.ts +1 -1
- package/lib/util/common.js +7 -8
- package/lib/util/common.js.map +1 -1
- package/lib/util/function.js +23 -25
- package/lib/util/function.js.map +1 -1
- package/lib/util/index.d.ts +0 -2
- package/lib/util/index.js +0 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/math.d.ts +1 -26
- package/lib/util/math.js +41 -149
- package/lib/util/math.js.map +1 -1
- package/lib/util/object.d.ts +1 -1
- package/lib/util/object.js +13 -13
- package/lib/util/object.js.map +1 -1
- package/lib/util/size.d.ts +3 -0
- package/lib/util/size.js +12 -0
- package/lib/util/size.js.map +1 -0
- package/lib/worker.js +30 -31
- package/lib/worker.js.map +1 -1
- package/package.json +9 -5
- package/dist/aa1bb0ccc06b11cf79c1.worker.js +0 -2
- package/dist/aa1bb0ccc06b11cf79c1.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.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.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.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.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
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import { __assign, __read, __spreadArray } from "tslib";
|
|
2
1
|
import { Graph } from '@antv/graphlib';
|
|
3
2
|
import { isNumber } from '@antv/util';
|
|
4
|
-
|
|
3
|
+
const safeSort = (valueA, valueB) => {
|
|
5
4
|
return Number(valueA) - Number(valueB);
|
|
6
5
|
};
|
|
7
6
|
/*
|
|
8
7
|
* Adds a dummy node to the graph and return v.
|
|
9
8
|
*/
|
|
10
|
-
export
|
|
11
|
-
|
|
9
|
+
export const addDummyNode = (g, type, data, name) => {
|
|
10
|
+
let v;
|
|
12
11
|
do {
|
|
13
|
-
v =
|
|
12
|
+
v = `${name}${Math.random()}`;
|
|
14
13
|
} while (g.hasNode(v));
|
|
15
14
|
data.dummy = type;
|
|
16
15
|
g.addNode({
|
|
17
16
|
id: v,
|
|
18
|
-
data
|
|
17
|
+
data,
|
|
19
18
|
});
|
|
20
19
|
return v;
|
|
21
20
|
};
|
|
@@ -23,15 +22,15 @@ export var addDummyNode = function (g, type, data, name) {
|
|
|
23
22
|
* Returns a new graph with only simple edges. Handles aggregation of data
|
|
24
23
|
* associated with multi-edges.
|
|
25
24
|
*/
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
g.getAllNodes().forEach(
|
|
29
|
-
simplified.addNode(
|
|
25
|
+
export const simplify = (g) => {
|
|
26
|
+
const simplified = new Graph();
|
|
27
|
+
g.getAllNodes().forEach((v) => {
|
|
28
|
+
simplified.addNode(Object.assign({}, v));
|
|
30
29
|
});
|
|
31
|
-
g.getAllEdges().forEach(
|
|
32
|
-
|
|
30
|
+
g.getAllEdges().forEach((e) => {
|
|
31
|
+
const edge = simplified
|
|
33
32
|
.getRelatedEdges(e.source, 'out')
|
|
34
|
-
.find(
|
|
33
|
+
.find((edge) => edge.target === e.target);
|
|
35
34
|
if (!edge) {
|
|
36
35
|
simplified.addEdge({
|
|
37
36
|
id: e.id,
|
|
@@ -44,70 +43,70 @@ export var simplify = function (g) {
|
|
|
44
43
|
});
|
|
45
44
|
}
|
|
46
45
|
else {
|
|
47
|
-
simplified.updateEdgeData(edge === null || edge === void 0 ? void 0 : edge.id,
|
|
46
|
+
simplified.updateEdgeData(edge === null || edge === void 0 ? void 0 : edge.id, Object.assign(Object.assign({}, edge.data), { weight: edge.data.weight + e.data.weight || 0, minlen: Math.max(edge.data.minlen, e.data.minlen || 1) }));
|
|
48
47
|
}
|
|
49
48
|
});
|
|
50
49
|
return simplified;
|
|
51
50
|
};
|
|
52
|
-
export
|
|
53
|
-
|
|
54
|
-
g.getAllNodes().forEach(
|
|
51
|
+
export const asNonCompoundGraph = (g) => {
|
|
52
|
+
const simplified = new Graph();
|
|
53
|
+
g.getAllNodes().forEach((node) => {
|
|
55
54
|
if (!g.getChildren(node.id).length) {
|
|
56
|
-
simplified.addNode(
|
|
55
|
+
simplified.addNode(Object.assign({}, node));
|
|
57
56
|
}
|
|
58
57
|
});
|
|
59
|
-
g.getAllEdges().forEach(
|
|
58
|
+
g.getAllEdges().forEach((edge) => {
|
|
60
59
|
simplified.addEdge(edge);
|
|
61
60
|
});
|
|
62
61
|
return simplified;
|
|
63
62
|
};
|
|
64
|
-
export
|
|
65
|
-
return keys === null || keys === void 0 ? void 0 : keys.reduce(
|
|
63
|
+
export const zipObject = (keys, values) => {
|
|
64
|
+
return keys === null || keys === void 0 ? void 0 : keys.reduce((obj, key, i) => {
|
|
66
65
|
obj[key] = values[i];
|
|
67
66
|
return obj;
|
|
68
67
|
}, {});
|
|
69
68
|
};
|
|
70
|
-
export
|
|
71
|
-
|
|
72
|
-
g.getAllNodes().forEach(
|
|
73
|
-
|
|
74
|
-
g.getRelatedEdges(node.id, 'out').forEach(
|
|
69
|
+
export const successorWeights = (g) => {
|
|
70
|
+
const weightsMap = {};
|
|
71
|
+
g.getAllNodes().forEach((node) => {
|
|
72
|
+
const sucs = {};
|
|
73
|
+
g.getRelatedEdges(node.id, 'out').forEach((e) => {
|
|
75
74
|
sucs[e.target] = (sucs[e.target] || 0) + (e.data.weight || 0);
|
|
76
75
|
});
|
|
77
76
|
weightsMap[node.id] = sucs;
|
|
78
77
|
});
|
|
79
78
|
return weightsMap;
|
|
80
79
|
};
|
|
81
|
-
export
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
g.getRelatedEdges(v.id, 'in').forEach(
|
|
80
|
+
export const predecessorWeights = (g) => {
|
|
81
|
+
const nodes = g.getAllNodes();
|
|
82
|
+
const weightMap = nodes.map((v) => {
|
|
83
|
+
const preds = {};
|
|
84
|
+
g.getRelatedEdges(v.id, 'in').forEach((e) => {
|
|
86
85
|
preds[e.source] = (preds[e.source] || 0) + e.data.weight;
|
|
87
86
|
});
|
|
88
87
|
return preds;
|
|
89
88
|
});
|
|
90
|
-
return zipObject(nodes.map(
|
|
89
|
+
return zipObject(nodes.map((n) => n.id), weightMap);
|
|
91
90
|
};
|
|
92
91
|
/*
|
|
93
92
|
* Finds where a line starting at point ({x, y}) would intersect a rectangle
|
|
94
93
|
* ({x, y, width, height}) if it were pointing at the rectangle's center.
|
|
95
94
|
*/
|
|
96
|
-
export
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
export const intersectRect = (rect, point) => {
|
|
96
|
+
const x = Number(rect.x);
|
|
97
|
+
const y = Number(rect.y);
|
|
99
98
|
// Rectangle intersection algorithm from:
|
|
100
99
|
// http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
const dx = Number(point.x) - x;
|
|
101
|
+
const dy = Number(point.y) - y;
|
|
102
|
+
let w = Number(rect.width) / 2;
|
|
103
|
+
let h = Number(rect.height) / 2;
|
|
105
104
|
if (!dx && !dy) {
|
|
106
105
|
// completely overlapped directly, then return points its self
|
|
107
106
|
return { x: 0, y: 0 };
|
|
108
107
|
}
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
let sx;
|
|
109
|
+
let sy;
|
|
111
110
|
if (Math.abs(dy) * w > Math.abs(dx) * h) {
|
|
112
111
|
// Intersection is top or bottom of rect.
|
|
113
112
|
if (dy < 0) {
|
|
@@ -130,23 +129,21 @@ export var intersectRect = function (rect, point) {
|
|
|
130
129
|
* Given a DAG with each node assigned "rank" and "order" properties, this
|
|
131
130
|
* const will produce a matrix with the ids of each node.
|
|
132
131
|
*/
|
|
133
|
-
export
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
for (
|
|
132
|
+
export const buildLayerMatrix = (g) => {
|
|
133
|
+
const layeringNodes = [];
|
|
134
|
+
const rankMax = maxRank(g) + 1;
|
|
135
|
+
for (let i = 0; i < rankMax; i++) {
|
|
137
136
|
layeringNodes.push([]);
|
|
138
137
|
}
|
|
139
138
|
// const layering = _.map(_.range(maxRank(g) + 1), function() { return []; });
|
|
140
|
-
g.getAllNodes().forEach(
|
|
141
|
-
|
|
139
|
+
g.getAllNodes().forEach((node) => {
|
|
140
|
+
const rank = node.data.rank;
|
|
142
141
|
if (rank !== undefined && layeringNodes[rank]) {
|
|
143
142
|
layeringNodes[rank].push(node.id);
|
|
144
143
|
}
|
|
145
144
|
});
|
|
146
|
-
for (
|
|
147
|
-
layeringNodes[i] = layeringNodes[i].sort(
|
|
148
|
-
return safeSort(g.getNode(va).data.order, g.getNode(vb).data.order);
|
|
149
|
-
});
|
|
145
|
+
for (let i = 0; i < rankMax; i++) {
|
|
146
|
+
layeringNodes[i] = layeringNodes[i].sort((va, vb) => safeSort(g.getNode(va).data.order, g.getNode(vb).data.order));
|
|
150
147
|
}
|
|
151
148
|
return layeringNodes;
|
|
152
149
|
};
|
|
@@ -154,45 +151,44 @@ export var buildLayerMatrix = function (g) {
|
|
|
154
151
|
* Adjusts the ranks for all nodes in the graph such that all nodes v have
|
|
155
152
|
* rank(v) >= 0 and at least one node w has rank(w) = 0.
|
|
156
153
|
*/
|
|
157
|
-
export
|
|
158
|
-
|
|
154
|
+
export const normalizeRanks = (g) => {
|
|
155
|
+
const nodeRanks = g
|
|
159
156
|
.getAllNodes()
|
|
160
|
-
.filter(
|
|
161
|
-
.map(
|
|
162
|
-
|
|
163
|
-
g.getAllNodes().forEach(
|
|
157
|
+
.filter((v) => v.data.rank !== undefined)
|
|
158
|
+
.map((v) => v.data.rank);
|
|
159
|
+
const min = Math.min(...nodeRanks);
|
|
160
|
+
g.getAllNodes().forEach((v) => {
|
|
164
161
|
if (v.data.hasOwnProperty('rank') && min !== Infinity) {
|
|
165
162
|
v.data.rank -= min;
|
|
166
163
|
}
|
|
167
164
|
});
|
|
168
165
|
};
|
|
169
|
-
export
|
|
170
|
-
if (nodeRankFactor === void 0) { nodeRankFactor = 0; }
|
|
166
|
+
export const removeEmptyRanks = (g, nodeRankFactor = 0) => {
|
|
171
167
|
// Ranks may not start at 0, so we need to offset them
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
.filter(
|
|
175
|
-
.map(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
nodes.forEach(
|
|
179
|
-
|
|
168
|
+
const nodes = g.getAllNodes();
|
|
169
|
+
const nodeRanks = nodes
|
|
170
|
+
.filter((v) => v.data.rank !== undefined)
|
|
171
|
+
.map((v) => v.data.rank);
|
|
172
|
+
const offset = Math.min(...nodeRanks);
|
|
173
|
+
const layers = [];
|
|
174
|
+
nodes.forEach((v) => {
|
|
175
|
+
const rank = (v.data.rank || 0) - offset;
|
|
180
176
|
if (!layers[rank]) {
|
|
181
177
|
layers[rank] = [];
|
|
182
178
|
}
|
|
183
179
|
layers[rank].push(v.id);
|
|
184
180
|
});
|
|
185
|
-
|
|
186
|
-
for (
|
|
187
|
-
|
|
181
|
+
let delta = 0;
|
|
182
|
+
for (let i = 0; i < layers.length; i++) {
|
|
183
|
+
const vs = layers[i];
|
|
188
184
|
if (vs === undefined) {
|
|
189
185
|
if (i % nodeRankFactor !== 0) {
|
|
190
186
|
delta -= 1;
|
|
191
187
|
}
|
|
192
188
|
}
|
|
193
189
|
else if (delta) {
|
|
194
|
-
vs === null || vs === void 0 ? void 0 : vs.forEach(
|
|
195
|
-
|
|
190
|
+
vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {
|
|
191
|
+
const node = g.getNode(v);
|
|
196
192
|
if (node) {
|
|
197
193
|
node.data.rank = node.data.rank || 0;
|
|
198
194
|
node.data.rank += delta;
|
|
@@ -201,8 +197,8 @@ export var removeEmptyRanks = function (g, nodeRankFactor) {
|
|
|
201
197
|
}
|
|
202
198
|
}
|
|
203
199
|
};
|
|
204
|
-
export
|
|
205
|
-
|
|
200
|
+
export const addBorderNode = (g, prefix, rank, order) => {
|
|
201
|
+
const node = {
|
|
206
202
|
width: 0,
|
|
207
203
|
height: 0,
|
|
208
204
|
};
|
|
@@ -212,10 +208,10 @@ export var addBorderNode = function (g, prefix, rank, order) {
|
|
|
212
208
|
}
|
|
213
209
|
return addDummyNode(g, 'border', node, prefix);
|
|
214
210
|
};
|
|
215
|
-
export
|
|
216
|
-
|
|
217
|
-
g.getAllNodes().forEach(
|
|
218
|
-
|
|
211
|
+
export const maxRank = (g) => {
|
|
212
|
+
let maxRank;
|
|
213
|
+
g.getAllNodes().forEach((v) => {
|
|
214
|
+
const rank = v.data.rank;
|
|
219
215
|
if (rank !== undefined) {
|
|
220
216
|
if (maxRank === undefined || rank > maxRank) {
|
|
221
217
|
maxRank = rank;
|
|
@@ -232,9 +228,9 @@ export var maxRank = function (g) {
|
|
|
232
228
|
* const returns true for an entry it goes into `lhs`. Otherwise it goes
|
|
233
229
|
* into `rhs.
|
|
234
230
|
*/
|
|
235
|
-
export
|
|
236
|
-
|
|
237
|
-
collection === null || collection === void 0 ? void 0 : collection.forEach(
|
|
231
|
+
export const partition = (collection, fn) => {
|
|
232
|
+
const result = { lhs: [], rhs: [] };
|
|
233
|
+
collection === null || collection === void 0 ? void 0 : collection.forEach((value) => {
|
|
238
234
|
if (fn(value)) {
|
|
239
235
|
result.lhs.push(value);
|
|
240
236
|
}
|
|
@@ -244,22 +240,20 @@ export var partition = function (collection, fn) {
|
|
|
244
240
|
});
|
|
245
241
|
return result;
|
|
246
242
|
};
|
|
247
|
-
export
|
|
248
|
-
return array.reduce(
|
|
249
|
-
|
|
250
|
-
|
|
243
|
+
export const minBy = (array, func) => {
|
|
244
|
+
return array.reduce((a, b) => {
|
|
245
|
+
const valA = func(a);
|
|
246
|
+
const valB = func(b);
|
|
251
247
|
return valA > valB ? b : a;
|
|
252
248
|
});
|
|
253
249
|
};
|
|
254
|
-
|
|
250
|
+
const doDFS = (graph, node, postorder, visited, navigator, result) => {
|
|
255
251
|
if (!visited.includes(node.id)) {
|
|
256
252
|
visited.push(node.id);
|
|
257
253
|
if (!postorder) {
|
|
258
254
|
result.push(node.id);
|
|
259
255
|
}
|
|
260
|
-
navigator(node.id).forEach(
|
|
261
|
-
return doDFS(graph, n, postorder, visited, navigator, result);
|
|
262
|
-
});
|
|
256
|
+
navigator(node.id).forEach((n) => doDFS(graph, n, postorder, visited, navigator, result));
|
|
263
257
|
if (postorder) {
|
|
264
258
|
result.push(node.id);
|
|
265
259
|
}
|
|
@@ -269,16 +263,14 @@ var doDFS = function (graph, node, postorder, visited, navigator, result) {
|
|
|
269
263
|
* @description DFS traversal.
|
|
270
264
|
* @description.zh-CN DFS 遍历。
|
|
271
265
|
*/
|
|
272
|
-
export
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
var visited = [];
|
|
279
|
-
nodes.forEach(function (node) {
|
|
266
|
+
export const dfs = (graph, node, order, isDirected) => {
|
|
267
|
+
const nodes = Array.isArray(node) ? node : [node];
|
|
268
|
+
const navigator = (n) => (isDirected ? graph.getSuccessors(n) : graph.getNeighbors(n));
|
|
269
|
+
const results = [];
|
|
270
|
+
const visited = [];
|
|
271
|
+
nodes.forEach((node) => {
|
|
280
272
|
if (!graph.hasNode(node.id)) {
|
|
281
|
-
throw new Error(
|
|
273
|
+
throw new Error(`Graph does not have node: ${node}`);
|
|
282
274
|
}
|
|
283
275
|
else {
|
|
284
276
|
doDFS(graph, node, order === 'post', visited, navigator, results);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/antv-dagre/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import type { DagreAlign, DagreRankdir } from './antv-dagre/types';
|
|
3
|
+
import type { Graph as IGraph, Layout, LayoutMapping, Node, OutNode, PointTuple } from './types';
|
|
4
|
+
export interface AntVDagreLayoutOptions {
|
|
5
|
+
rankdir?: DagreRankdir;
|
|
6
|
+
ranker?: 'network-simplex' | 'tight-tree' | 'longest-path';
|
|
7
|
+
align?: DagreAlign;
|
|
8
|
+
begin?: PointTuple;
|
|
9
|
+
nodeSize?: number | number[] | ((nodeData: Node) => number);
|
|
10
|
+
nodesep?: number;
|
|
11
|
+
ranksep?: number;
|
|
12
|
+
controlPoints?: boolean;
|
|
13
|
+
sortByCombo?: boolean;
|
|
14
|
+
edgeLabelSpace?: boolean;
|
|
15
|
+
nodeOrder?: string[];
|
|
16
|
+
radial?: boolean;
|
|
17
|
+
focusNode?: ID | Node | null;
|
|
18
|
+
preset?: OutNode[];
|
|
19
|
+
nodesepFunc?: (d?: Node) => number;
|
|
20
|
+
ranksepFunc?: (d?: Node) => number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Layout arranging the nodes in a circle.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Assign layout options when initialization.
|
|
27
|
+
* const layout = new CircularLayout({ radius: 10 });
|
|
28
|
+
* const positions = await layout.execute(graph); // { nodes: [], edges: [] }
|
|
29
|
+
*
|
|
30
|
+
* // Or use different options later.
|
|
31
|
+
* const layout = new CircularLayout({ radius: 10 });
|
|
32
|
+
* const positions = await layout.execute(graph, { radius: 20 }); // { nodes: [], edges: [] }
|
|
33
|
+
*
|
|
34
|
+
* // If you want to assign the positions directly to the nodes, use assign method.
|
|
35
|
+
* await layout.assign(graph, { radius: 20 });
|
|
36
|
+
*/
|
|
37
|
+
export declare class AntVDagreLayout implements Layout<AntVDagreLayoutOptions> {
|
|
38
|
+
options: AntVDagreLayoutOptions;
|
|
39
|
+
id: string;
|
|
40
|
+
constructor(options?: AntVDagreLayoutOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Return the positions of nodes and edges(if needed).
|
|
43
|
+
*/
|
|
44
|
+
execute(graph: IGraph, options?: AntVDagreLayoutOptions): Promise<LayoutMapping>;
|
|
45
|
+
/**
|
|
46
|
+
* To directly assign the positions to the nodes.
|
|
47
|
+
*/
|
|
48
|
+
assign(graph: IGraph, options?: AntVDagreLayoutOptions): Promise<void>;
|
|
49
|
+
private genericDagreLayout;
|
|
50
|
+
}
|