@retikz/core 0.3.0-alpha.5 → 0.3.0-beta.2

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 (439) hide show
  1. package/dist/es/arrows/define.d.ts +9 -0
  2. package/dist/es/arrows/define.d.ts.map +1 -0
  3. package/dist/es/arrows/define.js +10 -0
  4. package/dist/es/arrows/index.d.ts +3 -1
  5. package/dist/es/arrows/index.d.ts.map +1 -1
  6. package/dist/es/arrows/index.js +15 -2
  7. package/dist/es/arrows/types.d.ts +4 -2
  8. package/dist/es/arrows/types.d.ts.map +1 -1
  9. package/dist/es/compile/anchor-cache.d.ts +3 -3
  10. package/dist/es/compile/anchor-cache.d.ts.map +1 -1
  11. package/dist/es/compile/anchor-cache.js +18 -5
  12. package/dist/es/compile/compile.d.ts +5 -14
  13. package/dist/es/compile/compile.d.ts.map +1 -1
  14. package/dist/es/compile/compile.js +46 -43
  15. package/dist/es/compile/{lowerComposites.d.ts → composite.d.ts} +9 -2
  16. package/dist/es/compile/composite.d.ts.map +1 -0
  17. package/dist/es/compile/{lowerComposites.js → composite.js} +9 -1
  18. package/dist/es/compile/constant.d.ts +30 -0
  19. package/dist/es/compile/constant.d.ts.map +1 -0
  20. package/dist/es/compile/constant.js +21 -0
  21. package/dist/es/compile/direction.d.ts +27 -0
  22. package/dist/es/compile/direction.d.ts.map +1 -0
  23. package/dist/es/compile/direction.js +30 -0
  24. package/dist/es/compile/index.d.ts +3 -1
  25. package/dist/es/compile/index.d.ts.map +1 -1
  26. package/dist/es/compile/name-stack.d.ts +3 -1
  27. package/dist/es/compile/name-stack.d.ts.map +1 -1
  28. package/dist/es/compile/name-stack.js +5 -1
  29. package/dist/es/compile/node.d.ts +19 -8
  30. package/dist/es/compile/node.d.ts.map +1 -1
  31. package/dist/es/compile/node.js +56 -70
  32. package/dist/es/compile/paint.js +1 -1
  33. package/dist/es/compile/path/anchor.d.ts +4 -3
  34. package/dist/es/compile/path/anchor.d.ts.map +1 -1
  35. package/dist/es/compile/path/anchor.js +9 -12
  36. package/dist/es/compile/path/index.d.ts +6 -8
  37. package/dist/es/compile/path/index.d.ts.map +1 -1
  38. package/dist/es/compile/path/index.js +97 -44
  39. package/dist/es/compile/path/label.d.ts.map +1 -1
  40. package/dist/es/compile/path/label.js +8 -4
  41. package/dist/es/compile/path/relative.d.ts +1 -1
  42. package/dist/es/compile/path/relative.js +1 -1
  43. package/dist/es/compile/path/shrink.d.ts +3 -1
  44. package/dist/es/compile/path/shrink.d.ts.map +1 -1
  45. package/dist/es/compile/path/shrink.js +16 -11
  46. package/dist/es/compile/position.d.ts +2 -2
  47. package/dist/es/compile/position.d.ts.map +1 -1
  48. package/dist/es/compile/position.js +6 -19
  49. package/dist/es/compile/precision.d.ts +1 -1
  50. package/dist/es/compile/precision.d.ts.map +1 -1
  51. package/dist/es/compile/precision.js +2 -2
  52. package/dist/es/compile/scope.d.ts +7 -5
  53. package/dist/es/compile/scope.d.ts.map +1 -1
  54. package/dist/es/compile/scope.js +44 -16
  55. package/dist/es/compile/style.d.ts +2 -2
  56. package/dist/es/compile/style.d.ts.map +1 -1
  57. package/dist/es/compile/style.js +2 -2
  58. package/dist/es/compile/text-metrics.d.ts +1 -1
  59. package/dist/es/compile/text-metrics.js +2 -2
  60. package/dist/es/composites/define.d.ts +8 -0
  61. package/dist/es/composites/define.d.ts.map +1 -0
  62. package/dist/es/composites/{types.js → define.js} +2 -2
  63. package/dist/es/composites/index.d.ts +1 -1
  64. package/dist/es/composites/index.d.ts.map +1 -1
  65. package/dist/es/composites/types.d.ts +0 -6
  66. package/dist/es/composites/types.d.ts.map +1 -1
  67. package/dist/es/geometry/anchor.d.ts +33 -0
  68. package/dist/es/geometry/anchor.d.ts.map +1 -0
  69. package/dist/es/geometry/anchor.js +45 -0
  70. package/dist/es/geometry/bend.d.ts +1 -1
  71. package/dist/es/geometry/bend.js +3 -3
  72. package/dist/es/geometry/circle.d.ts +4 -4
  73. package/dist/es/geometry/circle.d.ts.map +1 -1
  74. package/dist/es/geometry/circle.js +3 -3
  75. package/dist/es/geometry/{roundedContour.d.ts → contour.d.ts} +9 -5
  76. package/dist/es/geometry/contour.d.ts.map +1 -0
  77. package/dist/es/geometry/{roundedContour.js → contour.js} +27 -37
  78. package/dist/es/geometry/diamond.d.ts +10 -4
  79. package/dist/es/geometry/diamond.d.ts.map +1 -1
  80. package/dist/es/geometry/diamond.js +11 -3
  81. package/dist/{lib/geometry/_edge.d.ts → es/geometry/edge.d.ts} +1 -1
  82. package/dist/es/geometry/edge.d.ts.map +1 -0
  83. package/dist/es/geometry/{_edge.js → edge.js} +1 -1
  84. package/dist/es/geometry/ellipse.d.ts +3 -3
  85. package/dist/es/geometry/ellipse.d.ts.map +1 -1
  86. package/dist/es/geometry/ellipse.js +4 -2
  87. package/dist/es/geometry/index.d.ts +6 -1
  88. package/dist/es/geometry/index.d.ts.map +1 -1
  89. package/dist/es/geometry/point.d.ts +6 -0
  90. package/dist/es/geometry/point.d.ts.map +1 -1
  91. package/dist/es/geometry/point.js +17 -0
  92. package/dist/es/geometry/rect.d.ts +4 -17
  93. package/dist/es/geometry/rect.d.ts.map +1 -1
  94. package/dist/es/geometry/rect.js +4 -16
  95. package/dist/es/geometry/segment.d.ts +7 -0
  96. package/dist/es/geometry/segment.d.ts.map +1 -1
  97. package/dist/es/geometry/segment.js +48 -47
  98. package/dist/{lib/geometry/_transform.d.ts → es/geometry/transform.d.ts} +1 -1
  99. package/dist/es/geometry/transform.d.ts.map +1 -0
  100. package/dist/es/geometry/{_transform.js → transform.js} +1 -1
  101. package/dist/es/index.d.ts +13 -13
  102. package/dist/es/index.d.ts.map +1 -1
  103. package/dist/es/index.js +20 -16
  104. package/dist/es/ir/animation.d.ts +26 -125
  105. package/dist/es/ir/animation.d.ts.map +1 -1
  106. package/dist/es/ir/animation.js +6 -6
  107. package/dist/es/ir/boundary.d.ts +4 -10
  108. package/dist/es/ir/boundary.d.ts.map +1 -1
  109. package/dist/es/ir/clip.d.ts +6 -46
  110. package/dist/es/ir/clip.d.ts.map +1 -1
  111. package/dist/es/ir/composite.d.ts +2 -14
  112. package/dist/es/ir/composite.d.ts.map +1 -1
  113. package/dist/es/ir/coordinate.d.ts +14 -50
  114. package/dist/es/ir/coordinate.d.ts.map +1 -1
  115. package/dist/es/ir/coordinate.js +1 -1
  116. package/dist/es/ir/font.d.ts +10 -13
  117. package/dist/es/ir/font.d.ts.map +1 -1
  118. package/dist/es/ir/json.d.ts +1 -1
  119. package/dist/es/ir/json.d.ts.map +1 -1
  120. package/dist/es/ir/json.js +1 -1
  121. package/dist/es/ir/node.d.ts +175 -821
  122. package/dist/es/ir/node.d.ts.map +1 -1
  123. package/dist/es/ir/node.js +23 -23
  124. package/dist/es/ir/paint.d.ts +23 -100
  125. package/dist/es/ir/paint.d.ts.map +1 -1
  126. package/dist/es/ir/paint.js +10 -10
  127. package/dist/es/ir/path/arrow.d.ts +19 -131
  128. package/dist/es/ir/path/arrow.d.ts.map +1 -1
  129. package/dist/es/ir/path/arrow.js +18 -16
  130. package/dist/es/ir/path/path.d.ts +519 -3065
  131. package/dist/es/ir/path/path.d.ts.map +1 -1
  132. package/dist/es/ir/path/path.js +3 -3
  133. package/dist/es/ir/path/step.d.ts +929 -3474
  134. package/dist/es/ir/path/step.d.ts.map +1 -1
  135. package/dist/es/ir/path/step.js +74 -23
  136. package/dist/es/ir/path/target.d.ts +40 -121
  137. package/dist/es/ir/path/target.d.ts.map +1 -1
  138. package/dist/es/ir/path/target.js +3 -3
  139. package/dist/es/ir/position/at-position.d.ts +20 -28
  140. package/dist/es/ir/position/at-position.d.ts.map +1 -1
  141. package/dist/es/ir/position/at-position.js +11 -11
  142. package/dist/es/ir/position/offset-position.d.ts +2 -8
  143. package/dist/es/ir/position/offset-position.d.ts.map +1 -1
  144. package/dist/es/ir/scene.d.ts +17 -181
  145. package/dist/es/ir/scene.d.ts.map +1 -1
  146. package/dist/es/ir/scope.d.ts +315 -7291
  147. package/dist/es/ir/scope.d.ts.map +1 -1
  148. package/dist/es/ir/scope.js +10 -7
  149. package/dist/es/ir/shape.d.ts +2 -8
  150. package/dist/es/ir/shape.d.ts.map +1 -1
  151. package/dist/es/ir/text.d.ts +24 -70
  152. package/dist/es/ir/text.d.ts.map +1 -1
  153. package/dist/es/ir/transform.d.ts +47 -144
  154. package/dist/es/ir/transform.d.ts.map +1 -1
  155. package/dist/es/ir/transform.js +12 -5
  156. package/dist/es/parsers/index.d.ts +3 -3
  157. package/dist/es/parsers/index.d.ts.map +1 -1
  158. package/dist/es/parsers/{parseNodeTarget.d.ts → node-target.d.ts} +1 -1
  159. package/dist/es/parsers/node-target.d.ts.map +1 -0
  160. package/dist/es/parsers/{parseNodeTarget.js → node-target.js} +10 -8
  161. package/dist/{lib/parsers/parseTargetSugar.d.ts → es/parsers/target-sugar.d.ts} +1 -1
  162. package/dist/es/parsers/target-sugar.d.ts.map +1 -0
  163. package/dist/es/parsers/{parseTargetSugar.js → target-sugar.js} +9 -4
  164. package/dist/{lib/parsers/parseWay.d.ts → es/parsers/way.d.ts} +2 -2
  165. package/dist/es/parsers/way.d.ts.map +1 -0
  166. package/dist/es/parsers/{parseWay.js → way.js} +10 -6
  167. package/dist/es/path-generators/define.d.ts.map +1 -0
  168. package/dist/es/{pathGenerators → path-generators}/define.js +1 -1
  169. package/dist/es/path-generators/index.d.ts.map +1 -0
  170. package/dist/es/path-generators/types.d.ts.map +1 -0
  171. package/dist/es/patterns/define.d.ts +9 -0
  172. package/dist/es/patterns/define.d.ts.map +1 -0
  173. package/dist/es/patterns/define.js +10 -0
  174. package/dist/es/patterns/index.d.ts +1 -0
  175. package/dist/es/patterns/index.d.ts.map +1 -1
  176. package/dist/es/patterns/index.js +42 -35
  177. package/dist/es/presets/animation.js +2 -2
  178. package/dist/es/primitive/marker.d.ts +7 -7
  179. package/dist/es/primitive/marker.d.ts.map +1 -1
  180. package/dist/es/primitive/paint.d.ts +1 -1
  181. package/dist/es/primitive/path.d.ts +1 -1
  182. package/dist/es/shapes/arc.d.ts.map +1 -1
  183. package/dist/es/shapes/arc.js +24 -5
  184. package/dist/{lib/shapes/_contour.d.ts → es/shapes/contour.d.ts} +6 -3
  185. package/dist/es/shapes/contour.d.ts.map +1 -0
  186. package/dist/es/shapes/{_contour.js → contour.js} +14 -2
  187. package/dist/es/shapes/ellipse.js +2 -2
  188. package/dist/es/shapes/index.d.ts +1 -1
  189. package/dist/es/shapes/index.d.ts.map +1 -1
  190. package/dist/es/shapes/index.js +1 -1
  191. package/dist/es/shapes/polygon.d.ts +1 -1
  192. package/dist/es/shapes/polygon.d.ts.map +1 -1
  193. package/dist/es/shapes/polygon.js +26 -21
  194. package/dist/es/shapes/rectangle.js +6 -6
  195. package/dist/es/shapes/sector.d.ts.map +1 -1
  196. package/dist/es/shapes/sector.js +30 -22
  197. package/dist/es/shapes/{_shared.d.ts → shared.d.ts} +7 -10
  198. package/dist/es/shapes/shared.d.ts.map +1 -0
  199. package/dist/es/shapes/{_shared.js → shared.js} +13 -15
  200. package/dist/es/shapes/star.d.ts.map +1 -1
  201. package/dist/es/shapes/star.js +6 -15
  202. package/dist/es/shapes/types.d.ts +10 -3
  203. package/dist/es/shapes/types.d.ts.map +1 -1
  204. package/dist/es/types.d.ts +1 -1
  205. package/dist/lib/arrows/define.cjs +10 -0
  206. package/dist/lib/arrows/define.d.ts +9 -0
  207. package/dist/lib/arrows/define.d.ts.map +1 -0
  208. package/dist/lib/arrows/index.cjs +15 -2
  209. package/dist/lib/arrows/index.d.ts +3 -1
  210. package/dist/lib/arrows/index.d.ts.map +1 -1
  211. package/dist/lib/arrows/types.d.ts +4 -2
  212. package/dist/lib/arrows/types.d.ts.map +1 -1
  213. package/dist/lib/compile/anchor-cache.cjs +17 -4
  214. package/dist/lib/compile/anchor-cache.d.ts +3 -3
  215. package/dist/lib/compile/anchor-cache.d.ts.map +1 -1
  216. package/dist/lib/compile/compile.cjs +44 -41
  217. package/dist/lib/compile/compile.d.ts +5 -14
  218. package/dist/lib/compile/compile.d.ts.map +1 -1
  219. package/dist/lib/compile/{lowerComposites.cjs → composite.cjs} +9 -1
  220. package/dist/lib/compile/{lowerComposites.d.ts → composite.d.ts} +9 -2
  221. package/dist/lib/compile/composite.d.ts.map +1 -0
  222. package/dist/lib/compile/constant.cjs +22 -0
  223. package/dist/lib/compile/constant.d.ts +30 -0
  224. package/dist/lib/compile/constant.d.ts.map +1 -0
  225. package/dist/lib/compile/direction.cjs +31 -0
  226. package/dist/lib/compile/direction.d.ts +27 -0
  227. package/dist/lib/compile/direction.d.ts.map +1 -0
  228. package/dist/lib/compile/index.d.ts +3 -1
  229. package/dist/lib/compile/index.d.ts.map +1 -1
  230. package/dist/lib/compile/name-stack.cjs +5 -1
  231. package/dist/lib/compile/name-stack.d.ts +3 -1
  232. package/dist/lib/compile/name-stack.d.ts.map +1 -1
  233. package/dist/lib/compile/node.cjs +56 -69
  234. package/dist/lib/compile/node.d.ts +19 -8
  235. package/dist/lib/compile/node.d.ts.map +1 -1
  236. package/dist/lib/compile/paint.cjs +1 -1
  237. package/dist/lib/compile/path/anchor.cjs +10 -12
  238. package/dist/lib/compile/path/anchor.d.ts +4 -3
  239. package/dist/lib/compile/path/anchor.d.ts.map +1 -1
  240. package/dist/lib/compile/path/index.cjs +95 -42
  241. package/dist/lib/compile/path/index.d.ts +6 -8
  242. package/dist/lib/compile/path/index.d.ts.map +1 -1
  243. package/dist/lib/compile/path/label.cjs +8 -4
  244. package/dist/lib/compile/path/label.d.ts.map +1 -1
  245. package/dist/lib/compile/path/relative.cjs +1 -1
  246. package/dist/lib/compile/path/relative.d.ts +1 -1
  247. package/dist/lib/compile/path/shrink.cjs +16 -11
  248. package/dist/lib/compile/path/shrink.d.ts +3 -1
  249. package/dist/lib/compile/path/shrink.d.ts.map +1 -1
  250. package/dist/lib/compile/position.cjs +6 -19
  251. package/dist/lib/compile/position.d.ts +2 -2
  252. package/dist/lib/compile/position.d.ts.map +1 -1
  253. package/dist/lib/compile/precision.cjs +2 -2
  254. package/dist/lib/compile/precision.d.ts +1 -1
  255. package/dist/lib/compile/precision.d.ts.map +1 -1
  256. package/dist/lib/compile/scope.cjs +44 -16
  257. package/dist/lib/compile/scope.d.ts +7 -5
  258. package/dist/lib/compile/scope.d.ts.map +1 -1
  259. package/dist/lib/compile/style.cjs +2 -2
  260. package/dist/lib/compile/style.d.ts +2 -2
  261. package/dist/lib/compile/style.d.ts.map +1 -1
  262. package/dist/lib/compile/text-metrics.cjs +2 -2
  263. package/dist/lib/compile/text-metrics.d.ts +1 -1
  264. package/dist/lib/composites/{types.cjs → define.cjs} +2 -2
  265. package/dist/lib/composites/define.d.ts +8 -0
  266. package/dist/lib/composites/define.d.ts.map +1 -0
  267. package/dist/lib/composites/index.d.ts +1 -1
  268. package/dist/lib/composites/index.d.ts.map +1 -1
  269. package/dist/lib/composites/types.d.ts +0 -6
  270. package/dist/lib/composites/types.d.ts.map +1 -1
  271. package/dist/lib/geometry/anchor.cjs +47 -0
  272. package/dist/lib/geometry/anchor.d.ts +33 -0
  273. package/dist/lib/geometry/anchor.d.ts.map +1 -0
  274. package/dist/lib/geometry/bend.cjs +3 -3
  275. package/dist/lib/geometry/bend.d.ts +1 -1
  276. package/dist/lib/geometry/circle.cjs +9 -9
  277. package/dist/lib/geometry/circle.d.ts +4 -4
  278. package/dist/lib/geometry/circle.d.ts.map +1 -1
  279. package/dist/lib/geometry/{roundedContour.cjs → contour.cjs} +26 -35
  280. package/dist/lib/geometry/{roundedContour.d.ts → contour.d.ts} +9 -5
  281. package/dist/lib/geometry/contour.d.ts.map +1 -0
  282. package/dist/lib/geometry/diamond.cjs +16 -8
  283. package/dist/lib/geometry/diamond.d.ts +10 -4
  284. package/dist/lib/geometry/diamond.d.ts.map +1 -1
  285. package/dist/lib/geometry/{_edge.cjs → edge.cjs} +1 -1
  286. package/dist/{es/geometry/_edge.d.ts → lib/geometry/edge.d.ts} +1 -1
  287. package/dist/lib/geometry/edge.d.ts.map +1 -0
  288. package/dist/lib/geometry/ellipse.cjs +10 -8
  289. package/dist/lib/geometry/ellipse.d.ts +3 -3
  290. package/dist/lib/geometry/ellipse.d.ts.map +1 -1
  291. package/dist/lib/geometry/index.d.ts +6 -1
  292. package/dist/lib/geometry/index.d.ts.map +1 -1
  293. package/dist/lib/geometry/point.cjs +17 -0
  294. package/dist/lib/geometry/point.d.ts +6 -0
  295. package/dist/lib/geometry/point.d.ts.map +1 -1
  296. package/dist/lib/geometry/rect.cjs +9 -22
  297. package/dist/lib/geometry/rect.d.ts +4 -17
  298. package/dist/lib/geometry/rect.d.ts.map +1 -1
  299. package/dist/lib/geometry/segment.cjs +48 -46
  300. package/dist/lib/geometry/segment.d.ts +7 -0
  301. package/dist/lib/geometry/segment.d.ts.map +1 -1
  302. package/dist/lib/geometry/{_transform.cjs → transform.cjs} +1 -1
  303. package/dist/{es/geometry/_transform.d.ts → lib/geometry/transform.d.ts} +1 -1
  304. package/dist/lib/geometry/transform.d.ts.map +1 -0
  305. package/dist/lib/index.cjs +35 -22
  306. package/dist/lib/index.d.ts +13 -13
  307. package/dist/lib/index.d.ts.map +1 -1
  308. package/dist/lib/ir/animation.cjs +6 -6
  309. package/dist/lib/ir/animation.d.ts +26 -125
  310. package/dist/lib/ir/animation.d.ts.map +1 -1
  311. package/dist/lib/ir/boundary.d.ts +4 -10
  312. package/dist/lib/ir/boundary.d.ts.map +1 -1
  313. package/dist/lib/ir/clip.d.ts +6 -46
  314. package/dist/lib/ir/clip.d.ts.map +1 -1
  315. package/dist/lib/ir/composite.d.ts +2 -14
  316. package/dist/lib/ir/composite.d.ts.map +1 -1
  317. package/dist/lib/ir/coordinate.cjs +1 -1
  318. package/dist/lib/ir/coordinate.d.ts +14 -50
  319. package/dist/lib/ir/coordinate.d.ts.map +1 -1
  320. package/dist/lib/ir/font.d.ts +10 -13
  321. package/dist/lib/ir/font.d.ts.map +1 -1
  322. package/dist/lib/ir/json.cjs +1 -1
  323. package/dist/lib/ir/json.d.ts +1 -1
  324. package/dist/lib/ir/json.d.ts.map +1 -1
  325. package/dist/lib/ir/node.cjs +23 -23
  326. package/dist/lib/ir/node.d.ts +175 -821
  327. package/dist/lib/ir/node.d.ts.map +1 -1
  328. package/dist/lib/ir/paint.cjs +10 -10
  329. package/dist/lib/ir/paint.d.ts +23 -100
  330. package/dist/lib/ir/paint.d.ts.map +1 -1
  331. package/dist/lib/ir/path/arrow.cjs +18 -16
  332. package/dist/lib/ir/path/arrow.d.ts +19 -131
  333. package/dist/lib/ir/path/arrow.d.ts.map +1 -1
  334. package/dist/lib/ir/path/path.cjs +4 -2
  335. package/dist/lib/ir/path/path.d.ts +519 -3065
  336. package/dist/lib/ir/path/path.d.ts.map +1 -1
  337. package/dist/lib/ir/path/step.cjs +74 -22
  338. package/dist/lib/ir/path/step.d.ts +929 -3474
  339. package/dist/lib/ir/path/step.d.ts.map +1 -1
  340. package/dist/lib/ir/path/target.cjs +3 -3
  341. package/dist/lib/ir/path/target.d.ts +40 -121
  342. package/dist/lib/ir/path/target.d.ts.map +1 -1
  343. package/dist/lib/ir/position/at-position.cjs +11 -11
  344. package/dist/lib/ir/position/at-position.d.ts +20 -28
  345. package/dist/lib/ir/position/at-position.d.ts.map +1 -1
  346. package/dist/lib/ir/position/offset-position.d.ts +2 -8
  347. package/dist/lib/ir/position/offset-position.d.ts.map +1 -1
  348. package/dist/lib/ir/scene.d.ts +17 -181
  349. package/dist/lib/ir/scene.d.ts.map +1 -1
  350. package/dist/lib/ir/scope.cjs +10 -7
  351. package/dist/lib/ir/scope.d.ts +315 -7291
  352. package/dist/lib/ir/scope.d.ts.map +1 -1
  353. package/dist/lib/ir/shape.d.ts +2 -8
  354. package/dist/lib/ir/shape.d.ts.map +1 -1
  355. package/dist/lib/ir/text.d.ts +24 -70
  356. package/dist/lib/ir/text.d.ts.map +1 -1
  357. package/dist/lib/ir/transform.cjs +11 -4
  358. package/dist/lib/ir/transform.d.ts +47 -144
  359. package/dist/lib/ir/transform.d.ts.map +1 -1
  360. package/dist/lib/parsers/index.d.ts +3 -3
  361. package/dist/lib/parsers/index.d.ts.map +1 -1
  362. package/dist/lib/parsers/{parseNodeTarget.cjs → node-target.cjs} +10 -8
  363. package/dist/lib/parsers/{parseNodeTarget.d.ts → node-target.d.ts} +1 -1
  364. package/dist/lib/parsers/node-target.d.ts.map +1 -0
  365. package/dist/lib/parsers/{parseTargetSugar.cjs → target-sugar.cjs} +9 -4
  366. package/dist/{es/parsers/parseTargetSugar.d.ts → lib/parsers/target-sugar.d.ts} +1 -1
  367. package/dist/lib/parsers/target-sugar.d.ts.map +1 -0
  368. package/dist/lib/parsers/{parseWay.cjs → way.cjs} +13 -9
  369. package/dist/{es/parsers/parseWay.d.ts → lib/parsers/way.d.ts} +2 -2
  370. package/dist/lib/parsers/way.d.ts.map +1 -0
  371. package/dist/lib/{pathGenerators → path-generators}/define.cjs +1 -1
  372. package/dist/lib/path-generators/define.d.ts.map +1 -0
  373. package/dist/lib/path-generators/index.d.ts.map +1 -0
  374. package/dist/lib/path-generators/types.d.ts.map +1 -0
  375. package/dist/lib/patterns/define.cjs +10 -0
  376. package/dist/lib/patterns/define.d.ts +9 -0
  377. package/dist/lib/patterns/define.d.ts.map +1 -0
  378. package/dist/lib/patterns/index.cjs +42 -35
  379. package/dist/lib/patterns/index.d.ts +1 -0
  380. package/dist/lib/patterns/index.d.ts.map +1 -1
  381. package/dist/lib/presets/animation.cjs +2 -2
  382. package/dist/lib/primitive/marker.d.ts +7 -7
  383. package/dist/lib/primitive/marker.d.ts.map +1 -1
  384. package/dist/lib/primitive/paint.d.ts +1 -1
  385. package/dist/lib/primitive/path.d.ts +1 -1
  386. package/dist/lib/shapes/arc.cjs +26 -7
  387. package/dist/lib/shapes/arc.d.ts.map +1 -1
  388. package/dist/lib/shapes/{_contour.cjs → contour.cjs} +14 -1
  389. package/dist/{es/shapes/_contour.d.ts → lib/shapes/contour.d.ts} +6 -3
  390. package/dist/lib/shapes/contour.d.ts.map +1 -0
  391. package/dist/lib/shapes/ellipse.cjs +2 -2
  392. package/dist/lib/shapes/index.cjs +1 -1
  393. package/dist/lib/shapes/index.d.ts +1 -1
  394. package/dist/lib/shapes/index.d.ts.map +1 -1
  395. package/dist/lib/shapes/polygon.cjs +29 -24
  396. package/dist/lib/shapes/polygon.d.ts +1 -1
  397. package/dist/lib/shapes/polygon.d.ts.map +1 -1
  398. package/dist/lib/shapes/rectangle.cjs +12 -12
  399. package/dist/lib/shapes/sector.cjs +41 -33
  400. package/dist/lib/shapes/sector.d.ts.map +1 -1
  401. package/dist/lib/shapes/{_shared.cjs → shared.cjs} +12 -15
  402. package/dist/lib/shapes/{_shared.d.ts → shared.d.ts} +7 -10
  403. package/dist/lib/shapes/shared.d.ts.map +1 -0
  404. package/dist/lib/shapes/star.cjs +9 -18
  405. package/dist/lib/shapes/star.d.ts.map +1 -1
  406. package/dist/lib/shapes/types.d.ts +10 -3
  407. package/dist/lib/shapes/types.d.ts.map +1 -1
  408. package/dist/lib/types.d.ts +1 -1
  409. package/package.json +3 -4
  410. package/dist/es/compile/lowerComposites.d.ts.map +0 -1
  411. package/dist/es/geometry/_edge.d.ts.map +0 -1
  412. package/dist/es/geometry/_transform.d.ts.map +0 -1
  413. package/dist/es/geometry/roundedContour.d.ts.map +0 -1
  414. package/dist/es/parsers/parseNodeTarget.d.ts.map +0 -1
  415. package/dist/es/parsers/parseTargetSugar.d.ts.map +0 -1
  416. package/dist/es/parsers/parseWay.d.ts.map +0 -1
  417. package/dist/es/pathGenerators/define.d.ts.map +0 -1
  418. package/dist/es/pathGenerators/index.d.ts.map +0 -1
  419. package/dist/es/pathGenerators/types.d.ts.map +0 -1
  420. package/dist/es/shapes/_contour.d.ts.map +0 -1
  421. package/dist/es/shapes/_shared.d.ts.map +0 -1
  422. package/dist/lib/compile/lowerComposites.d.ts.map +0 -1
  423. package/dist/lib/geometry/_edge.d.ts.map +0 -1
  424. package/dist/lib/geometry/_transform.d.ts.map +0 -1
  425. package/dist/lib/geometry/roundedContour.d.ts.map +0 -1
  426. package/dist/lib/parsers/parseNodeTarget.d.ts.map +0 -1
  427. package/dist/lib/parsers/parseTargetSugar.d.ts.map +0 -1
  428. package/dist/lib/parsers/parseWay.d.ts.map +0 -1
  429. package/dist/lib/pathGenerators/define.d.ts.map +0 -1
  430. package/dist/lib/pathGenerators/index.d.ts.map +0 -1
  431. package/dist/lib/pathGenerators/types.d.ts.map +0 -1
  432. package/dist/lib/shapes/_contour.d.ts.map +0 -1
  433. package/dist/lib/shapes/_shared.d.ts.map +0 -1
  434. /package/dist/es/{pathGenerators → path-generators}/define.d.ts +0 -0
  435. /package/dist/es/{pathGenerators → path-generators}/index.d.ts +0 -0
  436. /package/dist/es/{pathGenerators → path-generators}/types.d.ts +0 -0
  437. /package/dist/lib/{pathGenerators → path-generators}/define.d.ts +0 -0
  438. /package/dist/lib/{pathGenerators → path-generators}/index.d.ts +0 -0
  439. /package/dist/lib/{pathGenerators → path-generators}/types.d.ts +0 -0
