@knowvah/dot-engine 2.6.12 → 2.7.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.
Files changed (198) hide show
  1. package/README.md +1 -1
  2. package/dist/api.js +18 -4
  3. package/dist/api.js.map +3 -3
  4. package/dist/common/attr-get.d.ts +30 -0
  5. package/dist/common/attr-get.d.ts.map +1 -0
  6. package/dist/common/htmltable-emit-fill.d.ts +20 -2
  7. package/dist/common/htmltable-emit-fill.d.ts.map +1 -1
  8. package/dist/common/htmltable-emit.d.ts.map +1 -1
  9. package/dist/common/htmltable-lex-expat.d.ts.map +1 -1
  10. package/dist/common/htmltable-pos-runs.d.ts +7 -4
  11. package/dist/common/htmltable-pos-runs.d.ts.map +1 -1
  12. package/dist/common/htmltable.d.ts.map +1 -1
  13. package/dist/common/libm-trig.d.ts +5 -0
  14. package/dist/common/libm-trig.d.ts.map +1 -0
  15. package/dist/common/make-label.d.ts.map +1 -1
  16. package/dist/common/multicolor.d.ts +21 -13
  17. package/dist/common/multicolor.d.ts.map +1 -1
  18. package/dist/common/poly-gencode.d.ts +1 -2
  19. package/dist/common/poly-gencode.d.ts.map +1 -1
  20. package/dist/common/poly-init.d.ts +2 -12
  21. package/dist/common/poly-init.d.ts.map +1 -1
  22. package/dist/common/splines-clip.d.ts +7 -0
  23. package/dist/common/splines-clip.d.ts.map +1 -1
  24. package/dist/gvc/context.d.ts +6 -0
  25. package/dist/gvc/context.d.ts.map +1 -1
  26. package/dist/gvc/device-cluster.d.ts +15 -0
  27. package/dist/gvc/device-cluster.d.ts.map +1 -1
  28. package/dist/gvc/device.d.ts.map +1 -1
  29. package/dist/gvc/first-layer.d.ts +9 -0
  30. package/dist/gvc/first-layer.d.ts.map +1 -0
  31. package/dist/gvc/gvrender-set-style.d.ts +28 -0
  32. package/dist/gvc/gvrender-set-style.d.ts.map +1 -0
  33. package/dist/gvc/usershape.d.ts +18 -0
  34. package/dist/gvc/usershape.d.ts.map +1 -1
  35. package/dist/index.js +2478 -912
  36. package/dist/index.js.map +4 -4
  37. package/dist/layout/dot/compound.d.ts.map +1 -1
  38. package/dist/layout/dot/edge-route-clip.d.ts +14 -4
  39. package/dist/layout/dot/edge-route-clip.d.ts.map +1 -1
  40. package/dist/layout/dot/edge-route-routing.d.ts.map +1 -1
  41. package/dist/layout/dot/graph-label.d.ts.map +1 -1
  42. package/dist/layout/neato/__fixtures__/dijkstra-f.d.ts +11 -0
  43. package/dist/layout/neato/__fixtures__/dijkstra-f.d.ts.map +1 -0
  44. package/dist/layout/neato/__fixtures__/hier-imds.d.ts +36 -0
  45. package/dist/layout/neato/__fixtures__/hier-imds.d.ts.map +1 -0
  46. package/dist/layout/neato/__fixtures__/hier-majorization.d.ts +32 -0
  47. package/dist/layout/neato/__fixtures__/hier-majorization.d.ts.map +1 -0
  48. package/dist/layout/neato/cdt-surface.d.ts.map +1 -1
  49. package/dist/layout/neato/compute-hierarchy.d.ts +24 -0
  50. package/dist/layout/neato/compute-hierarchy.d.ts.map +1 -0
  51. package/dist/layout/neato/conjgrad-mkernel.d.ts +20 -0
  52. package/dist/layout/neato/conjgrad-mkernel.d.ts.map +1 -0
  53. package/dist/layout/neato/conjgrad.d.ts +19 -0
  54. package/dist/layout/neato/conjgrad.d.ts.map +1 -1
  55. package/dist/layout/neato/constrained-majorization.d.ts +26 -0
  56. package/dist/layout/neato/constrained-majorization.d.ts.map +1 -0
  57. package/dist/layout/neato/dijkstra.d.ts +33 -16
  58. package/dist/layout/neato/dijkstra.d.ts.map +1 -1
  59. package/dist/layout/neato/gts-triangle.d.ts +14 -0
  60. package/dist/layout/neato/gts-triangle.d.ts.map +1 -0
  61. package/dist/layout/neato/init.d.ts +2 -12
  62. package/dist/layout/neato/init.d.ts.map +1 -1
  63. package/dist/layout/neato/kkutils.d.ts +20 -0
  64. package/dist/layout/neato/kkutils.d.ts.map +1 -0
  65. package/dist/layout/neato/make-graph-data.d.ts +43 -0
  66. package/dist/layout/neato/make-graph-data.d.ts.map +1 -0
  67. package/dist/layout/neato/matrix-ops.d.ts +46 -0
  68. package/dist/layout/neato/matrix-ops.d.ts.map +1 -1
  69. package/dist/layout/neato/opt-arrangement.d.ts +20 -0
  70. package/dist/layout/neato/opt-arrangement.d.ts.map +1 -0
  71. package/dist/layout/neato/quad-prog-solve.d.ts +44 -0
  72. package/dist/layout/neato/quad-prog-solve.d.ts.map +1 -0
  73. package/dist/layout/neato/smart-ini-x.d.ts +9 -0
  74. package/dist/layout/neato/smart-ini-x.d.ts.map +1 -0
  75. package/dist/layout/neato/splines.d.ts +1 -1
  76. package/dist/layout/neato/splines.d.ts.map +1 -1
  77. package/dist/layout/neato/start.d.ts +4 -1
  78. package/dist/layout/neato/start.d.ts.map +1 -1
  79. package/dist/layout/neato/stress.d.ts +8 -0
  80. package/dist/layout/neato/stress.d.ts.map +1 -1
  81. package/dist/model/edge.d.ts +1 -1
  82. package/dist/model/edge.d.ts.map +1 -1
  83. package/dist/model/lazy-attrs.d.ts +10 -0
  84. package/dist/model/lazy-attrs.d.ts.map +1 -0
  85. package/dist/model/node.d.ts +1 -1
  86. package/dist/model/node.d.ts.map +1 -1
  87. package/dist/ortho/index.d.ts.map +1 -1
  88. package/dist/render/dot/edge-draw.d.ts +1 -1
  89. package/dist/render/dot/edge-draw.d.ts.map +1 -1
  90. package/dist/render/svg-multicolor.d.ts +2 -2
  91. package/dist/render/svg-multicolor.d.ts.map +1 -1
  92. package/dist/render.js +2358 -792
  93. package/dist/render.js.map +4 -4
  94. package/package.json +1 -1
  95. package/src/common/attr-get.ts +46 -0
  96. package/src/common/graph-init.ts +1 -1
  97. package/src/common/htmltable-emit-fill.ts +56 -11
  98. package/src/common/htmltable-emit.ts +4 -3
  99. package/src/common/htmltable-lex-expat.ts +21 -3
  100. package/src/common/htmltable-pos-runs.ts +11 -6
  101. package/src/common/htmltable.ts +28 -116
  102. package/src/common/libm-trig.ts +43 -0
  103. package/src/common/make-label.ts +14 -2
  104. package/src/common/multicolor.ts +88 -24
  105. package/src/common/poly-gencode.ts +16 -8
  106. package/src/common/poly-init.ts +23 -19
  107. package/src/common/postproc.ts +2 -2
  108. package/src/common/splines-clip.ts +15 -12
  109. package/src/common/splines-routespl.ts +2 -2
  110. package/src/common/textmeasure-lookup.ts +1 -1
  111. package/src/gvc/context.ts +8 -0
  112. package/src/gvc/device-cluster.ts +63 -8
  113. package/src/gvc/device.ts +16 -2
  114. package/src/gvc/first-layer.ts +26 -0
  115. package/src/gvc/gvrender-set-style.ts +114 -0
  116. package/src/gvc/usershape.ts +26 -0
  117. package/src/layout/dot/cluster.ts +1 -1
  118. package/src/layout/dot/compound.ts +3 -4
  119. package/src/layout/dot/conc.ts +1 -1
  120. package/src/layout/dot/edge-route-clip.ts +19 -7
  121. package/src/layout/dot/edge-route-routing.ts +11 -3
  122. package/src/layout/dot/fastgr.ts +2 -2
  123. package/src/layout/dot/graph-label.ts +1 -15
  124. package/src/layout/neato/__fixtures__/dijkstra-f.ts +17 -0
  125. package/src/layout/neato/__fixtures__/hier/c1554.gv +33 -0
  126. package/src/layout/neato/__fixtures__/hier/c1554.plain +26 -0
  127. package/src/layout/neato/__fixtures__/hier/c1554.xdot +161 -0
  128. package/src/layout/neato/__fixtures__/hier/cases/cycle.gv +1 -0
  129. package/src/layout/neato/__fixtures__/hier/cases/cycle.plain +10 -0
  130. package/src/layout/neato/__fixtures__/hier/cases/cycle.stderr +0 -0
  131. package/src/layout/neato/__fixtures__/hier/cases/dirnone.gv +1 -0
  132. package/src/layout/neato/__fixtures__/hier/cases/dirnone.plain +11 -0
  133. package/src/layout/neato/__fixtures__/hier/cases/dirnone.stderr +0 -0
  134. package/src/layout/neato/__fixtures__/hier/cases/epsilon.gv +1 -0
  135. package/src/layout/neato/__fixtures__/hier/cases/epsilon.plain +13 -0
  136. package/src/layout/neato/__fixtures__/hier/cases/epsilon.stderr +0 -0
  137. package/src/layout/neato/__fixtures__/hier/cases/levelsgap.gv +1 -0
  138. package/src/layout/neato/__fixtures__/hier/cases/levelsgap.plain +8 -0
  139. package/src/layout/neato/__fixtures__/hier/cases/levelsgap.stderr +0 -0
  140. package/src/layout/neato/__fixtures__/hier/cases/mds.gv +1 -0
  141. package/src/layout/neato/__fixtures__/hier/cases/mds.plain +10 -0
  142. package/src/layout/neato/__fixtures__/hier/cases/mds.stderr +0 -0
  143. package/src/layout/neato/__fixtures__/hier/cases/multiedge.gv +1 -0
  144. package/src/layout/neato/__fixtures__/hier/cases/multiedge.plain +10 -0
  145. package/src/layout/neato/__fixtures__/hier/cases/multiedge.stderr +0 -0
  146. package/src/layout/neato/__fixtures__/hier/cases/neglevelsgap.gv +1 -0
  147. package/src/layout/neato/__fixtures__/hier/cases/neglevelsgap.plain +8 -0
  148. package/src/layout/neato/__fixtures__/hier/cases/neglevelsgap.stderr +0 -0
  149. package/src/layout/neato/__fixtures__/hier/cases/startrandom.gv +1 -0
  150. package/src/layout/neato/__fixtures__/hier/cases/startrandom.plain +10 -0
  151. package/src/layout/neato/__fixtures__/hier/cases/startrandom.stderr +0 -0
  152. package/src/layout/neato/__fixtures__/hier/cases/startregular.gv +1 -0
  153. package/src/layout/neato/__fixtures__/hier/cases/startregular.plain +10 -0
  154. package/src/layout/neato/__fixtures__/hier/cases/startregular.stderr +0 -0
  155. package/src/layout/neato/__fixtures__/hier/cases/tdist.gv +1 -0
  156. package/src/layout/neato/__fixtures__/hier/cases/tdist.plain +13 -0
  157. package/src/layout/neato/__fixtures__/hier/cases/tdist.stderr +0 -0
  158. package/src/layout/neato/__fixtures__/hier/cases/undirected.gv +1 -0
  159. package/src/layout/neato/__fixtures__/hier/cases/undirected.plain +10 -0
  160. package/src/layout/neato/__fixtures__/hier/cases/undirected.stderr +0 -0
  161. package/src/layout/neato/__fixtures__/hier/hier-probe.gv +1 -0
  162. package/src/layout/neato/__fixtures__/hier/hier-probe.plain +16 -0
  163. package/src/layout/neato/__fixtures__/hier/hier-probe.xdot +62 -0
  164. package/src/layout/neato/__fixtures__/hier-imds.ts +151 -0
  165. package/src/layout/neato/__fixtures__/hier-majorization.ts +145 -0
  166. package/src/layout/neato/cdt-surface.ts +6 -16
  167. package/src/layout/neato/compute-hierarchy.ts +90 -0
  168. package/src/layout/neato/conjgrad-mkernel.ts +141 -0
  169. package/src/layout/neato/conjgrad.ts +208 -0
  170. package/src/layout/neato/constrained-majorization.ts +479 -0
  171. package/src/layout/neato/dijkstra.ts +218 -92
  172. package/src/layout/neato/edge-len.ts +2 -2
  173. package/src/layout/neato/fdp-adjust.ts +3 -3
  174. package/src/layout/neato/gts-triangle.ts +42 -0
  175. package/src/layout/neato/init.ts +57 -57
  176. package/src/layout/neato/kk.ts +2 -2
  177. package/src/layout/neato/kkutils.ts +96 -0
  178. package/src/layout/neato/make-graph-data.ts +166 -0
  179. package/src/layout/neato/matrix-ops.ts +138 -0
  180. package/src/layout/neato/opt-arrangement.ts +86 -0
  181. package/src/layout/neato/quad-prog-solve.ts +489 -0
  182. package/src/layout/neato/smart-ini-x.ts +503 -0
  183. package/src/layout/neato/splines.ts +4 -4
  184. package/src/layout/neato/start.ts +7 -6
  185. package/src/layout/neato/stress.ts +28 -0
  186. package/src/model/edge.ts +3 -2
  187. package/src/model/lazy-attrs.ts +36 -0
  188. package/src/model/node.ts +3 -2
  189. package/src/ortho/index.ts +2 -3
  190. package/src/parser/dot.js +1 -1
  191. package/src/parser/dot.pegjs +1 -1
  192. package/src/parser/index.ts +1 -1
  193. package/src/render/color-resolve.ts +2 -2
  194. package/src/render/dot/edge-draw.ts +6 -3
  195. package/src/render/dot.ts +1 -1
  196. package/src/render/svg-edge-split.ts +2 -2
  197. package/src/render/svg-multicolor.ts +4 -3
  198. package/src/render/svg-parallel-edge.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAUhD,OAAO,EACL,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EACxC,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAClD,gBAAgB,EAChB,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,GACpE,MAAM,oBAAoB,CAAC;AAM5B,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAOpE;AAED,qGAAqG;AACrG,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAIvD;AAMD,UAAU,SAAS;IAAG,CAAC,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AA4CzF,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAU7E;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAgB9D;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAG/E;AAMD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAYlE;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAgB9D;AAED,uBAAuB;AACvB,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAG/E;AAYD,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GACpC;IAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAMxC;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAGvD;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAMvD;AA0BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAU5E;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAK/C"}
