@knowvah/dot-engine 0.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 (986) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +292 -0
  3. package/dist/api/builder.d.ts +78 -0
  4. package/dist/api/builder.d.ts.map +1 -0
  5. package/dist/api/edge-ops.d.ts +45 -0
  6. package/dist/api/edge-ops.d.ts.map +1 -0
  7. package/dist/api/geometry.d.ts +159 -0
  8. package/dist/api/geometry.d.ts.map +1 -0
  9. package/dist/api/index.d.ts +24 -0
  10. package/dist/api/index.d.ts.map +1 -0
  11. package/dist/api.js +719 -0
  12. package/dist/api.js.map +7 -0
  13. package/dist/bundle.js +101 -0
  14. package/dist/cdt/bag.d.ts +58 -0
  15. package/dist/cdt/bag.d.ts.map +1 -0
  16. package/dist/cdt/hash-core.d.ts +40 -0
  17. package/dist/cdt/hash-core.d.ts.map +1 -0
  18. package/dist/cdt/hash.d.ts +74 -0
  19. package/dist/cdt/hash.d.ts.map +1 -0
  20. package/dist/cdt/index.d.ts +16 -0
  21. package/dist/cdt/index.d.ts.map +1 -0
  22. package/dist/cdt/splay-core.d.ts +78 -0
  23. package/dist/cdt/splay-core.d.ts.map +1 -0
  24. package/dist/cdt/splay.d.ts +63 -0
  25. package/dist/cdt/splay.d.ts.map +1 -0
  26. package/dist/cdt/strhash.d.ts +26 -0
  27. package/dist/cdt/strhash.d.ts.map +1 -0
  28. package/dist/cdt/types.d.ts +11 -0
  29. package/dist/cdt/types.d.ts.map +1 -0
  30. package/dist/common/arith.d.ts +35 -0
  31. package/dist/common/arith.d.ts.map +1 -0
  32. package/dist/common/arm-pow-data.d.ts +17 -0
  33. package/dist/common/arm-pow-data.d.ts.map +1 -0
  34. package/dist/common/arm-pow.d.ts +12 -0
  35. package/dist/common/arm-pow.d.ts.map +1 -0
  36. package/dist/common/arrows-constants.d.ts +97 -0
  37. package/dist/common/arrows-constants.d.ts.map +1 -0
  38. package/dist/common/arrows-geometry.d.ts +24 -0
  39. package/dist/common/arrows-geometry.d.ts.map +1 -0
  40. package/dist/common/arrows-miter.d.ts +24 -0
  41. package/dist/common/arrows-miter.d.ts.map +1 -0
  42. package/dist/common/arrows-shapes-poly.d.ts +24 -0
  43. package/dist/common/arrows-shapes-poly.d.ts.map +1 -0
  44. package/dist/common/arrows-shapes-util.d.ts +77 -0
  45. package/dist/common/arrows-shapes-util.d.ts.map +1 -0
  46. package/dist/common/arrows-shapes.d.ts +48 -0
  47. package/dist/common/arrows-shapes.d.ts.map +1 -0
  48. package/dist/common/arrows-types.d.ts +59 -0
  49. package/dist/common/arrows-types.d.ts.map +1 -0
  50. package/dist/common/arrows.d.ts +69 -0
  51. package/dist/common/arrows.d.ts.map +1 -0
  52. package/dist/common/color.d.ts +66 -0
  53. package/dist/common/color.d.ts.map +1 -0
  54. package/dist/common/colorData.d.ts +10 -0
  55. package/dist/common/colorData.d.ts.map +1 -0
  56. package/dist/common/compass-port.d.ts +39 -0
  57. package/dist/common/compass-port.d.ts.map +1 -0
  58. package/dist/common/crand.d.ts +42 -0
  59. package/dist/common/crand.d.ts.map +1 -0
  60. package/dist/common/edge-label-init.d.ts +51 -0
  61. package/dist/common/edge-label-init.d.ts.map +1 -0
  62. package/dist/common/edge-offset.d.ts +66 -0
  63. package/dist/common/edge-offset.d.ts.map +1 -0
  64. package/dist/common/ellipse-wedge.d.ts +10 -0
  65. package/dist/common/ellipse-wedge.d.ts.map +1 -0
  66. package/dist/common/emit-types.d.ts +255 -0
  67. package/dist/common/emit-types.d.ts.map +1 -0
  68. package/dist/common/fma.d.ts +10 -0
  69. package/dist/common/fma.d.ts.map +1 -0
  70. package/dist/common/graph-init.d.ts +61 -0
  71. package/dist/common/graph-init.d.ts.map +1 -0
  72. package/dist/common/html-entities.d.ts +17 -0
  73. package/dist/common/html-entities.d.ts.map +1 -0
  74. package/dist/common/html-string.d.ts +14 -0
  75. package/dist/common/html-string.d.ts.map +1 -0
  76. package/dist/common/htmltable-emit-fill.d.ts +84 -0
  77. package/dist/common/htmltable-emit-fill.d.ts.map +1 -0
  78. package/dist/common/htmltable-emit-rules.d.ts +79 -0
  79. package/dist/common/htmltable-emit-rules.d.ts.map +1 -0
  80. package/dist/common/htmltable-emit.d.ts +63 -0
  81. package/dist/common/htmltable-emit.d.ts.map +1 -0
  82. package/dist/common/htmltable-lex.d.ts +16 -0
  83. package/dist/common/htmltable-lex.d.ts.map +1 -0
  84. package/dist/common/htmltable-parse.d.ts +37 -0
  85. package/dist/common/htmltable-parse.d.ts.map +1 -0
  86. package/dist/common/htmltable-port.d.ts +15 -0
  87. package/dist/common/htmltable-port.d.ts.map +1 -0
  88. package/dist/common/htmltable-pos-runs.d.ts +88 -0
  89. package/dist/common/htmltable-pos-runs.d.ts.map +1 -0
  90. package/dist/common/htmltable-pos.d.ts +192 -0
  91. package/dist/common/htmltable-pos.d.ts.map +1 -0
  92. package/dist/common/htmltable-types.d.ts +237 -0
  93. package/dist/common/htmltable-types.d.ts.map +1 -0
  94. package/dist/common/htmltable.d.ts +74 -0
  95. package/dist/common/htmltable.d.ts.map +1 -0
  96. package/dist/common/layers.d.ts +20 -0
  97. package/dist/common/layers.d.ts.map +1 -0
  98. package/dist/common/make-label.d.ts +60 -0
  99. package/dist/common/make-label.d.ts.map +1 -0
  100. package/dist/common/multicolor.d.ts +46 -0
  101. package/dist/common/multicolor.d.ts.map +1 -0
  102. package/dist/common/nodeinit.d.ts +45 -0
  103. package/dist/common/nodeinit.d.ts.map +1 -0
  104. package/dist/common/poly-gencode.d.ts +40 -0
  105. package/dist/common/poly-gencode.d.ts.map +1 -0
  106. package/dist/common/poly-init.d.ts +51 -0
  107. package/dist/common/poly-init.d.ts.map +1 -0
  108. package/dist/common/poly-inside.d.ts +37 -0
  109. package/dist/common/poly-inside.d.ts.map +1 -0
  110. package/dist/common/poly-shapes-cases.d.ts +31 -0
  111. package/dist/common/poly-shapes-cases.d.ts.map +1 -0
  112. package/dist/common/poly-shapes-cases2.d.ts +25 -0
  113. package/dist/common/poly-shapes-cases2.d.ts.map +1 -0
  114. package/dist/common/poly-shapes-util.d.ts +42 -0
  115. package/dist/common/poly-shapes-util.d.ts.map +1 -0
  116. package/dist/common/poly-shapes.d.ts +39 -0
  117. package/dist/common/poly-shapes.d.ts.map +1 -0
  118. package/dist/common/poly-sizing.d.ts +189 -0
  119. package/dist/common/poly-sizing.d.ts.map +1 -0
  120. package/dist/common/poly-vertices.d.ts +42 -0
  121. package/dist/common/poly-vertices.d.ts.map +1 -0
  122. package/dist/common/postproc.d.ts +49 -0
  123. package/dist/common/postproc.d.ts.map +1 -0
  124. package/dist/common/ps-fontalias.d.ts +36 -0
  125. package/dist/common/ps-fontalias.d.ts.map +1 -0
  126. package/dist/common/random.d.ts +8 -0
  127. package/dist/common/random.d.ts.map +1 -0
  128. package/dist/common/record-port.d.ts +34 -0
  129. package/dist/common/record-port.d.ts.map +1 -0
  130. package/dist/common/record.d.ts +105 -0
  131. package/dist/common/record.d.ts.map +1 -0
  132. package/dist/common/shapeData.d.ts +186 -0
  133. package/dist/common/shapeData.d.ts.map +1 -0
  134. package/dist/common/shapes.d.ts +36 -0
  135. package/dist/common/shapes.d.ts.map +1 -0
  136. package/dist/common/spline-midpoint.d.ts +31 -0
  137. package/dist/common/spline-midpoint.d.ts.map +1 -0
  138. package/dist/common/splines-clip.d.ts +21 -0
  139. package/dist/common/splines-clip.d.ts.map +1 -0
  140. package/dist/common/splines-constants.d.ts +42 -0
  141. package/dist/common/splines-constants.d.ts.map +1 -0
  142. package/dist/common/splines-geom.d.ts +51 -0
  143. package/dist/common/splines-geom.d.ts.map +1 -0
  144. package/dist/common/splines-path-begin.d.ts +17 -0
  145. package/dist/common/splines-path-begin.d.ts.map +1 -0
  146. package/dist/common/splines-path-end.d.ts +17 -0
  147. package/dist/common/splines-path-end.d.ts.map +1 -0
  148. package/dist/common/splines-path-shared.d.ts +53 -0
  149. package/dist/common/splines-path-shared.d.ts.map +1 -0
  150. package/dist/common/splines-routespl.d.ts +40 -0
  151. package/dist/common/splines-routespl.d.ts.map +1 -0
  152. package/dist/common/splines-selfedge.d.ts +21 -0
  153. package/dist/common/splines-selfedge.d.ts.map +1 -0
  154. package/dist/common/splines.d.ts +18 -0
  155. package/dist/common/splines.d.ts.map +1 -0
  156. package/dist/common/style-resolve.d.ts +197 -0
  157. package/dist/common/style-resolve.d.ts.map +1 -0
  158. package/dist/common/subst.d.ts +31 -0
  159. package/dist/common/subst.d.ts.map +1 -0
  160. package/dist/common/taper.d.ts +23 -0
  161. package/dist/common/taper.d.ts.map +1 -0
  162. package/dist/common/textmeasure-factory.d.ts +33 -0
  163. package/dist/common/textmeasure-factory.d.ts.map +1 -0
  164. package/dist/common/textmeasure-lookup.d.ts +17 -0
  165. package/dist/common/textmeasure-lookup.d.ts.map +1 -0
  166. package/dist/common/textmeasure-lut-data-a.d.ts +13 -0
  167. package/dist/common/textmeasure-lut-data-a.d.ts.map +1 -0
  168. package/dist/common/textmeasure-lut-data-b.d.ts +12 -0
  169. package/dist/common/textmeasure-lut-data-b.d.ts.map +1 -0
  170. package/dist/common/textmeasure-lut-data-c.d.ts +13 -0
  171. package/dist/common/textmeasure-lut-data-c.d.ts.map +1 -0
  172. package/dist/common/textmeasure-lut-data.d.ts +27 -0
  173. package/dist/common/textmeasure-lut-data.d.ts.map +1 -0
  174. package/dist/common/textmeasure.d.ts +120 -0
  175. package/dist/common/textmeasure.d.ts.map +1 -0
  176. package/dist/common/types.d.ts +316 -0
  177. package/dist/common/types.d.ts.map +1 -0
  178. package/dist/common/xlabels-place.d.ts +125 -0
  179. package/dist/common/xlabels-place.d.ts.map +1 -0
  180. package/dist/debug.d.ts +58 -0
  181. package/dist/debug.d.ts.map +1 -0
  182. package/dist/errors.d.ts +63 -0
  183. package/dist/errors.d.ts.map +1 -0
  184. package/dist/gvc/anchor.d.ts +86 -0
  185. package/dist/gvc/anchor.d.ts.map +1 -0
  186. package/dist/gvc/context.d.ts +177 -0
  187. package/dist/gvc/context.d.ts.map +1 -0
  188. package/dist/gvc/default-context.d.ts +20 -0
  189. package/dist/gvc/default-context.d.ts.map +1 -0
  190. package/dist/gvc/device-cluster.d.ts +25 -0
  191. package/dist/gvc/device-cluster.d.ts.map +1 -0
  192. package/dist/gvc/device.d.ts +99 -0
  193. package/dist/gvc/device.d.ts.map +1 -0
  194. package/dist/gvc/edge-labels.d.ts +10 -0
  195. package/dist/gvc/edge-labels.d.ts.map +1 -0
  196. package/dist/gvc/emit-walk.d.ts +22 -0
  197. package/dist/gvc/emit-walk.d.ts.map +1 -0
  198. package/dist/gvc/image-resolver.d.ts +44 -0
  199. package/dist/gvc/image-resolver.d.ts.map +1 -0
  200. package/dist/gvc/job.d.ts +234 -0
  201. package/dist/gvc/job.d.ts.map +1 -0
  202. package/dist/gvc/textlayout.d.ts +33 -0
  203. package/dist/gvc/textlayout.d.ts.map +1 -0
  204. package/dist/gvc/textspan-emit.d.ts +41 -0
  205. package/dist/gvc/textspan-emit.d.ts.map +1 -0
  206. package/dist/gvc/usershape.d.ts +25 -0
  207. package/dist/gvc/usershape.d.ts.map +1 -0
  208. package/dist/gvc/viewport.d.ts +71 -0
  209. package/dist/gvc/viewport.d.ts.map +1 -0
  210. package/dist/index.d.ts +54 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +52862 -0
  213. package/dist/index.js.map +7 -0
  214. package/dist/label/index.d.ts +74 -0
  215. package/dist/label/index.d.ts.map +1 -0
  216. package/dist/label/node.d.ts +108 -0
  217. package/dist/label/node.d.ts.map +1 -0
  218. package/dist/label/rectangle.d.ts +60 -0
  219. package/dist/label/rectangle.d.ts.map +1 -0
  220. package/dist/label/split-q.d.ts +13 -0
  221. package/dist/label/split-q.d.ts.map +1 -0
  222. package/dist/label/xlabels-geom.d.ts +46 -0
  223. package/dist/label/xlabels-geom.d.ts.map +1 -0
  224. package/dist/label/xlabels-intersect.d.ts +79 -0
  225. package/dist/label/xlabels-intersect.d.ts.map +1 -0
  226. package/dist/label/xlabels.d.ts +67 -0
  227. package/dist/label/xlabels.d.ts.map +1 -0
  228. package/dist/layout/circo/blockpath.d.ts +120 -0
  229. package/dist/layout/circo/blockpath.d.ts.map +1 -0
  230. package/dist/layout/circo/blocks.d.ts +135 -0
  231. package/dist/layout/circo/blocks.d.ts.map +1 -0
  232. package/dist/layout/circo/blocktree.d.ts +51 -0
  233. package/dist/layout/circo/blocktree.d.ts.map +1 -0
  234. package/dist/layout/circo/circular.d.ts +59 -0
  235. package/dist/layout/circo/circular.d.ts.map +1 -0
  236. package/dist/layout/circo/index.d.ts +35 -0
  237. package/dist/layout/circo/index.d.ts.map +1 -0
  238. package/dist/layout/circo/init.d.ts +50 -0
  239. package/dist/layout/circo/init.d.ts.map +1 -0
  240. package/dist/layout/circo/position-helpers.d.ts +33 -0
  241. package/dist/layout/circo/position-helpers.d.ts.map +1 -0
  242. package/dist/layout/circo/position.d.ts +66 -0
  243. package/dist/layout/circo/position.d.ts.map +1 -0
  244. package/dist/layout/dot/acyclic.d.ts +8 -0
  245. package/dist/layout/dot/acyclic.d.ts.map +1 -0
  246. package/dist/layout/dot/aspect.d.ts +17 -0
  247. package/dist/layout/dot/aspect.d.ts.map +1 -0
  248. package/dist/layout/dot/classify.d.ts +52 -0
  249. package/dist/layout/dot/classify.d.ts.map +1 -0
  250. package/dist/layout/dot/cluster-path.d.ts +38 -0
  251. package/dist/layout/dot/cluster-path.d.ts.map +1 -0
  252. package/dist/layout/dot/cluster.d.ts +102 -0
  253. package/dist/layout/dot/cluster.d.ts.map +1 -0
  254. package/dist/layout/dot/compound-clip.d.ts +69 -0
  255. package/dist/layout/dot/compound-clip.d.ts.map +1 -0
  256. package/dist/layout/dot/compound-geom.d.ts +115 -0
  257. package/dist/layout/dot/compound-geom.d.ts.map +1 -0
  258. package/dist/layout/dot/compound.d.ts +56 -0
  259. package/dist/layout/dot/compound.d.ts.map +1 -0
  260. package/dist/layout/dot/conc.d.ts +88 -0
  261. package/dist/layout/dot/conc.d.ts.map +1 -0
  262. package/dist/layout/dot/decomp.d.ts +66 -0
  263. package/dist/layout/dot/decomp.d.ts.map +1 -0
  264. package/dist/layout/dot/edge-order.d.ts +27 -0
  265. package/dist/layout/dot/edge-order.d.ts.map +1 -0
  266. package/dist/layout/dot/edge-route-arrow.d.ts +46 -0
  267. package/dist/layout/dot/edge-route-arrow.d.ts.map +1 -0
  268. package/dist/layout/dot/edge-route-boxes.d.ts +75 -0
  269. package/dist/layout/dot/edge-route-boxes.d.ts.map +1 -0
  270. package/dist/layout/dot/edge-route-chain.d.ts +67 -0
  271. package/dist/layout/dot/edge-route-chain.d.ts.map +1 -0
  272. package/dist/layout/dot/edge-route-clip.d.ts +88 -0
  273. package/dist/layout/dot/edge-route-clip.d.ts.map +1 -0
  274. package/dist/layout/dot/edge-route-faithful.d.ts +94 -0
  275. package/dist/layout/dot/edge-route-faithful.d.ts.map +1 -0
  276. package/dist/layout/dot/edge-route-geom.d.ts +43 -0
  277. package/dist/layout/dot/edge-route-geom.d.ts.map +1 -0
  278. package/dist/layout/dot/edge-route-helpers.d.ts +50 -0
  279. package/dist/layout/dot/edge-route-helpers.d.ts.map +1 -0
  280. package/dist/layout/dot/edge-route-poly.d.ts +48 -0
  281. package/dist/layout/dot/edge-route-poly.d.ts.map +1 -0
  282. package/dist/layout/dot/edge-route-rank.d.ts +57 -0
  283. package/dist/layout/dot/edge-route-rank.d.ts.map +1 -0
  284. package/dist/layout/dot/edge-route-routing.d.ts +99 -0
  285. package/dist/layout/dot/edge-route-routing.d.ts.map +1 -0
  286. package/dist/layout/dot/edge-route.d.ts +57 -0
  287. package/dist/layout/dot/edge-route.d.ts.map +1 -0
  288. package/dist/layout/dot/fastgr.d.ts +147 -0
  289. package/dist/layout/dot/fastgr.d.ts.map +1 -0
  290. package/dist/layout/dot/flat-utils.d.ts +21 -0
  291. package/dist/layout/dot/flat-utils.d.ts.map +1 -0
  292. package/dist/layout/dot/flat.d.ts +152 -0
  293. package/dist/layout/dot/flat.d.ts.map +1 -0
  294. package/dist/layout/dot/graph-label.d.ts +18 -0
  295. package/dist/layout/dot/graph-label.d.ts.map +1 -0
  296. package/dist/layout/dot/index.d.ts +128 -0
  297. package/dist/layout/dot/index.d.ts.map +1 -0
  298. package/dist/layout/dot/init.d.ts +93 -0
  299. package/dist/layout/dot/init.d.ts.map +1 -0
  300. package/dist/layout/dot/label-order.d.ts +45 -0
  301. package/dist/layout/dot/label-order.d.ts.map +1 -0
  302. package/dist/layout/dot/mincross-build.d.ts +52 -0
  303. package/dist/layout/dot/mincross-build.d.ts.map +1 -0
  304. package/dist/layout/dot/mincross-cross.d.ts +80 -0
  305. package/dist/layout/dot/mincross-cross.d.ts.map +1 -0
  306. package/dist/layout/dot/mincross-flat.d.ts +27 -0
  307. package/dist/layout/dot/mincross-flat.d.ts.map +1 -0
  308. package/dist/layout/dot/mincross-order.d.ts +89 -0
  309. package/dist/layout/dot/mincross-order.d.ts.map +1 -0
  310. package/dist/layout/dot/mincross-utils.d.ts +60 -0
  311. package/dist/layout/dot/mincross-utils.d.ts.map +1 -0
  312. package/dist/layout/dot/mincross.d.ts +75 -0
  313. package/dist/layout/dot/mincross.d.ts.map +1 -0
  314. package/dist/layout/dot/ns-core.d.ts +37 -0
  315. package/dist/layout/dot/ns-core.d.ts.map +1 -0
  316. package/dist/layout/dot/ns-range.d.ts +17 -0
  317. package/dist/layout/dot/ns-range.d.ts.map +1 -0
  318. package/dist/layout/dot/ns-subtree.d.ts +78 -0
  319. package/dist/layout/dot/ns-subtree.d.ts.map +1 -0
  320. package/dist/layout/dot/ns.d.ts +86 -0
  321. package/dist/layout/dot/ns.d.ts.map +1 -0
  322. package/dist/layout/dot/ortho-adapter.d.ts +19 -0
  323. package/dist/layout/dot/ortho-adapter.d.ts.map +1 -0
  324. package/dist/layout/dot/pack-components.d.ts +100 -0
  325. package/dist/layout/dot/pack-components.d.ts.map +1 -0
  326. package/dist/layout/dot/position-aux.d.ts +110 -0
  327. package/dist/layout/dot/position-aux.d.ts.map +1 -0
  328. package/dist/layout/dot/position-bbox.d.ts +57 -0
  329. package/dist/layout/dot/position-bbox.d.ts.map +1 -0
  330. package/dist/layout/dot/position-cluster.d.ts +48 -0
  331. package/dist/layout/dot/position-cluster.d.ts.map +1 -0
  332. package/dist/layout/dot/position-ycoords.d.ts +42 -0
  333. package/dist/layout/dot/position-ycoords.d.ts.map +1 -0
  334. package/dist/layout/dot/position.d.ts +47 -0
  335. package/dist/layout/dot/position.d.ts.map +1 -0
  336. package/dist/layout/dot/rank-dot2.d.ts +114 -0
  337. package/dist/layout/dot/rank-dot2.d.ts.map +1 -0
  338. package/dist/layout/dot/rank.d.ts +119 -0
  339. package/dist/layout/dot/rank.d.ts.map +1 -0
  340. package/dist/layout/dot/sameport.d.ts +70 -0
  341. package/dist/layout/dot/sameport.d.ts.map +1 -0
  342. package/dist/layout/dot/self-loop.d.ts +54 -0
  343. package/dist/layout/dot/self-loop.d.ts.map +1 -0
  344. package/dist/layout/dot/splines-clone.d.ts +33 -0
  345. package/dist/layout/dot/splines-clone.d.ts.map +1 -0
  346. package/dist/layout/dot/splines-flat-labeled.d.ts +101 -0
  347. package/dist/layout/dot/splines-flat-labeled.d.ts.map +1 -0
  348. package/dist/layout/dot/splines-flat-multi.d.ts +35 -0
  349. package/dist/layout/dot/splines-flat-multi.d.ts.map +1 -0
  350. package/dist/layout/dot/splines-flat.d.ts +116 -0
  351. package/dist/layout/dot/splines-flat.d.ts.map +1 -0
  352. package/dist/layout/dot/splines-groups.d.ts +38 -0
  353. package/dist/layout/dot/splines-groups.d.ts.map +1 -0
  354. package/dist/layout/dot/splines-label.d.ts +105 -0
  355. package/dist/layout/dot/splines-label.d.ts.map +1 -0
  356. package/dist/layout/dot/splines-route-type.d.ts +28 -0
  357. package/dist/layout/dot/splines-route-type.d.ts.map +1 -0
  358. package/dist/layout/dot/splines-route.d.ts +99 -0
  359. package/dist/layout/dot/splines-route.d.ts.map +1 -0
  360. package/dist/layout/dot/splines.d.ts +157 -0
  361. package/dist/layout/dot/splines.d.ts.map +1 -0
  362. package/dist/layout/dot/straight-edges.d.ts +39 -0
  363. package/dist/layout/dot/straight-edges.d.ts.map +1 -0
  364. package/dist/layout/fdp/cluster-edges.d.ts +31 -0
  365. package/dist/layout/fdp/cluster-edges.d.ts.map +1 -0
  366. package/dist/layout/fdp/comp.d.ts +29 -0
  367. package/dist/layout/fdp/comp.d.ts.map +1 -0
  368. package/dist/layout/fdp/derive.d.ts +39 -0
  369. package/dist/layout/fdp/derive.d.ts.map +1 -0
  370. package/dist/layout/fdp/fdp-model.d.ts +101 -0
  371. package/dist/layout/fdp/fdp-model.d.ts.map +1 -0
  372. package/dist/layout/fdp/grid.d.ts +49 -0
  373. package/dist/layout/fdp/grid.d.ts.map +1 -0
  374. package/dist/layout/fdp/index.d.ts +36 -0
  375. package/dist/layout/fdp/index.d.ts.map +1 -0
  376. package/dist/layout/fdp/init.d.ts +26 -0
  377. package/dist/layout/fdp/init.d.ts.map +1 -0
  378. package/dist/layout/fdp/layout.d.ts +57 -0
  379. package/dist/layout/fdp/layout.d.ts.map +1 -0
  380. package/dist/layout/fdp/normalize.d.ts +18 -0
  381. package/dist/layout/fdp/normalize.d.ts.map +1 -0
  382. package/dist/layout/fdp/ports.d.ts +41 -0
  383. package/dist/layout/fdp/ports.d.ts.map +1 -0
  384. package/dist/layout/fdp/tlayout-init.d.ts +21 -0
  385. package/dist/layout/fdp/tlayout-init.d.ts.map +1 -0
  386. package/dist/layout/fdp/tlayout-parms.d.ts +98 -0
  387. package/dist/layout/fdp/tlayout-parms.d.ts.map +1 -0
  388. package/dist/layout/fdp/tlayout.d.ts +43 -0
  389. package/dist/layout/fdp/tlayout.d.ts.map +1 -0
  390. package/dist/layout/fdp/xlayout.d.ts +26 -0
  391. package/dist/layout/fdp/xlayout.d.ts.map +1 -0
  392. package/dist/layout/neato/bfs.d.ts +43 -0
  393. package/dist/layout/neato/bfs.d.ts.map +1 -0
  394. package/dist/layout/neato/cdt-surface.d.ts +16 -0
  395. package/dist/layout/neato/cdt-surface.d.ts.map +1 -0
  396. package/dist/layout/neato/conjgrad.d.ts +61 -0
  397. package/dist/layout/neato/conjgrad.d.ts.map +1 -0
  398. package/dist/layout/neato/delaunay.d.ts +28 -0
  399. package/dist/layout/neato/delaunay.d.ts.map +1 -0
  400. package/dist/layout/neato/dijkstra.d.ts +80 -0
  401. package/dist/layout/neato/dijkstra.d.ts.map +1 -0
  402. package/dist/layout/neato/fdp-adjust.d.ts +31 -0
  403. package/dist/layout/neato/fdp-adjust.d.ts.map +1 -0
  404. package/dist/layout/neato/index.d.ts +58 -0
  405. package/dist/layout/neato/index.d.ts.map +1 -0
  406. package/dist/layout/neato/init.d.ts +207 -0
  407. package/dist/layout/neato/init.d.ts.map +1 -0
  408. package/dist/layout/neato/legal.d.ts +7 -0
  409. package/dist/layout/neato/legal.d.ts.map +1 -0
  410. package/dist/layout/neato/matrix-ops.d.ts +28 -0
  411. package/dist/layout/neato/matrix-ops.d.ts.map +1 -0
  412. package/dist/layout/neato/multispline-router.d.ts +80 -0
  413. package/dist/layout/neato/multispline-router.d.ts.map +1 -0
  414. package/dist/layout/neato/multispline.d.ts +24 -0
  415. package/dist/layout/neato/multispline.d.ts.map +1 -0
  416. package/dist/layout/neato/overlap-prism.d.ts +26 -0
  417. package/dist/layout/neato/overlap-prism.d.ts.map +1 -0
  418. package/dist/layout/neato/overlap.d.ts +85 -0
  419. package/dist/layout/neato/overlap.d.ts.map +1 -0
  420. package/dist/layout/neato/sc-adjust.d.ts +33 -0
  421. package/dist/layout/neato/sc-adjust.d.ts.map +1 -0
  422. package/dist/layout/neato/sep-factor.d.ts +41 -0
  423. package/dist/layout/neato/sep-factor.d.ts.map +1 -0
  424. package/dist/layout/neato/set-aspect.d.ts +33 -0
  425. package/dist/layout/neato/set-aspect.d.ts.map +1 -0
  426. package/dist/layout/neato/sgd.d.ts +166 -0
  427. package/dist/layout/neato/sgd.d.ts.map +1 -0
  428. package/dist/layout/neato/splines.d.ts +153 -0
  429. package/dist/layout/neato/splines.d.ts.map +1 -0
  430. package/dist/layout/neato/stress-kernel.d.ts +53 -0
  431. package/dist/layout/neato/stress-kernel.d.ts.map +1 -0
  432. package/dist/layout/neato/stress.d.ts +158 -0
  433. package/dist/layout/neato/stress.d.ts.map +1 -0
  434. package/dist/layout/osage/index.d.ts +158 -0
  435. package/dist/layout/osage/index.d.ts.map +1 -0
  436. package/dist/layout/osage/layout.d.ts +49 -0
  437. package/dist/layout/osage/layout.d.ts.map +1 -0
  438. package/dist/layout/osage/types.d.ts +28 -0
  439. package/dist/layout/osage/types.d.ts.map +1 -0
  440. package/dist/layout/pack/array-pack.d.ts +114 -0
  441. package/dist/layout/pack/array-pack.d.ts.map +1 -0
  442. package/dist/layout/pack/index.d.ts +157 -0
  443. package/dist/layout/pack/index.d.ts.map +1 -0
  444. package/dist/layout/pack/poly-pack.d.ts +126 -0
  445. package/dist/layout/pack/poly-pack.d.ts.map +1 -0
  446. package/dist/layout/pack/poly-place.d.ts +27 -0
  447. package/dist/layout/pack/poly-place.d.ts.map +1 -0
  448. package/dist/layout/pack/spiral-search.d.ts +18 -0
  449. package/dist/layout/pack/spiral-search.d.ts.map +1 -0
  450. package/dist/layout/pack/test-helpers.d.ts +7 -0
  451. package/dist/layout/pack/test-helpers.d.ts.map +1 -0
  452. package/dist/layout/pack/types.d.ts +74 -0
  453. package/dist/layout/pack/types.d.ts.map +1 -0
  454. package/dist/layout/patchwork/index.d.ts +136 -0
  455. package/dist/layout/patchwork/index.d.ts.map +1 -0
  456. package/dist/layout/patchwork/tree-map.d.ts +32 -0
  457. package/dist/layout/patchwork/tree-map.d.ts.map +1 -0
  458. package/dist/layout/patchwork/tree-node.d.ts +46 -0
  459. package/dist/layout/patchwork/tree-node.d.ts.map +1 -0
  460. package/dist/layout/sfdp/index.d.ts +39 -0
  461. package/dist/layout/sfdp/index.d.ts.map +1 -0
  462. package/dist/layout/sfdp/init.d.ts +61 -0
  463. package/dist/layout/sfdp/init.d.ts.map +1 -0
  464. package/dist/layout/sfdp/multilevel.d.ts +23 -0
  465. package/dist/layout/sfdp/multilevel.d.ts.map +1 -0
  466. package/dist/layout/sfdp/quadtree.d.ts +45 -0
  467. package/dist/layout/sfdp/quadtree.d.ts.map +1 -0
  468. package/dist/layout/sfdp/sparse-matrix-multiply.d.ts +34 -0
  469. package/dist/layout/sfdp/sparse-matrix-multiply.d.ts.map +1 -0
  470. package/dist/layout/sfdp/sparse-matrix.d.ts +101 -0
  471. package/dist/layout/sfdp/sparse-matrix.d.ts.map +1 -0
  472. package/dist/layout/sfdp/sparse-solve.d.ts +14 -0
  473. package/dist/layout/sfdp/sparse-solve.d.ts.map +1 -0
  474. package/dist/layout/sfdp/spring-driver.d.ts +18 -0
  475. package/dist/layout/sfdp/spring-driver.d.ts.map +1 -0
  476. package/dist/layout/sfdp/spring-electrical.d.ts +61 -0
  477. package/dist/layout/sfdp/spring-electrical.d.ts.map +1 -0
  478. package/dist/layout/twopi/circle.d.ts +83 -0
  479. package/dist/layout/twopi/circle.d.ts.map +1 -0
  480. package/dist/layout/twopi/index.d.ts +24 -0
  481. package/dist/layout/twopi/index.d.ts.map +1 -0
  482. package/dist/layout/twopi/init.d.ts +85 -0
  483. package/dist/layout/twopi/init.d.ts.map +1 -0
  484. package/dist/layout/twopi/pipeline.d.ts +37 -0
  485. package/dist/layout/twopi/pipeline.d.ts.map +1 -0
  486. package/dist/layout/twopi/twopi-test-helpers.d.ts +12 -0
  487. package/dist/layout/twopi/twopi-test-helpers.d.ts.map +1 -0
  488. package/dist/model/algData.d.ts +175 -0
  489. package/dist/model/algData.d.ts.map +1 -0
  490. package/dist/model/cgraph-ops.d.ts +86 -0
  491. package/dist/model/cgraph-ops.d.ts.map +1 -0
  492. package/dist/model/edge.d.ts +80 -0
  493. package/dist/model/edge.d.ts.map +1 -0
  494. package/dist/model/edgeInfo.d.ts +299 -0
  495. package/dist/model/edgeInfo.d.ts.map +1 -0
  496. package/dist/model/geom.d.ts +149 -0
  497. package/dist/model/geom.d.ts.map +1 -0
  498. package/dist/model/graph.d.ts +135 -0
  499. package/dist/model/graph.d.ts.map +1 -0
  500. package/dist/model/graphInfo.d.ts +418 -0
  501. package/dist/model/graphInfo.d.ts.map +1 -0
  502. package/dist/model/index.d.ts +10 -0
  503. package/dist/model/index.d.ts.map +1 -0
  504. package/dist/model/layoutParams.d.ts +85 -0
  505. package/dist/model/layoutParams.d.ts.map +1 -0
  506. package/dist/model/node.d.ts +101 -0
  507. package/dist/model/node.d.ts.map +1 -0
  508. package/dist/model/nodeInfo.d.ts +278 -0
  509. package/dist/model/nodeInfo.d.ts.map +1 -0
  510. package/dist/model/rankEntry.d.ts +80 -0
  511. package/dist/model/rankEntry.d.ts.map +1 -0
  512. package/dist/ortho/chan-dict.d.ts +82 -0
  513. package/dist/ortho/chan-dict.d.ts.map +1 -0
  514. package/dist/ortho/fpq.d.ts +54 -0
  515. package/dist/ortho/fpq.d.ts.map +1 -0
  516. package/dist/ortho/index.d.ts +35 -0
  517. package/dist/ortho/index.d.ts.map +1 -0
  518. package/dist/ortho/maze-channels.d.ts +47 -0
  519. package/dist/ortho/maze-channels.d.ts.map +1 -0
  520. package/dist/ortho/maze.d.ts +27 -0
  521. package/dist/ortho/maze.d.ts.map +1 -0
  522. package/dist/ortho/ortho-parallel.d.ts +26 -0
  523. package/dist/ortho/ortho-parallel.d.ts.map +1 -0
  524. package/dist/ortho/ortho-route.d.ts +31 -0
  525. package/dist/ortho/ortho-route.d.ts.map +1 -0
  526. package/dist/ortho/partition.d.ts +34 -0
  527. package/dist/ortho/partition.d.ts.map +1 -0
  528. package/dist/ortho/rawgraph.d.ts +41 -0
  529. package/dist/ortho/rawgraph.d.ts.map +1 -0
  530. package/dist/ortho/sgraph.d.ts +74 -0
  531. package/dist/ortho/sgraph.d.ts.map +1 -0
  532. package/dist/ortho/trap-query.d.ts +32 -0
  533. package/dist/ortho/trap-query.d.ts.map +1 -0
  534. package/dist/ortho/trap-segment.d.ts +23 -0
  535. package/dist/ortho/trap-segment.d.ts.map +1 -0
  536. package/dist/ortho/trap-types.d.ts +91 -0
  537. package/dist/ortho/trap-types.d.ts.map +1 -0
  538. package/dist/ortho/trap-update.d.ts +12 -0
  539. package/dist/ortho/trap-update.d.ts.map +1 -0
  540. package/dist/ortho/trapezoid.d.ts +18 -0
  541. package/dist/ortho/trapezoid.d.ts.map +1 -0
  542. package/dist/ortho/types.d.ts +241 -0
  543. package/dist/ortho/types.d.ts.map +1 -0
  544. package/dist/parser/ast.d.ts +49 -0
  545. package/dist/parser/ast.d.ts.map +1 -0
  546. package/dist/parser/builder.d.ts +75 -0
  547. package/dist/parser/builder.d.ts.map +1 -0
  548. package/dist/parser/index.d.ts +97 -0
  549. package/dist/parser/index.d.ts.map +1 -0
  550. package/dist/pathplan/index.d.ts +8 -0
  551. package/dist/pathplan/index.d.ts.map +1 -0
  552. package/dist/pathplan/route.d.ts +9 -0
  553. package/dist/pathplan/route.d.ts.map +1 -0
  554. package/dist/pathplan/shortest.d.ts +5 -0
  555. package/dist/pathplan/shortest.d.ts.map +1 -0
  556. package/dist/pathplan/solvers.d.ts +5 -0
  557. package/dist/pathplan/solvers.d.ts.map +1 -0
  558. package/dist/pathplan/triang.d.ts +25 -0
  559. package/dist/pathplan/triang.d.ts.map +1 -0
  560. package/dist/pathplan/types.d.ts +22 -0
  561. package/dist/pathplan/types.d.ts.map +1 -0
  562. package/dist/pathplan/visibility.d.ts +13 -0
  563. package/dist/pathplan/visibility.d.ts.map +1 -0
  564. package/dist/pathplan/vispath.d.ts +9 -0
  565. package/dist/pathplan/vispath.d.ts.map +1 -0
  566. package/dist/rbtree/index.d.ts +127 -0
  567. package/dist/rbtree/index.d.ts.map +1 -0
  568. package/dist/render/color-resolve.d.ts +38 -0
  569. package/dist/render/color-resolve.d.ts.map +1 -0
  570. package/dist/render/dot.d.ts +379 -0
  571. package/dist/render/dot.d.ts.map +1 -0
  572. package/dist/render/index.d.ts +24 -0
  573. package/dist/render/index.d.ts.map +1 -0
  574. package/dist/render/json.d.ts +89 -0
  575. package/dist/render/json.d.ts.map +1 -0
  576. package/dist/render/map-test-helpers.d.ts +13 -0
  577. package/dist/render/map-test-helpers.d.ts.map +1 -0
  578. package/dist/render/map.d.ts +197 -0
  579. package/dist/render/map.d.ts.map +1 -0
  580. package/dist/render/public.d.ts +64 -0
  581. package/dist/render/public.d.ts.map +1 -0
  582. package/dist/render/svg-arrow-ops.d.ts +10 -0
  583. package/dist/render/svg-arrow-ops.d.ts.map +1 -0
  584. package/dist/render/svg-cluster.d.ts +9 -0
  585. package/dist/render/svg-cluster.d.ts.map +1 -0
  586. package/dist/render/svg-edge-ortho-radius.d.ts +31 -0
  587. package/dist/render/svg-edge-ortho-radius.d.ts.map +1 -0
  588. package/dist/render/svg-edge-split.d.ts +48 -0
  589. package/dist/render/svg-edge-split.d.ts.map +1 -0
  590. package/dist/render/svg-gradient.d.ts +46 -0
  591. package/dist/render/svg-gradient.d.ts.map +1 -0
  592. package/dist/render/svg-graph.d.ts +97 -0
  593. package/dist/render/svg-graph.d.ts.map +1 -0
  594. package/dist/render/svg-helpers.d.ts +122 -0
  595. package/dist/render/svg-helpers.d.ts.map +1 -0
  596. package/dist/render/svg-id.d.ts +28 -0
  597. package/dist/render/svg-id.d.ts.map +1 -0
  598. package/dist/render/svg-multicolor.d.ts +60 -0
  599. package/dist/render/svg-multicolor.d.ts.map +1 -0
  600. package/dist/render/svg-parallel-edge.d.ts +28 -0
  601. package/dist/render/svg-parallel-edge.d.ts.map +1 -0
  602. package/dist/render/svg-tapered-edge.d.ts +18 -0
  603. package/dist/render/svg-tapered-edge.d.ts.map +1 -0
  604. package/dist/render/svg.d.ts +104 -0
  605. package/dist/render/svg.d.ts.map +1 -0
  606. package/dist/render/xdot-public.d.ts +95 -0
  607. package/dist/render/xdot-public.d.ts.map +1 -0
  608. package/dist/render/xml-escape.d.ts +21 -0
  609. package/dist/render/xml-escape.d.ts.map +1 -0
  610. package/dist/render.js +52556 -0
  611. package/dist/render.js.map +7 -0
  612. package/dist/util/agxbuf.d.ts +72 -0
  613. package/dist/util/agxbuf.d.ts.map +1 -0
  614. package/dist/util/bsd-qsort.d.ts +22 -0
  615. package/dist/util/bsd-qsort.d.ts.map +1 -0
  616. package/dist/util/index.d.ts +11 -0
  617. package/dist/util/index.d.ts.map +1 -0
  618. package/dist/util/list.d.ts +47 -0
  619. package/dist/util/list.d.ts.map +1 -0
  620. package/dist/util/math.d.ts +54 -0
  621. package/dist/util/math.d.ts.map +1 -0
  622. package/dist/util/mt19937.d.ts +40 -0
  623. package/dist/util/mt19937.d.ts.map +1 -0
  624. package/dist/util/printf-round.d.ts +45 -0
  625. package/dist/util/printf-round.d.ts.map +1 -0
  626. package/dist/util/xml.d.ts +24 -0
  627. package/dist/util/xml.d.ts.map +1 -0
  628. package/dist/vpsc/Block.d.ts +116 -0
  629. package/dist/vpsc/Block.d.ts.map +1 -0
  630. package/dist/vpsc/Blocks.d.ts +66 -0
  631. package/dist/vpsc/Blocks.d.ts.map +1 -0
  632. package/dist/vpsc/Constraint.d.ts +51 -0
  633. package/dist/vpsc/Constraint.d.ts.map +1 -0
  634. package/dist/vpsc/HeapUtils.d.ts +37 -0
  635. package/dist/vpsc/HeapUtils.d.ts.map +1 -0
  636. package/dist/vpsc/Solver.d.ts +107 -0
  637. package/dist/vpsc/Solver.d.ts.map +1 -0
  638. package/dist/vpsc/SweepLine.d.ts +38 -0
  639. package/dist/vpsc/SweepLine.d.ts.map +1 -0
  640. package/dist/vpsc/Variable.d.ts +38 -0
  641. package/dist/vpsc/Variable.d.ts.map +1 -0
  642. package/dist/vpsc/index.d.ts +54 -0
  643. package/dist/vpsc/index.d.ts.map +1 -0
  644. package/dist/vpsc/sweepTypes.d.ts +29 -0
  645. package/dist/vpsc/sweepTypes.d.ts.map +1 -0
  646. package/dist/xdot/index.d.ts +6 -0
  647. package/dist/xdot/index.d.ts.map +1 -0
  648. package/dist/xdot/lex.d.ts +22 -0
  649. package/dist/xdot/lex.d.ts.map +1 -0
  650. package/dist/xdot/misc.d.ts +13 -0
  651. package/dist/xdot/misc.d.ts.map +1 -0
  652. package/dist/xdot/parse.d.ts +21 -0
  653. package/dist/xdot/parse.d.ts.map +1 -0
  654. package/dist/xdot/types.d.ts +152 -0
  655. package/dist/xdot/types.d.ts.map +1 -0
  656. package/package.json +113 -0
  657. package/src/api/builder.ts +277 -0
  658. package/src/api/edge-ops.ts +113 -0
  659. package/src/api/geometry.ts +307 -0
  660. package/src/api/index.ts +46 -0
  661. package/src/cdt/bag.ts +196 -0
  662. package/src/cdt/hash-core.ts +84 -0
  663. package/src/cdt/hash.ts +207 -0
  664. package/src/cdt/index.ts +17 -0
  665. package/src/cdt/splay-core.ts +301 -0
  666. package/src/cdt/splay.ts +191 -0
  667. package/src/cdt/strhash.ts +52 -0
  668. package/src/cdt/types.ts +13 -0
  669. package/src/common/arith.ts +39 -0
  670. package/src/common/arm-pow-data.ts +201 -0
  671. package/src/common/arm-pow.ts +296 -0
  672. package/src/common/arrows-constants.ts +175 -0
  673. package/src/common/arrows-geometry.ts +62 -0
  674. package/src/common/arrows-miter.ts +84 -0
  675. package/src/common/arrows-shapes-poly.ts +241 -0
  676. package/src/common/arrows-shapes-util.ts +162 -0
  677. package/src/common/arrows-shapes.ts +360 -0
  678. package/src/common/arrows-types.ts +59 -0
  679. package/src/common/arrows.ts +209 -0
  680. package/src/common/color.ts +340 -0
  681. package/src/common/colorData.ts +264 -0
  682. package/src/common/compass-port.ts +384 -0
  683. package/src/common/crand.ts +79 -0
  684. package/src/common/edge-label-init.ts +310 -0
  685. package/src/common/edge-offset.ts +140 -0
  686. package/src/common/ellipse-wedge.ts +189 -0
  687. package/src/common/emit-types.ts +332 -0
  688. package/src/common/fma.ts +52 -0
  689. package/src/common/graph-init.ts +359 -0
  690. package/src/common/html-entities.ts +299 -0
  691. package/src/common/html-string.ts +22 -0
  692. package/src/common/htmltable-emit-fill.ts +367 -0
  693. package/src/common/htmltable-emit-rules.ts +293 -0
  694. package/src/common/htmltable-emit.ts +345 -0
  695. package/src/common/htmltable-lex.ts +138 -0
  696. package/src/common/htmltable-parse.ts +539 -0
  697. package/src/common/htmltable-port.ts +32 -0
  698. package/src/common/htmltable-pos-runs.ts +313 -0
  699. package/src/common/htmltable-pos.ts +601 -0
  700. package/src/common/htmltable-types.ts +262 -0
  701. package/src/common/htmltable.ts +477 -0
  702. package/src/common/layers.ts +113 -0
  703. package/src/common/make-label.ts +192 -0
  704. package/src/common/multicolor.ts +167 -0
  705. package/src/common/nodeinit.ts +339 -0
  706. package/src/common/poly-gencode.ts +475 -0
  707. package/src/common/poly-init.ts +133 -0
  708. package/src/common/poly-inside.ts +202 -0
  709. package/src/common/poly-shapes-cases.ts +253 -0
  710. package/src/common/poly-shapes-cases2.ts +170 -0
  711. package/src/common/poly-shapes-util.ts +124 -0
  712. package/src/common/poly-shapes.ts +181 -0
  713. package/src/common/poly-sizing.ts +639 -0
  714. package/src/common/poly-vertices.ts +237 -0
  715. package/src/common/postproc.ts +436 -0
  716. package/src/common/ps-fontalias.ts +112 -0
  717. package/src/common/random.ts +37 -0
  718. package/src/common/record-port.ts +89 -0
  719. package/src/common/record.ts +523 -0
  720. package/src/common/shapeData.ts +502 -0
  721. package/src/common/shapes.ts +187 -0
  722. package/src/common/spline-midpoint.ts +105 -0
  723. package/src/common/splines-clip.ts +449 -0
  724. package/src/common/splines-constants.ts +53 -0
  725. package/src/common/splines-geom.ts +194 -0
  726. package/src/common/splines-path-begin.ts +243 -0
  727. package/src/common/splines-path-end.ts +231 -0
  728. package/src/common/splines-path-shared.ts +258 -0
  729. package/src/common/splines-routespl.ts +444 -0
  730. package/src/common/splines-selfedge.ts +403 -0
  731. package/src/common/splines.ts +33 -0
  732. package/src/common/style-resolve.ts +481 -0
  733. package/src/common/subst.ts +126 -0
  734. package/src/common/taper.ts +219 -0
  735. package/src/common/textmeasure-factory.ts +86 -0
  736. package/src/common/textmeasure-lookup.ts +50 -0
  737. package/src/common/textmeasure-lut-data-a.ts +182 -0
  738. package/src/common/textmeasure-lut-data-b.ts +140 -0
  739. package/src/common/textmeasure-lut-data-c.ts +221 -0
  740. package/src/common/textmeasure-lut-data.ts +78 -0
  741. package/src/common/textmeasure.ts +321 -0
  742. package/src/common/types.ts +425 -0
  743. package/src/common/xlabels-place.ts +475 -0
  744. package/src/debug.ts +38 -0
  745. package/src/errors.ts +95 -0
  746. package/src/gvc/anchor.ts +530 -0
  747. package/src/gvc/context.ts +260 -0
  748. package/src/gvc/default-context.ts +70 -0
  749. package/src/gvc/device-cluster.ts +114 -0
  750. package/src/gvc/device.ts +598 -0
  751. package/src/gvc/edge-labels.ts +116 -0
  752. package/src/gvc/emit-walk.ts +98 -0
  753. package/src/gvc/image-resolver.ts +137 -0
  754. package/src/gvc/job.ts +401 -0
  755. package/src/gvc/textlayout.ts +44 -0
  756. package/src/gvc/textspan-emit.ts +100 -0
  757. package/src/gvc/usershape.ts +33 -0
  758. package/src/gvc/viewport.ts +203 -0
  759. package/src/index.ts +165 -0
  760. package/src/label/index.ts +302 -0
  761. package/src/label/node.ts +278 -0
  762. package/src/label/rectangle.ts +123 -0
  763. package/src/label/split-q.ts +237 -0
  764. package/src/label/xlabels-geom.ts +132 -0
  765. package/src/label/xlabels-intersect.ts +421 -0
  766. package/src/label/xlabels.ts +212 -0
  767. package/src/layout/circo/blockpath.ts +560 -0
  768. package/src/layout/circo/blocks.ts +234 -0
  769. package/src/layout/circo/blocktree.ts +246 -0
  770. package/src/layout/circo/circular.ts +227 -0
  771. package/src/layout/circo/index.ts +90 -0
  772. package/src/layout/circo/init.ts +84 -0
  773. package/src/layout/circo/position-helpers.ts +104 -0
  774. package/src/layout/circo/position.ts +196 -0
  775. package/src/layout/dot/__fixtures__/xcoord-pivot-divergence.gv +79 -0
  776. package/src/layout/dot/acyclic.ts +60 -0
  777. package/src/layout/dot/aspect.ts +22 -0
  778. package/src/layout/dot/classify.ts +462 -0
  779. package/src/layout/dot/cluster-path.ts +200 -0
  780. package/src/layout/dot/cluster.ts +480 -0
  781. package/src/layout/dot/compound-clip.ts +224 -0
  782. package/src/layout/dot/compound-geom.ts +282 -0
  783. package/src/layout/dot/compound.ts +294 -0
  784. package/src/layout/dot/conc.ts +433 -0
  785. package/src/layout/dot/decomp.ts +165 -0
  786. package/src/layout/dot/edge-order.ts +62 -0
  787. package/src/layout/dot/edge-route-arrow.ts +87 -0
  788. package/src/layout/dot/edge-route-boxes.ts +99 -0
  789. package/src/layout/dot/edge-route-chain.ts +420 -0
  790. package/src/layout/dot/edge-route-clip.ts +253 -0
  791. package/src/layout/dot/edge-route-faithful.ts +404 -0
  792. package/src/layout/dot/edge-route-geom.ts +90 -0
  793. package/src/layout/dot/edge-route-helpers.ts +170 -0
  794. package/src/layout/dot/edge-route-poly.ts +174 -0
  795. package/src/layout/dot/edge-route-rank.ts +136 -0
  796. package/src/layout/dot/edge-route-routing.ts +219 -0
  797. package/src/layout/dot/edge-route.ts +490 -0
  798. package/src/layout/dot/fastgr.ts +377 -0
  799. package/src/layout/dot/flat-utils.ts +52 -0
  800. package/src/layout/dot/flat.ts +518 -0
  801. package/src/layout/dot/graph-label.ts +114 -0
  802. package/src/layout/dot/index.ts +302 -0
  803. package/src/layout/dot/init.ts +300 -0
  804. package/src/layout/dot/label-order.ts +161 -0
  805. package/src/layout/dot/mincross-build.ts +373 -0
  806. package/src/layout/dot/mincross-cross.ts +409 -0
  807. package/src/layout/dot/mincross-flat.ts +213 -0
  808. package/src/layout/dot/mincross-order.ts +401 -0
  809. package/src/layout/dot/mincross-utils.ts +170 -0
  810. package/src/layout/dot/mincross.ts +386 -0
  811. package/src/layout/dot/ns-core.ts +122 -0
  812. package/src/layout/dot/ns-range.ts +228 -0
  813. package/src/layout/dot/ns-subtree.ts +347 -0
  814. package/src/layout/dot/ns.ts +506 -0
  815. package/src/layout/dot/ortho-adapter.ts +133 -0
  816. package/src/layout/dot/pack-components.ts +433 -0
  817. package/src/layout/dot/position-aux.ts +382 -0
  818. package/src/layout/dot/position-bbox.ts +221 -0
  819. package/src/layout/dot/position-cluster.ts +286 -0
  820. package/src/layout/dot/position-ycoords.ts +287 -0
  821. package/src/layout/dot/position.ts +194 -0
  822. package/src/layout/dot/rank-dot2.ts +528 -0
  823. package/src/layout/dot/rank.ts +547 -0
  824. package/src/layout/dot/sameport.ts +278 -0
  825. package/src/layout/dot/self-loop.ts +147 -0
  826. package/src/layout/dot/splines-clone.ts +121 -0
  827. package/src/layout/dot/splines-flat-labeled.ts +408 -0
  828. package/src/layout/dot/splines-flat-multi.ts +188 -0
  829. package/src/layout/dot/splines-flat.ts +598 -0
  830. package/src/layout/dot/splines-groups.ts +190 -0
  831. package/src/layout/dot/splines-label.ts +432 -0
  832. package/src/layout/dot/splines-route-type.ts +44 -0
  833. package/src/layout/dot/splines-route.ts +478 -0
  834. package/src/layout/dot/splines.ts +538 -0
  835. package/src/layout/dot/straight-edges.ts +332 -0
  836. package/src/layout/fdp/cluster-edges.ts +0 -0
  837. package/src/layout/fdp/comp.ts +160 -0
  838. package/src/layout/fdp/derive.ts +272 -0
  839. package/src/layout/fdp/fdp-model.ts +238 -0
  840. package/src/layout/fdp/grid.ts +77 -0
  841. package/src/layout/fdp/index.ts +113 -0
  842. package/src/layout/fdp/init.ts +116 -0
  843. package/src/layout/fdp/layout.ts +485 -0
  844. package/src/layout/fdp/normalize.ts +100 -0
  845. package/src/layout/fdp/ports.ts +161 -0
  846. package/src/layout/fdp/tlayout-init.ts +230 -0
  847. package/src/layout/fdp/tlayout-parms.ts +234 -0
  848. package/src/layout/fdp/tlayout.ts +317 -0
  849. package/src/layout/fdp/xlayout.ts +350 -0
  850. package/src/layout/neato/bfs.ts +131 -0
  851. package/src/layout/neato/cdt-surface.ts +693 -0
  852. package/src/layout/neato/conjgrad.ts +159 -0
  853. package/src/layout/neato/delaunay.ts +259 -0
  854. package/src/layout/neato/dijkstra.ts +296 -0
  855. package/src/layout/neato/fdp-adjust.ts +124 -0
  856. package/src/layout/neato/index.ts +310 -0
  857. package/src/layout/neato/init.ts +505 -0
  858. package/src/layout/neato/legal.ts +316 -0
  859. package/src/layout/neato/matrix-ops.ts +112 -0
  860. package/src/layout/neato/multispline-router.ts +417 -0
  861. package/src/layout/neato/multispline.ts +427 -0
  862. package/src/layout/neato/overlap-prism.ts +503 -0
  863. package/src/layout/neato/overlap.ts +158 -0
  864. package/src/layout/neato/sc-adjust.ts +206 -0
  865. package/src/layout/neato/sep-factor.ts +118 -0
  866. package/src/layout/neato/set-aspect.ts +178 -0
  867. package/src/layout/neato/sgd.ts +461 -0
  868. package/src/layout/neato/splines.ts +1014 -0
  869. package/src/layout/neato/stress-kernel.ts +362 -0
  870. package/src/layout/neato/stress.ts +420 -0
  871. package/src/layout/osage/index.ts +548 -0
  872. package/src/layout/osage/layout.ts +254 -0
  873. package/src/layout/osage/types.ts +31 -0
  874. package/src/layout/pack/array-pack.ts +254 -0
  875. package/src/layout/pack/index.ts +570 -0
  876. package/src/layout/pack/poly-pack.ts +266 -0
  877. package/src/layout/pack/poly-place.ts +426 -0
  878. package/src/layout/pack/spiral-search.ts +106 -0
  879. package/src/layout/pack/test-helpers.ts +46 -0
  880. package/src/layout/pack/types.ts +85 -0
  881. package/src/layout/patchwork/index.ts +441 -0
  882. package/src/layout/patchwork/tree-map.ts +183 -0
  883. package/src/layout/patchwork/tree-node.ts +120 -0
  884. package/src/layout/sfdp/index.ts +231 -0
  885. package/src/layout/sfdp/init.ts +224 -0
  886. package/src/layout/sfdp/multilevel.ts +262 -0
  887. package/src/layout/sfdp/quadtree.ts +267 -0
  888. package/src/layout/sfdp/sparse-matrix-multiply.ts +160 -0
  889. package/src/layout/sfdp/sparse-matrix.ts +367 -0
  890. package/src/layout/sfdp/sparse-solve.ts +122 -0
  891. package/src/layout/sfdp/spring-driver.ts +209 -0
  892. package/src/layout/sfdp/spring-electrical.ts +431 -0
  893. package/src/layout/twopi/circle.ts +339 -0
  894. package/src/layout/twopi/index.ts +78 -0
  895. package/src/layout/twopi/init.ts +174 -0
  896. package/src/layout/twopi/pipeline.ts +98 -0
  897. package/src/layout/twopi/twopi-test-helpers.ts +44 -0
  898. package/src/model/algData.ts +194 -0
  899. package/src/model/cgraph-ops.ts +175 -0
  900. package/src/model/edge.ts +104 -0
  901. package/src/model/edgeInfo.ts +431 -0
  902. package/src/model/geom.ts +204 -0
  903. package/src/model/graph.ts +172 -0
  904. package/src/model/graphInfo.ts +528 -0
  905. package/src/model/index.ts +10 -0
  906. package/src/model/layoutParams.ts +127 -0
  907. package/src/model/node.ts +138 -0
  908. package/src/model/nodeInfo.ts +424 -0
  909. package/src/model/rankEntry.ts +95 -0
  910. package/src/ortho/chan-dict.ts +236 -0
  911. package/src/ortho/fpq.ts +149 -0
  912. package/src/ortho/index.ts +206 -0
  913. package/src/ortho/maze-channels.ts +196 -0
  914. package/src/ortho/maze.ts +311 -0
  915. package/src/ortho/ortho-parallel.ts +254 -0
  916. package/src/ortho/ortho-route.ts +349 -0
  917. package/src/ortho/partition.ts +303 -0
  918. package/src/ortho/rawgraph.ts +119 -0
  919. package/src/ortho/sgraph.ts +283 -0
  920. package/src/ortho/trap-query.ts +174 -0
  921. package/src/ortho/trap-segment.ts +303 -0
  922. package/src/ortho/trap-types.ts +171 -0
  923. package/src/ortho/trap-update.ts +89 -0
  924. package/src/ortho/trapezoid.ts +120 -0
  925. package/src/ortho/types.ts +286 -0
  926. package/src/parser/__fixtures__/directed.dot +10 -0
  927. package/src/parser/__fixtures__/simple.dot +7 -0
  928. package/src/parser/__fixtures__/subgraph.dot +17 -0
  929. package/src/parser/ast.ts +64 -0
  930. package/src/parser/builder.ts +401 -0
  931. package/src/parser/dot.d.ts +208 -0
  932. package/src/parser/dot.js +3321 -0
  933. package/src/parser/dot.pegjs +263 -0
  934. package/src/parser/index.ts +353 -0
  935. package/src/pathplan/index.ts +9 -0
  936. package/src/pathplan/route.ts +284 -0
  937. package/src/pathplan/shortest.ts +268 -0
  938. package/src/pathplan/solvers.ts +65 -0
  939. package/src/pathplan/triang.ts +221 -0
  940. package/src/pathplan/types.ts +16 -0
  941. package/src/pathplan/visibility.ts +170 -0
  942. package/src/pathplan/vispath.ts +118 -0
  943. package/src/rbtree/index.ts +418 -0
  944. package/src/render/color-resolve.ts +171 -0
  945. package/src/render/dot.ts +1514 -0
  946. package/src/render/index.ts +29 -0
  947. package/src/render/json.ts +734 -0
  948. package/src/render/map-test-helpers.ts +61 -0
  949. package/src/render/map.ts +528 -0
  950. package/src/render/public.ts +131 -0
  951. package/src/render/svg-arrow-ops.ts +113 -0
  952. package/src/render/svg-cluster.ts +24 -0
  953. package/src/render/svg-edge-ortho-radius.ts +228 -0
  954. package/src/render/svg-edge-split.ts +180 -0
  955. package/src/render/svg-gradient.ts +185 -0
  956. package/src/render/svg-graph.ts +415 -0
  957. package/src/render/svg-helpers.ts +623 -0
  958. package/src/render/svg-id.ts +76 -0
  959. package/src/render/svg-multicolor.ts +313 -0
  960. package/src/render/svg-parallel-edge.ts +123 -0
  961. package/src/render/svg-tapered-edge.ts +56 -0
  962. package/src/render/svg.ts +307 -0
  963. package/src/render/xdot-public.ts +164 -0
  964. package/src/render/xml-escape.ts +56 -0
  965. package/src/util/agxbuf.ts +138 -0
  966. package/src/util/bsd-qsort.ts +251 -0
  967. package/src/util/index.ts +25 -0
  968. package/src/util/list.ts +122 -0
  969. package/src/util/math.ts +104 -0
  970. package/src/util/mt19937.ts +143 -0
  971. package/src/util/printf-round.ts +163 -0
  972. package/src/util/xml.ts +184 -0
  973. package/src/vpsc/Block.ts +375 -0
  974. package/src/vpsc/Blocks.ts +164 -0
  975. package/src/vpsc/Constraint.ts +94 -0
  976. package/src/vpsc/HeapUtils.ts +88 -0
  977. package/src/vpsc/Solver.ts +274 -0
  978. package/src/vpsc/SweepLine.ts +214 -0
  979. package/src/vpsc/Variable.ts +54 -0
  980. package/src/vpsc/index.ts +122 -0
  981. package/src/vpsc/sweepTypes.ts +31 -0
  982. package/src/xdot/index.ts +7 -0
  983. package/src/xdot/lex.ts +151 -0
  984. package/src/xdot/misc.ts +226 -0
  985. package/src/xdot/parse.ts +349 -0
  986. package/src/xdot/types.ts +158 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Cluster expansion, rank merging, cluster marking, and skeleton building
