@graphty/layout 1.2.7 → 1.2.9

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 (156) hide show
  1. package/README.md +1 -1
  2. package/dist/layout.d.ts +17 -0
  3. package/dist/layout.js +15 -14
  4. package/dist/layout.js.map +1 -1
  5. package/dist/src/algorithms/index.d.ts +5 -0
  6. package/dist/src/algorithms/index.js +6 -0
  7. package/dist/src/algorithms/index.js.map +1 -0
  8. package/dist/src/algorithms/optimization/index.d.ts +7 -0
  9. package/dist/src/algorithms/optimization/index.js +7 -0
  10. package/dist/src/algorithms/optimization/index.js.map +1 -0
  11. package/dist/src/algorithms/optimization/kamada-kawai-solver.d.ts +32 -0
  12. package/dist/src/algorithms/optimization/kamada-kawai-solver.js +176 -0
  13. package/dist/src/algorithms/optimization/kamada-kawai-solver.js.map +1 -0
  14. package/dist/src/algorithms/optimization/lbfgs.d.ts +13 -0
  15. package/dist/src/algorithms/optimization/lbfgs.js +56 -0
  16. package/dist/src/algorithms/optimization/lbfgs.js.map +1 -0
  17. package/dist/src/algorithms/optimization/line-search.d.ts +15 -0
  18. package/dist/src/algorithms/optimization/line-search.js +37 -0
  19. package/dist/src/algorithms/optimization/line-search.js.map +1 -0
  20. package/dist/src/algorithms/optimization/types.d.ts +5 -0
  21. package/dist/src/algorithms/optimization/types.js +5 -0
  22. package/dist/src/algorithms/optimization/types.js.map +1 -0
  23. package/dist/src/algorithms/planarity/check.d.ts +17 -0
  24. package/dist/src/algorithms/planarity/check.js +30 -0
  25. package/dist/src/algorithms/planarity/check.js.map +1 -0
  26. package/dist/src/algorithms/planarity/embedding.d.ts +29 -0
  27. package/dist/src/algorithms/planarity/embedding.js +182 -0
  28. package/dist/src/algorithms/planarity/embedding.js.map +1 -0
  29. package/dist/src/algorithms/planarity/index.d.ts +7 -0
  30. package/dist/src/algorithms/planarity/index.js +8 -0
  31. package/dist/src/algorithms/planarity/index.js.map +1 -0
  32. package/dist/src/algorithms/planarity/lr-test.d.ts +15 -0
  33. package/dist/src/algorithms/planarity/lr-test.js +54 -0
  34. package/dist/src/algorithms/planarity/lr-test.js.map +1 -0
  35. package/dist/src/algorithms/planarity/special-graphs.d.ts +28 -0
  36. package/dist/src/algorithms/planarity/special-graphs.js +108 -0
  37. package/dist/src/algorithms/planarity/special-graphs.js.map +1 -0
  38. package/dist/src/generators/basic.d.ts +28 -0
  39. package/dist/src/generators/basic.js +79 -0
  40. package/dist/src/generators/basic.js.map +1 -0
  41. package/dist/src/generators/bipartite.d.ts +16 -0
  42. package/dist/src/generators/bipartite.js +40 -0
  43. package/dist/src/generators/bipartite.js.map +1 -0
  44. package/dist/src/generators/grid.d.ts +11 -0
  45. package/dist/src/generators/grid.js +37 -0
  46. package/dist/src/generators/grid.js.map +1 -0
  47. package/dist/src/generators/index.d.ts +8 -0
  48. package/dist/src/generators/index.js +9 -0
  49. package/dist/src/generators/index.js.map +1 -0
  50. package/dist/src/generators/random.d.ts +12 -0
  51. package/dist/src/generators/random.js +34 -0
  52. package/dist/src/generators/random.js.map +1 -0
  53. package/dist/src/generators/scale-free.d.ts +12 -0
  54. package/dist/src/generators/scale-free.js +62 -0
  55. package/dist/src/generators/scale-free.js.map +1 -0
  56. package/dist/src/index.d.ts +10 -0
  57. package/dist/src/index.js +15 -0
  58. package/dist/src/index.js.map +1 -0
  59. package/dist/src/layouts/basic/index.d.ts +4 -0
  60. package/dist/src/layouts/basic/index.js +5 -0
  61. package/dist/src/layouts/basic/index.js.map +1 -0
  62. package/dist/src/layouts/basic/random.d.ts +14 -0
  63. package/dist/src/layouts/basic/random.js +27 -0
  64. package/dist/src/layouts/basic/random.js.map +1 -0
  65. package/dist/src/layouts/force-directed/arf.d.ts +13 -0
  66. package/dist/src/layouts/force-directed/arf.js +103 -0
  67. package/dist/src/layouts/force-directed/arf.js.map +1 -0
  68. package/dist/src/layouts/force-directed/forceatlas2.d.ts +22 -0
  69. package/dist/src/layouts/force-directed/forceatlas2.js +340 -0
  70. package/dist/src/layouts/force-directed/forceatlas2.js.map +1 -0
  71. package/dist/src/layouts/force-directed/fruchterman-reingold.d.ts +19 -0
  72. package/dist/src/layouts/force-directed/fruchterman-reingold.js +131 -0
  73. package/dist/src/layouts/force-directed/fruchterman-reingold.js.map +1 -0
  74. package/dist/src/layouts/force-directed/index.d.ts +8 -0
  75. package/dist/src/layouts/force-directed/index.js +9 -0
  76. package/dist/src/layouts/force-directed/index.js.map +1 -0
  77. package/dist/src/layouts/force-directed/kamada-kawai.d.ts +15 -0
  78. package/dist/src/layouts/force-directed/kamada-kawai.js +87 -0
  79. package/dist/src/layouts/force-directed/kamada-kawai.js.map +1 -0
  80. package/dist/src/layouts/force-directed/spring.d.ts +19 -0
  81. package/dist/src/layouts/force-directed/spring.js +23 -0
  82. package/dist/src/layouts/force-directed/spring.js.map +1 -0
  83. package/dist/src/layouts/geometric/circular.d.ts +14 -0
  84. package/dist/src/layouts/geometric/circular.js +67 -0
  85. package/dist/src/layouts/geometric/circular.js.map +1 -0
  86. package/dist/src/layouts/geometric/index.d.ts +6 -0
  87. package/dist/src/layouts/geometric/index.js +7 -0
  88. package/dist/src/layouts/geometric/index.js.map +1 -0
  89. package/dist/src/layouts/geometric/shell.d.ts +15 -0
  90. package/dist/src/layouts/geometric/shell.js +67 -0
  91. package/dist/src/layouts/geometric/shell.js.map +1 -0
  92. package/dist/src/layouts/geometric/spiral.d.ts +16 -0
  93. package/dist/src/layouts/geometric/spiral.js +73 -0
  94. package/dist/src/layouts/geometric/spiral.js.map +1 -0
  95. package/dist/src/layouts/hierarchical/bfs.d.ts +12 -0
  96. package/dist/src/layouts/hierarchical/bfs.js +62 -0
  97. package/dist/src/layouts/hierarchical/bfs.js.map +1 -0
  98. package/dist/src/layouts/hierarchical/bipartite.d.ts +16 -0
  99. package/dist/src/layouts/hierarchical/bipartite.js +72 -0
  100. package/dist/src/layouts/hierarchical/bipartite.js.map +1 -0
  101. package/dist/src/layouts/hierarchical/index.d.ts +6 -0
  102. package/dist/src/layouts/hierarchical/index.js +7 -0
  103. package/dist/src/layouts/hierarchical/index.js.map +1 -0
  104. package/dist/src/layouts/hierarchical/multipartite.d.ts +12 -0
  105. package/dist/src/layouts/hierarchical/multipartite.js +73 -0
  106. package/dist/src/layouts/hierarchical/multipartite.js.map +1 -0
  107. package/dist/src/layouts/index.d.ts +8 -0
  108. package/dist/src/layouts/index.js +9 -0
  109. package/dist/src/layouts/index.js.map +1 -0
  110. package/dist/src/layouts/specialized/index.d.ts +5 -0
  111. package/dist/src/layouts/specialized/index.js +6 -0
  112. package/dist/src/layouts/specialized/index.js.map +1 -0
  113. package/dist/src/layouts/specialized/planar.d.ts +15 -0
  114. package/dist/src/layouts/specialized/planar.js +48 -0
  115. package/dist/src/layouts/specialized/planar.js.map +1 -0
  116. package/dist/src/layouts/specialized/spectral.d.ts +14 -0
  117. package/dist/src/layouts/specialized/spectral.js +106 -0
  118. package/dist/src/layouts/specialized/spectral.js.map +1 -0
  119. package/dist/src/types/embedding.d.ts +9 -0
  120. package/dist/src/types/embedding.js +5 -0
  121. package/dist/src/types/embedding.js.map +1 -0
  122. package/dist/src/types/graph.d.ts +10 -0
  123. package/dist/src/types/graph.js +5 -0
  124. package/dist/src/types/graph.js.map +1 -0
  125. package/dist/src/types/index.d.ts +6 -0
  126. package/dist/src/types/index.js +7 -0
  127. package/dist/src/types/index.js.map +1 -0
  128. package/dist/src/types/layout.d.ts +6 -0
  129. package/dist/src/types/layout.js +5 -0
  130. package/dist/src/types/layout.js.map +1 -0
  131. package/dist/src/utils/graph.d.ts +34 -0
  132. package/dist/src/utils/graph.js +69 -0
  133. package/dist/src/utils/graph.js.map +1 -0
  134. package/dist/src/utils/index.d.ts +8 -0
  135. package/dist/src/utils/index.js +9 -0
  136. package/dist/src/utils/index.js.map +1 -0
  137. package/dist/src/utils/numpy.d.ts +17 -0
  138. package/dist/src/utils/numpy.js +101 -0
  139. package/dist/src/utils/numpy.js.map +1 -0
  140. package/dist/src/utils/params.d.ts +17 -0
  141. package/dist/src/utils/params.js +22 -0
  142. package/dist/src/utils/params.js.map +1 -0
  143. package/dist/src/utils/random.d.ts +14 -0
  144. package/dist/src/utils/random.js +42 -0
  145. package/dist/src/utils/random.js.map +1 -0
  146. package/dist/src/utils/rescale.d.ts +21 -0
  147. package/dist/src/utils/rescale.js +194 -0
  148. package/dist/src/utils/rescale.js.map +1 -0
  149. package/dist/vitest.config.d.ts +2 -0
  150. package/dist/vitest.config.js +30 -0
  151. package/dist/vitest.config.js.map +1 -0
  152. package/package.json +3 -3
  153. package/src/algorithms/planarity/check.ts +4 -3
  154. package/src/algorithms/planarity/embedding.ts +11 -6
  155. package/src/algorithms/planarity/lr-test.ts +4 -3
  156. package/src/layouts/specialized/planar.ts +4 -2
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Coverage Status](https://coveralls.io/repos/github/graphty-org/layout/badge.svg?branch=main)](https://coveralls.io/github/graphty-org/layout?branch=main)
5
5
  [![npm version](https://badge.fury.io/js/%40graphty%2Flayout.svg)](https://badge.fury.io/js/%40graphty%2Flayout)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
- [![GitHub Pages](https://img.shields.io/badge/demo-github%20pages-blue)](https://graphty-org.github.io/layout/examples/index.html)
7
+ [![Examples](https://img.shields.io/badge/demo-github%20pages-blue)](https://graphty-org.github.io/layout/examples/index.html)
8
8
 
9
9
  **[View Interactive Examples →](https://graphty-org.github.io/layout/examples/index.html)**
10
10
 
@@ -0,0 +1,17 @@
1
+ /**
2
+ * TypeScript declarations for @graphty/layout
3
+ *
4
+ * This file provides type information for the bundled dist/layout.js module.
5
+ */
6
+
7
+ // Re-export all types
8
+ export * from './src/types/index';
9
+
10
+ // Re-export utilities that are part of the public API
11
+ export { rescaleLayout, rescaleLayoutDict } from './src/utils/rescale';
12
+
13
+ // Re-export all layout algorithms
14
+ export * from './src/layouts/index';
15
+
16
+ // Re-export all graph generation functions
17
+ export * from './src/generators/index';
package/dist/layout.js CHANGED
@@ -1374,7 +1374,8 @@ function tryFindBipartitePartition(nodes, edges) {
1374
1374
  }
1375
1375
  return [part0, part1];
1376
1376
  }
1377
- function createTriangulationEmbedding(nodes, edges) {
1377
+ function createTriangulationEmbedding(nodes, edges, seed = null) {
1378
+ const rng = new RandomNumberGenerator(seed ?? void 0);
1378
1379
  const embedding = {
1379
1380
  nodeOrder: [...nodes],
1380
1381
  faceList: [],
@@ -1410,14 +1411,14 @@ function createTriangulationEmbedding(nodes, edges) {
1410
1411
  }
1411
1412
  }
1412
1413
  if (count > 0) {
1413
- const jitter = 0.1 * Math.random();
1414
+ const jitter = 0.1 * rng.rand();
1414
1415
  embedding.nodePositions[node] = [
1415
- xSum / count + jitter * (Math.random() - 0.5),
1416
- ySum / count + jitter * (Math.random() - 0.5)
1416
+ xSum / count + jitter * (rng.rand() - 0.5),
1417
+ ySum / count + jitter * (rng.rand() - 0.5)
1417
1418
  ];
1418
1419
  } else {
1419
- const r = 0.5 * Math.random();
1420
- const angle = 2 * Math.PI * Math.random();
1420
+ const r = 0.5 * rng.rand();
1421
+ const angle = 2 * Math.PI * rng.rand();
1421
1422
  embedding.nodePositions[node] = [r * Math.cos(angle), r * Math.sin(angle)];
1422
1423
  }
1423
1424
  }
@@ -1504,7 +1505,7 @@ function combinatorialEmbeddingToPos(embedding, nodes) {
1504
1505
  }
1505
1506
  return pos;
1506
1507
  }
1507
- function lrPlanarityTest(nodes, edges) {
1508
+ function lrPlanarityTest(nodes, edges, seed = null) {
1508
1509
  const adjList = {};
1509
1510
  for (const node of nodes) {
1510
1511
  adjList[node] = [];
@@ -1526,25 +1527,25 @@ function lrPlanarityTest(nodes, edges) {
1526
1527
  }
1527
1528
  dfs(nodes[0]);
1528
1529
  if (ordering.length < nodes.length) {
1529
- return { isPlanar: true, embedding: createTriangulationEmbedding(nodes, edges) };
1530
+ return { isPlanar: true, embedding: createTriangulationEmbedding(nodes, edges, seed) };
1530
1531
  }
1531
1532
  if (edges.length > 3 * nodes.length - 6) {
1532
1533
  return { isPlanar: false, embedding: null };
1533
1534
  }
1534
- const embedding = createTriangulationEmbedding(nodes, edges);
1535
+ const embedding = createTriangulationEmbedding(nodes, edges, seed);
1535
1536
  return { isPlanar: true, embedding };
1536
1537
  }
1537
- function checkPlanarity(G, nodes, edges) {
1538
+ function checkPlanarity(G, nodes, edges, seed = null) {
1538
1539
  if (nodes.length <= 4) {
1539
- return { isPlanar: true, embedding: createTriangulationEmbedding(nodes, edges) };
1540
+ return { isPlanar: true, embedding: createTriangulationEmbedding(nodes, edges, seed) };
1540
1541
  }
1541
1542
  if (isK5(nodes, edges) || isK33(nodes, edges)) {
1542
1543
  return { isPlanar: false, embedding: null };
1543
1544
  }
1544
- const result = lrPlanarityTest(nodes, edges);
1545
+ const result = lrPlanarityTest(nodes, edges, seed);
1545
1546
  return result;
1546
1547
  }
1547
- function planarLayout(G, scale = 1, center = null, dim = 2) {
1548
+ function planarLayout(G, scale = 1, center = null, dim = 2, seed = null) {
1548
1549
  if (dim !== 2) {
1549
1550
  throw new Error("can only handle 2 dimensions");
1550
1551
  }
@@ -1559,7 +1560,7 @@ function planarLayout(G, scale = 1, center = null, dim = 2) {
1559
1560
  if (nodes.length === 0) {
1560
1561
  return {};
1561
1562
  }
1562
- const { isPlanar, embedding } = checkPlanarity(graph, nodes, edges);
1563
+ const { isPlanar, embedding } = checkPlanarity(graph, nodes, edges, seed);
1563
1564
  if (!isPlanar) {
1564
1565
  throw new Error("G is not planar.");
1565
1566
  }