@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
@@ -1,5 +1,5 @@
1
- const require_parseTargetSugar = require("./parseTargetSugar.cjs");
2
- //#region src/parsers/parseWay.ts
1
+ const require_target_sugar = require("./target-sugar.cjs");
2
+ //#region src/parsers/way.ts
3
3
  /**
4
4
  * Sugar 层 way 数组的关键字常量
5
5
  * @description Cycle 闭合到 way 起点(底层字符串故意写丑避节点 id 冲突,只通过 DrawWay.Cycle 引用);Hv/Vh 折角算子(裸字面量 `-|`/`|-` 与常量等价);Relative/Accumulate 相对偏移 way item 的 type 鉴别值(Relative=TikZ `(+x,+y)` 不推进 prevEnd,Accumulate=TikZ `(++x,++y)` 累积更新)。用 const + as const 而非 TS enum 避免 reverse-mapping 与字面量不互通
@@ -35,7 +35,10 @@ var normalizeLabel = (l) => typeof l === "string" ? { text: l } : { ...l };
35
35
  /** sugar `{position,type}` → IR `{relative}|{relativeAccumulate}`;其它形态原样返回 */
36
36
  var desugarRelativeItem = (item) => {
37
37
  if (!isWayRelativeItem(item)) return item;
38
- return item.type === DrawWay.Accumulate ? { relativeAccumulate: item.position } : { relative: item.position };
38
+ const candidate = item;
39
+ if (candidate.type === DrawWay.Accumulate) return { relativeAccumulate: candidate.position };
40
+ if (candidate.type === DrawWay.Relative) return { relative: candidate.position };
41
+ throw new Error(`parseWay: WayRelativeItem.type must be DrawWay.Relative or DrawWay.Accumulate`);
39
42
  };
40
43
  /** WayItem 归约为"目标点",算子/关键字返回 null */