3
+ * for the dot layout engine.
4
+ *
5
+ * @see lib/dotgen/cluster.c
6
+ */
7
+ import type { Graph } from '../../model/graph.js';
8
+ import type { Node } from '../../model/node.js';
9
+ import type { Edge } from '../../model/edge.js';
10
+ import type { MincrossContext } from './mincross-utils.js';
11
+ import { mergeChain } from './classify.js';
12
+ export { CLUSTER_EDGE } from './cluster-path.js';
13
+ export { mapInterclustNode } from './cluster-path.js';
14
+ export { mergeChain };
15
+ /**
16
+ * True when edges e and f can be merged as parallel intercluster edges.
17
+ * Must match C exactly: same tail, same head, same label identity, and equal ports.
18
+ *
19
+ * @see lib/dotgen/class2.c:mergeable
20
+ */
21
+ export declare function interclexpMergeable(prev: Edge | undefined, e: Edge): boolean;
22
+ /** Rank equality helper — extracts ?? so callers stay below CCN 10. */
23
+ export declare function interclexpRanksEq(e: Edge): boolean;
24
+ /** Head-rank-higher helper — extracts ?? so callers stay below CCN 10. */
25
+ export declare function interclexpHeadHigher(e: Edge): boolean;
26
+ /** @see lib/dotgen/cluster.c:interclexp (flat edge case) */
27
+ export declare function interclexpFlat(g: Graph, e: Edge, prev: Edge | undefined): Edge | undefined;
28
+ /** @see lib/dotgen/cluster.c:interclexp (mergeable multi-edge case) */
29
+ export declare function interclexpMergeCase(subg: Graph, e: Edge, prev: Edge): Edge | undefined;
30
+ /** @see lib/dotgen/cluster.c:interclexp (single edge processing) */
31
+ export declare function interclexpOneEdge(subg: Graph, g: Graph, e: Edge, prev: Edge | undefined): Edge | undefined;
32
+ /** @see lib/dotgen/cluster.c:interclexp */
33
+ export declare function interclexp(subg: Graph): void;
34
+ /** Return [minrank, maxrank] defaults-to-0, factoring out ?? for callers. */
35
+ export declare function subgraphBounds(g: Graph): [number, number];
36
+ /** @see lib/dotgen/cluster.c:merge_ranks (slot setup for one rank) */
37
+ export declare function mergeRanksSetup(subg: Graph, root: Graph, r: number, pos: number): number;
38
+ /** @see lib/dotgen/cluster.c:merge_ranks (node move for one rank) */
39
+ export declare function mergeRanksInstall(subg: Graph, root: Graph, r: number, ipos: number): void;
40
+ /** @see lib/dotgen/cluster.c:merge_ranks (per-rank body) */
41
+ export declare function mergeRanksOne(subg: Graph, root: Graph, r: number): void;
42
+ /** @see lib/dotgen/cluster.c:merge_ranks */
43
+ export declare function mergeRanks(subg: Graph): void;
44
+ /** @see lib/dotgen/cluster.c:remove_rankleaders */
45
+ export declare function removeRankleaders(g: Graph): void;
46
+ /** Minimal MincrossContext for cluster expansion (no crossing minimization). */
47
+ export declare function makeClusterCtx(root: Graph, mn: number, mx: number): MincrossContext;
48
+ /** @see lib/dotgen/cluster.c:expand_cluster */
49
+ export declare function expandCluster(subg: Graph): number;
50
+ /** @see lib/dotgen/cluster.c:mark_clusters (virtual node marking) */
51
+ export declare function markClustersVnodes(clust: Graph, n: Node): void;
52
+ /**
53
+ * Mirror cgraph agdelnode(clust, n): remove the node from the cluster subgraph
54
+ * AND delete its incident edges from the subgraph (node_induce/mark_clusters
55
+ * induce root edges whose endpoints are transient cluster members; deleting only
56
+ * the node leaves the edge behind, so agContainsEdge wrongly reports it internal
57
+ * — 1332 chain orphaned, b53 foreign node re-ranked). agdelete affects the
58
+ * subgraph only, not root/ancestors. @see lib/dotgen/cluster.c:mark_clusters
59
+ */
60
+ export declare function agDeleteFromCluster(clust: Graph, n: Node): void;
61
+ /**
62
+ * C node_induce first loop: a node is in at most one cluster at this level. A
63
+ * node already claimed by an earlier sibling cluster (ranktype set, or contained
64
+ * in another of par's clusters) is agdeleted from clust — node AND incident
65
+ * edges — so this cluster's internal dot1Rank does not re-rank the foreign node
66
+ * (b53: node_49 owned by cluster_node_43 was also ranked by cluster_node_52,
67
+ * clobbering its rank). makeNewCluster has not yet added clust to par.clust, so
68
+ * par.clust holds only earlier siblings. @see lib/dotgen/rank.c:node_induce
69
+ */
70
+ export declare function pruneForeignClusterNodes(par: Graph, clust: Graph): void;
71
+ /**
72
+ * mark_clusters per-node: claim `n` for `clust`, or agdelete it if already
73
+ * claimed (first-cluster-wins). ranktype defaults to NORMAL(==0) in C (calloc);
74
+ * TS leaves it undefined, so coerce undefined→0 — else untouched NORMAL nodes
75
+ * are wrongly skipped and never receive ND_clust. @see lib/dotgen/cluster.c:mark_clusters
76
+ */
77
+ export declare function markClusterNode(clust: Graph, n: Node, g: Graph): void;
78
+ /** @see lib/dotgen/cluster.c:mark_clusters */
79
+ export declare function markClusters(g: Graph): void;
80
+ /** @see lib/dotgen/cluster.c:build_skeleton (edge span accumulation) */
81
+ export declare function buildSkeletonEdgeCounts(subg: Graph, v: Node): void;
82
+ /** @see lib/dotgen/cluster.c:build_skeleton (per-node count update) */
83
+ export declare function buildSkeletonCountsNode(subg: Graph, v: Node): void;
84
+ /** @see lib/dotgen/cluster.c:build_skeleton (trim UF_size) */
85
+ export declare function buildSkeletonTrimSize(subg: Graph, mn: number, mx: number): void;
86
+ /** @see lib/dotgen/cluster.c:build_skeleton (edge count accumulation) */
87
+ export declare function buildSkeletonCounts(_g: Graph, subg: Graph, mn: number, mx: number): void;
88
+ /** @see lib/dotgen/cluster.c:build_skeleton */
89
+ export declare function buildSkeleton(g: Graph, subg: Graph): void;
90
+ /** @see lib/dotgen/cluster.c:install_cluster (rank install loop) */
91
+ export declare function installClusterRanks(ctx: MincrossContext, g: Graph, clust: Graph, mn: number, mx: number): number;
92
+ /** @see lib/dotgen/cluster.c:install_cluster */
93
+ export declare function installCluster(g: Graph, n: Node, pass: number, q: Node[]): number;
94
+ /** @see lib/dotgen/cluster.c:mark_lowclusters (clear pass) */
95
+ export declare function markLowclustersZap(root: Graph): void;
96
+ /** @see lib/dotgen/cluster.c:mark_lowclusters (virtual chain assign for one edge) */
97
+ export declare function markLowclusterChain(orig: Edge, g: Graph): void;
98
+ /** @see lib/dotgen/cluster.c:mark_lowclusters (assign pass, recursive) */
99
+ export declare function markLowclusterBasic(g: Graph): void;
100
+ /** @see lib/dotgen/cluster.c:mark_lowclusters */
101
+ export declare function markLowclusters(root: Graph): void;
102
+ //# sourceMappingURL=cluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/cluster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Geometric helpers for compound edge clipping — bezier subdivision,
3
+ * crossing detection, spline/box intersection.
4
+ *
5
+ * @see lib/dotgen/compound.c
6
+ */
7
+ import type { Point, Box } from '../../model/geom.js';
8
+ /** Sign comparison matching C fcmp(). @see lib/util/gv_math.h:fcmp */
9
+ export declare function fcmp(a: number, b: number): number;
10
+ /** True if p is on or inside box bb. @see lib/dotgen/compound.c:inBoxf */
11
+ export declare function inBoxf(p: Point, bb: Box): boolean;
12
+ /** Midpoint of two points. @see lib/common/utils.c:mid_pointf */
13
+ export declare function midPointf(a: Point, b: Point): Point;
14
+ type CasteljauRow = [Point, Point, Point, Point];
15
+ /** One De Casteljau subdivision step. */
16
+ export declare function casteljauStep(prev: CasteljauRow, t: number): CasteljauRow;
17
+ /** Subdivide cubic Bezier at t; return left or right half. @see lib/common/utils.c:Bezier */
18
+ export declare function subdivideBezier(v: readonly Point[], t: number, side: 'left' | 'right'): Point[];
19
+ /** Count control-polygon crossings of x = xcoord. */
20
+ export declare function countVertCross(pts: Point[], xcoord: number): number;
21
+ /** Count control-polygon crossings of y = ycoord. */
22
+ export declare function countHorzCross(pts: Point[], ycoord: number): number;
23
+ /** Axis-range constraint for findVertical / findHorizontal. */
24
+ export interface AxisRange {
25
+ coord: number;
26
+ lo: number;
27
+ hi: number;
28
+ }
29
+ /** Extract AxisRange for the vertical sides of a box. */
30
+ export declare function vertRange(bb: Box, side: 'left' | 'right'): AxisRange;
31
+ /** Extract AxisRange for the horizontal sides of a box. */
32
+ export declare function horzRange(bb: Box, side: 'bottom' | 'top'): AxisRange;
33
+ /** nc===1 endpoint check: return tmax only if endpoint is ON the line and in range. */
34
+ export declare function checkVertEndpoint(p3: Point, ax: AxisRange, tmax: number): number;
35
+ /** nc===1 endpoint check: return tmax only if endpoint is ON the line and in range. */
36
+ export declare function checkHorzEndpoint(p3: Point, ax: AxisRange, tmax: number): number;
37
+ /** Subdivide-and-recurse for vertical crossing search. */
38
+ export declare function searchVert(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
39
+ /** Find first t where Bezier crosses x=ax.coord, y in [ax.lo,ax.hi]. @see lib/dotgen/compound.c:findVertical */
40
+ export declare function findVertical(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
41
+ /** Subdivide-and-recurse for horizontal crossing search. */
42
+ export declare function searchHorz(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
43
+ /** Find first t where Bezier crosses y=ax.coord, x in [ax.lo,ax.hi]. @see lib/dotgen/compound.c:findHorizontal */
44
+ export declare function findHorizontal(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
45
+ /** Update best-t and truncate pts to that crossing. */
46
+ export declare function tryUpdateIntersect(t: number, tmin: number, orig: Point[], pts: Point[]): number;
47
+ /**
48
+ * Find earliest Bezier/box crossing; truncate pts to that point.
49
+ * @see lib/dotgen/compound.c:splineIntersectf
50
+ */
51
+ export declare function splineIntersectf(pts: Point[], bb: Box): boolean;
52
+ /** Left-side intersection of pp→cp with bb. */
53
+ export declare function tryLeftSide(pp: Point, cp: Point, bb: Box): Point | null;
54
+ /** Right-side intersection of pp→cp with bb. */
55
+ export declare function tryRightSide(pp: Point, cp: Point, bb: Box): Point | null;
56
+ /** Bottom-side intersection of pp→cp with bb. */
57
+ export declare function tryBottomSide(pp: Point, cp: Point, bb: Box): Point | null;
58
+ /** Top-side intersection of pp→cp with bb. */
59
+ export declare function tryTopSide(pp: Point, cp: Point, bb: Box): Point | null;
60
+ /**
61
+ * Intersection of segment [pp→cp] with box bb (pp inside/on, cp outside).
62
+ * Tries sides in C order: left, right, bottom, top. The slope-scaled delta
63
+ * is rounded with C `round()` (half away from zero) — it is negative
64
+ * whenever the cluster wall lies below/left of the endpoint.
65
+ * @see lib/dotgen/compound.c:boxIntersectf
66
+ */
67
+ export declare function boxIntersectf(pp: Point, cp: Point, bb: Box): Point;
68
+ export {};
69
+ //# sourceMappingURL=compound-clip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compound-clip.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound-clip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Geometric primitives for compound-edge spline clipping.
3
+ * Bezier subdivision, crossing detection, and box-intersection math
4
+ * extracted from lib/dotgen/compound.c.
5
+ *
6
+ * @see lib/dotgen/compound.c
7
+ */
8
+ import type { Point, Box } from '../../model/geom.js';
9
+ /**
10
+ * Sign comparison for doubles, matching C fcmp().
11
+ * Returns -1, 0, or 1.
12
+ *
13
+ * @see lib/util/gv_math.h:fcmp
14
+ */
15
+ export declare function fcmp(a: number, b: number): number;
16
+ /**
17
+ * Returns true if point p is on or inside box bb.
18
+ *
19
+ * @see lib/dotgen/compound.c:inBoxf
20
+ */
21
+ export declare function inBoxf(p: Point, bb: Box): boolean;
22
+ /**
23
+ * Midpoint of two points. Matches C mid_pointf().
24
+ *
25
+ * @see lib/common/utils.c:mid_pointf
26
+ */
27
+ export declare function midPointf(a: Point, b: Point): Point;
28
+ /** One triangle row for De Casteljau; avoids nested array allocation. */
29
+ type CasteljauRow = [Point, Point, Point, Point];
30
+ /** Compute one row of the De Casteljau triangle at parameter t. */
31
+ export declare function casteljauStep(prev: CasteljauRow, t: number): CasteljauRow;
32
+ /**
33
+ * De Casteljau subdivision of a cubic Bezier at parameter t.
34
+ * Returns left-half or right-half control points.
35
+ * Matches C Bezier() triangle computation.
36
+ *
37
+ * @see lib/common/utils.c:Bezier
38
+ */
39
+ export declare function subdivideBezier(v: readonly Point[], t: number, side: 'left' | 'right'): Point[];
40
+ /**
41
+ * Count control-polygon crossings of vertical line x = xcoord.
42
+ *
43
+ * @see lib/dotgen/compound.c:countVertCross
44
+ */
45
+ export declare function countVertCross(pts: Point[], xcoord: number): number;
46
+ /**
47
+ * Count control-polygon crossings of horizontal line y = ycoord.
48
+ *
49
+ * @see lib/dotgen/compound.c:countHorzCross
50
+ */
51
+ export declare function countHorzCross(pts: Point[], ycoord: number): number;
52
+ /**
53
+ * Axis-line specification for findAxisCrossing.
54
+ * Bundles the line coordinate and perpendicular range to avoid 6-param
55
+ * signatures on recursive calls.
56
+ */
57
+ export interface LineSpec {
58
+ /** The coordinate of the axis-aligned line being tested. */
59
+ lineCoord: number;
60
+ /** Lower bound of the perpendicular range. */
61
+ rangeMin: number;
62
+ /** Upper bound of the perpendicular range. */
63
+ rangeMax: number;
64
+ /** 'v' = vertical (x = lineCoord); 'h' = horizontal (y = lineCoord). */
65
+ axis: 'v' | 'h';
66
+ }
67
+ /** Return true if the Bezier endpoint lies within spec's perpendicular range. */
68
+ export declare function endpointInRange(pts: Point[], spec: LineSpec): boolean;
69
+ /** Return true if the endpoint coord is within 0.005 of the line. */
70
+ export declare function endpointNearLine(pts: Point[], spec: LineSpec): boolean;
71
+ /** Count crossings of pts with the axis line described by spec. */
72
+ export declare function countCrossings(pts: Point[], spec: LineSpec): number;
73
+ /**
74
+ * Find the first t in [tmin, tmax] where the Bezier crosses the axis line
75
+ * described by spec. Returns -1 if not found.
76
+ * Recursive binary subdivision (Graphics Gems pp.411-415).
77
+ *
78
+ * Replaces findVertical and findHorizontal from compound.c.
79
+ *
80
+ * @see lib/dotgen/compound.c:findVertical
81
+ * @see lib/dotgen/compound.c:findHorizontal
82
+ */
83
+ export declare function findAxisCrossing(pts: Point[], tmin: number, tmax: number, spec: LineSpec): number;
84
+ /** Update best-t and rewrite pts[0..3] from orig at parameter t if better. */
85
+ export declare function tryUpdateIntersect(t: number, tmin: number, orig: Point[], pts: Point[]): number;
86
+ /** Build the four LineSpec values for the sides of a box. */
87
+ export declare function boxLineSpecs(bb: Box): [LineSpec, LineSpec, LineSpec, LineSpec];
88
+ /**
89
+ * Find the earliest intersection of Bezier pts[0..3] with box bb and
90
+ * truncate pts to that point. Returns true when an intersection was found.
91
+ *
92
+ * @see lib/dotgen/compound.c:splineIntersectf
93
+ */
94
+ export declare function splineIntersectf(pts: Point[], bb: Box): boolean;
95
+ /** Check left-side intersection of segment pp→cp with bb. */
96
+ export declare function tryLeftSide(pp: Point, cp: Point, bb: Box): Point | null;
97
+ /** Check right-side intersection of segment pp→cp with bb. */
98
+ export declare function tryRightSide(pp: Point, cp: Point, bb: Box): Point | null;
99
+ /** Check bottom-side intersection of segment pp→cp with bb. */
100
+ export declare function tryBottomSide(pp: Point, cp: Point, bb: Box): Point | null;
101
+ /** Check top-side intersection of segment pp→cp with bb. */
102
+ export declare function tryTopSide(pp: Point, cp: Point, bb: Box): Point | null;
103
+ /**
104
+ * Find intersection of segment [pp, cp] with box bb.
105
+ * pp is inside/on the box; cp is outside. Tries four sides in C order.
106
+ * The slope-scaled delta is rounded with C `round()` (half away from zero),
107
+ * NOT Math.round: the delta is negative whenever the cluster wall lies
108
+ * below/left of the endpoint, and dot node coords are integers here, so
109
+ * exact .5 ties are routine.
110
+ *
111
+ * @see lib/dotgen/compound.c:boxIntersectf
112
+ */
113
+ export declare function boxIntersectf(pp: Point, cp: Point, bb: Box): Point;
114
+ export {};
115
+ //# sourceMappingURL=compound-geom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compound-geom.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound-geom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Compound edge support — clips splines to cluster bounding boxes.
3
+ *
4
+ * @see lib/dotgen/compound.c
5
+ */
6
+ import type { Point, Box, Bezier } from '../../model/geom.js';
7
+ import type { Graph } from '../../model/graph.js';
8
+ import type { Edge } from '../../model/edge.js';
9
+ export { fcmp, inBoxf, midPointf, casteljauStep, subdivideBezier, countVertCross, countHorzCross, tryUpdateIntersect, splineIntersectf, tryLeftSide, tryRightSide, tryBottomSide, tryTopSide, boxIntersectf, } from './compound-clip.js';
10
+ /** Recursively populate name→cluster map. @see lib/common/utils.c:fillMap */
11
+ export declare function fillClustMap(g: Graph, map: Map<string, Graph>): void;
12
+ /** Build a name→cluster map for all clusters reachable from g. @see lib/common/utils.c:mkClustMap */
13
+ export declare function mkClustMap(g: Graph): Map<string, Graph>;
14
+ interface ClipState {
15
+ e: Edge;
16
+ bez: Bezier;
17
+ size: number;
18
+ endi: number;
19
+ starti: number;
20
+ }
21
+ /** Degenerate head clip: first control point already inside cluster bb. */
22
+ export declare function clipHeadDegenerate(state: ClipState, bb: Box, ep: Point): void;
23
+ /** Normal head clip: scan forward for first segment exiting cluster bb. */
24
+ export declare function clipHeadNormal(state: ClipState, bb: Box): void;
25
+ /** Apply head clip when head node coord is inside cluster bb. */
26
+ export declare function applyHeadClip(state: ClipState, bb: Box): boolean;
27
+ /** Clip head end of edge; returns true when clipping was applied. @see lib/dotgen/compound.c */
28
+ export declare function clipHead(state: ClipState, bb: Box, headInBox: boolean): boolean;
29
+ /** Degenerate tail clip: last selected control point is inside cluster bb. */
30
+ export declare function clipTailDegenerate(state: ClipState, bb: Box): void;
31
+ /** Normal tail clip: scan backward for last segment exiting cluster bb. */
32
+ export declare function clipTailNormal(state: ClipState, bb: Box): void;
33
+ /** Apply tail clip. */
34
+ export declare function applyTailClip(state: ClipState, bb: Box): boolean;
35
+ /** Clip tail end of edge; returns true when clipping was applied. @see lib/dotgen/compound.c */
36
+ export declare function clipTail(state: ClipState, bb: Box, tailInBox: boolean): boolean;
37
+ export declare function resolveClusterPair(e: Edge, clustMap: Map<string, Graph>): {
38
+ lh: Graph | null;
39
+ lt: Graph | null;
40
+ };
41
+ /** Returns false when edge is not eligible for compound clipping. */
42
+ export declare function isCompoundEdgeEligible(e: Edge): boolean;
43
+ /** Replace bez.list with the trimmed slice [starti..endi]. */
44
+ export declare function applyBezierSlice(state: ClipState): void;
45
+ /**
46
+ * Clip the spline for edge e against its lhead/ltail cluster bounding boxes,
47
+ * re-clipping the arrowhead(s) to the new cluster-boundary tips.
48
+ * @see lib/dotgen/compound.c:makeCompoundEdge
49
+ */
50
+ export declare function makeCompoundEdge(e: Edge, clustMap: Map<string, Graph>): void;
51
+ /**
52
+ * Clip splines at cluster boundaries for edges with lhead/ltail attributes.
53
+ * @see lib/dotgen/compound.c:dot_compoundEdges
54
+ */
55
+ export declare function dotCompoundEdges(g: Graph): void;
56
+ //# sourceMappingURL=compound.d.ts.map
@@ -0,0 +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,aAAa,EAAE,eAAe,EACvD,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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * TypeScript port of lib/dotgen/conc.c — dot_concentrate.
3
+ *
4
+ * Build edge concentrators for parallel edges with a common endpoint.
5
+ *
6
+ * @see lib/dotgen/conc.c
7
+ */
8
+ import type { Graph } from '../../model/graph.js';
9
+ import type { Node } from '../../model/node.js';
10
+ import type { Edge } from '../../model/edge.js';
11
+ import type { Port } from '../../model/geom.js';
12
+ /** @see lib/dotgen/dotsplines.c:portcmp */
13
+ export declare function portcmp(p0: Port, p1: Port): number;
14
+ /** @see lib/dotgen/conc.c:downcandidate */
15
+ export declare function downcandidate(v: Node): boolean;
16
+ /** @see lib/dotgen/conc.c:upcandidate */
17
+ export declare function upcandidate(v: Node): boolean;
18
+ /** Walk to_orig chain to find the underlying NORMAL edge. */
19
+ export declare function findNormalEdge(e: Edge): Edge | undefined;
20
+ /** @see lib/dotgen/conc.c:samedir */
21
+ export declare function sameDir(e: Edge, f: Edge): boolean;
22
+ /** @see lib/dotgen/conc.c:bothdowncandidates */
23
+ export declare function bothdowncandidates(u: Node, v: Node): boolean;
24
+ /** @see lib/dotgen/conc.c:bothupcandidates */
25
+ export declare function bothupcandidates(u: Node, v: Node): boolean;
26
+ /** Find or create the left-side representative edge in the DOWN merge. */
27
+ export declare function resolveDownRep(left: Node, headNode: Node, e: Edge): Edge;
28
+ /** Drain all in-edges from right into f, then delete e. */
29
+ export declare function drainIntoDown(right: Node, f: Edge, e: Edge): void;
30
+ /** Merge one out-edge of right into left (DOWN direction). */
31
+ export declare function mergeOneOutEdge(left: Node, right: Node): void;
32
+ /** Find or create the left-side representative edge in the UP merge. */
33
+ export declare function resolveUpRep(left: Node, tailNode: Node, e: Edge): Edge;
34
+ /** Drain all out-edges from right into f, then delete e. */
35
+ export declare function drainIntoUp(right: Node, f: Edge, e: Edge): void;
36
+ /** Merge one in-edge of right into left (UP direction). */
37
+ export declare function mergeOneInEdge(left: Node, right: Node): void;
38
+ /** Compact the rank array after merging positions lpos+1..rpos into lpos. */
39
+ export declare function compactRank(g: Graph, r: number, lpos: number, rpos: number): void;
40
+ /** Merge right into left using DOWN semantics. */
41
+ export declare function absorbNodeDown(left: Node, right: Node, g: Graph): void;
42
+ /** Merge right into left using UP semantics. */
43
+ export declare function absorbNodeUp(left: Node, right: Node, g: Graph): void;
44
+ /** @see lib/dotgen/conc.c:mergevirtual */
45
+ export declare function mergeVirtual(g: Graph, r: number, lpos: number, rpos: number, dir: number): void;
46
+ /** @see lib/dotgen/conc.c:infuse */
47
+ export declare function infuse(g: Graph, n: Node): void;
48
+ /** Infuse virtual nodes along the to_virt/out chain of edge e. */
49
+ export declare function infuseEdgeChain(g: Graph, e: Edge): void;
50
+ /** True if virtual node n's orig edge has both endpoints in g. */
51
+ export declare function virtNodeInGraph(g: Graph, n: Node): boolean;
52
+ /** Compute the highest valid index (maxi) for one rank vlist. */
53
+ export declare function computeMaxi(g: Graph, r: number): number;
54
+ /** @see lib/dotgen/conc.c:rebuild_vlists — fill one rank's v pointer. */
55
+ export declare function fillRankVlist(g: Graph, r: number, root: Graph): number;
56
+ /** Infuse every node (and its out-edge chains) in g into rankleader. */
57
+ export declare function infuseAllNodes(g: Graph): void;
58
+ /** Fill all per-rank vlists for g using root as the master rank table. */
59
+ export declare function fillAllRankVlists(g: Graph): number;
60
+ /** Recursively rebuild vlists for all clusters of g. */
61
+ export declare function rebuildClusterVlists(g: Graph): number;
62
+ /** @see lib/dotgen/conc.c:rebuild_vlists */
63
+ export declare function rebuildVlists(g: Graph): number;
64
+ /** @see lib/dotgen/conc.c:dot_concentrate — one downward rank sweep */
65
+ export declare function concentrateOneRankDown(g: Graph, r: number): void;
66
+ /** @see lib/dotgen/conc.c:dot_concentrate — one upward rank sweep */
67
+ export declare function concentrateOneRankUp(g: Graph, r: number): void;
68
+ /** Run the downward concentration pass; return the last r examined. */
69
+ export declare function runDownPass(g: Graph): number;
70
+ /** Run the upward concentration pass from r down to 1. */
71
+ export declare function runUpPass(g: Graph, startR: number): void;
72
+ /**
73
+ * Build edge concentrators for parallel edges with a common endpoint.
74
+ *
75
+ * The final cluster loop here is a distinct call site from
76
+ * `rebuildClusterVlists`'s recursive nested-cluster loop inside
77
+ * `rebuildVlists` — C's `dot_concentrate` (conc.c:237-243) calls
78
+ * `rebuild_vlists` directly on each of `g`'s own top-level clusters and, on
79
+ * ANY failure (including one bubbled up from a doubly-nested cluster),
80
+ * reports a single `agerr(AGPREV, ...)` continuation line (no "Error:"/
81
+ * "Warning:" prefix — AGPREV reuses the previous call's level) and
82
+ * normalizes the return to -1. Do not fold this into `rebuildClusterVlists`:
83
+ * that helper is also called recursively from inside `rebuildVlists` itself,
84
+ * where C does NOT emit this message.
85
+ * @see lib/dotgen/conc.c:dot_concentrate
86
+ */
87
+ export declare function dotConcentrate(g: Graph): number;
88
+ //# sourceMappingURL=conc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conc.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/conc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /** @see lib/dotgen/decomp.c @see lib/common/utils.c (UF_*) */
2
+ import type { Node } from '../../model/node.js';
3
+ import type { Graph } from '../../model/graph.js';
4
+ import type { EdgeList } from '../../model/nodeInfo.js';
5
+ /**
6
+ * Return `g`'s member nodes in AGSEQ order (global, root-graph-wide creation
7
+ * order), mirroring `agfstnode(g)`/`agnxtnode(g,n)` — NOT the subgraph-local
8
+ * first-insertion order that `g.nodes` (a `Map`) iterates by default.
9
+ *
10
+ * C's `agfstnode` walks a dict ordered by `agsubnodeseqcmpf`
11
+ * (`AGSEQ(node)`, assigned once at node creation and never touched by later
12
+ * `agsubnode` membership calls), independent of which subgraph a node was
13
+ * textually declared in. `Node.id` mirrors AGSEQ (assigned once at first
14
+ * global creation by `NodeRegistry.ensure`/`agnode`'s `freshNodeId`), so a
15
+ * `.id`-ascending sort reproduces C's order for any (sub)graph.
16
+ *
17
+ * Every C function that iterates a subgraph via `agfstnode`/`agnxtnode` must
18
+ * use this helper instead of `g.nodes.values()` directly — see F7's audit
19
+ * table in `.agent-notes/path-structure-xns-residuals.md` for the site list.
20
+ *
21
+ * @see lib/cgraph/node.c:43 (agfstnode), :50 (agnxtnode)
22
+ * @see lib/cgraph/node.c:283-290 (agsubnodeseqcmpf, AGSEQ comparator)
23
+ * @see lib/cgraph/node.c:162 (agnextseq(g,AGNODE), AGSEQ assignment at creation)
24
+ */
25
+ export declare function nodesInSeq(g: Graph): Node[];
26
+ /** @see lib/common/utils.c:UF_find */
27
+ export declare function ufFind(n: Node): Node;
28
+ /**
29
+ * Union two UF sets. Inlines ufRoot (init + find).
30
+ *
31
+ * C's tie-break reads `ND_id(u) > ND_id(v)` — but `ND_id` is a distinct,
32
+ * dotgen-only `Agnodeinfo_t.id` field (lib/common/types.h:432, guarded by
33
+ * `#ifndef DOT_ONLY`) that is NEVER assigned anywhere in the `dot` layout
34
+ * engine's source (only neatogen/fdpgen/sfdpgen/sparse — unrelated engines —
35
+ * write it). It is therefore always 0 for both real and virtual nodes under
36
+ * `dot`, so `ND_id(u) > ND_id(v)` is always false and C always takes the
37
+ * `else` branch: the first argument's resolved root unconditionally wins.
38
+ * This is NOT the same field as AGID (cgraph's unique per-node id, exposed
39
+ * here as `Node.id`) — using `.id` for this comparison would introduce
40
+ * spurious branching C never performs, since AGID differs between every
41
+ * pair of real nodes.
42
+ * @see lib/common/utils.c:UF_union
43
+ */
44
+ export declare function ufUnion(u: Node, v: Node): Node;
45
+ /** @see lib/common/utils.c:UF_singleton */
46
+ export declare function ufSingleton(u: Node): void;
47
+ /** @see lib/common/utils.c:UF_setname */
48
+ export declare function ufSetname(u: Node, v: Node): void;
49
+ /**
50
+ * Push unvisited UF-root neighbors onto the BFS stack.
51
+ * @see lib/dotgen/decomp.c (inlined in searchComponent)
52
+ */
53
+ export declare function decompPushNeighbors(stk: Node[], el: EdgeList | undefined, n: Node, cmark: number): void;
54
+ /**
55
+ * BFS over one component; builds g.info.nlist linked list (prev/next).
56
+ * Clears g.info.nlist before traversal.
57
+ * @see lib/dotgen/decomp.c:beginComponent @see lib/dotgen/decomp.c:searchComponent
58
+ */
59
+ export declare function decompSearch(g: Graph, start: Node, cmark: number): void;
60
+ /**
61
+ * Find connected components and store in `g.info.comp`.
62
+ * pass=0: real nodes. pass=1: cluster skeleton leaders.
63
+ * @see lib/dotgen/decomp.c:decompose
64
+ */
65
+ export declare function decompose(g: Graph, pass: 0 | 1): void;
66
+ //# sourceMappingURL=decomp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decomp.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/decomp.ts"],"names":[],"mappings":"AACA,+DAA+D;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAMxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,CAE3C;AAMD,sCAAsC;AACtC,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAOpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAU9C;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEzC;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAGhD;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAC5D,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAoBvE;AAcD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAWrD"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Edge routing order for dot, matching C `dot_splines_`.
3
+ *
4
+ * C routes edges from a list built rank-major (`GD_rank[i].v[j]` out-edges of
5
+ * NORMAL / splineMerge nodes) then `qsort`-ed by `edgecmp`. Because
6
+ * `recover_slack` re-centres shared virtual nodes that other edges read as
7
+ * `maximal_bbox` neighbours, corridor geometry is routing-order-dependent — so
8
+ * the port must route in C's order, not `g.nodes.values()` insertion order.
9
+ *
10
+ * The port iterates the ORIGINAL edges directly (real tails), so `edgecmp`'s
11
+ * `getmainedge` mapping is the identity here and the rank/coord keys read the
12
+ * original endpoints. `AGSEQ` (the port's `Edge.seq`) is unique, making the
13
+ * comparator a total order — a stable `Array.sort` over any collection order
14
+ * reproduces C's `qsort` result (edgecmp-equal originals never occur, and C
15
+ * batches genuinely-equivalent edges via the cnt-loop, so their relative
16
+ * routing order is immaterial).
17
+ *
18
+ * @see lib/dotgen/dotsplines.c:dot_splines_ (edges list build + sort)
19
+ * @see lib/dotgen/dotsplines.c:edgecmp
20
+ */
21
+ import type { Edge } from '../../model/edge.js';
22
+ /**
23
+ * Compare two original edges in C `dot_splines_` routing order via their
24
+ * lexicographic `edgecmp` keys. @see lib/dotgen/dotsplines.c:edgecmp
25
+ */
26
+ export declare function edgeRouteCmp(a: Edge, b: Edge): number;
27
+ //# sourceMappingURL=edge-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-order.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-order.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AA2BhD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAOrD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Arrowhead polygon geometry for dot-layout edge rendering.
3
+ *
4
+ * @see lib/common/arrows.c:arrow_type_normal0
5
+ * @see lib/common/arrows.c:miter_shape
6
+ */
7
+ import type { Point } from '../../model/geom.js';
8
+ import type { ArrowDrawOp } from '../../common/arrows-types.js';
9
+ /** Arrow length in points. @see lib/common/arrows.c:#define ARROW_LENGTH 10. */
10
+ export declare const ARROW_LENGTH = 10;
11
+ /** Arrow width factor. @see lib/common/arrows.c:arrowwidth = 0.35 */
12
+ export declare const ARROW_WIDTH_FACTOR = 0.35;
13
+ /**
14
+ * Three-point arrowhead polygon: [rightBase, adj_tip, leftBase].
15
+ *
16
+ * Matches C's arrow_type_normal0 for a standard "normal" arrowhead:
17
+ * 1. delta_tip correction shifts both the polygon tip and base TOWARD the
18
+ * shaft by the miter-join extension length, so the filled polygon covers
19
+ * the miter join produced by the SVG renderer at the sharp tip vertex.
20
+ * Formula: (penwidth / (2 * arrowwidth)) * sqrt(1 + arrowwidth^2)
21
+ * 2. Polygon order is [a[1]=right_base, a[2]=adj_tip, a[3]=left_base]
22
+ * (matching gvrender_polygon(job, &a[1], 3)).
23
+ *
24
+ * @see lib/common/arrows.c:arrow_type_normal0
25
+ * @see lib/common/arrows.c:miter_shape
26
+ */
27
+ export declare function arrowheadPolygon(arrowTip: Point, arrowDir: Point, penwidth?: number): Point[];
28
+ /** Minimal edge shape exposing the arrow-related attributes. */
29
+ interface ArrowAttrEdge {
30
+ attrs: Map<string, string>;
31
+ }
32
+ /** The arrowhead/arrowtail name for an edge end (default "normal"). */
33
+ export declare function edgeArrowName(e: ArrowAttrEdge, end: 'head' | 'tail'): string;
34
+ /** The `arrowsize` edge attribute (default 1.0; clamped to ≥0 like late_double). */
35
+ export declare function edgeArrowsize(e: ArrowAttrEdge): number;
36
+ /**
37
+ * Typed arrow draw-ops for one edge end: reads `arrowhead`/`arrowtail` +
38
+ * `arrowsize`, resolves the compound arrow type, and dispatches to the full
39
+ * geometry table (`arrowDrawOps`). `tip` is the node-boundary point, `dir`
40
+ * points from tip toward the shaft (away from the node).
41
+ *
42
+ * @see lib/common/arrows.c:arrow_gen
43
+ */
44
+ export declare function arrowDrawOpsForEnd(e: ArrowAttrEdge, end: 'head' | 'tail', tip: Point, dir: Point, penwidth: number): ArrowDrawOp[];
45
+ export {};
46
+ //# sourceMappingURL=edge-route-arrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-route-arrow.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-route-arrow.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,gFAAgF;AAChF,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,SAAM,GAAG,KAAK,EAAE,CAe1F;AAOD,gEAAgE;AAChE,UAAU,aAAa;IAAG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAEtD,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5E;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAGtD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAC/E,WAAW,EAAE,CAKf"}