@antv/layout 1.2.13 → 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 -542
- 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 -75
- 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/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 +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
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.position = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const bk_1 = require("./bk");
|
|
6
|
+
const positionY = (g, options) => {
|
|
7
|
+
const { ranksep = 0 } = options || {};
|
|
8
|
+
const layering = (0, util_1.buildLayerMatrix)(g);
|
|
9
|
+
let prevY = 0;
|
|
10
|
+
layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {
|
|
11
|
+
const heights = layer.map((v) => g.getNode(v).data.height);
|
|
12
|
+
const maxHeight = Math.max(...heights, 0);
|
|
13
|
+
layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {
|
|
14
|
+
g.getNode(v).data.y = prevY + maxHeight / 2;
|
|
15
|
+
});
|
|
16
|
+
prevY += maxHeight + ranksep;
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
const positionX = (g, options) => {
|
|
20
|
+
const { align: graphAlign, nodesep = 0, edgesep = 0 } = options || {};
|
|
21
|
+
const layering = (0, util_1.buildLayerMatrix)(g);
|
|
22
|
+
const conflicts = Object.assign((0, bk_1.findType1Conflicts)(g, layering), (0, bk_1.findType2Conflicts)(g, layering));
|
|
23
|
+
const xss = {};
|
|
24
|
+
let adjustedLayering = [];
|
|
25
|
+
['u', 'd'].forEach((vert) => {
|
|
26
|
+
adjustedLayering =
|
|
27
|
+
vert === 'u' ? layering : Object.values(layering).reverse();
|
|
28
|
+
['l', 'r'].forEach((horiz) => {
|
|
29
|
+
if (horiz === 'r') {
|
|
30
|
+
adjustedLayering = adjustedLayering.map((inner) => Object.values(inner).reverse());
|
|
31
|
+
}
|
|
32
|
+
const neighborFn = (vert === 'u' ? g.getPredecessors : g.getSuccessors).bind(g);
|
|
33
|
+
const align = (0, bk_1.verticalAlignment)(g, adjustedLayering, conflicts, neighborFn);
|
|
34
|
+
const xs = (0, bk_1.horizontalCompaction)(g, adjustedLayering, align.root, align.align, nodesep, edgesep, horiz === 'r');
|
|
35
|
+
if (horiz === 'r') {
|
|
36
|
+
Object.keys(xs).forEach((xsKey) => (xs[xsKey] = -xs[xsKey]));
|
|
37
|
+
}
|
|
38
|
+
xss[vert + horiz] = xs;
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const smallestWidth = (0, bk_1.findSmallestWidthAlignment)(g, xss);
|
|
42
|
+
smallestWidth && (0, bk_1.alignCoordinates)(xss, smallestWidth);
|
|
43
|
+
return (0, bk_1.balance)(xss, graphAlign);
|
|
44
|
+
};
|
|
45
|
+
const position = (g, options) => {
|
|
46
|
+
var _a;
|
|
47
|
+
const ng = (0, util_1.asNonCompoundGraph)(g);
|
|
48
|
+
positionY(ng, options);
|
|
49
|
+
const xs = positionX(ng, options);
|
|
50
|
+
(_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach((key) => {
|
|
51
|
+
ng.getNode(key).data.x = xs[key];
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
exports.position = position;
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/antv-dagre/position/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Graph } from
|
|
2
|
-
import { Graph as IGraph } from
|
|
1
|
+
import { Graph } from '@antv/graphlib';
|
|
2
|
+
import { Graph as IGraph } from '../../types';
|
|
3
3
|
declare const feasibleTree: (g: IGraph) => Graph<import("@antv/graphlib").PlainObject, import("@antv/graphlib").PlainObject>;
|
|
4
4
|
declare const feasibleTreeWithLayer: (g: IGraph) => Graph<import("@antv/graphlib").PlainObject, import("@antv/graphlib").PlainObject>;
|
|
5
5
|
export { feasibleTree, feasibleTreeWithLayer };
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.feasibleTreeWithLayer = exports.feasibleTree = void 0;
|
|
4
|
+
const graphlib_1 = require("@antv/graphlib");
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const util_2 = require("./util");
|
|
4
7
|
/*
|
|
5
8
|
* Constructs a spanning tree with tight edges and adjusted the input node's
|
|
6
9
|
* ranks to achieve this. A tight edge is one that is has a length that matches
|
|
@@ -26,33 +29,34 @@ import { Graph } from "@antv/graphlib";
|
|
|
26
29
|
* Returns a tree (undirected graph) that is constructed using only "tight"
|
|
27
30
|
* edges.
|
|
28
31
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
const feasibleTree = (g) => {
|
|
33
|
+
const t = new graphlib_1.Graph({
|
|
31
34
|
tree: [],
|
|
32
35
|
});
|
|
33
36
|
// Choose arbitrary node from which to start our tree
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
const start = g.getAllNodes()[0];
|
|
38
|
+
const size = g.getAllNodes().length;
|
|
36
39
|
t.addNode(start);
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
let edge;
|
|
41
|
+
let delta;
|
|
39
42
|
while (tightTree(t, g) < size) {
|
|
40
43
|
edge = findMinSlackEdge(t, g);
|
|
41
|
-
delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);
|
|
44
|
+
delta = t.hasNode(edge.source) ? (0, util_2.slack)(g, edge) : -(0, util_2.slack)(g, edge);
|
|
42
45
|
shiftRanks(t, g, delta);
|
|
43
46
|
}
|
|
44
47
|
return t;
|
|
45
48
|
};
|
|
49
|
+
exports.feasibleTree = feasibleTree;
|
|
46
50
|
/*
|
|
47
51
|
* Finds a maximal tree of tight edges and returns the number of nodes in the
|
|
48
52
|
* tree.
|
|
49
53
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
g.getRelatedEdges(v,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (!t.hasNode(w) && !slack(g, e)) {
|
|
54
|
+
const tightTree = (t, g) => {
|
|
55
|
+
const dfs = (v) => {
|
|
56
|
+
g.getRelatedEdges(v, 'both').forEach((e) => {
|
|
57
|
+
const edgeV = e.source;
|
|
58
|
+
const w = v === edgeV ? e.target : edgeV;
|
|
59
|
+
if (!t.hasNode(w) && !(0, util_2.slack)(g, e)) {
|
|
56
60
|
t.addNode({
|
|
57
61
|
id: w,
|
|
58
62
|
data: {},
|
|
@@ -67,7 +71,7 @@ var tightTree = function (t, g) {
|
|
|
67
71
|
}
|
|
68
72
|
});
|
|
69
73
|
};
|
|
70
|
-
t.getAllNodes().forEach(
|
|
74
|
+
t.getAllNodes().forEach((n) => dfs(n.id));
|
|
71
75
|
return t.getAllNodes().length;
|
|
72
76
|
};
|
|
73
77
|
/*
|
|
@@ -95,34 +99,35 @@ var tightTree = function (t, g) {
|
|
|
95
99
|
* Returns a tree (undirected graph) that is constructed using only "tight"
|
|
96
100
|
* edges.
|
|
97
101
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
const feasibleTreeWithLayer = (g) => {
|
|
103
|
+
const t = new graphlib_1.Graph({ tree: [] });
|
|
100
104
|
// Choose arbitrary node from which to start our tree
|
|
101
|
-
|
|
102
|
-
|
|
105
|
+
const start = g.getAllNodes()[0];
|
|
106
|
+
const size = g.getAllNodes().length;
|
|
103
107
|
t.addNode(start);
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
let edge;
|
|
109
|
+
let delta;
|
|
106
110
|
while (tightTreeWithLayer(t, g) < size) {
|
|
107
111
|
edge = findMinSlackEdge(t, g);
|
|
108
|
-
delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);
|
|
112
|
+
delta = t.hasNode(edge.source) ? (0, util_2.slack)(g, edge) : -(0, util_2.slack)(g, edge);
|
|
109
113
|
shiftRanks(t, g, delta);
|
|
110
114
|
}
|
|
111
115
|
return t;
|
|
112
116
|
};
|
|
117
|
+
exports.feasibleTreeWithLayer = feasibleTreeWithLayer;
|
|
113
118
|
/*
|
|
114
119
|
* Finds a maximal tree of tight edges and returns the number of nodes in the
|
|
115
120
|
* tree.
|
|
116
121
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
const tightTreeWithLayer = (t, g) => {
|
|
123
|
+
const dfs = (v) => {
|
|
119
124
|
var _a;
|
|
120
|
-
(_a = g.getRelatedEdges(v,
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
(_a = g.getRelatedEdges(v, 'both')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
126
|
+
const edgeV = e.source;
|
|
127
|
+
const w = v === edgeV ? e.target : edgeV;
|
|
123
128
|
// 对于指定layer的,直接加入tight-tree,不参与调整
|
|
124
129
|
if (!t.hasNode(w) &&
|
|
125
|
-
(g.getNode(w).data.layer !== undefined || !slack(g, e))) {
|
|
130
|
+
(g.getNode(w).data.layer !== undefined || !(0, util_2.slack)(g, e))) {
|
|
126
131
|
t.addNode({
|
|
127
132
|
id: w,
|
|
128
133
|
data: {},
|
|
@@ -137,28 +142,27 @@ var tightTreeWithLayer = function (t, g) {
|
|
|
137
142
|
}
|
|
138
143
|
});
|
|
139
144
|
};
|
|
140
|
-
t.getAllNodes().forEach(
|
|
145
|
+
t.getAllNodes().forEach((n) => dfs(n.id));
|
|
141
146
|
return t.getAllNodes().length;
|
|
142
147
|
};
|
|
143
148
|
/*
|
|
144
149
|
* Finds the edge with the smallest slack that is incident on tree and returns
|
|
145
150
|
* it.
|
|
146
151
|
*/
|
|
147
|
-
|
|
148
|
-
return minBy(g.getAllEdges(),
|
|
152
|
+
const findMinSlackEdge = (t, g) => {
|
|
153
|
+
return (0, util_1.minBy)(g.getAllEdges(), (e) => {
|
|
149
154
|
if (t.hasNode(e.source) !== t.hasNode(e.target)) {
|
|
150
|
-
return slack(g, e);
|
|
155
|
+
return (0, util_2.slack)(g, e);
|
|
151
156
|
}
|
|
152
157
|
return Infinity;
|
|
153
158
|
});
|
|
154
159
|
};
|
|
155
|
-
|
|
156
|
-
t.getAllNodes().forEach(
|
|
157
|
-
|
|
160
|
+
const shiftRanks = (t, g, delta) => {
|
|
161
|
+
t.getAllNodes().forEach((tn) => {
|
|
162
|
+
const v = g.getNode(tn.id);
|
|
158
163
|
if (!v.data.rank)
|
|
159
164
|
v.data.rank = 0;
|
|
160
165
|
v.data.rank += delta;
|
|
161
166
|
});
|
|
162
167
|
};
|
|
163
|
-
export { feasibleTree, feasibleTreeWithLayer };
|
|
164
168
|
//# sourceMappingURL=feasible-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feasible-tree.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/feasible-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rank = void 0;
|
|
4
|
+
const feasible_tree_1 = require("./feasible-tree");
|
|
5
|
+
const network_simplex_1 = require("./network-simplex");
|
|
6
|
+
const util_1 = require("./util");
|
|
4
7
|
/*
|
|
5
8
|
* Assigns a rank to each node in the input graph that respects the "minlen"
|
|
6
9
|
* constraint specified on edges between nodes.
|
|
@@ -20,15 +23,15 @@ import { networkSimplex } from "./network-simplex";
|
|
|
20
23
|
* algorithm. Ranks can start at any index (including negative), we'll
|
|
21
24
|
* fix them up later.
|
|
22
25
|
*/
|
|
23
|
-
|
|
26
|
+
const rank = (g, ranker) => {
|
|
24
27
|
switch (ranker) {
|
|
25
|
-
case
|
|
28
|
+
case 'network-simplex':
|
|
26
29
|
networkSimplexRanker(g);
|
|
27
30
|
break;
|
|
28
|
-
case
|
|
31
|
+
case 'tight-tree':
|
|
29
32
|
tightTreeRanker(g);
|
|
30
33
|
break;
|
|
31
|
-
case
|
|
34
|
+
case 'longest-path':
|
|
32
35
|
longestPathRanker(g);
|
|
33
36
|
break;
|
|
34
37
|
// default: networkSimplexRanker(g);
|
|
@@ -36,13 +39,14 @@ export var rank = function (g, ranker) {
|
|
|
36
39
|
tightTreeRanker(g);
|
|
37
40
|
}
|
|
38
41
|
};
|
|
42
|
+
exports.rank = rank;
|
|
39
43
|
// A fast and simple ranker, but results are far from optimal.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
longestPathWithLayer(g);
|
|
43
|
-
|
|
44
|
+
const longestPathRanker = util_1.longestPath;
|
|
45
|
+
const tightTreeRanker = (g) => {
|
|
46
|
+
(0, util_1.longestPathWithLayer)(g);
|
|
47
|
+
(0, feasible_tree_1.feasibleTreeWithLayer)(g);
|
|
44
48
|
};
|
|
45
|
-
|
|
46
|
-
networkSimplex(g);
|
|
49
|
+
const networkSimplexRanker = (g) => {
|
|
50
|
+
(0, network_simplex_1.networkSimplex)(g);
|
|
47
51
|
};
|
|
48
52
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/index.ts"],"names":[],"mappings":";;;AACA,mDAAwE;AACxE,uDAAmD;AACnD,iCAA2D;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACI,MAAM,IAAI,GAAG,CAClB,CAAS,EACT,MAAyD,EACzD,EAAE;IACF,QAAQ,MAAM,EAAE;QACd,KAAK,iBAAiB;YACpB,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,YAAY;YACf,eAAe,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,cAAc;YACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM;QACR,oCAAoC;QACpC;YACE,eAAe,CAAC,CAAC,CAAC,CAAC;KACtB;AACH,CAAC,CAAC;AAlBW,QAAA,IAAI,QAkBf;AAEF,8DAA8D;AAC9D,MAAM,iBAAiB,GAAG,kBAAW,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE;IACpC,IAAA,2BAAoB,EAAC,CAAC,CAAC,CAAC;IACxB,IAAA,qCAAY,EAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAS,EAAE,EAAE;IACzC,IAAA,gCAAc,EAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Edge, ID } from
|
|
2
|
-
import { EdgeData, Graph as IGraph } from
|
|
1
|
+
import { Edge, ID } from '@antv/graphlib';
|
|
2
|
+
import { EdgeData, Graph as IGraph } from '../../types';
|
|
3
3
|
export declare const networkSimplex: (og: IGraph) => void;
|
|
4
4
|
export declare const initCutValues: (t: IGraph, g: IGraph) => void;
|
|
5
5
|
export declare const calcCutValue: (t: IGraph, g: IGraph, child: ID) => number;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exchangeEdges = exports.enterEdge = exports.leaveEdge = exports.initLowLimValues = exports.calcCutValue = exports.initCutValues = exports.networkSimplex = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const feasible_tree_1 = require("./feasible-tree");
|
|
6
|
+
const util_2 = require("./util");
|
|
4
7
|
/*
|
|
5
8
|
* The network simplex algorithm assigns ranks to each node in the input graph
|
|
6
9
|
* and iteratively improves the ranking to reduce the length of edges.
|
|
@@ -34,72 +37,74 @@ import { dfs, minBy, simplify } from "../util";
|
|
|
34
37
|
* for Drawing Directed Graphs." The structure of the file roughly follows the
|
|
35
38
|
* structure of the overall algorithm.
|
|
36
39
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
initLowLimValues(t);
|
|
42
|
-
initCutValues(t, g);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
while ((e = leaveEdge(t))) {
|
|
46
|
-
f = enterEdge(t, g, e);
|
|
47
|
-
exchangeEdges(t, g, e, f);
|
|
40
|
+
const networkSimplex = (og) => {
|
|
41
|
+
const g = (0, util_1.simplify)(og);
|
|
42
|
+
(0, util_2.longestPath)(g);
|
|
43
|
+
const t = (0, feasible_tree_1.feasibleTree)(g);
|
|
44
|
+
(0, exports.initLowLimValues)(t);
|
|
45
|
+
(0, exports.initCutValues)(t, g);
|
|
46
|
+
let e;
|
|
47
|
+
let f;
|
|
48
|
+
while ((e = (0, exports.leaveEdge)(t))) {
|
|
49
|
+
f = (0, exports.enterEdge)(t, g, e);
|
|
50
|
+
(0, exports.exchangeEdges)(t, g, e, f);
|
|
48
51
|
}
|
|
49
52
|
};
|
|
53
|
+
exports.networkSimplex = networkSimplex;
|
|
50
54
|
/*
|
|
51
55
|
* Initializes cut values for all edges in the tree.
|
|
52
56
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
const initCutValues = (t, g) => {
|
|
58
|
+
let vs = (0, util_1.dfs)(t, t.getAllNodes(), 'post', false);
|
|
55
59
|
vs = vs.slice(0, (vs === null || vs === void 0 ? void 0 : vs.length) - 1);
|
|
56
|
-
vs.forEach(
|
|
60
|
+
vs.forEach((v) => {
|
|
57
61
|
assignCutValue(t, g, v);
|
|
58
62
|
});
|
|
59
63
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
exports.initCutValues = initCutValues;
|
|
65
|
+
const assignCutValue = (t, g, child) => {
|
|
66
|
+
const childLab = t.getNode(child);
|
|
67
|
+
const parent = childLab.data.parent;
|
|
63
68
|
// FIXME: use undirected edge?
|
|
64
|
-
|
|
65
|
-
.getRelatedEdges(child,
|
|
66
|
-
.find(
|
|
67
|
-
edge.data.cutvalue = calcCutValue(t, g, child);
|
|
69
|
+
const edge = t
|
|
70
|
+
.getRelatedEdges(child, 'both')
|
|
71
|
+
.find((e) => e.target === parent || e.source === parent);
|
|
72
|
+
edge.data.cutvalue = (0, exports.calcCutValue)(t, g, child);
|
|
68
73
|
};
|
|
69
74
|
/*
|
|
70
75
|
* Given the tight tree, its graph, and a child in the graph calculate and
|
|
71
76
|
* return the cut value for the edge between the child and its parent.
|
|
72
77
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
const calcCutValue = (t, g, child) => {
|
|
79
|
+
const childLab = t.getNode(child);
|
|
80
|
+
const parent = childLab.data.parent;
|
|
76
81
|
// True if the child is on the tail end of the edge in the directed graph
|
|
77
|
-
|
|
82
|
+
let childIsTail = true;
|
|
78
83
|
// The graph's view of the tree edge we're inspecting
|
|
79
|
-
|
|
80
|
-
.getRelatedEdges(child,
|
|
81
|
-
.find(
|
|
84
|
+
let graphEdge = g
|
|
85
|
+
.getRelatedEdges(child, 'out')
|
|
86
|
+
.find((e) => e.target === parent);
|
|
82
87
|
// The accumulated cut value for the edge between this node and its parent
|
|
83
|
-
|
|
88
|
+
let cutValue = 0;
|
|
84
89
|
if (!graphEdge) {
|
|
85
90
|
childIsTail = false;
|
|
86
91
|
graphEdge = g
|
|
87
|
-
.getRelatedEdges(parent,
|
|
88
|
-
.find(
|
|
92
|
+
.getRelatedEdges(parent, 'out')
|
|
93
|
+
.find((e) => e.target === child);
|
|
89
94
|
}
|
|
90
95
|
cutValue = graphEdge.data.weight;
|
|
91
|
-
g.getRelatedEdges(child,
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
g.getRelatedEdges(child, 'both').forEach((e) => {
|
|
97
|
+
const isOutEdge = e.source === child;
|
|
98
|
+
const other = isOutEdge ? e.target : e.source;
|
|
94
99
|
if (other !== parent) {
|
|
95
|
-
|
|
96
|
-
|
|
100
|
+
const pointsToHead = isOutEdge === childIsTail;
|
|
101
|
+
const otherWeight = e.data.weight;
|
|
97
102
|
cutValue += pointsToHead ? otherWeight : -otherWeight;
|
|
98
103
|
if (isTreeEdge(t, child, other)) {
|
|
99
104
|
// FIXME: use undirected edge?
|
|
100
|
-
|
|
101
|
-
.getRelatedEdges(child,
|
|
102
|
-
.find(
|
|
105
|
+
const otherCutValue = t
|
|
106
|
+
.getRelatedEdges(child, 'both')
|
|
107
|
+
.find((e) => e.source === other || e.target === other).data
|
|
103
108
|
.cutvalue;
|
|
104
109
|
cutValue += pointsToHead ? -otherCutValue : otherCutValue;
|
|
105
110
|
}
|
|
@@ -107,17 +112,18 @@ export var calcCutValue = function (t, g, child) {
|
|
|
107
112
|
});
|
|
108
113
|
return cutValue;
|
|
109
114
|
};
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
exports.calcCutValue = calcCutValue;
|
|
116
|
+
const initLowLimValues = (tree, root = tree.getAllNodes()[0].id) => {
|
|
112
117
|
dfsAssignLowLim(tree, {}, 1, root);
|
|
113
118
|
};
|
|
114
|
-
|
|
119
|
+
exports.initLowLimValues = initLowLimValues;
|
|
120
|
+
const dfsAssignLowLim = (tree, visited, nextLim, v, parent) => {
|
|
115
121
|
var _a;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
const low = nextLim;
|
|
123
|
+
let useNextLim = nextLim;
|
|
124
|
+
const label = tree.getNode(v);
|
|
119
125
|
visited[v] = true;
|
|
120
|
-
(_a = tree.getNeighbors(v)) === null || _a === void 0 ? void 0 : _a.forEach(
|
|
126
|
+
(_a = tree.getNeighbors(v)) === null || _a === void 0 ? void 0 : _a.forEach((w) => {
|
|
121
127
|
if (!visited[w.id]) {
|
|
122
128
|
useNextLim = dfsAssignLowLim(tree, visited, useNextLim, w.id, v);
|
|
123
129
|
}
|
|
@@ -133,39 +139,41 @@ var dfsAssignLowLim = function (tree, visited, nextLim, v, parent) {
|
|
|
133
139
|
}
|
|
134
140
|
return useNextLim;
|
|
135
141
|
};
|
|
136
|
-
|
|
137
|
-
return tree.getAllEdges().find(
|
|
142
|
+
const leaveEdge = (tree) => {
|
|
143
|
+
return tree.getAllEdges().find((e) => {
|
|
138
144
|
return e.data.cutvalue < 0;
|
|
139
145
|
});
|
|
140
146
|
};
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
147
|
+
exports.leaveEdge = leaveEdge;
|
|
148
|
+
const enterEdge = (t, g, edge) => {
|
|
149
|
+
let v = edge.source;
|
|
150
|
+
let w = edge.target;
|
|
144
151
|
// For the rest of this function we assume that v is the tail and w is the
|
|
145
152
|
// head, so if we don't have this edge in the graph we should flip it to
|
|
146
153
|
// match the correct orientation.
|
|
147
|
-
if (!g.getRelatedEdges(v,
|
|
154
|
+
if (!g.getRelatedEdges(v, 'out').find((e) => e.target === w)) {
|
|
148
155
|
v = edge.target;
|
|
149
156
|
w = edge.source;
|
|
150
157
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
158
|
+
const vLabel = t.getNode(v);
|
|
159
|
+
const wLabel = t.getNode(w);
|
|
160
|
+
let tailLabel = vLabel;
|
|
161
|
+
let flip = false;
|
|
155
162
|
// If the root is in the tail of the edge then we need to flip the logic that
|
|
156
163
|
// checks for the head and tail nodes in the candidates function below.
|
|
157
164
|
if (vLabel.data.lim > wLabel.data.lim) {
|
|
158
165
|
tailLabel = wLabel;
|
|
159
166
|
flip = true;
|
|
160
167
|
}
|
|
161
|
-
|
|
168
|
+
const candidates = g.getAllEdges().filter((edge) => {
|
|
162
169
|
return (flip === isDescendant(t.getNode(edge.source), tailLabel) &&
|
|
163
170
|
flip !== isDescendant(t.getNode(edge.target), tailLabel));
|
|
164
171
|
});
|
|
165
|
-
return minBy(candidates,
|
|
166
|
-
return slack(g, edge);
|
|
172
|
+
return (0, util_1.minBy)(candidates, (edge) => {
|
|
173
|
+
return (0, util_2.slack)(g, edge);
|
|
167
174
|
});
|
|
168
175
|
};
|
|
176
|
+
exports.enterEdge = enterEdge;
|
|
169
177
|
/**
|
|
170
178
|
*
|
|
171
179
|
* @param t
|
|
@@ -173,38 +181,39 @@ export var enterEdge = function (t, g, edge) {
|
|
|
173
181
|
* @param e edge to remove
|
|
174
182
|
* @param f edge to add
|
|
175
183
|
*/
|
|
176
|
-
|
|
184
|
+
const exchangeEdges = (t, g, e, f) => {
|
|
177
185
|
// FIXME: use undirected edge?
|
|
178
|
-
|
|
179
|
-
.getRelatedEdges(e.source,
|
|
180
|
-
.find(
|
|
186
|
+
const existed = t
|
|
187
|
+
.getRelatedEdges(e.source, 'both')
|
|
188
|
+
.find((edge) => edge.source === e.target || edge.target === e.target);
|
|
181
189
|
if (existed) {
|
|
182
190
|
t.removeEdge(existed.id);
|
|
183
191
|
}
|
|
184
192
|
t.addEdge({
|
|
185
|
-
id:
|
|
193
|
+
id: `e${Math.random()}`,
|
|
186
194
|
source: f.source,
|
|
187
195
|
target: f.target,
|
|
188
196
|
data: {},
|
|
189
197
|
});
|
|
190
|
-
initLowLimValues(t);
|
|
191
|
-
initCutValues(t, g);
|
|
198
|
+
(0, exports.initLowLimValues)(t);
|
|
199
|
+
(0, exports.initCutValues)(t, g);
|
|
192
200
|
updateRanks(t, g);
|
|
193
201
|
};
|
|
194
|
-
|
|
195
|
-
|
|
202
|
+
exports.exchangeEdges = exchangeEdges;
|
|
203
|
+
const updateRanks = (t, g) => {
|
|
204
|
+
const root = t.getAllNodes().find((v) => {
|
|
196
205
|
return !v.data.parent;
|
|
197
206
|
});
|
|
198
|
-
|
|
207
|
+
let vs = (0, util_1.dfs)(t, root, 'pre', false);
|
|
199
208
|
vs = vs.slice(1);
|
|
200
|
-
vs.forEach(
|
|
201
|
-
|
|
202
|
-
|
|
209
|
+
vs.forEach((v) => {
|
|
210
|
+
const parent = t.getNode(v).data.parent;
|
|
211
|
+
let edge = g.getRelatedEdges(v, 'out').find((e) => e.target === parent);
|
|
203
212
|
// let edge = g.edgeFromArgs(v, parent);
|
|
204
|
-
|
|
213
|
+
let flipped = false;
|
|
205
214
|
if (!edge && g.hasNode(parent)) {
|
|
206
215
|
// edge = g.edgeFromArgs(parent, v)!;
|
|
207
|
-
edge = g.getRelatedEdges(parent,
|
|
216
|
+
edge = g.getRelatedEdges(parent, 'out').find((e) => e.target === v);
|
|
208
217
|
flipped = true;
|
|
209
218
|
}
|
|
210
219
|
g.getNode(v).data.rank =
|
|
@@ -215,17 +224,17 @@ var updateRanks = function (t, g) {
|
|
|
215
224
|
/*
|
|
216
225
|
* Returns true if the edge is in the tree.
|
|
217
226
|
*/
|
|
218
|
-
|
|
227
|
+
const isTreeEdge = (tree, u, v) => {
|
|
219
228
|
// FIXME: use undirected edge?
|
|
220
229
|
return tree
|
|
221
|
-
.getRelatedEdges(u,
|
|
222
|
-
.find(
|
|
230
|
+
.getRelatedEdges(u, 'both')
|
|
231
|
+
.find((e) => e.source === v || e.target === v);
|
|
223
232
|
};
|
|
224
233
|
/*
|
|
225
234
|
* Returns true if the specified node is descendant of the root node per the
|
|
226
235
|
* assigned low and lim attributes in the tree.
|
|
227
236
|
*/
|
|
228
|
-
|
|
237
|
+
const isDescendant = (vLabel, rootLabel) => {
|
|
229
238
|
return (rootLabel.data.low <= vLabel.data.lim &&
|
|
230
239
|
vLabel.data.lim <= rootLabel.data.lim);
|
|
231
240
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-simplex.js","sourceRoot":"","sources":["../../../src/antv-dagre/rank/network-simplex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Edge } from
|
|
2
|
-
import { EdgeData, Graph } from
|
|
1
|
+
import { Edge } from '@antv/graphlib';
|
|
2
|
+
import { EdgeData, Graph } from '../../types';
|
|
3
3
|
declare const longestPath: (g: Graph) => void;
|
|
4
4
|
declare const longestPathWithLayer: (g: Graph) => void;
|
|
5
5
|
declare const slack: (g: Graph, e: Edge<EdgeData>) => number;
|