@@ -12,14 +12,14 @@ export type ResolveBetweenGlobal = (between: IRBetweenPosition, nameStack: NameS
12
12
  * @description
13
13
  * - **返回值语义**:当 `scopeChain` 非空时,返回**当前 scope 局部坐标系**下的笛卡尔位置;
14
14
  * 调用方负责走 `applyTransformChain(local, scopeChain)` 投回全局。当 `scopeChain` 为空时
15
- * 等价于 v0.1 行为(全局坐标)。
15
+ * 直接按全局坐标返回。
16
16
  * - **referent 处理**:node id lookup 拿到的 layout.rect 已是全局坐标;本函数内部用
17
17
  * `inverseTransformChain` 把全局 referent 反向投影到当前 scope 局部坐标系作为"在当前
18
18
  * scope 局部的固定点"基准。relative 部分(polar 的 angle/radius、at 的 direction/distance、
19
19
  * offset 的 dx/dy)在当前 scope 局部度量后加到 referent 局部坐标上。
20
20
  * - **嵌套**:PolarPosition.origin / OffsetPosition.of 是嵌套 polar 时,递归调用传同样
21
21
  * scopeChain——整条嵌套链都在当前 scope 局部度量。
22
- * - **笛卡尔字面量**:`Position` 形态直接返回(v0.1 行为延续:scope 内笛卡尔字面量在
22
+ * - **笛卡尔字面量**:`Position` 形态直接返回(scope 内笛卡尔字面量在
23
23
  * 当前 scope 局部度量;调用方走 applyTransformChain 投全局)。
24
24
  * - 极坐标 origin / 偏移定位 of 均可递归引用节点 id 或字面坐标;relative `AtPosition` of
25
25
  * 必须引用已定义节点/coordinate;解析失败返回 null。
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/compile/position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACvH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,KACjC,UAAU,GAAG,IAAI,CAAC;AAoBvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,GAC1B,KAAK,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,EAC9F,WAAW,SAAS,EACpB,eAAc,MAA8B,EAC5C,aAAY,aAAa,CAAC,SAAS,CAAM,EACzC,uBAAuB,oBAAoB,KAC1C,UAAU,GAAG,IAiDf,CAAC"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/compile/position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,KACjC,UAAU,GAAG,IAAI,CAAC;AAKvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,GAC1B,KAAK,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,EAC9F,WAAW,SAAS,EACpB,eAAc,MAA8B,EAC5C,aAAY,aAAa,CAAC,SAAS,CAAM,EACzC,uBAAuB,oBAAoB,KAC1C,UAAU,GAAG,IA6Cf,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * 而 `JSON.stringify(-0) === '0'` 会让 Scene round-trip 在 `Object.is` 层失真(`-0 !== 0` 于 Object.is)。
6
6
  * 归一让序列化往返稳定;数值上 `-0 === 0`,渲染 / 计算无影响。
7
7
  */
8
- var makeRound = (precision) => {
8
+ var createRound = (precision) => {
9
9
  const factor = 10 ** precision;
10
10
  return (n) => {
11
11
  const r = Math.round(n * factor) / factor;
@@ -13,4 +13,4 @@ var makeRound = (precision) => {
13
13
  };
14
14
  };
15
15
  //#endregion
16
- exports.makeRound = makeRound;
16
+ exports.createRound = createRound;
@@ -6,5 +6,5 @@ export declare const DEFAULT_PRECISION = 2;
6
6
  * 而 `JSON.stringify(-0) === '0'` 会让 Scene round-trip 在 `Object.is` 层失真(`-0 !== 0` 于 Object.is)。
7
7
  * 归一让序列化往返稳定;数值上 `-0 === 0`,渲染 / 计算无影响。
8
8
  */
9
- export declare const makeRound: (precision: number) => (n: number) => number;
9
+ export declare const createRound: (precision: number) => (n: number) => number;
10
10
  //# sourceMappingURL=precision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"precision.d.ts","sourceRoot":"","sources":["../../../src/compile/precision.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,MAEjC,GAAG,MAAM,WAIlB,CAAC"}
1
+ {"version":3,"file":"precision.d.ts","sourceRoot":"","sources":["../../../src/compile/precision.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,WAAW,MAAM,MAEnC,GAAG,MAAM,WAIlB,CAAC"}
@@ -1,14 +1,15 @@
1
1
  const require_rect = require("../geometry/rect.cjs");
2
2
  const require_index = require("../shapes/index.cjs");
3
3
  const require_position = require("./position.cjs");
4
+ const require_node = require("./node.cjs");
4
5
  //#region src/compile/scope.ts
5
6
  /**
6
- * 把 IR 6 变体 transforms 展平为 Scene 3 变体(Cartesian translate / rotate / scale)
7
- * @description 4 个 translate 变体(translate / polar-translate / at-translate / offset-translate)
7
+ * 把 IR 7 变体 transforms 展平为 Scene 3 变体(Cartesian translate / rotate / scale)
8
+ * @description 5 个 translate 变体(translate / polar-translate / at-translate / offset-translate / between-translate
8
9
  * 各自构造对应 Position 字面量并调用 `resolvePosition` 拿到 Cartesian (x, y),再写成 Cartesian translate;
9
10
  * rotate / scale 直接透传。referent 未解析时返回 null(上游负责发 warn / throw)
10
11
  */
11
- var lowerScopeTransforms = (transforms, nameStack, nodeDistance) => {
12
+ var lowerScopeTransforms = (transforms, nameStack, nodeDistance, resolveBetweenGlobal, onUnresolved) => {
12
13
  const out = [];
13
14
  for (const t of transforms) switch (t.kind) {
14
15
  case "translate":
@@ -25,7 +26,10 @@ var lowerScopeTransforms = (transforms, nameStack, nodeDistance) => {
25
26
  };
26
27
  if (t.origin !== void 0) polar.origin = t.origin;
27
28
  const resolved = require_position.resolvePosition(polar, nameStack, nodeDistance);
28
- if (!resolved) return null;
29
+ if (!resolved) {
30
+ onUnresolved?.(t);
31
+ return null;
32
+ }
29
33
  out.push({
30
34
  kind: "translate",
31
35
  x: resolved[0],
@@ -40,7 +44,10 @@ var lowerScopeTransforms = (transforms, nameStack, nodeDistance) => {
40
44
  };
41
45
  if (t.distance !== void 0) at.distance = t.distance;
42
46
  const resolved = require_position.resolvePosition(at, nameStack, nodeDistance);
43
- if (!resolved) return null;
47
+ if (!resolved) {
48
+ onUnresolved?.(t);
49
+ return null;
50
+ }
44
51
  out.push({
45
52
  kind: "translate",
46
53
  x: resolved[0],
@@ -53,7 +60,26 @@ var lowerScopeTransforms = (transforms, nameStack, nodeDistance) => {
53
60
  of: t.of,
54
61
  offset: t.offset ?? [0, 0]
55
62
  }, nameStack, nodeDistance);
56
- if (!resolved) return null;
63
+ if (!resolved) {
64
+ onUnresolved?.(t);
65
+ return null;
66
+ }
67
+ out.push({
68
+ kind: "translate",
69
+ x: resolved[0],
70
+ y: resolved[1]
71
+ });
72
+ break;
73
+ }
74
+ case "between-translate": {
75
+ const resolved = require_position.resolvePosition({
76
+ between: t.between,
77
+ t: t.t
78
+ }, nameStack, nodeDistance, [], resolveBetweenGlobal);
79
+ if (!resolved) {
80
+ onUnresolved?.(t);
81
+ return null;
82
+ }
57
83
  out.push({
58
84
  kind: "translate",
59
85
  x: resolved[0],
@@ -159,7 +185,7 @@ var inverseTransformChain = (global, chain) => {
159
185
  * scale 乘进 rect.width / height / margin——这样 path 端点的 boundary clip 取的是与 SVG `<g>`
160
186
  * 实际渲染一致的视觉尺寸 / 朝向,跨 / 入 / 出 rotate / scale scope 的 path 都贴节点视觉边界。
161
187
  * 非均匀 scale 与 rotate 在 chain 中混合时,按"累加 rotate + 分量相乘 scale"近似(uniform scale 精确,
162
- * anisotropic + rotate 的剪切耦合不展开——alpha 阶段限制)。
188
+ * anisotropic + rotate 的剪切耦合不展开——当前投影模型限制)。
163
189
  */
164
190
  var projectLayoutToGlobal = (layout, chain) => {
165
191
  const [gx, gy] = applyTransformChain([layout.rect.x, layout.rect.y], chain);
@@ -176,13 +202,14 @@ var projectLayoutToGlobal = (layout, chain) => {
176
202
  x: gx,
177
203
  y: gy,
178
204
  rotate: (layout.rect.rotate ?? 0) + rotateAccumRad,
179
- width: layout.rect.width * scaleX,
180
- height: layout.rect.height * scaleY
205
+ width: layout.rect.width * Math.abs(scaleX),
206
+ height: layout.rect.height * Math.abs(scaleY)
181
207
  };
182
208
  const marginScale = Math.max(Math.abs(scaleX), Math.abs(scaleY));
183
209
  return {
184
210
  ...layout,
185
211
  rect: globalRect,
212
+ rotateDeg: layout.rotateDeg + rotateAccumRad * (180 / Math.PI),
186
213
  margin: layout.margin * marginScale
187
214
  };
188
215
  };
@@ -201,11 +228,12 @@ var computeScopeBoundingBox = (layouts) => {
201
228
  let maxX = -Infinity;
202
229
  let maxY = -Infinity;
203
230
  for (const layout of layouts) {
231
+ const outerRect = require_node.outerRectOf(layout);
204
232
  const corners = [
205
- require_rect.rect.anchor(layout.rect, "north-west"),
206
- require_rect.rect.anchor(layout.rect, "north-east"),
207
- require_rect.rect.anchor(layout.rect, "south-west"),
208
- require_rect.rect.anchor(layout.rect, "south-east")
233
+ require_rect.rect.anchor(outerRect, "north-west"),
234
+ require_rect.rect.anchor(outerRect, "north-east"),
235
+ require_rect.rect.anchor(outerRect, "south-west"),
236
+ require_rect.rect.anchor(outerRect, "south-east")
209
237
  ];
210
238
  for (const [cx, cy] of corners) {
211
239
  if (cx < minX) minX = cx;
@@ -227,7 +255,7 @@ var computeScopeBoundingBox = (layouts) => {
227
255
  * synthetic layout 完全复用 rectangle 路径:`scope.id.<keyword>` / `scope.id.<deg>` / `scope.id` 作为 referent
228
256
  * 走与普通 rectangle Node 完全一致的 anchorOf / boundaryPointOf / 中心点取值
229
257
  */
230
- var registerScopeAsLayout = (id, bbox, fallbackOrigin) => {
258
+ var registerScopeAsLayout = (id, bbox, fallbackOrigin, shapes = require_index.BUILTIN_SHAPES) => {
231
259
  const box = bbox ?? {
232
260
  x: fallbackOrigin[0],
233
261
  y: fallbackOrigin[1],
@@ -237,7 +265,7 @@ var registerScopeAsLayout = (id, bbox, fallbackOrigin) => {
237
265
  return {
238
266
  id,
239
267
  shapeName: "rectangle",
240
- shapeDef: require_index.BUILTIN_SHAPES.rectangle,
268
+ shapeDef: shapes.rectangle,
241
269
  rect: {
242
270
  x: box.x,
243
271
  y: box.y,
@@ -252,7 +280,7 @@ var registerScopeAsLayout = (id, bbox, fallbackOrigin) => {
252
280
  align: "middle",
253
281
  lineHeight: 0,
254
282
  fontSize: 0,
255
- shapes: require_index.BUILTIN_SHAPES
283
+ shapes
256
284
  };
257
285
  };
258
286
  //#endregion
@@ -1,14 +1,16 @@
1
1
  import { IRPosition, IRTransform } from '../ir';
2
2
  import { Transform } from '../primitive';
3
+ import { ShapeDefinition } from '../shapes';
3
4
  import { NameStack } from './name-stack';
4
5
  import { NodeLayout } from './node';
6
+ import { ResolveBetweenGlobal } from './position';
5
7
  /**
6
- * 把 IR 6 变体 transforms 展平为 Scene 3 变体(Cartesian translate / rotate / scale)
7
- * @description 4 个 translate 变体(translate / polar-translate / at-translate / offset-translate)
8
+ * 把 IR 7 变体 transforms 展平为 Scene 3 变体(Cartesian translate / rotate / scale)
9
+ * @description 5 个 translate 变体(translate / polar-translate / at-translate / offset-translate / between-translate
8
10
  * 各自构造对应 Position 字面量并调用 `resolvePosition` 拿到 Cartesian (x, y),再写成 Cartesian translate;
9
11
  * rotate / scale 直接透传。referent 未解析时返回 null(上游负责发 warn / throw)
10
12
  */
11
- export declare const lowerScopeTransforms: (transforms: ReadonlyArray<IRTransform>, nameStack: NameStack, nodeDistance?: number) => Array<Transform> | null;
13
+ export declare const lowerScopeTransforms: (transforms: ReadonlyArray<IRTransform>, nameStack: NameStack, nodeDistance?: number, resolveBetweenGlobal?: ResolveBetweenGlobal, onUnresolved?: (failed: IRTransform) => void) => Array<Transform> | null;
12
14
  /**
13
15
  * 把局部坐标点 (x, y) 按 Cartesian-only transform 链 apply 到全局坐标
14
16
  * @description 数组语义与 SVG `transform="t0 t1 t2"` / TikZ scope option 顺序一致:
@@ -33,7 +35,7 @@ export declare const inverseTransformChain: (global: IRPosition, chain: Readonly
33
35
  * scale 乘进 rect.width / height / margin——这样 path 端点的 boundary clip 取的是与 SVG `<g>`
34
36
  * 实际渲染一致的视觉尺寸 / 朝向,跨 / 入 / 出 rotate / scale scope 的 path 都贴节点视觉边界。
35
37
  * 非均匀 scale 与 rotate 在 chain 中混合时,按"累加 rotate + 分量相乘 scale"近似(uniform scale 精确,
36
- * anisotropic + rotate 的剪切耦合不展开——alpha 阶段限制)。
38
+ * anisotropic + rotate 的剪切耦合不展开——当前投影模型限制)。
37
39
  */
38
40
  export declare const projectLayoutToGlobal: (layout: NodeLayout, chain: ReadonlyArray<Transform>) => NodeLayout;
39
41
  /** scope bbox 计算结果:bbox 几何中心 + 尺寸(width/height ≥ 0;空 scope 退化为 0×0 占位时仍合法) */
@@ -62,5 +64,5 @@ export declare const computeScopeBoundingBox: (layouts: ReadonlyArray<NodeLayout
62
64
  * synthetic layout 完全复用 rectangle 路径:`scope.id.<keyword>` / `scope.id.<deg>` / `scope.id` 作为 referent
63
65
  * 走与普通 rectangle Node 完全一致的 anchorOf / boundaryPointOf / 中心点取值
64
66
  */
65
- export declare const registerScopeAsLayout: (id: string, bbox: ScopeBoundingBox | null, fallbackOrigin: IRPosition) => NodeLayout;
67
+ export declare const registerScopeAsLayout: (id: string, bbox: ScopeBoundingBox | null, fallbackOrigin: IRPosition, shapes?: Record<string, ShapeDefinition>) => NodeLayout;
66
68
  //# sourceMappingURL=scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/compile/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,UAAU,EACV,WAAW,EAEZ,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,aAAa,CAAC,WAAW,CAAC,EACtC,WAAW,SAAS,EACpB,eAAe,MAAM,KACpB,KAAK,CAAC,SAAS,CAAC,GAAG,IAiDrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,EACjB,OAAO,aAAa,CAAC,SAAS,CAAC,KAC9B,UAyBF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,UAAU,EAClB,OAAO,aAAa,CAAC,SAAS,CAAC,KAC9B,UAgCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,UAAU,EAClB,OAAO,aAAa,CAAC,SAAS,CAAC,KAC9B,UAuBF,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,aAAa,CAAC,UAAU,CAAC,KACjC,gBAAgB,GAAG,IA2BrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,MAAM,EACV,MAAM,gBAAgB,GAAG,IAAI,EAC7B,gBAAgB,UAAU,KACzB,UAiBF,CAAC"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/compile/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,UAAU,EACV,WAAW,EAEZ,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,KAAK,oBAAoB,EAAmB,MAAM,YAAY,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,aAAa,CAAC,WAAW,CAAC,EACtC,WAAW,SAAS,EACpB,eAAe,MAAM,EACrB,uBAAuB,oBAAoB,EAC3C,eAAe,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,KAC3C,KAAK,CAAC,SAAS,CAAC,GAAG,IAoErB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,EACjB,OAAO,aAAa,CAAC,SAAS,CAAC,KAC9B,UAyBF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,UAAU,EAClB,OAAO,aAAa,CAAC,SAAS,CAAC,KAC9B,UA+BF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,UAAU,EAClB,OAAO,aAAa,CAAC,SAAS,CAAC,KAC9B,UA4BF,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,aAAa,CAAC,UAAU,CAAC,KACjC,gBAAgB,GAAG,IA6BrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,MAAM,EACV,MAAM,gBAAgB,GAAG,IAAI,EAC7B,gBAAgB,UAAU,EAC1B,SAAQ,MAAM,CAAC,MAAM,EAAE,eAAe,CAAkB,KACvD,UAiBF,CAAC"}
@@ -12,7 +12,7 @@ var pickDefinedKeys = (src) => {
12
12
  * 从 IRScope 抽取样式 frame
13
13
  * @description 只摘样式相关字段(级联 graphic state + 四通道 + resetStyle);transforms / id / localNamespace 与样式正交,不进 frame
14
14
  */
15
- var buildStyleFrame = (scope) => {
15
+ var createStyleFrame = (scope) => {
16
16
  const cascade = {};
17
17
  if (scope.color !== void 0) cascade.color = scope.color;
18
18
  if (scope.stroke !== void 0) cascade.stroke = scope.stroke;
@@ -256,7 +256,7 @@ var resolveEffectivePath = (path, stack) => {
256
256
  return effective;
257
257
  };
258
258
  //#endregion
259
- exports.buildStyleFrame = buildStyleFrame;
259
+ exports.createStyleFrame = createStyleFrame;
260
260
  exports.resolveEffectivePath = resolveEffectivePath;
261
261
  exports.resolveLabelDefault = resolveLabelDefault;
262
262
  exports.resolveNodeStyle = resolveNodeStyle;
@@ -6,7 +6,7 @@ import { IRArrowDetail, IRLabelDefault, IRNode, IRPath, IRScope } from '../ir';
6
6
  type CascadeState = Pick<IRScope, 'color' | 'stroke' | 'fill' | 'strokeWidth' | 'opacity' | 'fillOpacity' | 'drawOpacity'>;
7
7
  /**
8
8
  * 单层 scope 的样式 frame——compile 维护 frame 栈做 inside-out per-field 解析
9
- * @description 级联 graphic state + 四通道 every-X 默认 + resetStyle 屏障;从 IRScope 抽取(buildStyleFrame
9
+ * @description 级联 graphic state + 四通道 every-X 默认 + resetStyle 屏障;从 IRScope 抽取(createStyleFrame
10
10
  */
11
11
  export type StyleFrame = {
12
12
  /** 级联 graphic state(主色 + 跨类共享分项) */
@@ -26,7 +26,7 @@ export type StyleFrame = {
26
26
  * 从 IRScope 抽取样式 frame
27
27
  * @description 只摘样式相关字段(级联 graphic state + 四通道 + resetStyle);transforms / id / localNamespace 与样式正交,不进 frame
28
28
  */
29
- export declare const buildStyleFrame: (scope: IRScope) => StyleFrame;
29
+ export declare const createStyleFrame: (scope: IRScope) => StyleFrame;
30
30
  /**
31
31
  * 解析 node 最终样式——fold 外→内 frame 栈 + 元素显式
32
32
  * @description 优先级链(每分项就近 model A):元素显式分项 > 元素 color > nodeDefault 分项 > nodeDefault color
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/compile/style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACd,MAAM,EACN,MAAM,EACN,OAAO,EAIR,MAAM,OAAO,CAAC;AAEf;;;GAGG;AACH,KAAK,YAAY,GAAG,IAAI,CACtB,OAAO,EACP,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CACxF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oCAAoC;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,iDAAiD;IACjD,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,UAgBhD,CAAC;AAiEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,MAYF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,GAC9B,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,cAOF,CAAC;AAyHF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,MA2BF,CAAC"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/compile/style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACd,MAAM,EACN,MAAM,EACN,OAAO,EAIR,MAAM,OAAO,CAAC;AAEf;;;GAGG;AACH,KAAK,YAAY,GAAG,IAAI,CACtB,OAAO,EACP,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CACxF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oCAAoC;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,iDAAiD;IACjD,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,UAgBjD,CAAC;AAiEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,MAYF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,GAC9B,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,cAOF,CAAC;AAyHF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,MA2BF,CAAC"}
@@ -1,10 +1,10 @@
1
1
  //#region src/compile/text-metrics.ts
2
2
  /**
3
3
  * 默认 fallback 度量:基于平均字宽估算,不准但保证可运行
4
- * @description size=0 → 退化返回 (0, 0)(与 text='' 一致);负 size NaN size → throw(非法输入早 fail,避免 NaN 噪音传播到 Scene)
4
+ * @description size=0 → 退化返回 (0, 0)(与 text='' 一致);负 size 或非有限(NaN / Infinity)size → throw(非法输入早 fail,避免 NaN / Infinity 传播到 Scene)
5
5
  */
6
6
  var fallbackMeasurer = (text, font) => {
7
- if (Number.isNaN(font.size) || font.size < 0) throw new Error(`fallbackMeasurer: invalid font.size '${font.size}'; must be a non-negative finite number`);
7
+ if (!Number.isFinite(font.size) || font.size < 0) throw new Error(`fallbackMeasurer: invalid font.size '${font.size}'; must be a non-negative finite number`);
8
8
  return {
9
9
  width: text.length * font.size * .55,
10
10
  height: font.size * 1.2
@@ -27,7 +27,7 @@ export type TextMetrics = {
27
27
  export type TextMeasurer = (text: string, font: FontSpec) => TextMetrics;
28
28
  /**
29
29
  * 默认 fallback 度量:基于平均字宽估算,不准但保证可运行
30
- * @description size=0 → 退化返回 (0, 0)(与 text='' 一致);负 size NaN size → throw(非法输入早 fail,避免 NaN 噪音传播到 Scene)
30
+ * @description size=0 → 退化返回 (0, 0)(与 text='' 一致);负 size 或非有限(NaN / Infinity)size → throw(非法输入早 fail,避免 NaN / Infinity 传播到 Scene)
31
31
  */
32
32
  export declare const fallbackMeasurer: TextMeasurer;
33
33
  //# sourceMappingURL=text-metrics.d.ts.map
@@ -1,8 +1,8 @@
1
- //#region src/composites/types.ts
1
+ //#region src/composites/define.ts
2
2
  /**
3
3
  * 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
4
4
  * @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
5
- * 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐 `definePathGenerator`。
5
+ * 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐其他扩展面的 `define*` helper。
6
6
  */
7
7
  var defineComposite = (definition) => definition;
8
8
  //#endregion
@@ -0,0 +1,8 @@
1
+ import { CompositeDefinition } from './types';
2
+ /**
3
+ * 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
4
+ * @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
5
+ * 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐其他扩展面的 `define*` helper。
6
+ */
7
+ export declare const defineComposite: <T>(definition: CompositeDefinition<T>) => CompositeDefinition;
8
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/composites/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,YAAY,mBAAmB,CAAC,CAAC,CAAC,KAAG,mBACrC,CAAC"}
@@ -1,3 +1,3 @@
1
- export { defineComposite } from './types';
1
+ export { defineComposite } from './define';
2
2
  export type { CompositeDefinition } from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composites/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composites/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
@@ -12,10 +12,4 @@ export type CompositeDefinition<T = unknown> = {
12
12
  /** 把该 composite 节点展开成 Tier 1 IR 的纯函数;据节点字段不同产不同子树 */
13
13
  expand: (node: T) => IRChild | Array<IRChild>;
14
14
  };
15
- /**
16
- * 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
17
- * @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
18
- * 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐 `definePathGenerator`。
19
- */
20
- export declare const defineComposite: <T>(definition: CompositeDefinition<T>) => CompositeDefinition;
21
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composites/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;CAC/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,YAAY,mBAAmB,CAAC,CAAC,CAAC,KAAG,mBACrC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composites/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;CAC/C,CAAC"}
@@ -0,0 +1,47 @@
1
+ //#region src/geometry/anchor.ts
2
+ /** 9 个标准方位 anchor,采用 TikZ 语义作为 canonical 值。 */
3
+ var CompassAnchor = {
4
+ Center: "center",
5
+ North: "north",
6
+ South: "south",
7
+ East: "east",
8
+ West: "west",
9
+ NorthEast: "north-east",
10
+ NorthWest: "north-west",
11
+ SouthEast: "south-east",
12
+ SouthWest: "south-west"
13
+ };
14
+ /** Web/CSS 心智下的方位 anchor 输入别名,编译前归一到 CompassAnchor。 */
15
+ var WebAnchor = {
16
+ Top: "top",
17
+ Bottom: "bottom",
18
+ Right: "right",
19
+ Left: "left",
20
+ TopRight: "top-right",
21
+ TopLeft: "top-left",
22
+ BottomRight: "bottom-right",
23
+ BottomLeft: "bottom-left"
24
+ };
25
+ var CompassAnchorSet = new Set(Object.values(CompassAnchor));
26
+ var AnchorAliases = {
27
+ top: CompassAnchor.North,
28
+ bottom: CompassAnchor.South,
29
+ right: CompassAnchor.East,
30
+ left: CompassAnchor.West,
31
+ "top-right": CompassAnchor.NorthEast,
32
+ "top-left": CompassAnchor.NorthWest,
33
+ "bottom-right": CompassAnchor.SouthEast,
34
+ "bottom-left": CompassAnchor.SouthWest
35
+ };
36
+ /**
37
+ * 标准化方位 anchor 名。
38
+ * @description TikZ canonical 名原样返回;Web alias(top / top-left 等)归一到 north / north-west 等。
39
+ */
40
+ var normalizeCompassAnchor = (name) => {
41
+ if (CompassAnchorSet.has(name)) return name;
42
+ return AnchorAliases[name];
43
+ };
44
+ //#endregion
45
+ exports.CompassAnchor = CompassAnchor;
46
+ exports.WebAnchor = WebAnchor;
47
+ exports.normalizeCompassAnchor = normalizeCompassAnchor;
@@ -0,0 +1,33 @@
1
+ import { ValueOf } from '../types';
2
+ /** 9 个标准方位 anchor,采用 TikZ 语义作为 canonical 值。 */
3
+ export declare const CompassAnchor: {
4
+ readonly Center: "center";
5
+ readonly North: "north";
6
+ readonly South: "south";
7
+ readonly East: "east";
8
+ readonly West: "west";
9
+ readonly NorthEast: "north-east";
10
+ readonly NorthWest: "north-west";
11
+ readonly SouthEast: "south-east";
12
+ readonly SouthWest: "south-west";
13
+ };
14
+ export type CompassAnchorValue = ValueOf<typeof CompassAnchor>;
15
+ /** Web/CSS 心智下的方位 anchor 输入别名,编译前归一到 CompassAnchor。 */
16
+ export declare const WebAnchor: {
17
+ readonly Top: "top";
18
+ readonly Bottom: "bottom";
19
+ readonly Right: "right";
20
+ readonly Left: "left";
21
+ readonly TopRight: "top-right";
22
+ readonly TopLeft: "top-left";
23
+ readonly BottomRight: "bottom-right";
24
+ readonly BottomLeft: "bottom-left";
25
+ };
26
+ export type WebAnchorValue = ValueOf<typeof WebAnchor>;
27
+ export type AnchorInput = CompassAnchorValue | WebAnchorValue;
28
+ /**
29
+ * 标准化方位 anchor 名。
30
+ * @description TikZ canonical 名原样返回;Web alias(top / top-left 等)归一到 north / north-west 等。
31
+ */
32
+ export declare const normalizeCompassAnchor: (name: string) => CompassAnchorValue | undefined;
33
+ //# sourceMappingURL=anchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../../src/geometry/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,+CAA+C;AAC/C,eAAO,MAAM,aAAa;;;;;;;;;;CAUhB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,aAAa,CAAC,CAAC;AAE/D,uDAAuD;AACvD,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAe9D;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,kBAAkB,GAAG,SAG1E,CAAC"}
@@ -1,7 +1,7 @@
1
1
  //#region src/geometry/bend.ts
2
2
  /**
3
3
  * cubic Bezier 拟合 from→to 的弧形 bend
4
- * @description apex offset = chord × tan(bendAngle/2);控制点取 chord 1/3 与 2/3 处沿法向偏移,让 cubic 在 t=0.5 穿过 apex 故 ctlOffset = 4/3 × apexOffset。法向(screen y-down):visual-left=(dy,-dx)/|chord|,visual-right=(-dy,dx)/|chord|。chord=0 时两控制点都返回 from
4
+ * @description apex offset =(chord/2)× tan(bendAngle/2),即弦切角为 bendAngle 的圆弧 sagitta;控制点取 chord 1/3 与 2/3 处沿法向偏移,让 cubic 在 t=0.5 穿过 apex 故 ctlOffset = 4/3 × apexOffset。法向(screen y-down):visual-left=(dy,-dx)/|chord|,visual-right=(-dy,dx)/|chord|。chord=0 时两控制点都返回 from
5
5
  */
6
6
  var bendControlPoints = (from, to, direction, bendAngle) => {
7
7
  const dx = to[0] - from[0];
@@ -11,14 +11,14 @@ var bendControlPoints = (from, to, direction, bendAngle) => {
11
11
  const sign = direction === "left" ? 1 : -1;
12
12
  const nx = dy / chord * sign;
13
13
  const ny = -dx / chord * sign;
14
- const ctlOffset = 4 / 3 * (chord * Math.tan(bendAngle * Math.PI / 180 / 2));
14
+ const ctlOffset = 4 / 3 * (chord / 2 * Math.tan(bendAngle * Math.PI / 180 / 2));
15
15
  return [[from[0] + dx / 3 + ctlOffset * nx, from[1] + dy / 3 + ctlOffset * ny], [from[0] + 2 * dx / 3 + ctlOffset * nx, from[1] + 2 * dy / 3 + ctlOffset * ny]];
16
16
  };
17
17
  /** 默认 looseness(looseness 缺省时) */
18
18
  var DEFAULT_LOOSENESS = 1;
19
19
  /** self-loop(from==to)默认环大小(user units,受 looseness 缩放) */
20
20
  var DEFAULT_LOOP_SIZE = 1;
21
- /** 直边 cubic 控制点距离系数(chord 的几分之一) */
21
+ /** 直边 cubic 控制点距离系数(chord 的几分之一);retikz 取 1/3,TikZ 默认 looseness 对应 ≈0.3915,本库简化为 1/3 */
22
22
  var OUTIN_DISTANCE_FACTOR = 1 / 3;
23
23
  /** 角度(度)转单位方向向量(0°=+x,90°=+y screen-down,与 IR 角度约定一致) */
24
24
  var dirOf = (angleDeg) => {
@@ -1,7 +1,7 @@
1
1
  import { Position } from './point';
2
2
  /**
3
3
  * cubic Bezier 拟合 from→to 的弧形 bend
4
- * @description apex offset = chord × tan(bendAngle/2);控制点取 chord 1/3 与 2/3 处沿法向偏移,让 cubic 在 t=0.5 穿过 apex 故 ctlOffset = 4/3 × apexOffset。法向(screen y-down):visual-left=(dy,-dx)/|chord|,visual-right=(-dy,dx)/|chord|。chord=0 时两控制点都返回 from
4
+ * @description apex offset =(chord/2)× tan(bendAngle/2),即弦切角为 bendAngle 的圆弧 sagitta;控制点取 chord 1/3 与 2/3 处沿法向偏移,让 cubic 在 t=0.5 穿过 apex 故 ctlOffset = 4/3 × apexOffset。法向(screen y-down):visual-left=(dy,-dx)/|chord|,visual-right=(-dy,dx)/|chord|。chord=0 时两控制点都返回 from
5
5
  */
6
6
  export declare const bendControlPoints: (from: Position, to: Position, direction: "left" | "right", bendAngle: number) => [Position, Position];
7
7
  /**
@@ -1,5 +1,5 @@
1
- const require__transform = require("./_transform.cjs");
2
- const require__edge = require("./_edge.cjs");
1
+ const require_edge = require("./edge.cjs");
2
+ const require_transform = require("./transform.cjs");
3
3
  //#region src/geometry/circle.ts
4
4
  var DEG_TO_RAD = Math.PI / 180;
5
5
  var SQRT_HALF = Math.SQRT1_2;
@@ -9,10 +9,10 @@ var circle = {
9
9
  center: (c) => [c.x, c.y],
10
10
  /** 判断点是否在圆内(含边界) */
11
11
  contains: (c, p) => {
12
- const [lx, ly] = require__transform.worldToLocal(c, p);
12
+ const [lx, ly] = require_transform.worldToLocal(c, p);
13
13
  return lx * lx + ly * ly <= c.radius * c.radius;
14
14
  },
15
- /** 9 个标准 anchor 之一的世界坐标 */
15
+ /** 9 个标准方位 anchor 之一的世界坐标 */
16
16
  anchor: (c, name) => {
17
17
  const r = c.radius;
18
18
  let lx = 0;
@@ -48,20 +48,20 @@ var circle = {
48
48
  ly = r * SQRT_HALF;
49
49
  break;
50
50
  }
51
- return require__transform.localToWorld(c, [lx, ly]);
51
+ return require_transform.localToWorld(c, [lx, ly]);
52
52
  },
53
53
  /** 从圆心向 toward 方向射线与圆周交点(Path 端点贴 Node 边界用) */
54
54
  boundaryPoint: (c, toward) => {
55
- const [lx, ly] = require__transform.worldToLocal(c, toward);
55
+ const [lx, ly] = require_transform.worldToLocal(c, toward);
56
56
  const len = Math.sqrt(lx * lx + ly * ly);
57
57
  if (len === 0) return [c.x, c.y];
58
58
  const t = c.radius / len;
59
- return require__transform.localToWorld(c, [lx * t, ly * t]);
59
+ return require_transform.localToWorld(c, [lx * t, ly * t]);
60
60
  },
61
61
  /** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实圆周;含旋转) */
62
62
  edgePoint: (c, side, t) => {
63
- const rad = require__edge.edgeAngleDeg(side, t) * DEG_TO_RAD;
64
- return require__transform.localToWorld(c, [c.radius * Math.cos(rad), c.radius * Math.sin(rad)]);
63
+ const rad = require_edge.edgeAngleDeg(side, t) * DEG_TO_RAD;
64
+ return require_transform.localToWorld(c, [c.radius * Math.cos(rad), c.radius * Math.sin(rad)]);
65
65
  }
66
66
  };
67
67
  //#endregion
@@ -1,6 +1,6 @@
1
- import { Side } from './_edge';
1
+ import { Side } from './edge';
2
+ import { CompassAnchorValue } from './anchor';
2
3
  import { Position } from './point';
3
- import { RectAnchor } from './rect';
4
4
  /** 圆形:几何中心 + 半径,预留旋转字段保持与 Rect 同形 API */
5
5
  export type Circle = {
6
6
  x: number;
@@ -16,8 +16,8 @@ export declare const circle: {
16
16
  center: (c: Circle) => Position;
17
17
  /** 判断点是否在圆内(含边界) */
18
18
  contains: (c: Circle, p: Position) => boolean;
19
- /** 9 个标准 anchor 之一的世界坐标 */
20
- anchor: (c: Circle, name: RectAnchor) => Position;
19
+ /** 9 个标准方位 anchor 之一的世界坐标 */
20
+ anchor: (c: Circle, name: CompassAnchorValue) => Position;
21
21
  /** 从圆心向 toward 方向射线与圆周交点(Path 端点贴 Node 边界用) */
22
22
  boundaryPoint: (c: Circle, toward: Position) => Position;
23
23
  /** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实圆周;含旋转) */
@@ -1 +1 @@
1
- {"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/geometry/circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,MAAM;IACjB,SAAS;gBACG,MAAM,KAAG,QAAQ;IAC7B,oBAAoB;kBACN,MAAM,KAAK,QAAQ,KAAG,OAAO;IAI3C,2BAA2B;gBACf,MAAM,QAAQ,UAAU,KAAG,QAAQ;IAsC/C,+CAA+C;uBAC5B,MAAM,UAAU,QAAQ,KAAG,QAAQ;IAOtD,oDAAoD;mBACrC,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAIxD,CAAC"}
1
+ {"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/geometry/circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,MAAM;IACjB,SAAS;gBACG,MAAM,KAAG,QAAQ;IAC7B,oBAAoB;kBACN,MAAM,KAAK,QAAQ,KAAG,OAAO;IAI3C,6BAA6B;gBACjB,MAAM,QAAQ,kBAAkB,KAAG,QAAQ;IAsCvD,+CAA+C;uBAC5B,MAAM,UAAU,QAAQ,KAAG,QAAQ;IAOtD,oDAAoD;mBACrC,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAIxD,CAAC"}