@efxlab/motion-canvas-2d 4.0.0

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 (455) hide show
  1. package/editor/index.css +40 -0
  2. package/editor/index.js +525 -0
  3. package/editor/index.js.map +1 -0
  4. package/lib/code/CodeCursor.d.ts +84 -0
  5. package/lib/code/CodeCursor.d.ts.map +1 -0
  6. package/lib/code/CodeCursor.js +315 -0
  7. package/lib/code/CodeDiffer.d.ts +28 -0
  8. package/lib/code/CodeDiffer.d.ts.map +1 -0
  9. package/lib/code/CodeDiffer.js +51 -0
  10. package/lib/code/CodeFragment.d.ts +42 -0
  11. package/lib/code/CodeFragment.d.ts.map +1 -0
  12. package/lib/code/CodeFragment.js +72 -0
  13. package/lib/code/CodeHighlighter.d.ts +69 -0
  14. package/lib/code/CodeHighlighter.d.ts.map +1 -0
  15. package/lib/code/CodeHighlighter.js +2 -0
  16. package/lib/code/CodeMetrics.d.ts +11 -0
  17. package/lib/code/CodeMetrics.d.ts.map +1 -0
  18. package/lib/code/CodeMetrics.js +29 -0
  19. package/lib/code/CodeRange.d.ts +43 -0
  20. package/lib/code/CodeRange.d.ts.map +1 -0
  21. package/lib/code/CodeRange.js +185 -0
  22. package/lib/code/CodeScope.d.ts +16 -0
  23. package/lib/code/CodeScope.d.ts.map +1 -0
  24. package/lib/code/CodeScope.js +72 -0
  25. package/lib/code/CodeSelection.d.ts +6 -0
  26. package/lib/code/CodeSelection.d.ts.map +1 -0
  27. package/lib/code/CodeSelection.js +13 -0
  28. package/lib/code/CodeSignal.d.ts +63 -0
  29. package/lib/code/CodeSignal.d.ts.map +1 -0
  30. package/lib/code/CodeSignal.js +206 -0
  31. package/lib/code/CodeTokenizer.d.ts +8 -0
  32. package/lib/code/CodeTokenizer.d.ts.map +1 -0
  33. package/lib/code/CodeTokenizer.js +50 -0
  34. package/lib/code/DefaultHighlightStyle.d.ts +3 -0
  35. package/lib/code/DefaultHighlightStyle.d.ts.map +1 -0
  36. package/lib/code/DefaultHighlightStyle.js +98 -0
  37. package/lib/code/LezerHighlighter.d.ts +22 -0
  38. package/lib/code/LezerHighlighter.d.ts.map +1 -0
  39. package/lib/code/LezerHighlighter.js +91 -0
  40. package/lib/code/diff.d.ts +31 -0
  41. package/lib/code/diff.d.ts.map +1 -0
  42. package/lib/code/diff.js +236 -0
  43. package/lib/code/extractRange.d.ts +17 -0
  44. package/lib/code/extractRange.d.ts.map +1 -0
  45. package/lib/code/extractRange.js +102 -0
  46. package/lib/code/index.d.ts +14 -0
  47. package/lib/code/index.d.ts.map +1 -0
  48. package/lib/code/index.js +14 -0
  49. package/lib/components/Bezier.d.ts +22 -0
  50. package/lib/components/Bezier.d.ts.map +1 -0
  51. package/lib/components/Bezier.js +80 -0
  52. package/lib/components/Camera.d.ts +172 -0
  53. package/lib/components/Camera.d.ts.map +1 -0
  54. package/lib/components/Camera.js +239 -0
  55. package/lib/components/Circle.d.ts +191 -0
  56. package/lib/components/Circle.d.ts.map +1 -0
  57. package/lib/components/Circle.js +178 -0
  58. package/lib/components/Code.d.ts +238 -0
  59. package/lib/components/Code.d.ts.map +1 -0
  60. package/lib/components/Code.js +331 -0
  61. package/lib/components/CodeBlock.d.ts +131 -0
  62. package/lib/components/CodeBlock.d.ts.map +1 -0
  63. package/lib/components/CodeBlock.js +462 -0
  64. package/lib/components/CubicBezier.d.ts +69 -0
  65. package/lib/components/CubicBezier.d.ts.map +1 -0
  66. package/lib/components/CubicBezier.js +81 -0
  67. package/lib/components/Curve.d.ts +202 -0
  68. package/lib/components/Curve.d.ts.map +1 -0
  69. package/lib/components/Curve.js +284 -0
  70. package/lib/components/Grid.d.ts +75 -0
  71. package/lib/components/Grid.d.ts.map +1 -0
  72. package/lib/components/Grid.js +91 -0
  73. package/lib/components/Icon.d.ts +58 -0
  74. package/lib/components/Icon.d.ts.map +1 -0
  75. package/lib/components/Icon.js +58 -0
  76. package/lib/components/Img.d.ts +116 -0
  77. package/lib/components/Img.d.ts.map +1 -0
  78. package/lib/components/Img.js +233 -0
  79. package/lib/components/Knot.d.ts +89 -0
  80. package/lib/components/Knot.d.ts.map +1 -0
  81. package/lib/components/Knot.js +68 -0
  82. package/lib/components/Latex.d.ts +49 -0
  83. package/lib/components/Latex.d.ts.map +1 -0
  84. package/lib/components/Latex.js +206 -0
  85. package/lib/components/Layout.d.ts +423 -0
  86. package/lib/components/Layout.d.ts.map +1 -0
  87. package/lib/components/Layout.js +699 -0
  88. package/lib/components/Line.d.ts +158 -0
  89. package/lib/components/Line.d.ts.map +1 -0
  90. package/lib/components/Line.js +315 -0
  91. package/lib/components/Node.d.ts +843 -0
  92. package/lib/components/Node.d.ts.map +1 -0
  93. package/lib/components/Node.js +1335 -0
  94. package/lib/components/Path.d.ts +18 -0
  95. package/lib/components/Path.d.ts.map +1 -0
  96. package/lib/components/Path.js +96 -0
  97. package/lib/components/Polygon.d.ts +157 -0
  98. package/lib/components/Polygon.d.ts.map +1 -0
  99. package/lib/components/Polygon.js +183 -0
  100. package/lib/components/QuadBezier.d.ts +61 -0
  101. package/lib/components/QuadBezier.d.ts.map +1 -0
  102. package/lib/components/QuadBezier.js +76 -0
  103. package/lib/components/Ray.d.ts +60 -0
  104. package/lib/components/Ray.d.ts.map +1 -0
  105. package/lib/components/Ray.js +95 -0
  106. package/lib/components/Rect.d.ts +112 -0
  107. package/lib/components/Rect.d.ts.map +1 -0
  108. package/lib/components/Rect.js +76 -0
  109. package/lib/components/SVG.d.ts +175 -0
  110. package/lib/components/SVG.d.ts.map +1 -0
  111. package/lib/components/SVG.js +582 -0
  112. package/lib/components/Shape.d.ts +39 -0
  113. package/lib/components/Shape.d.ts.map +1 -0
  114. package/lib/components/Shape.js +134 -0
  115. package/lib/components/Spline.d.ts +87 -0
  116. package/lib/components/Spline.d.ts.map +1 -0
  117. package/lib/components/Spline.js +230 -0
  118. package/lib/components/Txt.d.ts +51 -0
  119. package/lib/components/Txt.d.ts.map +1 -0
  120. package/lib/components/Txt.js +172 -0
  121. package/lib/components/TxtLeaf.d.ts +20 -0
  122. package/lib/components/TxtLeaf.d.ts.map +1 -0
  123. package/lib/components/TxtLeaf.js +185 -0
  124. package/lib/components/Video.d.ts +110 -0
  125. package/lib/components/Video.d.ts.map +1 -0
  126. package/lib/components/Video.js +267 -0
  127. package/lib/components/View2D.d.ts +25 -0
  128. package/lib/components/View2D.d.ts.map +1 -0
  129. package/lib/components/View2D.js +85 -0
  130. package/lib/components/index.d.ts +27 -0
  131. package/lib/components/index.d.ts.map +1 -0
  132. package/lib/components/index.js +27 -0
  133. package/lib/components/types.d.ts +17 -0
  134. package/lib/components/types.d.ts.map +1 -0
  135. package/lib/components/types.js +2 -0
  136. package/lib/curves/ArcSegment.d.ts +26 -0
  137. package/lib/curves/ArcSegment.d.ts.map +1 -0
  138. package/lib/curves/ArcSegment.js +116 -0
  139. package/lib/curves/CircleSegment.d.ts +18 -0
  140. package/lib/curves/CircleSegment.d.ts.map +1 -0
  141. package/lib/curves/CircleSegment.js +60 -0
  142. package/lib/curves/CubicBezierSegment.d.ts +18 -0
  143. package/lib/curves/CubicBezierSegment.d.ts.map +1 -0
  144. package/lib/curves/CubicBezierSegment.js +60 -0
  145. package/lib/curves/CurveDrawingInfo.d.ts +11 -0
  146. package/lib/curves/CurveDrawingInfo.d.ts.map +1 -0
  147. package/lib/curves/CurveDrawingInfo.js +2 -0
  148. package/lib/curves/CurvePoint.d.ts +15 -0
  149. package/lib/curves/CurvePoint.d.ts.map +1 -0
  150. package/lib/curves/CurvePoint.js +2 -0
  151. package/lib/curves/CurveProfile.d.ts +7 -0
  152. package/lib/curves/CurveProfile.d.ts.map +1 -0
  153. package/lib/curves/CurveProfile.js +2 -0
  154. package/lib/curves/KnotInfo.d.ts +12 -0
  155. package/lib/curves/KnotInfo.d.ts.map +1 -0
  156. package/lib/curves/KnotInfo.js +2 -0
  157. package/lib/curves/LineSegment.d.ts +16 -0
  158. package/lib/curves/LineSegment.d.ts.map +1 -0
  159. package/lib/curves/LineSegment.js +51 -0
  160. package/lib/curves/Polynomial.d.ts +118 -0
  161. package/lib/curves/Polynomial.d.ts.map +1 -0
  162. package/lib/curves/Polynomial.js +263 -0
  163. package/lib/curves/Polynomial2D.d.ts +22 -0
  164. package/lib/curves/Polynomial2D.d.ts.map +1 -0
  165. package/lib/curves/Polynomial2D.js +51 -0
  166. package/lib/curves/PolynomialSegment.d.ts +39 -0
  167. package/lib/curves/PolynomialSegment.d.ts.map +1 -0
  168. package/lib/curves/PolynomialSegment.js +88 -0
  169. package/lib/curves/QuadBezierSegment.d.ts +17 -0
  170. package/lib/curves/QuadBezierSegment.d.ts.map +1 -0
  171. package/lib/curves/QuadBezierSegment.js +53 -0
  172. package/lib/curves/Segment.d.ts +9 -0
  173. package/lib/curves/Segment.d.ts.map +1 -0
  174. package/lib/curves/Segment.js +3 -0
  175. package/lib/curves/UniformPolynomialCurveSampler.d.ts +43 -0
  176. package/lib/curves/UniformPolynomialCurveSampler.d.ts.map +1 -0
  177. package/lib/curves/UniformPolynomialCurveSampler.js +74 -0
  178. package/lib/curves/createCurveProfileLerp.d.ts +32 -0
  179. package/lib/curves/createCurveProfileLerp.d.ts.map +1 -0
  180. package/lib/curves/createCurveProfileLerp.js +351 -0
  181. package/lib/curves/getBezierSplineProfile.d.ts +12 -0
  182. package/lib/curves/getBezierSplineProfile.d.ts.map +1 -0
  183. package/lib/curves/getBezierSplineProfile.js +140 -0
  184. package/lib/curves/getCircleProfile.d.ts +4 -0
  185. package/lib/curves/getCircleProfile.d.ts.map +1 -0
  186. package/lib/curves/getCircleProfile.js +44 -0
  187. package/lib/curves/getPathProfile.d.ts +3 -0
  188. package/lib/curves/getPathProfile.d.ts.map +1 -0
  189. package/lib/curves/getPathProfile.js +128 -0
  190. package/lib/curves/getPointAtDistance.d.ts +4 -0
  191. package/lib/curves/getPointAtDistance.d.ts.map +1 -0
  192. package/lib/curves/getPointAtDistance.js +15 -0
  193. package/lib/curves/getPolylineProfile.d.ts +4 -0
  194. package/lib/curves/getPolylineProfile.d.ts.map +1 -0
  195. package/lib/curves/getPolylineProfile.js +58 -0
  196. package/lib/curves/getRectProfile.d.ts +4 -0
  197. package/lib/curves/getRectProfile.d.ts.map +1 -0
  198. package/lib/curves/getRectProfile.js +57 -0
  199. package/lib/curves/index.d.ts +17 -0
  200. package/lib/curves/index.d.ts.map +1 -0
  201. package/lib/curves/index.js +17 -0
  202. package/lib/decorators/canvasStyleSignal.d.ts +5 -0
  203. package/lib/decorators/canvasStyleSignal.d.ts.map +1 -0
  204. package/lib/decorators/canvasStyleSignal.js +12 -0
  205. package/lib/decorators/colorSignal.d.ts +2 -0
  206. package/lib/decorators/colorSignal.d.ts.map +1 -0
  207. package/lib/decorators/colorSignal.js +9 -0
  208. package/lib/decorators/compound.d.ts +27 -0
  209. package/lib/decorators/compound.d.ts.map +1 -0
  210. package/lib/decorators/compound.js +49 -0
  211. package/lib/decorators/computed.d.ts +9 -0
  212. package/lib/decorators/computed.d.ts.map +1 -0
  213. package/lib/decorators/computed.js +18 -0
  214. package/lib/decorators/defaultStyle.d.ts +2 -0
  215. package/lib/decorators/defaultStyle.d.ts.map +1 -0
  216. package/lib/decorators/defaultStyle.js +13 -0
  217. package/lib/decorators/filtersSignal.d.ts +11 -0
  218. package/lib/decorators/filtersSignal.d.ts.map +1 -0
  219. package/lib/decorators/filtersSignal.js +73 -0
  220. package/lib/decorators/index.d.ts +11 -0
  221. package/lib/decorators/index.d.ts.map +1 -0
  222. package/lib/decorators/index.js +11 -0
  223. package/lib/decorators/initializers.d.ts +4 -0
  224. package/lib/decorators/initializers.d.ts.map +1 -0
  225. package/lib/decorators/initializers.js +27 -0
  226. package/lib/decorators/nodeName.d.ts +9 -0
  227. package/lib/decorators/nodeName.d.ts.map +1 -0
  228. package/lib/decorators/nodeName.js +13 -0
  229. package/lib/decorators/signal.d.ts +183 -0
  230. package/lib/decorators/signal.d.ts.map +1 -0
  231. package/lib/decorators/signal.js +285 -0
  232. package/lib/decorators/spacingSignal.d.ts +2 -0
  233. package/lib/decorators/spacingSignal.d.ts.map +1 -0
  234. package/lib/decorators/spacingSignal.js +15 -0
  235. package/lib/decorators/vector2Signal.d.ts +8 -0
  236. package/lib/decorators/vector2Signal.d.ts.map +1 -0
  237. package/lib/decorators/vector2Signal.js +15 -0
  238. package/lib/index.d.ts +9 -0
  239. package/lib/index.d.ts.map +1 -0
  240. package/lib/index.js +9 -0
  241. package/lib/jsx-dev-runtime.d.ts +3 -0
  242. package/lib/jsx-dev-runtime.d.ts.map +1 -0
  243. package/lib/jsx-dev-runtime.js +3 -0
  244. package/lib/jsx-runtime.d.ts +12 -0
  245. package/lib/jsx-runtime.d.ts.map +1 -0
  246. package/lib/jsx-runtime.js +23 -0
  247. package/lib/partials/Filter.d.ts +82 -0
  248. package/lib/partials/Filter.d.ts.map +1 -0
  249. package/lib/partials/Filter.js +137 -0
  250. package/lib/partials/Gradient.d.ts +31 -0
  251. package/lib/partials/Gradient.d.ts.map +1 -0
  252. package/lib/partials/Gradient.js +63 -0
  253. package/lib/partials/Pattern.d.ts +13 -0
  254. package/lib/partials/Pattern.d.ts.map +1 -0
  255. package/lib/partials/Pattern.js +27 -0
  256. package/lib/partials/ShaderConfig.d.ts +81 -0
  257. package/lib/partials/ShaderConfig.d.ts.map +1 -0
  258. package/lib/partials/ShaderConfig.js +25 -0
  259. package/lib/partials/index.d.ts +5 -0
  260. package/lib/partials/index.d.ts.map +1 -0
  261. package/lib/partials/index.js +5 -0
  262. package/lib/partials/types.d.ts +35 -0
  263. package/lib/partials/types.d.ts.map +1 -0
  264. package/lib/partials/types.js +2 -0
  265. package/lib/scenes/Scene2D.d.ts +23 -0
  266. package/lib/scenes/Scene2D.d.ts.map +1 -0
  267. package/lib/scenes/Scene2D.js +152 -0
  268. package/lib/scenes/index.d.ts +4 -0
  269. package/lib/scenes/index.d.ts.map +1 -0
  270. package/lib/scenes/index.js +4 -0
  271. package/lib/scenes/makeScene2D.d.ts +5 -0
  272. package/lib/scenes/makeScene2D.d.ts.map +1 -0
  273. package/lib/scenes/makeScene2D.js +12 -0
  274. package/lib/scenes/useScene2D.d.ts +3 -0
  275. package/lib/scenes/useScene2D.d.ts.map +1 -0
  276. package/lib/scenes/useScene2D.js +5 -0
  277. package/lib/tsconfig.build.tsbuildinfo +1 -0
  278. package/lib/tsconfig.tsbuildinfo +1 -0
  279. package/lib/utils/CanvasUtils.d.ts +21 -0
  280. package/lib/utils/CanvasUtils.d.ts.map +1 -0
  281. package/lib/utils/CanvasUtils.js +138 -0
  282. package/lib/utils/diff.d.ts +31 -0
  283. package/lib/utils/diff.d.ts.map +1 -0
  284. package/lib/utils/diff.js +97 -0
  285. package/lib/utils/index.d.ts +4 -0
  286. package/lib/utils/index.d.ts.map +1 -0
  287. package/lib/utils/index.js +4 -0
  288. package/lib/utils/is.d.ts +8 -0
  289. package/lib/utils/is.d.ts.map +1 -0
  290. package/lib/utils/is.js +10 -0
  291. package/lib/utils/makeSignalExtensions.d.ts +4 -0
  292. package/lib/utils/makeSignalExtensions.d.ts.map +1 -0
  293. package/lib/utils/makeSignalExtensions.js +20 -0
  294. package/lib/utils/withDefaults.d.ts +20 -0
  295. package/lib/utils/withDefaults.d.ts.map +1 -0
  296. package/lib/utils/withDefaults.js +23 -0
  297. package/package.json +54 -0
  298. package/src/editor/NodeInspectorConfig.tsx +76 -0
  299. package/src/editor/PreviewOverlayConfig.tsx +65 -0
  300. package/src/editor/Provider.tsx +109 -0
  301. package/src/editor/SceneGraphTabConfig.tsx +87 -0
  302. package/src/editor/icons/CircleIcon.tsx +7 -0
  303. package/src/editor/icons/CodeBlockIcon.tsx +8 -0
  304. package/src/editor/icons/CurveIcon.tsx +7 -0
  305. package/src/editor/icons/GridIcon.tsx +7 -0
  306. package/src/editor/icons/IconMap.ts +35 -0
  307. package/src/editor/icons/ImgIcon.tsx +8 -0
  308. package/src/editor/icons/LayoutIcon.tsx +9 -0
  309. package/src/editor/icons/LineIcon.tsx +7 -0
  310. package/src/editor/icons/NodeIcon.tsx +7 -0
  311. package/src/editor/icons/RayIcon.tsx +7 -0
  312. package/src/editor/icons/RectIcon.tsx +7 -0
  313. package/src/editor/icons/ShapeIcon.tsx +7 -0
  314. package/src/editor/icons/TxtIcon.tsx +8 -0
  315. package/src/editor/icons/VideoIcon.tsx +7 -0
  316. package/src/editor/icons/View2DIcon.tsx +10 -0
  317. package/src/editor/index.css +0 -0
  318. package/src/editor/index.ts +19 -0
  319. package/src/editor/shortcuts.ts +27 -0
  320. package/src/editor/tree/DetachedRoot.tsx +27 -0
  321. package/src/editor/tree/NodeElement.tsx +72 -0
  322. package/src/editor/tree/TreeElement.tsx +70 -0
  323. package/src/editor/tree/TreeRoot.tsx +10 -0
  324. package/src/editor/tree/ViewRoot.tsx +20 -0
  325. package/src/editor/tree/index.module.scss +45 -0
  326. package/src/editor/tree/index.ts +4 -0
  327. package/src/editor/tree/navigation.ts +145 -0
  328. package/src/editor/tsconfig.build.json +5 -0
  329. package/src/editor/tsconfig.json +12 -0
  330. package/src/editor/tsdoc.json +4 -0
  331. package/src/editor/utils/SignalSet.ts +37 -0
  332. package/src/editor/utils/index.ts +1 -0
  333. package/src/editor/vite-env.d.ts +1 -0
  334. package/src/lib/code/CodeCursor.ts +468 -0
  335. package/src/lib/code/CodeDiffer.ts +77 -0
  336. package/src/lib/code/CodeFragment.ts +96 -0
  337. package/src/lib/code/CodeHighlighter.ts +73 -0
  338. package/src/lib/code/CodeMetrics.ts +47 -0
  339. package/src/lib/code/CodeRange.test.ts +113 -0
  340. package/src/lib/code/CodeRange.ts +222 -0
  341. package/src/lib/code/CodeScope.ts +100 -0
  342. package/src/lib/code/CodeSelection.ts +28 -0
  343. package/src/lib/code/CodeSignal.ts +348 -0
  344. package/src/lib/code/CodeTokenizer.ts +54 -0
  345. package/src/lib/code/DefaultHighlightStyle.ts +98 -0
  346. package/src/lib/code/LezerHighlighter.ts +113 -0
  347. package/src/lib/code/diff.test.ts +311 -0
  348. package/src/lib/code/diff.ts +319 -0
  349. package/src/lib/code/extractRange.ts +125 -0
  350. package/src/lib/code/index.ts +13 -0
  351. package/src/lib/components/Bezier.ts +103 -0
  352. package/src/lib/components/Camera.ts +359 -0
  353. package/src/lib/components/Circle.ts +269 -0
  354. package/src/lib/components/Code.ts +532 -0
  355. package/src/lib/components/CodeBlock.ts +581 -0
  356. package/src/lib/components/CubicBezier.ts +115 -0
  357. package/src/lib/components/Curve.ts +455 -0
  358. package/src/lib/components/Grid.ts +134 -0
  359. package/src/lib/components/Icon.ts +95 -0
  360. package/src/lib/components/Img.ts +305 -0
  361. package/src/lib/components/Knot.ts +156 -0
  362. package/src/lib/components/Latex.ts +249 -0
  363. package/src/lib/components/Layout.ts +1071 -0
  364. package/src/lib/components/Line.ts +394 -0
  365. package/src/lib/components/Node.ts +1949 -0
  366. package/src/lib/components/Path.ts +132 -0
  367. package/src/lib/components/Polygon.ts +238 -0
  368. package/src/lib/components/QuadBezier.ts +103 -0
  369. package/src/lib/components/Ray.ts +126 -0
  370. package/src/lib/components/Rect.ts +186 -0
  371. package/src/lib/components/SVG.ts +788 -0
  372. package/src/lib/components/Shape.ts +146 -0
  373. package/src/lib/components/Spline.ts +318 -0
  374. package/src/lib/components/Txt.test.tsx +81 -0
  375. package/src/lib/components/Txt.ts +204 -0
  376. package/src/lib/components/TxtLeaf.ts +210 -0
  377. package/src/lib/components/Video.ts +368 -0
  378. package/src/lib/components/View2D.ts +85 -0
  379. package/src/lib/components/__logs__/image-without-source.md +17 -0
  380. package/src/lib/components/__logs__/line-without-points.md +30 -0
  381. package/src/lib/components/__logs__/reactive-playback-rate.md +21 -0
  382. package/src/lib/components/__logs__/spline-with-insufficient-knots.md +24 -0
  383. package/src/lib/components/__tests__/children.test.tsx +142 -0
  384. package/src/lib/components/__tests__/clone.test.tsx +126 -0
  385. package/src/lib/components/__tests__/generatorTest.ts +27 -0
  386. package/src/lib/components/__tests__/mockScene2D.ts +50 -0
  387. package/src/lib/components/__tests__/query.test.tsx +122 -0
  388. package/src/lib/components/__tests__/state.test.tsx +60 -0
  389. package/src/lib/components/index.ts +26 -0
  390. package/src/lib/components/types.ts +35 -0
  391. package/src/lib/curves/ArcSegment.ts +155 -0
  392. package/src/lib/curves/CircleSegment.ts +77 -0
  393. package/src/lib/curves/CubicBezierSegment.ts +78 -0
  394. package/src/lib/curves/CurveDrawingInfo.ts +11 -0
  395. package/src/lib/curves/CurvePoint.ts +15 -0
  396. package/src/lib/curves/CurveProfile.ts +7 -0
  397. package/src/lib/curves/KnotInfo.ts +10 -0
  398. package/src/lib/curves/LineSegment.ts +62 -0
  399. package/src/lib/curves/Polynomial.ts +355 -0
  400. package/src/lib/curves/Polynomial2D.ts +62 -0
  401. package/src/lib/curves/PolynomialSegment.ts +124 -0
  402. package/src/lib/curves/QuadBezierSegment.ts +64 -0
  403. package/src/lib/curves/Segment.ts +17 -0
  404. package/src/lib/curves/UniformPolynomialCurveSampler.ts +93 -0
  405. package/src/lib/curves/createCurveProfileLerp.ts +471 -0
  406. package/src/lib/curves/getBezierSplineProfile.ts +227 -0
  407. package/src/lib/curves/getCircleProfile.ts +86 -0
  408. package/src/lib/curves/getPathProfile.ts +177 -0
  409. package/src/lib/curves/getPointAtDistance.ts +21 -0
  410. package/src/lib/curves/getPolylineProfile.test.ts +21 -0
  411. package/src/lib/curves/getPolylineProfile.ts +88 -0
  412. package/src/lib/curves/getRectProfile.ts +138 -0
  413. package/src/lib/curves/index.ts +16 -0
  414. package/src/lib/decorators/canvasStyleSignal.ts +15 -0
  415. package/src/lib/decorators/colorSignal.ts +9 -0
  416. package/src/lib/decorators/compound.ts +85 -0
  417. package/src/lib/decorators/computed.ts +18 -0
  418. package/src/lib/decorators/defaultStyle.ts +15 -0
  419. package/src/lib/decorators/filtersSignal.ts +133 -0
  420. package/src/lib/decorators/index.ts +10 -0
  421. package/src/lib/decorators/initializers.ts +34 -0
  422. package/src/lib/decorators/nodeName.ts +13 -0
  423. package/src/lib/decorators/signal.test.ts +89 -0
  424. package/src/lib/decorators/signal.ts +348 -0
  425. package/src/lib/decorators/spacingSignal.ts +15 -0
  426. package/src/lib/decorators/vector2Signal.ts +35 -0
  427. package/src/lib/globals.d.ts +3 -0
  428. package/src/lib/index.ts +8 -0
  429. package/src/lib/jsx-dev-runtime.ts +2 -0
  430. package/src/lib/jsx-runtime.ts +45 -0
  431. package/src/lib/parse-svg-path.d.ts +14 -0
  432. package/src/lib/partials/Filter.ts +185 -0
  433. package/src/lib/partials/Gradient.ts +103 -0
  434. package/src/lib/partials/Pattern.ts +35 -0
  435. package/src/lib/partials/ShaderConfig.ts +122 -0
  436. package/src/lib/partials/index.ts +4 -0
  437. package/src/lib/partials/types.ts +58 -0
  438. package/src/lib/scenes/Scene2D.ts +195 -0
  439. package/src/lib/scenes/index.ts +3 -0
  440. package/src/lib/scenes/makeScene2D.ts +19 -0
  441. package/src/lib/scenes/useScene2D.ts +6 -0
  442. package/src/lib/tsconfig.build.json +12 -0
  443. package/src/lib/tsconfig.json +14 -0
  444. package/src/lib/tsdoc.json +4 -0
  445. package/src/lib/utils/CanvasUtils.ts +306 -0
  446. package/src/lib/utils/diff.test.ts +453 -0
  447. package/src/lib/utils/diff.ts +148 -0
  448. package/src/lib/utils/index.ts +3 -0
  449. package/src/lib/utils/is.ts +11 -0
  450. package/src/lib/utils/makeSignalExtensions.ts +29 -0
  451. package/src/lib/utils/withDefaults.tsx +26 -0
  452. package/src/tsconfig.base.json +18 -0
  453. package/src/tsconfig.build.json +8 -0
  454. package/src/tsconfig.json +5 -0
  455. package/tsconfig.project.json +7 -0
