@retikz/core 0.3.0-alpha.4 → 0.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) 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 +14 -1
  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 +73 -41
  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 +32 -0
  19. package/dist/es/compile/constant.d.ts.map +1 -0
  20. package/dist/es/compile/constant.js +23 -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 +20 -7
  30. package/dist/es/compile/node.d.ts.map +1 -1
  31. package/dist/es/compile/node.js +42 -63
  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 +59 -34
  39. package/dist/es/compile/path/relative.d.ts +1 -1
  40. package/dist/es/compile/path/relative.js +1 -1
  41. package/dist/es/compile/path/shrink.d.ts +3 -1
  42. package/dist/es/compile/path/shrink.d.ts.map +1 -1
  43. package/dist/es/compile/path/shrink.js +16 -11
  44. package/dist/es/compile/position.d.ts +2 -2
  45. package/dist/es/compile/position.d.ts.map +1 -1
  46. package/dist/es/compile/position.js +6 -19
  47. package/dist/es/compile/precision.d.ts +1 -1
  48. package/dist/es/compile/precision.d.ts.map +1 -1
  49. package/dist/es/compile/precision.js +2 -2
  50. package/dist/es/compile/scope.d.ts +7 -5
  51. package/dist/es/compile/scope.d.ts.map +1 -1
  52. package/dist/es/compile/scope.js +29 -13
  53. package/dist/es/compile/style.d.ts +2 -2
  54. package/dist/es/compile/style.d.ts.map +1 -1
  55. package/dist/es/compile/style.js +2 -2
  56. package/dist/es/composites/define.d.ts +8 -0
  57. package/dist/es/composites/define.d.ts.map +1 -0
  58. package/dist/es/composites/{types.js → define.js} +2 -2
  59. package/dist/es/composites/index.d.ts +1 -1
  60. package/dist/es/composites/index.d.ts.map +1 -1
  61. package/dist/es/composites/types.d.ts +0 -6
  62. package/dist/es/composites/types.d.ts.map +1 -1
  63. package/dist/es/geometry/anchor.d.ts +33 -0
  64. package/dist/es/geometry/anchor.d.ts.map +1 -0
  65. package/dist/es/geometry/anchor.js +45 -0
  66. package/dist/es/geometry/bend.d.ts +1 -1
  67. package/dist/es/geometry/bend.js +2 -2
  68. package/dist/es/geometry/circle.d.ts +4 -4
  69. package/dist/es/geometry/circle.d.ts.map +1 -1
  70. package/dist/es/geometry/circle.js +3 -3
  71. package/dist/es/geometry/{roundedContour.d.ts → contour.d.ts} +4 -5
  72. package/dist/es/geometry/contour.d.ts.map +1 -0
  73. package/dist/es/geometry/{roundedContour.js → contour.js} +22 -34
  74. package/dist/es/geometry/diamond.d.ts +3 -3
  75. package/dist/es/geometry/diamond.d.ts.map +1 -1
  76. package/dist/es/geometry/diamond.js +2 -2
  77. package/dist/{lib/geometry/_edge.d.ts → es/geometry/edge.d.ts} +1 -1
  78. package/dist/es/geometry/edge.d.ts.map +1 -0
  79. package/dist/es/geometry/{_edge.js → edge.js} +1 -1
  80. package/dist/es/geometry/ellipse.d.ts +3 -3
  81. package/dist/es/geometry/ellipse.d.ts.map +1 -1
  82. package/dist/es/geometry/ellipse.js +2 -2
  83. package/dist/es/geometry/index.d.ts +2 -1
  84. package/dist/es/geometry/index.d.ts.map +1 -1
  85. package/dist/es/geometry/point.d.ts +6 -0
  86. package/dist/es/geometry/point.d.ts.map +1 -1
  87. package/dist/es/geometry/point.js +17 -0
  88. package/dist/es/geometry/rect.d.ts +4 -17
  89. package/dist/es/geometry/rect.d.ts.map +1 -1
  90. package/dist/es/geometry/rect.js +4 -16
  91. package/dist/es/geometry/segment.d.ts.map +1 -1
  92. package/dist/es/geometry/segment.js +25 -47
  93. package/dist/{lib/geometry/_transform.d.ts → es/geometry/transform.d.ts} +1 -1
  94. package/dist/es/geometry/transform.d.ts.map +1 -0
  95. package/dist/es/geometry/{_transform.js → transform.js} +1 -1
  96. package/dist/es/index.d.ts +13 -10
  97. package/dist/es/index.d.ts.map +1 -1
  98. package/dist/es/index.js +19 -14
  99. package/dist/es/ir/animation.d.ts +219 -0
  100. package/dist/es/ir/animation.d.ts.map +1 -0
  101. package/dist/es/ir/animation.js +118 -0
  102. package/dist/es/ir/boundary.d.ts +1 -1
  103. package/dist/es/ir/boundary.d.ts.map +1 -1
  104. package/dist/es/ir/coordinate.d.ts +8 -8
  105. package/dist/es/ir/index.d.ts +1 -0
  106. package/dist/es/ir/index.d.ts.map +1 -1
  107. package/dist/es/ir/node.d.ts +249 -92
  108. package/dist/es/ir/node.d.ts.map +1 -1
  109. package/dist/es/ir/node.js +25 -23
  110. package/dist/es/ir/paint.d.ts +19 -18
  111. package/dist/es/ir/paint.d.ts.map +1 -1
  112. package/dist/es/ir/paint.js +10 -10
  113. package/dist/es/ir/path/arrow.d.ts +39 -38
  114. package/dist/es/ir/path/arrow.d.ts.map +1 -1
  115. package/dist/es/ir/path/arrow.js +18 -16
  116. package/dist/es/ir/path/path.d.ts +1106 -209
  117. package/dist/es/ir/path/path.d.ts.map +1 -1
  118. package/dist/es/ir/path/path.js +3 -1
  119. package/dist/es/ir/path/step.d.ts +932 -20
  120. package/dist/es/ir/path/step.d.ts.map +1 -1
  121. package/dist/es/ir/path/step.js +73 -22
  122. package/dist/es/ir/path/target.js +3 -3
  123. package/dist/es/ir/position/at-position.d.ts +18 -18
  124. package/dist/es/ir/position/at-position.d.ts.map +1 -1
  125. package/dist/es/ir/position/at-position.js +11 -11
  126. package/dist/es/ir/scene.d.ts +156 -0
  127. package/dist/es/ir/scene.d.ts.map +1 -1
  128. package/dist/es/ir/scene.js +3 -1
  129. package/dist/es/ir/scope.d.ts +3446 -1306
  130. package/dist/es/ir/scope.d.ts.map +1 -1
  131. package/dist/es/ir/scope.js +10 -6
  132. package/dist/es/ir/transform.d.ts +44 -17
  133. package/dist/es/ir/transform.d.ts.map +1 -1
  134. package/dist/es/ir/transform.js +10 -3
  135. package/dist/es/parsers/index.d.ts +3 -3
  136. package/dist/es/parsers/index.d.ts.map +1 -1
  137. package/dist/es/parsers/{parseNodeTarget.d.ts → node-target.d.ts} +1 -1
  138. package/dist/es/parsers/node-target.d.ts.map +1 -0
  139. package/dist/es/parsers/{parseNodeTarget.js → node-target.js} +10 -8
  140. package/dist/{lib/parsers/parseTargetSugar.d.ts → es/parsers/target-sugar.d.ts} +1 -1
  141. package/dist/es/parsers/target-sugar.d.ts.map +1 -0
  142. package/dist/es/parsers/{parseTargetSugar.js → target-sugar.js} +9 -4
  143. package/dist/{lib/parsers/parseWay.d.ts → es/parsers/way.d.ts} +1 -1
  144. package/dist/es/parsers/way.d.ts.map +1 -0
  145. package/dist/es/parsers/{parseWay.js → way.js} +9 -5
  146. package/dist/es/path-generators/define.d.ts.map +1 -0
  147. package/dist/es/{pathGenerators → path-generators}/define.js +1 -1
  148. package/dist/es/path-generators/index.d.ts.map +1 -0
  149. package/dist/es/path-generators/types.d.ts.map +1 -0
  150. package/dist/es/patterns/define.d.ts +9 -0
  151. package/dist/es/patterns/define.d.ts.map +1 -0
  152. package/dist/es/patterns/define.js +10 -0
  153. package/dist/es/patterns/index.d.ts +1 -0
  154. package/dist/es/patterns/index.d.ts.map +1 -1
  155. package/dist/es/patterns/index.js +42 -35
  156. package/dist/es/presets/animation.d.ts +123 -0
  157. package/dist/es/presets/animation.d.ts.map +1 -0
  158. package/dist/es/presets/animation.js +272 -0
  159. package/dist/es/presets/index.d.ts +3 -0
  160. package/dist/es/presets/index.d.ts.map +1 -0
  161. package/dist/es/primitive/ellipse.d.ts +3 -0
  162. package/dist/es/primitive/ellipse.d.ts.map +1 -1
  163. package/dist/es/primitive/group.d.ts +3 -0
  164. package/dist/es/primitive/group.d.ts.map +1 -1
  165. package/dist/es/primitive/marker.d.ts +1 -1
  166. package/dist/es/primitive/paint.d.ts +1 -1
  167. package/dist/es/primitive/path.d.ts +4 -1
  168. package/dist/es/primitive/path.d.ts.map +1 -1
  169. package/dist/es/primitive/rect.d.ts +3 -0
  170. package/dist/es/primitive/rect.d.ts.map +1 -1
  171. package/dist/es/primitive/scene.d.ts +3 -0
  172. package/dist/es/primitive/scene.d.ts.map +1 -1
  173. package/dist/es/primitive/text.d.ts +3 -0
  174. package/dist/es/primitive/text.d.ts.map +1 -1
  175. package/dist/es/shapes/arc.js +2 -2
  176. package/dist/{lib/shapes/_contour.d.ts → es/shapes/contour.d.ts} +6 -3
  177. package/dist/es/shapes/contour.d.ts.map +1 -0
  178. package/dist/es/shapes/{_contour.js → contour.js} +14 -2
  179. package/dist/es/shapes/ellipse.js +2 -2
  180. package/dist/es/shapes/index.d.ts +1 -1
  181. package/dist/es/shapes/index.d.ts.map +1 -1
  182. package/dist/es/shapes/index.js +1 -1
  183. package/dist/es/shapes/polygon.d.ts +1 -1
  184. package/dist/es/shapes/polygon.d.ts.map +1 -1
  185. package/dist/es/shapes/polygon.js +26 -21
  186. package/dist/es/shapes/rectangle.js +5 -5
  187. package/dist/es/shapes/sector.d.ts.map +1 -1
  188. package/dist/es/shapes/sector.js +30 -22
  189. package/dist/es/shapes/{_shared.d.ts → shared.d.ts} +4 -8
  190. package/dist/es/shapes/shared.d.ts.map +1 -0
  191. package/dist/es/shapes/{_shared.js → shared.js} +8 -12
  192. package/dist/es/shapes/star.d.ts.map +1 -1
  193. package/dist/es/shapes/star.js +4 -14
  194. package/dist/lib/arrows/define.cjs +10 -0
  195. package/dist/lib/arrows/define.d.ts +9 -0
  196. package/dist/lib/arrows/define.d.ts.map +1 -0
  197. package/dist/lib/arrows/index.cjs +14 -1
  198. package/dist/lib/arrows/index.d.ts +3 -1
  199. package/dist/lib/arrows/index.d.ts.map +1 -1
  200. package/dist/lib/arrows/types.d.ts +4 -2
  201. package/dist/lib/arrows/types.d.ts.map +1 -1
  202. package/dist/lib/compile/anchor-cache.cjs +17 -4
  203. package/dist/lib/compile/anchor-cache.d.ts +3 -3
  204. package/dist/lib/compile/anchor-cache.d.ts.map +1 -1
  205. package/dist/lib/compile/compile.cjs +71 -39
  206. package/dist/lib/compile/compile.d.ts +5 -14
  207. package/dist/lib/compile/compile.d.ts.map +1 -1
  208. package/dist/lib/compile/{lowerComposites.cjs → composite.cjs} +9 -1
  209. package/dist/lib/compile/{lowerComposites.d.ts → composite.d.ts} +9 -2
  210. package/dist/lib/compile/composite.d.ts.map +1 -0
  211. package/dist/lib/compile/constant.cjs +24 -0
  212. package/dist/lib/compile/constant.d.ts +32 -0
  213. package/dist/lib/compile/constant.d.ts.map +1 -0
  214. package/dist/lib/compile/direction.cjs +31 -0
  215. package/dist/lib/compile/direction.d.ts +27 -0
  216. package/dist/lib/compile/direction.d.ts.map +1 -0
  217. package/dist/lib/compile/index.d.ts +3 -1
  218. package/dist/lib/compile/index.d.ts.map +1 -1
  219. package/dist/lib/compile/name-stack.cjs +5 -1
  220. package/dist/lib/compile/name-stack.d.ts +3 -1
  221. package/dist/lib/compile/name-stack.d.ts.map +1 -1
  222. package/dist/lib/compile/node.cjs +42 -62
  223. package/dist/lib/compile/node.d.ts +20 -7
  224. package/dist/lib/compile/node.d.ts.map +1 -1
  225. package/dist/lib/compile/paint.cjs +1 -1
  226. package/dist/lib/compile/path/anchor.cjs +10 -12
  227. package/dist/lib/compile/path/anchor.d.ts +4 -3
  228. package/dist/lib/compile/path/anchor.d.ts.map +1 -1
  229. package/dist/lib/compile/path/index.cjs +58 -33
  230. package/dist/lib/compile/path/index.d.ts +6 -8
  231. package/dist/lib/compile/path/index.d.ts.map +1 -1
  232. package/dist/lib/compile/path/relative.cjs +1 -1
  233. package/dist/lib/compile/path/relative.d.ts +1 -1
  234. package/dist/lib/compile/path/shrink.cjs +16 -11
  235. package/dist/lib/compile/path/shrink.d.ts +3 -1
  236. package/dist/lib/compile/path/shrink.d.ts.map +1 -1
  237. package/dist/lib/compile/position.cjs +6 -19
  238. package/dist/lib/compile/position.d.ts +2 -2
  239. package/dist/lib/compile/position.d.ts.map +1 -1
  240. package/dist/lib/compile/precision.cjs +2 -2
  241. package/dist/lib/compile/precision.d.ts +1 -1
  242. package/dist/lib/compile/precision.d.ts.map +1 -1
  243. package/dist/lib/compile/scope.cjs +29 -13
  244. package/dist/lib/compile/scope.d.ts +7 -5
  245. package/dist/lib/compile/scope.d.ts.map +1 -1
  246. package/dist/lib/compile/style.cjs +2 -2
  247. package/dist/lib/compile/style.d.ts +2 -2
  248. package/dist/lib/compile/style.d.ts.map +1 -1
  249. package/dist/lib/composites/{types.cjs → define.cjs} +2 -2
  250. package/dist/lib/composites/define.d.ts +8 -0
  251. package/dist/lib/composites/define.d.ts.map +1 -0
  252. package/dist/lib/composites/index.d.ts +1 -1
  253. package/dist/lib/composites/index.d.ts.map +1 -1
  254. package/dist/lib/composites/types.d.ts +0 -6
  255. package/dist/lib/composites/types.d.ts.map +1 -1
  256. package/dist/lib/geometry/anchor.cjs +47 -0
  257. package/dist/lib/geometry/anchor.d.ts +33 -0
  258. package/dist/lib/geometry/anchor.d.ts.map +1 -0
  259. package/dist/lib/geometry/bend.cjs +2 -2
  260. package/dist/lib/geometry/bend.d.ts +1 -1
  261. package/dist/lib/geometry/circle.cjs +9 -9
  262. package/dist/lib/geometry/circle.d.ts +4 -4
  263. package/dist/lib/geometry/circle.d.ts.map +1 -1
  264. package/dist/lib/geometry/{roundedContour.cjs → contour.cjs} +21 -32
  265. package/dist/lib/geometry/{roundedContour.d.ts → contour.d.ts} +4 -5
  266. package/dist/lib/geometry/contour.d.ts.map +1 -0
  267. package/dist/lib/geometry/diamond.cjs +7 -7
  268. package/dist/lib/geometry/diamond.d.ts +3 -3
  269. package/dist/lib/geometry/diamond.d.ts.map +1 -1
  270. package/dist/lib/geometry/{_edge.cjs → edge.cjs} +1 -1
  271. package/dist/{es/geometry/_edge.d.ts → lib/geometry/edge.d.ts} +1 -1
  272. package/dist/lib/geometry/edge.d.ts.map +1 -0
  273. package/dist/lib/geometry/ellipse.cjs +8 -8
  274. package/dist/lib/geometry/ellipse.d.ts +3 -3
  275. package/dist/lib/geometry/ellipse.d.ts.map +1 -1
  276. package/dist/lib/geometry/index.d.ts +2 -1
  277. package/dist/lib/geometry/index.d.ts.map +1 -1
  278. package/dist/lib/geometry/point.cjs +17 -0
  279. package/dist/lib/geometry/point.d.ts +6 -0
  280. package/dist/lib/geometry/point.d.ts.map +1 -1
  281. package/dist/lib/geometry/rect.cjs +9 -22
  282. package/dist/lib/geometry/rect.d.ts +4 -17
  283. package/dist/lib/geometry/rect.d.ts.map +1 -1
  284. package/dist/lib/geometry/segment.cjs +25 -47
  285. package/dist/lib/geometry/segment.d.ts.map +1 -1
  286. package/dist/lib/geometry/{_transform.cjs → transform.cjs} +1 -1
  287. package/dist/{es/geometry/_transform.d.ts → lib/geometry/transform.d.ts} +1 -1
  288. package/dist/lib/geometry/transform.d.ts.map +1 -0
  289. package/dist/lib/index.cjs +56 -22
  290. package/dist/lib/index.d.ts +13 -10
  291. package/dist/lib/index.d.ts.map +1 -1
  292. package/dist/lib/ir/animation.cjs +127 -0
  293. package/dist/lib/ir/animation.d.ts +219 -0
  294. package/dist/lib/ir/animation.d.ts.map +1 -0
  295. package/dist/lib/ir/boundary.d.ts +1 -1
  296. package/dist/lib/ir/boundary.d.ts.map +1 -1
  297. package/dist/lib/ir/coordinate.d.ts +8 -8
  298. package/dist/lib/ir/index.d.ts +1 -0
  299. package/dist/lib/ir/index.d.ts.map +1 -1
  300. package/dist/lib/ir/node.cjs +25 -23
  301. package/dist/lib/ir/node.d.ts +249 -92
  302. package/dist/lib/ir/node.d.ts.map +1 -1
  303. package/dist/lib/ir/paint.cjs +10 -10
  304. package/dist/lib/ir/paint.d.ts +19 -18
  305. package/dist/lib/ir/paint.d.ts.map +1 -1
  306. package/dist/lib/ir/path/arrow.cjs +18 -16
  307. package/dist/lib/ir/path/arrow.d.ts +39 -38
  308. package/dist/lib/ir/path/arrow.d.ts.map +1 -1
  309. package/dist/lib/ir/path/path.cjs +3 -1
  310. package/dist/lib/ir/path/path.d.ts +1106 -209
  311. package/dist/lib/ir/path/path.d.ts.map +1 -1
  312. package/dist/lib/ir/path/step.cjs +73 -21
  313. package/dist/lib/ir/path/step.d.ts +932 -20
  314. package/dist/lib/ir/path/step.d.ts.map +1 -1
  315. package/dist/lib/ir/path/target.cjs +3 -3
  316. package/dist/lib/ir/position/at-position.cjs +11 -11
  317. package/dist/lib/ir/position/at-position.d.ts +18 -18
  318. package/dist/lib/ir/position/at-position.d.ts.map +1 -1
  319. package/dist/lib/ir/scene.cjs +3 -1
  320. package/dist/lib/ir/scene.d.ts +156 -0
  321. package/dist/lib/ir/scene.d.ts.map +1 -1
  322. package/dist/lib/ir/scope.cjs +10 -6
  323. package/dist/lib/ir/scope.d.ts +3446 -1306
  324. package/dist/lib/ir/scope.d.ts.map +1 -1
  325. package/dist/lib/ir/transform.cjs +9 -2
  326. package/dist/lib/ir/transform.d.ts +44 -17
  327. package/dist/lib/ir/transform.d.ts.map +1 -1
  328. package/dist/lib/parsers/index.d.ts +3 -3
  329. package/dist/lib/parsers/index.d.ts.map +1 -1
  330. package/dist/lib/parsers/{parseNodeTarget.cjs → node-target.cjs} +10 -8
  331. package/dist/lib/parsers/{parseNodeTarget.d.ts → node-target.d.ts} +1 -1
  332. package/dist/lib/parsers/node-target.d.ts.map +1 -0
  333. package/dist/lib/parsers/{parseTargetSugar.cjs → target-sugar.cjs} +9 -4
  334. package/dist/{es/parsers/parseTargetSugar.d.ts → lib/parsers/target-sugar.d.ts} +1 -1
  335. package/dist/lib/parsers/target-sugar.d.ts.map +1 -0
  336. package/dist/lib/parsers/{parseWay.cjs → way.cjs} +12 -8
  337. package/dist/{es/parsers/parseWay.d.ts → lib/parsers/way.d.ts} +1 -1
  338. package/dist/lib/parsers/way.d.ts.map +1 -0
  339. package/dist/lib/{pathGenerators → path-generators}/define.cjs +1 -1
  340. package/dist/lib/path-generators/define.d.ts.map +1 -0
  341. package/dist/lib/path-generators/index.d.ts.map +1 -0
  342. package/dist/lib/path-generators/types.d.ts.map +1 -0
  343. package/dist/lib/patterns/define.cjs +10 -0
  344. package/dist/lib/patterns/define.d.ts +9 -0
  345. package/dist/lib/patterns/define.d.ts.map +1 -0
  346. package/dist/lib/patterns/index.cjs +42 -35
  347. package/dist/lib/patterns/index.d.ts +1 -0
  348. package/dist/lib/patterns/index.d.ts.map +1 -1
  349. package/dist/lib/presets/animation.cjs +286 -0
  350. package/dist/lib/presets/animation.d.ts +123 -0
  351. package/dist/lib/presets/animation.d.ts.map +1 -0
  352. package/dist/lib/presets/index.d.ts +3 -0
  353. package/dist/lib/presets/index.d.ts.map +1 -0
  354. package/dist/lib/primitive/ellipse.d.ts +3 -0
  355. package/dist/lib/primitive/ellipse.d.ts.map +1 -1
  356. package/dist/lib/primitive/group.d.ts +3 -0
  357. package/dist/lib/primitive/group.d.ts.map +1 -1
  358. package/dist/lib/primitive/marker.d.ts +1 -1
  359. package/dist/lib/primitive/paint.d.ts +1 -1
  360. package/dist/lib/primitive/path.d.ts +4 -1
  361. package/dist/lib/primitive/path.d.ts.map +1 -1
  362. package/dist/lib/primitive/rect.d.ts +3 -0
  363. package/dist/lib/primitive/rect.d.ts.map +1 -1
  364. package/dist/lib/primitive/scene.d.ts +3 -0
  365. package/dist/lib/primitive/scene.d.ts.map +1 -1
  366. package/dist/lib/primitive/text.d.ts +3 -0
  367. package/dist/lib/primitive/text.d.ts.map +1 -1
  368. package/dist/lib/shapes/arc.cjs +4 -4
  369. package/dist/lib/shapes/{_contour.cjs → contour.cjs} +14 -1
  370. package/dist/{es/shapes/_contour.d.ts → lib/shapes/contour.d.ts} +6 -3
  371. package/dist/lib/shapes/contour.d.ts.map +1 -0
  372. package/dist/lib/shapes/ellipse.cjs +2 -2
  373. package/dist/lib/shapes/index.cjs +1 -1
  374. package/dist/lib/shapes/index.d.ts +1 -1
  375. package/dist/lib/shapes/index.d.ts.map +1 -1
  376. package/dist/lib/shapes/polygon.cjs +29 -24
  377. package/dist/lib/shapes/polygon.d.ts +1 -1
  378. package/dist/lib/shapes/polygon.d.ts.map +1 -1
  379. package/dist/lib/shapes/rectangle.cjs +11 -11
  380. package/dist/lib/shapes/sector.cjs +41 -33
  381. package/dist/lib/shapes/sector.d.ts.map +1 -1
  382. package/dist/lib/shapes/{_shared.cjs → shared.cjs} +7 -12
  383. package/dist/lib/shapes/{_shared.d.ts → shared.d.ts} +4 -8
  384. package/dist/lib/shapes/shared.d.ts.map +1 -0
  385. package/dist/lib/shapes/star.cjs +7 -17
  386. package/dist/lib/shapes/star.d.ts.map +1 -1
  387. package/package.json +2 -3
  388. package/dist/es/compile/lowerComposites.d.ts.map +0 -1
  389. package/dist/es/geometry/_edge.d.ts.map +0 -1
  390. package/dist/es/geometry/_transform.d.ts.map +0 -1
  391. package/dist/es/geometry/roundedContour.d.ts.map +0 -1
  392. package/dist/es/parsers/parseNodeTarget.d.ts.map +0 -1
  393. package/dist/es/parsers/parseTargetSugar.d.ts.map +0 -1
  394. package/dist/es/parsers/parseWay.d.ts.map +0 -1
  395. package/dist/es/pathGenerators/define.d.ts.map +0 -1
  396. package/dist/es/pathGenerators/index.d.ts.map +0 -1
  397. package/dist/es/pathGenerators/types.d.ts.map +0 -1
  398. package/dist/es/shapes/_contour.d.ts.map +0 -1
  399. package/dist/es/shapes/_shared.d.ts.map +0 -1
  400. package/dist/lib/compile/lowerComposites.d.ts.map +0 -1
  401. package/dist/lib/geometry/_edge.d.ts.map +0 -1
  402. package/dist/lib/geometry/_transform.d.ts.map +0 -1
  403. package/dist/lib/geometry/roundedContour.d.ts.map +0 -1
  404. package/dist/lib/parsers/parseNodeTarget.d.ts.map +0 -1
  405. package/dist/lib/parsers/parseTargetSugar.d.ts.map +0 -1
  406. package/dist/lib/parsers/parseWay.d.ts.map +0 -1
  407. package/dist/lib/pathGenerators/define.d.ts.map +0 -1
  408. package/dist/lib/pathGenerators/index.d.ts.map +0 -1
  409. package/dist/lib/pathGenerators/types.d.ts.map +0 -1
  410. package/dist/lib/shapes/_contour.d.ts.map +0 -1
  411. package/dist/lib/shapes/_shared.d.ts.map +0 -1
  412. /package/dist/es/{pathGenerators → path-generators}/define.d.ts +0 -0
  413. /package/dist/es/{pathGenerators → path-generators}/index.d.ts +0 -0
  414. /package/dist/es/{pathGenerators → path-generators}/types.d.ts +0 -0
  415. /package/dist/lib/{pathGenerators → path-generators}/define.d.ts +0 -0
  416. /package/dist/lib/{pathGenerators → path-generators}/index.d.ts +0 -0
  417. /package/dist/lib/{pathGenerators → path-generators}/types.d.ts +0 -0
