@retikz/core 0.0.1-rc.3 → 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/LICENSE +21 -21
  2. package/dist/es/compile/compile.d.ts +27 -0
  3. package/dist/es/compile/compile.d.ts.map +1 -0
  4. package/dist/es/compile/compile.js +43 -0
  5. package/dist/es/compile/index.d.ts +9 -0
  6. package/dist/es/compile/index.d.ts.map +1 -0
  7. package/dist/es/compile/node.d.ts +76 -0
  8. package/dist/es/compile/node.d.ts.map +1 -0
  9. package/dist/es/compile/node.js +240 -0
  10. package/dist/es/compile/parseTarget.d.ts +25 -0
  11. package/dist/es/compile/parseTarget.d.ts.map +1 -0
  12. package/dist/es/compile/parseTarget.js +48 -0
  13. package/dist/es/compile/path.d.ts +29 -0
  14. package/dist/es/compile/path.d.ts.map +1 -0
  15. package/dist/es/compile/path.js +298 -0
  16. package/dist/es/compile/position.d.ts +9 -0
  17. package/dist/es/compile/position.d.ts.map +1 -0
  18. package/dist/es/compile/position.js +24 -0
  19. package/dist/es/compile/precision.d.ts +5 -0
  20. package/dist/es/compile/precision.d.ts.map +1 -0
  21. package/dist/es/compile/precision.js +8 -0
  22. package/dist/es/compile/text-metrics.d.ts +32 -0
  23. package/dist/es/compile/text-metrics.d.ts.map +1 -0
  24. package/dist/es/compile/text-metrics.js +8 -0
  25. package/dist/es/compile/view-box.d.ts +8 -0
  26. package/dist/es/compile/view-box.d.ts.map +1 -0
  27. package/dist/es/compile/view-box.js +31 -0
  28. package/dist/es/geometry/circle.d.ts +32 -0
  29. package/dist/es/geometry/circle.d.ts.map +1 -0
  30. package/dist/es/geometry/circle.js +79 -0
  31. package/dist/es/geometry/diamond.d.ts +44 -0
  32. package/dist/es/geometry/diamond.d.ts.map +1 -0
  33. package/dist/es/geometry/diamond.js +87 -0
  34. package/dist/es/geometry/ellipse.d.ts +38 -0
  35. package/dist/es/geometry/ellipse.d.ts.map +1 -0
  36. package/dist/es/geometry/ellipse.js +86 -0
  37. package/dist/es/geometry/index.d.ts +7 -0
  38. package/dist/es/geometry/index.d.ts.map +1 -0
  39. package/dist/es/geometry/point.d.ts +25 -0
  40. package/dist/es/geometry/point.d.ts.map +1 -0
  41. package/dist/es/geometry/point.js +34 -0
  42. package/dist/es/geometry/polar.d.ts +44 -0
  43. package/dist/es/geometry/polar.d.ts.map +1 -0
  44. package/dist/es/geometry/polar.js +45 -0
  45. package/dist/es/geometry/rect.d.ts +59 -0
  46. package/dist/es/geometry/rect.d.ts.map +1 -0
  47. package/dist/es/geometry/rect.js +120 -0
  48. package/dist/es/index.d.ts +20 -10
  49. package/dist/es/index.d.ts.map +1 -0
  50. package/dist/es/index.js +18 -12
  51. package/dist/es/ir/index.d.ts +5 -0
  52. package/dist/es/ir/index.d.ts.map +1 -0
  53. package/dist/es/ir/node.d.ts +73 -0
  54. package/dist/es/ir/node.d.ts.map +1 -0
  55. package/dist/es/ir/node.js +41 -0
  56. package/dist/es/ir/path/arrow.d.ts +26 -0
  57. package/dist/es/ir/path/arrow.d.ts.map +1 -0
  58. package/dist/es/ir/path/arrow.js +25 -0
  59. package/dist/es/ir/path/index.d.ts +5 -0
  60. package/dist/es/ir/path/index.d.ts.map +1 -0
  61. package/dist/es/ir/path/path.d.ts +123 -0
  62. package/dist/es/ir/path/path.d.ts.map +1 -0
  63. package/dist/es/ir/path/path.js +22 -0
  64. package/dist/es/ir/path/step.d.ts +116 -0
  65. package/dist/es/ir/path/step.d.ts.map +1 -0
  66. package/dist/es/ir/path/step.js +31 -0
  67. package/dist/es/ir/path/target.d.ts +5 -0
  68. package/dist/es/ir/path/target.d.ts.map +1 -0
  69. package/dist/es/ir/path/target.js +11 -0
  70. package/dist/es/ir/position/index.d.ts +3 -0
  71. package/dist/es/ir/position/index.d.ts.map +1 -0
  72. package/dist/es/ir/position/polar-position.d.ts +9 -0
  73. package/dist/es/ir/position/polar-position.d.ts.map +1 -0
  74. package/dist/es/ir/position/polar-position.js +18 -0
  75. package/dist/es/ir/position/position.d.ts +5 -0
  76. package/dist/es/ir/position/position.d.ts.map +1 -0
  77. package/dist/es/ir/position/position.js +5 -0
  78. package/dist/es/ir/scene.d.ts +424 -0
  79. package/dist/es/ir/scene.d.ts.map +1 -0
  80. package/dist/es/ir/scene.js +14 -0
  81. package/dist/es/parsers/index.d.ts +2 -0
  82. package/dist/es/parsers/index.d.ts.map +1 -0
  83. package/dist/es/parsers/parseWay.d.ts +71 -0
  84. package/dist/es/parsers/parseWay.d.ts.map +1 -0
  85. package/dist/es/parsers/parseWay.js +92 -0
  86. package/dist/es/primitive/ellipse.d.ts +32 -0
  87. package/dist/es/primitive/ellipse.d.ts.map +1 -0
  88. package/dist/es/primitive/group.d.ts +11 -0
  89. package/dist/es/primitive/group.d.ts.map +1 -0
  90. package/dist/es/primitive/index.d.ts +8 -0
  91. package/dist/es/primitive/index.d.ts.map +1 -0
  92. package/dist/es/primitive/path.d.ts +29 -0
  93. package/dist/es/primitive/path.d.ts.map +1 -0
  94. package/dist/es/primitive/rect.d.ts +28 -0
  95. package/dist/es/primitive/rect.d.ts.map +1 -0
  96. package/dist/es/primitive/scene.d.ts +21 -0
  97. package/dist/es/primitive/scene.d.ts.map +1 -0
  98. package/dist/es/primitive/text.d.ts +32 -0
  99. package/dist/es/primitive/text.d.ts.map +1 -0
  100. package/dist/es/primitive/view-box.d.ts +12 -0
  101. package/dist/es/primitive/view-box.d.ts.map +1 -0
  102. package/dist/es/types.d.ts +3 -0
  103. package/dist/es/types.d.ts.map +1 -0
  104. package/dist/lib/compile/compile.cjs +43 -0
  105. package/dist/lib/compile/compile.d.ts +27 -0
  106. package/dist/lib/compile/compile.d.ts.map +1 -0
  107. package/dist/lib/compile/index.d.ts +9 -0
  108. package/dist/lib/compile/index.d.ts.map +1 -0
  109. package/dist/lib/compile/node.cjs +244 -0
  110. package/dist/lib/compile/node.d.ts +76 -0
  111. package/dist/lib/compile/node.d.ts.map +1 -0
  112. package/dist/lib/compile/parseTarget.cjs +48 -0
  113. package/dist/lib/compile/parseTarget.d.ts +25 -0
  114. package/dist/lib/compile/parseTarget.d.ts.map +1 -0
  115. package/dist/lib/compile/path.cjs +298 -0
  116. package/dist/lib/compile/path.d.ts +29 -0
  117. package/dist/lib/compile/path.d.ts.map +1 -0
  118. package/dist/lib/compile/position.cjs +24 -0
  119. package/dist/lib/compile/position.d.ts +9 -0
  120. package/dist/lib/compile/position.d.ts.map +1 -0
  121. package/dist/lib/compile/precision.cjs +8 -0
  122. package/dist/lib/compile/precision.d.ts +5 -0
  123. package/dist/lib/compile/precision.d.ts.map +1 -0
  124. package/dist/lib/compile/text-metrics.cjs +8 -0
  125. package/dist/lib/compile/text-metrics.d.ts +32 -0
  126. package/dist/lib/compile/text-metrics.d.ts.map +1 -0
  127. package/dist/lib/compile/view-box.cjs +31 -0
  128. package/dist/lib/compile/view-box.d.ts +8 -0
  129. package/dist/lib/compile/view-box.d.ts.map +1 -0
  130. package/dist/lib/geometry/circle.cjs +79 -0
  131. package/dist/lib/geometry/circle.d.ts +32 -0
  132. package/dist/lib/geometry/circle.d.ts.map +1 -0
  133. package/dist/lib/geometry/diamond.cjs +87 -0
  134. package/dist/lib/geometry/diamond.d.ts +44 -0
  135. package/dist/lib/geometry/diamond.d.ts.map +1 -0
  136. package/dist/lib/geometry/ellipse.cjs +86 -0
  137. package/dist/lib/geometry/ellipse.d.ts +38 -0
  138. package/dist/lib/geometry/ellipse.d.ts.map +1 -0
  139. package/dist/lib/geometry/index.d.ts +7 -0
  140. package/dist/lib/geometry/index.d.ts.map +1 -0
  141. package/dist/lib/geometry/point.cjs +34 -0
  142. package/dist/lib/geometry/point.d.ts +25 -0
  143. package/dist/lib/geometry/point.d.ts.map +1 -0
  144. package/dist/lib/geometry/polar.cjs +45 -0
  145. package/dist/lib/geometry/polar.d.ts +44 -0
  146. package/dist/lib/geometry/polar.d.ts.map +1 -0
  147. package/dist/lib/geometry/rect.cjs +121 -0
  148. package/dist/lib/geometry/rect.d.ts +59 -0
  149. package/dist/lib/geometry/rect.d.ts.map +1 -0
  150. package/dist/lib/index.cjs +43 -11
  151. package/dist/lib/index.d.ts +20 -10
  152. package/dist/lib/index.d.ts.map +1 -0
  153. package/dist/lib/ir/index.d.ts +5 -0
  154. package/dist/lib/ir/index.d.ts.map +1 -0
  155. package/dist/lib/ir/node.cjs +42 -0
  156. package/dist/lib/ir/node.d.ts +73 -0
  157. package/dist/lib/ir/node.d.ts.map +1 -0
  158. package/dist/lib/ir/path/arrow.cjs +25 -0
  159. package/dist/lib/ir/path/arrow.d.ts +26 -0
  160. package/dist/lib/ir/path/arrow.d.ts.map +1 -0
  161. package/dist/lib/ir/path/index.d.ts +5 -0
  162. package/dist/lib/ir/path/index.d.ts.map +1 -0
  163. package/dist/lib/ir/path/path.cjs +22 -0
  164. package/dist/lib/ir/path/path.d.ts +123 -0
  165. package/dist/lib/ir/path/path.d.ts.map +1 -0
  166. package/dist/lib/ir/path/step.cjs +35 -0
  167. package/dist/lib/ir/path/step.d.ts +116 -0
  168. package/dist/lib/ir/path/step.d.ts.map +1 -0
  169. package/dist/lib/ir/path/target.cjs +11 -0
  170. package/dist/lib/ir/path/target.d.ts +5 -0
  171. package/dist/lib/ir/path/target.d.ts.map +1 -0
  172. package/dist/lib/ir/position/index.d.ts +3 -0
  173. package/dist/lib/ir/position/index.d.ts.map +1 -0
  174. package/dist/lib/ir/position/polar-position.cjs +18 -0
  175. package/dist/lib/ir/position/polar-position.d.ts +9 -0
  176. package/dist/lib/ir/position/polar-position.d.ts.map +1 -0
  177. package/dist/lib/ir/position/position.cjs +5 -0
  178. package/dist/lib/ir/position/position.d.ts +5 -0
  179. package/dist/lib/ir/position/position.d.ts.map +1 -0
  180. package/dist/lib/ir/scene.cjs +16 -0
  181. package/dist/lib/ir/scene.d.ts +424 -0
  182. package/dist/lib/ir/scene.d.ts.map +1 -0
  183. package/dist/lib/parsers/index.d.ts +2 -0
  184. package/dist/lib/parsers/index.d.ts.map +1 -0
  185. package/dist/lib/parsers/parseWay.cjs +93 -0
  186. package/dist/lib/parsers/parseWay.d.ts +71 -0
  187. package/dist/lib/parsers/parseWay.d.ts.map +1 -0
  188. package/dist/lib/primitive/ellipse.d.ts +32 -0
  189. package/dist/lib/primitive/ellipse.d.ts.map +1 -0
  190. package/dist/lib/primitive/group.d.ts +11 -0
  191. package/dist/lib/primitive/group.d.ts.map +1 -0
  192. package/dist/lib/primitive/index.d.ts +8 -0
  193. package/dist/lib/primitive/index.d.ts.map +1 -0
  194. package/dist/lib/primitive/path.d.ts +29 -0
  195. package/dist/lib/primitive/path.d.ts.map +1 -0
  196. package/dist/lib/primitive/rect.d.ts +28 -0
  197. package/dist/lib/primitive/rect.d.ts.map +1 -0
  198. package/dist/lib/primitive/scene.d.ts +21 -0
  199. package/dist/lib/primitive/scene.d.ts.map +1 -0
  200. package/dist/lib/primitive/text.d.ts +32 -0
  201. package/dist/lib/primitive/text.d.ts.map +1 -0
  202. package/dist/lib/primitive/view-box.d.ts +12 -0
  203. package/dist/lib/primitive/view-box.d.ts.map +1 -0
  204. package/dist/lib/types.d.ts +3 -0
  205. package/dist/lib/types.d.ts.map +1 -0
  206. package/package.json +26 -34
  207. package/README.md +0 -2
  208. package/dist/es/components/Scope.d.ts +0 -6
  209. package/dist/es/components/Scope.js +0 -12
  210. package/dist/es/components/TikZ.d.ts +0 -9
  211. package/dist/es/components/TikZ.js +0 -12
  212. package/dist/es/components/draw/Draw.d.ts +0 -26
  213. package/dist/es/components/draw/Draw.js +0 -59
  214. package/dist/es/components/draw/InnerDraw.d.ts +0 -17
  215. package/dist/es/components/draw/InnerDraw.js +0 -52
  216. package/dist/es/components/draw/arrow/circle.d.ts +0 -7
  217. package/dist/es/components/draw/arrow/circle.js +0 -20
  218. package/dist/es/components/draw/arrow/index.d.ts +0 -9
  219. package/dist/es/components/draw/arrow/index.js +0 -13
  220. package/dist/es/components/draw/arrow/stealth.d.ts +0 -7
  221. package/dist/es/components/draw/arrow/stealth.js +0 -29
  222. package/dist/es/components/draw/arrow/types.d.ts +0 -21
  223. package/dist/es/components/draw/common.d.ts +0 -4
  224. package/dist/es/components/draw/common.js +0 -12
  225. package/dist/es/components/draw/index.d.ts +0 -3
  226. package/dist/es/components/draw/index.js +0 -4
  227. package/dist/es/components/draw/segment/Segment.d.ts +0 -12
  228. package/dist/es/components/draw/segment/Segment.js +0 -41
  229. package/dist/es/components/draw/segment/index.d.ts +0 -15
  230. package/dist/es/components/draw/segment/index.js +0 -41
  231. package/dist/es/components/draw/segment/useArrow.d.ts +0 -12
  232. package/dist/es/components/draw/segment/useArrow.js +0 -52
  233. package/dist/es/components/draw/segment/useConvertWay.d.ts +0 -14
  234. package/dist/es/components/draw/segment/useConvertWay.js +0 -117
  235. package/dist/es/components/draw/types.d.ts +0 -29
  236. package/dist/es/components/node/InnerNode.d.ts +0 -33
  237. package/dist/es/components/node/InnerNode.js +0 -88
  238. package/dist/es/components/node/Node.d.ts +0 -93
  239. package/dist/es/components/node/Node.js +0 -88
  240. package/dist/es/components/node/_hooks/useNodeConfig.d.ts +0 -3
  241. package/dist/es/components/node/_hooks/useNodeConfig.js +0 -13
  242. package/dist/es/components/node/_hooks/useNodeContent.d.ts +0 -4
  243. package/dist/es/components/node/_hooks/useNodeContent.js +0 -30
  244. package/dist/es/components/node/_hooks/useNodeShape.d.ts +0 -4
  245. package/dist/es/components/node/_hooks/useNodeShape.js +0 -34
  246. package/dist/es/components/node/index.d.ts +0 -3
  247. package/dist/es/components/node/index.js +0 -4
  248. package/dist/es/components/path-node/PathNode.d.ts +0 -48
  249. package/dist/es/components/path-node/PathNode.js +0 -76
  250. package/dist/es/components/path-node/index.d.ts +0 -3
  251. package/dist/es/components/path-node/index.js +0 -4
  252. package/dist/es/components/path-node/useAnchor.d.ts +0 -6
  253. package/dist/es/components/path-node/useAnchor.js +0 -49
  254. package/dist/es/container/Group.d.ts +0 -6
  255. package/dist/es/container/Group.js +0 -8
  256. package/dist/es/container/Surface.d.ts +0 -19
  257. package/dist/es/container/Surface.js +0 -23
  258. package/dist/es/elements/Path.d.ts +0 -4
  259. package/dist/es/elements/Path.js +0 -14
  260. package/dist/es/elements/Rect.d.ts +0 -4
  261. package/dist/es/elements/Rect.js +0 -9
  262. package/dist/es/elements/Text.d.ts +0 -18
  263. package/dist/es/elements/Text.js +0 -35
  264. package/dist/es/hooks/context/useCalculate.d.ts +0 -7
  265. package/dist/es/hooks/context/useCalculate.js +0 -9
  266. package/dist/es/hooks/context/useNodes.d.ts +0 -9
  267. package/dist/es/hooks/context/useNodes.js +0 -33
  268. package/dist/es/hooks/context/usePath.d.ts +0 -13
  269. package/dist/es/hooks/context/usePath.js +0 -20
  270. package/dist/es/hooks/context/useScope.d.ts +0 -11
  271. package/dist/es/hooks/context/useScope.js +0 -7
  272. package/dist/es/hooks/useForceUpdate.d.ts +0 -2
  273. package/dist/es/hooks/useForceUpdate.js +0 -8
  274. package/dist/es/model/component/node.d.ts +0 -45
  275. package/dist/es/model/component/node.js +0 -164
  276. package/dist/es/model/component/path.d.ts +0 -19
  277. package/dist/es/model/component/path.js +0 -47
  278. package/dist/es/model/equation/line.d.ts +0 -21
  279. package/dist/es/model/equation/line.js +0 -76
  280. package/dist/es/model/geometry/point/DescartesPoint.d.ts +0 -21
  281. package/dist/es/model/geometry/point/DescartesPoint.js +0 -50
  282. package/dist/es/model/geometry/point/PolarPoint.d.ts +0 -14
  283. package/dist/es/model/geometry/point/PolarPoint.js +0 -27
  284. package/dist/es/node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js +0 -338
  285. package/dist/es/node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js +0 -13
  286. package/dist/es/node_modules/.pnpm/d3-path@3.1.0/node_modules/d3-path/src/path.js +0 -88
  287. package/dist/es/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/array.js +0 -6
  288. package/dist/es/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.js +0 -8
  289. package/dist/es/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/linear.js +0 -39
  290. package/dist/es/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/line.js +0 -41
  291. package/dist/es/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.js +0 -19
  292. package/dist/es/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/point.js +0 -10
  293. package/dist/es/test.d.ts +0 -3
  294. package/dist/es/types/coordinate/descartes.d.ts +0 -23
  295. package/dist/es/types/coordinate/index.d.ts +0 -5
  296. package/dist/es/types/coordinate/polar.d.ts +0 -5
  297. package/dist/es/types/distance/index.d.ts +0 -8
  298. package/dist/es/types/distance/sep.d.ts +0 -9
  299. package/dist/es/types/shape/index.d.ts +0 -8
  300. package/dist/es/types/shape/index.js +0 -9
  301. package/dist/es/types/shape/rect.d.ts +0 -25
  302. package/dist/es/types/shape/rect.js +0 -30
  303. package/dist/es/types/svg/font.d.ts +0 -10
  304. package/dist/es/types/svg/stroke.d.ts +0 -10
  305. package/dist/es/types/tikz/index.d.ts +0 -6
  306. package/dist/es/utils/compare.d.ts +0 -4
  307. package/dist/es/utils/compare.js +0 -20
  308. package/dist/es/utils/css.d.ts +0 -6
  309. package/dist/es/utils/css.js +0 -26
  310. package/dist/es/utils/math.d.ts +0 -9
  311. package/dist/es/utils/math.js +0 -26
  312. package/dist/es/utils/string.d.ts +0 -7
  313. package/dist/es/utils/string.js +0 -7
  314. package/dist/es/utils/style/font.d.ts +0 -17
  315. package/dist/es/utils/style/font.js +0 -34
  316. package/dist/es/utils/style/stroke.d.ts +0 -20
  317. package/dist/es/utils/style/stroke.js +0 -42
  318. package/dist/lib/components/Scope.cjs +0 -12
  319. package/dist/lib/components/Scope.d.ts +0 -6
  320. package/dist/lib/components/TikZ.cjs +0 -12
  321. package/dist/lib/components/TikZ.d.ts +0 -9
  322. package/dist/lib/components/draw/Draw.cjs +0 -59
  323. package/dist/lib/components/draw/Draw.d.ts +0 -26
  324. package/dist/lib/components/draw/InnerDraw.cjs +0 -52
  325. package/dist/lib/components/draw/InnerDraw.d.ts +0 -17
  326. package/dist/lib/components/draw/arrow/circle.cjs +0 -20
  327. package/dist/lib/components/draw/arrow/circle.d.ts +0 -7
  328. package/dist/lib/components/draw/arrow/index.cjs +0 -13
  329. package/dist/lib/components/draw/arrow/index.d.ts +0 -9
  330. package/dist/lib/components/draw/arrow/stealth.cjs +0 -29
  331. package/dist/lib/components/draw/arrow/stealth.d.ts +0 -7
  332. package/dist/lib/components/draw/arrow/types.d.ts +0 -21
  333. package/dist/lib/components/draw/common.cjs +0 -12
  334. package/dist/lib/components/draw/common.d.ts +0 -4
  335. package/dist/lib/components/draw/index.cjs +0 -4
  336. package/dist/lib/components/draw/index.d.ts +0 -3
  337. package/dist/lib/components/draw/segment/Segment.cjs +0 -41
  338. package/dist/lib/components/draw/segment/Segment.d.ts +0 -12
  339. package/dist/lib/components/draw/segment/index.cjs +0 -41
  340. package/dist/lib/components/draw/segment/index.d.ts +0 -15
  341. package/dist/lib/components/draw/segment/useArrow.cjs +0 -52
  342. package/dist/lib/components/draw/segment/useArrow.d.ts +0 -12
  343. package/dist/lib/components/draw/segment/useConvertWay.cjs +0 -117
  344. package/dist/lib/components/draw/segment/useConvertWay.d.ts +0 -14
  345. package/dist/lib/components/draw/types.d.ts +0 -29
  346. package/dist/lib/components/node/InnerNode.cjs +0 -88
  347. package/dist/lib/components/node/InnerNode.d.ts +0 -33
  348. package/dist/lib/components/node/Node.cjs +0 -88
  349. package/dist/lib/components/node/Node.d.ts +0 -93
  350. package/dist/lib/components/node/_hooks/useNodeConfig.cjs +0 -13
  351. package/dist/lib/components/node/_hooks/useNodeConfig.d.ts +0 -3
  352. package/dist/lib/components/node/_hooks/useNodeContent.cjs +0 -30
  353. package/dist/lib/components/node/_hooks/useNodeContent.d.ts +0 -4
  354. package/dist/lib/components/node/_hooks/useNodeShape.cjs +0 -34
  355. package/dist/lib/components/node/_hooks/useNodeShape.d.ts +0 -4
  356. package/dist/lib/components/node/index.cjs +0 -4
  357. package/dist/lib/components/node/index.d.ts +0 -3
  358. package/dist/lib/components/path-node/PathNode.cjs +0 -76
  359. package/dist/lib/components/path-node/PathNode.d.ts +0 -48
  360. package/dist/lib/components/path-node/index.cjs +0 -4
  361. package/dist/lib/components/path-node/index.d.ts +0 -3
  362. package/dist/lib/components/path-node/useAnchor.cjs +0 -49
  363. package/dist/lib/components/path-node/useAnchor.d.ts +0 -6
  364. package/dist/lib/container/Group.cjs +0 -8
  365. package/dist/lib/container/Group.d.ts +0 -6
  366. package/dist/lib/container/Surface.cjs +0 -23
  367. package/dist/lib/container/Surface.d.ts +0 -19
  368. package/dist/lib/elements/Path.cjs +0 -14
  369. package/dist/lib/elements/Path.d.ts +0 -4
  370. package/dist/lib/elements/Rect.cjs +0 -9
  371. package/dist/lib/elements/Rect.d.ts +0 -4
  372. package/dist/lib/elements/Text.cjs +0 -35
  373. package/dist/lib/elements/Text.d.ts +0 -18
  374. package/dist/lib/hooks/context/useCalculate.cjs +0 -9
  375. package/dist/lib/hooks/context/useCalculate.d.ts +0 -7
  376. package/dist/lib/hooks/context/useNodes.cjs +0 -33
  377. package/dist/lib/hooks/context/useNodes.d.ts +0 -9
  378. package/dist/lib/hooks/context/usePath.cjs +0 -20
  379. package/dist/lib/hooks/context/usePath.d.ts +0 -13
  380. package/dist/lib/hooks/context/useScope.cjs +0 -7
  381. package/dist/lib/hooks/context/useScope.d.ts +0 -11
  382. package/dist/lib/hooks/useForceUpdate.cjs +0 -8
  383. package/dist/lib/hooks/useForceUpdate.d.ts +0 -2
  384. package/dist/lib/model/component/node.cjs +0 -164
  385. package/dist/lib/model/component/node.d.ts +0 -45
  386. package/dist/lib/model/component/path.cjs +0 -47
  387. package/dist/lib/model/component/path.d.ts +0 -19
  388. package/dist/lib/model/equation/line.cjs +0 -76
  389. package/dist/lib/model/equation/line.d.ts +0 -21
  390. package/dist/lib/model/geometry/point/DescartesPoint.cjs +0 -50
  391. package/dist/lib/model/geometry/point/DescartesPoint.d.ts +0 -21
  392. package/dist/lib/model/geometry/point/PolarPoint.cjs +0 -27
  393. package/dist/lib/model/geometry/point/PolarPoint.d.ts +0 -14
  394. package/dist/lib/node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.cjs +0 -338
  395. package/dist/lib/node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.cjs +0 -13
  396. package/dist/lib/node_modules/.pnpm/d3-path@3.1.0/node_modules/d3-path/src/path.cjs +0 -88
  397. package/dist/lib/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/array.cjs +0 -6
  398. package/dist/lib/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.cjs +0 -8
  399. package/dist/lib/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/linear.cjs +0 -39
  400. package/dist/lib/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/line.cjs +0 -41
  401. package/dist/lib/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.cjs +0 -19
  402. package/dist/lib/node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/point.cjs +0 -10
  403. package/dist/lib/test.d.ts +0 -3
  404. package/dist/lib/types/coordinate/descartes.d.ts +0 -23
  405. package/dist/lib/types/coordinate/index.d.ts +0 -5
  406. package/dist/lib/types/coordinate/polar.d.ts +0 -5
  407. package/dist/lib/types/distance/index.d.ts +0 -8
  408. package/dist/lib/types/distance/sep.d.ts +0 -9
  409. package/dist/lib/types/shape/index.cjs +0 -9
  410. package/dist/lib/types/shape/index.d.ts +0 -8
  411. package/dist/lib/types/shape/rect.cjs +0 -30
  412. package/dist/lib/types/shape/rect.d.ts +0 -25
  413. package/dist/lib/types/svg/font.d.ts +0 -10
  414. package/dist/lib/types/svg/stroke.d.ts +0 -10
  415. package/dist/lib/types/tikz/index.d.ts +0 -6
  416. package/dist/lib/utils/compare.cjs +0 -20
  417. package/dist/lib/utils/compare.d.ts +0 -4
  418. package/dist/lib/utils/css.cjs +0 -26
  419. package/dist/lib/utils/css.d.ts +0 -6
  420. package/dist/lib/utils/math.cjs +0 -26
  421. package/dist/lib/utils/math.d.ts +0 -9
  422. package/dist/lib/utils/string.cjs +0 -7
  423. package/dist/lib/utils/string.d.ts +0 -7
  424. package/dist/lib/utils/style/font.cjs +0 -34
  425. package/dist/lib/utils/style/font.d.ts +0 -17
  426. package/dist/lib/utils/style/stroke.cjs +0 -42
  427. package/dist/lib/utils/style/stroke.d.ts +0 -20
