@retikz/core 0.3.0-alpha.2 → 0.3.0-alpha.4

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 (214) hide show
  1. package/README.md +41 -41
  2. package/dist/es/compile/anchor-cache.d.ts +5 -3
  3. package/dist/es/compile/anchor-cache.d.ts.map +1 -1
  4. package/dist/es/compile/anchor-cache.js +14 -10
  5. package/dist/es/compile/boundary.d.ts +19 -0
  6. package/dist/es/compile/boundary.d.ts.map +1 -0
  7. package/dist/es/compile/boundary.js +64 -0
  8. package/dist/es/compile/compile.d.ts.map +1 -1
  9. package/dist/es/compile/compile.js +15 -2
  10. package/dist/es/compile/node.d.ts +24 -8
  11. package/dist/es/compile/node.d.ts.map +1 -1
  12. package/dist/es/compile/node.js +106 -17
  13. package/dist/es/compile/path/anchor.d.ts.map +1 -1
  14. package/dist/es/compile/path/anchor.js +7 -6
  15. package/dist/es/compile/path/index.d.ts.map +1 -1
  16. package/dist/es/compile/path/index.js +7 -3
  17. package/dist/es/compile/path/relative.js +1 -1
  18. package/dist/es/compile/scope.d.ts.map +1 -1
  19. package/dist/es/compile/scope.js +2 -1
  20. package/dist/es/geometry/arc.d.ts +14 -0
  21. package/dist/es/geometry/arc.d.ts.map +1 -1
  22. package/dist/es/geometry/arc.js +65 -9
  23. package/dist/es/geometry/index.d.ts +1 -0
  24. package/dist/es/geometry/index.d.ts.map +1 -1
  25. package/dist/es/geometry/rect.d.ts +2 -2
  26. package/dist/es/geometry/rect.d.ts.map +1 -1
  27. package/dist/es/geometry/rect.js +3 -3
  28. package/dist/es/geometry/roundedContour.d.ts +88 -0
  29. package/dist/es/geometry/roundedContour.d.ts.map +1 -0
  30. package/dist/es/geometry/roundedContour.js +417 -0
  31. package/dist/es/index.d.ts +6 -5
  32. package/dist/es/index.d.ts.map +1 -1
  33. package/dist/es/index.js +9 -6
  34. package/dist/es/ir/boundary.d.ts +25 -0
  35. package/dist/es/ir/boundary.d.ts.map +1 -0
  36. package/dist/es/ir/boundary.js +14 -0
  37. package/dist/es/ir/index.d.ts +2 -0
  38. package/dist/es/ir/index.d.ts.map +1 -1
  39. package/dist/es/ir/node.d.ts +43 -7
  40. package/dist/es/ir/node.d.ts.map +1 -1
  41. package/dist/es/ir/node.js +8 -3
  42. package/dist/es/ir/path/arrow.d.ts +12 -12
  43. package/dist/es/ir/path/path.d.ts +493 -147
  44. package/dist/es/ir/path/path.d.ts.map +1 -1
  45. package/dist/es/ir/path/path.js +3 -0
  46. package/dist/es/ir/path/step.d.ts +674 -154
  47. package/dist/es/ir/path/step.d.ts.map +1 -1
  48. package/dist/es/ir/path/step.js +2 -2
  49. package/dist/es/ir/path/target.d.ts +43 -8
  50. package/dist/es/ir/path/target.d.ts.map +1 -1
  51. package/dist/es/ir/path/target.js +4 -5
  52. package/dist/es/ir/scope.d.ts +851 -234
  53. package/dist/es/ir/scope.d.ts.map +1 -1
  54. package/dist/es/ir/scope.js +6 -2
  55. package/dist/es/ir/shape.d.ts +14 -0
  56. package/dist/es/ir/shape.d.ts.map +1 -0
  57. package/dist/es/ir/shape.js +9 -0
  58. package/dist/es/parsers/parseNodeTarget.d.ts.map +1 -1
  59. package/dist/es/parsers/parseNodeTarget.js +4 -2
  60. package/dist/es/primitive/ellipse.d.ts +5 -0
  61. package/dist/es/primitive/ellipse.d.ts.map +1 -1
  62. package/dist/es/primitive/group.d.ts +5 -0
  63. package/dist/es/primitive/group.d.ts.map +1 -1
  64. package/dist/es/primitive/path.d.ts +5 -0
  65. package/dist/es/primitive/path.d.ts.map +1 -1
  66. package/dist/es/primitive/rect.d.ts +5 -0
  67. package/dist/es/primitive/rect.d.ts.map +1 -1
  68. package/dist/es/primitive/text.d.ts +5 -0
  69. package/dist/es/primitive/text.d.ts.map +1 -1
  70. package/dist/es/shapes/_contour.d.ts +19 -0
  71. package/dist/es/shapes/_contour.d.ts.map +1 -0
  72. package/dist/es/shapes/_contour.js +60 -0
  73. package/dist/es/shapes/_shared.d.ts +54 -0
  74. package/dist/es/shapes/_shared.d.ts.map +1 -1
  75. package/dist/es/shapes/_shared.js +68 -1
  76. package/dist/es/shapes/arc.d.ts +8 -0
  77. package/dist/es/shapes/arc.d.ts.map +1 -0
  78. package/dist/es/shapes/arc.js +104 -0
  79. package/dist/es/shapes/define.d.ts +13 -0
  80. package/dist/es/shapes/define.d.ts.map +1 -0
  81. package/dist/es/shapes/define.js +13 -0
  82. package/dist/es/shapes/ellipse.d.ts +5 -4
  83. package/dist/es/shapes/ellipse.d.ts.map +1 -1
  84. package/dist/es/shapes/ellipse.js +15 -7
  85. package/dist/es/shapes/index.d.ts +9 -6
  86. package/dist/es/shapes/index.d.ts.map +1 -1
  87. package/dist/es/shapes/index.js +10 -5
  88. package/dist/es/shapes/polygon.d.ts +13 -0
  89. package/dist/es/shapes/polygon.d.ts.map +1 -0
  90. package/dist/es/shapes/polygon.js +104 -0
  91. package/dist/es/shapes/rectangle.d.ts +7 -5
  92. package/dist/es/shapes/rectangle.d.ts.map +1 -1
  93. package/dist/es/shapes/rectangle.js +37 -8
  94. package/dist/es/shapes/sector.d.ts +9 -0
  95. package/dist/es/shapes/sector.d.ts.map +1 -0
  96. package/dist/es/shapes/sector.js +143 -0
  97. package/dist/es/shapes/star.d.ts +15 -0
  98. package/dist/es/shapes/star.d.ts.map +1 -0
  99. package/dist/es/shapes/star.js +113 -0
  100. package/dist/es/shapes/types.d.ts +47 -14
  101. package/dist/es/shapes/types.d.ts.map +1 -1
  102. package/dist/lib/compile/anchor-cache.cjs +14 -10
  103. package/dist/lib/compile/anchor-cache.d.ts +5 -3
  104. package/dist/lib/compile/anchor-cache.d.ts.map +1 -1
  105. package/dist/lib/compile/boundary.cjs +65 -0
  106. package/dist/lib/compile/boundary.d.ts +19 -0
  107. package/dist/lib/compile/boundary.d.ts.map +1 -0
  108. package/dist/lib/compile/compile.cjs +15 -2
  109. package/dist/lib/compile/compile.d.ts.map +1 -1
  110. package/dist/lib/compile/node.cjs +106 -17
  111. package/dist/lib/compile/node.d.ts +24 -8
  112. package/dist/lib/compile/node.d.ts.map +1 -1
  113. package/dist/lib/compile/path/anchor.cjs +7 -6
  114. package/dist/lib/compile/path/anchor.d.ts.map +1 -1
  115. package/dist/lib/compile/path/index.cjs +7 -3
  116. package/dist/lib/compile/path/index.d.ts.map +1 -1
  117. package/dist/lib/compile/path/relative.cjs +1 -1
  118. package/dist/lib/compile/scope.cjs +2 -1
  119. package/dist/lib/compile/scope.d.ts.map +1 -1
  120. package/dist/lib/geometry/arc.cjs +66 -8
  121. package/dist/lib/geometry/arc.d.ts +14 -0
  122. package/dist/lib/geometry/arc.d.ts.map +1 -1
  123. package/dist/lib/geometry/index.d.ts +1 -0
  124. package/dist/lib/geometry/index.d.ts.map +1 -1
  125. package/dist/lib/geometry/rect.cjs +3 -3
  126. package/dist/lib/geometry/rect.d.ts +2 -2
  127. package/dist/lib/geometry/rect.d.ts.map +1 -1
  128. package/dist/lib/geometry/roundedContour.cjs +418 -0
  129. package/dist/lib/geometry/roundedContour.d.ts +88 -0
  130. package/dist/lib/geometry/roundedContour.d.ts.map +1 -0
  131. package/dist/lib/index.cjs +14 -7
  132. package/dist/lib/index.d.ts +6 -5
  133. package/dist/lib/index.d.ts.map +1 -1
  134. package/dist/lib/ir/boundary.cjs +15 -0
  135. package/dist/lib/ir/boundary.d.ts +25 -0
  136. package/dist/lib/ir/boundary.d.ts.map +1 -0
  137. package/dist/lib/ir/index.d.ts +2 -0
  138. package/dist/lib/ir/index.d.ts.map +1 -1
  139. package/dist/lib/ir/node.cjs +8 -3
  140. package/dist/lib/ir/node.d.ts +43 -7
  141. package/dist/lib/ir/node.d.ts.map +1 -1
  142. package/dist/lib/ir/path/arrow.d.ts +12 -12
  143. package/dist/lib/ir/path/path.cjs +3 -0
  144. package/dist/lib/ir/path/path.d.ts +493 -147
  145. package/dist/lib/ir/path/path.d.ts.map +1 -1
  146. package/dist/lib/ir/path/step.cjs +2 -2
  147. package/dist/lib/ir/path/step.d.ts +674 -154
  148. package/dist/lib/ir/path/step.d.ts.map +1 -1
  149. package/dist/lib/ir/path/target.cjs +4 -5
  150. package/dist/lib/ir/path/target.d.ts +43 -8
  151. package/dist/lib/ir/path/target.d.ts.map +1 -1
  152. package/dist/lib/ir/scope.cjs +6 -2
  153. package/dist/lib/ir/scope.d.ts +851 -234
  154. package/dist/lib/ir/scope.d.ts.map +1 -1
  155. package/dist/lib/ir/shape.cjs +9 -0
  156. package/dist/lib/ir/shape.d.ts +14 -0
  157. package/dist/lib/ir/shape.d.ts.map +1 -0
  158. package/dist/lib/parsers/parseNodeTarget.cjs +4 -2
  159. package/dist/lib/parsers/parseNodeTarget.d.ts.map +1 -1
  160. package/dist/lib/primitive/ellipse.d.ts +5 -0
  161. package/dist/lib/primitive/ellipse.d.ts.map +1 -1
  162. package/dist/lib/primitive/group.d.ts +5 -0
  163. package/dist/lib/primitive/group.d.ts.map +1 -1
  164. package/dist/lib/primitive/path.d.ts +5 -0
  165. package/dist/lib/primitive/path.d.ts.map +1 -1
  166. package/dist/lib/primitive/rect.d.ts +5 -0
  167. package/dist/lib/primitive/rect.d.ts.map +1 -1
  168. package/dist/lib/primitive/text.d.ts +5 -0
  169. package/dist/lib/primitive/text.d.ts.map +1 -1
  170. package/dist/lib/shapes/_contour.cjs +61 -0
  171. package/dist/lib/shapes/_contour.d.ts +19 -0
  172. package/dist/lib/shapes/_contour.d.ts.map +1 -0
  173. package/dist/lib/shapes/_shared.cjs +70 -0
  174. package/dist/lib/shapes/_shared.d.ts +54 -0
  175. package/dist/lib/shapes/_shared.d.ts.map +1 -1
  176. package/dist/lib/shapes/arc.cjs +104 -0
  177. package/dist/lib/shapes/arc.d.ts +8 -0
  178. package/dist/lib/shapes/arc.d.ts.map +1 -0
  179. package/dist/lib/shapes/define.cjs +13 -0
  180. package/dist/lib/shapes/define.d.ts +13 -0
  181. package/dist/lib/shapes/define.d.ts.map +1 -0
  182. package/dist/lib/shapes/ellipse.cjs +15 -7
  183. package/dist/lib/shapes/ellipse.d.ts +5 -4
  184. package/dist/lib/shapes/ellipse.d.ts.map +1 -1
  185. package/dist/lib/shapes/index.cjs +12 -6
  186. package/dist/lib/shapes/index.d.ts +9 -6
  187. package/dist/lib/shapes/index.d.ts.map +1 -1
  188. package/dist/lib/shapes/polygon.cjs +104 -0
  189. package/dist/lib/shapes/polygon.d.ts +13 -0
  190. package/dist/lib/shapes/polygon.d.ts.map +1 -0
  191. package/dist/lib/shapes/rectangle.cjs +37 -8
  192. package/dist/lib/shapes/rectangle.d.ts +7 -5
  193. package/dist/lib/shapes/rectangle.d.ts.map +1 -1
  194. package/dist/lib/shapes/sector.cjs +143 -0
  195. package/dist/lib/shapes/sector.d.ts +9 -0
  196. package/dist/lib/shapes/sector.d.ts.map +1 -0
  197. package/dist/lib/shapes/star.cjs +113 -0
  198. package/dist/lib/shapes/star.d.ts +15 -0
  199. package/dist/lib/shapes/star.d.ts.map +1 -0
  200. package/dist/lib/shapes/types.d.ts +47 -14
  201. package/dist/lib/shapes/types.d.ts.map +1 -1
  202. package/package.json +2 -2
  203. package/dist/es/shapes/circle.d.ts +0 -8
  204. package/dist/es/shapes/circle.d.ts.map +0 -1
  205. package/dist/es/shapes/circle.js +0 -34
  206. package/dist/es/shapes/diamond.d.ts +0 -8
  207. package/dist/es/shapes/diamond.d.ts.map +0 -1
  208. package/dist/es/shapes/diamond.js +0 -66
  209. package/dist/lib/shapes/circle.cjs +0 -34
  210. package/dist/lib/shapes/circle.d.ts +0 -8
  211. package/dist/lib/shapes/circle.d.ts.map +0 -1
  212. package/dist/lib/shapes/diamond.cjs +0 -66
  213. package/dist/lib/shapes/diamond.d.ts +0 -8
  214. package/dist/lib/shapes/diamond.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/ir/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,aAAa,CAAC;AAOhE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8GrB,CAAC"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/ir/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,aAAa,CAAC;AAOhE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQnB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB5B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoB,CAAC;AAEpD,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEhE,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;CACzE,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,CAAC,CAAC,UAAU,KAAG,IAE5D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiHrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ const require_json = require("./json.cjs");