1
+ {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAShD,OAAO,EACL,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EACxC,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAClD,gBAAgB,EAChB,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,GACpE,MAAM,oBAAoB,CAAC;AAM5B,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAOpE;AAED,qGAAqG;AACrG,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAIvD;AAMD,UAAU,SAAS;IAAG,CAAC,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AA4CzF,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAU7E;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAgB9D;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAG/E;AAMD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAYlE;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAgB9D;AAED,uBAAuB;AACvB,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAG/E;AAYD,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GACpC;IAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAMxC;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAGvD;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAMvD;AA0BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAU5E;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAK/C"}
@@ -85,12 +85,22 @@ export declare function makeBoxInsideFn(halfW: number, halfH: number, penwidth?:
85
85
  */
86
86
  export declare function makeEllipseInsideFn(rx: number, ry: number, penwidth?: number): (lx: number, ly: number) => boolean;
87
87
  /**
88
- * Clip path START to the tail arrowhead base (symmetric to arrowEndClip).
88
+ * Clip path START to the tail arrowhead base (the arrowEndClip counterpart).
89
89
  *
90
- * path4[0] = tail node boundary (inside arrowhead sphere); after clip,
91
- * path4[0] = arrowhead base (elen from tailTip).
90
+ * Ports the bezier part of lib/common/arrows.c:arrowStartClip (:313-339); the
91
+ * `spl->sflag/sp` bookkeeping and the `startp += 3` step live in the caller
92
+ * (compound.ts:arrowStartClipIdx). Line map (C -> here):
93
+ * :323-326 sp[0..2] = ps[startp+3..], sp[3] = spl->sp -> `sp` below
94
+ * :328 if (slen > 0) -> `elen > 0`
95
+ * :329-330 inside_context {p = &sp[3], r = &slen} -> `inside` (centre = tip)
96
+ * :331 bezier_clip(&ctx, inside, sp, false) -> bezierClipNode, right
97
+ * inside, in ABSOLUTE coordinates (centre 0,0), as C does
98
+ * :334-337 ps[startp..startp+3] = sp[3..0] -> returned array
99
+ * :281-283 inside(): DIST(p, a.p[0]) <= a.r[0] -> distFused <= elen
100
+ * path4[0] is the tip (spl->sp) at every call site, so elen <= 0 returns the
101
+ * same points.
92
102
  *
93
- * @see lib/common/arrows.c:arrowEndClip
103
+ * @see lib/common/arrows.c:arrowStartClip
94
104
  */
95
105
  export declare function tailArrowEndClip(path4: Point[], tailTip: Point, elen: number): Point[];
96
106
  //# sourceMappingURL=edge-route-clip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-route-clip.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-route-clip.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAWjD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,KAAK,EAAE,EACX,CAAC,EAAE,MAAM,GACR,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAK3B;AA2DD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,KAAK,EAAE,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,EAC7C,UAAU,EAAE,OAAO,GAClB,KAAK,EAAE,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAIpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EAAE,EACd,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,GACX,KAAK,EAAE,CAMT;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,IAAM,CAAC;AAExC;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,SAAuB,GAC9B,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAKrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,SAAuB,GAC9B,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAKrC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,KAAK,EACd,IAAI,EAAE,MAAM,GACX,KAAK,EAAE,CAIT"}
1
+ {"version":3,"file":"edge-route-clip.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-route-clip.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAWjD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,KAAK,EAAE,EACX,CAAC,EAAE,MAAM,GACR,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAK3B;AA2DD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,KAAK,EAAE,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,EAC7C,UAAU,EAAE,OAAO,GAClB,KAAK,EAAE,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAIpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EAAE,EACd,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,GACX,KAAK,EAAE,CAMT;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,IAAM,CAAC;AAExC;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,SAAuB,GAC9B,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAKrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,SAAuB,GAC9B,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAKrC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,KAAK,EACd,IAAI,EAAE,MAAM,GACX,KAAK,EAAE,CAMT"}
@@ -1 +1 @@
1
- {"version":3,"file":"edge-route-routing.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-route-routing.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACL,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAM/B,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;CACjB;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD;;;GAGG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAID,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,KAAK,CAAC,EAAE;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,GACnD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAA;CAAE,CAe3E;AAOD;;;GAGG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAuB,GAAG,MAAM,CAGtE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,GACX,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAOrC;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAuB,EAC/B,IAAI,GAAE,SAAqB,GAC1B;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CAexD;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,QAAQ,SAAuB,EAC/B,IAAI,CAAC,EAAE,SAAS,GACf,gBAAgB,CASlB;AAOD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,KAAK,KAAK,EAAE,GACjD,gBAAgB,CAalB"}
1
+ {"version":3,"file":"edge-route-routing.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-route-routing.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACL,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAM/B,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;CACjB;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD;;;GAGG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAID,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,KAAK,CAAC,EAAE;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,GACnD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAA;CAAE,CAe3E;AAOD;;;GAGG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAuB,GAAG,MAAM,CAGtE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,GACX,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAOrC;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,SAAuB,EAC/B,IAAI,GAAE,SAAqB,GAC1B;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CAuBxD;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,QAAQ,SAAuB,EAC/B,IAAI,CAAC,EAAE,SAAS,GACf,gBAAgB,CASlB;AAOD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,KAAK,KAAK,EAAE,GACjD,gBAAgB,CAalB"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-label.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/graph-label.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,6DAA6D;AAC7D,eAAO,MAAM,WAAW,QAAS,CAAC;AA8ClC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMnG;AAeD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAuBhF"}
1
+ {"version":3,"file":"graph-label.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/graph-label.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,6DAA6D;AAC7D,eAAO,MAAM,WAAW,QAAS,CAAC;AA+BlC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMnG;AAeD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAuBhF"}
@@ -0,0 +1,11 @@
1
+ export interface DijkstraFFixture {
2
+ n: number;
3
+ rows: {
4
+ edges: number[];
5
+ ewgts: number[];
6
+ }[];
7
+ /** expected[s][j] = float32 bits of dist(s -> j), as 8-digit hex */
8
+ expected: string[][];
9
+ }
10
+ export declare const DIJKSTRA_F_FIXTURES: Record<'g9' | 'r2' | 'r5', DijkstraFFixture>;
11
+ //# sourceMappingURL=dijkstra-f.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dijkstra-f.d.ts","sourceRoot":"","sources":["../../../../src/layout/neato/__fixtures__/dijkstra-f.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAC7C,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,gBAAgB,CAI5E,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Expected vectors for the T17 smart_ini_x tests, captured from a native
3
+ * clang -O3 -arch arm64 (-DDIGCOLA) harness linking lib/neatogen/{smart_ini_x,
4
+ * kkutils,dijkstra,bfs,matrix_ops,conjgrad}.c unmodified (graphviz 16.1.0),
5
+ * run once per case in a fresh process (libc rand() starts at its seed).
6
+ * Graphs follow neatoinit.c:makeGraphData adjacency (out edges, then in edges;
7
+ * duplicate endpoints merged with fmax of len).
8
+ */
9
+ import type { VtxData } from '../dijkstra.js';
10
+ /** One undirected-adjacency edge . */
11
+ export type HierEdge = readonly [number, number, number];
12
+ /** Names of the harness cases. */
13
+ export type ImdsCaseName = 'probe' | 'probe_nowgt' | 'probe_frac' | 'c1554' | 'disc' | 'dag32' | 'dag32_tight' | 'dag9' | 'dag17' | 'dag24';
14
+ /** Harness case: graph spec plus native results. */
15
+ export interface ImdsCase {
16
+ readonly edges: readonly HierEdge[];
17
+ readonly haveLen: boolean;
18
+ readonly haveDir: boolean;
19
+ /** Native compute_apsp matrix (row-major) or, for n > 7, its row sums. */
20
+ readonly D: readonly number[];
21
+ readonly n: number;
22
+ readonly tol: number;
23
+ readonly rv: number;
24
+ readonly input: readonly number[];
25
+ readonly x: readonly number[];
26
+ readonly y: readonly number[];
27
+ }
28
+ /**
29
+ * Mirror of neatoinit.c:makeGraphData's adjacency construction. is
30
+ * the empty array (C NULL) unless .
31
+ * @see lib/neatogen/neatoinit.c:makeGraphData
32
+ */
33
+ export declare function buildGraph(n: number, edges: readonly HierEdge[], haveLen: boolean, haveDir: boolean): VtxData[];
34
+ /** Native results per harness case (see file header). */
35
+ export declare const IMDS_CASES: Readonly<Record<ImdsCaseName, ImdsCase>>;
36
+ //# sourceMappingURL=hier-imds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hier-imds.d.ts","sourceRoot":"","sources":["../../../../src/layout/neato/__fixtures__/hier-imds.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,sCAAsC;AACtC,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzD,kCAAkC;AAClC,MAAM,MAAM,YAAY,GACpB,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GACnF,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/B,oDAAoD;AACpD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,EAAE,CAsBX;AAED,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAiF/D,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Expected layouts for the T22 stress_majorization_with_hierarchy tests, captured
3
+ * from a native clang -O3 -flto=thin -arch arm64 (-DDIGCOLA) harness that links the
4
+ * oracle's own lib/neatogen (graphviz 16.1.0) and calls the function with a fresh
5
+ * libc rand()/drand48() stream (srand(1), srand48(seed)). Graphs are neato vtx_data
6
+ * with haveDir (edists); `g40` is a seeded random DAG (40 nodes, 70 edges).
7
+ * Generated data: do not hand-edit.
8
+ */
9
+ /** One harness invocation and its native result. */
10
+ export interface MajorizationCase {
11
+ readonly name: string;
12
+ readonly graph: 'probe' | 'c1554' | 'rdag' | 'g40';
13
+ readonly dim: number;
14
+ readonly opts: number;
15
+ readonly maxi: number;
16
+ readonly levelsGap: number;
17
+ readonly epsilon: number;
18
+ /** `srand48` seed before the call. */
19
+ readonly seed: number;
20
+ /** Native return value (iterations). */
21
+ readonly rv: number;
22
+ /** Native `d_coords`, one array per axis. */
23
+ readonly coords: readonly (readonly number[])[];
24
+ }
25
+ /** `vtx_data` rows of the `g40` graph. */
26
+ export declare const G40_ROWS: readonly {
27
+ edges: number[];
28
+ ewgts: number[];
29
+ edists: number[];
30
+ }[];
31
+ export declare const MAJORIZATION_CASES: readonly MajorizationCase[];
32
+ //# sourceMappingURL=hier-majorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hier-majorization.d.ts","sourceRoot":"","sources":["../../../../src/layout/neato/__fixtures__/hier-majorization.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CACjD;AAED,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,EAAgjF,CAAC;AAEvoF,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAkHzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cdt-surface.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/cdt-surface.ts"],"names":[],"mappings":"AAuCA,mEAAmE;AACnE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA0lBD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GACjE,OAAO,GAAG,IAAI,CAwDhB"}
1
+ {"version":3,"file":"cdt-surface.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/cdt-surface.ts"],"names":[],"mappings":"AAwCA,mEAAmE;AACnE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAwlBD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GACjE,OAAO,GAAG,IAAI,CA+ChB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Partition graph nodes into levels by the minimizer of the hierarchy energy.
3
+ *
4
+ * @see lib/neatogen/compute_hierarchy.c
5
+ */
6
+ import type { VtxData } from './dijkstra.js';
7
+ /** Result of `compute_hierarchy` on success (C return value 0). */
8
+ export interface Hierarchy {
9
+ /** Node ids sorted by `y`; level `k` is `ordering[levels[k-1]..levels[k])`. */
10
+ ordering: Int32Array;
11
+ /** Start index (in `ordering`) of every level but the first; `[n]` when there is one level. */
12
+ levels: Int32Array;
13
+ /** C `*num_levelsp` (0 means a single level, `levels = [n]`). */
14
+ numLevels: number;
15
+ }
16
+ /**
17
+ * Order the nodes by `y` (computed by `computeYCoords` unless `given` is
18
+ * supplied) and cut a new level wherever consecutive values differ by more
19
+ * than `max(absTol, relTol * span / (n - 1))`. Returns `null` where C returns
20
+ * nonzero (`compute_y_coords` failed).
21
+ * @see lib/neatogen/compute_hierarchy.c:compute_hierarchy
22
+ */
23
+ export declare function computeHierarchy(graph: VtxData[], n: number, absTol: number, relTol: number, given: Float64Array | null): Hierarchy | null;
24
+ //# sourceMappingURL=compute-hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-hierarchy.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/compute-hierarchy.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,mEAAmE;AACnE,MAAM,WAAW,SAAS;IACxB,+EAA+E;IAC/E,QAAQ,EAAE,UAAU,CAAC;IACrB,+FAA+F;IAC/F,MAAM,EAAE,UAAU,CAAC;IACnB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;CACnB;AAsCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EAAE,EAChB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAAG,IAAI,GACzB,SAAS,GAAG,IAAI,CAkBlB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `result = packed_matrix * vector` for the packed upper triangle of a
3
+ * symmetric matrix: per row the first `16*floor(len/16)` products of the
4
+ * reduction are rounded before their adds, the rest fused; the scatter into
5
+ * `result[j]` is fused throughout.
6
+ * @see lib/neatogen/matrix_ops.c:right_mult_with_vector_ff
7
+ */
8
+ export declare function rightMultWithVectorFFFused(m: Float32Array, n: number, vector: Float32Array, result: Float32Array): void;
9
+ /** Options of {@link conjugateGradientMkernelFused} (C's trailing `tol`, `max_iterations`). */
10
+ export interface CgMkernelOptions {
11
+ tol: number;
12
+ maxIterations: number;
13
+ }
14
+ /**
15
+ * Solve `A*x = b` by conjugate gradients, `A` packed symmetric; `x` and `b` are
16
+ * centred. Returns 1 on an unexpected zero residual, else 0.
17
+ * @see lib/neatogen/conjgrad.c:conjugate_gradient_mkernel
18
+ */
19
+ export declare function conjugateGradientMkernelFused(A: Float32Array, x: Float32Array, b: Float32Array, n: number, o: CgMkernelOptions): number;
20
+ //# sourceMappingURL=conjgrad-mkernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conjgrad-mkernel.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/conjgrad-mkernel.ts"],"names":[],"mappings":"AA8BA;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GACrE,IAAI,CAeN;AAmBD,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAgDD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,GAChF,MAAM,CAQR"}
@@ -1,3 +1,4 @@
1
+ import type { VtxData } from './dijkstra.js';
1
2
  /**
2
3
  * Conjugate gradient solvers for packed symmetric float matrices.
3
4
  * @see lib/neatogen/conjgrad.c
@@ -57,5 +58,23 @@ export interface CgOptions {
57
58
  * @see lib/neatogen/conjgrad.c:conjugate_gradient_mkernel
58
59
  */
59
60
  export declare function conjugateGradientMkernel(A: Float32Array, x: Float32Array, b: Float32Array, n: number, opts: CgOptions): number;
61
+ /**
62
+ * Solve `A x = b` by conjugate gradients; `x` and `b` are orthogonalized
63
+ * against 1. Returns C's `rv` (1 on the zero-length-residual failure).
64
+ * @see lib/neatogen/conjgrad.c:conjugate_gradient
65
+ */
66
+ export declare function conjugateGradient(A: VtxData[], x: Float64Array, b: Float64Array, n: number, tol: number, maxIterations: number): number;
67
+ /** Stopping rule and centring of {@link conjugateGradientF} (C's trailing parameters). */
68
+ export interface CgfOptions {
69
+ tol: number;
70
+ maxIterations: number;
71
+ ortho1: boolean;
72
+ }
73
+ /**
74
+ * Solves A x = b for a float** matrix with double x, b (x, b centred when
75
+ * `ortho1`). Returns 0, or 1 after a zero-length residual (callers test `< 0`).
76
+ * @see lib/neatogen/conjgrad.c:conjugate_gradient_f
77
+ */
78
+ export declare function conjugateGradientF(A: readonly Float32Array[], x: Float64Array, b: Float64Array, n: number, opts: CgfOptions): number;
60
79
  export {};
61
80
  //# sourceMappingURL=conjgrad.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conjgrad.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/conjgrad.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAKzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,GACd,IAAI,CASN;AAED,uDAAuD;AACvD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAO1D;AAED,mDAAmD;AACnD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAIxE;AAED,iCAAiC;AACjC,UAAU,OAAO;IACf,CAAC,EAAE,YAAY,CAAC;IAChB,CAAC,EAAE,YAAY,CAAC;IAChB,EAAE,EAAE,YAAY,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,GACR,OAAO,CAST;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,GACZ,MAAM,CAWR;AAED,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,SAAS,GACd,MAAM,CASR"}
1
+ {"version":3,"file":"conjgrad.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/conjgrad.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAc7C;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAKzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,GACd,IAAI,CASN;AAED,uDAAuD;AACvD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAO1D;AAED,mDAAmD;AACnD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAIxE;AAED,iCAAiC;AACjC,UAAU,OAAO;IACf,CAAC,EAAE,YAAY,CAAC;IAChB,CAAC,EAAE,YAAY,CAAC;IAChB,EAAE,EAAE,YAAY,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,GACR,OAAO,CAST;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,GACZ,MAAM,CAWR;AAED,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,SAAS,GACd,MAAM,CASR;AAgED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EAAE,EACZ,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACpB,MAAM,CAkBR;AAoED,0FAA0F;AAC1F,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,SAAS,YAAY,EAAE,EAC1B,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,UAAU,GACf,MAAM,CAaR"}
@@ -0,0 +1,26 @@
1
+ import type { Node } from '../../model/node.js';
2
+ import type { DirectedVtxData } from './opt-arrangement.js';
3
+ /** The scalar parameters of `stress_majorization_with_hierarchy`. */
4
+ export interface HierarchyOpts {
5
+ /** Dimensionality of the layout. */
6
+ dim: number;
7
+ /** `opt_*` bits. */
8
+ opts: number;
9
+ /** `MODEL_*` (neato.h values). */
10
+ model: number;
11
+ /** Maximum number of iterations. */
12
+ maxi: number;
13
+ /** Minimum separation of consecutive levels (`levelsgap`). */
14
+ levelsGap: number;
15
+ /** The `Epsilon` global: convergence tolerance (`epsilon` attribute). */
16
+ epsilon: number;
17
+ }
18
+ /**
19
+ * Stress majorization of the layout under hierarchy constraints. Writes the
20
+ * layout to `dCoords` and returns the iteration count (C's return value; -1
21
+ * on failure). Graphs without directed edges, and layouts that find no
22
+ * hierarchy, go to the unconstrained stress majorization.
23
+ * @see lib/neatogen/constrained_majorization.c:stress_majorization_with_hierarchy
24
+ */
25
+ export declare function stressMajorizationWithHierarchy(graph: DirectedVtxData[], n: number, dCoords: Float64Array[], nodes: Node[], o: HierarchyOpts): number;
26
+ //# sourceMappingURL=constrained-majorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constrained-majorization.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/constrained-majorization.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAQhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA8B5D,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;CACjB;AAuXD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,aAAa,GAC5F,MAAM,CAyBR"}
@@ -25,24 +25,41 @@ export interface TermSgd {
25
25
  d: number;
26
26
  w: number;
27
27
  }
28
- /** Push vertex index `idx` into the heap. @internal */
29
- export declare function heapPush(heap: number[], dist: Float32Array, idx: number): void;
30
- /** Sift the root down to restore heap order after replacing it. @internal */
31
- export declare function heapSiftDown(heap: number[], dist: Float32Array): void;
32
- /** Pop and return the vertex with minimum distance. @internal */
33
- export declare function heapPop(heap: number[], dist: Float32Array): number;
34
- /** Build a min-heap from all nodes except `src`. @internal */
35
- export declare function heapBuildExcluding(src: number, n: number, dist: Float32Array): number[];
36
- /** Initialise dist array from source edges. @internal */
37
- export declare function dijkstraInitDist(src: number, graph: VtxData[], n: number, dist: Float32Array): void;
38
- /** Relax all outgoing edges of `closest`. @internal */
39
- export declare function dijkstraRelax(closest: number, closestDist: number, graph: VtxData[], dist: Float32Array, heap: number[]): void;
28
+ /** C `FLT_MAX`: the "unreachable" distance of dijkstra_f. */
29
+ export declare const FLT_MAX = 3.4028234663852886e+38;
40
30
  /**
41
- * Single-source shortest paths (weighted) from `src`.
42
- * Populates `dist` with Float32 distances; unreachable nodes get Infinity.
43
- * Equivalent to `dijkstra_f` in lib/neatogen/dijkstra.c.
31
+ * Weighted single-source shortest paths from `vertex`; assumes a connected
32
+ * graph, unreachable vertices keep `FLT_MAX`. All arithmetic is C `float`.
44
33
  *
45
34
  * @see lib/neatogen/dijkstra.c:dijkstra_f
46
35
  */
47
- export declare function dijkstra(src: number, graph: VtxData[], n: number, dist: Float32Array): void;
36
+ export declare function dijkstra(vertex: number, graph: VtxData[], n: number, dist: Float32Array): void;
37
+ /** C `(DistType)INT_MAX`. @see lib/neatogen/dijkstra.c:MAX_DIST */
38
+ export declare const MAX_DIST = 2147483647;
39
+ /**
40
+ * The heap of dijkstra.c: `data[i] = vertexNum <=> index[vertexNum] = i`, with
41
+ * the 0-rooted `left = 2i`, `right = 2i + 1`, `parent = i / 2` numbering.
42
+ * @see lib/neatogen/dijkstra.c:heap
43
+ */
44
+ export interface NgHeap {
45
+ data: number[];
46
+ heapSize: number;
47
+ index: Int32Array;
48
+ }
49
+ /** @see lib/neatogen/dijkstra.c:initHeap */
50
+ export declare function ngInitHeap(startVertex: number, dist: Int32Array, n: number): NgHeap;
51
+ /**
52
+ * Pops the closest vertex; returns -1 (C `false`) when the heap is empty.
53
+ * @see lib/neatogen/dijkstra.c:extractMax
54
+ */
55
+ export declare function ngExtractMax(h: NgHeap, dist: Int32Array): number;
56
+ /** @see lib/neatogen/dijkstra.c:increaseKey */
57
+ export declare function ngIncreaseKey(h: NgHeap, increasedVertex: number, newDist: number, dist: Int32Array): void;
58
+ /**
59
+ * Single-source shortest paths on the int-truncated edge weights `ewgts`;
60
+ * unreachable vertices get `prevClosestDist + 10` (INT_MAX when that would
61
+ * overflow).
62
+ * @see lib/neatogen/dijkstra.c:ngdijkstra
63
+ */
64
+ export declare function ngdijkstra(vertex: number, graph: VtxData[], n: number, dist: Int32Array): void;
48
65
  //# sourceMappingURL=dijkstra.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dijkstra.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/dijkstra.ts"],"names":[],"mappings":"AACA,mCAAmC;AAEnC;;;;;;;;;GASG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAMD,uDAAuD;AACvD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,GACV,IAAI,CAWN;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAcrE;AAED,iEAAiE;AACjE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAOlE;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CAMV;AAMD,yDAAyD;AACzD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EAAE,EAChB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,YAAY,GACjB,IAAI,CAKN;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EAAE,GACb,IAAI,CAUN;AAMD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EAAE,EAChB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,YAAY,GACjB,IAAI,CASN"}
1
+ {"version":3,"file":"dijkstra.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/dijkstra.ts"],"names":[],"mappings":"AACA,mCAAmC;AAEnC;;;;;;;;;GASG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAOD,6DAA6D;AAC7D,eAAO,MAAM,OAAO,yBAAwB,CAAC;AAqE7C;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EAAE,EAChB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,YAAY,GACjB,IAAI,CAeN;AAMD,mEAAmE;AACnE,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACnB;AAgDD,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBnF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAQhE;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAC3B,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GACpE,IAAI,CAUN;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAuB9F"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * GTS's enclosing triangle, split from cdt-surface.ts to mirror the GTS source
3
+ * file it ports (the oracle links libgts 0.7.6 for neato's constrained
4
+ * Delaunay triangulation).
5
+ * @see gts-0.7.6 src/triangle.c
6
+ */
7
+ /**
8
+ * Vertices of the triangle enclosing points (px[0..n), py[0..n)). The oracle's
9
+ * libgts (arm64) fuses r*SQRT3 + xo, r*2 + yo, xo - r*SQRT3 and
10
+ * dx*dx + dy*dy (fmadd/fmsub in _gts_triangle_enclosing), so those are fma.
11
+ * @see gts-0.7.6 src/triangle.c:gts_triangle_enclosing
12
+ */
13
+ export declare function gtsTriangleEnclosing(px: number[], py: number[], n: number, scale: number): [[number, number], [number, number], [number, number]];
14
+ //# sourceMappingURL=gts-triangle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gts-triangle.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/gts-triangle.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAOH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GACnD,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAoBxD"}
@@ -12,7 +12,8 @@ import type { Node } from '../../model/node.js';
12
12
  import type { Edge } from '../../model/edge.js';
13
13
  import type { VtxData } from './dijkstra.js';
14
14
  import { checkStart } from './start.js';
15
- export { checkStart };
15
+ import { makeGraphDataC, graphHasLen } from './make-graph-data.js';
16
+ export { makeGraphDataC, graphHasLen, checkStart };
16
17
  /** Kamada-Kawai energy minimization. @see lib/neatogen/neatoprocs.h */
17
18
  export declare const MODE_KK = 0;
18
19
  /** Stress majorization (default). @see lib/neatogen/neatoprocs.h */
@@ -143,17 +144,6 @@ export declare function mapModelToStress(model: number): number;
143
144
  export declare function neatoMaxIter(maxiter: string | undefined, mode: number, n: number): number;
144
145
  /** Run stress majorization and write positions back. @see lib/neatogen/neatoinit.c:majorization */
145
146
  export declare function runMajorization(g: Graph, mode: number, model: number): void;
146
- /** Any edge carries a len attr (C: agattr_text(g, AGEDGE, "len")). */
147
- export declare function graphHasLen(g: Graph): boolean;
148
- /**
149
- * C makeGraphData's vtx_data: per node out-edges then in-edges (agfstedge order), self at
150
- * index 0, duplicate neighbours merged (len keeps the max). ewgts: lens (default 1.0) if any
151
- * len attr, else 1.0 under haveDir (hier/ipsep), else absent (C NULL). eweights (haveWt)
152
- * and edists are not built: nothing on a supported path reads them.
153
- * @see lib/neatogen/neatoinit.c:makeGraphData
154
- * @see lib/neatogen/stuff.c:setEdgeLen
155
- */
156
- export declare function makeGraphDataC(g: Graph, nodeList: Node[], haveLen: boolean, haveDir: boolean): VtxData[];
157
147
  /** Dispatch to the layout solver for the mode. @see lib/neatogen/neatoinit.c:neatoLayout */
158
148
  export declare function solveModel(g: Graph, mode: number, model: number): void;
159
149
  /** Minimum X and Y across all node positions. @see lib/neatogen/neatoinit.c (translate logic) */
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { VtxData } from './dijkstra.js';
2
+ /**
3
+ * Sort `ordering[0..size)` by ascending `place[ordering[i]]`.
4
+ * @see lib/neatogen/kkutils.c:quicksort_place
5
+ */
6
+ export declare function quicksortPlace(place: Float64Array, ordering: Int32Array, size: number): void;
7
+ /**
8
+ * Sort `ordering[first..last]` (inclusive) by ascending `place[ordering[i]]`
9
+ * (float keys); a no-op unless `first < last`.
10
+ * @see lib/neatogen/kkutils.c:quicksort_placef
11
+ */
12
+ export declare function quicksortPlacef(place: Float32Array, ordering: Int32Array, first: number, last: number): void;
13
+ /**
14
+ * All-pairs shortest-path lengths as `DistType` (int) rows: Dijkstra when the
15
+ * graph has edge lengths (`graph->ewgts`; the port's empty array is C NULL),
16
+ * BFS otherwise.
17
+ * @see lib/neatogen/kkutils.c:compute_apsp
18
+ */
19
+ export declare function computeApsp(graph: VtxData[], n: number): Int32Array[];
20
+ //# sourceMappingURL=kkutils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kkutils.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/kkutils.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAyB7C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,IAAI,CAIN;AAwBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAErE"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Neato's sparse graph (`vtx_data`) construction: `makeGraphData` and the
3
+ * DIGCOLA edge-direction pass (`dfsCycle`, `acyclic`) it ends with.
4
+ *
5
+ * @see lib/neatogen/neatoinit.c
6
+ */
7
+ import type { Graph } from '../../model/graph.js';
8
+ import type { Node } from '../../model/node.js';
9
+ import type { DirectedVtxData } from './opt-arrangement.js';
10
+ /** Any edge carries a len attr (C: agattr_text(g, AGEDGE, "len")). */
11
+ export declare function graphHasLen(g: Graph): boolean;
12
+ /** The visit state C keeps in `ND_mark` / `ND_onstack`. */
13
+ interface DfsState {
14
+ readonly mode: number;
15
+ readonly mark: Uint8Array;
16
+ readonly onstack: Uint8Array;
17
+ }
18
+ /**
19
+ * dfs for breaking cycles in vtxdata. C recurses; the recursion is replaced by
20
+ * an explicit stack of (vertex, next edge slot) frames, which visits in the
21
+ * same order but cannot overflow the JS stack on a long path.
22
+ * @see lib/neatogen/neatoinit.c:dfsCycle
23
+ */
24
+ export declare function dfsCycle(graph: DirectedVtxData[], start: number, st: DfsState): void;
25
+ /**
26
+ * do a dfs of the vtx_data, looking for cycles, reversing edges. C keeps the
27
+ * visit state in `ND_mark`/`ND_onstack`; it is local to this pass here.
28
+ * @see lib/neatogen/neatoinit.c:acyclic
29
+ */
30
+ export declare function acyclic(graph: DirectedVtxData[], nv: number, mode: number): void;
31
+ /**
32
+ * C makeGraphData's vtx_data: per node out-edges then in-edges (agfstedge order), self at
33
+ * index 0, duplicate neighbours merged (len keeps the max). ewgts: lens (default 1.0) if any
34
+ * len attr, else 1.0 under haveDir (hier/ipsep), else absent (C NULL). Under haveDir `edists`
35
+ * holds the direction of each first-seen edge (-1 tail, +1 head, 0 for dir=none) and the
36
+ * graph is then made acyclic. eweights (haveWt) are not built: nothing on a supported path
37
+ * reads them.
38
+ * @see lib/neatogen/neatoinit.c:makeGraphData
39
+ * @see lib/neatogen/stuff.c:setEdgeLen
40
+ */
41
+ export declare function makeGraphDataC(g: Graph, nodeList: Node[], haveLen: boolean, haveDir: boolean, mode?: number): DirectedVtxData[];
42
+ export {};
43
+ //# sourceMappingURL=make-graph-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-graph-data.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/make-graph-data.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAK7C;AAWD,2DAA2D;AAC3D,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAkBD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAwBpF;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMhF;AAuCD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE,MAAW,GAChF,eAAe,EAAE,CAQnB"}
@@ -1,3 +1,10 @@
1
+ import type { VtxData } from './dijkstra.js';
2
+ /**
3
+ * fmadd: round(a * b + c) once. `common/fma` splits operands (Dekker), which
4
+ * turns an infinite operand into NaN where the hardware fmadd gives inf, so
5
+ * non-finite products and addends take the plain expression (exact then).
6
+ */
7
+ export declare function fma(a: number, b: number, c: number): number;
1
8
  /** Subtract the mean (double precision). @see matrix_ops.c:orthog1 */
2
9
  export declare function orthog1(n: number, vec: Float64Array): void;
3
10
  /** Subtract the mean (float precision). @see matrix_ops.c:orthog1f */
@@ -25,4 +32,43 @@ export declare function invertVec(n: number, vec: Float32Array): void;
25
32
  export declare function sqrtVecF(n: number, source: Float32Array, target: Float32Array): void;
26
33
  /** vec = 1/sqrtf(vec) where vec > 0. @see matrix_ops.c:invert_sqrt_vec */
27
34
  export declare function invertSqrtVec(n: number, vec: Float32Array): void;
35
+ /** Block width of a call site compiled as a scalar loop (all fmadd). */
36
+ export declare const BLOCK_NONE = 1;
37
+ /**
38
+ * Sum of `a[i] * b[i]` over `n` terms, the first `block * floor(n / block)`
39
+ * unfused and the rest fused, as the oracle's inlined copy of the site.
40
+ * @see lib/neatogen/matrix_ops.c:vectors_inner_product
41
+ */
42
+ export declare function innerProduct(n: number, v1: Float64Array, v2: Float64Array, block: number): number;
43
+ /** vec1[0..end] += fac * vec2[0..end] (fmadd). @see lib/neatogen/matrix_ops.c:scadd */
44
+ export declare function scadd(vec1: Float64Array, end: number, fac: number, vec2: Float64Array): void;
45
+ /** 2-norm of vec[0..end]. @see lib/neatogen/matrix_ops.c:norm */
46
+ export declare function norm(vec: Float64Array, end: number, block: number): number;
47
+ /** result = vector * alpha (aliasing allowed). @see lib/neatogen/matrix_ops.c:vectors_scalar_mult */
48
+ export declare function vectorsScalarMult(n: number, vector: Float64Array, alpha: number, result: Float64Array): void;
49
+ /** dest = source. @see lib/neatogen/matrix_ops.c:copy_vector */
50
+ export declare function copyVector(n: number, source: Float64Array, dest: Float64Array): void;
51
+ /** result = v1 + v2 (aliasing allowed). @see lib/neatogen/matrix_ops.c:vectors_addition */
52
+ export declare function vectorsAddition(n: number, v1: Float64Array, v2: Float64Array, result: Float64Array): void;
53
+ /** result = v1 - v2 (aliasing allowed). @see lib/neatogen/matrix_ops.c:vectors_subtraction */
54
+ export declare function vectorsSubtraction(n: number, v1: Float64Array, v2: Float64Array, result: Float64Array): void;
55
+ /** Largest |vector[i]| (start -1e50). @see lib/neatogen/matrix_ops.c:max_abs */
56
+ export declare function maxAbs(n: number, vector: Float64Array): number;
57
+ /**
58
+ * result = matrix * vector for an n x n float** matrix and double vector;
59
+ * each row's reduction is blocked as the call site was compiled.
60
+ * @see lib/neatogen/matrix_ops.c:right_mult_with_vector_f
61
+ */
62
+ export declare function rightMultWithVectorF(matrix: readonly Float32Array[], n: number, vector: Float64Array, result: Float64Array, block: number): void;
63
+ /**
64
+ * result = matrix * vector over the sparse `vtx_data` rows (`ewgts` weights).
65
+ * The loop is scalar in the oracle: every term is an fmadd.
66
+ * @see lib/neatogen/matrix_ops.c:right_mult_with_vector
67
+ */
68
+ export declare function rightMultWithVector(matrix: VtxData[], n: number, vector: Float64Array, result: Float64Array): void;
69
+ /**
70
+ * `vec[i] = rand() % RANGE`, then orthogonalize against 1.
71
+ * @see lib/neatogen/matrix_ops.c:init_vec_orth1
72
+ */
73
+ export declare function initVecOrth1(n: number, vec: Float64Array): void;
28
74
  //# sourceMappingURL=matrix-ops.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix-ops.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/matrix-ops.ts"],"names":[],"mappings":"AAcA,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAK1D;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAK3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GACrE,IAAI,CAYN;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAClE,IAAI,CAEN;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAC3D,IAAI,CAGN;AAED,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,MAAM,CAI1F;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAEjF;AAED,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAO5D;AAED,mCAAmC;AACnC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAE5D;AAED,mCAAmC;AACnC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAI5D;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAIpF;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAIhE"}
1
+ {"version":3,"file":"matrix-ops.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/matrix-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { VtxData } from './dijkstra.js';
2
+ /** `vtx_data` with the `DIGCOLA` `edists` field (`int8_t *`, `NULL` when absent). */
3
+ export interface DirectedVtxData extends VtxData {
4
+ edists?: ArrayLike<number> | null;
5
+ }
6
+ /**
7
+ * Build `b` with `-b[i] = sum_j -w_ij * delta_ij` (the balance vector; the
8
+ * matrix is -L, so `-Lx = -b` is solved). `b` is left untouched when node 0 has
9
+ * no `edists` (C: `continue`, `b` stays calloc-zero).
10
+ * @see lib/neatogen/opt_arrangement.c:construct_b
11
+ */
12
+ export declare function constructB(graph: DirectedVtxData[], n: number, b: Float64Array): void;
13
+ /**
14
+ * Find the y coordinates of a directed graph by solving `L*y = b`. Starts from
15
+ * a `rand()`-seeded vector, so the result depends on the libc rand stream
16
+ * position (`common/crand`). Returns 1 when conjugate gradient fails.
17
+ * @see lib/neatogen/opt_arrangement.c:compute_y_coords
18
+ */
19
+ export declare function computeYCoords(graph: VtxData[], n: number, yCoords: Float64Array, maxIterations: number): 0 | 1;
20
+ //# sourceMappingURL=opt-arrangement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opt-arrangement.d.ts","sourceRoot":"","sources":["../../../src/layout/neato/opt-arrangement.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,qFAAqF;AACrF,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACnC;AAKD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAWrF;AAmBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EAAE,EAChB,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,GACpB,CAAC,GAAG,CAAC,CAgBP"}