@dagrejs/dagre 1.0.2 → 1.1.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.
Files changed (61) hide show
  1. package/README.md +0 -7
  2. package/dist/dagre.js +443 -445
  3. package/dist/dagre.min.js +52 -52
  4. package/index.d.ts +18 -3
  5. package/lib/acyclic.js +20 -28
  6. package/lib/add-border-segments.js +23 -15
  7. package/lib/coordinate-system.js +13 -23
  8. package/lib/data/list.js +40 -37
  9. package/lib/debug.js +31 -22
  10. package/lib/greedy-fas.js +60 -55
  11. package/lib/index.js +38 -0
  12. package/lib/layout.js +158 -155
  13. package/lib/nesting-graph.js +35 -40
  14. package/lib/normalize.js +34 -30
  15. package/lib/order/add-subgraph-constraints.js +9 -5
  16. package/lib/order/barycenter.js +17 -9
  17. package/lib/order/build-layer-graph.js +24 -18
  18. package/lib/order/cross-count.js +22 -19
  19. package/lib/order/index.js +37 -28
  20. package/lib/order/init-order.js +14 -13
  21. package/lib/order/resolve-conflicts.js +20 -30
  22. package/lib/order/sort-subgraph.js +25 -31
  23. package/lib/order/sort.js +18 -17
  24. package/lib/parent-dummy-chains.js +36 -38
  25. package/lib/position/bk.js +103 -145
  26. package/lib/position/index.js +14 -13
  27. package/lib/rank/feasible-tree.js +15 -18
  28. package/lib/rank/index.js +25 -15
  29. package/lib/rank/network-simplex.js +22 -43
  30. package/lib/rank/util.js +6 -12
  31. package/lib/util.js +69 -84
  32. package/lib/version.js +8 -1
  33. package/mjs-lib/acyclic.js +62 -0
  34. package/mjs-lib/add-border-segments.js +35 -0
  35. package/mjs-lib/coordinate-system.js +65 -0
  36. package/mjs-lib/data/list.js +56 -0
  37. package/mjs-lib/debug.js +30 -0
  38. package/mjs-lib/greedy-fas.js +125 -0
  39. package/mjs-lib/index.js +9 -0
  40. package/mjs-lib/layout.js +405 -0
  41. package/mjs-lib/nesting-graph.js +120 -0
  42. package/mjs-lib/normalize.js +84 -0
  43. package/mjs-lib/order/add-subgraph-constraints.js +49 -0
  44. package/mjs-lib/order/barycenter.js +24 -0
  45. package/mjs-lib/order/build-layer-graph.js +71 -0
  46. package/mjs-lib/order/cross-count.js +64 -0
  47. package/mjs-lib/order/index.js +70 -0
  48. package/mjs-lib/order/init-order.js +34 -0
  49. package/mjs-lib/order/resolve-conflicts.js +116 -0
  50. package/mjs-lib/order/sort-subgraph.js +71 -0
  51. package/mjs-lib/order/sort.js +54 -0
  52. package/mjs-lib/parent-dummy-chains.js +82 -0
  53. package/mjs-lib/position/bk.js +409 -0
  54. package/mjs-lib/position/index.js +30 -0
  55. package/mjs-lib/rank/feasible-tree.js +93 -0
  56. package/mjs-lib/rank/index.js +46 -0
  57. package/mjs-lib/rank/network-simplex.js +233 -0
  58. package/mjs-lib/rank/util.js +58 -0
  59. package/mjs-lib/util.js +305 -0
  60. package/mjs-lib/version.js +1 -0
  61. package/package.json +14 -3