2
+ let zod = require("zod");
3
+ //#region src/ir/shape.ts
4
+ var ShapeRefSchema = zod.z.object({
5
+ type: zod.z.string().min(1).describe("Shape name; built-in or registered via CompileOptions.shapes. Unregistered names are rejected at compile time."),
6
+ params: require_json.JsonObjectSchema.optional().describe("JSON-only parameter object for parametric shapes (e.g. sector { innerRadius, outerRadius, startAngle, endAngle }). Must be a plain JSON object (validated by JsonObjectSchema); the registered shape validates its own field shape via paramsSchema. Omitted for parameterless shapes.")
7
+ }).describe("Shape reference: type name + optional JSON params, validated at compile time by the registered shape.");
8
+ //#endregion
9
+ exports.ShapeRefSchema = ShapeRefSchema;
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ export declare const ShapeRefSchema: z.ZodObject<{
3
+ type: z.ZodString;
4
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import('./json').JsonValue, z.ZodTypeDef, import('./json').JsonValue>>>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ type: string;
7
+ params?: Record<string, import('./json').JsonValue> | undefined;
8
+ }, {
9
+ type: string;
10
+ params?: Record<string, import('./json').JsonValue> | undefined;
11
+ }>;
12
+ /** shape 引用:type 名 + 可选 JSON params(编译期由注册的 shape 校验字段形态) */
13
+ export type IRShapeRef = z.infer<typeof ShapeRefSchema>;
14
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../../src/ir/shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;;;;;EAcxB,CAAC;AAEJ,6DAA6D;AAC7D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -6,7 +6,9 @@ const require_rect = require("../geometry/rect.cjs");
6
6
  * `'A'`→`{id:'A'}`;`'A.<name>'`→命名 anchor(center/north/.../south-west);`'A.<deg>'`→角度 anchor。
