@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,582 @@
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 { BBox, Matrix2D, Vector2, all, clampRemap, delay, easeInOutSine, isReactive, lazy, threadable, tween, useLogger, } from '@efxlab/motion-canvas-core';
8
+ import { computed, signal } from '../decorators';
9
+ import { applyTransformDiff, getTransformDiff } from '../utils/diff';
10
+ import { Circle } from './Circle';
11
+ import { Img } from './Img';
12
+ import { Layout } from './Layout';
13
+ import { Line } from './Line';
14
+ import { Node } from './Node';
15
+ import { Path } from './Path';
16
+ import { Rect } from './Rect';
17
+ import { Shape } from './Shape';
18
+ import { View2D } from './View2D';
19
+ /**
20
+ A Node for drawing and animating SVG images.
21
+
22
+ @remarks
23
+ If you're not interested in animating SVG, you can use {@link Img} instead.
24
+ */
25
+ export class SVG extends Shape {
26
+ static containerElement;
27
+ static svgNodesPool = {};
28
+ /**
29
+ * Child to wrap all SVG node
30
+ */
31
+ wrapper;
32
+ lastTweenTargetSrc = null;
33
+ lastTweenTargetDocument = null;
34
+ constructor(props) {
35
+ super(props);
36
+ this.wrapper = new Node({});
37
+ this.wrapper.children(this.documentNodes);
38
+ this.wrapper.scale(this.wrapperScale);
39
+ this.add(this.wrapper);
40
+ }
41
+ /**
42
+ * Get all SVG nodes with the given id.
43
+ * @param id - An id to query.
44
+ */
45
+ getChildrenById(id) {
46
+ return this.document()
47
+ .nodes.filter(node => node.id === id)
48
+ .map(({ shape }) => shape);
49
+ }
50
+ desiredSize() {
51
+ const docSize = this.document().size;
52
+ const scale = this.calculateWrapperScale(docSize, super.desiredSize());
53
+ return docSize.mul(scale);
54
+ }
55
+ getCurrentSize() {
56
+ return {
57
+ x: this.width.isInitial() ? null : this.width(),
58
+ y: this.height.isInitial() ? null : this.height(),
59
+ };
60
+ }
61
+ calculateWrapperScale(documentSize, parentSize) {
62
+ const result = new Vector2(1, 1);
63
+ if (parentSize.x && parentSize.y) {
64
+ result.x = parentSize.x / documentSize.width;
65
+ result.y = parentSize.y / documentSize.height;
66
+ }
67
+ else if (parentSize.x && !parentSize.y) {
68
+ result.x = parentSize.x / documentSize.width;
69
+ result.y = result.x;
70
+ }
71
+ else if (!parentSize.x && parentSize.y) {
72
+ result.y = parentSize.y / documentSize.height;
73
+ result.x = result.y;
74
+ }
75
+ return result;
76
+ }
77
+ /**
78
+ * Convert `SVGDocumentData` to `SVGDocument`.
79
+ * @param data - `SVGDocumentData` to convert.
80
+ */
81
+ buildDocument(data) {
82
+ return {
83
+ size: data.size,
84
+ nodes: data.nodes.map(ch => this.buildShape(ch)),
85
+ };
86
+ }
87
+ /**
88
+ * Convert `SVGShapeData` to `SVGShape`.
89
+ * @param data - `SVGShapeData` to convert.
90
+ */
91
+ buildShape({ id, type, props, children }) {
92
+ return {
93
+ id,
94
+ shape: new type({
95
+ children: children?.map(ch => this.buildShape(ch).shape),
96
+ ...this.processElementStyle(props),
97
+ }),
98
+ };
99
+ }
100
+ /**
101
+ * Convert an SVG string to `SVGDocument`.
102
+ * @param svg - An SVG string to be parsed.
103
+ */
104
+ parseSVG(svg) {
105
+ return this.buildDocument(SVG.parseSVGData(svg));
106
+ }
107
+ /**
108
+ * Create a tweening list to tween between two SVG nodes.
109
+ * @param from - The initial node,
110
+ * @param to - The final node.
111
+ * @param duration - The duration of the tween.
112
+ * @param timing - The timing function.
113
+ */
114
+ *generateTransformer(from, to, duration, timing) {
115
+ yield from.position(to.position(), duration, timing);
116
+ yield from.scale(to.scale(), duration, timing);
117
+ yield from.rotation(to.rotation(), duration, timing);
118
+ if (from instanceof Path &&
119
+ to instanceof Path &&
120
+ from.data() !== to.data()) {
121
+ yield from.data(to.data(), duration, timing);
122
+ }
123
+ if (from instanceof Layout && to instanceof Layout) {
124
+ yield from.size(to.size(), duration, timing);
125
+ }
126
+ if (from instanceof Shape && to instanceof Shape) {
127
+ yield from.fill(to.fill(), duration, timing);
128
+ yield from.stroke(to.stroke(), duration, timing);
129
+ yield from.lineWidth(to.lineWidth(), duration, timing);
130
+ }
131
+ const fromChildren = from.children();
132
+ const toChildren = to.children();
133
+ for (let i = 0; i < fromChildren.length; i++) {
134
+ yield* this.generateTransformer(fromChildren[i], toChildren[i], duration, timing);
135
+ }
136
+ }
137
+ *tweenSvg(value, time, timingFunction) {
138
+ const newValue = isReactive(value) ? value() : value;
139
+ const newSVG = this.parseSVG(newValue);
140
+ const currentSVG = this.document();
141
+ const diff = getTransformDiff(currentSVG.nodes, newSVG.nodes);
142
+ this.lastTweenTargetSrc = newValue;
143
+ this.lastTweenTargetDocument = newSVG;
144
+ applyTransformDiff(currentSVG.nodes, diff, ({ shape, ...rest }) => ({
145
+ ...rest,
146
+ shape: shape.clone(),
147
+ }));
148
+ this.wrapper.children(currentSVG.nodes.map(shape => shape.shape));
149
+ for (const item of currentSVG.nodes) {
150
+ item.shape.parent(this.wrapper);
151
+ }
152
+ const beginning = 0.2;
153
+ const ending = 0.8;
154
+ const overlap = 0.15;
155
+ const transformator = [];
156
+ const transformatorTime = (ending - beginning) * time;
157
+ const transformatorDelay = beginning * time;
158
+ for (const item of diff.transformed) {
159
+ transformator.push(...this.generateTransformer(item.from.current.shape, item.to.current.shape, transformatorTime, timingFunction));
160
+ }
161
+ const autoWidth = this.width.isInitial();
162
+ const autoHeight = this.height.isInitial();
163
+ this.wrapper.scale(this.calculateWrapperScale(currentSVG.size, this.getCurrentSize()));
164
+ const baseTween = tween(time, value => {
165
+ const progress = timingFunction(value);
166
+ const remapped = clampRemap(beginning, ending, 0, 1, progress);
167
+ const scale = this.wrapper.scale();
168
+ if (autoWidth) {
169
+ this.width(easeInOutSine(remapped, currentSVG.size.x, newSVG.size.x) * scale.x);
170
+ }
171
+ if (autoHeight) {
172
+ this.height(easeInOutSine(remapped, currentSVG.size.y, newSVG.size.y) * scale.y);
173
+ }
174
+ const deletedOpacity = clampRemap(0, beginning + overlap, 1, 0, progress);
175
+ for (const { current } of diff.deleted) {
176
+ current.shape.opacity(deletedOpacity);
177
+ }
178
+ const insertedOpacity = clampRemap(ending - overlap, 1, 0, 1, progress);
179
+ for (const { current } of diff.inserted) {
180
+ current.shape.opacity(insertedOpacity);
181
+ }
182
+ }, () => {
183
+ this.wrapper.children(this.documentNodes);
184
+ if (autoWidth)
185
+ this.width.reset();
186
+ if (autoHeight)
187
+ this.height.reset();
188
+ for (const { current } of diff.deleted)
189
+ current.shape.dispose();
190
+ for (const { from } of diff.transformed) {
191
+ from.current.shape.dispose();
192
+ }
193
+ this.wrapper.scale(this.wrapperScale);
194
+ });
195
+ yield* all(this.wrapper.scale(this.calculateWrapperScale(newSVG.size, this.getCurrentSize()), time, timingFunction), baseTween, delay(transformatorDelay, all(...transformator)));
196
+ }
197
+ wrapperScale() {
198
+ return this.calculateWrapperScale(this.document().size, this.getCurrentSize());
199
+ }
200
+ /**
201
+ * Get the current `SVGDocument`.
202
+ */
203
+ document() {
204
+ try {
205
+ const src = this.svg();
206
+ if (this.lastTweenTargetDocument && src === this.lastTweenTargetSrc) {
207
+ return this.lastTweenTargetDocument;
208
+ }
209
+ return this.parseSVG(src);
210
+ }
211
+ finally {
212
+ this.lastTweenTargetSrc = null;
213
+ this.lastTweenTargetDocument = null;
214
+ }
215
+ }
216
+ /**
217
+ * Get current document nodes.
218
+ */
219
+ documentNodes() {
220
+ return this.document().nodes.map(node => node.shape);
221
+ }
222
+ /**
223
+ * Convert SVG colors in Shape properties to Motion Canvas colors.
224
+ * @param param - Shape properties.
225
+ * @returns Converted Shape properties.
226
+ */
227
+ processElementStyle({ fill, stroke, ...rest }) {
228
+ return {
229
+ fill: fill === 'currentColor' ? this.fill : SVG.processSVGColor(fill),
230
+ stroke: stroke === 'currentColor' ? this.stroke : SVG.processSVGColor(stroke),
231
+ ...rest,
232
+ };
233
+ }
234
+ /**
235
+ * Parse an SVG string as `SVGDocumentData`.
236
+ * @param svg - And SVG string to be parsed.
237
+ * @returns `SVGDocumentData` that can be used to build SVGDocument.
238
+ */
239
+ static parseSVGData(svg) {
240
+ const cached = SVG.svgNodesPool[svg];
241
+ if (cached && (cached.size.x > 0 || cached.size.y > 0))
242
+ return cached;
243
+ SVG.containerElement.innerHTML = svg;
244
+ const svgRoot = SVG.containerElement.querySelector('svg');
245
+ if (!svgRoot) {
246
+ useLogger().error({
247
+ message: 'Invalid SVG',
248
+ object: svg,
249
+ });
250
+ return {
251
+ size: new Vector2(0, 0),
252
+ nodes: [],
253
+ };
254
+ }
255
+ let viewBox = new BBox();
256
+ let size = new Vector2();
257
+ const hasViewBox = svgRoot.hasAttribute('viewBox');
258
+ const hasSize = svgRoot.hasAttribute('width') || svgRoot.hasAttribute('height');
259
+ if (hasViewBox) {
260
+ const { x, y, width, height } = svgRoot.viewBox.baseVal;
261
+ viewBox = new BBox(x, y, width, height);
262
+ if (!hasSize)
263
+ size = viewBox.size;
264
+ }
265
+ if (hasSize) {
266
+ size = new Vector2(svgRoot.width.baseVal.value, svgRoot.height.baseVal.value);
267
+ if (!hasViewBox)
268
+ viewBox = new BBox(0, 0, size.width, size.height);
269
+ }
270
+ if (!hasViewBox && !hasSize) {
271
+ viewBox = new BBox(svgRoot.getBBox());
272
+ size = viewBox.size;
273
+ }
274
+ const scale = size.div(viewBox.size);
275
+ const center = viewBox.center;
276
+ const rootTransform = new DOMMatrix()
277
+ .scaleSelf(scale.x, scale.y)
278
+ .translateSelf(-center.x, -center.y);
279
+ const nodes = Array.from(SVG.extractGroupNodes(svgRoot, svgRoot, rootTransform, {}));
280
+ const builder = {
281
+ size,
282
+ nodes,
283
+ };
284
+ SVG.svgNodesPool[svg] = builder;
285
+ return builder;
286
+ }
287
+ /**
288
+ * Get position, rotation and scale from Matrix transformation as Shape properties
289
+ * @param transform - Matrix transformation
290
+ * @returns MotionCanvas Shape properties
291
+ */
292
+ static getMatrixTransformation(transform) {
293
+ const matrix2 = new Matrix2D(transform);
294
+ const position = matrix2.translation;
295
+ const rotation = matrix2.rotation;
296
+ // matrix.scaling can give incorrect result when matrix contain skew operation
297
+ const scale = {
298
+ x: matrix2.x.magnitude,
299
+ y: matrix2.y.magnitude,
300
+ };
301
+ if (matrix2.determinant < 0) {
302
+ if (matrix2.values[0] < matrix2.values[3])
303
+ scale.x = -scale.x;
304
+ else
305
+ scale.y = -scale.y;
306
+ }
307
+ return {
308
+ position,
309
+ rotation,
310
+ scale,
311
+ };
312
+ }
313
+ /**
314
+ * Convert an SVG color into a Motion Canvas color.
315
+ * @param color - SVG color.
316
+ * @returns Motion Canvas color.
317
+ */
318
+ static processSVGColor(color) {
319
+ if (color === 'transparent' || color === 'none') {
320
+ return null;
321
+ }
322
+ return color;
323
+ }
324
+ /**
325
+ * Get the final transformation matrix for the given SVG element.
326
+ * @param element - SVG element.
327
+ * @param parentTransform - The transformation matrix of the parent.
328
+ */
329
+ static getElementTransformation(element, parentTransform) {
330
+ const transform = element.transform.baseVal.consolidate();
331
+ const transformMatrix = (transform ? parentTransform.multiply(transform.matrix) : parentTransform).translate(SVG.parseNumberAttribute(element, 'x'), SVG.parseNumberAttribute(element, 'y'));
332
+ return transformMatrix;
333
+ }
334
+ static parseLineCap(name) {
335
+ if (!name)
336
+ return null;
337
+ if (name === 'butt' || name === 'round' || name === 'square')
338
+ return name;
339
+ useLogger().warn(`SVG: invalid line cap "${name}"`);
340
+ return null;
341
+ }
342
+ static parseLineJoin(name) {
343
+ if (!name)
344
+ return null;
345
+ if (name === 'bevel' || name === 'miter' || name === 'round')
346
+ return name;
347
+ if (name === 'arcs' || name === 'miter-clip') {
348
+ useLogger().warn(`SVG: line join is not supported "${name}"`);
349
+ }
350
+ else {
351
+ useLogger().warn(`SVG: invalid line join "${name}"`);
352
+ }
353
+ return null;
354
+ }
355
+ static parseLineDash(value) {
356
+ if (!value)
357
+ return null;
358
+ const list = value.split(/,|\s+/);
359
+ if (list.findIndex(str => str.endsWith('%')) > 0) {
360
+ useLogger().warn(`SVG: percentage line dash are ignored`);
361
+ return null;
362
+ }
363
+ return list.map(str => parseFloat(str));
364
+ }
365
+ static parseDashOffset(value) {
366
+ if (!value)
367
+ return null;
368
+ const trimmed = value.trim();
369
+ if (trimmed.endsWith('%')) {
370
+ useLogger().warn(`SVG: percentage line dash offset are ignored`);
371
+ }
372
+ return parseFloat(trimmed);
373
+ }
374
+ static parseOpacity(value) {
375
+ if (!value)
376
+ return null;
377
+ if (value.endsWith('%'))
378
+ return parseFloat(value) / 100;
379
+ return parseFloat(value);
380
+ }
381
+ /**
382
+ * Convert the SVG element's style to a Motion Canvas Shape properties.
383
+ * @param element - An SVG element whose style should be converted.
384
+ * @param inheritedStyle - The parent style that should be inherited.
385
+ */
386
+ static getElementStyle(element, inheritedStyle) {
387
+ return {
388
+ fill: element.getAttribute('fill') ?? inheritedStyle.fill,
389
+ stroke: element.getAttribute('stroke') ?? inheritedStyle.stroke,
390
+ lineWidth: element.hasAttribute('stroke-width')
391
+ ? parseFloat(element.getAttribute('stroke-width'))
392
+ : inheritedStyle.lineWidth,
393
+ lineCap: this.parseLineCap(element.getAttribute('stroke-linecap')) ??
394
+ inheritedStyle.lineCap,
395
+ lineJoin: this.parseLineJoin(element.getAttribute('stroke-linejoin')) ??
396
+ inheritedStyle.lineJoin,
397
+ lineDash: this.parseLineDash(element.getAttribute('stroke-dasharray')) ??
398
+ inheritedStyle.lineDash,
399
+ lineDashOffset: this.parseDashOffset(element.getAttribute('stroke-dashoffset')) ??
400
+ inheritedStyle.lineDashOffset,
401
+ opacity: this.parseOpacity(element.getAttribute('opacity')) ??
402
+ inheritedStyle.opacity,
403
+ layout: false,
404
+ };
405
+ }
406
+ /**
407
+ * Extract `SVGShapeData` list from the SVG element's children.
408
+ * This will not extract the current element's shape.
409
+ * @param element - An element whose children will be extracted.
410
+ * @param svgRoot - The SVG root ("svg" tag) of the element.
411
+ * @param parentTransform - The transformation matrix applied to the parent.
412
+ * @param inheritedStyle - The style of the current SVG `element` that the children should inherit.
413
+ */
414
+ static *extractGroupNodes(element, svgRoot, parentTransform, inheritedStyle) {
415
+ for (const child of element.children) {
416
+ if (!(child instanceof SVGGraphicsElement))
417
+ continue;
418
+ yield* this.extractElementNodes(child, svgRoot, parentTransform, inheritedStyle);
419
+ }
420
+ }
421
+ /**
422
+ * Parse a number from an SVG element attribute.
423
+ * @param element - SVG element whose attribute will be parsed.
424
+ * @param name - The name of the attribute to parse.
425
+ * @returns a parsed number or `0` if the attribute is not defined.
426
+ */
427
+ static parseNumberAttribute(element, name) {
428
+ return parseFloat(element.getAttribute(name) ?? '0');
429
+ }
430
+ /**
431
+ * Extract `SVGShapeData` list from the SVG element.
432
+ * This will also recursively extract shapes from its children.
433
+ * @param child - An SVG element to extract.
434
+ * @param svgRoot - The SVG root ("svg" tag) of the element.
435
+ * @param parentTransform - The transformation matrix applied to the parent.
436
+ * @param inheritedStyle - The style of the parent SVG element that the element should inherit.
437
+ */
438
+ static *extractElementNodes(child, svgRoot, parentTransform, inheritedStyle) {
439
+ const transformMatrix = SVG.getElementTransformation(child, parentTransform);
440
+ const style = SVG.getElementStyle(child, inheritedStyle);
441
+ const id = child.id ?? '';
442
+ if (child.tagName === 'g') {
443
+ yield* SVG.extractGroupNodes(child, svgRoot, transformMatrix, style);
444
+ }
445
+ else if (child.tagName === 'use') {
446
+ const hrefElement = svgRoot.querySelector(child.href.baseVal);
447
+ if (!(hrefElement instanceof SVGGraphicsElement)) {
448
+ useLogger().warn(`invalid SVG use tag. element "${child.outerHTML}"`);
449
+ return;
450
+ }
451
+ yield* SVG.extractElementNodes(hrefElement, svgRoot, transformMatrix, inheritedStyle);
452
+ }
453
+ else if (child.tagName === 'path') {
454
+ const data = child.getAttribute('d');
455
+ if (!data) {
456
+ useLogger().warn('blank path data at ' + child.id);
457
+ return;
458
+ }
459
+ const transformation = transformMatrix;
460
+ yield {
461
+ id: id || 'path',
462
+ type: Path,
463
+ props: {
464
+ data,
465
+ tweenAlignPath: true,
466
+ ...SVG.getMatrixTransformation(transformation),
467
+ ...style,
468
+ },
469
+ };
470
+ }
471
+ else if (child.tagName === 'rect') {
472
+ const width = SVG.parseNumberAttribute(child, 'width');
473
+ const height = SVG.parseNumberAttribute(child, 'height');
474
+ const rx = SVG.parseNumberAttribute(child, 'rx');
475
+ const ry = SVG.parseNumberAttribute(child, 'ry');
476
+ const bbox = new BBox(0, 0, width, height);
477
+ const center = bbox.center;
478
+ const transformation = transformMatrix.translate(center.x, center.y);
479
+ yield {
480
+ id: id || 'rect',
481
+ type: Rect,
482
+ props: {
483
+ width,
484
+ height,
485
+ radius: [rx, ry],
486
+ ...SVG.getMatrixTransformation(transformation),
487
+ ...style,
488
+ },
489
+ };
490
+ }
491
+ else if (['circle', 'ellipse'].includes(child.tagName)) {
492
+ const cx = SVG.parseNumberAttribute(child, 'cx');
493
+ const cy = SVG.parseNumberAttribute(child, 'cy');
494
+ const size = child.tagName === 'circle'
495
+ ? SVG.parseNumberAttribute(child, 'r') * 2
496
+ : [
497
+ SVG.parseNumberAttribute(child, 'rx') * 2,
498
+ SVG.parseNumberAttribute(child, 'ry') * 2,
499
+ ];
500
+ const transformation = transformMatrix.translate(cx, cy);
501
+ yield {
502
+ id: id || child.tagName,
503
+ type: Circle,
504
+ props: {
505
+ size,
506
+ ...style,
507
+ ...SVG.getMatrixTransformation(transformation),
508
+ },
509
+ };
510
+ }
511
+ else if (['line', 'polyline', 'polygon'].includes(child.tagName)) {
512
+ const numbers = child.tagName === 'line'
513
+ ? ['x1', 'y1', 'x2', 'y2'].map(attr => SVG.parseNumberAttribute(child, attr))
514
+ : child
515
+ .getAttribute('points')
516
+ .match(/-?[\d.e+-]+/g)
517
+ .map(value => parseFloat(value));
518
+ const points = numbers.reduce((accum, current) => {
519
+ let last = accum.at(-1);
520
+ if (!last || last.length === 2) {
521
+ last = [];
522
+ accum.push(last);
523
+ }
524
+ last.push(current);
525
+ return accum;
526
+ }, []);
527
+ if (child.tagName === 'polygon')
528
+ points.push(points[0]);
529
+ yield {
530
+ id: id || child.tagName,
531
+ type: Line,
532
+ props: {
533
+ points,
534
+ ...style,
535
+ ...SVG.getMatrixTransformation(transformMatrix),
536
+ },
537
+ };
538
+ }
539
+ else if (child.tagName === 'image') {
540
+ const x = SVG.parseNumberAttribute(child, 'x');
541
+ const y = SVG.parseNumberAttribute(child, 'y');
542
+ const width = SVG.parseNumberAttribute(child, 'width');
543
+ const height = SVG.parseNumberAttribute(child, 'height');
544
+ const href = child.getAttribute('href') ?? '';
545
+ const bbox = new BBox(x, y, width, height);
546
+ const center = bbox.center;
547
+ const transformation = transformMatrix.translate(center.x, center.y);
548
+ yield {
549
+ id: id || child.tagName,
550
+ type: Img,
551
+ props: {
552
+ src: href,
553
+ ...style,
554
+ ...SVG.getMatrixTransformation(transformation),
555
+ },
556
+ };
557
+ }
558
+ }
559
+ }
560
+ __decorate([
561
+ signal()
562
+ ], SVG.prototype, "svg", void 0);
563
+ __decorate([
564
+ threadable()
565
+ ], SVG.prototype, "tweenSvg", null);
566
+ __decorate([
567
+ computed()
568
+ ], SVG.prototype, "wrapperScale", null);
569
+ __decorate([
570
+ computed()
571
+ ], SVG.prototype, "document", null);
572
+ __decorate([
573
+ computed()
574
+ ], SVG.prototype, "documentNodes", null);
575
+ __decorate([
576
+ lazy(() => {
577
+ const element = document.createElement('div');
578
+ View2D.shadowRoot.appendChild(element);
579
+ return element;
580
+ })
581
+ ], SVG, "containerElement", void 0);
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1ZHLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1NWRy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsSUFBSSxFQUNKLFFBQVEsRUFPUixPQUFPLEVBQ1AsR0FBRyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixJQUFJLEVBQ0osVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFDLE1BQU0sRUFBYyxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsR0FBRyxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsSUFBSSxFQUFZLE1BQU0sUUFBUSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxJQUFJLEVBQVksTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsS0FBSyxFQUFhLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUE4Q2hDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLEdBQUksU0FBUSxLQUFLO0lBTVgsQUFBUCxNQUFNLENBQUMsZ0JBQWdCLENBQWlCO0lBQzFDLE1BQU0sQ0FBQyxZQUFZLEdBQW9DLEVBQUUsQ0FBQztJQVFsRTs7T0FFRztJQUNJLE9BQU8sQ0FBTztJQUViLGtCQUFr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RUFBRSxDQUFDLElBQUksRUFBRSxFQUN6QixDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxZQUFZLE1BQU0sSUFBSSxFQUFFLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0MsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakQsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQzdCLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQ2IsUUFBUSxFQUNSLE1BQU0sQ0FDUCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFHVSxB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
@@ -0,0 +1,39 @@
1
+ import { BBox, SignalValue, SimpleSignal } from '@efxlab/motion-canvas-core';
2
+ import { CanvasStyleSignal } from '../decorators/canvasStyleSignal';
3
+ import { PossibleCanvasStyle } from '../partials';
4
+ import { Layout, LayoutProps } from './Layout';
5
+ export interface ShapeProps extends LayoutProps {
6
+ fill?: SignalValue<PossibleCanvasStyle>;
7
+ stroke?: SignalValue<PossibleCanvasStyle>;
8
+ strokeFirst?: SignalValue<boolean>;
9
+ lineWidth?: SignalValue<number>;
10
+ lineJoin?: SignalValue<CanvasLineJoin>;
11
+ lineCap?: SignalValue<CanvasLineCap>;
12
+ lineDash?: SignalValue<number[]>;
13
+ lineDashOffset?: SignalValue<number>;
14
+ antialiased?: SignalValue<boolean>;
15
+ }
16
+ export declare abstract class Shape extends Layout {
17
+ readonly fill: CanvasStyleSignal<this>;
18
+ readonly stroke: CanvasStyleSignal<this>;
19
+ readonly strokeFirst: SimpleSignal<boolean, this>;
20
+ readonly lineWidth: SimpleSignal<number, this>;
21
+ readonly lineJoin: SimpleSignal<CanvasLineJoin, this>;
22
+ readonly lineCap: SimpleSignal<CanvasLineCap, this>;
23
+ readonly lineDash: SimpleSignal<number[], this>;
24
+ readonly lineDashOffset: SimpleSignal<number, this>;
25
+ readonly antialiased: SimpleSignal<boolean, this>;
26
+ protected readonly rippleStrength: SimpleSignal<number, this>;
27
+ protected rippleSize(): number;
28
+ constructor(props: ShapeProps);
29
+ protected applyText(context: CanvasRenderingContext2D): void;
30
+ protected applyStyle(context: CanvasRenderingContext2D): void;
31
+ protected draw(context: CanvasRenderingContext2D): void;
32
+ protected drawShape(context: CanvasRenderingContext2D): void;
33
+ protected getCacheBBox(): BBox;
34
+ protected getPath(): Path2D;
35
+ protected getRipplePath(): Path2D;
36
+ protected drawRipple(context: CanvasRenderingContext2D): void;
37
+ ripple(duration?: number): Generator<void | import("@efxlab/motion-canvas-core").ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
38
+ }
39
+ //# sourceMappingURL=Shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shape.d.ts","sourceRoot":"","sources":["../../src/lib/components/Shape.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EACX,YAAY,EAMb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,IAAI,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACpC;AAED,8BACsB,KAAM,SAAQ,MAAM;IACxC,SACwB,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtD,SACwB,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxD,SAEwB,WAAW,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjE,SAEwB,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D,SAEwB,QAAQ,EAAE,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrE,SAEwB,OAAO,EAAE,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACnE,SAEwB,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/D,SAEwB,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnE,SAEwB,WAAW,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEjE,SAAS,CAAC,QAAQ,CAAC,cAAc,6BAAiC;IAGlE,SAAS,CAAC,UAAU;gBAID,KAAK,EAAE,UAAU;IAIpC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,wBAAwB;IAKrD,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,wBAAwB;cAenC,IAAI,CAAC,OAAO,EAAE,wBAAwB;IAQzD,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,wBAAwB;cAiBlC,YAAY,IAAI,IAAI;IAKvC,SAAS,CAAC,OAAO,IAAI,MAAM;IAI3B,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,wBAAwB;IAY9C,MAAM,CAAC,QAAQ,SAAI;CAK5B"}