@statewalker/fsm-charts 0.2.4 → 0.2.6
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/README.md +206 -1
- package/dist/StateChart-cXyVRcs-.d.ts +94 -0
- package/dist/StateChart-cXyVRcs-.d.ts.map +1 -0
- package/dist/StateChartIndex-BK2315qj.d.ts +142 -0
- package/dist/StateChartIndex-BK2315qj.d.ts.map +1 -0
- package/dist/StateChartIndex-BOIrc_nq.js +355 -0
- package/dist/StateChartIndex-BOIrc_nq.js.map +1 -0
- package/dist/buildStatechartsPanel-CxQlIwTh.js +494 -0
- package/dist/buildStatechartsPanel-CxQlIwTh.js.map +1 -0
- package/dist/buildStatechartsPanel-hCtZbdiF.d.ts +79 -0
- package/dist/buildStatechartsPanel-hCtZbdiF.d.ts.map +1 -0
- package/dist/defineProperty-C0rC37pP.js +39 -0
- package/dist/description-panels-DI2MNlbK.js +184 -0
- package/dist/description-panels-DI2MNlbK.js.map +1 -0
- package/dist/getLabelDimensions-BY0q7j3D.d.ts +79 -0
- package/dist/getLabelDimensions-BY0q7j3D.d.ts.map +1 -0
- package/dist/getPadding-Cw0e7G2v.js +25 -0
- package/dist/getPadding-Cw0e7G2v.js.map +1 -0
- package/dist/index-config.d.ts +3 -12
- package/dist/index-config.js +2 -1
- package/dist/index-dom.d.ts +2 -49
- package/dist/index-dom.js +2 -1
- package/dist/index-html.d.ts +3 -2
- package/dist/index-html.js +2 -2
- package/dist/index-layout.d.ts +3 -77
- package/dist/index-layout.js +2 -2
- package/dist/index-runtime.d.ts +3 -141
- package/dist/index-runtime.js +2 -1
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -6
- package/dist/layout-Dp671N6q.js +2465 -0
- package/dist/layout-Dp671N6q.js.map +1 -0
- package/dist/newTreeBuilder-CvtLDjGj.d.ts +54 -0
- package/dist/newTreeBuilder-CvtLDjGj.d.ts.map +1 -0
- package/dist/toFsmStateConfig-DlJkyZni.js +135 -0
- package/dist/toFsmStateConfig-DlJkyZni.js.map +1 -0
- package/dist/toFsmStateConfig-DmOlTRjv.d.ts +15 -0
- package/dist/toFsmStateConfig-DmOlTRjv.d.ts.map +1 -0
- package/package.json +54 -28
- package/src/config/concatTransitionsToString.ts +4 -4
- package/src/config/index.ts +4 -4
- package/src/config/serializeProcessConfig.ts +3 -3
- package/src/config/splitTransitionString.ts +2 -4
- package/src/config/toFsmStateConfig.ts +5 -12
- package/src/dagre/acyclic.js +9 -10
- package/src/dagre/add-border-segments.js +11 -7
- package/src/dagre/coordinate-system.js +12 -12
- package/src/dagre/data/list.js +2 -2
- package/src/dagre/debug.d.ts +1 -1
- package/src/dagre/debug.js +11 -11
- package/src/dagre/greedy-fas.js +17 -21
- package/src/dagre/index.d.ts +4 -4
- package/src/dagre/index.js +4 -4
- package/src/dagre/layout.js +107 -96
- package/src/dagre/nesting-graph.js +13 -19
- package/src/dagre/normalize.js +7 -7
- package/src/dagre/order/add-subgraph-constraints.js +2 -2
- package/src/dagre/order/barycenter.d.ts +1 -1
- package/src/dagre/order/barycenter.js +4 -4
- package/src/dagre/order/build-layer-graph.d.ts +1 -1
- package/src/dagre/order/build-layer-graph.js +7 -9
- package/src/dagre/order/cross-count.js +14 -17
- package/src/dagre/order/index.js +19 -17
- package/src/dagre/order/init-order.js +5 -15
- package/src/dagre/order/resolve-conflicts.js +10 -14
- package/src/dagre/order/sort-subgraph.d.ts +1 -1
- package/src/dagre/order/sort-subgraph.js +13 -14
- package/src/dagre/order/sort.d.ts +1 -1
- package/src/dagre/order/sort.js +6 -10
- package/src/dagre/parent-dummy-chains.js +10 -4
- package/src/dagre/position/bk.d.ts +3 -3
- package/src/dagre/position/bk.js +84 -65
- package/src/dagre/position/index.js +7 -11
- package/src/dagre/rank/feasible-tree.d.ts +1 -1
- package/src/dagre/rank/feasible-tree.js +6 -6
- package/src/dagre/rank/index.js +6 -6
- package/src/dagre/rank/network-simplex.d.ts +0 -1
- package/src/dagre/rank/network-simplex.js +20 -25
- package/src/dagre/rank/util.js +2 -6
- package/src/dagre/util.d.ts +12 -6
- package/src/dagre/util.js +31 -37
- package/src/dom/buildSections.ts +15 -19
- package/src/dom/description-panels.ts +5 -7
- package/src/dom/getStatesDescriptions.ts +4 -10
- package/src/full/index.ts +1 -1
- package/src/full/toFsmStateCharts.ts +11 -11
- package/src/graphlib/alg/components.js +2 -2
- package/src/graphlib/alg/dfs.js +5 -5
- package/src/graphlib/alg/dijkstra-all.js +4 -4
- package/src/graphlib/alg/dijkstra.js +9 -12
- package/src/graphlib/alg/find-cycles.js +7 -5
- package/src/graphlib/alg/floyd-warshall.js +8 -11
- package/src/graphlib/alg/index.d.ts +11 -11
- package/src/graphlib/alg/index.js +11 -11
- package/src/graphlib/alg/is-acyclic.js +1 -1
- package/src/graphlib/alg/postorder.js +2 -2
- package/src/graphlib/alg/preorder.js +2 -2
- package/src/graphlib/alg/prim.d.ts +1 -1
- package/src/graphlib/alg/prim.js +5 -5
- package/src/graphlib/alg/tarjan.js +3 -3
- package/src/graphlib/alg/topsort.js +1 -1
- package/src/graphlib/data/priority-queue.js +8 -10
- package/src/graphlib/graph.js +53 -52
- package/src/graphlib/index.d.ts +2 -2
- package/src/graphlib/index.js +2 -2
- package/src/graphlib/json.d.ts +1 -1
- package/src/graphlib/json.js +6 -6
- package/src/html/buildStatechartCss.ts +2 -2
- package/src/html/buildStatechartStyles.ts +5 -15
- package/src/html/buildStatechartSvg.ts +8 -20
- package/src/html/buildStatechartsPanel.ts +3 -5
- package/src/html/index.ts +4 -4
- package/src/index-config.ts +2 -2
- package/src/index-dom.ts +1 -1
- package/src/index-html.ts +2 -2
- package/src/index-layout.ts +2 -2
- package/src/index-runtime.ts +2 -2
- package/src/index.ts +8 -8
- package/src/layout/buildCharts.ts +6 -7
- package/src/layout/buildFlatCharts.ts +17 -21
- package/src/layout/getGraphParamsProvider.ts +7 -19
- package/src/layout/getLabelDimensions.ts +5 -5
- package/src/layout/index.ts +5 -4
- package/src/lodash-es/index.ts +2 -2
- package/src/lodash-es/types.ts +37 -35
- package/src/runtime/RuntimeStatechartApi.ts +13 -46
- package/src/runtime/StateChartIndex.ts +7 -24
- package/src/runtime/index.ts +2 -2
- package/src/types/FsmStateConfig.ts +1 -1
- package/src/types/GraphParamsProvider.ts +3 -6
- package/src/types/Position.ts +1 -1
- package/src/types/StateChart.ts +2 -2
- package/src/types/StateGraphEdge.ts +2 -2
- package/src/types/StateGraphNode.ts +2 -2
- package/src/types/TransitionsGraph.ts +4 -4
- package/src/types/index.ts +11 -11
- package/src/utils/BasisCurve.ts +6 -15
- package/src/utils/domToText.ts +3 -7
- package/src/utils/getPadding.ts +2 -3
- package/src/utils/newId.ts +2 -1
- package/src/utils/newRegistry.ts +13 -13
- package/src/utils/serializeAttrs.ts +6 -14
- package/src/utils/serializeCss.ts +3 -7
- package/src/utils/serializeStyle.ts +2 -5
- package/src/utils/toKebabCase.ts +1 -4
- package/CHANGELOG.md +0 -1
- package/dist/StateChart-BYBjTmC2.d.ts +0 -82
- package/dist/chunk-36ZLXJVD.js +0 -606
- package/dist/chunk-AZBRQNTU.js +0 -2739
- package/dist/chunk-FIQDLBWD.js +0 -9
- package/dist/chunk-SVKVQY7B.js +0 -133
- package/dist/chunk-TZHCBZVP.js +0 -422
- package/dist/chunk-VILLJJJD.js +0 -231
- package/dist/index-html-DgSCNHkR.d.ts +0 -75
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Graph } from "../../graphlib/index.js";
|
|
2
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
3
3
|
|
|
4
4
|
export { buildLayerGraph };
|
|
5
5
|
|
|
@@ -37,11 +37,9 @@ function buildLayerGraph(g, rank, relationship) {
|
|
|
37
37
|
var root = createRootNode(g),
|
|
38
38
|
result = new Graph({ compound: true })
|
|
39
39
|
.setGraph({ root: root })
|
|
40
|
-
.setDefaultNodeLabel(
|
|
41
|
-
return g.node(v);
|
|
42
|
-
});
|
|
40
|
+
.setDefaultNodeLabel((v) => g.node(v));
|
|
43
41
|
|
|
44
|
-
_.forEach(g.nodes(),
|
|
42
|
+
_.forEach(g.nodes(), (v) => {
|
|
45
43
|
var node = g.node(v),
|
|
46
44
|
parent = g.parent(v);
|
|
47
45
|
|
|
@@ -50,14 +48,14 @@ function buildLayerGraph(g, rank, relationship) {
|
|
|
50
48
|
result.setParent(v, parent || root);
|
|
51
49
|
|
|
52
50
|
// This assumes we have only short edges!
|
|
53
|
-
_.forEach(g[relationship](v),
|
|
51
|
+
_.forEach(g[relationship](v), (e) => {
|
|
54
52
|
var u = e.v === v ? e.w : e.v,
|
|
55
53
|
edge = result.edge(u, v),
|
|
56
54
|
weight = !_.isUndefined(edge) ? edge.weight : 0;
|
|
57
55
|
result.setEdge(u, v, { weight: g.edge(e).weight + weight });
|
|
58
56
|
});
|
|
59
57
|
|
|
60
|
-
if (_.has(node,
|
|
58
|
+
if (_.has(node, "minRank")) {
|
|
61
59
|
result.setNode(v, {
|
|
62
60
|
borderLeft: node.borderLeft[rank],
|
|
63
61
|
borderRight: node.borderRight[rank],
|
|
@@ -71,6 +69,6 @@ function buildLayerGraph(g, rank, relationship) {
|
|
|
71
69
|
|
|
72
70
|
function createRootNode(g) {
|
|
73
71
|
var v;
|
|
74
|
-
while (g.hasNode((v = _.uniqueId(
|
|
72
|
+
while (g.hasNode((v = _.uniqueId("_root"))));
|
|
75
73
|
return v;
|
|
76
74
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ } from
|
|
1
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
2
2
|
|
|
3
3
|
export { crossCount };
|
|
4
4
|
|
|
@@ -32,19 +32,18 @@ function twoLayerCrossCount(g, northLayer, southLayer) {
|
|
|
32
32
|
// their head in the south layer.
|
|
33
33
|
var southPos = _.zipObject(
|
|
34
34
|
southLayer,
|
|
35
|
-
_.map(southLayer,
|
|
36
|
-
return i;
|
|
37
|
-
})
|
|
35
|
+
_.map(southLayer, (_v, i) => i),
|
|
38
36
|
);
|
|
39
37
|
var southEntries = _.flatten(
|
|
40
|
-
_.map(northLayer,
|
|
41
|
-
|
|
42
|
-
_.map(g.outEdges(v),
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
_.map(northLayer, (v) =>
|
|
39
|
+
_.sortBy(
|
|
40
|
+
_.map(g.outEdges(v), (e) => ({
|
|
41
|
+
pos: southPos[e.w],
|
|
42
|
+
weight: g.edge(e).weight,
|
|
43
|
+
})),
|
|
44
|
+
"pos",
|
|
45
|
+
),
|
|
46
|
+
),
|
|
48
47
|
);
|
|
49
48
|
|
|
50
49
|
// Build the accumulator tree
|
|
@@ -52,15 +51,13 @@ function twoLayerCrossCount(g, northLayer, southLayer) {
|
|
|
52
51
|
while (firstIndex < southLayer.length) firstIndex <<= 1;
|
|
53
52
|
var treeSize = 2 * firstIndex - 1;
|
|
54
53
|
firstIndex -= 1;
|
|
55
|
-
var tree = _.map(new Array(treeSize),
|
|
56
|
-
return 0;
|
|
57
|
-
});
|
|
54
|
+
var tree = _.map(new Array(treeSize), () => 0);
|
|
58
55
|
|
|
59
56
|
// Calculate the weighted crossings
|
|
60
57
|
var cc = 0;
|
|
61
58
|
_.forEach(
|
|
62
59
|
// @ts-expect-error
|
|
63
|
-
southEntries.forEach(
|
|
60
|
+
southEntries.forEach((entry) => {
|
|
64
61
|
var index = entry.pos + firstIndex;
|
|
65
62
|
tree[index] += entry.weight;
|
|
66
63
|
var weightSum = 0;
|
|
@@ -75,7 +72,7 @@ function twoLayerCrossCount(g, northLayer, southLayer) {
|
|
|
75
72
|
tree[index] += entry.weight;
|
|
76
73
|
}
|
|
77
74
|
cc += entry.weight * weightSum;
|
|
78
|
-
})
|
|
75
|
+
}),
|
|
79
76
|
);
|
|
80
77
|
|
|
81
78
|
return cc;
|
package/src/dagre/order/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import * as util from
|
|
4
|
-
import { addSubgraphConstraints } from
|
|
5
|
-
import { buildLayerGraph } from
|
|
6
|
-
import { crossCount } from
|
|
7
|
-
import { initOrder } from
|
|
8
|
-
import { sortSubgraph } from
|
|
1
|
+
import { Graph } from "../../graphlib/index.js";
|
|
2
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
3
|
+
import * as util from "../util.js";
|
|
4
|
+
import { addSubgraphConstraints } from "./add-subgraph-constraints.js";
|
|
5
|
+
import { buildLayerGraph } from "./build-layer-graph.js";
|
|
6
|
+
import { crossCount } from "./cross-count.js";
|
|
7
|
+
import { initOrder } from "./init-order.js";
|
|
8
|
+
import { sortSubgraph } from "./sort-subgraph.js";
|
|
9
9
|
|
|
10
10
|
export { order };
|
|
11
11
|
|
|
@@ -26,8 +26,12 @@ export { order };
|
|
|
26
26
|
*/
|
|
27
27
|
function order(g) {
|
|
28
28
|
var maxRank = util.maxRank(g),
|
|
29
|
-
downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1),
|
|
30
|
-
upLayerGraphs = buildLayerGraphs(
|
|
29
|
+
downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), "inEdges"),
|
|
30
|
+
upLayerGraphs = buildLayerGraphs(
|
|
31
|
+
g,
|
|
32
|
+
_.range(maxRank - 1, -1, -1),
|
|
33
|
+
"outEdges",
|
|
34
|
+
);
|
|
31
35
|
|
|
32
36
|
var layering = initOrder(g);
|
|
33
37
|
assignOrder(g, layering);
|
|
@@ -51,17 +55,15 @@ function order(g) {
|
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
function buildLayerGraphs(g, ranks, relationship) {
|
|
54
|
-
return _.map(ranks,
|
|
55
|
-
return buildLayerGraph(g, rank, relationship);
|
|
56
|
-
});
|
|
58
|
+
return _.map(ranks, (rank) => buildLayerGraph(g, rank, relationship));
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
function sweepLayerGraphs(layerGraphs, biasRight) {
|
|
60
62
|
var cg = new Graph();
|
|
61
|
-
_.forEach(layerGraphs,
|
|
63
|
+
_.forEach(layerGraphs, (lg) => {
|
|
62
64
|
var root = lg.graph().root;
|
|
63
65
|
var sorted = sortSubgraph(lg, root, cg, biasRight);
|
|
64
|
-
_.forEach(sorted.vs,
|
|
66
|
+
_.forEach(sorted.vs, (v, i) => {
|
|
65
67
|
lg.node(v).order = i;
|
|
66
68
|
});
|
|
67
69
|
addSubgraphConstraints(lg, cg, sorted.vs);
|
|
@@ -69,8 +71,8 @@ function sweepLayerGraphs(layerGraphs, biasRight) {
|
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
function assignOrder(g, layering) {
|
|
72
|
-
_.forEach(layering,
|
|
73
|
-
_.forEach(layer,
|
|
74
|
+
_.forEach(layering, (layer) => {
|
|
75
|
+
_.forEach(layer, (v, i) => {
|
|
74
76
|
g.node(v).order = i;
|
|
75
77
|
});
|
|
76
78
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ } from
|
|
1
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
2
2
|
|
|
3
3
|
export { initOrder };
|
|
4
4
|
|
|
@@ -15,17 +15,9 @@ export { initOrder };
|
|
|
15
15
|
*/
|
|
16
16
|
function initOrder(g) {
|
|
17
17
|
var visited = {};
|
|
18
|
-
var simpleNodes = _.filter(g.nodes(),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var maxRank = _.max(
|
|
22
|
-
_.map(simpleNodes, function (v) {
|
|
23
|
-
return g.node(v).rank;
|
|
24
|
-
})
|
|
25
|
-
);
|
|
26
|
-
var layers = _.map(_.range(maxRank + 1), function () {
|
|
27
|
-
return [];
|
|
28
|
-
});
|
|
18
|
+
var simpleNodes = _.filter(g.nodes(), (v) => !g.children(v).length);
|
|
19
|
+
var maxRank = _.max(_.map(simpleNodes, (v) => g.node(v).rank));
|
|
20
|
+
var layers = _.map(_.range(maxRank + 1), () => []);
|
|
29
21
|
|
|
30
22
|
function dfs(v) {
|
|
31
23
|
if (_.has(visited, v)) return;
|
|
@@ -35,9 +27,7 @@ function initOrder(g) {
|
|
|
35
27
|
_.forEach(g.successors(v), dfs);
|
|
36
28
|
}
|
|
37
29
|
|
|
38
|
-
var orderedVs = _.sortBy(simpleNodes,
|
|
39
|
-
return g.node(v).rank;
|
|
40
|
-
});
|
|
30
|
+
var orderedVs = _.sortBy(simpleNodes, (v) => g.node(v).rank);
|
|
41
31
|
_.forEach(orderedVs, dfs);
|
|
42
32
|
|
|
43
33
|
return layers;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ } from
|
|
1
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
2
2
|
|
|
3
3
|
export { resolveConflicts };
|
|
4
4
|
|
|
@@ -29,7 +29,7 @@ export { resolveConflicts };
|
|
|
29
29
|
*/
|
|
30
30
|
function resolveConflicts(entries, cg) {
|
|
31
31
|
var mappedEntries = {};
|
|
32
|
-
_.forEach(entries,
|
|
32
|
+
_.forEach(entries, (entry, i) => {
|
|
33
33
|
var tmp = (mappedEntries[entry.v] = {
|
|
34
34
|
indegree: 0,
|
|
35
35
|
in: [],
|
|
@@ -45,7 +45,7 @@ function resolveConflicts(entries, cg) {
|
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
_.forEach(cg.edges(),
|
|
48
|
+
_.forEach(cg.edges(), (e) => {
|
|
49
49
|
var entryV = mappedEntries[e.v];
|
|
50
50
|
var entryW = mappedEntries[e.w];
|
|
51
51
|
if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {
|
|
@@ -54,7 +54,7 @@ function resolveConflicts(entries, cg) {
|
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
-
var sourceSet = _.filter(mappedEntries,
|
|
57
|
+
var sourceSet = _.filter(mappedEntries, (entry) => {
|
|
58
58
|
// @ts-expect-error
|
|
59
59
|
return !entry.indegree;
|
|
60
60
|
});
|
|
@@ -66,7 +66,7 @@ function doResolveConflicts(sourceSet) {
|
|
|
66
66
|
var entries = [];
|
|
67
67
|
|
|
68
68
|
function handleIn(vEntry) {
|
|
69
|
-
return
|
|
69
|
+
return (uEntry) => {
|
|
70
70
|
if (uEntry.merged) {
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
@@ -81,8 +81,8 @@ function doResolveConflicts(sourceSet) {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
function handleOut(vEntry) {
|
|
84
|
-
return
|
|
85
|
-
wEntry
|
|
84
|
+
return (wEntry) => {
|
|
85
|
+
wEntry.in.push(vEntry);
|
|
86
86
|
if (--wEntry.indegree === 0) {
|
|
87
87
|
sourceSet.push(wEntry);
|
|
88
88
|
}
|
|
@@ -92,17 +92,13 @@ function doResolveConflicts(sourceSet) {
|
|
|
92
92
|
while (sourceSet.length) {
|
|
93
93
|
var entry = sourceSet.pop();
|
|
94
94
|
entries.push(entry);
|
|
95
|
-
_.forEach(entry
|
|
95
|
+
_.forEach(entry.in.reverse(), handleIn(entry));
|
|
96
96
|
_.forEach(entry.out, handleOut(entry));
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
return _.map(
|
|
100
|
-
_.filter(entries,
|
|
101
|
-
|
|
102
|
-
}),
|
|
103
|
-
function (entry) {
|
|
104
|
-
return _.pick(entry, ['vs', 'i', 'barycenter', 'weight']);
|
|
105
|
-
}
|
|
100
|
+
_.filter(entries, (entry) => !entry.merged),
|
|
101
|
+
(entry) => _.pick(entry, ["vs", "i", "barycenter", "weight"]),
|
|
106
102
|
);
|
|
107
103
|
}
|
|
108
104
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { _ } from
|
|
2
|
-
import { barycenter } from
|
|
3
|
-
import { resolveConflicts } from
|
|
4
|
-
import { sort } from
|
|
1
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
2
|
+
import { barycenter } from "./barycenter.js";
|
|
3
|
+
import { resolveConflicts } from "./resolve-conflicts.js";
|
|
4
|
+
import { sort } from "./sort.js";
|
|
5
5
|
|
|
6
6
|
export { sortSubgraph };
|
|
7
7
|
|
|
@@ -13,17 +13,15 @@ function sortSubgraph(g, v, cg, biasRight) {
|
|
|
13
13
|
var subgraphs = {};
|
|
14
14
|
|
|
15
15
|
if (bl) {
|
|
16
|
-
movable = _.filter(movable,
|
|
17
|
-
return w !== bl && w !== br;
|
|
18
|
-
});
|
|
16
|
+
movable = _.filter(movable, (w) => w !== bl && w !== br);
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
var barycenters = barycenter(g, movable);
|
|
22
|
-
_.forEach(barycenters,
|
|
20
|
+
_.forEach(barycenters, (entry) => {
|
|
23
21
|
if (g.children(entry.v).length) {
|
|
24
22
|
var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
|
|
25
23
|
subgraphs[entry.v] = subgraphResult;
|
|
26
|
-
if (_.has(subgraphResult,
|
|
24
|
+
if (_.has(subgraphResult, "barycenter")) {
|
|
27
25
|
mergeBarycenters(entry, subgraphResult);
|
|
28
26
|
}
|
|
29
27
|
}
|
|
@@ -39,12 +37,13 @@ function sortSubgraph(g, v, cg, biasRight) {
|
|
|
39
37
|
if (g.predecessors(bl).length) {
|
|
40
38
|
var blPred = g.node(g.predecessors(bl)[0]),
|
|
41
39
|
brPred = g.node(g.predecessors(br)[0]);
|
|
42
|
-
if (!_.has(result,
|
|
40
|
+
if (!_.has(result, "barycenter")) {
|
|
43
41
|
result.barycenter = 0;
|
|
44
42
|
result.weight = 0;
|
|
45
43
|
}
|
|
46
44
|
result.barycenter =
|
|
47
|
-
(result.barycenter * result.weight + blPred.order + brPred.order) /
|
|
45
|
+
(result.barycenter * result.weight + blPred.order + brPred.order) /
|
|
46
|
+
(result.weight + 2);
|
|
48
47
|
result.weight += 2;
|
|
49
48
|
}
|
|
50
49
|
}
|
|
@@ -53,14 +52,14 @@ function sortSubgraph(g, v, cg, biasRight) {
|
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
function expandSubgraphs(entries, subgraphs) {
|
|
56
|
-
_.forEach(entries,
|
|
55
|
+
_.forEach(entries, (entry) => {
|
|
57
56
|
entry.vs = _.flatten(
|
|
58
|
-
entry.vs.map(
|
|
57
|
+
entry.vs.map((v) => {
|
|
59
58
|
if (subgraphs[v]) {
|
|
60
59
|
return subgraphs[v].vs;
|
|
61
60
|
}
|
|
62
61
|
return v;
|
|
63
|
-
})
|
|
62
|
+
}),
|
|
64
63
|
);
|
|
65
64
|
});
|
|
66
65
|
}
|
package/src/dagre/order/sort.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import { _ } from
|
|
2
|
-
import * as util from
|
|
1
|
+
import { _ } from "../../lodash-es/index.ts";
|
|
2
|
+
import * as util from "../util.js";
|
|
3
3
|
|
|
4
4
|
export { sort };
|
|
5
5
|
|
|
6
6
|
function sort(entries, biasRight) {
|
|
7
|
-
var parts = util.partition(entries,
|
|
8
|
-
return _.has(entry, 'barycenter');
|
|
9
|
-
});
|
|
7
|
+
var parts = util.partition(entries, (entry) => _.has(entry, "barycenter"));
|
|
10
8
|
var sortable = parts.lhs,
|
|
11
|
-
unsortable = _.sortBy(parts.rhs,
|
|
12
|
-
return -entry.i;
|
|
13
|
-
}),
|
|
9
|
+
unsortable = _.sortBy(parts.rhs, (entry) => -entry.i),
|
|
14
10
|
vs = [],
|
|
15
11
|
sum = 0,
|
|
16
12
|
weight = 0,
|
|
@@ -20,7 +16,7 @@ function sort(entries, biasRight) {
|
|
|
20
16
|
|
|
21
17
|
vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
|
|
22
18
|
|
|
23
|
-
_.forEach(sortable,
|
|
19
|
+
_.forEach(sortable, (entry) => {
|
|
24
20
|
vsIndex += entry.vs.length;
|
|
25
21
|
vs.push(entry.vs);
|
|
26
22
|
sum += entry.barycenter * entry.weight;
|
|
@@ -47,7 +43,7 @@ function consumeUnsortable(vs, unsortable, index) {
|
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
function compareWithBias(bias) {
|
|
50
|
-
return
|
|
46
|
+
return (entryV, entryW) => {
|
|
51
47
|
if (entryV.barycenter < entryW.barycenter) {
|
|
52
48
|
return -1;
|
|
53
49
|
} else if (entryV.barycenter > entryW.barycenter) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { _ } from
|
|
1
|
+
import { _ } from "../lodash-es/index.ts";
|
|
2
2
|
|
|
3
3
|
export { parentDummyChains };
|
|
4
4
|
|
|
5
5
|
function parentDummyChains(g) {
|
|
6
6
|
var postorderNums = postorder(g);
|
|
7
7
|
|
|
8
|
-
_.forEach(g.graph().dummyChains,
|
|
8
|
+
_.forEach(g.graph().dummyChains, (v) => {
|
|
9
9
|
var node = g.node(v);
|
|
10
10
|
var edgeObj = node.edgeObj;
|
|
11
11
|
var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
|
|
@@ -19,7 +19,10 @@ function parentDummyChains(g) {
|
|
|
19
19
|
node = g.node(v);
|
|
20
20
|
|
|
21
21
|
if (ascending) {
|
|
22
|
-
while (
|
|
22
|
+
while (
|
|
23
|
+
(pathV = path[pathIdx]) !== lca &&
|
|
24
|
+
g.node(pathV).maxRank < node.rank
|
|
25
|
+
) {
|
|
23
26
|
pathIdx++;
|
|
24
27
|
}
|
|
25
28
|
|
|
@@ -59,7 +62,10 @@ function findPath(g, postorderNums, v, w) {
|
|
|
59
62
|
do {
|
|
60
63
|
parent = g.parent(parent);
|
|
61
64
|
vPath.push(parent);
|
|
62
|
-
} while (
|
|
65
|
+
} while (
|
|
66
|
+
parent &&
|
|
67
|
+
(postorderNums[parent].low > low || lim > postorderNums[parent].lim)
|
|
68
|
+
);
|
|
63
69
|
lca = parent;
|
|
64
70
|
|
|
65
71
|
// Traverse from w to LCA
|
|
@@ -9,7 +9,7 @@ export function verticalAlignment(
|
|
|
9
9
|
g: any,
|
|
10
10
|
layering: any,
|
|
11
11
|
conflicts: any,
|
|
12
|
-
neighborFn: any
|
|
12
|
+
neighborFn: any,
|
|
13
13
|
): {
|
|
14
14
|
root: {};
|
|
15
15
|
align: {};
|
|
@@ -19,13 +19,13 @@ export function horizontalCompaction(
|
|
|
19
19
|
layering: any,
|
|
20
20
|
root: any,
|
|
21
21
|
align: any,
|
|
22
|
-
reverseSep: any
|
|
22
|
+
reverseSep: any,
|
|
23
23
|
): {};
|
|
24
24
|
export function alignCoordinates(xss: any, alignTo: any): void;
|
|
25
25
|
export function findSmallestWidthAlignment(g: any, xss: any): any;
|
|
26
26
|
export function balance(
|
|
27
27
|
xss: any,
|
|
28
|
-
align: any
|
|
28
|
+
align: any,
|
|
29
29
|
): {
|
|
30
30
|
[x: string]: any;
|
|
31
31
|
};
|