7
7
  * 按**第一个点**切分——含 `.` 的 id 不能用 shorthand,必须写对象 `{ id: 'a.b', anchor: 'north' }`。
8
8
  * {side,t} 边上比例点是结构化新能力、shorthand 不表达(仅对象形态)。
9
- * 不命中 anchor 名抛错(避免静默吞拼写错误)。放 parser 层(非 compile)避免 adapter 反向依赖 compile。
9
+ * 字符串 shorthand 只认内置 9 anchor(提前拦拼写错误);shape 自定义 anchor(如 sector 的
10
+ * `outer-arc-mid`)走对象形态 `{ id, anchor: 'outer-arc-mid' }`,由 compile 据目标 shape 解释。
11
+ * 放 parser 层(非 compile)避免 adapter 反向依赖 compile。
10
12
  */
11
13
  /** RECT_ANCHORS 的 9 个 anchor 名 */
12
14
  var ANCHOR_NAMES = new Set(Object.values(require_rect.RECT_ANCHORS));
@@ -23,7 +25,7 @@ var parseNodeTarget = (s) => {
23
25
  id,
24
26
  anchor: Number(tail)
25
27
  };
26
- if (!ANCHOR_NAMES.has(tail)) throw new Error(`parseNodeTarget: unknown anchor '${tail}' in '${s}' (supports: ${[...ANCHOR_NAMES].join(", ")}); for ids containing '.', use the object form { id, anchor }`);
28
+ if (!ANCHOR_NAMES.has(tail)) throw new Error(`parseNodeTarget: unknown anchor '${tail}' in '${s}' (supports: ${[...ANCHOR_NAMES].join(", ")}); for ids containing '.' or shape-specific anchors, use the object form { id, anchor }`);
27
29
  return {
28
30
  id,
29
31
  anchor: tail
@@ -1 +1 @@
1
- {"version":3,"file":"parseNodeTarget.d.ts","sourceRoot":"","sources":["../../../src/parsers/parseNodeTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,0CAA0C;AAC1C,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,KAAG,YAmB3C,CAAC"}
1
+ {"version":3,"file":"parseNodeTarget.d.ts","sourceRoot":"","sources":["../../../src/parsers/parseNodeTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,0CAA0C;AAC1C,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,KAAG,YAmB3C,CAAC"}
@@ -1,6 +1,11 @@
1
+ import { IRJsonObject } from '../ir/json';
1
2
  import { PaintValue } from './paint';
2
3
  export type EllipsePrim = {
3
4
  type: 'ellipse';
5
+ /** 稳定挂点 id:compile 从 IR 元素 user id stamp,供 renderer emit data-retikz-id / canvas hit-test */
6
+ id?: string;
7
+ /** provenance 元数据:compile 从 IR 元素(node / path / scope)的 `meta` 原样 stamp,renderer 忽略(不进 DOM),交互层 / 工具链从 Scene 读 */
8
+ meta?: IRJsonObject;
4
9
  cx: number;
5
10
  cy: number;
6
11
  rx: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/primitive/ellipse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/primitive/ellipse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kHAAkH;IAClH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { IRJsonObject } from '../ir/json';
1
2
  import { ScenePrimitive } from './scene';
2
3
  /** Translate transform:沿 x / y 平移(user units) */
3
4
  export type TranslateTransform = {
@@ -37,6 +38,10 @@ export type Transform = TranslateTransform | RotateTransform | ScaleTransform;
37
38
  export type GroupPrim = {
38
39
  /** 类型判别符 */
39
40
  type: 'group';
41
+ /** 稳定挂点 id:compile 从 IR 元素 user id stamp,供 renderer emit data-retikz-id / canvas hit-test */
42
+ id?: string;
43
+ /** provenance 元数据:compile 从 IR 元素(node / path / scope)的 `meta` 原样 stamp,renderer 忽略(不进 DOM),交互层 / 工具链从 Scene 读 */
44
+ meta?: IRJsonObject;
40
45
  /** 结构化变换序列,按数组顺序应用;undefined / 空数组表示无变换 */
41
46
  transforms?: Array<Transform>;
42
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/primitive/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,iDAAiD;AACjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,cAAc;IACd,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,kBAAkB,GAClB,eAAe,GACf,cAAc,CAAC;AAEnB,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,2CAA2C;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/primitive/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,iDAAiD;AACjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,cAAc;IACd,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,kBAAkB,GAClB,eAAe,GACf,cAAc,CAAC;AAEnB,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kHAAkH;IAClH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CACjC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { ArrowShapeName } from '../ir/path/arrow';
2
+ import { IRJsonObject } from '../ir/json';
2
3
  import { MarkerPrimitive } from './marker';
3
4
  import { PaintValue } from './paint';
4
5
  /** Move command:移动游标到目标点,不绘制 */
@@ -108,6 +109,10 @@ export type ArrowEndSpec = {
108
109
  export type PathPrim = {
109
110
  /** 类型判别符 */
110
111
  type: 'path';
112
+ /** 稳定挂点 id:compile 从 IR 元素 user id stamp,供 renderer emit data-retikz-id / canvas hit-test */
113
+ id?: string;
114
+ /** provenance 元数据:compile 从 IR 元素(node / path / scope)的 `meta` 原样 stamp,renderer 忽略(不进 DOM),交互层 / 工具链从 Scene 读 */
115
+ meta?: IRJsonObject;
111
116
  /** 结构化路径命令序列,按数组顺序绘制 */
112
117
  commands: Array<PathCommand>;
113
118
  /** 填充:纯色 / 资源表 paint server(gradient)/ contextStroke;不填表示不填充 */
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/primitive/path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/primitive/path.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
+ import { IRJsonObject } from '../ir/json';
1
2
  import { PaintValue } from './paint';
2
3
  /** 矩形原语 */
3
4
  export type RectPrim = {
4
5
  /** 类型判别符 */
5
6
  type: 'rect';
7
+ /** 稳定挂点 id:compile 从 IR 元素 user id stamp,供 renderer emit data-retikz-id / canvas hit-test */
8
+ id?: string;
9
+ /** provenance 元数据:compile 从 IR 元素(node / path / scope)的 `meta` 原样 stamp,renderer 忽略(不进 DOM),交互层 / 工具链从 Scene 读 */
10
+ meta?: IRJsonObject;
6
11
  /** 左上角横坐标 */
7
12
  x: number;
8
13
  /** 左上角纵坐标 */
@@ -1 +1 @@
1
- {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/primitive/rect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,WAAW;AACX,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/primitive/rect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,WAAW;AACX,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kHAAkH;IAClH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { IRJsonObject } from '../ir/json';
1
2
  /** 行级字段(每行可独立指定),未填走块级 TextPrim 默认 */
2
3
  export type TextLine = {
3
4
  /** 行文字内容 */
@@ -21,6 +22,10 @@ export type TextLine = {
21
22
  */
22
23
  export type TextPrim = {
23
24
  type: 'text';
25
+ /** 稳定挂点 id:compile 从 IR 元素 user id stamp,供 renderer emit data-retikz-id / canvas hit-test */
26
+ id?: string;
27
+ /** provenance 元数据:compile 从 IR 元素(node / path / scope)的 `meta` 原样 stamp,renderer 忽略(不进 DOM),交互层 / 工具链从 Scene 读 */
28
+ meta?: IRJsonObject;
24
29
  /** 锚点横坐标(具体含义由 align 决定) */
25
30
  x: number;
26
31
  /** 锚点纵坐标(具体含义由 baseline 决定) */
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/primitive/text.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,+BAA+B;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,0CAA0C;IAC1C,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvB,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,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IACrD,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/primitive/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,sCAAsC;AACtC,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kHAAkH;IAClH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,+BAA+B;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,0CAA0C;IAC1C,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvB,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,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IACrD,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -0,0 +1,61 @@
1
+ //#region src/shapes/_contour.ts
2
+ /**
3
+ * 由顶点环构造闭合折线段序列(接缝顺序同顶点顺序)
4
+ * @description 第 i 段 from = 顶点 i、to = 顶点 (i+1)%n;供 polygon / star 的 emit / boundaryPoint
5
+ * 委托 rounded-contour 模块。绕向与各形状现状 emit 顶点顺序一致(rounded-contour 据接缝转向叉积判内外侧、
6
+ * 凸 / 凹角统一处理),polygon 全凸、star 凸尖 / 凹角交替都用这同一条构造。
7
+ */
8
+ var verticesToSegments = (verts) => verts.map((from, i) => ({
9
+ kind: "line",
10
+ from,
11
+ to: verts[(i + 1) % verts.length]
12
+ }));
13
+ /**
14
+ * contour 命令 → path PathCommand(每点过 round)
15
+ * @description passthrough(r 省略 / 0)时每段都 emit 一条回到起点的 line、末尾接 close;而顶点形状现状 emit
16
+ * 是 `move + (n−1) line + close`(无回起点的冗余 line)——故此处剔除「紧贴 close 前、落点 == 初始 move 落点」
17
+ * 的那条 line,保证 r=0 与现状逐字等价。fillet(r>0)时末尾 fillet 弧已自然收尾,无该冗余。
18
+ * polygon / star 共用此映射器(单一实现)。
19
+ */
20
+ var contourToPathCommands = (commands, round) => {
21
+ const rp = (p) => [round(p[0]), round(p[1])];
22
+ const out = [];
23
+ let moveTo;
24
+ commands.forEach((cmd, i) => {
25
+ switch (cmd.kind) {
26
+ case "move":
27
+ moveTo = rp(cmd.to);
28
+ out.push({
29
+ kind: "move",
30
+ to: moveTo
31
+ });
32
+ break;
33
+ case "line": {
34
+ const to = rp(cmd.to);
35
+ if (i + 1 < commands.length && commands[i + 1].kind === "close" && moveTo && to[0] === moveTo[0] && to[1] === moveTo[1]) break;
36
+ out.push({
37
+ kind: "line",
38
+ to
39
+ });
40
+ break;
41
+ }
42
+ case "arc":
43
+ out.push({
44
+ kind: "arc",
45
+ center: rp(cmd.center),
46
+ radius: round(cmd.radius),
47
+ startAngle: cmd.startAngle,
48
+ endAngle: cmd.endAngle,
49
+ counterClockwise: cmd.counterClockwise
50
+ });
51
+ break;
52
+ case "close":
53
+ out.push({ kind: "close" });
54
+ break;
55
+ }
56
+ });
57
+ return out;
58
+ };
59
+ //#endregion
60
+ exports.contourToPathCommands = contourToPathCommands;
61
+ exports.verticesToSegments = verticesToSegments;
@@ -0,0 +1,19 @@
1
+ import { Position } from '../geometry/point';
2
+ import { ContourCommand, LineSegment } from '../geometry/roundedContour';
3
+ import { PathCommand } from '../primitive';
4
+ /**
5
+ * 由顶点环构造闭合折线段序列(接缝顺序同顶点顺序)
6
+ * @description 第 i 段 from = 顶点 i、to = 顶点 (i+1)%n;供 polygon / star 的 emit / boundaryPoint
7
+ * 委托 rounded-contour 模块。绕向与各形状现状 emit 顶点顺序一致(rounded-contour 据接缝转向叉积判内外侧、
8
+ * 凸 / 凹角统一处理),polygon 全凸、star 凸尖 / 凹角交替都用这同一条构造。
9
+ */
10
+ export declare const verticesToSegments: (verts: Array<Position>) => Array<LineSegment>;
11
+ /**
12
+ * contour 命令 → path PathCommand(每点过 round)
13
+ * @description passthrough(r 省略 / 0)时每段都 emit 一条回到起点的 line、末尾接 close;而顶点形状现状 emit
14
+ * 是 `move + (n−1) line + close`(无回起点的冗余 line)——故此处剔除「紧贴 close 前、落点 == 初始 move 落点」
15
+ * 的那条 line,保证 r=0 与现状逐字等价。fillet(r>0)时末尾 fillet 弧已自然收尾,无该冗余。
16
+ * polygon / star 共用此映射器(单一实现)。
17
+ */
18
+ export declare const contourToPathCommands: (commands: Array<ContourCommand>, round: (n: number) => number) => Array<PathCommand>;
19
+ //# 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,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;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"}
@@ -1,4 +1,5 @@
1
1
  const require_rect = require("../geometry/rect.cjs");
2
+ const require_arc = require("../geometry/arc.cjs");
2
3
  //#region src/shapes/_shared.ts
3
4
  /** RECT_ANCHORS 的 9 个合法 anchor 名集合(成员校验用) */
4
5
  var RECT_ANCHOR_SET = new Set(Object.values(require_rect.RECT_ANCHORS));
@@ -7,5 +8,74 @@ var RECT_ANCHOR_SET = new Set(Object.values(require_rect.RECT_ANCHORS));
7
8
  * @description 内置 4 shape 的 anchor 只认这 9 名;不在集合内返回 undefined,由 `anchorOf` 抛 Unknown anchor
8
9
  */
9
10
  var asRectAnchor = (name) => RECT_ANCHOR_SET.has(name) ? name : void 0;
11
+ var DEG_TO_RAD = Math.PI / 180;
12
+ /**
13
+ * 规范化起止角:保证 end ≥ start(end<start 时加 360° 直至 ≥ start),并给出中分角
14
+ * @description 角度沿屏幕系(角度递增=CW)从 start 扫到 end;end<start 视为跨过 360°,与 polar / geometry/arc 约定一致。
15
+ * end<start 时一次性加上 360°·k(k 为使 end ≥ start 的最小非负整数),O(1) 闭式计算——
16
+ * 避免 while 循环在巨型角度(如 1e308 浮点 end+360===end 卡死、1e9 退化成数百万次迭代)下挂死。
17
+ * end 已 ≥ start 时 ceil((start−end)/360) ≤ 0,k 取 0、end 不变(语义与原逐次加法等价)。
18
+ */
19
+ var normalizeAngularRange = (startAngle, endAngle) => {
20
+ const end = endAngle + 360 * Math.max(0, Math.ceil((startAngle - endAngle) / 360));
21
+ return {
22
+ start: startAngle,
23
+ end,
24
+ mid: (startAngle + end) / 2
25
+ };
26
+ };
27
+ /**
28
+ * 计算 sector 单一真源几何
29
+ * @description 局部系以圆心为原点:候选极值点 = 圆心(0,0) ∪ 外弧 bbox 点 ∪ 内弧 bbox 点
30
+ * (arcBoundingPoints 已含起止端点与区间内 90°·k 轴向点)。由这些点的 min/max 得 AABB,
31
+ * AABB 中心相对圆心的偏移即 −apexOffset。质心用环楔解析公式(极坐标积分)。
32
+ */
33
+ var sectorGeometry = (params) => {
34
+ const { innerRadius, outerRadius } = params;
35
+ const range = normalizeAngularRange(params.startAngle, params.endAngle);
36
+ const apex = [0, 0];
37
+ const candidates = [apex];
38
+ candidates.push(...require_arc.arcBoundingPoints(apex, outerRadius, range.start, range.end));
39
+ if (innerRadius > 0) candidates.push(...require_arc.arcBoundingPoints(apex, innerRadius, range.start, range.end));
40
+ let minX = Infinity;
41
+ let maxX = -Infinity;
42
+ let minY = Infinity;
43
+ let maxY = -Infinity;
44
+ for (const [px, py] of candidates) {
45
+ if (px < minX) minX = px;
46
+ if (px > maxX) maxX = px;
47
+ if (py < minY) minY = py;
48
+ if (py > maxY) maxY = py;
49
+ }
50
+ const halfWidth = (maxX - minX) / 2;
51
+ const halfHeight = (maxY - minY) / 2;
52
+ const aabbCenter = [(minX + maxX) / 2, (minY + maxY) / 2];
53
+ const apexOffset = [-aabbCenter[0], -aabbCenter[1]];
54
+ const sweepRad = (range.end - range.start) * DEG_TO_RAD;
55
+ const midRad = range.mid * DEG_TO_RAD;
56
+ const R = outerRadius;
57
+ const r = innerRadius;
58
+ const half = sweepRad / 2;
59
+ const areaDenom = R * R - r * r;
60
+ let centroidRadius;
61
+ if (Math.abs(half) < 1e-9 || Math.abs(areaDenom) < 1e-12) centroidRadius = (R + r) / 2;
62
+ else centroidRadius = 2 / 3 * (Math.sin(half) / half) * ((R * R * R - r * r * r) / areaDenom);
63
+ const centroidLocal = [Math.cos(midRad) * centroidRadius, Math.sin(midRad) * centroidRadius];
64
+ const centroidOffset = [centroidLocal[0] - aabbCenter[0], centroidLocal[1] - aabbCenter[1]];
65
+ return {
66
+ range,
67
+ aabbHalfAxes: {
68
+ halfWidth,
69
+ halfHeight
70
+ },
71
+ apexOffset,
72
+ centroidOffset
73
+ };
74
+ };
75
+ /** sector 局部系点(圆心为原点):极角(度) + 半径 → 直角坐标 */
76
+ var sectorPolarPoint = (radius, angleDeg) => require_arc.arcEndPoint([0, 0], radius, angleDeg);
10
77
  //#endregion
11
78
  exports.asRectAnchor = asRectAnchor;
79
+ exports.normalizeAngularRange = normalizeAngularRange;
80
+ exports.sectorGeometry = sectorGeometry;
81
+ exports.sectorPolarPoint = sectorPolarPoint;
@@ -1,7 +1,61 @@
1
+ import { Position } from '../geometry/point';
1
2
  import { RectAnchor } from '../geometry/rect';
2
3
  /**
3
4
  * 把任意字符串收窄为合法 RectAnchor,否则 undefined
4
5
  * @description 内置 4 shape 的 anchor 只认这 9 名;不在集合内返回 undefined,由 `anchorOf` 抛 Unknown anchor
5
6
  */
6
7
  export declare const asRectAnchor: (name: string) => RectAnchor | undefined;
8
+ /** sector / arc 共用的角度约定起止角 */
9
+ type AngularRange = {
10
+ /** 规范化后的起始角(度)= 原 startAngle */
11
+ start: number;
12
+ /** 规范化后的终止角(度)≥ start(end<start 时已加 360°) */
13
+ end: number;
14
+ /** 起止角中分角(度),= (start + end) / 2 */
15
+ mid: number;
16
+ };
17
+ /**
18
+ * 规范化起止角:保证 end ≥ start(end<start 时加 360° 直至 ≥ start),并给出中分角
19
+ * @description 角度沿屏幕系(角度递增=CW)从 start 扫到 end;end<start 视为跨过 360°,与 polar / geometry/arc 约定一致。
20
+ * end<start 时一次性加上 360°·k(k 为使 end ≥ start 的最小非负整数),O(1) 闭式计算——
21
+ * 避免 while 循环在巨型角度(如 1e308 浮点 end+360===end 卡死、1e9 退化成数百万次迭代)下挂死。
22
+ * end 已 ≥ start 时 ceil((start−end)/360) ≤ 0,k 取 0、end 不变(语义与原逐次加法等价)。
23
+ */
24
+ export declare const normalizeAngularRange: (startAngle: number, endAngle: number) => AngularRange;
25
+ /**
26
+ * sector 的派生几何(circumscribe / boundaryPoint / anchor / emit 单一真源)
27
+ * @description 据 params(内外半径 + 起止角)在「圆心(apex)为原点」局部系算精确 AABB 与各特征点偏移。
28
+ * AABB 覆盖 圆心 ∪ 外弧 ∪ 内弧(含弧跨过的 90°·k 轴向 outerRadius 极值点),其半轴即 circumscribe 输出;
29
+ * apex / centroid 等特征点以「相对 AABB 中心的偏移」给出,便于上层用 rect.center + offset 落到世界系。
30
+ */
31
+ export type SectorGeometry = {
32
+ /** 规范化起止角与中分角 */
33
+ range: AngularRange;
34
+ /** 含圆心 + 内外弧的精确 AABB 半轴(circumscribe 输出) */
35
+ aabbHalfAxes: {
36
+ halfWidth: number;
37
+ halfHeight: number;
38
+ };
39
+ /** 圆心(apex)相对 AABB 中心的偏移(apex 常在 AABB 内角,非 AABB 中心) */
40
+ apexOffset: Position;
41
+ /** 质心(centroid)相对 AABB 中心的偏移(落在环楔内,作 boundaryPoint 向外射线起点) */
42
+ centroidOffset: Position;
43
+ };
44
+ /** sector params 的最小结构(与 sector.ts 的 SectorParams 同形,避免循环 import 类型) */
45
+ type SectorGeometryInput = {
46
+ innerRadius: number;
47
+ outerRadius: number;
48
+ startAngle: number;
49
+ endAngle: number;
50
+ };
51
+ /**
52
+ * 计算 sector 单一真源几何
53
+ * @description 局部系以圆心为原点:候选极值点 = 圆心(0,0) ∪ 外弧 bbox 点 ∪ 内弧 bbox 点
54
+ * (arcBoundingPoints 已含起止端点与区间内 90°·k 轴向点)。由这些点的 min/max 得 AABB,
55
+ * AABB 中心相对圆心的偏移即 −apexOffset。质心用环楔解析公式(极坐标积分)。
56
+ */
57
+ export declare const sectorGeometry: (params: SectorGeometryInput) => SectorGeometry;
58
+ /** sector 局部系点(圆心为原点):极角(度) + 半径 → 直角坐标 */
59
+ export declare const sectorPolarPoint: (radius: number, angleDeg: number) => Position;
60
+ export {};
7
61
  //# sourceMappingURL=_shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../src/shapes/_shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKjE;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,UAAU,GAAG,SACK,CAAC"}
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../src/shapes/_shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKjE;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,UAAU,GAAG,SACK,CAAC;AAI/D,8BAA8B;AAC9B,KAAK,YAAY,GAAG;IAClB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,KAAG,YAI5E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,4CAA4C;IAC5C,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,uDAAuD;IACvD,UAAU,EAAE,QAAQ,CAAC;IACrB,8DAA8D;IAC9D,cAAc,EAAE,QAAQ,CAAC;CAC1B,CAAC;AAEF,wEAAwE;AACxE,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,mBAAmB,KAAG,cA0D5D,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,QAC7B,CAAC"}
@@ -0,0 +1,104 @@
1
+ const require__transform = require("../geometry/_transform.cjs");
2
+ const require_arc = require("../geometry/arc.cjs");
3
+ const require_define = require("./define.cjs");
4
+ const require__shared = require("./_shared.cjs");
5
+ let zod = require("zod");
6
+ //#region src/shapes/arc.ts
7
+ /** arc 的派生几何:圆心局部系 AABB + 圆心相对 AABB 中心偏移 */
8
+ var arcGeometry = (params) => {
9
+ const { radius } = params;
10
+ const range = require__shared.normalizeAngularRange(params.startAngle, params.endAngle);
11
+ const points = require_arc.arcBoundingPoints([0, 0], radius, range.start, range.end);
12
+ let minX = Infinity;
13
+ let maxX = -Infinity;
14
+ let minY = Infinity;
15
+ let maxY = -Infinity;
16
+ for (const [px, py] of points) {
17
+ if (px < minX) minX = px;
18
+ if (px > maxX) maxX = px;
19
+ if (py < minY) minY = py;
20
+ if (py > maxY) maxY = py;
21
+ }
22
+ const aabbCenter = [(minX + maxX) / 2, (minY + maxY) / 2];
23
+ return {
24
+ range,
25
+ aabbHalfAxes: {
26
+ halfWidth: (maxX - minX) / 2,
27
+ halfHeight: (maxY - minY) / 2
28
+ },
29
+ centerOffset: [-aabbCenter[0], -aabbCenter[1]]
30
+ };
31
+ };
32
+ /** 圆心局部点(相对圆心)→ 世界系(+centerOffset 到相对 AABB 中心后经 rect 投影) */
33
+ var arcLocalToWorld = (rect, centerOffset, localFromCenter) => require__transform.localToWorld(rect, [localFromCenter[0] + centerOffset[0], localFromCenter[1] + centerOffset[1]]);
34
+ /**
35
+ * arc 注册项:单半径曲线(描边、可选闭合为弓形)
36
+ * @description circumscribe 返回弧 bbox 半轴(含弧跨过的 90°·k 轴向极值点),node position = AABB 中心;
37
+ * emit 出弧 path(close=false 开放描边、无 close 命令;close=true 弦闭合成弓形可填充);anchor 提供
38
+ * arc-mid(弧中点)/ start / end / center(圆心)。scaleParams 只缩 radius、不缩角度与 close。
39
+ */
40
+ var arc = require_define.defineShape({
41
+ paramsSchema: zod.z.strictObject({
42
+ radius: zod.z.number().finite().positive().describe("Arc radius in user units."),
43
+ startAngle: zod.z.number().finite().describe("Start angle in degrees; polar convention 0°=+x, 90°=+y (screen y-down), matching core polar."),
44
+ endAngle: zod.z.number().finite().describe("End angle in degrees; swept from startAngle in screen space."),
45
+ close: zod.z.boolean().optional().describe("When true, close the arc into a chord/segment outline (fillable); default false = open stroked arc.")
46
+ }),
47
+ circumscribe: (_hw, _hh, params) => arcGeometry(params).aabbHalfAxes,
48
+ circumscribeOffset: (params) => {
49
+ const { centerOffset } = arcGeometry(params);
50
+ return [-centerOffset[0], -centerOffset[1]];
51
+ },
52
+ boundaryPoint: (rect, _toward, params) => {
53
+ const geo = arcGeometry(params);
54
+ return arcLocalToWorld(rect, geo.centerOffset, require_arc.arcEndPoint([0, 0], params.radius, geo.range.mid));
55
+ },
56
+ anchor: (rect, name, params) => {
57
+ const geo = arcGeometry(params);
58
+ const { radius } = params;
59
+ const { start, end, mid } = geo.range;
60
+ const at = (angle) => arcLocalToWorld(rect, geo.centerOffset, require_arc.arcEndPoint([0, 0], radius, angle));
61
+ switch (name) {
62
+ case "center": return arcLocalToWorld(rect, geo.centerOffset, [0, 0]);
63
+ case "arc-mid": return at(mid);
64
+ case "start": return at(start);
65
+ case "end": return at(end);
66
+ default: return;
67
+ }
68
+ },
69
+ *emit(rect, style, round, params) {
70
+ const geo = arcGeometry(params);
71
+ const { radius, close } = params;
72
+ const { start, end } = geo.range;
73
+ const rp = (p) => [round(p[0]), round(p[1])];
74
+ const center = arcLocalToWorld(rect, geo.centerOffset, [0, 0]);
75
+ const commands = [{
76
+ kind: "move",
77
+ to: rp(arcLocalToWorld(rect, geo.centerOffset, require_arc.arcEndPoint([0, 0], radius, start)))
78
+ }, {
79
+ kind: "arc",
80
+ center: rp(center),
81
+ radius: round(radius),
82
+ startAngle: start,
83
+ endAngle: end
84
+ }];
85
+ if (close) commands.push({ kind: "close" });
86
+ yield {
87
+ type: "path",
88
+ commands,
89
+ fill: close ? style.fill ?? "transparent" : "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
+ };
97
+ },
98
+ scaleParams: (params, sx, sy) => ({
99
+ ...params,
100
+ radius: params.radius * Math.sqrt(sx * sy)
101
+ })
102
+ });
103
+ //#endregion
104
+ exports.arc = arc;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * arc 注册项:单半径曲线(描边、可选闭合为弓形)
3
+ * @description circumscribe 返回弧 bbox 半轴(含弧跨过的 90°·k 轴向极值点),node position = AABB 中心;
4
+ * emit 出弧 path(close=false 开放描边、无 close 命令;close=true 弦闭合成弓形可填充);anchor 提供
5
+ * arc-mid(弧中点)/ start / end / center(圆心)。scaleParams 只缩 radius、不缩角度与 close。
6
+ */
7
+ export declare const arc: import('./types').ShapeDefinition;
8
+ //# sourceMappingURL=arc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arc.d.ts","sourceRoot":"","sources":["../../../src/shapes/arc.ts"],"names":[],"mappings":"AA8DA;;;;;GAKG;AACH,eAAO,MAAM,GAAG,mCA8Ed,CAAC"}
@@ -0,0 +1,13 @@
1
+ //#region src/shapes/define.ts
2
+ /**
3
+ * 注册一个参数化 shape(定义点 typed,返回擦除形态进 registry)
4
+ * @description 定义点用具体 `TParams` 拿全程类型安全(`paramsSchema` 输出与 5 个计算函数末位 `params` 同型),
5
+ * 返回擦除成 `ShapeDefinition`(所有函数收 `IRJsonObject`)供同构 registry 存放。擦除的单点 cast 封在此处,
6
+ * **形状实现者不 cast**。含函数与 `paramsSchema`,**不进 IR**——它是 `CompileOptions.shapes` 运行时注入的
7
+ * TS 对象,符合 IR 100% JSON 可序列化约束(函数只在运行时注入面,不在 IR 字段里)。
8
+ * @param def shape 定义(paramsSchema / circumscribe / boundaryPoint / anchor / edgePoint? / emit)
9
+ * @returns 擦除成 `ShapeDefinition` 的同一份 def(便于 `export const sector = defineShape({ ... })`)
10
+ */
11
+ var defineShape = (def) => def;
12
+ //#endregion
13
+ exports.defineShape = defineShape;
@@ -0,0 +1,13 @@
1
+ import { IRJsonObject } from '../ir/json';
2
+ import { ShapeDefinition, ShapeDefinitionInput } from './types';
3
+ /**
4
+ * 注册一个参数化 shape(定义点 typed,返回擦除形态进 registry)
5
+ * @description 定义点用具体 `TParams` 拿全程类型安全(`paramsSchema` 输出与 5 个计算函数末位 `params` 同型),
6
+ * 返回擦除成 `ShapeDefinition`(所有函数收 `IRJsonObject`)供同构 registry 存放。擦除的单点 cast 封在此处,
7
+ * **形状实现者不 cast**。含函数与 `paramsSchema`,**不进 IR**——它是 `CompileOptions.shapes` 运行时注入的
8
+ * TS 对象,符合 IR 100% JSON 可序列化约束(函数只在运行时注入面,不在 IR 字段里)。
9
+ * @param def shape 定义(paramsSchema / circumscribe / boundaryPoint / anchor / edgePoint? / emit)
10
+ * @returns 擦除成 `ShapeDefinition` 的同一份 def(便于 `export const sector = defineShape({ ... })`)
11
+ */
12
+ export declare const defineShape: <TParams extends IRJsonObject>(def: ShapeDefinitionInput<TParams>) => ShapeDefinition;
13
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/shapes/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,SAAS,YAAY,EACtD,KAAK,oBAAoB,CAAC,OAAO,CAAC,KACjC,eAAoD,CAAC"}