@@ -0,0 +1,87 @@
1
+ //#region src/geometry/diamond.ts
2
+ var localToWorld = (d, local) => {
3
+ const angle = d.rotate ?? 0;
4
+ if (angle === 0) return [d.x + local[0], d.y + local[1]];
5
+ const cos = Math.cos(angle);
6
+ const sin = Math.sin(angle);
7
+ return [d.x + local[0] * cos - local[1] * sin, d.y + local[0] * sin + local[1] * cos];
8
+ };
9
+ var worldToLocal = (d, world) => {
10
+ const tx = world[0] - d.x;
11
+ const ty = world[1] - d.y;
12
+ const angle = d.rotate ?? 0;
13
+ if (angle === 0) return [tx, ty];
14
+ const cos = Math.cos(angle);
15
+ const sin = Math.sin(angle);
16
+ return [tx * cos + ty * sin, -tx * sin + ty * cos];
17
+ };
18
+ /** 菱形相关基础工具 */
19
+ var diamond = {
20
+ /** 中心 */
21
+ center: (d) => [d.x, d.y],
22
+ /**
23
+ * 判断点是否在菱形内(含边界,考虑旋转)。
24
+ * 菱形方程:|x|/halfA + |y|/halfB ≤ 1。
25
+ */
26
+ contains: (d, p) => {
27
+ const [lx, ly] = worldToLocal(d, p);
28
+ return Math.abs(lx) / d.halfA + Math.abs(ly) / d.halfB <= 1.000000001;
29
+ },
30
+ /**
31
+ * 9 个标准 anchor 的世界坐标。
32
+ * - N/S/E/W:四个顶点
33
+ * - NE/NW/SE/SW:四条边的中点
34
+ * - center:几何中心
35
+ */
36
+ anchor: (d, name) => {
37
+ let lx = 0;
38
+ let ly = 0;
39
+ switch (name) {
40
+ case "center": break;
41
+ case "north":
42
+ ly = -d.halfB;
43
+ break;
44
+ case "south":
45
+ ly = d.halfB;
46
+ break;
47
+ case "east":
48
+ lx = d.halfA;
49
+ break;
50
+ case "west":
51
+ lx = -d.halfA;
52
+ break;
53
+ case "north-east":
54
+ lx = d.halfA / 2;
55
+ ly = -d.halfB / 2;
56
+ break;
57
+ case "north-west":
58
+ lx = -d.halfA / 2;
59
+ ly = -d.halfB / 2;
60
+ break;
61
+ case "south-east":
62
+ lx = d.halfA / 2;
63
+ ly = d.halfB / 2;
64
+ break;
65
+ case "south-west":
66
+ lx = -d.halfA / 2;
67
+ ly = d.halfB / 2;
68
+ break;
69
+ }
70
+ return localToWorld(d, [lx, ly]);
71
+ },
72
+ /**
73
+ * 从中心向 toward 方向画射线,求与菱形 4 条边之一的交点。
74
+ * 菱形方程:|x|/halfA + |y|/halfB = 1。
75
+ * 沿方向 (lx, ly) 缩放 t 倍命中:t × (|lx|/halfA + |ly|/halfB) = 1
76
+ * → t = 1 / (|lx|/halfA + |ly|/halfB)。
77
+ */
78
+ boundaryPoint: (d, toward) => {
79
+ const [lx, ly] = worldToLocal(d, toward);
80
+ const denom = Math.abs(lx) / d.halfA + Math.abs(ly) / d.halfB;
81
+ if (denom === 0) return [d.x, d.y];
82
+ const t = 1 / denom;
83
+ return localToWorld(d, [lx * t, ly * t]);
84
+ }
85
+ };
86
+ //#endregion
87
+ exports.diamond = diamond;
@@ -0,0 +1,44 @@
1
+ import { Position } from './point';
2
+ /**
3
+ * 菱形:几何中心 (x, y) + 半轴长 halfA(水平)/ halfB(垂直)+ 可选旋转。
4
+ * 4 个顶点位于 (±halfA, 0) 与 (0, ±halfB),4 条边界线把这些顶点两两相连。
5
+ */
6
+ export type Diamond = {
7
+ /** 中心横坐标 */
8
+ x: number;
9
+ /** 中心纵坐标 */
10
+ y: number;
11
+ /** 水平半轴长(中心到 east/west 顶点的距离) */
12
+ halfA: number;
13
+ /** 垂直半轴长(中心到 north/south 顶点的距离) */
14
+ halfB: number;
15
+ /** 绕几何中心旋转弧度;省略或 0 表示不旋转 */
16
+ rotate?: number;
17
+ };
18
+ /** 菱形 9 个标准 anchor 名(4 顶点 + 4 边中点 + 中心) */
19
+ export type DiamondAnchor = 'center' | 'north' | 'south' | 'east' | 'west' | 'north-east' | 'north-west' | 'south-east' | 'south-west';
20
+ /** 菱形相关基础工具 */
21
+ export declare const diamond: {
22
+ /** 中心 */
23
+ center: (d: Diamond) => Position;
24
+ /**
25
+ * 判断点是否在菱形内(含边界,考虑旋转)。
26
+ * 菱形方程:|x|/halfA + |y|/halfB ≤ 1。
27
+ */
28
+ contains: (d: Diamond, p: Position) => boolean;
29
+ /**
30
+ * 9 个标准 anchor 的世界坐标。
31
+ * - N/S/E/W:四个顶点
32
+ * - NE/NW/SE/SW:四条边的中点
33
+ * - center:几何中心
34
+ */
35
+ anchor: (d: Diamond, name: DiamondAnchor) => Position;
36
+ /**
37
+ * 从中心向 toward 方向画射线,求与菱形 4 条边之一的交点。
38
+ * 菱形方程:|x|/halfA + |y|/halfB = 1。
39
+ * 沿方向 (lx, ly) 缩放 t 倍命中:t × (|lx|/halfA + |ly|/halfB) = 1
40
+ * → t = 1 / (|lx|/halfA + |ly|/halfB)。
41
+ */
42
+ boundaryPoint: (d: Diamond, toward: Position) => Position;
43
+ };
44
+ //# sourceMappingURL=diamond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/geometry/diamond.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,YAAY;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,YAAY;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAoBjB,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B;;;OAGG;kBACW,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI5C;;;;;OAKG;gBACS,OAAO,QAAQ,aAAa,KAAG,QAAQ;IAqCnD;;;;;OAKG;uBACgB,OAAO,UAAU,QAAQ,KAAG,QAAQ;CAOxD,CAAC"}
@@ -0,0 +1,86 @@
1
+ //#region src/geometry/ellipse.ts
2
+ var SQRT_HALF = Math.SQRT1_2;
3
+ var localToWorld = (e, local) => {
4
+ const angle = e.rotate ?? 0;
5
+ if (angle === 0) return [e.x + local[0], e.y + local[1]];
6
+ const cos = Math.cos(angle);
7
+ const sin = Math.sin(angle);
8
+ return [e.x + local[0] * cos - local[1] * sin, e.y + local[0] * sin + local[1] * cos];
9
+ };
10
+ var worldToLocal = (e, world) => {
11
+ const tx = world[0] - e.x;
12
+ const ty = world[1] - e.y;
13
+ const angle = e.rotate ?? 0;
14
+ if (angle === 0) return [tx, ty];
15
+ const cos = Math.cos(angle);
16
+ const sin = Math.sin(angle);
17
+ return [tx * cos + ty * sin, -tx * sin + ty * cos];
18
+ };
19
+ /** 椭圆相关基础工具 */
20
+ var ellipse = {
21
+ /** 中心 */
22
+ center: (e) => [e.x, e.y],
23
+ /** 判断点是否在椭圆内(含边界,考虑旋转) */
24
+ contains: (e, p) => {
25
+ const [lx, ly] = worldToLocal(e, p);
26
+ return lx * lx / (e.rx * e.rx) + ly * ly / (e.ry * e.ry) <= 1;
27
+ },
28
+ /**
29
+ * 9 个标准 anchor 的世界坐标。
30
+ * 对角 anchor(NE/NW/SE/SW)取参数曲线 t=π/4 处的点:
31
+ * (rx·cos(π/4), ry·sin(π/4)) = (rx/√2, ry/√2)。
32
+ * 这与 TikZ 椭圆对角 anchor 的"参数等分"约定一致。
33
+ */
34
+ anchor: (e, name) => {
35
+ let lx = 0;
36
+ let ly = 0;
37
+ switch (name) {
38
+ case "center": break;
39
+ case "north":
40
+ ly = -e.ry;
41
+ break;
42
+ case "south":
43
+ ly = e.ry;
44
+ break;
45
+ case "east":
46
+ lx = e.rx;
47
+ break;
48
+ case "west":
49
+ lx = -e.rx;
50
+ break;
51
+ case "north-east":
52
+ lx = e.rx * SQRT_HALF;
53
+ ly = -e.ry * SQRT_HALF;
54
+ break;
55
+ case "north-west":
56
+ lx = -e.rx * SQRT_HALF;
57
+ ly = -e.ry * SQRT_HALF;
58
+ break;
59
+ case "south-east":
60
+ lx = e.rx * SQRT_HALF;
61
+ ly = e.ry * SQRT_HALF;
62
+ break;
63
+ case "south-west":
64
+ lx = -e.rx * SQRT_HALF;
65
+ ly = e.ry * SQRT_HALF;
66
+ break;
67
+ }
68
+ return localToWorld(e, [lx, ly]);
69
+ },
70
+ /**
71
+ * 从中心向 toward 方向画射线,求与椭圆的交点。
72
+ * 椭圆方程:(x/rx)² + (y/ry)² = 1。
73
+ * 沿方向 (lx, ly) 缩放 t 倍命中:t² × ((lx/rx)² + (ly/ry)²) = 1
74
+ * → t = 1 / √((lx/rx)² + (ly/ry)²)。
75
+ */
76
+ boundaryPoint: (e, toward) => {
77
+ const [lx, ly] = worldToLocal(e, toward);
78
+ if (lx === 0 && ly === 0) return [e.x, e.y];
79
+ const a = lx / e.rx;
80
+ const b = ly / e.ry;
81
+ const t = 1 / Math.sqrt(a * a + b * b);
82
+ return localToWorld(e, [lx * t, ly * t]);
83
+ }
84
+ };
85
+ //#endregion
86
+ exports.ellipse = ellipse;
@@ -0,0 +1,38 @@
1
+ import { Position } from './point';
2
+ /** 椭圆:几何中心 (x, y) + 半长轴 rx / 半短轴 ry + 可选旋转(弧度) */
3
+ export type Ellipse = {
4
+ /** 中心横坐标 */
5
+ x: number;
6
+ /** 中心纵坐标 */
7
+ y: number;
8
+ /** 半长轴(沿本地 +x 方向) */
9
+ rx: number;
10
+ /** 半短轴(沿本地 +y 方向) */
11
+ ry: number;
12
+ /** 绕几何中心旋转弧度;省略或 0 表示不旋转 */
13
+ rotate?: number;
14
+ };
15
+ /** 椭圆 9 个标准 anchor 名(含义与 RECT_ANCHORS 一致) */
16
+ export type EllipseAnchor = 'center' | 'north' | 'south' | 'east' | 'west' | 'north-east' | 'north-west' | 'south-east' | 'south-west';
17
+ /** 椭圆相关基础工具 */
18
+ export declare const ellipse: {
19
+ /** 中心 */
20
+ center: (e: Ellipse) => Position;
21
+ /** 判断点是否在椭圆内(含边界,考虑旋转) */
22
+ contains: (e: Ellipse, p: Position) => boolean;
23
+ /**
24
+ * 9 个标准 anchor 的世界坐标。
25
+ * 对角 anchor(NE/NW/SE/SW)取参数曲线 t=π/4 处的点:
26
+ * (rx·cos(π/4), ry·sin(π/4)) = (rx/√2, ry/√2)。
27
+ * 这与 TikZ 椭圆对角 anchor 的"参数等分"约定一致。
28
+ */
29
+ anchor: (e: Ellipse, name: EllipseAnchor) => Position;
30
+ /**
31
+ * 从中心向 toward 方向画射线,求与椭圆的交点。
32
+ * 椭圆方程:(x/rx)² + (y/ry)² = 1。
33
+ * 沿方向 (lx, ly) 缩放 t 倍命中:t² × ((lx/rx)² + (ly/ry)²) = 1
34
+ * → t = 1 / √((lx/rx)² + (ly/ry)²)。
35
+ */
36
+ boundaryPoint: (e: Ellipse, toward: Position) => Position;
37
+ };
38
+ //# sourceMappingURL=ellipse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/geometry/ellipse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,kDAAkD;AAClD,MAAM,MAAM,OAAO,GAAG;IACpB,YAAY;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,YAAY;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAoBjB,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,0BAA0B;kBACZ,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI5C;;;;;OAKG;gBACS,OAAO,QAAQ,aAAa,KAAG,QAAQ;IAqCnD;;;;;OAKG;uBACgB,OAAO,UAAU,QAAQ,KAAG,QAAQ;CAQxD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './point';
2
+ export * from './rect';
3
+ export * from './circle';
4
+ export * from './ellipse';
5
+ export * from './diamond';
6
+ export * from './polar';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,34 @@
1
+ const require_polar = require("./polar.cjs");
2
+ //#region src/geometry/point.ts
3
+ var RAD_TO_DEG = 180 / Math.PI;
4
+ /** 二维向量 / 坐标的基础运算工具集 */
5
+ var point = {
6
+ /** 两点相加(向量加法):a + b */
7
+ add: (a, b) => [a[0] + b[0], a[1] + b[1]],
8
+ /** 两点相减(向量减法):a - b */
9
+ sub: (a, b) => [a[0] - b[0], a[1] - b[1]],
10
+ /** 等比缩放:a * k */
11
+ scale: (a, k) => [a[0] * k, a[1] * k],
12
+ /** 判断两点坐标是否完全相等(精确比较,不带容差) */
13
+ equal: (a, b) => a[0] === b[0] && a[1] === b[1],
14
+ /** 笛卡尔点 → 极坐标(angle 落在 (-180, 180],origin 取默认 [0, 0]) */
15
+ toPolar: (p) => ({
16
+ angle: Math.atan2(p[1], p[0]) * RAD_TO_DEG,
17
+ radius: Math.hypot(p[0], p[1])
18
+ }),
19
+ /**
20
+ * 判断两个点是否相同(跨坐标系)。每个参数可以是笛卡尔 [x, y] 或 PolarPosition;
21
+ * 极坐标先转为笛卡尔,再按 precision 指定的小数位数四舍五入比较。
22
+ * `polar.equal` 委托到本方法。
23
+ * @param precision 小数点后位数;默认 2
24
+ * @throws 当 PolarPosition 的 origin 是节点 id 字符串时——字符串解析需 Scene 上下文
25
+ */
26
+ equalPolar: (a, b, precision = 2) => {
27
+ const aCart = Array.isArray(a) ? a : require_polar.polar.toPosition(a);
28
+ const bCart = Array.isArray(b) ? b : require_polar.polar.toPosition(b);
29
+ const factor = 10 ** precision;
30
+ return Math.round(aCart[0] * factor) === Math.round(bCart[0] * factor) && Math.round(aCart[1] * factor) === Math.round(bCart[1] * factor);
31
+ }
32
+ };
33
+ //#endregion
34
+ exports.point = point;
@@ -0,0 +1,25 @@
1
+ import { PolarPosition } from './polar';
2
+ /** 笛卡尔坐标点 [x, y] */
3
+ export type Position = [number, number];
4
+ /** 二维向量 / 坐标的基础运算工具集 */
5
+ export declare const point: {
6
+ /** 两点相加(向量加法):a + b */
7
+ add: (a: Position, b: Position) => Position;
8
+ /** 两点相减(向量减法):a - b */
9
+ sub: (a: Position, b: Position) => Position;
10
+ /** 等比缩放:a * k */
11
+ scale: (a: Position, k: number) => Position;
12
+ /** 判断两点坐标是否完全相等(精确比较,不带容差) */
13
+ equal: (a: Position, b: Position) => boolean;
14
+ /** 笛卡尔点 → 极坐标(angle 落在 (-180, 180],origin 取默认 [0, 0]) */
15
+ toPolar: (p: Position) => PolarPosition;
16
+ /**
17
+ * 判断两个点是否相同(跨坐标系)。每个参数可以是笛卡尔 [x, y] 或 PolarPosition;
18
+ * 极坐标先转为笛卡尔,再按 precision 指定的小数位数四舍五入比较。
19
+ * `polar.equal` 委托到本方法。
20
+ * @param precision 小数点后位数;默认 2
21
+ * @throws 当 PolarPosition 的 origin 是节点 id 字符串时——字符串解析需 Scene 上下文
22
+ */
23
+ equalPolar: (a: Position | PolarPosition, b: Position | PolarPosition, precision?: number) => boolean;
24
+ };
25
+ //# sourceMappingURL=point.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/geometry/point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAS,MAAM,SAAS,CAAC;AAEpD,oBAAoB;AACpB,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAIxC,wBAAwB;AACxB,eAAO,MAAM,KAAK;IAChB,uBAAuB;aACd,QAAQ,KAAK,QAAQ,KAAG,QAAQ;IACzC,uBAAuB;aACd,QAAQ,KAAK,QAAQ,KAAG,QAAQ;IACzC,iBAAiB;eACN,QAAQ,KAAK,MAAM,KAAG,QAAQ;IACzC,8BAA8B;eACnB,QAAQ,KAAK,QAAQ,KAAG,OAAO;IAC1C,yDAAyD;iBAC5C,QAAQ,KAAG,aAAa;IAIrC;;;;;;OAMG;oBAEE,QAAQ,GAAG,aAAa,KACxB,QAAQ,GAAG,aAAa,yBAE1B,OAAO;CASX,CAAC"}
@@ -0,0 +1,45 @@
1
+ const require_point = require("./point.cjs");
2
+ //#region src/geometry/polar.ts
3
+ var DEG_TO_RAD = Math.PI / 180;
4
+ var RAD_TO_DEG = 180 / Math.PI;
5
+ /**
6
+ * 极坐标 ↔ 笛卡尔坐标 转换工具集。
7
+ *
8
+ * 注意 polar 不参与几何计算——参与计算时一律先用 `polar.toPosition` 转成 Position。
9
+ * 详见本文件顶部的整体说明。
10
+ */
11
+ var polar = {
12
+ /**
13
+ * 极坐标 → 笛卡尔位置(递归处理 origin)。
14
+ * **限制**:origin 为字符串(节点 id)时本方法无法解析,会抛错——
15
+ * 字符串解析依赖 Scene 编译器的 nodeIndex 上下文。
16
+ */
17
+ toPosition: (p) => {
18
+ let origin;
19
+ if (!p.origin) origin = [0, 0];
20
+ else if (typeof p.origin === "string") throw new Error("polar.toPosition: cannot resolve string origin (node id) without node context; use the Scene compiler");
21
+ else if (Array.isArray(p.origin)) origin = p.origin;
22
+ else origin = polar.toPosition(p.origin);
23
+ const rad = p.angle * DEG_TO_RAD;
24
+ return [origin[0] + Math.cos(rad) * p.radius, origin[1] + Math.sin(rad) * p.radius];
25
+ },
26
+ /** 笛卡尔位置 → 极坐标(angle 落在 (-180, 180],origin 取默认 [0, 0]) */
27
+ fromPosition: (p) => ({
28
+ angle: Math.atan2(p[1], p[0]) * RAD_TO_DEG,
29
+ radius: Math.hypot(p[0], p[1])
30
+ }),
31
+ /** 在某个原点附近按极坐标偏移;返回结果点的世界笛卡尔坐标 */
32
+ offsetFrom: (origin, offset) => {
33
+ const rad = offset.angle * DEG_TO_RAD;
34
+ return [origin[0] + Math.cos(rad) * offset.radius, origin[1] + Math.sin(rad) * offset.radius];
35
+ },
36
+ /**
37
+ * 判断两个点是否相同(跨坐标系)。每个参数可以是笛卡尔 [x, y] 或 PolarPosition;
38
+ * 极坐标先转为笛卡尔,再按 precision 指定的小数位数四舍五入比较。
39
+ * 实际是 `point.equalPolar` 的别名(同一份实现,两处可发现)。
40
+ * @param precision 小数点后位数;默认 2
41
+ */
42
+ equal: (a, b, precision = 2) => require_point.point.equalPolar(a, b, precision)
43
+ };
44
+ //#endregion
45
+ exports.polar = polar;
@@ -0,0 +1,44 @@
1
+ import { Position } from './point';
2
+ /**
3
+ * 极坐标点:相对 origin 的角度 + 半径偏移。
4
+ * - 可进 IR;Scene 编译时统一解析为笛卡尔
5
+ * - 不直接参与几何计算,参与时先转为 Position(见本文件顶部说明)
6
+ * - origin 可嵌套(PolarPosition),可引用节点 id(string),可直接给坐标(Position),省略表示原点 [0, 0]
7
+ */
8
+ export type PolarPosition = {
9
+ /** 极坐标原点:节点 id / 笛卡尔位置 / 嵌套极坐标;省略表示 [0, 0] */
10
+ origin?: string | Position | PolarPosition;
11
+ /** 角度(度数,逆时针为正,与 TikZ / 数学习惯一致) */
12
+ angle: number;
13
+ /** 半径(user units,应为非负) */
14
+ radius: number;
15
+ };
16
+ /**
17
+ * 极坐标 ↔ 笛卡尔坐标 转换工具集。
18
+ *
19
+ * 注意 polar 不参与几何计算——参与计算时一律先用 `polar.toPosition` 转成 Position。
20
+ * 详见本文件顶部的整体说明。
21
+ */
22
+ export declare const polar: {
23
+ /**
24
+ * 极坐标 → 笛卡尔位置(递归处理 origin)。
25
+ * **限制**:origin 为字符串(节点 id)时本方法无法解析,会抛错——
26
+ * 字符串解析依赖 Scene 编译器的 nodeIndex 上下文。
27
+ */
28
+ toPosition: (p: PolarPosition) => Position;
29
+ /** 笛卡尔位置 → 极坐标(angle 落在 (-180, 180],origin 取默认 [0, 0]) */
30
+ fromPosition: (p: Position) => PolarPosition;
31
+ /** 在某个原点附近按极坐标偏移;返回结果点的世界笛卡尔坐标 */
32
+ offsetFrom: (origin: Position, offset: {
33
+ angle: number;
34
+ radius: number;
35
+ }) => Position;
36
+ /**
37
+ * 判断两个点是否相同(跨坐标系)。每个参数可以是笛卡尔 [x, y] 或 PolarPosition;
38
+ * 极坐标先转为笛卡尔,再按 precision 指定的小数位数四舍五入比较。
39
+ * 实际是 `point.equalPolar` 的别名(同一份实现,两处可发现)。
40
+ * @param precision 小数点后位数;默认 2
41
+ */
42
+ equal: (a: Position | PolarPosition, b: Position | PolarPosition, precision?: number) => boolean;
43
+ };
44
+ //# sourceMappingURL=polar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polar.d.ts","sourceRoot":"","sources":["../../../src/geometry/polar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAS,MAAM,SAAS,CAAC;AAkB/C;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC3C,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAKF;;;;;GAKG;AACH,eAAO,MAAM,KAAK;IAChB;;;;OAIG;oBACa,aAAa,KAAG,QAAQ;IAmBxC,0DAA0D;sBACxC,QAAQ,KAAG,aAAa;IAI1C,kCAAkC;yBAExB,QAAQ,UACR;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KACxC,QAAQ;IAOX;;;;;OAKG;eAEE,QAAQ,GAAG,aAAa,KACxB,QAAQ,GAAG,aAAa,yBAE1B,OAAO;CACX,CAAC"}
@@ -0,0 +1,121 @@
1
+ //#region src/geometry/rect.ts
2
+ /**
3
+ * 矩形 9 个标准 anchor 名常量集合,对应 TikZ 节点的 9 个标准 anchor。
4
+ * 与 `RectAnchor` 类型配对使用——值用 `RECT_ANCHORS.NORTH` 避免拼错,
5
+ * 类型位置用 `RectAnchor`。
6
+ */
7
+ var RECT_ANCHORS = {
8
+ /** 几何中心 */
9
+ CENTER: "center",
10
+ /** 上边中点 */
11
+ NORTH: "north",
12
+ /** 下边中点 */
13
+ SOUTH: "south",
14
+ /** 右边中点 */
15
+ EAST: "east",
16
+ /** 左边中点 */
17
+ WEST: "west",
18
+ /** 右上角 */
19
+ NORTH_EAST: "north-east",
20
+ /** 左上角 */
21
+ NORTH_WEST: "north-west",
22
+ /** 右下角 */
23
+ SOUTH_EAST: "south-east",
24
+ /** 左下角 */
25
+ SOUTH_WEST: "south-west"
26
+ };
27
+ /**
28
+ * 把"以矩形中心为原点的本地坐标"转换为世界坐标。
29
+ * 考虑 rect.rotate(弧度)的旋转。
30
+ */
31
+ var localToWorld = (r, local) => {
32
+ const angle = r.rotate ?? 0;
33
+ if (angle === 0) return [r.x + local[0], r.y + local[1]];
34
+ const cos = Math.cos(angle);
35
+ const sin = Math.sin(angle);
36
+ return [r.x + local[0] * cos - local[1] * sin, r.y + local[0] * sin + local[1] * cos];
37
+ };
38
+ /**
39
+ * 把世界坐标转换为"以矩形中心为原点的本地坐标"。
40
+ * 与 localToWorld 互为逆变换。
41
+ */
42
+ var worldToLocal = (r, world) => {
43
+ const tx = world[0] - r.x;
44
+ const ty = world[1] - r.y;
45
+ const angle = r.rotate ?? 0;
46
+ if (angle === 0) return [tx, ty];
47
+ const cos = Math.cos(angle);
48
+ const sin = Math.sin(angle);
49
+ return [tx * cos + ty * sin, -tx * sin + ty * cos];
50
+ };
51
+ /** 矩形相关基础工具 */
52
+ var rect = {
53
+ /** 矩形几何中心点 */
54
+ center: (r) => [r.x, r.y],
55
+ /** 判断点是否落在矩形范围内(含边界,考虑旋转) */
56
+ contains: (r, p) => {
57
+ const [lx, ly] = worldToLocal(r, p);
58
+ const halfW = r.width / 2;
59
+ const halfH = r.height / 2;
60
+ return lx >= -halfW && lx <= halfW && ly >= -halfH && ly <= halfH;
61
+ },
62
+ /**
63
+ * 取矩形 9 个标准 anchor 之一的世界坐标,考虑旋转。
64
+ * 名字与 TikZ 节点 anchor 一致(north / south / east / west / north-east / ... / center)。
65
+ */
66
+ anchor: (r, name) => {
67
+ const halfW = r.width / 2;
68
+ const halfH = r.height / 2;
69
+ let lx = 0;
70
+ let ly = 0;
71
+ switch (name) {
72
+ case "center": break;
73
+ case "north":
74
+ ly = -halfH;
75
+ break;
76
+ case "south":
77
+ ly = halfH;
78
+ break;
79
+ case "east":
80
+ lx = halfW;
81
+ break;
82
+ case "west":
83
+ lx = -halfW;
84
+ break;
85
+ case "north-east":
86
+ lx = halfW;
87
+ ly = -halfH;
88
+ break;
89
+ case "north-west":
90
+ lx = -halfW;
91
+ ly = -halfH;
92
+ break;
93
+ case "south-east":
94
+ lx = halfW;
95
+ ly = halfH;
96
+ break;
97
+ case "south-west":
98
+ lx = -halfW;
99
+ ly = halfH;
100
+ break;
101
+ }
102
+ return localToWorld(r, [lx, ly]);
103
+ },
104
+ /**
105
+ * 从矩形中心向 toward 方向画射线,求与矩形边界的交点(考虑旋转)。
106
+ * 用于把 Path 端点贴到 Node 边界(避免线段穿过节点内部)。
107
+ */
108
+ boundaryPoint: (r, toward) => {
109
+ const [localX, localY] = worldToLocal(r, toward);
110
+ if (localX === 0 && localY === 0) return [r.x, r.y];
111
+ const halfW = r.width / 2;
112
+ const halfH = r.height / 2;
113
+ const tx = localX === 0 ? Infinity : halfW / Math.abs(localX);
114
+ const ty = localY === 0 ? Infinity : halfH / Math.abs(localY);
115
+ const t = Math.min(tx, ty);
116
+ return localToWorld(r, [localX * t, localY * t]);
117
+ }
118
+ };
119
+ //#endregion
120
+ exports.RECT_ANCHORS = RECT_ANCHORS;
121
+ exports.rect = rect;
@@ -0,0 +1,59 @@
1
+ import { Position } from './point';
2
+ /** 轴对齐矩形:几何中心 (x, y) + 宽高 + 可选绕中心旋转 */
3
+ export type Rect = {
4
+ /** 矩形几何中心横坐标 */
5
+ x: number;
6
+ /** 矩形几何中心纵坐标 */
7
+ y: number;
8
+ /** 矩形宽度(user units) */
9
+ width: number;
10
+ /** 矩形高度(user units) */
11
+ height: number;
12
+ /** 绕几何中心的旋转角(弧度);省略或 0 表示不旋转 */
13
+ rotate?: number;
14
+ };
15
+ /**
16
+ * 矩形 9 个标准 anchor 名常量集合,对应 TikZ 节点的 9 个标准 anchor。
17
+ * 与 `RectAnchor` 类型配对使用——值用 `RECT_ANCHORS.NORTH` 避免拼错,
18
+ * 类型位置用 `RectAnchor`。
19
+ */
20
+ export declare const RECT_ANCHORS: {
21
+ /** 几何中心 */
22
+ readonly CENTER: "center";
23
+ /** 上边中点 */
24
+ readonly NORTH: "north";
25
+ /** 下边中点 */
26
+ readonly SOUTH: "south";
27
+ /** 右边中点 */
28
+ readonly EAST: "east";
29
+ /** 左边中点 */
30
+ readonly WEST: "west";
31
+ /** 右上角 */
32
+ readonly NORTH_EAST: "north-east";
33
+ /** 左上角 */
34
+ readonly NORTH_WEST: "north-west";
35
+ /** 右下角 */
36
+ readonly SOUTH_EAST: "south-east";
37
+ /** 左下角 */
38
+ readonly SOUTH_WEST: "south-west";
39
+ };
40
+ /** 矩形 anchor 名(与 TikZ 命名约定一致),由 `RECT_ANCHORS` 常量集合派生 */
41
+ export type RectAnchor = (typeof RECT_ANCHORS)[keyof typeof RECT_ANCHORS];
42
+ /** 矩形相关基础工具 */
43
+ export declare const rect: {
44
+ /** 矩形几何中心点 */
45
+ center: (r: Rect) => Position;
46
+ /** 判断点是否落在矩形范围内(含边界,考虑旋转) */
47
+ contains: (r: Rect, p: Position) => boolean;
48
+ /**
49
+ * 取矩形 9 个标准 anchor 之一的世界坐标,考虑旋转。
50
+ * 名字与 TikZ 节点 anchor 一致(north / south / east / west / north-east / ... / center)。
51
+ */
52
+ anchor: (r: Rect, name: RectAnchor) => Position;
53
+ /**
54
+ * 从矩形中心向 toward 方向画射线,求与矩形边界的交点(考虑旋转)。
55
+ * 用于把 Path 端点贴到 Node 边界(避免线段穿过节点内部)。
56
+ */
57
+ boundaryPoint: (r: Rect, toward: Position) => Position;
58
+ };
59
+ //# sourceMappingURL=rect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/geometry/rect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,uCAAuC;AACvC,MAAM,MAAM,IAAI,GAAG;IACjB,gBAAgB;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,gBAAgB;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY;IACvB,WAAW;;IAEX,WAAW;;IAEX,WAAW;;IAEX,WAAW;;IAEX,WAAW;;IAEX,UAAU;;IAEV,UAAU;;IAEV,UAAU;;IAEV,UAAU;;CAEF,CAAC;AAEX,yDAAyD;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAgC1E,eAAe;AACf,eAAO,MAAM,IAAI;IACf,cAAc;gBACF,IAAI,KAAG,QAAQ;IAC3B,6BAA6B;kBACf,IAAI,KAAK,QAAQ,KAAG,OAAO;IAMzC;;;OAGG;gBACS,IAAI,QAAQ,UAAU,KAAG,QAAQ;IAuC7C;;;OAGG;uBACgB,IAAI,UAAU,QAAQ,KAAG,QAAQ;CAUrD,CAAC"}