@@ -0,0 +1,23 @@
1
+ //#region src/compile/constant.ts
2
+ /** 编译期 warning code(机器可读)。 */
3
+ var CompileWarningCode = {
4
+ UnresolvedNodeReference: "UNRESOLVED_NODE_REFERENCE",
5
+ PathTooShort: "PATH_TOO_SHORT",
6
+ AnchorResolutionFailed: "ANCHOR_RESOLUTION_FAILED",
7
+ OffsetBaseUnresolved: "OFFSET_BASE_UNRESOLVED",
8
+ PolarOriginUnresolved: "POLAR_ORIGIN_UNRESOLVED",
9
+ AtTargetUnresolved: "AT_TARGET_UNRESOLVED",
10
+ RelativeInitialNoPrevEnd: "RELATIVE_INITIAL_NO_PREV_END",
11
+ BboxExtremeInput: "BBOX_EXTREME_INPUT",
12
+ DuplicateNodeId: "DUPLICATE_NODE_ID",
13
+ ShapeOverridesBuiltin: "SHAPE_OVERRIDES_BUILTIN",
14
+ ArrowOverridesBuiltin: "ARROW_OVERRIDES_BUILTIN",
15
+ PatternOverridesBuiltin: "PATTERN_OVERRIDES_BUILTIN",
16
+ CompositeNotRegistered: "COMPOSITE_NOT_REGISTERED",
17
+ AnimationInvalidProperty: "ANIMATION_INVALID_PROPERTY",
18
+ ArcMissingRadius: "ARC_MISSING_RADIUS",
19
+ PartialArcNeedsBothAngles: "PARTIAL_ARC_NEEDS_BOTH_ANGLES"
20
+ };
21
+ var formatCompileWarning = (warning) => `[retikz] ${warning.code} at ${warning.path}: ${warning.message}`;
22
+ //#endregion
23
+ export { CompileWarningCode, formatCompileWarning };
@@ -0,0 +1,27 @@
1
+ export type DirectionVector = readonly [number, number];
2
+ /**
3
+ * 8 方向在屏幕坐标系(y 向下)里的单位向量。
4
+ * @description above=视觉上方(y 减小);对角分量用 1/√2,保证斜向 distance 与水平 / 垂直 distance 等长。
5
+ */
6
+ export declare const DirectionVectorByAtDirection: {
7
+ readonly above: readonly [0, -1];
8
+ readonly below: readonly [0, 1];
9
+ readonly left: readonly [-1, 0];
10
+ readonly right: readonly [1, 0];
11
+ readonly "above-left": readonly [number, number];
12
+ readonly "above-right": readonly [number, number];
13
+ readonly "below-left": readonly [number, number];
14
+ readonly "below-right": readonly [number, number];
15
+ };
16
+ /** 8 方向 label position 对应的节点边界 anchor。 */
17
+ export declare const LabelAnchorByAtDirection: {
18
+ readonly above: "north";
19
+ readonly below: "south";
20
+ readonly left: "west";
21
+ readonly right: "east";
22
+ readonly "above-left": "north-west";
23
+ readonly "above-right": "north-east";
24
+ readonly "below-left": "south-west";
25
+ readonly "below-right": "south-east";
26
+ };
27
+ //# sourceMappingURL=direction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../../../src/compile/direction.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;CASqB,CAAC;AAE/D,0CAA0C;AAC1C,eAAO,MAAM,wBAAwB;;;;;;;;;CAS4B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { AtDirection } from "../ir/position/at-position.js";
2
+ import { CompassAnchor } from "../geometry/anchor.js";
3
+ //#region src/compile/direction.ts
4
+ /**
5
+ * 8 方向在屏幕坐标系(y 向下)里的单位向量。
6
+ * @description above=视觉上方(y 减小);对角分量用 1/√2,保证斜向 distance 与水平 / 垂直 distance 等长。
7
+ */
8
+ var DirectionVectorByAtDirection = {
9
+ [AtDirection.Above]: [0, -1],
10
+ [AtDirection.Below]: [0, 1],
11
+ [AtDirection.Left]: [-1, 0],
12
+ [AtDirection.Right]: [1, 0],
13
+ [AtDirection.AboveLeft]: [-Math.SQRT1_2, -Math.SQRT1_2],
14
+ [AtDirection.AboveRight]: [Math.SQRT1_2, -Math.SQRT1_2],
15
+ [AtDirection.BelowLeft]: [-Math.SQRT1_2, Math.SQRT1_2],
16
+ [AtDirection.BelowRight]: [Math.SQRT1_2, Math.SQRT1_2]
17
+ };
18
+ /** 8 方向 label position 对应的节点边界 anchor。 */
19
+ var LabelAnchorByAtDirection = {
20
+ [AtDirection.Above]: CompassAnchor.North,
21
+ [AtDirection.Below]: CompassAnchor.South,
22
+ [AtDirection.Left]: CompassAnchor.West,
23
+ [AtDirection.Right]: CompassAnchor.East,
24
+ [AtDirection.AboveLeft]: CompassAnchor.NorthWest,
25
+ [AtDirection.AboveRight]: CompassAnchor.NorthEast,
26
+ [AtDirection.BelowLeft]: CompassAnchor.SouthWest,
27
+ [AtDirection.BelowRight]: CompassAnchor.SouthEast
28
+ };
29
+ //#endregion
30
+ export { DirectionVectorByAtDirection, LabelAnchorByAtDirection };
@@ -1,9 +1,11 @@
1
1
  export * from './compile';