@@ -1,57 +1,53 @@
1
- var barycenter = require("./barycenter");
2
- var resolveConflicts = require("./resolve-conflicts");
3
- var sort = require("./sort");
4
-
5
- module.exports = sortSubgraph;
1
+ "use strict";
6
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = sortSubgraph;
7
+ var _barycenter = _interopRequireDefault(require("./barycenter.js"));
8
+ var _resolveConflicts = _interopRequireDefault(require("./resolve-conflicts.js"));
9
+ var _sort = _interopRequireDefault(require("./sort.js"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
11
  function sortSubgraph(g, v, cg, biasRight) {
8
- var movable = g.children(v);
9
- var node = g.node(v);
10
- var bl = node ? node.borderLeft : undefined;
11
- var br = node ? node.borderRight: undefined;
12
- var subgraphs = {};
13
-
12
+ let movable = g.children(v);
13
+ let node = g.node(v);
14
+ let bl = node ? node.borderLeft : undefined;
15
+ let br = node ? node.borderRight : undefined;
16
+ let subgraphs = {};
14
17
  if (bl) {
15
18
  movable = movable.filter(w => w !== bl && w !== br);
16
19
  }
17
-
18
- var barycenters = barycenter(g, movable);
19
- barycenters.forEach(function(entry) {
20
+ let barycenters = (0, _barycenter.default)(g, movable);
21
+ barycenters.forEach(entry => {
20
22
  if (g.children(entry.v).length) {
21
- var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
23
+ let subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
22
24
  subgraphs[entry.v] = subgraphResult;
23
25
  if (subgraphResult.hasOwnProperty("barycenter")) {
24
26
  mergeBarycenters(entry, subgraphResult);
25
27
  }
26
28
  }
27
29
  });
28
-
29
- var entries = resolveConflicts(barycenters, cg);
30
+ let entries = (0, _resolveConflicts.default)(barycenters, cg);
30
31
  expandSubgraphs(entries, subgraphs);
31
-
32
- var result = sort(entries, biasRight);
33
-
32
+ let result = (0, _sort.default)(entries, biasRight);
34
33
  if (bl) {
35
34
  result.vs = [bl, result.vs, br].flat(true);
36
35
  if (g.predecessors(bl).length) {
37
- var blPred = g.node(g.predecessors(bl)[0]),
36
+ let blPred = g.node(g.predecessors(bl)[0]),
38
37
  brPred = g.node(g.predecessors(br)[0]);
39
38
  if (!result.hasOwnProperty("barycenter")) {
40
39
  result.barycenter = 0;
41
40
  result.weight = 0;
42
41
  }
43
- result.barycenter = (result.barycenter * result.weight +
44
- blPred.order + brPred.order) / (result.weight + 2);
42
+ result.barycenter = (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2);
45
43
  result.weight += 2;
46
44
  }
47
45
  }
48
-
49
46
  return result;
50
47
  }
51
-
52
48
  function expandSubgraphs(entries, subgraphs) {
53
- entries.forEach(function(entry) {
54
- entry.vs = entry.vs.flatMap(function(v) {
49
+ entries.forEach(entry => {
50
+ entry.vs = entry.vs.flatMap(v => {
55
51
  if (subgraphs[v]) {
56
52
  return subgraphs[v].vs;
57
53
  }
@@ -59,15 +55,13 @@ function expandSubgraphs(entries, subgraphs) {
59
55
  });
60
56
  });
61
57
  }
62
-
63
58
  function mergeBarycenters(target, other) {
64
59
  if (target.barycenter !== undefined) {
65
- target.barycenter = (target.barycenter * target.weight +
66
- other.barycenter * other.weight) /
67
- (target.weight + other.weight);
60
+ target.barycenter = (target.barycenter * target.weight + other.barycenter * other.weight) / (target.weight + other.weight);
68
61
  target.weight += other.weight;
69
62
  } else {
70
63
  target.barycenter = other.barycenter;
71
64
  target.weight = other.weight;
72
65
  }
73
66
  }
67
+ module.exports = exports.default;
package/lib/order/sort.js CHANGED
@@ -1,40 +1,42 @@
1
- var util = require("../util");
2
-
3
- module.exports = sort;
4
-
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = sort;
7
+ var util = _interopRequireWildcard(require("../util.js"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
5
10
  function sort(entries, biasRight) {
6
- var parts = util.partition(entries, function(entry) {
11
+ let parts = util.partition(entries, entry => {
7
12
  return entry.hasOwnProperty("barycenter");
8
13
  });
9
- var sortable = parts.lhs,
14
+ let sortable = parts.lhs,
10
15
  unsortable = parts.rhs.sort((a, b) => b.i - a.i),
11
16
  vs = [],
12
17
  sum = 0,
13
18
  weight = 0,
14
19
  vsIndex = 0;
15
-
16
20
  sortable.sort(compareWithBias(!!biasRight));
17
-
18
21
  vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
19
-
20
- sortable.forEach(function (entry) {
22
+ sortable.forEach(entry => {
21
23
  vsIndex += entry.vs.length;
22
24
  vs.push(entry.vs);
23
25
  sum += entry.barycenter * entry.weight;
24
26
  weight += entry.weight;
25
27
  vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
26
28
  });
27
-
28
- var result = { vs: vs.flat(true) };
29
+ let result = {
30
+ vs: vs.flat(true)
31
+ };
29
32
  if (weight) {
30
33
  result.barycenter = sum / weight;
31
34
  result.weight = weight;
32
35
  }
33
36
  return result;
34
37
  }
35
-
36
38
  function consumeUnsortable(vs, unsortable, index) {
37
- var last;
39
+ let last;
38
40
  while (unsortable.length && (last = unsortable[unsortable.length - 1]).i <= index) {
39
41
  unsortable.pop();
40
42
  vs.push(last.vs);
@@ -42,15 +44,14 @@ function consumeUnsortable(vs, unsortable, index) {
42
44
  }
43
45
  return index;
44
46
  }
45
-
46
47
  function compareWithBias(bias) {
47
- return function(entryV, entryW) {
48
+ return (entryV, entryW) => {
48
49
  if (entryV.barycenter < entryW.barycenter) {
49
50
  return -1;
50
51
  } else if (entryV.barycenter > entryW.barycenter) {
51
52
  return 1;
52
53
  }
53
-
54
54
  return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;
55
55
  };
56
56
  }
57
+ module.exports = exports.default;
@@ -1,40 +1,36 @@
1
- module.exports = parentDummyChains;
1
+ "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = parentDummyChains;
3
7
  function parentDummyChains(g) {
4
- var postorderNums = postorder(g);
5
-
6
- g.graph().dummyChains.forEach(function(v) {
7
- var node = g.node(v);
8
- var edgeObj = node.edgeObj;
9
- var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
10
- var path = pathData.path;
11
- var lca = pathData.lca;
12
- var pathIdx = 0;
13
- var pathV = path[pathIdx];
14
- var ascending = true;
15
-
8
+ let postorderNums = postorder(g);
9
+ g.graph().dummyChains.forEach(v => {
10
+ let node = g.node(v);
11
+ let edgeObj = node.edgeObj;
12
+ let pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
13
+ let path = pathData.path;
14
+ let lca = pathData.lca;
15
+ let pathIdx = 0;
16
+ let pathV = path[pathIdx];
17
+ let ascending = true;
16
18
  while (v !== edgeObj.w) {
17
19
  node = g.node(v);
18
-
19
20
  if (ascending) {
20
- while ((pathV = path[pathIdx]) !== lca &&
21
- g.node(pathV).maxRank < node.rank) {
21
+ while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) {
22
22
  pathIdx++;
23
23
  }
24
-
25
24
  if (pathV === lca) {
26
25
  ascending = false;
27
26
  }
28
27
  }
29
-
30
28
  if (!ascending) {
31
- while (pathIdx < path.length - 1 &&
32
- g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {
29
+ while (pathIdx < path.length - 1 && g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {
33
30
  pathIdx++;
34
31
  }
35
32
  pathV = path[pathIdx];
36
33
  }
37
-
38
34
  g.setParent(v, pathV);
39
35
  v = g.successors(v)[0];
40
36
  }
@@ -44,20 +40,19 @@ function parentDummyChains(g) {
44
40
  // Find a path from v to w through the lowest common ancestor (LCA). Return the
45
41
  // full path and the LCA.
46
42
  function findPath(g, postorderNums, v, w) {
47
- var vPath = [];
48
- var wPath = [];
49
- var low = Math.min(postorderNums[v].low, postorderNums[w].low);
50
- var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
51
- var parent;
52
- var lca;
43
+ let vPath = [];
44
+ let wPath = [];
45
+ let low = Math.min(postorderNums[v].low, postorderNums[w].low);
46
+ let lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
47
+ let parent;
48
+ let lca;
53
49
 
54
50
  // Traverse up from v to find the LCA
55
51
  parent = v;
56
52
  do {
57
53
  parent = g.parent(parent);
58
54
  vPath.push(parent);
59
- } while (parent &&
60
- (postorderNums[parent].low > low || lim > postorderNums[parent].lim));
55
+ } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim));
61
56
  lca = parent;
62
57
 
63
58
  // Traverse from w to LCA
@@ -65,20 +60,23 @@ function findPath(g, postorderNums, v, w) {
65
60
  while ((parent = g.parent(parent)) !== lca) {
66
61
  wPath.push(parent);
67
62
  }
68
-
69
- return { path: vPath.concat(wPath.reverse()), lca: lca };
63
+ return {
64
+ path: vPath.concat(wPath.reverse()),
65
+ lca: lca
66
+ };
70
67
  }
71
-
72
68
  function postorder(g) {
73
- var result = {};
74
- var lim = 0;
75
-
69
+ let result = {};
70
+ let lim = 0;
76
71
  function dfs(v) {
77
- var low = lim;
72
+ let low = lim;
78
73
  g.children(v).forEach(dfs);
79
- result[v] = { low: low, lim: lim++ };
74
+ result[v] = {
75
+ low: low,
76
+ lim: lim++
77
+ };
80
78
  }
81
79
  g.children().forEach(dfs);
82
-
83
80
  return result;
84
81
  }
82
+ module.exports = exports.default;