@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,4 +1,3 @@
|
|
|
1
|
-
import { __read, __spreadArray } from "tslib";
|
|
2
1
|
import { addBorderNode, addDummyNode } from './util';
|
|
3
2
|
/*
|
|
4
3
|
* A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,
|
|
@@ -23,27 +22,27 @@ import { addBorderNode, addDummyNode } from './util';
|
|
|
23
22
|
* The nesting graph idea comes from Sander, "Layout of Compound Directed
|
|
24
23
|
* Graphs."
|
|
25
24
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
const run = (g) => {
|
|
26
|
+
const root = addDummyNode(g, 'root', {}, '_root');
|
|
27
|
+
const depths = treeDepths(g);
|
|
28
|
+
let maxDepth = Math.max(...Object.values(depths));
|
|
30
29
|
if (Math.abs(maxDepth) === Infinity) {
|
|
31
30
|
maxDepth = 1;
|
|
32
31
|
}
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const height = maxDepth - 1; // Note: depths is an Object not an array
|
|
33
|
+
const nodeSep = 2 * height + 1;
|
|
35
34
|
// g.graph().nestingRoot = root;
|
|
36
35
|
// Multiply minlen by nodeSep to align nodes on non-border ranks.
|
|
37
|
-
g.getAllEdges().forEach(
|
|
36
|
+
g.getAllEdges().forEach((e) => {
|
|
38
37
|
e.data.minlen *= nodeSep;
|
|
39
38
|
});
|
|
40
39
|
// Calculate a weight that is sufficient to keep subgraphs vertically compact
|
|
41
|
-
|
|
40
|
+
const weight = sumWeights(g) + 1;
|
|
42
41
|
// Create border nodes and link them up
|
|
43
42
|
// g.children()?.forEach((child) => {
|
|
44
43
|
// dfs(g, root, nodeSep, weight, height, depths, child);
|
|
45
44
|
// });
|
|
46
|
-
g.getRoots().forEach(
|
|
45
|
+
g.getRoots().forEach((child) => {
|
|
47
46
|
dfs(g, root, nodeSep, weight, height, depths, child.id);
|
|
48
47
|
});
|
|
49
48
|
// Save the multiplier for node layers for later removal of empty border
|
|
@@ -54,13 +53,13 @@ var run = function (g) {
|
|
|
54
53
|
nodeRankFactor: nodeSep,
|
|
55
54
|
};
|
|
56
55
|
};
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
const dfs = (g, root, nodeSep, weight, height, depths, v) => {
|
|
57
|
+
const children = g.getChildren(v);
|
|
59
58
|
if (!(children === null || children === void 0 ? void 0 : children.length)) {
|
|
60
59
|
if (v !== root) {
|
|
61
60
|
// g.setEdge(root, v, { weight: 0, minlen: nodeSep });
|
|
62
61
|
g.addEdge({
|
|
63
|
-
id:
|
|
62
|
+
id: `e${Math.random()}`,
|
|
64
63
|
source: root,
|
|
65
64
|
target: v,
|
|
66
65
|
data: { weight: 0, minlen: nodeSep },
|
|
@@ -68,39 +67,39 @@ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
|
|
|
68
67
|
}
|
|
69
68
|
return;
|
|
70
69
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
const top = addBorderNode(g, '_bt');
|
|
71
|
+
const bottom = addBorderNode(g, '_bb');
|
|
72
|
+
const label = g.getNode(v);
|
|
74
73
|
g.setParent(top, v);
|
|
75
74
|
label.data.borderTop = top;
|
|
76
75
|
g.setParent(bottom, v);
|
|
77
76
|
label.data.borderBottom = bottom;
|
|
78
|
-
children === null || children === void 0 ? void 0 : children.forEach(
|
|
77
|
+
children === null || children === void 0 ? void 0 : children.forEach((childNode) => {
|
|
79
78
|
dfs(g, root, nodeSep, weight, height, depths, childNode.id);
|
|
80
|
-
|
|
79
|
+
const childTop = childNode.data.borderTop
|
|
81
80
|
? childNode.data.borderTop
|
|
82
81
|
: childNode.id;
|
|
83
|
-
|
|
82
|
+
const childBottom = childNode.data.borderBottom
|
|
84
83
|
? childNode.data.borderBottom
|
|
85
84
|
: childNode.id;
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
const thisWeight = childNode.data.borderTop ? weight : 2 * weight;
|
|
86
|
+
const minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;
|
|
88
87
|
g.addEdge({
|
|
89
|
-
id:
|
|
88
|
+
id: `e${Math.random()}`,
|
|
90
89
|
source: top,
|
|
91
90
|
target: childTop,
|
|
92
91
|
data: {
|
|
93
|
-
minlen
|
|
92
|
+
minlen,
|
|
94
93
|
weight: thisWeight,
|
|
95
94
|
nestingEdge: true,
|
|
96
95
|
},
|
|
97
96
|
});
|
|
98
97
|
g.addEdge({
|
|
99
|
-
id:
|
|
98
|
+
id: `e${Math.random()}`,
|
|
100
99
|
source: childBottom,
|
|
101
100
|
target: bottom,
|
|
102
101
|
data: {
|
|
103
|
-
minlen
|
|
102
|
+
minlen,
|
|
104
103
|
weight: thisWeight,
|
|
105
104
|
nestingEdge: true,
|
|
106
105
|
},
|
|
@@ -108,7 +107,7 @@ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
|
|
|
108
107
|
});
|
|
109
108
|
if (!g.getParent(v)) {
|
|
110
109
|
g.addEdge({
|
|
111
|
-
id:
|
|
110
|
+
id: `e${Math.random()}`,
|
|
112
111
|
source: root,
|
|
113
112
|
target: top,
|
|
114
113
|
data: {
|
|
@@ -118,32 +117,32 @@ var dfs = function (g, root, nodeSep, weight, height, depths, v) {
|
|
|
118
117
|
});
|
|
119
118
|
}
|
|
120
119
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
children === null || children === void 0 ? void 0 : children.forEach(
|
|
120
|
+
const treeDepths = (g) => {
|
|
121
|
+
const depths = {};
|
|
122
|
+
const dfs = (v, depth) => {
|
|
123
|
+
const children = g.getChildren(v);
|
|
124
|
+
children === null || children === void 0 ? void 0 : children.forEach((child) => dfs(child.id, depth + 1));
|
|
126
125
|
depths[v] = depth;
|
|
127
126
|
};
|
|
128
127
|
// g.children()?.forEach((v) => dfs(v, 1));
|
|
129
|
-
g.getRoots().forEach(
|
|
128
|
+
g.getRoots().forEach((v) => dfs(v.id, 1));
|
|
130
129
|
return depths;
|
|
131
130
|
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
g.getAllEdges().forEach(
|
|
131
|
+
const sumWeights = (g) => {
|
|
132
|
+
let result = 0;
|
|
133
|
+
g.getAllEdges().forEach((e) => {
|
|
135
134
|
result += e.data.weight;
|
|
136
135
|
});
|
|
137
136
|
return result;
|
|
138
137
|
};
|
|
139
|
-
|
|
138
|
+
const cleanup = (g, nestingRoot) => {
|
|
140
139
|
// const graphLabel = g.graph();
|
|
141
140
|
// graphLabel.nestingRoot && g.removeNode(graphLabel.nestingRoot);
|
|
142
141
|
// delete graphLabel.nestingRoot;
|
|
143
142
|
if (nestingRoot) {
|
|
144
143
|
g.removeNode(nestingRoot);
|
|
145
144
|
}
|
|
146
|
-
g.getAllEdges().forEach(
|
|
145
|
+
g.getAllEdges().forEach((e) => {
|
|
147
146
|
if (e.data.nestingEdge) {
|
|
148
147
|
g.removeEdge(e.id);
|
|
149
148
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nesting-graph.js","sourceRoot":"","sources":["../../src/antv-dagre/nesting-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ID } from
|
|
2
|
-
import { Graph as IGraph } from
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import { Graph as IGraph } from '../types';
|
|
3
3
|
declare const run: (g: IGraph, dummyChains: ID[]) => void;
|
|
4
4
|
declare const undo: (g: IGraph, dummyChains: ID[]) => void;
|
|
5
5
|
export { run, undo };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addDummyNode } from
|
|
1
|
+
import { addDummyNode } from './util';
|
|
2
2
|
/*
|
|
3
3
|
* Breaks any long edges in the graph into short segments that span 1 layer
|
|
4
4
|
* each. This operation is undoable with the denormalize function.
|
|
@@ -15,23 +15,23 @@ import { addDummyNode } from "./util";
|
|
|
15
15
|
* 3. The graph is augmented with a "dummyChains" attribute which contains
|
|
16
16
|
* the first dummy in each chain of dummy nodes produced.
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
g.getAllEdges().forEach(
|
|
18
|
+
const DUMMY_NODE_EDGE = 'edge';
|
|
19
|
+
const DUMMY_NODE_EDGE_LABEL = 'edge-label';
|
|
20
|
+
const run = (g, dummyChains) => {
|
|
21
|
+
g.getAllEdges().forEach((edge) => normalizeEdge(g, edge, dummyChains));
|
|
22
22
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
const normalizeEdge = (g, e, dummyChains) => {
|
|
24
|
+
let v = e.source;
|
|
25
|
+
let vRank = g.getNode(v).data.rank;
|
|
26
|
+
const w = e.target;
|
|
27
|
+
const wRank = g.getNode(w).data.rank;
|
|
28
|
+
const labelRank = e.data.labelRank;
|
|
29
29
|
if (wRank === vRank + 1)
|
|
30
30
|
return;
|
|
31
31
|
g.removeEdge(e.id);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
let dummy;
|
|
33
|
+
let nodeData;
|
|
34
|
+
let i;
|
|
35
35
|
for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {
|
|
36
36
|
e.data.points = [];
|
|
37
37
|
nodeData = {
|
|
@@ -40,7 +40,7 @@ var normalizeEdge = function (g, e, dummyChains) {
|
|
|
40
40
|
height: 0,
|
|
41
41
|
rank: vRank,
|
|
42
42
|
};
|
|
43
|
-
dummy = addDummyNode(g, DUMMY_NODE_EDGE, nodeData,
|
|
43
|
+
dummy = addDummyNode(g, DUMMY_NODE_EDGE, nodeData, '_d');
|
|
44
44
|
if (vRank === labelRank) {
|
|
45
45
|
nodeData.width = e.data.width;
|
|
46
46
|
nodeData.height = e.data.height;
|
|
@@ -48,7 +48,7 @@ var normalizeEdge = function (g, e, dummyChains) {
|
|
|
48
48
|
nodeData.labelpos = e.data.labelpos;
|
|
49
49
|
}
|
|
50
50
|
g.addEdge({
|
|
51
|
-
id:
|
|
51
|
+
id: `e${Math.random()}`,
|
|
52
52
|
source: v,
|
|
53
53
|
target: dummy,
|
|
54
54
|
data: { weight: e.data.weight },
|
|
@@ -59,23 +59,23 @@ var normalizeEdge = function (g, e, dummyChains) {
|
|
|
59
59
|
v = dummy;
|
|
60
60
|
}
|
|
61
61
|
g.addEdge({
|
|
62
|
-
id:
|
|
62
|
+
id: `e${Math.random()}`,
|
|
63
63
|
source: v,
|
|
64
64
|
target: w,
|
|
65
65
|
data: { weight: e.data.weight },
|
|
66
66
|
});
|
|
67
67
|
};
|
|
68
|
-
|
|
69
|
-
dummyChains.forEach(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
const undo = (g, dummyChains) => {
|
|
69
|
+
dummyChains.forEach((v) => {
|
|
70
|
+
let node = g.getNode(v);
|
|
71
|
+
const { data } = node;
|
|
72
|
+
const originalEdge = data.originalEdge;
|
|
73
|
+
let w;
|
|
74
74
|
// Restore original edge.
|
|
75
75
|
if (originalEdge) {
|
|
76
76
|
g.addEdge(originalEdge);
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
let currentV = v;
|
|
79
79
|
while (node.data.dummy) {
|
|
80
80
|
w = g.getSuccessors(currentV)[0];
|
|
81
81
|
g.removeNode(currentV);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/antv-dagre/normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
vs === null || vs === void 0 ? void 0 : vs.forEach(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
export const addSubgraphConstraints = (g, cg, vs) => {
|
|
2
|
+
const prev = {};
|
|
3
|
+
let rootPrev;
|
|
4
|
+
vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {
|
|
5
|
+
let child = g.getParent(v);
|
|
6
|
+
let parent;
|
|
7
|
+
let prevChild;
|
|
8
8
|
while (child) {
|
|
9
9
|
parent = g.getParent(child.id);
|
|
10
10
|
if (parent) {
|
|
@@ -28,9 +28,9 @@ export var addSubgraphConstraints = function (g, cg, vs) {
|
|
|
28
28
|
data: {},
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
if (!cg.hasEdge(
|
|
31
|
+
if (!cg.hasEdge(`e${prevChild}-${child.id}`)) {
|
|
32
32
|
cg.addEdge({
|
|
33
|
-
id:
|
|
33
|
+
id: `e${prevChild}-${child.id}`,
|
|
34
34
|
source: prevChild,
|
|
35
35
|
target: child.id,
|
|
36
36
|
data: {},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-subgraph-constraints.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/add-subgraph-constraints.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAQ,EAAE,EAAS,EAAE,EAAQ,EAAE,EAAE;IACtE,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,IAAI,QAAY,CAAC;IAEjB,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC;QACX,IAAI,SAAa,CAAC;QAClB,OAAO,KAAK,EAAE;YACZ,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE;gBACV,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;aAC5B;iBAAM;gBACL,SAAS,GAAG,QAAQ,CAAC;gBACrB,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;aACrB;YACD,IAAI,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;oBAC1B,EAAE,CAAC,OAAO,CAAC;wBACT,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACzB,EAAE,CAAC,OAAO,CAAC;wBACT,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE;oBAC5C,EAAE,CAAC,OAAO,CAAC;wBACT,EAAE,EAAE,IAAI,SAAS,IAAI,KAAK,CAAC,EAAE,EAAE;wBAC/B,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,KAAK,CAAC,EAAE;wBAChB,IAAI,EAAE,EAAE;qBACT,CAAC,CAAC;iBACJ;gBACD,OAAO;aACR;YACD,KAAK,GAAG,MAAM,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ID } from
|
|
2
|
-
import { Graph } from
|
|
1
|
+
import { ID } from '@antv/graphlib';
|
|
2
|
+
import { Graph } from '../../types';
|
|
3
3
|
/**
|
|
4
4
|
* TODO: The median method consistently performs better than the barycenter method and has a slight theoretical advantage
|
|
5
5
|
*/
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TODO: The median method consistently performs better than the barycenter method and has a slight theoretical advantage
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
5
|
-
return movable.map(
|
|
6
|
-
|
|
4
|
+
export const barycenter = (g, movable) => {
|
|
5
|
+
return movable.map((v) => {
|
|
6
|
+
const inV = g.getRelatedEdges(v, 'in');
|
|
7
7
|
if (!(inV === null || inV === void 0 ? void 0 : inV.length)) {
|
|
8
|
-
return { v
|
|
8
|
+
return { v };
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
inV === null || inV === void 0 ? void 0 : inV.forEach(
|
|
12
|
-
|
|
10
|
+
const result = { sum: 0, weight: 0 };
|
|
11
|
+
inV === null || inV === void 0 ? void 0 : inV.forEach((e) => {
|
|
12
|
+
const nodeU = g.getNode(e.source);
|
|
13
13
|
result.sum += e.data.weight * nodeU.data.order;
|
|
14
14
|
result.weight += e.data.weight;
|
|
15
15
|
});
|
|
16
16
|
return {
|
|
17
|
-
v
|
|
17
|
+
v,
|
|
18
18
|
barycenter: result.sum / result.weight,
|
|
19
19
|
weight: result.weight,
|
|
20
20
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barycenter.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/barycenter.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,OAAa,EAAE,EAAE;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE;YAChB,OAAO,EAAE,CAAC,EAAE,CAAC;SACd;QAED,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC;YACjD,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO;YACL,CAAC;YACD,UAAU,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;YACtC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
2
1
|
import { Graph } from '@antv/graphlib';
|
|
3
2
|
/*
|
|
4
3
|
* Constructs a graph that can be used to sort a layer of nodes. The graph will
|
|
@@ -30,9 +29,9 @@ import { Graph } from '@antv/graphlib';
|
|
|
30
29
|
* 5. The weights for copied edges are aggregated as need, since the output
|
|
31
30
|
* graph is not a multi-graph.
|
|
32
31
|
*/
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
export const buildLayerGraph = (g, rank, direction) => {
|
|
33
|
+
const root = createRootNode(g);
|
|
34
|
+
const result = new Graph({
|
|
36
35
|
tree: [
|
|
37
36
|
{
|
|
38
37
|
id: root,
|
|
@@ -41,30 +40,27 @@ export var buildLayerGraph = function (g, rank, direction) {
|
|
|
41
40
|
},
|
|
42
41
|
],
|
|
43
42
|
});
|
|
44
|
-
g.getAllNodes().forEach(
|
|
45
|
-
|
|
43
|
+
g.getAllNodes().forEach((v) => {
|
|
44
|
+
const parent = g.getParent(v.id);
|
|
46
45
|
if (v.data.rank === rank ||
|
|
47
46
|
(v.data.minRank <= rank && rank <= v.data.maxRank)) {
|
|
48
47
|
if (!result.hasNode(v.id)) {
|
|
49
|
-
result.addNode(
|
|
48
|
+
result.addNode(Object.assign({}, v));
|
|
50
49
|
}
|
|
51
50
|
if ((parent === null || parent === void 0 ? void 0 : parent.id) && !result.hasNode(parent === null || parent === void 0 ? void 0 : parent.id)) {
|
|
52
|
-
result.addNode(
|
|
51
|
+
result.addNode(Object.assign({}, parent));
|
|
53
52
|
}
|
|
54
53
|
result.setParent(v.id, (parent === null || parent === void 0 ? void 0 : parent.id) || root);
|
|
55
54
|
// This assumes we have only short edges!
|
|
56
|
-
g.getRelatedEdges(v.id, direction).forEach(
|
|
57
|
-
|
|
55
|
+
g.getRelatedEdges(v.id, direction).forEach((e) => {
|
|
56
|
+
const u = e.source === v.id ? e.target : e.source;
|
|
58
57
|
if (!result.hasNode(u)) {
|
|
59
|
-
result.addNode(
|
|
58
|
+
result.addNode(Object.assign({}, g.getNode(u)));
|
|
60
59
|
}
|
|
61
|
-
|
|
60
|
+
const edge = result
|
|
62
61
|
.getRelatedEdges(u, 'out')
|
|
63
|
-
.find(
|
|
64
|
-
|
|
65
|
-
return target === v.id;
|
|
66
|
-
});
|
|
67
|
-
var weight = edge !== undefined ? edge.data.weight : 0;
|
|
62
|
+
.find(({ target }) => target === v.id);
|
|
63
|
+
const weight = edge !== undefined ? edge.data.weight : 0;
|
|
68
64
|
if (!edge) {
|
|
69
65
|
result.addEdge({
|
|
70
66
|
id: e.id,
|
|
@@ -76,20 +72,20 @@ export var buildLayerGraph = function (g, rank, direction) {
|
|
|
76
72
|
});
|
|
77
73
|
}
|
|
78
74
|
else {
|
|
79
|
-
result.updateEdgeData(edge.id,
|
|
75
|
+
result.updateEdgeData(edge.id, Object.assign(Object.assign({}, edge.data), { weight: e.data.weight + weight }));
|
|
80
76
|
}
|
|
81
77
|
});
|
|
82
78
|
// console.log(v);
|
|
83
79
|
if (v.data.hasOwnProperty('minRank')) {
|
|
84
|
-
result.updateNodeData(v.id,
|
|
80
|
+
result.updateNodeData(v.id, Object.assign(Object.assign({}, v.data), { borderLeft: v.data.borderLeft[rank], borderRight: v.data.borderRight[rank] }));
|
|
85
81
|
}
|
|
86
82
|
}
|
|
87
83
|
});
|
|
88
84
|
return result;
|
|
89
85
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
while (g.hasNode((v =
|
|
86
|
+
const createRootNode = (g) => {
|
|
87
|
+
let v;
|
|
88
|
+
while (g.hasNode((v = `_root${Math.random()}`)))
|
|
93
89
|
;
|
|
94
90
|
return v;
|
|
95
91
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-layer-graph.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/build-layer-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,33 +14,33 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This algorithm is derived from Barth, et al., "Bilayer Cross Counting."
|
|
16
16
|
*/
|
|
17
|
-
import { zipObject } from
|
|
18
|
-
|
|
17
|
+
import { zipObject } from '../util';
|
|
18
|
+
const twoLayerCrossCount = (g, northLayer, southLayer) => {
|
|
19
19
|
// Sort all of the edges between the north and south layers by their position
|
|
20
20
|
// in the north layer and then the south. Map these edges to the position of
|
|
21
21
|
// their head in the south layer.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const southPos = zipObject(southLayer, southLayer.map((v, i) => i));
|
|
23
|
+
const unflat = northLayer.map((v) => {
|
|
24
|
+
const unsort = g.getRelatedEdges(v, 'out').map((e) => {
|
|
25
25
|
return { pos: southPos[e.target] || 0, weight: e.data.weight };
|
|
26
26
|
});
|
|
27
|
-
return unsort === null || unsort === void 0 ? void 0 : unsort.sort(
|
|
27
|
+
return unsort === null || unsort === void 0 ? void 0 : unsort.sort((a, b) => a.pos - b.pos);
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
const southEntries = unflat.flat().filter((entry) => entry !== undefined);
|
|
30
30
|
// Build the accumulator tree
|
|
31
|
-
|
|
31
|
+
let firstIndex = 1;
|
|
32
32
|
while (firstIndex < southLayer.length)
|
|
33
33
|
firstIndex <<= 1;
|
|
34
|
-
|
|
34
|
+
const treeSize = 2 * firstIndex - 1;
|
|
35
35
|
firstIndex -= 1;
|
|
36
|
-
|
|
36
|
+
const tree = Array(treeSize).fill(0, 0, treeSize);
|
|
37
37
|
// Calculate the weighted crossings
|
|
38
|
-
|
|
39
|
-
southEntries === null || southEntries === void 0 ? void 0 : southEntries.forEach(
|
|
38
|
+
let cc = 0;
|
|
39
|
+
southEntries === null || southEntries === void 0 ? void 0 : southEntries.forEach((entry) => {
|
|
40
40
|
if (entry) {
|
|
41
|
-
|
|
41
|
+
let index = entry.pos + firstIndex;
|
|
42
42
|
tree[index] += entry.weight;
|
|
43
|
-
|
|
43
|
+
let weightSum = 0;
|
|
44
44
|
while (index > 0) {
|
|
45
45
|
if (index % 2) {
|
|
46
46
|
weightSum += tree[index + 1];
|
|
@@ -53,9 +53,9 @@ var twoLayerCrossCount = function (g, northLayer, southLayer) {
|
|
|
53
53
|
});
|
|
54
54
|
return cc;
|
|
55
55
|
};
|
|
56
|
-
export
|
|
57
|
-
|
|
58
|
-
for (
|
|
56
|
+
export const crossCount = (g, layering) => {
|
|
57
|
+
let cc = 0;
|
|
58
|
+
for (let i = 1; i < (layering === null || layering === void 0 ? void 0 : layering.length); i += 1) {
|
|
59
59
|
cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);
|
|
60
60
|
}
|
|
61
61
|
return cc;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-count.js","sourceRoot":"","sources":["../../../src/antv-dagre/order/cross-count.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Graph as IGraph } from
|
|
1
|
+
import { Graph as IGraph } from '../../types';
|
|
2
2
|
export declare const order: (g: IGraph, keepNodeOrder?: boolean) => void;
|