2
+ export * from './constant';
2
3
  export * from './node';
3
- export * from './path/index';
4
+ export * from './path';
4
5
  export * from './position';
5
6
  export * from './precision';
6
7
  export * from './scope';
7
8
  export * from './text-metrics';
8
9
  export * from './layout';
10
+ export * from './composite';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compile/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compile/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -70,8 +70,10 @@ export declare class NameStack {
70
70
  * @param id 要替换的 id(必须已在该 frame 注册过)
71
71
  * @param layout 新的 NodeLayout(覆盖旧值)
72
72
  * @param frameDepth 0 = 根 frame;通常传 scope 入场前的栈深 - 1
73
+ * @param expectedCurrent 可选的当前 layout 引用;传入后仅当 frame 中仍是该引用时才替换
74
+ * @returns true = 完成替换;false = 当前值已被后续 register 覆盖,未替换
73
75
  */
74
- replaceLayout(id: string, layout: NodeLayout, frameDepth: number): void;
76
+ replaceLayout(id: string, layout: NodeLayout, frameDepth: number, expectedCurrent?: NodeLayout): boolean;
75
77
  /**
76
78
  * inside-out 查找 id 对应的 NodeLayout
77
79
  * @description 从栈顶向栈底依次查找;首个命中的 frame 返回;都没命中返回 undefined。内层可见外层(shadowing),外层不可见内层
@@ -1 +1 @@
1
- {"version":3,"file":"name-stack.d.ts","sourceRoot":"","sources":["../../../src/compile/name-stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACrD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAwC;IACrE,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAA8B;gBAEtC,OAAO,GAAE,gBAAqB;IAM1C,6BAA6B;IAC7B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,8BAA8B;IAC9B,IAAI,KAAK,IAAI,OAAO,GAAG,OAAO,CAE7B;IAED,iDAAiD;IACjD,SAAS,IAAI,IAAI;IAKjB;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAQhB,kEAAkE;IAClE,gBAAgB,IAAI,IAAI;IAIxB,6EAA6E;IAC7E,eAAe,IAAI,IAAI;IAIvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAuBlE;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAoBvE;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;CAO3C"}
1
+ {"version":3,"file":"name-stack.d.ts","sourceRoot":"","sources":["../../../src/compile/name-stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACrD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAwC;IACrE,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAA8B;gBAEtC,OAAO,GAAE,gBAAqB;IAM1C,6BAA6B;IAC7B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,8BAA8B;IAC9B,IAAI,KAAK,IAAI,OAAO,GAAG,OAAO,CAE7B;IAED,iDAAiD;IACjD,SAAS,IAAI,IAAI;IAKjB;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAQhB,kEAAkE;IAClE,gBAAgB,IAAI,IAAI;IAIxB,6EAA6E;IAC7E,eAAe,IAAI,IAAI;IAIvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAuBlE;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO;IAsBxG;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;CAO3C"}
@@ -81,13 +81,17 @@ var NameStack = class {
81
81
  * @param id 要替换的 id(必须已在该 frame 注册过)
82
82
  * @param layout 新的 NodeLayout(覆盖旧值)
83
83
  * @param frameDepth 0 = 根 frame;通常传 scope 入场前的栈深 - 1
84
+ * @param expectedCurrent 可选的当前 layout 引用;传入后仅当 frame 中仍是该引用时才替换
85
+ * @returns true = 完成替换;false = 当前值已被后续 register 覆盖,未替换
84
86
  */
85
- replaceLayout(id, layout, frameDepth) {
87
+ replaceLayout(id, layout, frameDepth, expectedCurrent) {
86
88
  if (this.currentPhase !== "pass1") throw new Error(`NameStack.replaceLayout('${id}'): only allowed during pass1; current phase is '${this.currentPhase}'`);
87
89
  if (frameDepth < 0 || frameDepth >= this.frames.length) throw new Error(`NameStack.replaceLayout('${id}'): frameDepth ${frameDepth} out of range (stack depth ${this.frames.length})`);
88
90
  const targetFrame = this.frames[frameDepth];
89
91
  if (!targetFrame.has(id)) throw new Error(`NameStack.replaceLayout('${id}'): id not previously registered in frame at depth ${frameDepth}`);
92
+ if (expectedCurrent !== void 0 && targetFrame.get(id) !== expectedCurrent) return false;
90
93
  targetFrame.set(id, layout);
94
+ return true;
91
95
  }
92
96
  /**
93
97
  * inside-out 查找 id 对应的 NodeLayout
@@ -1,6 +1,6 @@
1
1
  import { Position } from '../geometry/point';
2
2
  import { Rect } from '../geometry/rect';
3
- import { AtDirection, IRBoundary, IRJsonObject, IRLabelDefault, IRNode, IRPaintSpec } from '../ir';
3
+ import { AtDirectionValue, IRAnimationTrack, IRBoundary, IRJsonObject, IRLabelDefault, IRNode, IRPaintSpec } from '../ir';
4
4
  import { PaintResolver } from './paint';
5
5
  import { ScenePrimitive, TextLine, Transform } from '../primitive';
6
6
  import { ShapeDefinition } from '../shapes';
@@ -77,6 +77,8 @@ export type NodeLayout = {
77
77
  boundary?: IRBoundary;
78
78
  /** provenance 元数据(来自 IR `node.meta`);emit 时原样 stamp 到 node 的 top-level 图元,renderer 忽略 */
79
79
  meta?: IRJsonObject;
80
+ /** 时间轴动画 tracks(来自 IR `node.animations`);emit 时原样 stamp 到 node 的 top-level 图元,renderer 播放 / 降级 */
81
+ animations?: Array<IRAnimationTrack>;
80
82
  /** 构建本 layout 的 shape 注册表引用——借用连接面(borrowed boundary)查表用 */
81
83
  shapes: Record<string, ShapeDefinition>;
82
84
  };
@@ -84,7 +86,7 @@ export type NodeLayout = {
84
86
  export type NodeLabelLayout = {
85
87
  text: string;
86
88
  /** 8 方向枚举或数字角度 */
87
- position: AtDirection | number;
89
+ position: AtDirectionValue | number;
88
90
  /** 已应用默认值 */
89
91
  distance: number;
90
92
  textColor?: string;
@@ -106,6 +108,14 @@ export type NodeLabelLayout = {
106
108
  dashPattern?: Array<number>;
107
109
  };
108
110
  };
111
+ /**
112
+ * 视觉 rect 外扩 outerSep(margin)得到外边界 AABB
113
+ * @description = `inflateRect(layout.rect, layout.margin)`,中心不变、四向各 +margin。border 类
114
+ * anchor(compass / 数字角度)解析与 bbox / viewBox / 布局占位都基于这层;视觉 emit / 裁剪 /
115
+ * 形状专属 anchor / edgePoint / label 附着点仍读 `layout.rect`(不外扩)。单一派生量,不另存字段。
116
+ * (TikZ outer sep 对齐见 v0.3-beta.1 ADR-07。)
117
+ */
118
+ export declare const outerRectOf: (layout: NodeLayout) => Rect;
109
119
  /**
110
120
  * 取节点 shape 在 toward 方向的附着点(path 端点贴边用)
111
121
  * @description 走连接面(boundary)对应的 def.boundaryPoint;margin > 0 时先膨胀外接 Rect,让 path 在 border 外停 margin。
@@ -114,16 +124,19 @@ export type NodeLabelLayout = {
114
124
  export declare const boundaryPointOf: (layout: NodeLayout, toward: Position, boundary?: IRBoundary | undefined) => Position;
115
125
  /**
116
126
  * 取节点 shape 命名 anchor(center / north / east / north-east 等)
117
- * @description 不应用 margin——TikZ 语义中 explicit anchor 取视觉边界点不涉及 outer sep;用于 `'A.north'` 落点。
127
+ * @description 纯几何:在传入的 `layout.rect` 上求点,本体**不施加 outerSep(margin)**。outerSep 的
128
+ * 「border 外推」由调用方决定——`anchor-cache.ts` 的 compass 解析先把 rect 外扩 margin(`outerRectOf`)
129
+ * 再调本函数;`labelBorderPoint` 喂视觉 rect(label 附着点不含 margin)。这样 outer sep 只作用于
130
+ * path / position 的 anchor 引用,不波及 label(详见 v0.3-beta.1 ADR-07 §1/§2)。
118
131
  * compass(9 个 rect 方位名)走连接面 AABB:'shape' 时归一为 'rectangle'(矩形 AABB),其余按 boundary 解析。
119
132
  * 形状专属命名 anchor(tip-N / apex 等非 compass 名)恒走视觉形状自身,boundary 不影响。
120
- * boundary 缺省 = 'shape',与改前 compass 走 AABB 行为一致(原 shapeDef.anchor 内部也走 rect AABB)。
133
+ * boundary 缺省 = 'shape'
121
134
  */
122
135
  export declare const anchorOf: (layout: NodeLayout, name: string, boundary?: IRBoundary | undefined) => Position;
123
136
  /**
124
137
  * 取节点 shape 在指定角度方向的边界点
125
- * @description 角度是节点**局部坐标系**下的极角(度数:0°=局部 +x,90°=局部 +y)。layout.rect.rotate 把局部基绕中心旋转,得到世界系下的视觉方向;shape boundaryPoint 内部用 rotate-aware 投影,所以这里把局部 (cos, sin) 经 rect.rotate 旋转后加到中心当作世界系 toward 传入。不应用 margin(同 anchorOf);用于 `'A.30'` 落点。
126
- * boundary 缺省 = 'shape'(视觉形状自身),与改前行为一致。
138
+ * @description 角度是节点**局部坐标系**下的极角(度数:0°=局部 +x,90°=局部 +y)。layout.rect.rotate 把局部基绕中心旋转,得到世界系下的视觉方向;shape boundaryPoint 内部用 rotate-aware 投影,所以这里把局部 (cos, sin) 经 rect.rotate 旋转后加到中心当作世界系 toward 传入。本体**不施加 margin(同 anchorOf)**——outerSep 外推由 `anchor-cache.ts` 调用方喂 `outerRectOf` 实现;用于 `'A.30'` 落点。
139
+ * boundary 缺省 = 'shape'(视觉形状自身)。
127
140
  */
128
141
  export declare const angleBoundaryOf: (layout: NodeLayout, angleDeg: number, boundary?: IRBoundary | undefined) => Position;
129
142
  /**
@@ -131,7 +144,7 @@ export declare const angleBoundaryOf: (layout: NodeLayout, angleDeg: number, bou
131
144
  * @description 文本度量 + padding 推内框半轴;按 shape 算外接边界(circle 取半对角线、ellipse ×√2、diamond ×2);解析 position 为几何中心;rotate 度数转弧度。
132
145
  * `scopeChain` 非空时 `resolvePosition` 返回**当前 scope 局部坐标**(relative position 在当前
133
146
  * scope 局部度量),调用方负责后续 `projectLayoutToGlobal` / `applyTransformChain` 投回全局;
134
- * 笛卡尔字面量 `Position` 已在 scope 局部度量,行为延续 v0.1。
147
+ * 笛卡尔字面量 `Position` 已在 scope 局部度量,保持局部坐标语义。
135
148
  */
136
149
  export declare const layoutNode: (node: IRNode, measureText: TextMeasurer, nameStack: NameStack, nodeDistance?: number, scopeChain?: ReadonlyArray<Transform>, labelDefault?: IRLabelDefault, shapes?: Record<string, ShapeDefinition>, resolveBetweenGlobal?: ResolveBetweenGlobal) => NodeLayout;
137
150
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/compile/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAc,MAAM,EAAe,WAAW,EAAyB,MAAM,OAAO,CAAC;AAExJ,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAa,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,WAAW,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,oBAAoB,EAAmB,MAAM,YAAY,CAAC;AAExE,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmI7D,MAAM,MAAM,UAAU,GAAG;IACvB,qBAAqB;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,QAAQ,EAAE,eAAe,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC;IACX,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,iBAAiB;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS;IACT,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS;IACT,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,yFAAyF;IACzF,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACzC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC;IAC/B,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,GAAG,CAAC,EAAE,OAAO,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;CACxF,CAAC;AAQF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,UAAU,EAClB,QAAQ,QAAQ,EAChB,WAAU,UAAU,GAAG,SAAmB,KACzC,QASF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GACnB,QAAQ,UAAU,EAClB,MAAM,MAAM,EACZ,WAAU,UAAU,GAAG,SAAmB,KACzC,QAqBF,CAAC;AA8FF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,UAAU,EAClB,UAAU,MAAM,EAChB,WAAU,UAAU,GAAG,SAAmB,KACzC,QAoBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,aAAa,YAAY,EACzB,WAAW,SAAS,EACpB,eAAe,MAAM,EACrB,aAAY,aAAa,CAAC,SAAS,CAAM,EACzC,eAAe,cAAc,EAC7B,SAAQ,MAAM,CAAC,MAAM,EAAE,eAAe,CAAkB,EACxD,uBAAuB,oBAAoB,KAC1C,UAgNF,CAAC;AAcF;;;;GAIG;AACH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,UAAU,KAAG,KAAK,CAAC,QAAQ,CA6BpE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,UAAU,EAClB,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,aAAa,aAAa,KACzB,KAAK,CAAC,cAAc,CAgItB,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/compile/node.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { JsonObjectSchema } from "../ir/json.js";
2
- import { asRectAnchor } from "../shapes/_shared.js";
2
+ import { arcEndPoint } from "../geometry/arc.js";
3
+ import { normalizeCompassAnchor } from "../geometry/anchor.js";
3
4
  import { BUILTIN_SHAPES } from "../shapes/index.js";
5
+ import { DirectionVectorByAtDirection, LabelAnchorByAtDirection } from "./direction.js";
4
6
  import { resolvePosition } from "./position.js";
5
7
  import { toAlphabeticBaselineY } from "./text-baseline.js";
6
8
  import { resolveBoundary } from "./boundary.js";
@@ -14,8 +16,8 @@ var EMPTY_SHAPE_PARAMS = {};
14
16
  * @description 裸 string → `{ type, params: {} }`;`{ type, params? }` → params 缺省补 `{}`;
15
17
  * 缺省(undefined)→ `{ type: 'rectangle', params: {} }`。`'circle'`(裸 string)消解为
16
18
  * `{ type: 'ellipse', params: { circumscribe: 'equal' } }`——circle 无独立几何,是 ellipse 等轴 preset 别名。
17
- * `'diamond'`(裸 string)消解为 `{ type: 'polygon', params: { sides: 4, rotate: 45 } }`——diamond 无独立几何,
18
- * 是 polygon 4 边形(自旋 45°)preset 别名。仅做形态归一,不查表 / 不校验。
19
+ * `'diamond'`(裸 string)消解为 `{ type: 'polygon', params: { sides: 4, rotate: 0 } }`——diamond 无独立几何,
20
+ * 是 polygon 4 边形 preset 别名。仅做形态归一,不查表 / 不校验。
19
21
  */
20
22
  var normalizeShape = (shape) => {
21
23
  if (shape === void 0) return {
@@ -30,7 +32,7 @@ var normalizeShape = (shape) => {
30
32
  type: "polygon",
31
33
  params: {
32
34
  sides: 4,
33
- rotate: 45
35
+ rotate: 0
34
36
  }
35
37
  };
36
38
  if (typeof shape === "string") return {
@@ -108,9 +110,9 @@ var DEFAULT_LABEL_DISTANCE = 12;
108
110
  var DASHED_PATTERN = [4, 2];
109
111
  /** dotted 预设:1 px 圆点 + 2 px 间隙 */
110
112
  var DOTTED_PATTERN = [1, 2];
111
- /** dashed / dotted / dashArray 优先级:dashArray > dashed > dotted */
112
- var resolveDashArray = (dashArray, dashed, dotted) => {
113
- if (dashArray !== void 0) return dashArray;
113
+ /** dashed / dotted / dashPattern 优先级:dashPattern > dashed > dotted */
114
+ var resolveDashPattern = (dashPattern, dashed, dotted) => {
115
+ if (dashPattern !== void 0) return dashPattern;
114
116
  if (dashed) return DASHED_PATTERN;
115
117
  if (dotted) return DOTTED_PATTERN;
116
118
  };
@@ -125,6 +127,14 @@ var inflateRect = (r, m) => m === 0 ? r : {
125
127
  rotate: r.rotate
126
128
  };
127
129
  /**
130
+ * 视觉 rect 外扩 outerSep(margin)得到外边界 AABB
131
+ * @description = `inflateRect(layout.rect, layout.margin)`,中心不变、四向各 +margin。border 类
132
+ * anchor(compass / 数字角度)解析与 bbox / viewBox / 布局占位都基于这层;视觉 emit / 裁剪 /
133
+ * 形状专属 anchor / edgePoint / label 附着点仍读 `layout.rect`(不外扩)。单一派生量,不另存字段。
134
+ * (TikZ outer sep 对齐见 v0.3-beta.1 ADR-07。)
135
+ */
136
+ var outerRectOf = (layout) => inflateRect(layout.rect, layout.margin);
137
+ /**
128
138
  * 取节点 shape 在 toward 方向的附着点(path 端点贴边用)
129
139
  * @description 走连接面(boundary)对应的 def.boundaryPoint;margin > 0 时先膨胀外接 Rect,让 path 在 border 外停 margin。
130
140
  * boundary 缺省 = 'shape'(视觉形状自身),与改前行为一致。
@@ -135,15 +145,19 @@ var boundaryPointOf = (layout, toward, boundary = "shape") => {
135
145
  };
136
146
  /**
137
147
  * 取节点 shape 命名 anchor(center / north / east / north-east 等)
138
- * @description 不应用 margin——TikZ 语义中 explicit anchor 取视觉边界点不涉及 outer sep;用于 `'A.north'` 落点。
148
+ * @description 纯几何:在传入的 `layout.rect` 上求点,本体**不施加 outerSep(margin)**。outerSep 的
149
+ * 「border 外推」由调用方决定——`anchor-cache.ts` 的 compass 解析先把 rect 外扩 margin(`outerRectOf`)
150
+ * 再调本函数;`labelBorderPoint` 喂视觉 rect(label 附着点不含 margin)。这样 outer sep 只作用于
151
+ * path / position 的 anchor 引用,不波及 label(详见 v0.3-beta.1 ADR-07 §1/§2)。
139
152
  * compass(9 个 rect 方位名)走连接面 AABB:'shape' 时归一为 'rectangle'(矩形 AABB),其余按 boundary 解析。
140
153
  * 形状专属命名 anchor(tip-N / apex 等非 compass 名)恒走视觉形状自身,boundary 不影响。
141
- * boundary 缺省 = 'shape',与改前 compass 走 AABB 行为一致(原 shapeDef.anchor 内部也走 rect AABB)。
154
+ * boundary 缺省 = 'shape'
142
155
  */
143
156
  var anchorOf = (layout, name, boundary = "shape") => {
144
- if (asRectAnchor(name) !== void 0) {
157
+ const compassAnchor = normalizeCompassAnchor(name);
158
+ if (compassAnchor !== void 0) {
145
159
  const { def, rect, params } = resolveBoundary(boundary === "shape" ? "rectangle" : boundary, layout.shapeDef, layout.rect, layout.shapeParams ?? EMPTY_SHAPE_PARAMS, layout.shapes);
146
- const p = def.anchor(rect, name, params);
160
+ const p = def.anchor(rect, compassAnchor, params);
147
161
  if (p === void 0) throw new Error(`Unknown anchor '${name}' for shape '${layout.shapeName}'`);
148
162
  return p;
149
163
  }
@@ -151,41 +165,6 @@ var anchorOf = (layout, name, boundary = "shape") => {
151
165
  if (p === void 0) throw new Error(`Unknown anchor '${name}' for shape '${layout.shapeName}'`);
152
166
  return p;
153
167
  };
154
- /** 8 方向 label position → (anchorName, 单位向量);above 视觉上方即 y 减小 */
155
- var LABEL_DIRECTION_MAP = {
156
- above: {
157
- anchor: "north",
158
- vec: [0, -1]
159
- },
160
- below: {
161
- anchor: "south",
162
- vec: [0, 1]
163
- },
164
- left: {
165
- anchor: "west",
166
- vec: [-1, 0]
167
- },
168
- right: {
169
- anchor: "east",
170
- vec: [1, 0]
171
- },
172
- "above-left": {
173
- anchor: "north-west",
174
- vec: [-Math.SQRT1_2, -Math.SQRT1_2]
175
- },
176
- "above-right": {
177
- anchor: "north-east",
178
- vec: [Math.SQRT1_2, -Math.SQRT1_2]
179
- },
180
- "below-left": {
181
- anchor: "south-west",
182
- vec: [-Math.SQRT1_2, Math.SQRT1_2]
183
- },
184
- "below-right": {
185
- anchor: "south-east",
186
- vec: [Math.SQRT1_2, Math.SQRT1_2]
187
- }
188
- };
189
168
  /**
190
169
  * 算 label 中心点(节点局部坐标系,未旋转)
191
170
  * @description 8 方向:节点对应 anchor 出发按单位向量 × distance 外推;数字角度:先取 angleBoundary 边界点再沿 (cos,sin) × distance 外推。
@@ -203,16 +182,12 @@ var labelBorderPoint = (layout, label) => {
203
182
  }
204
183
  };
205
184
  if (typeof label.position === "number") return angleBoundaryOf(aaLayout, label.position);
206
- const { anchor } = LABEL_DIRECTION_MAP[label.position];
207
- return anchorOf(aaLayout, anchor);
185
+ return anchorOf(aaLayout, LabelAnchorByAtDirection[label.position]);
208
186
  };
209
187
  var labelCenter = (layout, label) => {
210
188
  const [bx, by] = labelBorderPoint(layout, label);
211
- if (typeof label.position === "number") {
212
- const rad = label.position * Math.PI / 180;
213
- return [bx + Math.cos(rad) * label.distance, by + Math.sin(rad) * label.distance];
214
- }
215
- const { vec } = LABEL_DIRECTION_MAP[label.position];
189
+ if (typeof label.position === "number") return arcEndPoint([bx, by], label.distance, label.position);
190
+ const vec = DirectionVectorByAtDirection[label.position];
216
191
  return [bx + vec[0] * label.distance, by + vec[1] * label.distance];
217
192
  };
218
193
  /** 从 label 中心朝 border 方向,求 label 框(halfW×halfH)边界交点(pin 引线终点 = label 框近 node 边) */
@@ -252,8 +227,8 @@ var resolveLabelRotateDeg = (label, lx, ly, cx, cy) => {
252
227
  };
253
228
  /**
254
229
  * 取节点 shape 在指定角度方向的边界点
255
- * @description 角度是节点**局部坐标系**下的极角(度数:0°=局部 +x,90°=局部 +y)。layout.rect.rotate 把局部基绕中心旋转,得到世界系下的视觉方向;shape boundaryPoint 内部用 rotate-aware 投影,所以这里把局部 (cos, sin) 经 rect.rotate 旋转后加到中心当作世界系 toward 传入。不应用 margin(同 anchorOf);用于 `'A.30'` 落点。
256
- * boundary 缺省 = 'shape'(视觉形状自身),与改前行为一致。
230
+ * @description 角度是节点**局部坐标系**下的极角(度数:0°=局部 +x,90°=局部 +y)。layout.rect.rotate 把局部基绕中心旋转,得到世界系下的视觉方向;shape boundaryPoint 内部用 rotate-aware 投影,所以这里把局部 (cos, sin) 经 rect.rotate 旋转后加到中心当作世界系 toward 传入。本体**不施加 margin(同 anchorOf)**——outerSep 外推由 `anchor-cache.ts` 调用方喂 `outerRectOf` 实现;用于 `'A.30'` 落点。
231
+ * boundary 缺省 = 'shape'(视觉形状自身)。
257
232
  */
258
233
  var angleBoundaryOf = (layout, angleDeg, boundary = "shape") => {
259
234
  const rad = angleDeg * Math.PI / 180;
@@ -271,7 +246,7 @@ var angleBoundaryOf = (layout, angleDeg, boundary = "shape") => {
271
246
  * @description 文本度量 + padding 推内框半轴;按 shape 算外接边界(circle 取半对角线、ellipse ×√2、diamond ×2);解析 position 为几何中心;rotate 度数转弧度。
272
247
  * `scopeChain` 非空时 `resolvePosition` 返回**当前 scope 局部坐标**(relative position 在当前
273
248
  * scope 局部度量),调用方负责后续 `projectLayoutToGlobal` / `applyTransformChain` 投回全局;
274
- * 笛卡尔字面量 `Position` 已在 scope 局部度量,行为延续 v0.1。
249
+ * 笛卡尔字面量 `Position` 已在 scope 局部度量,保持局部坐标语义。
275
250
  */
276
251
  var layoutNode = (node, measureText, nameStack, nodeDistance, scopeChain = [], labelDefault, shapes = BUILTIN_SHAPES, resolveBetweenGlobal) => {
277
252
  const { type: shapeName, params: rawShapeParams } = normalizeShape(node.shape);
@@ -310,12 +285,12 @@ var layoutNode = (node, measureText, nameStack, nodeDistance, scopeChain = [], l
310
285
  const text = isObj ? spec.text : spec;
311
286
  const lineFont = isObj ? spec.font : void 0;
312
287
  const font = {
313
- size: lineFont?.size ?? fontSize,
288
+ size: lineFont?.size !== void 0 ? lineFont.size * fontScale : fontSize,
314
289
  family: lineFont?.family ?? fontFamily,
315
290
  weight: lineFont?.weight ?? fontWeight,
316
291
  style: lineFont?.style ?? fontStyle
317
292
  };
318
- const physical = maxTextWidth !== void 0 ? wrapText(text, font, maxTextWidth, measureText) : [text];
293
+ const physical = text.split("\n").flatMap((hardLine) => maxTextWidth !== void 0 ? wrapText(hardLine, font, maxTextWidth, measureText) : [hardLine]);
319
294
  for (const ptext of physical) {
320
295
  const m = measureText(ptext, font);
321
296
  if (m.width > textWidth) textWidth = m.width;
@@ -323,7 +298,7 @@ var layoutNode = (node, measureText, nameStack, nodeDistance, scopeChain = [], l
323
298
  if (isObj) {
324
299
  if (spec.fill !== void 0) out.fill = spec.fill;
325
300
  if (spec.opacity !== void 0) out.opacity = spec.opacity;
326
- if (lineFont?.size !== void 0) out.fontSize = lineFont.size;
301
+ if (lineFont?.size !== void 0) out.fontSize = lineFont.size * fontScale;
327
302
  if (lineFont?.family !== void 0) out.fontFamily = lineFont.family;
328
303
  if (lineFont?.weight !== void 0) out.fontWeight = lineFont.weight;
329
304
  if (lineFont?.style !== void 0) out.fontStyle = lineFont.style;
@@ -399,13 +374,14 @@ var layoutNode = (node, measureText, nameStack, nodeDistance, scopeChain = [], l
399
374
  stroke: node.stroke,
400
375
  strokeOpacity: node.drawOpacity,
401
376
  strokeWidth: node.strokeWidth,
402
- dashPattern: resolveDashArray(node.dashArray, node.dashed, node.dotted),
377
+ dashPattern: resolveDashPattern(node.dashPattern, node.dashed, node.dotted),
403
378
  cornerRadius: node.cornerRadius,
404
379
  textColor: node.textColor,
405
380
  opacity: node.opacity,
406
381
  labels,
407
382
  boundary: node.boundary,
408
383
  meta: node.meta,
384
+ animations: node.animations,
409
385
  shapes
410
386
  };
411
387
  };
@@ -457,12 +433,13 @@ var labelExtentPoints = (layout) => {
457
433
  }
458
434
  return pts;
459
435
  };
436
+ var cloneScenePrimitive = (primitive) => ({ ...primitive });
460
437
  var emitNodePrimitives = (layout, round, resolveFill) => {
461
438
  const axisAlignedRect = {
462
439
  ...layout.rect,
463
440
  rotate: 0
464
441
  };
465
- const shapePrims = [...layout.shapeDef.emit(axisAlignedRect, toShapeStyle(layout, resolveFill), round, layout.shapeParams ?? EMPTY_SHAPE_PARAMS)];
442
+ const shapePrims = [...layout.shapeDef.emit(axisAlignedRect, toShapeStyle(layout, resolveFill), round, layout.shapeParams ?? EMPTY_SHAPE_PARAMS)].map(cloneScenePrimitive);
466
443
  const inner = [...shapePrims];
467
444
  if (layout.lines) {
468
445
  const halfBlockW = layout.textWidth / 2;
@@ -526,7 +503,7 @@ var emitNodePrimitives = (layout, round, resolveFill) => {
526
503
  lineHeight: labLineHeight,
527
504
  fill: lab.textColor ?? "currentColor",
528
505
  opacity: lab.opacity ?? layout.opacity,
529
- measuredWidth: 0,
506
+ measuredWidth: round(lab.measuredWidth),
530
507
  measuredHeight: round(lab.fontSize)
531
508
  };
532
509
  const deg = resolveLabelRotateDeg(lab, lx, ly, cx, cy);
@@ -546,6 +523,7 @@ var emitNodePrimitives = (layout, round, resolveFill) => {
546
523
  if (!(layout.rotateDeg !== 0 || layout.lines !== void 0)) {
547
524
  if (layout.id !== void 0) for (const prim of shapePrims) prim.id = layout.id;
548
525
  if (layout.meta !== void 0) for (const prim of shapePrims) prim.meta = layout.meta;
526
+ if (layout.animations !== void 0) for (const prim of shapePrims) prim.animations = layout.animations;
549
527
  return inner;
550
528
  }
551
529
  const group = {
@@ -554,6 +532,7 @@ var emitNodePrimitives = (layout, round, resolveFill) => {
554
532
  };
555
533
  if (layout.id !== void 0) group.id = layout.id;
556
534
  if (layout.meta !== void 0) group.meta = layout.meta;
535
+ if (layout.animations !== void 0) group.animations = layout.animations;
557
536
  if (layout.rotateDeg !== 0) group.transforms = [{
558
537
  kind: "rotate",
559
538
  degrees: round(layout.rotateDeg),
@@ -563,4 +542,4 @@ var emitNodePrimitives = (layout, round, resolveFill) => {
563
542
  return [group];
564
543
  };
565
544
  //#endregion
566
- export { anchorOf, angleBoundaryOf, boundaryPointOf, emitNodePrimitives, labelExtentPoints, layoutNode };
545
+ export { anchorOf, angleBoundaryOf, boundaryPointOf, emitNodePrimitives, labelExtentPoints, layoutNode, outerRectOf };
@@ -77,7 +77,7 @@ var createPaintRegistry = (effectivePatterns, round) => {
77
77
  id,
78
78
  spec: fill
79
79
  };
80
- if (fill.type === "pattern") resource.tile = resolvePatternTile(fill, effectivePatterns, round);
80
+ if (fill.kind === "pattern") resource.tile = resolvePatternTile(fill, effectivePatterns, round);
81
81
  list.push(resource);
82
82
  }
83
83
  return {
@@ -1,16 +1,17 @@
1
- import { IRPosition, IRTarget } from '../../ir';
1
+ import { FoldStepViaValue, IRPosition, IRTarget } from '../../ir';
2
2
  import { Transform } from '../../primitive';
3
3
  import { NameStack } from '../name-stack';
4
+ export declare const isAutoBoundaryTarget: (target: IRTarget) => boolean;
4
5
  /**
5
6
  * 求 step.to 的参考点(给 boundary clip 算方向 / 折角 corner 用)
6
7
  * @description 三态:`'A'`(auto) 节点中心;`'A.<anchor>'`/`'A.<deg>'` 显式锚点 refPoint=endpoint 位置不随邻居变。直接坐标/极坐标解析为笛卡尔。
7
8
  * string id lookup 拿到的 layout 已是全局坐标——不走 scopeChain 投影;Position / Polar /
8
9
  * At / Offset 字面量经 `resolvePosition(..., scopeChain)` 拿到当前 scope 局部坐标后
9
- * `applyTransformChain` 投回全局。`scopeChain=[]` 等价 v0.1(恒等)。
10
+ * `applyTransformChain` 投回全局。`scopeChain=[]` 时按恒等变换处理。
10
11
  */
11
12
  export declare const refPointOfTarget: (target: IRTarget, nameStack: NameStack, scopeChain?: ReadonlyArray<Transform>) => IRPosition | null;
12
13
  /** 折角中间点:`-|` → (curr.x, prev.y);`|-` → (prev.x, curr.y) */
13
- export declare const cornerOf: (prev: IRPosition, curr: IRPosition, via: "-|" | "|-") => IRPosition;
14
+ export declare const cornerOf: (prev: IRPosition, curr: IRPosition, via: FoldStepViaValue) => IRPosition;
14
15
  /**
15
16
  * 在 toward 方向算 step.to 的实际绘制端点
16
17
  * @description 节点 auto `'A'`:按 shape 走 boundaryPointOf 求中心→toward 射线交点;命名 anchor/角度:位置已定不受 toward 影响;直接坐标/极坐标:解析后返回;失败返回 null。
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA6B/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,QAAQ,EAChB,WAAW,SAAS,EACpB,aAAY,aAAa,CAAC,SAAS,CAAM,KACxC,UAAU,GAAG,IA8Bf,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,QAAQ,GACnB,MAAM,UAAU,EAChB,MAAM,UAAU,EAChB,KAAK,IAAI,GAAG,IAAI,KACf,UACqD,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,QAAQ,EAChB,QAAQ,UAAU,EAClB,WAAW,SAAS,EACpB,aAAY,aAAa,CAAC,SAAS,CAAM,KACxC,UAAU,GAAG,IAuBf,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,SAAS,GAAI,GAAG,UAAU,GAAG,IAAI,EAAE,GAAG,UAAU,GAAG,IAAI,KAAG,OACzB,CAAC;AAE/C,6BAA6B;AAC7B,eAAO,MAAM,WAAW,GAAI,GAAG,UAAU,EAAE,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,UAM7E,CAAC"}
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/anchor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAmC,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAExG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAU/C,eAAO,MAAM,oBAAoB,GAAI,QAAQ,QAAQ,KAAG,OAC4B,CAAC;AAqBrF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,QAAQ,EAChB,WAAW,SAAS,EACpB,aAAY,aAAa,CAAC,SAAS,CAAM,KACxC,UAAU,GAAG,IA8Bf,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,QAAQ,GACnB,MAAM,UAAU,EAChB,MAAM,UAAU,EAChB,KAAK,gBAAgB,KACpB,UACmF,CAAC;AAEvF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,QAAQ,EAChB,QAAQ,UAAU,EAClB,WAAW,SAAS,EACpB,aAAY,aAAa,CAAC,SAAS,CAAM,KACxC,UAAU,GAAG,IAuBf,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,SAAS,GAAI,GAAG,UAAU,GAAG,IAAI,EAAE,GAAG,UAAU,GAAG,IAAI,KAAG,OACtC,CAAC;AAElC,6BAA6B;AAC7B,eAAO,MAAM,WAAW,GAAI,GAAG,UAAU,EAAE,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,UAC1C,CAAC"}
@@ -1,4 +1,6 @@
1
- import { lerpPoint } from "../../geometry/_edge.js";
1
+ import { FoldStepVia } from "../../ir/path/step.js";
2
+ import { lerpPoint } from "../../geometry/edge.js";
3
+ import { point } from "../../geometry/point.js";
2
4
  import { applyTransformChain } from "../scope.js";
3
5
  import { resolvePosition } from "../position.js";
4
6
  import { boundaryPointOf } from "../node.js";
@@ -6,6 +8,7 @@ import { resolveAnchor, resolveEdgePoint } from "../anchor-cache.js";
6
8
  //#region src/compile/path/anchor.ts
7
9
  /** target 是否对象形态 NodeTarget(`{ id, anchor?, offset? }`);与 Position(array) / Polar / Offset(of) / Relative 区分(独有 `id`) */
8
10
  var isNodeTarget = (t) => typeof t === "object" && !Array.isArray(t) && "id" in t;
11
+ var isAutoBoundaryTarget = (target) => isNodeTarget(target) && target.anchor === void 0 && target.offset === void 0;
9
12
  /** target 是否 between 比例点(`{ between, t }`);独有 `between` 字段 */
10
13
  var isBetween = (t) => typeof t === "object" && !Array.isArray(t) && "between" in t;
11
14
  /** 解析 NodeTarget 的 anchor(非 undefined)到世界坐标:命名 / 角度走 resolveAnchor(可选连接面),`{ side, t }` 恒走视觉形状(不传 boundary) */
@@ -21,7 +24,7 @@ var addOffset = (base, offset) => offset ? [base[0] + offset[0], base[1] + offse
21
24
  * @description 三态:`'A'`(auto) 节点中心;`'A.<anchor>'`/`'A.<deg>'` 显式锚点 refPoint=endpoint 位置不随邻居变。直接坐标/极坐标解析为笛卡尔。
22
25
  * string id lookup 拿到的 layout 已是全局坐标——不走 scopeChain 投影;Position / Polar /
23
26
  * At / Offset 字面量经 `resolvePosition(..., scopeChain)` 拿到当前 scope 局部坐标后
24
- * `applyTransformChain` 投回全局。`scopeChain=[]` 等价 v0.1(恒等)。
27
+ * `applyTransformChain` 投回全局。`scopeChain=[]` 时按恒等变换处理。
25
28
  */
26
29
  var refPointOfTarget = (target, nameStack, scopeChain = []) => {
27
30
  if (isNodeTarget(target)) {
@@ -43,7 +46,7 @@ var refPointOfTarget = (target, nameStack, scopeChain = []) => {
43
46
  return scopeChain.length === 0 ? local : applyTransformChain(local, scopeChain);
44
47
  };
45
48
  /** 折角中间点:`-|` → (curr.x, prev.y);`|-` → (prev.x, curr.y) */
46
- var cornerOf = (prev, curr, via) => via === "-|" ? [curr[0], prev[1]] : [prev[0], curr[1]];
49
+ var cornerOf = (prev, curr, via) => via === FoldStepVia.HorizontalThenVertical ? [curr[0], prev[1]] : [prev[0], curr[1]];
47
50
  /**
48
51
  * 在 toward 方向算 step.to 的实际绘制端点
49
52
  * @description 节点 auto `'A'`:按 shape 走 boundaryPointOf 求中心→toward 射线交点;命名 anchor/角度:位置已定不受 toward 影响;直接坐标/极坐标:解析后返回;失败返回 null。
@@ -64,14 +67,8 @@ var clipForTarget = (target, toward, nameStack, scopeChain = []) => {
64
67
  return scopeChain.length === 0 ? local : applyTransformChain(local, scopeChain);
65
68
  };
66
69
  /** 两个 IRPosition 两分量精确相等(未 round) */
67
- var samePoint = (a, b) => !!a && !!b && a[0] === b[0] && a[1] === b[1];
70
+ var samePoint = (a, b) => !!a && !!b && point.equal(a, b);
68
71
  /** 把 p 朝 target 方向移动 dist */
69
- var shiftToward = (p, target, dist) => {
70
- const dx = target[0] - p[0];
71
- const dy = target[1] - p[1];
72
- const len = Math.sqrt(dx * dx + dy * dy);
73
- if (len === 0 || dist === 0) return p;
74
- return [p[0] + dx / len * dist, p[1] + dy / len * dist];
75
- };
72
+ var shiftToward = (p, target, dist) => point.shiftToward(p, target, dist);
76
73
  //#endregion
77
- export { clipForTarget, cornerOf, refPointOfTarget, samePoint, shiftToward };
74
+ export { clipForTarget, cornerOf, isAutoBoundaryTarget, refPointOfTarget, samePoint, shiftToward };
@@ -1,30 +1,27 @@
1
1
  import { PaintResolver } from '../paint';
2
2
  import { IRPath, IRPosition } from '../../ir';
3
3
  import { ScenePrimitive, Transform } from '../../primitive';
4
- import { PathGeneratorDefinition } from '../../pathGenerators';
4
+ import { PathGeneratorDefinition } from '../../path-generators';
5
+ import { CompileWarning } from '../constant';
5
6
  import { NameStack } from '../name-stack';
6
7
  import { TextMeasurer } from '../text-metrics';
7
8
  import { EffectiveArrows } from './shrink';
8
9
  /** emitPathPrimitive 可选 warn 钩子 */
9
10
  export type EmitPathWarnHook = {
10
11
  /** 警告收集器(由 compileToScene 传入) */
11
- onWarn?: (warning: {
12
- code: string;
13
- message: string;
14
- path: string;
15
- }) => void;
12
+ onWarn?: (warning: CompileWarning) => void;
16
13
  /** 当前 path 在 IR 中的 locator 前缀(如 `'children[3].path'`) */
17
14
  irPath?: string;
18
15
  /**
19
16
  * 该 path 所属 scope 的累积 Cartesian-only transform 链
20
17
  * @description step.to 内的 polar/at/offset 字面量按"当前 scope 局部度量 + 末端 apply chain"
21
- * 投影回全局;顶层 path / 无 scope chain 时为 `[]`(恒等,等价 v0.1 行为)
18
+ * 投影回全局;顶层 path / 无 scope chain 时为 `[]`(恒等,全局坐标)
22
19
  */
23
20
  scopeChain?: ReadonlyArray<Transform>;
24
21
  /** fill 解析器(PaintSpec → resourceRef + 登记资源);缺省时纯色透传、PaintSpec 退化为无填充 */
25
22
  resolveFill?: PaintResolver;
26
23
  /**
27
- * 有效 arrow 表(内置 7 + 注入);缺省 = 仅内置 7
24
+ * 有效 arrow 表(内置 8 + 注入);缺省 = 仅内置 8
28
25
  * @description compileToScene 合并 `{ ...BUILTIN_ARROWS, ...options.arrows }` 传入;
29
26
  * endpointArrows 据此查表算 shrink / 调 def.emit;未注册名编译期 throw
30
27
  */
@@ -45,4 +42,5 @@ export declare const emitPathPrimitive: (path: IRPath, nameStack: NameStack, rou
45
42
  primitives: Array<ScenePrimitive>;
46
43
  points: Array<IRPosition>;
47
44
  } | null;
45
+ export { refPointOfTarget } from './anchor';
48
46
  //# sourceMappingURL=index.d.ts.map