@@ -0,0 +1,172 @@
1
+ import { InterpolationFunction, PossibleVector2, Reference, SignalValue, SimpleSignal, ThreadGenerator, TimingFunction, Vector2 } from '@efxlab/motion-canvas-core';
2
+ import { Curve } from './Curve';
3
+ import { Node, NodeProps } from './Node';
4
+ import { Rect, RectProps } from './Rect';
5
+ export interface CameraProps extends NodeProps {
6
+ /**
7
+ * {@inheritDoc Camera.scene}
8
+ */
9
+ scene?: Node;
10
+ /**
11
+ * {@inheritDoc Camera.zoom}
12
+ */
13
+ zoom?: SignalValue<number>;
14
+ }
15
+ /**
16
+ * A node representing an orthographic camera.
17
+ *
18
+ * @preview
19
+ * ```tsx editor
20
+ * import {Camera, Circle, makeScene2D, Rect} from '@efxlab/motion-canvas-2d';
21
+ * import {all, createRef} from '@efxlab/motion-canvas-core';
22
+ *
23
+ * export default makeScene2D(function* (view) {
24
+ * const camera = createRef<Camera>();
25
+ * const rect = createRef<Rect>();
26
+ * const circle = createRef<Circle>();
27
+ *
28
+ * view.add(
29
+ * <>
30
+ * <Camera ref={camera}>
31
+ * <Rect
32
+ * ref={rect}
33
+ * fill={'lightseagreen'}
34
+ * size={100}
35
+ * position={[100, -50]}
36
+ * />
37
+ * <Circle
38
+ * ref={circle}
39
+ * fill={'hotpink'}
40
+ * size={120}
41
+ * position={[-100, 50]}
42
+ * />
43
+ * </Camera>
44
+ * </>,
45
+ * );
46
+ *
47
+ * yield* all(
48
+ * camera().centerOn(rect(), 3),
49
+ * camera().rotation(180, 3),
50
+ * camera().zoom(1.8, 3),
51
+ * );
52
+ * yield* camera().centerOn(circle(), 2);
53
+ * yield* camera().reset(1);
54
+ * });
55
+ * ```
56
+ */
57
+ export declare class Camera extends Node {
58
+ /**
59
+ * The scene node that the camera is rendering.
60
+ */
61
+ readonly scene: SimpleSignal<Node, this>;
62
+ constructor({ children, ...props }: CameraProps);
63
+ /**
64
+ * The zoom level of the camera.
65
+ *
66
+ * @defaultValue 1
67
+ */
68
+ readonly zoom: SimpleSignal<number, this>;
69
+ protected getZoom(): number;
70
+ protected setZoom(value: SignalValue<number>): void;
71
+ protected getDefaultZoom(): SignalValue<number> | undefined;
72
+ protected tweenZoom(value: SignalValue<number>, duration: number, timingFunction: TimingFunction, interpolationFunction: InterpolationFunction<number>): ThreadGenerator;
73
+ /**
74
+ * Resets the camera's position, rotation and zoom level to their original
75
+ * values.
76
+ *
77
+ * @param duration - The duration of the tween.
78
+ * @param timingFunction - The timing function to use for the tween.
79
+ */
80
+ reset(duration: number, timingFunction?: TimingFunction): ThreadGenerator;
81
+ /**
82
+ * Centers the camera on the specified position without changing the zoom
83
+ * level.
84
+ *
85
+ * @param position - The position to center the camera on.
86
+ * @param duration - The duration of the tween.
87
+ * @param timingFunction - The timing function to use for the tween.
88
+ * @param interpolationFunction - The interpolation function to use for the
89
+ * tween.
90
+ */
91
+ centerOn(position: PossibleVector2, duration: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction<Vector2>): ThreadGenerator;
92
+ /**
93
+ * Centers the camera on the specified node without changing the zoom level.
94
+ *
95
+ * @param node - The node to center the camera on.
96
+ * @param duration - The duration of the tween.
97
+ * @param timingFunction - The timing function to use for the tween.
98
+ * @param interpolationFunction - The interpolation function to use for the
99
+ * tween.
100
+ */
101
+ centerOn(node: Node, duration: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction<Vector2>): ThreadGenerator;
102
+ /**
103
+ * Makes the camera follow a path specified by the provided curve.
104
+ *
105
+ * @remarks
106
+ * This will not change the orientation of the camera. To make the camera
107
+ * orient itself along the curve, use {@link followCurveWithRotation} or
108
+ * {@link followCurveWithRotationReverse}.
109
+ *
110
+ * If you want to follow the curve in reverse, use {@link followCurveReverse}.
111
+ *
112
+ * @param curve - The curve to follow.
113
+ * @param duration - The duration of the tween.
114
+ * @param timing - The timing function to use for the tween.
115
+ */
116
+ followCurve(curve: Curve, duration: number, timing?: TimingFunction): ThreadGenerator;
117
+ /**
118
+ * Makes the camera follow a path specified by the provided curve in reverse.
119
+ *
120
+ * @remarks
121
+ * This will not change the orientation of the camera. To make the camera
122
+ * orient itself along the curve, use {@link followCurveWithRotation} or
123
+ * {@link followCurveWithRotationReverse}.
124
+ *
125
+ * If you want to follow the curve forward, use {@link followCurve}.
126
+ *
127
+ * @param curve - The curve to follow.
128
+ * @param duration - The duration of the tween.
129
+ * @param timing - The timing function to use for the tween.
130
+ */
131
+ followCurveReverse(curve: Curve, duration: number, timing?: TimingFunction): Generator<void | ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
132
+ /**
133
+ * Makes the camera follow a path specified by the provided curve while
134
+ * pointing the camera the direction of the tangent.
135
+ *
136
+ * @remarks
137
+ * To make the camera follow the curve without changing its orientation, use
138
+ * {@link followCurve} or {@link followCurveReverse}.
139
+ *
140
+ * If you want to follow the curve in reverse, use
141
+ * {@link followCurveWithRotationReverse}.
142
+ *
143
+ * @param curve - The curve to follow.
144
+ * @param duration - The duration of the tween.
145
+ * @param timing - The timing function to use for the tween.
146
+ */
147
+ followCurveWithRotation(curve: Curve, duration: number, timing?: TimingFunction): Generator<void | ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
148
+ /**
149
+ * Makes the camera follow a path specified by the provided curve in reverse
150
+ * while pointing the camera the direction of the tangent.
151
+ *
152
+ * @remarks
153
+ * To make the camera follow the curve without changing its orientation, use
154
+ * {@link followCurve} or {@link followCurveReverse}.
155
+ *
156
+ * If you want to follow the curve forward, use
157
+ * {@link followCurveWithRotation}.
158
+ *
159
+ * @param curve - The curve to follow.
160
+ * @param duration - The duration of the tween.
161
+ * @param timing - The timing function to use for the tween.
162
+ */
163
+ followCurveWithRotationReverse(curve: Curve, duration: number, timing?: TimingFunction): Generator<void | ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
164
+ protected transformContext(context: CanvasRenderingContext2D): void;
165
+ hit(position: Vector2): Node | null;
166
+ protected drawChildren(context: CanvasRenderingContext2D): void;
167
+ static Stage({ children, cameraRef, scene, ...props }: RectProps & {
168
+ cameraRef?: Reference<Camera>;
169
+ scene?: Node;
170
+ }): Rect;
171
+ }
172
+ //# sourceMappingURL=Camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../src/lib/components/Camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAErB,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,eAAe,EACf,cAAc,EAGd,OAAO,EACR,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AAEvC,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,MAAO,SAAQ,IAAI;IAC9B;;OAEG;IACH,SACwB,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAErC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,WAAW;IAYpD;;;;OAIG;IACH,SAEwB,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzD,SAAS,CAAC,OAAO,IAAI,MAAM;IAI3B,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;IAI5C,SAAS,CAAC,cAAc;IAIxB,SAAS,CAAE,SAAS,CAClB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACnD,eAAe;IASlB;;;;;;OAMG;IAEK,KAAK,CACX,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,cAA+B,GAC9C,eAAe;IAQlB;;;;;;;;;OASG;IACI,QAAQ,CACb,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,GACrD,eAAe;IAClB;;;;;;;;OAQG;IACI,QAAQ,CACb,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,GACrD,eAAe;IAiBlB;;;;;;;;;;;;;OAaG;IAEK,WAAW,CACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B,GACtC,eAAe;IAWlB;;;;;;;;;;;;;OAaG;IAEK,kBAAkB,CACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B;IAYzC;;;;;;;;;;;;;;OAcG;IAEK,uBAAuB,CAC7B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B;IAazC;;;;;;;;;;;;;;OAcG;IAEK,8BAA8B,CACpC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B;cAatB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB;IAYrD,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;cAKhC,YAAY,CAAC,OAAO,EAAE,wBAAwB;WAKnD,KAAK,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;QAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,CAAA;KAAC;CAW7D"}
@@ -0,0 +1,239 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { all, DEFAULT, easeInOutCubic, modify, threadable, tween, unwrap, Vector2, } from '@efxlab/motion-canvas-core';
8
+ import { cloneable, signal } from '../decorators';
9
+ import { Node } from './Node';
10
+ import { Rect } from './Rect';
11
+ /**
12
+ * A node representing an orthographic camera.
13
+ *
14
+ * @preview
15
+ * ```tsx editor
16
+ * import {Camera, Circle, makeScene2D, Rect} from '@efxlab/motion-canvas-2d';
17
+ * import {all, createRef} from '@efxlab/motion-canvas-core';
18
+ *
19
+ * export default makeScene2D(function* (view) {
20
+ * const camera = createRef<Camera>();
21
+ * const rect = createRef<Rect>();
22
+ * const circle = createRef<Circle>();
23
+ *
24
+ * view.add(
25
+ * <>
26
+ * <Camera ref={camera}>
27
+ * <Rect
28
+ * ref={rect}
29
+ * fill={'lightseagreen'}
30
+ * size={100}
31
+ * position={[100, -50]}
32
+ * />
33
+ * <Circle
34
+ * ref={circle}
35
+ * fill={'hotpink'}
36
+ * size={120}
37
+ * position={[-100, 50]}
38
+ * />
39
+ * </Camera>
40
+ * </>,
41
+ * );
42
+ *
43
+ * yield* all(
44
+ * camera().centerOn(rect(), 3),
45
+ * camera().rotation(180, 3),
46
+ * camera().zoom(1.8, 3),
47
+ * );
48
+ * yield* camera().centerOn(circle(), 2);
49
+ * yield* camera().reset(1);
50
+ * });
51
+ * ```
52
+ */
53
+ export class Camera extends Node {
54
+ constructor({ children, ...props }) {
55
+ super(props);
56
+ if (!this.scene()) {
57
+ this.scene(new Node({}));
58
+ }
59
+ if (children) {
60
+ this.scene().add(children);
61
+ }
62
+ }
63
+ getZoom() {
64
+ return 1 / this.scale.x();
65
+ }
66
+ setZoom(value) {
67
+ this.scale(modify(value, unwrapped => 1 / unwrapped));
68
+ }
69
+ getDefaultZoom() {
70
+ return this.scale.x.context.getInitial();
71
+ }
72
+ *tweenZoom(value, duration, timingFunction, interpolationFunction) {
73
+ const from = this.scale.x();
74
+ yield* tween(duration, v => {
75
+ this.zoom(1 / interpolationFunction(from, 1 / unwrap(value), timingFunction(v)));
76
+ });
77
+ }
78
+ /**
79
+ * Resets the camera's position, rotation and zoom level to their original
80
+ * values.
81
+ *
82
+ * @param duration - The duration of the tween.
83
+ * @param timingFunction - The timing function to use for the tween.
84
+ */
85
+ *reset(duration, timingFunction = easeInOutCubic) {
86
+ yield* all(this.position(DEFAULT, duration, timingFunction), this.zoom(DEFAULT, duration, timingFunction), this.rotation(DEFAULT, duration, timingFunction));
87
+ }
88
+ *centerOn(positionOrNode, duration, timing = easeInOutCubic, interpolationFunction = Vector2.lerp) {
89
+ const position = positionOrNode instanceof Node
90
+ ? positionOrNode
91
+ .absolutePosition()
92
+ .transformAsPoint(this.scene().worldToLocal())
93
+ : positionOrNode;
94
+ yield* this.position(position, duration, timing, interpolationFunction);
95
+ }
96
+ /**
97
+ * Makes the camera follow a path specified by the provided curve.
98
+ *
99
+ * @remarks
100
+ * This will not change the orientation of the camera. To make the camera
101
+ * orient itself along the curve, use {@link followCurveWithRotation} or
102
+ * {@link followCurveWithRotationReverse}.
103
+ *
104
+ * If you want to follow the curve in reverse, use {@link followCurveReverse}.
105
+ *
106
+ * @param curve - The curve to follow.
107
+ * @param duration - The duration of the tween.
108
+ * @param timing - The timing function to use for the tween.
109
+ */
110
+ *followCurve(curve, duration, timing = easeInOutCubic) {
111
+ yield* tween(duration, value => {
112
+ const t = timing(value);
113
+ const point = curve
114
+ .getPointAtPercentage(t)
115
+ .position.transformAsPoint(curve.localToWorld());
116
+ this.position(point);
117
+ });
118
+ }
119
+ /**
120
+ * Makes the camera follow a path specified by the provided curve in reverse.
121
+ *
122
+ * @remarks
123
+ * This will not change the orientation of the camera. To make the camera
124
+ * orient itself along the curve, use {@link followCurveWithRotation} or
125
+ * {@link followCurveWithRotationReverse}.
126
+ *
127
+ * If you want to follow the curve forward, use {@link followCurve}.
128
+ *
129
+ * @param curve - The curve to follow.
130
+ * @param duration - The duration of the tween.
131
+ * @param timing - The timing function to use for the tween.
132
+ */
133
+ *followCurveReverse(curve, duration, timing = easeInOutCubic) {
134
+ yield* tween(duration, value => {
135
+ const t = 1 - timing(value);
136
+ const point = curve
137
+ .getPointAtPercentage(t)
138
+ .position.transformAsPoint(curve.localToWorld());
139
+ this.position(point);
140
+ });
141
+ }
142
+ /**
143
+ * Makes the camera follow a path specified by the provided curve while
144
+ * pointing the camera the direction of the tangent.
145
+ *
146
+ * @remarks
147
+ * To make the camera follow the curve without changing its orientation, use
148
+ * {@link followCurve} or {@link followCurveReverse}.
149
+ *
150
+ * If you want to follow the curve in reverse, use
151
+ * {@link followCurveWithRotationReverse}.
152
+ *
153
+ * @param curve - The curve to follow.
154
+ * @param duration - The duration of the tween.
155
+ * @param timing - The timing function to use for the tween.
156
+ */
157
+ *followCurveWithRotation(curve, duration, timing = easeInOutCubic) {
158
+ yield* tween(duration, value => {
159
+ const t = timing(value);
160
+ const { position, normal } = curve.getPointAtPercentage(t);
161
+ const point = position.transformAsPoint(curve.localToWorld());
162
+ const angle = normal.flipped.perpendicular.degrees;
163
+ this.position(point);
164
+ this.rotation(angle);
165
+ });
166
+ }
167
+ /**
168
+ * Makes the camera follow a path specified by the provided curve in reverse
169
+ * while pointing the camera the direction of the tangent.
170
+ *
171
+ * @remarks
172
+ * To make the camera follow the curve without changing its orientation, use
173
+ * {@link followCurve} or {@link followCurveReverse}.
174
+ *
175
+ * If you want to follow the curve forward, use
176
+ * {@link followCurveWithRotation}.
177
+ *
178
+ * @param curve - The curve to follow.
179
+ * @param duration - The duration of the tween.
180
+ * @param timing - The timing function to use for the tween.
181
+ */
182
+ *followCurveWithRotationReverse(curve, duration, timing = easeInOutCubic) {
183
+ yield* tween(duration, value => {
184
+ const t = 1 - timing(value);
185
+ const { position, normal } = curve.getPointAtPercentage(t);
186
+ const point = position.transformAsPoint(curve.localToWorld());
187
+ const angle = normal.flipped.perpendicular.degrees;
188
+ this.position(point);
189
+ this.rotation(angle);
190
+ });
191
+ }
192
+ transformContext(context) {
193
+ const matrix = this.localToParent().inverse();
194
+ context.transform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
195
+ }
196
+ hit(position) {
197
+ const local = position.transformAsPoint(this.localToParent());
198
+ return this.scene().hit(local);
199
+ }
200
+ drawChildren(context) {
201
+ this.scene().drawChildren(context);
202
+ }
203
+ // eslint-disable-next-line @typescript-eslint/naming-convention
204
+ static Stage({ children, cameraRef, scene, ...props }) {
205
+ const camera = new Camera({ scene: scene, children });
206
+ cameraRef?.(camera);
207
+ return new Rect({
208
+ clip: true,
209
+ ...props,
210
+ children: [camera],
211
+ });
212
+ }
213
+ }
214
+ __decorate([
215
+ signal()
216
+ ], Camera.prototype, "scene", void 0);
217
+ __decorate([
218
+ cloneable(false),
219
+ signal()
220
+ ], Camera.prototype, "zoom", void 0);
221
+ __decorate([
222
+ threadable()
223
+ ], Camera.prototype, "reset", null);
224
+ __decorate([
225
+ threadable()
226
+ ], Camera.prototype, "centerOn", null);
227
+ __decorate([
228
+ threadable()
229
+ ], Camera.prototype, "followCurve", null);
230
+ __decorate([
231
+ threadable()
232
+ ], Camera.prototype, "followCurveReverse", null);
233
+ __decorate([
234
+ threadable()
235
+ ], Camera.prototype, "followCurveWithRotation", null);
236
+ __decorate([
237
+ threadable()
238
+ ], Camera.prototype, "followCurveWithRotationReverse", null);
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0NhbWVyYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsR0FBRyxFQUNILE9BQU8sRUFDUCxjQUFjLEVBRWQsTUFBTSxFQUtOLFVBQVUsRUFHVixLQUFLLEVBQ0wsTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhELE9BQU8sRUFBQyxJQUFJLEVBQVksTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQWN2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLElBQUk7SUFPOUIsWUFBbUIsRUFBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLEVBQWM7UUFDbEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFXUyxPQUFPO1FBQ2YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVMsT0FBTyxDQUFDLEtBQTBCO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFB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
@@ -0,0 +1,191 @@
1
+ import { BBox, SerializedVector2, SignalValue, SimpleSignal } from '@efxlab/motion-canvas-core';
2
+ import { CurveProfile } from '../curves';
3
+ import { DesiredLength } from '../partials';
4
+ import { Curve, CurveProps } from './Curve';
5
+ export interface CircleProps extends CurveProps {
6
+ /**
7
+ * {@inheritDoc Circle.startAngle}
8
+ */
9
+ startAngle?: SignalValue<number>;
10
+ /**
11
+ * {@inheritDoc Circle.endAngle}
12
+ */
13
+ endAngle?: SignalValue<number>;
14
+ /**
15
+ * {@inheritDoc Circle.counterclockwise}
16
+ */
17
+ counterclockwise?: SignalValue<boolean>;
18
+ /**
19
+ * {@inheritDoc Circle.closed}
20
+ */
21
+ closed?: SignalValue<boolean>;
22
+ }
23
+ /**
24
+ * A node for drawing circular shapes.
25
+ *
26
+ * @remarks
27
+ * This node can be used to render shapes such as: circle, ellipse, arc, and
28
+ * sector (pie chart).
29
+ *
30
+ * @preview
31
+ * ```tsx editor
32
+ * // snippet Simple circle
33
+ * import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
34
+ *
35
+ * export default makeScene2D(function* (view) {
36
+ * view.add(
37
+ * <Circle
38
+ * size={160}
39
+ * fill={'lightseagreen'}
40
+ * />
41
+ * );
42
+ * });
43
+ *
44
+ * // snippet Ellipse
45
+ * import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
46
+ *
47
+ * export default makeScene2D(function* (view) {
48
+ * view.add(
49
+ * <Circle
50
+ * width={160}
51
+ * height={80}
52
+ * fill={'lightseagreen'}
53
+ * />
54
+ * );
55
+ * });
56
+ *
57
+ * // snippet Sector (pie chart):
58
+ * import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
59
+ * import {createRef} from '@efxlab/motion-canvas-core';
60
+ *
61
+ * export default makeScene2D(function* (view) {
62
+ * const ref = createRef<Circle>();
63
+ * view.add(
64
+ * <Circle
65
+ * ref={ref}
66
+ * size={160}
67
+ * fill={'lightseagreen'}
68
+ * startAngle={30}
69
+ * endAngle={270}
70
+ * closed={true}
71
+ * />
72
+ * );
73
+ *
74
+ * yield* ref().startAngle(270, 2).to(30, 2);
75
+ * });
76
+ *
77
+ * // snippet Arc:
78
+ * import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
79
+ * import {createRef} from '@efxlab/motion-canvas-core';
80
+ *
81
+ * export default makeScene2D(function* (view) {
82
+ * const ref = createRef<Circle>();
83
+ * view.add(
84
+ * <Circle
85
+ * ref={ref}
86
+ * size={160}
87
+ * stroke={'lightseagreen'}
88
+ * lineWidth={8}
89
+ * startAngle={-90}
90
+ * endAngle={90}
91
+ * />
92
+ * );
93
+ *
94
+ * yield* ref().startAngle(-270, 2).to(-90, 2);
95
+ * });
96
+ *
97
+ * // snippet Curve properties:
98
+ * import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
99
+ * import {all, createRef, easeInCubic, easeOutCubic} from '@efxlab/motion-canvas-core';
100
+ *
101
+ * export default makeScene2D(function* (view) {
102
+ * const ref = createRef<Circle>();
103
+ * view.add(
104
+ * <Circle
105
+ * ref={ref}
106
+ * size={160}
107
+ * stroke={'lightseagreen'}
108
+ * lineWidth={8}
109
+ * endAngle={270}
110
+ * endArrow
111
+ * />,
112
+ * );
113
+ *
114
+ * yield* all(ref().start(1, 1), ref().rotation(180, 1, easeInCubic));
115
+ * ref().start(0).end(0);
116
+ * yield* all(ref().end(1, 1), ref().rotation(360, 1, easeOutCubic));
117
+ * });
118
+ * ```
119
+ */
120
+ export declare class Circle extends Curve {
121
+ /**
122
+ * The starting angle in degrees for the circle sector.
123
+ *
124
+ * @remarks
125
+ * This property can be used together with {@link startAngle} to turn this
126
+ * circle into a sector (when using fill) or an arc (when using stroke).
127
+ *
128
+ * @defaultValue 0
129
+ */
130
+ readonly startAngle: SimpleSignal<number, this>;
131
+ /**
132
+ * The ending angle in degrees for the circle sector.
133
+ *
134
+ * @remarks
135
+ * This property can be used together with {@link endAngle} to turn this
136
+ * circle into a sector (when using fill) or an arc (when using stroke).
137
+ *
138
+ * @defaultValue 360
139
+ */
140
+ readonly endAngle: SimpleSignal<number, this>;
141
+ /**
142
+ * Whether the circle sector should be drawn counterclockwise.
143
+ *
144
+ * @remarks
145
+ * By default, the circle begins at {@link startAngle} and is drawn clockwise
146
+ * until reaching {@link endAngle}. Setting this property to true will reverse
147
+ * this direction.
148
+ */
149
+ readonly counterclockwise: SimpleSignal<boolean, this>;
150
+ /**
151
+ * Whether the path of this circle should be closed.
152
+ *
153
+ * @remarks
154
+ * When set to true, the path of this circle will start and end at the center.
155
+ * This can be used to fine-tune how sectors are rendered.
156
+ *
157
+ * @example
158
+ * A closed circle will look like a pie chart:
159
+ * ```tsx
160
+ * <Circle
161
+ * size={300}
162
+ * fill={'lightseagreen'}
163
+ * endAngle={230}
164
+ * closed={true}
165
+ * />
166
+ * ```
167
+ * An open one will look like an arc:
168
+ * ```tsx
169
+ * <Circle
170
+ * size={300}
171
+ * stroke={'lightseagreen'}
172
+ * lineWidth={8}
173
+ * endAngle={230}
174
+ * closed={false}
175
+ * />
176
+ * ```
177
+ *
178
+ * @defaultValue false
179
+ */
180
+ readonly closed: SimpleSignal<boolean, this>;
181
+ constructor(props: CircleProps);
182
+ profile(): CurveProfile;
183
+ protected desiredSize(): SerializedVector2<DesiredLength>;
184
+ protected offsetComputedLayout(box: BBox): BBox;
185
+ protected childrenBBox(): BBox;
186
+ protected getPath(): Path2D;
187
+ protected getRipplePath(): Path2D;
188
+ protected getCacheBBox(): BBox;
189
+ protected createPath(expand?: number): Path2D;
190
+ }
191
+ //# sourceMappingURL=Circle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../src/lib/components/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,YAAY,EAAmB,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,qBACa,MAAO,SAAQ,KAAK;IAC/B;;;;;;;;OAQG;IACH,SAEwB,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE/D;;;;;;;;OAQG;IACH,SAEwB,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7D;;;;;;;OAOG;IACH,SAEwB,gBAAgB,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAwB,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEzC,KAAK,EAAE,WAAW;IAK9B,OAAO,IAAI,YAAY;cAUX,WAAW,IAAI,iBAAiB,CAAC,aAAa,CAAC;cAO/C,oBAAoB,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;cAIrC,YAAY,IAAI,IAAI;cAIpB,OAAO,IAAI,MAAM;cAQjB,aAAa,IAAI,MAAM;cAIvB,YAAY,IAAI,IAAI;IAIvC,SAAS,CAAC,UAAU,CAAC,MAAM,SAAI;CAsBhC"}