@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,359 @@
1
+ // SPDX-License-Identifier: EPL-2.0
2
+
3
+ /**
4
+ * TypeScript port of `graph_init` — the engine-agnostic root-graph
5
+ * initialisation C runs ONCE, for EVERY engine, from `gvLayoutJobs`
6
+ * (`lib/gvc/gvlayout.c:81`) before dispatching to `gvle->layout(g)`:
7
+ *
8
+ * graph_init(g, !!(gvc->layout.features->flags & LAYOUT_USES_RANKDIR));
9
+ *
10
+ * The port previously had no `graph_init` analogue: every field below was
11
+ * re-derived inside each engine's own init, so an engine could silently miss
12
+ * any one of them. That produced three defects of the same class in a row
13
+ * (`common_init_edge` → no `ED_label`; `gv_postprocess` → no xlabel placement;
14
+ * `do_graph_label` → no `GD_label`). This module is the single shared
15
+ * definition; every engine calls it exactly once at the top of its layout.
16
+ *
17
+ * `useRankdir` is true for **dot only** — `LAYOUT_USES_RANKDIR` is set by
18
+ * `plugin/dot_layout/gvlayout_dot_layout.c:27` and by no other layout plugin.
19
+ *
20
+ * @see lib/common/input.c:600 graph_init
21
+ * @see lib/gvc/gvlayout.c:81 (the single, engine-agnostic call site)
22
+ */
23
+
24
+ import type { Graph } from '../model/graph.js';
25
+ import { lateDouble, lateInt, layoutMeasurer } from './nodeinit.js';
26
+ import { POINTS_PER_INCH } from '../model/geom.js';
27
+ import { makeDrawing, FontnameKind } from '../model/layoutParams.js';
28
+ import type { RatioKind } from '../model/layoutParams.js';
29
+ import { doGraphLabel } from '../layout/dot/graph-label.js';
30
+ import { mapbool, setClType, LOCAL, GLOBAL, NOCLUST } from '../layout/dot/rank.js';
31
+ import { cround } from './arith.js';
32
+
33
+ // ---------------------------------------------------------------------------
34
+ // Constants — @see lib/common/const.h
35
+ // ---------------------------------------------------------------------------
36
+
37
+ /** @see lib/common/const.h:RANKDIR_TB */
38
+ export const RANKDIR_TB = 0;
39
+ /** @see lib/common/const.h:RANKDIR_LR */
40
+ export const RANKDIR_LR = 1;
41
+ /** @see lib/common/const.h:RANKDIR_BT */
42
+ export const RANKDIR_BT = 2;
43
+ /** @see lib/common/const.h:RANKDIR_RL */
44
+ export const RANKDIR_RL = 3;
45
+
46
+ /** nodesep / ranksep bounds. @see lib/common/const.h:85-88 */
47
+ const DEFAULT_NODESEP = 0.25;
48
+ const MIN_NODESEP = 0.02;
49
+ const DEFAULT_RANKSEP = 0.5;
50
+ const MIN_RANKSEP = 0.02;
51
+
52
+ /**
53
+ * `POINTS(DEFAULT_NODESEP)` — the GD_nodesep every graph gets absent the attr.
54
+ * @see lib/common/input.c:665-667
55
+ */
56
+ export const DEFAULT_NODESEP_POINTS = 18;
57
+
58
+ /** C `UCHAR_MAX`, the clamp on GD_showboxes. @see lib/common/input.c:683-689 */
59
+ const UCHAR_MAX = 255;
60
+
61
+ /** Internal charset codes. @see lib/common/const.h:187-189 */
62
+ export const CHAR_UTF8 = 0;
63
+ export const CHAR_LATIN1 = 1;
64
+ export const CHAR_BIG5 = 2;
65
+
66
+ /** Inches→points exactly as C's POINTS macro: ROUND(in * 72). @see geom.h:62 */
67
+ function points(inches: number): number {
68
+ return cround(inches * POINTS_PER_INCH);
69
+ }
70
+
71
+ // ---------------------------------------------------------------------------
72
+ // findCharset — @see lib/common/input.c:539
73
+ // ---------------------------------------------------------------------------
74
+
75
+ /**
76
+ * Map the `charset` attr to its internal code; absent/empty → CHAR_UTF8.
77
+ * C's `late_nnstring` treats an empty string as absent, and every comparison
78
+ * is case-insensitive (`strcasecmp`).
79
+ * @see lib/common/input.c:539 findCharset
80
+ */
81
+ export function findCharset(g: Graph): number {
82
+ const raw = g.attrs.get('charset');
83
+ const p = (raw === undefined || raw === '' ? 'utf-8' : raw).toLowerCase();
84
+ if (p === 'latin-1' || p === 'latin1' || p === 'l1'
85
+ || p === 'iso-8859-1' || p === 'iso_8859-1' || p === 'iso8859-1'
86
+ || p === 'iso-ir-100') {
87
+ return CHAR_LATIN1;
88
+ }
89
+ if (p === 'big-5' || p === 'big5') return CHAR_BIG5;
90
+ if (p === 'utf-8' || p === 'utf8') return CHAR_UTF8;
91
+ console.error(`Warning: Unsupported charset "${raw}" - assuming utf-8`);
92
+ return CHAR_UTF8;
93
+ }
94
+
95
+ // ---------------------------------------------------------------------------
96
+ // maptoken — @see lib/common/utils.c:315
97
+ // ---------------------------------------------------------------------------
98
+
99
+ /**
100
+ * C's `maptoken`: return `val[i]` for the first `name[i]` equal to `p`; when
101
+ * `p` is null or matches nothing, `i` lands on the NULL terminator and the
102
+ * LAST entry of `val` — the default — is returned.
103
+ * @see lib/common/utils.c:315 maptoken
104
+ */
105
+ function maptoken(p: string | undefined, names: string[], vals: number[]): number {
106
+ for (let i = 0; i < names.length; i++) {
107
+ if (p !== undefined && p === names[i]) return vals[i]!;
108
+ }
109
+ return vals[names.length]!;
110
+ }
111
+
112
+ // ---------------------------------------------------------------------------
113
+ // nodesep / ranksep — @see lib/common/input.c:665-681
114
+ // ---------------------------------------------------------------------------
115
+
116
+ /**
117
+ * `nodesep` is a plain late_double; `ranksep` additionally honours the
118
+ * `equally` keyword (→ exact_ranksep) and a bare number that may be followed
119
+ * by text. Absent attrs yield POINTS(DEFAULT_*) = 18 / 36.
120
+ * @see lib/common/input.c:665-681
121
+ */
122
+ function parseSepAttrs(g: Graph): void {
123
+ g.info.nodesep = points(lateDouble(g.attrs.get('nodesep'), DEFAULT_NODESEP, MIN_NODESEP));
124
+ const p = g.attrs.get('ranksep');
125
+ let xf = DEFAULT_RANKSEP;
126
+ if (p !== undefined && p !== '') {
127
+ // C: sscanf(p, "%lf", &xf) == 0 → no leading number → DEFAULT_RANKSEP.
128
+ const parsed = Number.parseFloat(p);
129
+ xf = Number.isNaN(parsed) ? DEFAULT_RANKSEP : Math.max(parsed, MIN_RANKSEP);
130
+ if (p.includes('equally')) g.info.exact_ranksep = true;
131
+ }
132
+ g.info.ranksep = points(xf);
133
+ }
134
+
135
+ // ---------------------------------------------------------------------------
136
+ // setRatio + size — @see lib/common/input.c:576, 693-694
137
+ // ---------------------------------------------------------------------------
138
+
139
+ /** sscanf("%lf")-style float token. @see lib/common/input.c:476 getdoubles2ptf */
140
+ const SIZE_FLOAT = '[-+]?[0-9.]+(?:[eE][-+]?[0-9]+)?';
141
+ const SIZE_XY_RE = new RegExp(`^\\s*(${SIZE_FLOAT})\\s*,\\s*(${SIZE_FLOAT})(.?)`);
142
+ const SIZE_X_RE = new RegExp(`^\\s*(${SIZE_FLOAT})(.?)`);
143
+
144
+ /**
145
+ * Local port of `getdoubles2ptf(g,"size",…)`: parse `"x,y"` (or a lone `"x"`
146
+ * meaning square) → points, with a trailing `!` as the *filled* flag. Returns
147
+ * null when absent or non-positive. Re-derived here rather than imported from
148
+ * `gvc/viewport` to avoid a layout→render dependency edge (same result).
149
+ * @see lib/common/input.c:476 getdoubles2ptf
150
+ */
151
+ function parseSizePoints(raw: string | undefined): { x: number; y: number; filled: boolean } | null {
152
+ if (raw === undefined) return null;
153
+ const xy = SIZE_XY_RE.exec(raw);
154
+ if (xy) {
155
+ const xf = Number(xy[1]);
156
+ const yf = Number(xy[2]);
157
+ if (xf > 0 && yf > 0) return { x: points(xf), y: points(yf), filled: xy[3] === '!' };
158
+ }
159
+ const x = SIZE_X_RE.exec(raw);
160
+ if (x) {
161
+ const xf = Number(x[1]);
162
+ if (xf > 0) return { x: points(xf), y: points(xf), filled: x[2] === '!' };
163
+ }
164
+ return null;
165
+ }
166
+
167
+ /**
168
+ * Port of `setRatio` (input.c:576): map the `ratio` attr to a RatioKind. A
169
+ * positive numeric value is R_VALUE; anything else absent/unrecognized → none.
170
+ * @see lib/common/input.c:576 setRatio
171
+ */
172
+ function parseRatioKind(g: Graph): RatioKind | undefined {
173
+ const p = g.attrs.get('ratio');
174
+ if (p === undefined) return undefined;
175
+ if (p === 'auto') return 'auto';
176
+ if (p === 'compress') return 'compress';
177
+ if (p === 'expand') return 'expand';
178
+ if (p === 'fill') return 'fill';
179
+ return Number.parseFloat(p) > 0 ? 'value' : undefined;
180
+ }
181
+
182
+ /**
183
+ * Populate `g.info.drawing` for the ratio kinds whose layout reshape is ported
184
+ * AND corpus-validated: `compress` (compressGraph x-NS, position-cluster.ts)
185
+ * and `fill` (setAspect R_FILL, position-bbox.ts). `expand`/`value` have the
186
+ * math in setAspect but no corpus coverage, and `auto` needs `idealsize`
187
+ * (unported); all three stay deferred — leaving `drawing` unset keeps
188
+ * setAspect/compressGraph a no-op for them.
189
+ *
190
+ * DELIBERATE DEVIATION from C, carried over verbatim from dot's old init: C
191
+ * allocates GD_drawing unconditionally (`input.c:609`) and stores the parsed
192
+ * ratio_kind for EVERY kind. Allocating it here would flip the
193
+ * `drawing === undefined` guards at `dot/position-bbox.ts:142` (setAspect) and
194
+ * `neato/set-aspect.ts:57`, activating the unvalidated expand/value/auto
195
+ * reshapes and changing dot output. Scope is therefore unchanged by the
196
+ * graph_init consolidation. See `.agent-notes/graph-init-consolidation.md`.
197
+ *
198
+ * @see lib/dotgen/position.c:set_aspect (904), compress_graph (501)
199
+ * @see lib/common/input.c:576 setRatio, 693-694 (size)
200
+ */
201
+ function parseRatioDrawing(g: Graph): void {
202
+ const kind = parseRatioKind(g);
203
+ if (kind !== 'compress' && kind !== 'fill') return;
204
+ const sz = parseSizePoints(g.attrs.get('size'));
205
+ g.info.drawing = makeDrawing({
206
+ ratioKind: kind,
207
+ size: sz ? { x: sz.x, y: sz.y } : { x: 0, y: 0 },
208
+ filled: sz?.filled ?? false,
209
+ });
210
+ }
211
+
212
+ // ---------------------------------------------------------------------------
213
+ // graphInit — @see lib/common/input.c:600
214
+ // ---------------------------------------------------------------------------
215
+
216
+ /** `clusterrank` tokens/codes. @see lib/common/input.c:604-605 */
217
+ const RANK_NAMES = ['local', 'global', 'none'];
218
+
219
+ /** `fontnames` tokens/codes. @see lib/common/input.c:606-607 */
220
+ const FONTNAME_NAMES = ['gd', 'ps', 'svg'];
221
+
222
+ /**
223
+ * The `rankcode` / `fontnamecodes` tables are built at CALL time, not module
224
+ * scope. `LOCAL`/`GLOBAL`/`NOCLUST` arrive from `layout/dot/rank.ts`, which sits
225
+ * in an import cycle with this module (graph-init → nodeinit → shapes →
226
+ * compass-port → dot/init → graph-init). Snapshotting them into a module-level
227
+ * array captures whatever the binding holds while the cycle is still resolving —
228
+ * under Vite's SSR transform a partially-initialized circular import reads as
229
+ * `undefined` (no TDZ throw), which froze the table as `[undefined, …]`,
230
+ * made `maptoken` return `undefined`, and left `CL_type` non-LOCAL — silently
231
+ * disabling dot's cluster collapsing. Reading the live bindings inside the
232
+ * function is evaluated only after every module is initialised.
233
+ */
234
+ function rankCodes(): number[] {
235
+ return [LOCAL, GLOBAL, NOCLUST, LOCAL];
236
+ }
237
+
238
+ /** @see lib/common/input.c:607 fontnamecodes */
239
+ function fontnameCodes(): number[] {
240
+ return [FontnameKind.NativeFonts, FontnameKind.PsFonts, FontnameKind.SvgFonts, -1];
241
+ }
242
+
243
+ /**
244
+ * The engine-agnostic root-graph init C runs before every layout.
245
+ *
246
+ * Field order follows the C exactly. Fields C sets that this port does NOT
247
+ * store here — each is either derived at its use-site from the same attribute
248
+ * (identical value, different storage) or browser-impossible — are marked
249
+ * `SKIPPED` inline with their reason.
250
+ *
251
+ * @param g root graph
252
+ * @param useRankdir C's `LAYOUT_USES_RANKDIR` feature flag: true for dot,
253
+ * false for every other engine (`plugin/dot_layout/gvlayout_dot_layout.c:27`
254
+ * is the only plugin that sets it).
255
+ * @see lib/common/input.c:600 graph_init
256
+ */
257
+ export function graphInit(g: Graph, useRankdir: boolean): void {
258
+ // GD_drawing(g) = gv_alloc(sizeof(layout_t)) (input.c:609) — deliberately NOT
259
+ // allocated unconditionally; see parseRatioDrawing's note (it would change
260
+ // dot output by activating the unported ratio modes).
261
+
262
+ // SKIPPED — `postaction` reparse (input.c:611-617): needs agmemconcat plus
263
+ // parser re-entry to splice a second graph into g. Neither exists in the
264
+ // port, and no corpus input sets `postaction`.
265
+
266
+ // SKIPPED — fontpath / DOTFONTPATH setenv (input.c:619-629): browser-
267
+ // impossible (no environment, no GDFONTPATH).
268
+
269
+ g.info.charset = findCharset(g); // @see input.c:631
270
+
271
+ // SKIPPED — Gvimagepath / `imagepath` (input.c:633-638): the port loads no
272
+ // images from disk (browser-safe: image data arrives as a parameter).
273
+
274
+ // SKIPPED — GD_drawing(g)->quantum (input.c:640-641): derived at its only
275
+ // use-site, nodeinit.ts:129 — `lateDouble(g.root.attrs.get('quantum'), 0, 0)`
276
+ // feeding poly-sizing's quantumIn — from the same attr with the same
277
+ // late_double. Identical value; storing it needs `drawing` (see above).
278
+
279
+ // rankdir. C stores the EFFECTIVE rankdir in bits 0-1 and the REAL rankdir in
280
+ // bits 2-3: "setting rankdir=LR is only defined in dot, but having it set
281
+ // causes shape code and others to use it. The result is confused output, so
282
+ // we turn it off unless requested. […] Sometimes, the code really needs the
283
+ // graph's rankdir, e.g., neato -n with record shapes, so we store the real
284
+ // rankdir in the next 2 bits." @see input.c:643-663
285
+ let rankdir = RANKDIR_TB;
286
+ const rd = g.attrs.get('rankdir');
287
+ if (rd === 'LR') rankdir = RANKDIR_LR;
288
+ else if (rd === 'BT') rankdir = RANKDIR_BT;
289
+ else if (rd === 'RL') rankdir = RANKDIR_RL;
290
+ if (useRankdir) {
291
+ // SET_RANKDIR(g, (rankdir << 2) | rankdir)
292
+ g.info.rankdir = (rankdir << 2) | rankdir;
293
+ g.info.flip = (rankdir & 1) === 1; // GD_flip: bit 0 of the effective rankdir
294
+ } else {
295
+ // SET_RANKDIR(g, rankdir << 2) — the effective rankdir stays TB, so nothing
296
+ // flips or rotates; only GD_realrankdir (bits 2-3) sees the attr.
297
+ g.info.rankdir = rankdir << 2;
298
+ g.info.flip = false;
299
+ }
300
+
301
+ parseSepAttrs(g); // nodesep, ranksep, exact_ranksep — @see input.c:665-681
302
+
303
+ // showboxes, clamped to UCHAR_MAX. @see input.c:683-689
304
+ g.info.showboxes = Math.min(lateInt(g.attrs.get('showboxes'), 0, 0), UCHAR_MAX);
305
+
306
+ // fontnames. C's maptoken default is -1 (attr absent or unknown token), which
307
+ // the FontnameKind union cannot express; the port leaves the field undefined
308
+ // in that case. Nothing reads GD_fontnames yet (the PS/SVG font-name
309
+ // remapping is not ported), so -1 and undefined are indistinguishable.
310
+ // @see input.c:690-691
311
+ const fn = maptoken(g.attrs.get('fontnames'), FONTNAME_NAMES, fontnameCodes());
312
+ if (fn !== -1) g.info.fontnames = fn as FontnameKind;
313
+
314
+ parseRatioDrawing(g); // setRatio(g) + size → GD_drawing. @see input.c:693-694
315
+
316
+ // SKIPPED — page (input.c:695), centered (input.c:697), landscape
317
+ // (input.c:699-704): all three are *output* concerns the port derives at
318
+ // render time from the same attrs — gvc/viewport.ts:163-169 (parseLandscape
319
+ // applies C's exact precedence: rotate=90, else orientation[0] in {l,L}, else
320
+ // mapbool(landscape)), parseGraphPad/parseGraphMargin, and
321
+ // initJobViewportZoom (size + `!` filled flag). Storing them in GD_drawing
322
+ // here would require allocating `drawing` unconditionally (see above).
323
+
324
+ // clusterrank → CL_type. @see input.c:706-707
325
+ setClType(maptoken(g.attrs.get('clusterrank'), RANK_NAMES, rankCodes()));
326
+
327
+ // concentrate → Concentrate. @see input.c:708-709
328
+ g.info.concentrate = mapbool(g.attrs.get('concentrate'));
329
+
330
+ // SKIPPED — State = GVBEGIN (input.c:710): the emit-time layer/state machine
331
+ // (`State`, `GVBEGIN`) is not ported.
332
+
333
+ g.info.edgeLabelsDone = false; // EdgeLabelsDone = 0. @see input.c:711
334
+
335
+ // SKIPPED — GD_drawing(g)->dpi (input.c:713-717): derived at its use-site,
336
+ // gvc/device.ts:545, with the identical nested fallback
337
+ // `late_double(dpi, late_double(resolution, 0, 0), 0)`.
338
+
339
+ doGraphLabel(g, layoutMeasurer(g)); // @see input.c:719 — creates GD_label(g)
340
+
341
+ // SKIPPED — Initial_dist = MYHUGE (input.c:721): the neato global is not
342
+ // ported; no use-site reads it.
343
+
344
+ // SKIPPED — G_ordering / G_gradientangle / G_margin (input.c:723-725) and the
345
+ // N_* / E_* attribute caches (input.c:727-789): these are `agfindattr`
346
+ // *descriptor pointers*, cached to make later attribute lookups O(1). The
347
+ // port models attributes as a per-object `Map`, so every use-site calls
348
+ // `attrs.get(name)` directly — there is no descriptor to cache. The one cache
349
+ // entry carrying a side effect is `N_label` (input.c:737-739), which creates a
350
+ // default AGNODE `label` attr of NODENAME_ESC ("\N") when absent; the port
351
+ // reproduces that default at the use-site — poly-init.ts:109 falls back to
352
+ // `n.name`, the resolved value of "\N".
353
+
354
+ // SKIPPED — GD_drawing(g)->xdots = init_xdot(g) (input.c:792): parsing the
355
+ // `_background` xdot attr is not ported.
356
+
357
+ // SKIPPED — GD_drawing(g)->id (input.c:795-796): read at render time from the
358
+ // same attr (render/svg-graph.ts:324).
359
+ }
@@ -0,0 +1,299 @@
1
+ // SPDX-License-Identifier: EPL-2.0
2
+ /**
3
+ * HTML 4 named character entities (name -> Unicode code point), ported verbatim
4
+ * from graphviz lib/common/entities.h (generated from entities.html). Used by
5
+ * make_label htmlEntityUTF8 to decode named entities like `&alpha;` -> U+03B1.
6
+ * @see lib/common/entities.h
7
+ */
8
+ export const HTML_ENTITIES: Readonly<Record<string, number>> = {
9
+ "AElig": 198,
10
+ "Aacute": 193,
11
+ "Acirc": 194,
12
+ "Agrave": 192,
13
+ "Alpha": 913,
14
+ "Aring": 197,
15
+ "Atilde": 195,
16
+ "Auml": 196,
17
+ "Beta": 914,
18
+ "Ccedil": 199,
19
+ "Chi": 935,
20
+ "Dagger": 8225,
21
+ "Delta": 916,
22
+ "ETH": 208,
23
+ "Eacute": 201,
24
+ "Ecirc": 202,
25
+ "Egrave": 200,
26
+ "Epsilon": 917,
27
+ "Eta": 919,
28
+ "Euml": 203,
29
+ "Gamma": 915,
30
+ "Iacute": 205,
31
+ "Icirc": 206,
32
+ "Igrave": 204,
33
+ "Iota": 921,
34
+ "Iuml": 207,
35
+ "Kappa": 922,
36
+ "Lambda": 923,
37
+ "Mu": 924,
38
+ "Ntilde": 209,
39
+ "Nu": 925,
40
+ "OElig": 338,
41
+ "Oacute": 211,
42
+ "Ocirc": 212,
43
+ "Ograve": 210,
44
+ "Omega": 937,
45
+ "Omicron": 927,
46
+ "Oslash": 216,
47
+ "Otilde": 213,
48
+ "Ouml": 214,
49
+ "Phi": 934,
50
+ "Pi": 928,
51
+ "Prime": 8243,
52
+ "Psi": 936,
53
+ "Rho": 929,
54
+ "Scaron": 352,
55
+ "Sigma": 931,
56
+ "THORN": 222,
57
+ "Tau": 932,
58
+ "Theta": 920,
59
+ "Uacute": 218,
60
+ "Ucirc": 219,
61
+ "Ugrave": 217,
62
+ "Upsilon": 933,
63
+ "Uuml": 220,
64
+ "Xi": 926,
65
+ "Yacute": 221,
66
+ "Yuml": 376,
67
+ "Zeta": 918,
68
+ "aacute": 225,
69
+ "acirc": 226,
70
+ "acute": 180,
71
+ "aelig": 230,
72
+ "agrave": 224,
73
+ "alefsym": 8501,
74
+ "alpha": 945,
75
+ "amp": 38,
76
+ "and": 8743,
77
+ "ang": 8736,
78
+ "aring": 229,
79
+ "asymp": 8776,
80
+ "atilde": 227,
81
+ "auml": 228,
82
+ "bdquo": 8222,
83
+ "beta": 946,
84
+ "brvbar": 166,
85
+ "bull": 8226,
86
+ "cap": 8745,
87
+ "ccedil": 231,
88
+ "cedil": 184,
89
+ "cent": 162,
90
+ "chi": 967,
91
+ "circ": 710,
92
+ "clubs": 9827,
93
+ "cong": 8773,
94
+ "copy": 169,
95
+ "crarr": 8629,
96
+ "cup": 8746,
97
+ "curren": 164,
98
+ "dArr": 8659,
99
+ "dagger": 8224,
100
+ "darr": 8595,
101
+ "deg": 176,
102
+ "delta": 948,
103
+ "diams": 9830,
104
+ "divide": 247,
105
+ "eacute": 233,
106
+ "ecirc": 234,
107
+ "egrave": 232,
108
+ "empty": 8709,
109
+ "emsp": 8195,
110
+ "ensp": 8194,
111
+ "epsilon": 949,
112
+ "equiv": 8801,
113
+ "eta": 951,
114
+ "eth": 240,
115
+ "euml": 235,
116
+ "euro": 8364,
117
+ "exist": 8707,
118
+ "fnof": 402,
119
+ "forall": 8704,
120
+ "frac12": 189,
121
+ "frac14": 188,
122
+ "frac34": 190,
123
+ "frasl": 8260,
124
+ "gamma": 947,
125
+ "ge": 8805,
126
+ "gt": 62,
127
+ "hArr": 8660,
128
+ "harr": 8596,
129
+ "hearts": 9829,
130
+ "hellip": 8230,
131
+ "iacute": 237,
132
+ "icirc": 238,
133
+ "iexcl": 161,
134
+ "igrave": 236,
135
+ "image": 8465,
136
+ "infin": 8734,
137
+ "int": 8747,
138
+ "iota": 953,
139
+ "iquest": 191,
140
+ "isin": 8712,
141
+ "iuml": 239,
142
+ "kappa": 954,
143
+ "lArr": 8656,
144
+ "lambda": 955,
145
+ "lang": 9001,
146
+ "laquo": 171,
147
+ "larr": 8592,
148
+ "lceil": 8968,
149
+ "ldquo": 8220,
150
+ "le": 8804,
151
+ "lfloor": 8970,
152
+ "lowast": 8727,
153
+ "loz": 9674,
154
+ "lrm": 8206,
155
+ "lsaquo": 8249,
156
+ "lsquo": 8216,
157
+ "lt": 60,
158
+ "macr": 175,
159
+ "mdash": 8212,
160
+ "micro": 181,
161
+ "middot": 183,
162
+ "minus": 8722,
163
+ "mu": 956,
164
+ "nabla": 8711,
165
+ "nbsp": 160,
166
+ "ndash": 8211,
167
+ "ne": 8800,
168
+ "ni": 8715,
169
+ "not": 172,
170
+ "notin": 8713,
171
+ "nsub": 8836,
172
+ "ntilde": 241,
173
+ "nu": 957,
174
+ "oacute": 243,
175
+ "ocirc": 244,
176
+ "oelig": 339,
177
+ "ograve": 242,
178
+ "oline": 8254,
179
+ "omega": 969,
180
+ "omicron": 959,
181
+ "oplus": 8853,
182
+ "or": 8744,
183
+ "ordf": 170,
184
+ "ordm": 186,
185
+ "oslash": 248,
186
+ "otilde": 245,
187
+ "otimes": 8855,
188
+ "ouml": 246,
189
+ "para": 182,
190
+ "part": 8706,
191
+ "permil": 8240,
192
+ "perp": 8869,
193
+ "phi": 966,
194
+ "pi": 960,
195
+ "piv": 982,
196
+ "plusmn": 177,
197
+ "pound": 163,
198
+ "prime": 8242,
199
+ "prod": 8719,
200
+ "prop": 8733,
201
+ "psi": 968,
202
+ "quot": 34,
203
+ "rArr": 8658,
204
+ "radic": 8730,
205
+ "rang": 9002,
206
+ "raquo": 187,
207
+ "rarr": 8594,
208
+ "rceil": 8969,
209
+ "rdquo": 8221,
210
+ "real": 8476,
211
+ "reg": 174,
212
+ "rfloor": 8971,
213
+ "rho": 961,
214
+ "rlm": 8207,
215
+ "rsaquo": 8250,
216
+ "rsquo": 8217,
217
+ "sbquo": 8218,
218
+ "scaron": 353,
219
+ "sdot": 8901,
220
+ "sect": 167,
221
+ "shy": 173,
222
+ "sigma": 963,
223
+ "sigmaf": 962,
224
+ "sim": 8764,
225
+ "spades": 9824,
226
+ "sub": 8834,
227
+ "sube": 8838,
228
+ "sum": 8721,
229
+ "sup": 8835,
230
+ "sup1": 185,
231
+ "sup2": 178,
232
+ "sup3": 179,
233
+ "supe": 8839,
234
+ "szlig": 223,
235
+ "tau": 964,
236
+ "there4": 8756,
237
+ "theta": 952,
238
+ "thetasym": 977,
239
+ "thinsp": 8201,
240
+ "thorn": 254,
241
+ "tilde": 732,
242
+ "times": 215,
243
+ "trade": 8482,
244
+ "uArr": 8657,
245
+ "uacute": 250,
246
+ "uarr": 8593,
247
+ "ucirc": 251,
248
+ "ugrave": 249,
249
+ "uml": 168,
250
+ "upsih": 978,
251
+ "upsilon": 965,
252
+ "uuml": 252,
253
+ "weierp": 8472,
254
+ "xi": 958,
255
+ "yacute": 253,
256
+ "yen": 165,
257
+ "yuml": 255,
258
+ "zeta": 950,
259
+ "zwj": 8205,
260
+ "zwnj": 8204,
261
+ };
262
+
263
+ /** The five basic XML/HTML entities → code point. */
264
+ const BASIC_ENTITIES: Readonly<Record<string, number>> = {
265
+ amp: 0x26, lt: 0x3c, gt: 0x3e, quot: 0x22, apos: 0x27,
266
+ };
267
+
268
+ /** Decode a numeric entity body (`#123`, `#x1F`) to its code point, or null. */
269
+ function numericEntityValue(body: string): number | null {
270
+ const hex = body[1] === 'x' || body[1] === 'X';
271
+ const v = hex ? parseInt(body.slice(2), 16) : parseInt(body.slice(1), 10);
272
+ return Number.isFinite(v) && v > 0 && v <= 0x10ffff ? v : null;
273
+ }
274
+
275
+ /**
276
+ * Decode one entity body (`amp`, `alpha`, `#123`, `#x1F`) to its code point, or
277
+ * null for an unknown name. Named entities cover the five basic XML entities
278
+ * plus the full HTML 4 table (Symbol etc.). @see lib/common/utils.c:htmlEntity
279
+ */
280
+ function entityValue(body: string): number | null {
281
+ if (body[0] === '#') return numericEntityValue(body);
282
+ return BASIC_ENTITIES[body] ?? HTML_ENTITIES[body] ?? null;
283
+ }
284
+
285
+ /**
286
+ * Decode XML/numeric (&#NNN; / &#xHH;) and HTML 4 named (`&alpha;`) entities to
287
+ * their characters, leaving unknown names literal — C's make_label UTF-8 branch.
288
+ * Latin-1 inputs are decoded at the byte->string boundary by the caller (the
289
+ * survey's render-one), so this UTF-8 branch covers them too.
290
+ * @see lib/common/utils.c:htmlEntityUTF8 / htmlEntity
291
+ * @see lib/common/labels.c:make_label (CHAR_LATIN1 vs default)
292
+ */
293
+ export function htmlEntityUTF8(s: string): string {
294
+ if (s.indexOf('&') < 0) return s;
295
+ return s.replace(/&(#x[0-9a-fA-F]+|#[0-9]+|[A-Za-z]+);/g, (m, body: string) => {
296
+ const v = entityValue(body);
297
+ return v === null ? m : String.fromCodePoint(v);
298
+ });
299
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: EPL-2.0
2
+
3
+ /**
4
+ * HTML-string marking. cgraph tags strings created from `label=<...>` via
5
+ * a flag on the refstr (aghtmlstr); this port marks the attribute value
6
+ * with a leading control character that cannot appear in DOT input.
7
+ *
8
+ * @see lib/cgraph/refstr.c:aghtmlstr
9
+ */
10
+
11
+ /** Marker prefix identifying an attribute value parsed from `<...>`. */
12
+ export const HTML_STRING_MARK = '\u0001';
13
+
14
+ /** True when the attribute value came from an HTML `<...>` literal. */
15
+ export function isHtmlValue(s: string): boolean {
16
+ return s.startsWith(HTML_STRING_MARK);
17
+ }
18
+
19
+ /** Strip the HTML marker, returning the markup content. */
20
+ export function htmlValueContent(s: string): string {
21
+ return s.slice(HTML_STRING_MARK.length);
22
+ }