@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,97 @@
1
+ /**
2
+ * SVG document prologue and graph group open/close helpers.
3
+ * Split from svg-helpers.ts to keep that module under the size cap.
4
+ *
5
+ * NOTE: no ${...} template literals here — Lizard bug #2 (see
6
+ * svg-helpers.ts file header).
7
+ *
8
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_graph
9
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_page
10
+ */
11
+ import type { Graph } from '../model/graph.js';
12
+ import type { Box } from '../model/geom.js';
13
+ import type { RenderJob } from '../gvc/job.js';
14
+ /**
15
+ * Emit SVG tag. Group translate absorbs bb.ll + pad + margin/Z offset
16
+ * (svgBeginPage). ViewBox starts at (round(margin.x), round(margin.y)) --
17
+ * (0,0) only in the common no-margin case.
18
+ */
19
+ export declare function emitSvgTag(job: RenderJob): void;
20
+ /**
21
+ * Emit the graph `<g>` open tag with y-flip transform.
22
+ *
23
+ * translate(PAD, contentH+PAD) maps graphviz origin (0,0) to the
24
+ * bottom-left corner of the padded viewport. Combined with devscale.y=-1,
25
+ * a node at graphviz (x,y) appears at SVG (x+PAD, h-PAD-y).
26
+ *
27
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_page
28
+ */
29
+ export declare function emitGraphGroupOpen(graphId: string, classStr: string, tx: number, ty: number, job: RenderJob): void;
30
+ /**
31
+ * Conditionally emit `<title>` for user-visible graph names.
32
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_page
33
+ */
34
+ export declare function emitGraphTitle(g: Graph, job: RenderJob): void;
35
+ /**
36
+ * Resolve the graph bgcolor attribute to the color string to use for the
37
+ * background polygon, or the BGCOLOR_TRANSPARENT sentinel to suppress it.
38
+ *
39
+ * Precedence mirrors emit_background (lib/common/emit.c:1476-1530):
40
+ * - absent/empty → "white" (default white paper)
41
+ * - "transparent" → BGCOLOR_TRANSPARENT sentinel (SVG is truecolor)
42
+ * - gradient "c1:c2" → first solid color (AD3)
43
+ * - else → the literal color string
44
+ *
45
+ * @see lib/common/emit.c:emit_background:1476
46
+ */
47
+ export declare function resolveGraphBgcolor(bgcolorAttr: string | undefined): string;
48
+ /**
49
+ * Emit background polygon covering the full padded content area.
50
+ *
51
+ * Omits the polygon entirely when resolvedColor is the transparent sentinel.
52
+ * Coordinates are in the group's local frame (y-flipped via devscale.y=-1):
53
+ * x: [bb.ll.x - PAD, bb.ur.x + PAD]
54
+ * y (flipped): [-(bb.ur.y + PAD), -(bb.ll.y - PAD)]
55
+ *
56
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_page
57
+ * @see lib/common/emit.c:emit_background:1476
58
+ */
59
+ export declare function emitGraphBackground(bb: Box, resolvedColor: string, job: RenderJob): void;
60
+ /**
61
+ * Emit SVG prologue, padded `<svg>` tag, graph `<g>` with y-flip transform,
62
+ * and background polygon (color resolved from bgcolor attr).
63
+ *
64
+ * Y-axis: Graphviz y-up vs SVG y-down. devscale.y=-1 negates all y coords
65
+ * before renderer callbacks; the graph `<g>` translate(PAD, contentH+PAD)
66
+ * places the Graphviz origin at the bottom-left of the padded viewport.
67
+ *
68
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_graph
69
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_page
70
+ * @see lib/common/emit.c:emit_background:1476
71
+ */
72
+ export declare function svgBeginGraph(g: Graph, job: RenderJob): void;
73
+ /**
74
+ * Per-page content: the graph group, title, and background — re-emitted per
75
+ * layer. The group id carries the layer prefix (e.g. `pvt_graph0`).
76
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_page
77
+ */
78
+ export declare function svgBeginPage(g: Graph, job: RenderJob): void;
79
+ /**
80
+ * Emit the page background polygon. Split out of svg_begin_page so the
81
+ * device-layer page loop can wrap the background (and the graph label) in the
82
+ * graph's `<a>` anchor, matching C where emit_background is separate from
83
+ * gvrender_begin_page.
84
+ * @see lib/common/emit.c:emit_page (emit_background after begin_page)
85
+ */
86
+ export declare function svgPageBackground(g: Graph, job: RenderJob): void;
87
+ /** Close the graph `<g>` group. @see svg_end_page */
88
+ export declare function svgEndPage(job: RenderJob): void;
89
+ /** `<g id="<layer>" class="layer">` — only emitted when numLayers > 1. */
90
+ export declare function svgBeginLayer(name: string, job: RenderJob): void;
91
+ export declare function svgEndLayer(job: RenderJob): void;
92
+ /**
93
+ * Close the graph `<g>` group and the `<svg>` element.
94
+ * @see plugin/core/gvrender_core_svg.c:svg_end_graph
95
+ */
96
+ export declare function svgEndGraph(job: RenderJob): void;
97
+ //# sourceMappingURL=svg-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-graph.d.ts","sourceRoot":"","sources":["../../src/render/svg-graph.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAS,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA+C/C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAsC/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,SAAS,GACb,IAAI,CAiBN;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAI7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAiBxF;AA2GD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAqB5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA+B3D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAEhE;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAE/C;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAEhE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAEhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAEhD"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * SVG renderer helper functions.
3
+ *
4
+ * All shape-emission logic lives here as top-level export functions so
5
+ * Lizard's TypeScript parser tracks function boundaries correctly.
6
+ * Lizard only resets its function-tracking on the export keyword;
7
+ * bare function declarations are silently absorbed into the preceding
8
+ * exported function's body count.
9
+ *
10
+ * Lizard parser bugs (affect this file):
11
+ * 1. Regex literal containing a double-quote char (e.g. /"/g) unbalances
12
+ * its string-quote tracker. Use new RegExp('"', 'g') instead.
13
+ * 2. Template literals containing ${...} interpolations confuse the parser
14
+ * and cause following non-exported functions to be absorbed into the
15
+ * preceding exported function's line-count. Avoid ${...} template
16
+ * literals in exported functions; use string concatenation or
17
+ * job.write/printDouble sequences instead.
18
+ *
19
+ * @see plugin/core/gvrender_core_svg.c
20
+ */
21
+ import type { Node } from '../model/node.js';
22
+ import type { Edge } from '../model/edge.js';
23
+ import type { Point } from '../model/geom.js';
24
+ import type { TextSpan } from '../common/emit-types.js';
25
+ import type { RenderJob, ObjState } from '../gvc/job.js';
26
+ import { PenType } from '../gvc/context.js';
27
+ /**
28
+ * Padding (in graph units / points) added on all four sides of the bounding
29
+ * box, matching the C plugin descriptor `default_pad = 4.0`.
30
+ * @see plugin/core/gvrender_core_svg.c (gvrender_features_t.default_pad)
31
+ */
32
+ export declare const SVG_PAD = 4;
33
+ /**
34
+ * Default graph-level margin (in points) when `margin=` is unset, matching
35
+ * the SVG plugin's `device_features_svg.default_margin` ({0,0}) — the
36
+ * `GVRENDER_PLUGIN` branch of `init_job_margin`'s fallback switch.
37
+ * @see plugin/core/gvrender_core_svg.c (device_features_svg.default_margin)
38
+ * @see lib/common/emit.c:3309-3331 init_job_margin
39
+ */
40
+ export declare const SVG_MARGIN = 0;
41
+ import { escapeXml, escapeXmlText, escapeXmlTitle } from './xml-escape.js';
42
+ export { escapeXml, escapeXmlText, escapeXmlTitle };
43
+ export declare function paintStr(obj: ObjState, useFill: boolean): string;
44
+ export declare function emitDash(job: RenderJob, pen: PenType): void;
45
+ export declare function emitPenWidth(job: RenderJob, pw: number): void;
46
+ /**
47
+ * Emit fill/stroke style attributes in C's exact order: fill, fill-opacity,
48
+ * stroke, stroke-width, stroke-dasharray, stroke-opacity.
49
+ * @see plugin/core/gvrender_core_svg.c:165-213 svg_grstyle
50
+ */
51
+ export declare function emitStyle(job: RenderJob, filled: boolean, gradFillUrl?: string): void;
52
+ export declare function emitPoints(job: RenderJob, pts: Point[]): void;
53
+ export declare function emitBezierPath(job: RenderJob, pts: Point[]): void;
54
+ export declare function textAnchor(just: 'l' | 'n' | 'r'): string;
55
+ export { emitSvgTag, emitGraphGroupOpen, emitGraphTitle, emitGraphBackground, svgBeginGraph, svgEndGraph, svgBeginPage, svgPageBackground, svgEndPage, svgBeginLayer, svgEndLayer, } from './svg-graph.js';
56
+ export declare function svgBeginNode(n: Node, job: RenderJob): void;
57
+ export declare function svgEndNode(job: RenderJob): void;
58
+ /**
59
+ * Begin an edge group + `<title>`. The title is `tail[:tport]<sep>head[:hport]`
60
+ * built raw, then escaped — mirroring C's `\E` substitution (`labels.c`) fed
61
+ * through `gvputs_xml`. The port string is the resolved port name
62
+ * (`ED_*_port(e).name`): a compass replaces a record field when both are given
63
+ * (`A:f0:n` → `A:n`), and the dash escapes to `&#45;`.
64
+ * @see lib/common/labels.c:strdup_and_subst_obj (case 'E')
65
+ * @see plugin/core/gvrender_core_svg.c:svg_begin_edge
66
+ */
67
+ export declare function svgBeginEdge(e: Edge, job: RenderJob): void;
68
+ export declare function svgEndEdge(job: RenderJob): void;
69
+ export declare function emitAnchorAttrs(href: string, tooltip: string, target: string, job: RenderJob): void;
70
+ export declare function svgBeginAnchor(href: string, tooltip: string, target: string, id: string, job: RenderJob): void;
71
+ export declare function svgEndAnchor(job: RenderJob): void;
72
+ export declare function svgTextspan(pos: Point, span: TextSpan, job: RenderJob): void;
73
+ /**
74
+ * Emit `<defs>` gradient block for a filled shape; returns the gradient id
75
+ * to use as fill="url(#id)", or undefined for solid/none fills (AD2, AD3).
76
+ * pts must be in y-up (Graphviz) coordinate space.
77
+ * @see plugin/core/gvrender_core_svg.c:647-694 (gradient dispatch)
78
+ */
79
+ export declare function emitGradientDefs(job: RenderJob, ptsYup: Point[], filled: boolean): string | undefined;
80
+ export declare function svgEllipse(center: Point, rx: number, ry: number, filled: boolean, job: RenderJob): void;
81
+ export declare function svgPolygon(pts: Point[], filled: boolean, job: RenderJob): void;
82
+ export declare function svgBezier(pts: Point[], filled: boolean, job: RenderJob): void;
83
+ export declare function svgPolyline(pts: Point[], job: RenderJob): void;
84
+ export declare function svgComment(text: string, job: RenderJob): void;
85
+ /**
86
+ * Emit Bezier edge path with style from job.obj (AD1: no ad-hoc attr reads).
87
+ * Attribute order: fill="none" stroke="X" [stroke-width] [stroke-dasharray] d="..."
88
+ * @see plugin/core/gvrender_core_svg.c:svg_bzptarray
89
+ * @see lib/common/emit.c:emit_edge_graphics:2368 (late_string color)
90
+ */
91
+ export declare function svgEdgePath(e: Edge, job: RenderJob): void;
92
+ /**
93
+ * If edge `e` should render with rounded ortho corners, return its corner
94
+ * radius; else null. Mirrors emit.c:2554-2581: graph `splines==ortho`, then
95
+ * `radius>0` (explicit, overrides style) or `style=rounded` → default radius
96
+ * `max(12, penwidth*8)`.
97
+ * @see lib/common/emit.c (is_ortho / want_rounded / radius)
98
+ */
99
+ export declare function orthoRoundedRadius(e: Edge, job: RenderJob): number | null;
100
+ /**
101
+ * Emit an ortho edge whose corners are rounded (`splines=ortho` and `radius>0`
102
+ * or `style=rounded`): straight `<polyline>` segments between truncated corners
103
+ * plus an arc `<polyline>` per corner. Per-bezier fallback to the bezier `<path>`
104
+ * when a bezier has no orthogonal corner. @see lib/common/emit.c:2583-2666
105
+ */
106
+ export declare function svgEdgePathOrthoRounded(e: Edge, radius: number, job: RenderJob): void;
107
+ /**
108
+ * Emit one arrowhead polygon with pen color from job.obj and Adobe first-point
109
+ * repetition. Exported so Lizard resets its line counter here (parser note above).
110
+ * @see plugin/core/gvrender_core_svg.c:svg_polygon (arrowhead case)
111
+ */
112
+ export declare function emitArrowPolygon(rawPts: Point[], penColor: string, job: RenderJob, pw: number): void;
113
+ /**
114
+ * Emit arrowhead polygon(s) for a routed edge (tail first, then head).
115
+ * Arrow fill and stroke use the edge pen color from job.obj (AD1).
116
+ * @see plugin/core/gvrender_core_svg.c:svg_polygon (arrowhead case)
117
+ * @see lib/common/arrows.c:arrow_type_normal
118
+ */
119
+ export declare function svgArrowPolygons(e: Edge, job: RenderJob): void;
120
+ export { emitParallelEdgePaths } from './svg-parallel-edge.js';
121
+ export type { ParallelEdgeResult } from './svg-parallel-edge.js';
122
+ //# sourceMappingURL=svg-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-helpers.d.ts","sourceRoot":"","sources":["../../src/render/svg-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Node } from '../model/node.js';
2
+ import type { Edge } from '../model/edge.js';
3
+ import type { Graph } from '../model/graph.js';
4
+ import type { RenderJob } from '../gvc/job.js';
5
+ /**
6
+ * `class="<kind>"`, with the DOT `class` attribute appended (` <class>`,
7
+ * xml-escaped) when present — mirroring svg_print_id_class.
8
+ * @see plugin/core/gvrender_core_svg.c:svg_print_id_class
9
+ */
10
+ export declare function svgClass(kind: string, classAttr: string | undefined): string;
11
+ /** SVG id for a node: own DOT `id` attr, else `node<seq>` (with gid prefix). */
12
+ export declare function svgNodeId(n: Node, job: RenderJob): string;
13
+ /** SVG id for an edge: own DOT `id` attr, else `edge<graphSeq>` (gid prefix). */
14
+ export declare function svgEdgeId(e: Edge, job: RenderJob): string;
15
+ /** SVG id for a cluster: own DOT `id` attr, else `clust<AGSEQ seq>` (gid prefix).
16
+ * @see lib/common/emit.c:getObjId */
17
+ export declare function svgClusterId(sg: Graph, job: RenderJob): string;
18
+ /** SVG id for the root graph group: DOT `id` attr, else `graph0` (no prefix). */
19
+ export declare function svgGraphId(g: Graph, job: RenderJob): string;
20
+ /** `class="node[ <class>]"`, reading the inherited DOT `class` attribute. */
21
+ export declare function svgNodeClass(n: Node): string;
22
+ /** `class="edge[ <class>]"`. */
23
+ export declare function svgEdgeClass(e: Edge): string;
24
+ /** `class="cluster[ <class>]"`, reading the inherited cluster `class` attr. */
25
+ export declare function svgClusterClass(sg: Graph): string;
26
+ /** `class="graph[ <class>]"`. */
27
+ export declare function svgGraphClass(g: Graph): string;
28
+ //# sourceMappingURL=svg-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-id.d.ts","sourceRoot":"","sources":["../../src/render/svg-id.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAK/C;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI5E;AAQD,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAEzD;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAEzD;AAED;qCACqC;AACrC,wBAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAE9D;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAE3D;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,gCAAgC;AAChC,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAEjD;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAE9C"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Multicolor region fills: stripedBox and wedgedEllipse.
3
+ *
4
+ * Ports the REGION-fill functions from lib/common/emit.c and the
5
+ * arc-to-Bézier machinery from lib/common/ellipse.c. These are called
6
+ * from poly-gencode (S1) for style=striped polygon nodes and style=wedged
7
+ * ellipse nodes when fillcolor is a multi-segment color list.
8
+ *
9
+ * @see lib/common/emit.c:595 stripedBox
10
+ * @see lib/common/emit.c:549 wedgedEllipse
11
+ * @see lib/common/ellipse.c:274 ellipticWedge
12
+ */
13
+ import type { Point } from '../model/geom.js';
14
+ import type { RenderJob } from '../gvc/job.js';
15
+ import type { RendererPlugin } from '../gvc/context.js';
16
+ /**
17
+ * Thin-line pen width used for multicolor band/wedge outlines.
18
+ * @see lib/common/emit.c:538 #define THIN_LINE 0.5
19
+ */
20
+ export declare const THIN_LINE = 0.5;
21
+ /** Ellipse geometry parameters. */
22
+ interface EllipseParams {
23
+ cx: number;
24
+ cy: number;
25
+ xsemi: number;
26
+ ysemi: number;
27
+ }
28
+ /**
29
+ * Return cubic Bézier path points approximating an elliptic wedge sector.
30
+ * Coordinates are in graphviz y-UP space — caller negates y for SVG.
31
+ *
32
+ * @see lib/common/ellipse.c:195 genEllipticPath
33
+ * @see lib/common/ellipse.c:274 ellipticWedge
34
+ */
35
+ export declare function ellipticWedge(e: EllipseParams, angle0: number, angle1: number): Point[];
36
+ /**
37
+ * Fill an ellipse with multiple pie-wedge sectors, one per color segment.
38
+ *
39
+ * `pf` is a 2-point bounding-box array in SVG y-DOWN device coordinates.
40
+ * Thin pen (THIN_LINE) for each wedge; caller draws boundary unfilled after.
41
+ *
42
+ * Returns 0 → ok; 1 or 2 → parse error.
43
+ *
44
+ * @see lib/common/emit.c:549 wedgedEllipse
45
+ */
46
+ export declare function wedgedEllipse(job: RenderJob, pf: Point[], clrs: string, renderer: RendererPlugin): number;
47
+ /**
48
+ * Fill a rectangular box with vertical color stripes.
49
+ *
50
+ * `pts` is a 4-point array in SVG y-DOWN device coordinates.
51
+ * `rotate` swaps corner order (true = vertical stripes, C default).
52
+ * Thin pen; caller draws boundary polygon unfilled after.
53
+ *
54
+ * Returns 0 → ok; 1 or 2 → parse error.
55
+ *
56
+ * @see lib/common/emit.c:595 stripedBox
57
+ */
58
+ export declare function stripedBox(job: RenderJob, pts: Point[], clrs: string, rotate: boolean, renderer: RendererPlugin): number;
59
+ export {};
60
+ //# sourceMappingURL=svg-multicolor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-multicolor.d.ts","sourceRoot":"","sources":["../../src/render/svg-multicolor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;GAGG;AACH,eAAO,MAAM,SAAS,MAAM,CAAC;AAiG7B,mCAAmC;AACnC,UAAU,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;CAAE;AAuCjF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAC/C,KAAK,EAAE,CAgBT;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAClE,MAAM,CAuBR;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,GACxC,MAAM,CAuBR"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Parallel multi-color Bézier edge emission (M1).
3
+ *
4
+ * Ports the `else if (numc)` branch of emit_edge_graphics from
5
+ * lib/common/emit.c:2442-2528. Each color in a "c1:c2:…" color-list
6
+ * produces one Bézier path offset SEP=2.0 graph-units perpendicular to
7
+ * the routed spline. Arrow colors follow C's headcolor/tailcolor rule:
8
+ * headcolor = first color (cnum 0), tailcolor = second color (cnum 1, else
9
+ * same as headcolor).
10
+ *
11
+ * AD1: per-curve pen flows through job.obj (caller sets penColor before
12
+ * each curve; we mutate obj.penColor here so the T4 path emitters see
13
+ * the right color).
14
+ * AD4: caller passes the raw color-list string; numc is computed here.
15
+ *
16
+ * @see lib/common/emit.c:2442 (else if numc branch)
17
+ * @see lib/common/emit.c:2364 (#define SEP 2.0)
18
+ * @see lib/common/emit.c:2481-2496 (headcolor/tailcolor assignment)
19
+ */
20
+ import type { Edge } from '../model/edge.js';
21
+ import type { RenderJob } from '../gvc/job.js';
22
+ /** Return value carrying the head/tail arrow colors for the caller. */
23
+ export interface ParallelEdgeResult {
24
+ headColor: string;
25
+ tailColor: string;
26
+ }
27
+ export declare function emitParallelEdgePaths(e: Edge, job: RenderJob, colorList: string): ParallelEdgeResult;
28
+ //# sourceMappingURL=svg-parallel-edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-parallel-edge.d.ts","sourceRoot":"","sources":["../../src/render/svg-parallel-edge.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAY/C,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAkED,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,IAAI,EACP,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAapB"}
@@ -0,0 +1,18 @@
1
+ import type { Edge } from '../model/edge.js';
2
+ import type { RenderJob } from '../gvc/job.js';
3
+ /**
4
+ * True if `style="tapered"` is among the edge's style tokens, mirroring
5
+ * emit_edge_graphics' scan of the parse_style list. Tokens are comma-separated
6
+ * (parse_style), so a bare `tapered` matches. @see lib/common/emit.c:2371
7
+ */
8
+ export declare function edgeIsTapered(e: Edge): boolean;
9
+ /**
10
+ * Emit a tapered edge: the taper polygon followed by the arrowheads. C sets
11
+ * pencolor "transparent" and fillcolor = edge color for the polygon, then
12
+ * restores pencolor = color before the arrows. The port carries pen/fill on
13
+ * job.obj, so we swap them around the polygon and restore for
14
+ * svgArrowPolygons (which paints in obj.penColor).
15
+ * @see lib/common/emit.c:2422
16
+ */
17
+ export declare function svgTaperedEdge(e: Edge, job: RenderJob): void;
18
+ //# sourceMappingURL=svg-tapered-edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-tapered-edge.d.ts","sourceRoot":"","sources":["../../src/render/svg-tapered-edge.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAI9C;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAqB5D"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * SVG renderer plugin.
3
+ *
4
+ * Faithful TypeScript port of plugin/core/gvrender_core_svg.c.
5
+ * Implements RendererPlugin to produce SVG 1.1 output.
6
+ *
7
+ * Y-coordinate investigation: The C svg_bzptarray and all shape emitters
8
+ * negate Y with -A[i].y because they receive raw PostScript (Y-up)
9
+ * coordinates and must convert to SVG (Y-down). In this TypeScript port
10
+ * the Y-flip is applied upstream via transformPoint with devscale.y = -1
11
+ * (src/gvc/device.ts). Coordinates received in all renderer callbacks are
12
+ * therefore already in SVG Y-down space; no additional negation is needed.
13
+ *
14
+ * @see plugin/core/gvrender_core_svg.c
15
+ */
16
+ import type { Graph } from '../model/graph.js';
17
+ import type { Node } from '../model/node.js';
18
+ import type { Edge } from '../model/edge.js';
19
+ import type { Point, Box } from '../model/geom.js';
20
+ import type { TextSpan } from '../common/emit-types.js';
21
+ import type { RendererPlugin, LabelType } from '../gvc/context.js';
22
+ import type { RenderJob } from '../gvc/job.js';
23
+ /**
24
+ * Faithful-to-outcome `edge_in_box`: true when the edge has something to draw.
25
+ * C's gvrender defers the `<g>` until a draw op, so an edge whose content falls
26
+ * entirely outside the clip emits no group (emit.c:edge_in_box tests each piece
27
+ * vs job->clip via boxf_overlap/overlap_label).
28
+ *
29
+ * The only piece that can legitimately fall OUTSIDE the clip on this corpus is a
30
+ * degenerate labeled-flat label: it is spline-less, so map_edge leaves it at its
31
+ * internal (un-normalized) x-frame position while the clip is the final frame.
32
+ * The `overlapLabel` test on the main label reproduces C's draw-iff-overlap for
33
+ * exactly that case — on-canvas (2368) → drawn; off-canvas (2368_1, negative
34
+ * un-normalized x) → suppressed. A present spline always lies within the clip
35
+ * (GD_bb contains it), and head/tail/xlabels are positioned at on-canvas
36
+ * endpoints, so those keep their existing unconditional triggers — adding an
37
+ * overlap test there only risks suppressing legitimately-drawn content (it
38
+ * regressed neato/circo edges whose spl.bb is computed differently). The `set`
39
+ * guard on the main label is kept: the port retains an unplaced (`pos=0,0`,
40
+ * `set=false`) label on merged back-edges where C has none.
41
+ * @see lib/common/emit.c:edge_in_box, lib/common/utils.c:overlap_label
42
+ */
43
+ export declare function edgeHasDrawableContent(e: Edge, clip: Box): boolean;
44
+ export declare class SvgRenderer implements RendererPlugin {
45
+ readonly type = "svg";
46
+ /** @see plugin/core/gvplugin_core.c registration table */
47
+ readonly quality = 0;
48
+ /** Whether the current edge's <g> group was opened (deferred-emit state). */
49
+ private edgeGroupOpen;
50
+ beginGraph(g: Graph, job: RenderJob): void;
51
+ endGraph(_g: Graph, job: RenderJob): void;
52
+ beginPage(g: Graph, job: RenderJob): void;
53
+ pageBackground(g: Graph, job: RenderJob): void;
54
+ endPage(_g: Graph, job: RenderJob): void;
55
+ beginLayer(name: string, job: RenderJob): void;
56
+ endLayer(job: RenderJob): void;
57
+ beginNode(n: Node, job: RenderJob): void;
58
+ endNode(_n: Node, job: RenderJob): void;
59
+ beginEdge(e: Edge, job: RenderJob): void;
60
+ /**
61
+ * Close the edge group. Edge graphics (path + arrowhead) are emitted here
62
+ * because the full spline is available on e.info.spl only after layout has
63
+ * run routeDotEdges.
64
+ *
65
+ * For multi-color edges (color="c1:c2:…"), emits parallel offset Béziers
66
+ * (one per color, SEP=2.0 apart) then arrows in headcolor/tailcolor.
67
+ * Single-color edges use the T4 path unchanged.
68
+ *
69
+ * @see plugin/core/gvrender_core_svg.c:svg_end_edge
70
+ * @see lib/common/emit.c:2442-2528 (else if numc parallel-bezier branch)
71
+ */
72
+ endEdge(e: Edge, job: RenderJob): void;
73
+ beginAnchor(href: string, tooltip: string, target: string, id: string, job: RenderJob): void;
74
+ endAnchor(job: RenderJob): void;
75
+ textspan(pos: Point, span: TextSpan, job: RenderJob): void;
76
+ ellipse(center: Point, rx: number, ry: number, filled: boolean, job: RenderJob): void;
77
+ polygon(pts: Point[], filled: boolean, job: RenderJob): void;
78
+ bezier(pts: Point[], filled: boolean, job: RenderJob): void;
79
+ polyline(pts: Point[], job: RenderJob): void;
80
+ attachmentPolyline(pts: Point[], pencolor: string, job: RenderJob): void;
81
+ /**
82
+ * Emit an <image> element. C formats numbers with %g here (not the
83
+ * svg_printdouble used elsewhere); toPrecision(6) reproduces %g.
84
+ * Deviation: C writes us->name raw (gvputs); the port XML-escapes the
85
+ * src so metacharacter paths cannot produce invalid SVG.
86
+ *
87
+ * AD-1 (image-api, additive): when job.inlineImages is set AND the
88
+ * registered image resolver (`setImageResolver`) resolves `src`, emit a
89
+ * self-contained `data:` URI instead of the raw src passthrough. This is
90
+ * not a C behavior — native Graphviz never inlines image bytes. Default
91
+ * off (job.inlineImages unset/false, or no resolver registered, or the
92
+ * resolver misses) reproduces the byte-identical pre-AD-1 output below.
93
+ * @see plugin/core/gvloadimage_core.c:core_loadimage_svg
94
+ * @see src/gvc/image-resolver.ts
95
+ */
96
+ usershape(src: string, b: Box, job: RenderJob): void;
97
+ comment(text: string, job: RenderJob): void;
98
+ beginLabel(_type: LabelType, _job: RenderJob): void;
99
+ endLabel(_job: RenderJob): void;
100
+ beginCluster(sg: Graph, job: RenderJob): void;
101
+ endCluster(_sg: Graph, job: RenderJob): void;
102
+ }
103
+ export declare function createSvgRenderer(): RendererPlugin;
104
+ //# sourceMappingURL=svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/render/svg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Public API for structured xdot draw-op access.
3
+ *
4
+ * Lays out a Graph, renders it to the xdot format, parses the xdot
5
+ * attribute strings back into typed XdotOp values, and returns a flat
6
+ * op stream the caller can feed to any drawing backend (canvas, WebGL,
7
+ * PDF, native UI) without touching SVG.
8
+ *
9
+ * This wrapper is a thin, faithful exposure of whatever the xdot renderer
10
+ * emits — it adds no draw ops of its own.
11
+ *
12
+ * KNOWN LIMITATION (xdot renderer, not this wrapper): the underlying xdot
13
+ * renderer (`createXdotRenderer` in `render/dot.ts`) is currently
14
+ * integration-incomplete relative to native `dot -Txdot`:
15
+ * - edges emit no `_draw_` ops (no spline/arrowhead draw ops surface here);
16
+ * - custom node pen/fill colors are not applied to the emitted ops;
17
+ * - node draw-op coordinates can be mismatched between nodes.
18
+ * Node shape ops (ellipse/polygon), text/label ops, and font ops are
19
+ * emitted and surface correctly. The geometry itself is fully computed
20
+ * (the SVG renderer draws the same graph correctly); only the xdot
21
+ * emission path is incomplete. A faithful fix is tracked as a follow-on
22
+ * mission (see plans/expose-library-api/decision-journal.md, 2026-06-21).
23
+ *
24
+ * @see lib/xdot/xdot.h
25
+ * @see plugin/core/gvrender_core_dot.c (FORMAT_XDOT)
26
+ */
27
+ import type { XdotOp } from '../xdot/types.js';
28
+ import { Graph } from '../model/graph.js';
29
+ import type { EngineName } from '../gvc/context.js';
30
+ /**
31
+ * `Xdot` — the parsed result of one xdot attribute stream: `ops` (the
32
+ * decoded draw-op array) plus `flags` (parse status bits).
33
+ *
34
+ * `XdotOp` — a single decoded xdot drawing operation, discriminated by its
35
+ * `kind` field (e.g. `filled_ellipse`, `filled_polygon`, `filled_bezier`,
36
+ * `polyline`, `text`, `fill_color`, `pen_color`, `grad_fill_color`,
37
+ * `grad_pen_color`, `font`, `style`, `image`, `fontchar`). Each variant
38
+ * carries one payload property named for its shape (`ellipse`, `polygon`,
39
+ * `bezier`, `polyline`, `text`, `color`, `gradColor`, `font`, `style`,
40
+ * `image`, `fontchar`) — narrow on `kind` in a switch to access it safely.
41
+ *
42
+ * `XdotColor` — a resolved xdot fill/pen color: `{ type: 'none', clr }` for
43
+ * a solid color, or a linear/radial gradient (`{ type: 'linear', ling }` /
44
+ * `{ type: 'radial', ring }`).
45
+ *
46
+ * @see lib/xdot/xdot.h:xdot
47
+ * @see lib/xdot/xdot.h:xdot_op (`_xdot_op`)
48
+ * @see lib/xdot/xdot.h:xdot_color
49
+ */
50
+ export type { Xdot, XdotOp, XdotColor } from '../xdot/index.js';
51
+ /** Options for {@link getDrawOps}. */
52
+ export interface DrawOpsOptions {
53
+ /** Layout engine to use. Defaults to `'dot'`. */
54
+ engine?: EngineName;
55
+ }
56
+ /** Default layout engine used by {@link getDrawOps}. */
57
+ export declare const DEFAULT_DRAW_ENGINE: EngineName;
58
+ /**
59
+ * Lay out `g`, render to xdot, parse every draw-attribute stream, and
60
+ * return all ops as a flat `XdotOp[]` in paint order (graph → node → edge).
61
+ *
62
+ * Consumers discriminate on the `kind` field of the `XdotOp` union —
63
+ * no string parsing required.
64
+ *
65
+ * @param g - A Graph from `parse()` or the builder API.
66
+ * @param opts - Optional: `{ engine }` overrides the default `'dot'`.
67
+ * @returns Flat typed draw-op array covering the full graph.
68
+ * @throws ParseError if the xdot DOT output cannot be re-parsed.
69
+ * @throws RenderError if layout or rendering fails.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { parse } from '@knowvah/dot-engine';
74
+ * import { getDrawOps } from 'graphviz-ts/render';
75
+ *
76
+ * const g = parse('digraph { a -> b; }');
77
+ * for (const op of getDrawOps(g)) {
78
+ * switch (op.kind) {
79
+ * case 'filled_ellipse':
80
+ * case 'unfilled_ellipse':
81
+ * drawEllipse(op.ellipse);
82
+ * break;
83
+ * case 'text':
84
+ * drawText(op.text);
85
+ * break;
86
+ * // ...handle the remaining XdotOp kinds
87
+ * }
88
+ * }
89
+ * ```
90
+ *
91
+ * @see lib/xdot/xdot.h
92
+ * @see lib/gvc/gvc.h:gvRender
93
+ */
94
+ export declare function getDrawOps(g: Graph, opts?: DrawOpsOptions): XdotOp[];
95
+ //# sourceMappingURL=xdot-public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdot-public.d.ts","sourceRoot":"","sources":["../../src/render/xdot-public.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,EAAE,UAAkB,CAAC;AAwDrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAGpE"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Base XML escape (gv_xml_escape with flags {0}): ids, titles, hrefs.
3
+ * @see lib/util/xml.c gv_xml_escape / xml_core / xml_isentity
4
+ */
5
+ export declare function escapeXml(s: string): string;
6
+ /**
7
+ * Title/id/class XML escape (gv_xml_escape with flags {dash, nbsp} — C's
8
+ * gvputs_xml): base escaping plus '-'→&#45; and 2nd+ consecutive
9
+ * spaces→&#160;, WITHOUT the raw flag (entity-aware '&', no \n/\r
10
+ * escapes). Used for <title> content and id/class attribute values.
11
+ * @see lib/gvc/gvdevice.c:gvputs_xml, lib/util/xml.c:xml_core
12
+ */
13
+ export declare function escapeXmlTitle(s: string): string;
14
+ /**
15
+ * Text/tooltip XML escape (gv_xml_escape with flags {raw, dash, nbsp}):
16
+ * additionally escapes '-'→&#45;, newline/CR→&#10;/&#13;, and 2nd+ consecutive
17
+ * spaces→&#160;. Used for textspans and tooltips.
18
+ * @see plugin/core/gvrender_core_svg.c:546 (svg_textspan flags)
19
+ */
20
+ export declare function escapeXmlText(s: string): string;
21
+ //# sourceMappingURL=xml-escape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-escape.d.ts","sourceRoot":"","sources":["../../src/render/xml-escape.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO/C"}