41
44
  var targetOf = (item) => {
@@ -44,7 +47,7 @@ var targetOf = (item) => {
44
47
  };
45
48
  /**
46
49
  * way 数组 → IRStep 序列
47
- * @description 首元素始终 moveway[0] 是算子时降级到原点 [0,0]);后续元素按各自规则:target/RelItem→line;Cycle→cycle;-|/|- 与下一项合并 fold;curve/cubic/bend 与下一项合并;arc/circle/ellipse 单独成 step;label 算子修饰下一段。连续 label/末尾 label/cycle 上的 label 抛错。纯函数,各框架 adapter Sugar 组件复用
50
+ * @description 首元素必须是 move 目标(way[0] 是算子 / label 算子时抛错,不降级);后续元素按各自规则:target/RelItem→line;Cycle→cycle;-|/|- 与下一项合并 fold;curve/cubic/bend 与下一项合并;arc/circle/ellipse 单独成 step;label 算子修饰下一段。连续 label/末尾 label/cycle 上的 label 抛错。纯函数,各框架 adapter Sugar 组件复用
48
51
  */
49
52
  var parseWay = (way) => {
50
53
  if (way.length < 2) throw new Error("parseWay: way must contain at least 2 items");
@@ -58,10 +61,11 @@ var parseWay = (way) => {
58
61
  };
59
62
  if (isWayLabelOp(way[0])) throw new Error(`parseWay: way[0] must be a target (move start), got label operator`);
60
63
  const rawMove = targetOf(way[0]);
64
+ if (rawMove === null) throw new Error(`parseWay: way[0] must be a target (move start), got operator`);
61
65
  const moveStep = {
62
66
  type: "step",
63
67
  kind: "move",
64
- to: rawMove === null ? [0, 0] : require_parseTargetSugar.parseTargetSugar(rawMove)
68
+ to: require_target_sugar.parseTargetSugar(rawMove)
65
69
  };
66
70
  out.push(moveStep);
67
71
  for (let i = 1; i < way.length; i++) {
@@ -85,9 +89,9 @@ var parseWay = (way) => {
85
89
  if (isWayOperator(next)) throw new Error(`parseWay: via operator '${item}' must be followed by a target, got '${String(next)}'`);
86
90
  const fold = {
87
91
  type: "step",
88
- kind: "step",
92
+ kind: "fold",
89
93
  via: item,
90
- to: require_parseTargetSugar.parseTargetSugar(desugarRelativeItem(next))
94
+ to: require_target_sugar.parseTargetSugar(desugarRelativeItem(next))
91
95
  };
92
96
  const label = consumeLabel();
93
97
  if (label) fold.label = label;
@@ -99,7 +103,7 @@ var parseWay = (way) => {
99
103
  if (i + 1 >= way.length) throw new Error(`parseWay: curve operator at end of way must be followed by a target`);
100
104
  const next = way[i + 1];
101
105
  if (isWayOperator(next)) throw new Error(`parseWay: curve operator must be followed by a target, got operator/keyword`);
102
- const target = require_parseTargetSugar.parseTargetSugar(desugarRelativeItem(next));
106
+ const target = require_target_sugar.parseTargetSugar(desugarRelativeItem(next));
103
107
  const label = consumeLabel();
104
108
  if (isWayCurveOp(item)) {
105
109
  const curve = {
@@ -169,7 +173,7 @@ var parseWay = (way) => {
169
173
  const lineStep = {
170
174
  type: "step",
171
175
  kind: "line",
172
- to: require_parseTargetSugar.parseTargetSugar(desugarRelativeItem(item))
176
+ to: require_target_sugar.parseTargetSugar(desugarRelativeItem(item))
173
177
  };
174
178
  const label = consumeLabel();
175
179
  if (label) lineStep.label = label;
@@ -82,7 +82,7 @@ export type WayItem = IRTarget | string | WayRelativeItem | WayVia | WayCycle |
82
82
  export type WayDSL = Array<WayItem>;
83
83
  /**
84
84
  * way 数组 → IRStep 序列
85
- * @description 首元素始终 moveway[0] 是算子时降级到原点 [0,0]);后续元素按各自规则:target/RelItem→line;Cycle→cycle;-|/|- 与下一项合并 fold;curve/cubic/bend 与下一项合并;arc/circle/ellipse 单独成 step;label 算子修饰下一段。连续 label/末尾 label/cycle 上的 label 抛错。纯函数,各框架 adapter Sugar 组件复用
85
+ * @description 首元素必须是 move 目标(way[0] 是算子 / label 算子时抛错,不降级);后续元素按各自规则:target/RelItem→line;Cycle→cycle;-|/|- 与下一项合并 fold;curve/cubic/bend 与下一项合并;arc/circle/ellipse 单独成 step;label 算子修饰下一段。连续 label/末尾 label/cycle 上的 label 抛错。纯函数,各框架 adapter Sugar 组件复用
86
86
  */
87
87
  export declare const parseWay: (way: WayDSL) => Array<IRStep>;
88
- //# sourceMappingURL=parseWay.d.ts.map
88
+ //# sourceMappingURL=way.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"way.d.ts","sourceRoot":"","sources":["../../../src/parsers/way.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,cAAc,EAQd,MAAM,EACN,WAAW,EACX,QAAQ,EACT,MAAM,OAAO,CAAC;AAGf;;;GAGG;AACH,eAAO,MAAM,OAAO;IAClB,oDAAoD;;IAEpD,2BAA2B;;IAE3B,2BAA2B;;IAE3B,gDAAgD;;IAEhD,kDAAkD;;CAE1C,CAAC;AAEX,oBAAoB;AACpB,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO,OAAO,CAAC,EAAE,CAAC;AAE3D,qBAAqB;AACrB,MAAM,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,KAAK,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,IAAI,EAAE,OAAO,OAAO,CAAC,QAAQ,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC;CAC3D,CAAC;AAOF,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAEnD,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;CAAE,CAAC;AAErE,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEzD,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE7E,0DAA0D;AAC1D,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,OAAO,GACf,QAAQ,GAER,MAAM,GACN,eAAe,GACf,MAAM,GACN,QAAQ,GACR,UAAU,GACV,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,UAAU,CAAC;AAEf,+CAA+C;AAC/C,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AA4EpC;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,KAAK,CAAC,MAAM,CAwKlD,CAAC"}
@@ -1,4 +1,4 @@
1
- //#region src/pathGenerators/define.ts
1
+ //#region src/path-generators/define.ts
2
2
  /**
3
3
  * 注册一个 path generator(注册时 best-effort 元校验)
4
4
  * @description 直通返回 def,并在注册时做轻量早报错——确认 `paramsSchema` 是个可用的 zod schema、
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/path-generators/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,GAC9B,KAAK,uBAAuB,KAC3B,uBAwBF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/path-generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/path-generators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,oCAAoC;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,uDAAuD;IACvD,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,8CAA8C;IAC9C,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,8DAA8D;IAC9D,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;CAC7D,CAAC"}
@@ -0,0 +1,10 @@
1
+ //#region src/patterns/define.ts
2
+ /**
3
+ * 定义一个 pattern motif 注册项
4
+ * @description 与 `defineShape` / `definePathGenerator` 对齐的定义点 helper;当前不做额外运行时校验,
5
+ * 只保留 `PatternDefinition` 形态并让第三方扩展面写法一致。
6
+ * @returns 原样返回的 def(便于 `export const cross = definePattern({ ... })`)
7
+ */
8
+ var definePattern = (def) => def;
9
+ //#endregion
10
+ exports.definePattern = definePattern;
@@ -0,0 +1,9 @@
1
+ import { PatternDefinition } from './types';
2
+ /**
3
+ * 定义一个 pattern motif 注册项
4
+ * @description 与 `defineShape` / `definePathGenerator` 对齐的定义点 helper;当前不做额外运行时校验,
5
+ * 只保留 `PatternDefinition` 形态并让第三方扩展面写法一致。
6
+ * @returns 原样返回的 def(便于 `export const cross = definePattern({ ... })`)
7
+ */
8
+ export declare const definePattern: (def: PatternDefinition) => PatternDefinition;
9
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/patterns/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,iBAAiB,KAAG,iBAAwB,CAAC"}
@@ -1,3 +1,4 @@
1
+ require("./define.cjs");
1
2
  //#region src/patterns/index.ts
2
3
  /** 内置 3 motif 默认 tile 周期(user units);用户 `pattern.size` 覆盖 */
3
4
  var DEFAULT_PATTERN_SIZE = 8;
@@ -24,44 +25,50 @@ var withBackground = (ctx, motif) => ctx.background === void 0 ? [...motif] : [{
24
25
  var BUILTIN_PATTERNS = {
25
26
  lines: {
26
27
  defaultSize: DEFAULT_PATTERN_SIZE,
27
- emit: (ctx) => withBackground(ctx, [{
28
- type: "path",
29
- commands: [{
30
- kind: "move",
31
- to: [0, 0]
32
- }, {
33
- kind: "line",
34
- to: [ctx.size, 0]
35
- }],
36
- stroke: ctx.color,
37
- strokeWidth: ctx.lineWidth ?? DEFAULT_STROKE_WIDTH
38
- }])
28
+ emit: (ctx) => {
29
+ const half = ctx.round(ctx.size / 2);
30
+ return withBackground(ctx, [{
31
+ type: "path",
32
+ commands: [{
33
+ kind: "move",
34
+ to: [0, half]
35
+ }, {
36
+ kind: "line",
37
+ to: [ctx.size, half]
38
+ }],
39
+ stroke: ctx.color,
40
+ strokeWidth: ctx.lineWidth ?? DEFAULT_STROKE_WIDTH
41
+ }]);
42
+ }
39
43
  },
40
44
  grid: {
41
45
  defaultSize: DEFAULT_PATTERN_SIZE,
42
- emit: (ctx) => withBackground(ctx, [{
43
- type: "path",
44
- commands: [
45
- {
46
- kind: "move",
47
- to: [0, 0]
48
- },
49
- {
50
- kind: "line",
51
- to: [ctx.size, 0]
52
- },
53
- {
54
- kind: "move",
55
- to: [0, 0]
56
- },
57
- {
58
- kind: "line",
59
- to: [0, ctx.size]
60
- }
61
- ],
62
- stroke: ctx.color,
63
- strokeWidth: ctx.lineWidth ?? DEFAULT_STROKE_WIDTH
64
- }])
46
+ emit: (ctx) => {
47
+ const half = ctx.round(ctx.size / 2);
48
+ return withBackground(ctx, [{
49
+ type: "path",
50
+ commands: [
51
+ {
52
+ kind: "move",
53
+ to: [0, half]
54
+ },
55
+ {
56
+ kind: "line",
57
+ to: [ctx.size, half]
58
+ },
59
+ {
60
+ kind: "move",
61
+ to: [half, 0]
62
+ },
63
+ {
64
+ kind: "line",
65
+ to: [half, ctx.size]
66
+ }
67
+ ],
68
+ stroke: ctx.color,
69
+ strokeWidth: ctx.lineWidth ?? DEFAULT_STROKE_WIDTH
70
+ }]);
71
+ }
65
72
  },
66
73
  dots: {
67
74
  defaultSize: DEFAULT_PATTERN_SIZE,
@@ -7,4 +7,5 @@ import { PatternDefinition } from './types';
7
7
  */
8
8
  export declare const BUILTIN_PATTERNS: Record<BuiltinPatternName, PatternDefinition>;
9
9
  export type { PatternDefinition, PatternEmitContext } from './types';
10
+ export { definePattern } from './define';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAwBrE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CA4C1E,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAwBrE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAmD1E,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -97,7 +97,7 @@ var slideIn = (opts = {}) => ({
97
97
  /** 变色:`fill|stroke` from→to(oklch 插值,由 renderer 端处理) */
98
98
  var colorShift = (opts) => {
99
99
  const { from, to } = opts;
100
- if (from === void 0 || to === void 0) throw new Error("colorShift: `from` and `to` colors are required.");
100
+ if (from == null || to == null) throw new Error("colorShift: `from` and `to` colors are required.");
101
101
  return {
102
102
  property: (opts.channel ?? "fill") === "stroke" ? require_animation.AnimationProperty.Stroke : require_animation.AnimationProperty.Fill,
103
103
  keyframes: [{
@@ -116,7 +116,7 @@ var colorShift = (opts) => {
116
116
  /** 镜头:scene 根 `viewBox` from→to(挂 `<Layout animations>` / IR 根 `animations`) */
117
117
  var cameraTo = (opts) => {
118
118
  const { from, to } = opts;
119
- if (from === void 0 || to === void 0) throw new Error("cameraTo: `from` and `to` viewBox [x, y, w, h] are required.");
119
+ if (from == null || to == null) throw new Error("cameraTo: `from` and `to` viewBox [x, y, w, h] are required.");
120
120
  return {
121
121
  property: require_animation.AnimationProperty.ViewBox,
122
122
  keyframes: [{
@@ -24,8 +24,8 @@ export type MarkerPathPrim = {
24
24
  fillOpacity?: number;
25
25
  /** 填充规则:`nonzero`(默认)/ `evenodd`(环形 / 孔洞场景) */
26
26
  fillRule?: 'nonzero' | 'evenodd';
27
- /** 描边色(纯色 CSS / `context-stroke` adapter 映射) */
28
- stroke?: string;
27
+ /** 描边色:纯色 CSS `{ kind: 'contextStroke' }`(继承所在元素描边);与 fill 同词汇,core 不持 SVG 裸关键字 */
28
+ stroke?: MarkerFill;
29
29
  /** 描边透明度 0~1 */
30
30
  strokeOpacity?: number;
31
31
  /** 描边宽度(marker 局部坐标) */
@@ -97,8 +97,8 @@ export type MarkerEllipsePrim = {
97
97
  fill?: MarkerFill;
98
98
  /** 填充透明度 0~1 */
99
99
  fillOpacity?: number;
100
- /** 描边色 */
101
- stroke?: string;
100
+ /** 描边色:纯色 CSS 或 `{ kind: 'contextStroke' }` */
101
+ stroke?: MarkerFill;
102
102
  /** 描边透明度 0~1 */
103
103
  strokeOpacity?: number;
104
104
  /** 描边宽度 */
@@ -125,8 +125,8 @@ export type MarkerRectPrim = {
125
125
  fill?: MarkerFill;
126
126
  /** 填充透明度 0~1 */
127
127
  fillOpacity?: number;
128
- /** 描边色 */
129
- stroke?: string;
128
+ /** 描边色:纯色 CSS 或 `{ kind: 'contextStroke' }` */
129
+ stroke?: MarkerFill;
130
130
  /** 描边透明度 0~1 */
131
131
  strokeOpacity?: number;
132
132
  /** 描边宽度 */
@@ -154,7 +154,7 @@ export type MarkerGroupPrim = {
154
154
  * @description renderer-agnostic:core 只产此结构(局部 baseSize 坐标系),react adapter 把它嵌进
155
155
  * `<marker>`。相对 `ScenePrimitive` 的收窄——禁 `TextPrim`、禁 `arrowStart`/`arrowEnd`、禁外部
156
156
  * `resourceRef`、禁 `clip`;`fill` 限 `MarkerFill`。这条收窄兜住"marker 内递归引用 marker / clip /
157
- * 文本布局"的复杂度(见 ADR-01 选项 C 的反例)。
157
+ * 文本布局"的复杂度。
158
158
  */
159
159
  export type MarkerPrimitive = MarkerPathPrim | MarkerEllipsePrim | MarkerRectPrim | MarkerGroupPrim;
160
160
  //# sourceMappingURL=marker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../../src/primitive/marker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../../src/primitive/marker.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { MarkerPrimitive } from './marker';
5
5
  * paint 属性取值词汇表(可用于 fill / stroke,不绑定单一属性)
6
6
  * @description 渲染无关:`string` 纯色(含 var() 由 adapter 走 inline style);`{ kind:'resourceRef' }` 指向
7
7
  * `Scene.resources` 里的 paint server(gradient / 后续 pattern·image);`{ kind:'contextStroke' }` 继承所在元素描边
8
- * (adapter → SVG context-stroke,alpha.8 arrow 用)。
8
+ * (adapter → SVG context-stroke)。
9
9
  */
10
10
  export type PaintValue = string | {
11
11
  kind: 'resourceRef';
@@ -91,7 +91,7 @@ export type PathCommand = MovePathCommand | LinePathCommand | QuadPathCommand |
91
91
  * markerHeight>`,不再 switch、不调 emit、不需要 arrows 注册表。纯 JSON 数据(无函数)。
92
92
  */
93
93
  export type ArrowEndSpec = {
94
- /** 形状名:内置 7 或经 `CompileOptions.arrows` 注册的扩展名;标识 / 调试用,已解析后渲染不依赖(保留) */
94
+ /** 形状名:内置 8 或经 `CompileOptions.arrows` 注册的扩展名;标识 / 调试用,已解析后渲染不依赖(保留) */
95
95
  shape: ArrowShapeName;
96
96
  /** marker viewBox 边长(`def.baseSize ?? 10`);adapter 据此推 viewBox `0 0 baseSize baseSize` 与 refY = baseSize/2 */
97
97
  baseSize: number;
@@ -1,13 +1,14 @@
1
- const require__transform = require("../geometry/_transform.cjs");
1
+ const require_transform = require("../geometry/transform.cjs");
2
2
  const require_arc = require("../geometry/arc.cjs");
3
3
  const require_define = require("./define.cjs");
4
- const require__shared = require("./_shared.cjs");
4
+ const require_shared = require("./shared.cjs");
5
5
  let zod = require("zod");
6
6
  //#region src/shapes/arc.ts
7
+ var RAD_TO_DEG = 180 / Math.PI;
7
8
  /** arc 的派生几何:圆心局部系 AABB + 圆心相对 AABB 中心偏移 */
8
- var arcGeometry = (params) => {
9
+ var computeArcGeometry = (params) => {
9
10
  const { radius } = params;
10
- const range = require__shared.normalizeAngularRange(params.startAngle, params.endAngle);
11
+ const range = require_shared.normalizeAngularRange(params.startAngle, params.endAngle);
11
12
  const points = require_arc.arcBoundingPoints([0, 0], radius, range.start, range.end);
12
13
  let minX = Infinity;
13
14
  let maxX = -Infinity;
@@ -29,8 +30,17 @@ var arcGeometry = (params) => {
29
30
  centerOffset: [-aabbCenter[0], -aabbCenter[1]]
30
31
  };
31
32
  };
33
+ /** params → 派生几何的 WeakMap 缓存(同 sector:同一 params 实例多次取几何只算一次,纯性能、行为不变) */
34
+ var arcGeometryCache = /* @__PURE__ */ new WeakMap();
35
+ var arcGeometry = (params) => {
36
+ const cached = arcGeometryCache.get(params);
37
+ if (cached !== void 0) return cached;
38
+ const geo = computeArcGeometry(params);
39
+ arcGeometryCache.set(params, geo);
40
+ return geo;
41
+ };
32
42
  /** 圆心局部点(相对圆心)→ 世界系(+centerOffset 到相对 AABB 中心后经 rect 投影) */
33
- var arcLocalToWorld = (rect, centerOffset, localFromCenter) => require__transform.localToWorld(rect, [localFromCenter[0] + centerOffset[0], localFromCenter[1] + centerOffset[1]]);
43
+ var arcLocalToWorld = (rect, centerOffset, localFromCenter) => require_transform.localToWorld(rect, [localFromCenter[0] + centerOffset[0], localFromCenter[1] + centerOffset[1]]);
34
44
  /**
35
45
  * arc 注册项:单半径曲线(描边、可选闭合为弓形)
36
46
  * @description circumscribe 返回弧 bbox 半轴(含弧跨过的 90°·k 轴向极值点),node position = AABB 中心;
@@ -49,9 +59,18 @@ var arc = require_define.defineShape({
49
59
  const { centerOffset } = arcGeometry(params);
50
60
  return [-centerOffset[0], -centerOffset[1]];
51
61
  },
52
- boundaryPoint: (rect, _toward, params) => {
62
+ boundaryPoint: (rect, toward, params) => {
53
63
  const geo = arcGeometry(params);
54
- return arcLocalToWorld(rect, geo.centerOffset, require_arc.arcEndPoint([0, 0], params.radius, geo.range.mid));
64
+ const { radius } = params;
65
+ const { start, end } = geo.range;
66
+ const local = require_transform.worldToLocal(rect, toward);
67
+ const fx = local[0] - geo.centerOffset[0];
68
+ const fy = local[1] - geo.centerOffset[1];
69
+ let theta = Math.atan2(fy, fx) * RAD_TO_DEG;
70
+ while (theta < start) theta += 360;
71
+ while (theta >= start + 360) theta -= 360;
72
+ const angle = theta <= end ? theta : theta - end <= start + 360 - theta ? end : start;
73
+ return arcLocalToWorld(rect, geo.centerOffset, require_arc.arcEndPoint([0, 0], radius, angle));
55
74
  },
56
75
  anchor: (rect, name, params) => {
57
76
  const geo = arcGeometry(params);
@@ -1 +1 @@
1
- {"version":3,"file":"arc.d.ts","sourceRoot":"","sources":["../../../src/shapes/arc.ts"],"names":[],"mappings":"AA8DA;;;;;GAKG;AACH,eAAO,MAAM,GAAG,mCA8Ed,CAAC"}
1
+ {"version":3,"file":"arc.d.ts","sourceRoot":"","sources":["../../../src/shapes/arc.ts"],"names":[],"mappings":"AA4EA;;;;;GAKG;AACH,eAAO,MAAM,GAAG,mCAyFd,CAAC"}
@@ -1,4 +1,4 @@
1
- //#region src/shapes/_contour.ts
1
+ //#region src/shapes/contour.ts
2
2
  /**
3
3
  * 由顶点环构造闭合折线段序列(接缝顺序同顶点顺序)
4
4
  * @description 第 i 段 from = 顶点 i、to = 顶点 (i+1)%n;供 polygon / star 的 emit / boundaryPoint
@@ -56,6 +56,19 @@ var contourToPathCommands = (commands, round) => {
56
56
  });
57
57
  return out;
58
58
  };
59
+ /** contour shape 共用的 path primitive 样式落地。 */
60
+ var contourToPathPrimitive = (commands, style) => ({
61
+ type: "path",
62
+ commands,
63
+ fill: style.fill ?? "transparent",
64
+ fillOpacity: style.fillOpacity,
65
+ stroke: style.stroke ?? "currentColor",
66
+ strokeOpacity: style.strokeOpacity,
67
+ strokeWidth: style.strokeWidth ?? 1,
68
+ dashPattern: style.dashPattern,
69
+ opacity: style.opacity
70
+ });
59
71
  //#endregion
60
72
  exports.contourToPathCommands = contourToPathCommands;
73
+ exports.contourToPathPrimitive = contourToPathPrimitive;
61
74
  exports.verticesToSegments = verticesToSegments;
@@ -1,6 +1,7 @@
1
1
  import { Position } from '../geometry/point';
2
- import { ContourCommand, LineSegment } from '../geometry/roundedContour';
3
- import { PathCommand } from '../primitive';
2
+ import { ContourCommand, LineSegment } from '../geometry/contour';
3
+ import { PathCommand, PathPrim } from '../primitive';
4
+ import { ShapeStyle } from './types';
4
5
  /**
5
6
  * 由顶点环构造闭合折线段序列(接缝顺序同顶点顺序)
6
7
  * @description 第 i 段 from = 顶点 i、to = 顶点 (i+1)%n;供 polygon / star 的 emit / boundaryPoint
@@ -16,4 +17,6 @@ export declare const verticesToSegments: (verts: Array<Position>) => Array<LineS
16
17
  * polygon / star 共用此映射器(单一实现)。
17
18
  */
18
19
  export declare const contourToPathCommands: (commands: Array<ContourCommand>, round: (n: number) => number) => Array<PathCommand>;
19
- //# sourceMappingURL=_contour.d.ts.map
20
+ /** contour shape 共用的 path primitive 样式落地。 */
21
+ export declare const contourToPathPrimitive: (commands: Array<PathCommand>, style: ShapeStyle) => PathPrim;
22
+ //# sourceMappingURL=contour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour.d.ts","sourceRoot":"","sources":["../../../src/shapes/contour.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAG,KAAK,CAAC,WAAW,CACQ,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,KAAK,CAAC,cAAc,CAAC,EAC/B,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,KAC3B,KAAK,CAAC,WAAW,CAqCnB,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,GACjC,UAAU,KAAK,CAAC,WAAW,CAAC,EAC5B,OAAO,UAAU,KAChB,QAUD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  const require_define = require("./define.cjs");
2
- const require__shared = require("./_shared.cjs");
3
2
  const require_ellipse = require("../geometry/ellipse.cjs");
3
+ const require_anchor = require("../geometry/anchor.cjs");
4
4
  let zod = require("zod");
5
5
  //#region src/shapes/ellipse.ts
6
6
  /** 外接框 Rect → Ellipse(rx/ry = 半宽/半高) */
@@ -29,7 +29,7 @@ var ellipse = require_define.defineShape({
29
29
  },
30
30
  boundaryPoint: (r, toward) => require_ellipse.ellipse.boundaryPoint(toEllipse(r), toward),
31
31
  anchor: (r, name) => {
32
- const a = require__shared.asRectAnchor(name);
32
+ const a = require_anchor.normalizeCompassAnchor(name);
33
33
  return a ? require_ellipse.ellipse.anchor(toEllipse(r), a) : void 0;
34
34
  },
35
35
  edgePoint: (r, side, t) => require_ellipse.ellipse.edgePoint(toEllipse(r), side, t),
@@ -1,4 +1,4 @@
1
- require("../geometry/_transform.cjs");
1
+ require("../geometry/transform.cjs");
2
2
  require("./define.cjs");
3
3
  const require_arc = require("./arc.cjs");
4
4
  const require_ellipse = require("./ellipse.cjs");
@@ -13,5 +13,5 @@ export { rectangle, ellipse, polygon, sector, arc, star, defineShape };
13
13
  export type { ShapeDefinition, ShapeDefinitionInput, ShapeStyle } from './types';
14
14
  export type { Rect } from '../geometry/rect';
15
15
  export type { Position } from '../geometry/point';
16
- export { worldToLocal, localToWorld } from '../geometry/_transform';
16
+ export { worldToLocal, localToWorld } from '../geometry/transform';
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shapes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,EAAE,eAAe,CAO3I,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjF,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shapes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,EAAE,eAAe,CAO3I,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjF,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,12 +1,13 @@
1
- const require__transform = require("../geometry/_transform.cjs");
1
+ const require_transform = require("../geometry/transform.cjs");
2
2
  const require_rect = require("../geometry/rect.cjs");
3
3
  const require_define = require("./define.cjs");
4
- const require__shared = require("./_shared.cjs");
5
- const require_roundedContour = require("../geometry/roundedContour.cjs");
6
- const require__contour = require("./_contour.cjs");
4
+ const require_anchor = require("../geometry/anchor.cjs");
5
+ const require_contour = require("../geometry/contour.cjs");
6
+ const require_contour$1 = require("./contour.cjs");
7
7
  let zod = require("zod");
8
8
  //#region src/shapes/polygon.ts
9
9
  var DEG_TO_RAD = Math.PI / 180;
10
+ var MAX_POLYGON_SIDES = 1024;
10
11
  /** 顶点角集合(度):第 k 个顶点角 = rotate + k·(360/sides) */
11
12
  var vertexAngles = (params) => {
12
13
  const startDeg = params.rotate ?? 0;
@@ -16,7 +17,14 @@ var vertexAngles = (params) => {
16
17
  return out;
17
18
  };
18
19
  /** 顶点角的 |cos| 最大值(恒 >0,sides≥3 时至少一个顶点不在 ±y 轴上);用于由 AABB 半宽反推外接半径 */
19
- var maxAbsCos = (params) => Math.max(...vertexAngles(params).map((a) => Math.abs(Math.cos(a * DEG_TO_RAD))));
20
+ var maxAbsCos = (params) => {
21
+ let max = 0;
22
+ for (const angle of vertexAngles(params)) {
23
+ const value = Math.abs(Math.cos(angle * DEG_TO_RAD));
24
+ if (value > max) max = value;
25
+ }
26
+ return max;
27
+ };
20
28
  /**
21
29
  * 能容纳内框(半轴 hw/hh)的正 sides 边形外接圆半径
22
30
  * @description rectangle / polygon 是文本容器——尺寸由内框(text + padding)驱动,circumscribe 从内框推外接。
@@ -46,7 +54,7 @@ var circumradiusFromRect = (rect, params) => rect.width / 2 / maxAbsCos(params);
46
54
  */
47
55
  var polygonVertices = (rect, radius, params) => vertexAngles(params).map((deg) => {
48
56
  const a = deg * DEG_TO_RAD;
49
- return require__transform.localToWorld(rect, [radius * Math.cos(a), radius * Math.sin(a)]);
57
+ return require_transform.localToWorld(rect, [radius * Math.cos(a), radius * Math.sin(a)]);
50
58
  });
51
59
  /**
52
60
  * polygon 注册项:正多边形(sides 顶点均布外接圆,rotate 定起始角,cornerRadius 顶点倒角)
@@ -57,43 +65,40 @@ var polygonVertices = (rect, radius, params) => vertexAngles(params).map((deg) =
57
65
  * (多边形关于中心对称,AABB 中心 = 形心 = node position)。命名 anchor 走外接 AABB 的 9 名 rect anchor(不随
58
66
  * cornerRadius 移);self-rotate(params.rotate)与 Node.rotate 叠加。scaleParams:cornerRadius 是长度随 scale
59
67
  * 缩(几何均值因子),sides 计数 / rotate 角度不缩。
60
- * diamond ≡ `{ type: 'polygon', params: { sides: 4, rotate: 45 } }`,由 compile 规范化。
68
+ * diamond ≡ `{ type: 'polygon', params: { sides: 4, rotate: 0 } }`,由 compile 规范化。
61
69
  */
62
70
  var polygon = require_define.defineShape({
63
71
  paramsSchema: zod.z.strictObject({
64
- sides: zod.z.number().int().min(3).describe("Number of sides of the regular polygon (>= 3)."),
72
+ sides: zod.z.number().int().min(3).max(MAX_POLYGON_SIDES).describe(`Number of sides of the regular polygon (3..${MAX_POLYGON_SIDES}).`),
65
73
  rotate: zod.z.number().finite().optional().describe("Shape self-rotation in degrees (vertex start direction); default 0. Composes with Node.rotate."),
66
74
  cornerRadius: zod.z.number().finite().nonnegative().optional().describe("Corner radius in user units; 0 / omitted = sharp corners. Clamped per corner to the largest non-self-intersecting fillet.")
67
75
  }),
68
76
  circumscribe: (hw, hh, params) => {
69
77
  const radius = circumradiusFor(hw, hh, params);
70
78
  const angles = vertexAngles(params);
79
+ let halfWidth = 0;
80
+ let halfHeight = 0;
81
+ for (const angle of angles) {
82
+ const rad = angle * DEG_TO_RAD;
83
+ halfWidth = Math.max(halfWidth, Math.abs(radius * Math.cos(rad)));
84
+ halfHeight = Math.max(halfHeight, Math.abs(radius * Math.sin(rad)));
85
+ }
71
86
  return {
72
- halfWidth: Math.max(...angles.map((a) => Math.abs(radius * Math.cos(a * DEG_TO_RAD)))),
73
- halfHeight: Math.max(...angles.map((a) => Math.abs(radius * Math.sin(a * DEG_TO_RAD))))
87
+ halfWidth,
88
+ halfHeight
74
89
  };
75
90
  },
76
91
  boundaryPoint: (rect, toward, params) => {
77
- const segments = require__contour.verticesToSegments(polygonVertices(rect, circumradiusFromRect(rect, params), params));
92
+ const segments = require_contour$1.verticesToSegments(polygonVertices(rect, circumradiusFromRect(rect, params), params));
78
93
  const center = [rect.x, rect.y];
79
- return require_roundedContour.boundaryFromContour(segments, params.cornerRadius, center, toward) ?? center;
94
+ return require_contour.boundaryFromContour(segments, params.cornerRadius, center, toward) ?? center;
80
95
  },
81
96
  anchor: (rect$1, name, params) => {
82
- const a = require__shared.asRectAnchor(name);
97
+ const a = require_anchor.normalizeCompassAnchor(name);
83
98
  return a ? require_rect.rect.anchor(rect$1, a) : void 0;
84
99
  },
85
100
  *emit(rect, style, round, params) {
86
- yield {
87
- type: "path",
88
- commands: require__contour.contourToPathCommands(require_roundedContour.contourCommands(require__contour.verticesToSegments(polygonVertices(rect, circumradiusFromRect(rect, params), params)), params.cornerRadius), round),
89
- fill: style.fill ?? "transparent",
90
- fillOpacity: style.fillOpacity,
91
- stroke: style.stroke ?? "currentColor",
92
- strokeOpacity: style.strokeOpacity,
93
- strokeWidth: style.strokeWidth ?? 1,
94
- dashPattern: style.dashPattern,
95
- opacity: style.opacity
96
- };
101
+ yield require_contour$1.contourToPathPrimitive(require_contour$1.contourToPathCommands(require_contour.contourCommands(require_contour$1.verticesToSegments(polygonVertices(rect, circumradiusFromRect(rect, params), params)), params.cornerRadius), round), style);
97
102
  },
98
103
  scaleParams: (params, sx, sy) => params.cornerRadius === void 0 ? params : {
99
104
  ...params,
@@ -7,7 +7,7 @@
7
7
  * (多边形关于中心对称,AABB 中心 = 形心 = node position)。命名 anchor 走外接 AABB 的 9 名 rect anchor(不随
8
8
  * cornerRadius 移);self-rotate(params.rotate)与 Node.rotate 叠加。scaleParams:cornerRadius 是长度随 scale
9
9
  * 缩(几何均值因子),sides 计数 / rotate 角度不缩。
10
- * diamond ≡ `{ type: 'polygon', params: { sides: 4, rotate: 45 } }`,由 compile 规范化。
10
+ * diamond ≡ `{ type: 'polygon', params: { sides: 4, rotate: 0 } }`,由 compile 规范化。
11
11
  */
12
12
  export declare const polygon: import('./types').ShapeDefinition;
13
13
  //# sourceMappingURL=polygon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../../src/shapes/polygon.ts"],"names":[],"mappings":"AA8EA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,mCAiElB,CAAC"}
1
+ {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../../src/shapes/polygon.ts"],"names":[],"mappings":"AAqFA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,mCA6DlB,CAAC"}