@basementstudio/shader-lab 0.1.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/src/easings.d.ts +3 -0
  2. package/dist/src/easings.js +3 -0
  3. package/dist/src/index.d.ts +5 -0
  4. package/dist/src/index.js +4 -0
  5. package/dist/src/lib/editor/custom-shader/shared.d.ts +1 -0
  6. package/dist/src/lib/editor/custom-shader/shared.js +1 -0
  7. package/dist/src/renderer/ascii-atlas.d.ts +5 -0
  8. package/dist/src/renderer/ascii-atlas.js +61 -0
  9. package/dist/src/renderer/ascii-pass.d.ts +50 -0
  10. package/dist/src/renderer/ascii-pass.js +271 -0
  11. package/dist/src/renderer/asset-url.d.ts +1 -0
  12. package/dist/src/renderer/asset-url.js +3 -0
  13. package/dist/src/renderer/blend-modes.d.ts +4 -0
  14. package/dist/src/renderer/blend-modes.js +157 -0
  15. package/dist/src/renderer/contracts.d.ts +26 -0
  16. package/dist/src/renderer/contracts.js +13 -0
  17. package/dist/src/renderer/create-webgpu-renderer.d.ts +3 -0
  18. package/dist/src/renderer/create-webgpu-renderer.js +37 -0
  19. package/dist/src/renderer/crt-pass.d.ts +72 -0
  20. package/dist/src/renderer/crt-pass.js +536 -0
  21. package/dist/src/renderer/custom-shader-pass.d.ts +17 -0
  22. package/dist/src/renderer/custom-shader-pass.js +79 -0
  23. package/dist/src/renderer/custom-shader-runtime.d.ts +16 -0
  24. package/dist/src/renderer/custom-shader-runtime.js +169 -0
  25. package/dist/src/renderer/dither-textures.d.ts +8 -0
  26. package/dist/src/renderer/dither-textures.js +66 -0
  27. package/dist/src/renderer/dithering-pass.d.ts +45 -0
  28. package/dist/src/renderer/dithering-pass.js +229 -0
  29. package/dist/src/renderer/gradient-pass.d.ts +39 -0
  30. package/dist/src/renderer/gradient-pass.js +358 -0
  31. package/dist/src/renderer/halftone-pass.d.ts +65 -0
  32. package/dist/src/renderer/halftone-pass.js +530 -0
  33. package/dist/src/renderer/ink-pass.d.ts +84 -0
  34. package/dist/src/renderer/ink-pass.js +526 -0
  35. package/dist/src/renderer/live-pass.d.ts +31 -0
  36. package/dist/src/renderer/live-pass.js +136 -0
  37. package/dist/src/renderer/media-pass.d.ts +32 -0
  38. package/dist/src/renderer/media-pass.js +130 -0
  39. package/dist/src/renderer/media-texture.d.ts +8 -0
  40. package/dist/src/renderer/media-texture.js +41 -0
  41. package/dist/src/renderer/particle-grid-pass.d.ts +48 -0
  42. package/dist/src/renderer/particle-grid-pass.js +269 -0
  43. package/dist/src/renderer/pass-node.d.ts +36 -0
  44. package/dist/src/renderer/pass-node.js +120 -0
  45. package/dist/src/renderer/pattern-atlas.d.ts +8 -0
  46. package/dist/src/renderer/pattern-atlas.js +79 -0
  47. package/dist/src/renderer/pattern-pass.d.ts +58 -0
  48. package/dist/src/renderer/pattern-pass.js +316 -0
  49. package/dist/src/renderer/pipeline-manager.d.ts +39 -0
  50. package/dist/src/renderer/pipeline-manager.js +287 -0
  51. package/dist/src/renderer/pixel-sorting-pass.d.ts +33 -0
  52. package/dist/src/renderer/pixel-sorting-pass.js +179 -0
  53. package/dist/src/renderer/shaders/tsl/color/tonemapping.d.ts +9 -0
  54. package/dist/src/renderer/shaders/tsl/color/tonemapping.js +59 -0
  55. package/dist/src/renderer/shaders/tsl/cosine-palette.d.ts +4 -0
  56. package/{packages/shader-lab-react/src/renderer/shaders/tsl/cosine-palette.ts → dist/src/renderer/shaders/tsl/cosine-palette.js} +3 -4
  57. package/dist/src/renderer/shaders/tsl/noise/common.d.ts +5 -0
  58. package/dist/src/renderer/shaders/tsl/noise/common.js +24 -0
  59. package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.d.ts +1 -0
  60. package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.js +27 -0
  61. package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.d.ts +1 -0
  62. package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.js +27 -0
  63. package/dist/src/renderer/shaders/tsl/noise/fbm.d.ts +1 -0
  64. package/dist/src/renderer/shaders/tsl/noise/fbm.js +11 -0
  65. package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.d.ts +5 -0
  66. package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.js +66 -0
  67. package/dist/src/renderer/shaders/tsl/noise/ridge-noise.d.ts +1 -0
  68. package/dist/src/renderer/shaders/tsl/noise/ridge-noise.js +19 -0
  69. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.d.ts +1 -0
  70. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.js +44 -0
  71. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.d.ts +1 -0
  72. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.js +51 -0
  73. package/dist/src/renderer/shaders/tsl/noise/turbulence.d.ts +7 -0
  74. package/dist/src/renderer/shaders/tsl/noise/turbulence.js +34 -0
  75. package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.d.ts +1 -0
  76. package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.js +27 -0
  77. package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.d.ts +1 -0
  78. package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.js +45 -0
  79. package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.d.ts +4 -0
  80. package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.js +13 -0
  81. package/dist/src/renderer/shaders/tsl/patterns/bloom.d.ts +4 -0
  82. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom.ts → dist/src/renderer/shaders/tsl/patterns/bloom.js} +4 -6
  83. package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.d.ts +4 -0
  84. package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.js +16 -0
  85. package/dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.d.ts +4 -0
  86. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts → dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.js} +3 -4
  87. package/dist/src/renderer/shaders/tsl/patterns/repeating-pattern.d.ts +4 -0
  88. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/repeating-pattern.ts → dist/src/renderer/shaders/tsl/patterns/repeating-pattern.js} +4 -6
  89. package/dist/src/renderer/shaders/tsl/utils/atan2.d.ts +1 -0
  90. package/dist/src/renderer/shaders/tsl/utils/atan2.js +7 -0
  91. package/dist/src/renderer/shaders/tsl/utils/complex-conj.d.ts +4 -0
  92. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-conj.ts → dist/src/renderer/shaders/tsl/utils/complex-conj.js} +3 -4
  93. package/dist/src/renderer/shaders/tsl/utils/complex-cos.d.ts +4 -0
  94. package/dist/src/renderer/shaders/tsl/utils/complex-cos.js +9 -0
  95. package/dist/src/renderer/shaders/tsl/utils/complex-div.d.ts +1 -0
  96. package/dist/src/renderer/shaders/tsl/utils/complex-div.js +6 -0
  97. package/dist/src/renderer/shaders/tsl/utils/complex-log.d.ts +1 -0
  98. package/dist/src/renderer/shaders/tsl/utils/complex-log.js +6 -0
  99. package/dist/src/renderer/shaders/tsl/utils/complex-mobius.d.ts +4 -0
  100. package/dist/src/renderer/shaders/tsl/utils/complex-mobius.js +10 -0
  101. package/dist/src/renderer/shaders/tsl/utils/complex-mul.d.ts +4 -0
  102. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mul.ts → dist/src/renderer/shaders/tsl/utils/complex-mul.js} +3 -4
  103. package/dist/src/renderer/shaders/tsl/utils/complex-pow.d.ts +5 -0
  104. package/dist/src/renderer/shaders/tsl/utils/complex-pow.js +14 -0
  105. package/dist/src/renderer/shaders/tsl/utils/complex-sin.d.ts +4 -0
  106. package/dist/src/renderer/shaders/tsl/utils/complex-sin.js +9 -0
  107. package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.d.ts +5 -0
  108. package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.js +12 -0
  109. package/dist/src/renderer/shaders/tsl/utils/complex-tan.d.ts +4 -0
  110. package/dist/src/renderer/shaders/tsl/utils/complex-tan.js +11 -0
  111. package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.d.ts +4 -0
  112. package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.js +9 -0
  113. package/dist/src/renderer/shaders/tsl/utils/hyperbolic.d.ts +8 -0
  114. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/hyperbolic.ts → dist/src/renderer/shaders/tsl/utils/hyperbolic.js} +7 -11
  115. package/dist/src/renderer/shaders/tsl/utils/index.d.ts +38 -0
  116. package/dist/src/renderer/shaders/tsl/utils/index.js +39 -0
  117. package/dist/src/renderer/shaders/tsl/utils/rotate.d.ts +2 -0
  118. package/dist/src/renderer/shaders/tsl/utils/rotate.js +7 -0
  119. package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.d.ts +2 -0
  120. package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.js +6 -0
  121. package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.d.ts +1 -0
  122. package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.js +5 -0
  123. package/dist/src/renderer/shaders/tsl/utils/sd-diamond.d.ts +1 -0
  124. package/dist/src/renderer/shaders/tsl/utils/sd-diamond.js +5 -0
  125. package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.d.ts +1 -0
  126. package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.js +14 -0
  127. package/dist/src/renderer/shaders/tsl/utils/sd-sphere.d.ts +1 -0
  128. package/dist/src/renderer/shaders/tsl/utils/sd-sphere.js +5 -0
  129. package/dist/src/renderer/shaders/tsl/utils/smax.d.ts +1 -0
  130. package/dist/src/renderer/shaders/tsl/utils/smax.js +6 -0
  131. package/dist/src/renderer/shaders/tsl/utils/smin.d.ts +1 -0
  132. package/dist/src/renderer/shaders/tsl/utils/smin.js +6 -0
  133. package/dist/src/renderer/text-pass.d.ts +23 -0
  134. package/dist/src/renderer/text-pass.js +129 -0
  135. package/dist/src/runtime-clock.d.ts +9 -0
  136. package/dist/src/runtime-clock.js +20 -0
  137. package/dist/src/runtime-frame.d.ts +11 -0
  138. package/dist/src/runtime-frame.js +12 -0
  139. package/dist/src/shader-lab-composition.d.ts +9 -0
  140. package/dist/src/shader-lab-composition.js +96 -0
  141. package/dist/src/timeline.d.ts +8 -0
  142. package/dist/src/timeline.js +179 -0
  143. package/dist/src/types/editor.d.ts +3 -0
  144. package/dist/src/types/editor.js +1 -0
  145. package/dist/src/types.d.ts +81 -0
  146. package/dist/src/types.js +1 -0
  147. package/package.json +28 -65
  148. package/.biome/plugins/README.md +0 -21
  149. package/.biome/plugins/no-anchor-element.grit +0 -12
  150. package/.biome/plugins/no-relative-parent-imports.grit +0 -10
  151. package/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
  152. package/.changeset/README.md +0 -17
  153. package/.changeset/config.json +0 -11
  154. package/.editorconfig +0 -40
  155. package/.env.example +0 -81
  156. package/.gitattributes +0 -19
  157. package/.github/workflows/canary.yml +0 -80
  158. package/.github/workflows/ci.yml +0 -37
  159. package/.github/workflows/release.yml +0 -56
  160. package/.tldrignore +0 -84
  161. package/.vscode/extensions.json +0 -20
  162. package/.vscode/settings.json +0 -105
  163. package/biome.json +0 -249
  164. package/bun.lock +0 -1224
  165. package/next.config.ts +0 -131
  166. package/packages/shader-lab-react/CHANGELOG.md +0 -9
  167. package/packages/shader-lab-react/README.md +0 -119
  168. package/packages/shader-lab-react/package.json +0 -36
  169. package/packages/shader-lab-react/scripts/fix-esm-specifiers.mjs +0 -57
  170. package/packages/shader-lab-react/scripts/prepare-dist.mjs +0 -4
  171. package/packages/shader-lab-react/src/ambient/three-tsl.d.ts +0 -146
  172. package/packages/shader-lab-react/src/ambient/three-webgpu.d.ts +0 -51
  173. package/packages/shader-lab-react/src/easings.ts +0 -4
  174. package/packages/shader-lab-react/src/index.ts +0 -35
  175. package/packages/shader-lab-react/src/lib/editor/custom-shader/shared.ts +0 -2
  176. package/packages/shader-lab-react/src/renderer/ascii-atlas.ts +0 -83
  177. package/packages/shader-lab-react/src/renderer/ascii-pass.ts +0 -416
  178. package/packages/shader-lab-react/src/renderer/asset-url.ts +0 -3
  179. package/packages/shader-lab-react/src/renderer/blend-modes.ts +0 -229
  180. package/packages/shader-lab-react/src/renderer/contracts.ts +0 -54
  181. package/packages/shader-lab-react/src/renderer/create-webgpu-renderer.ts +0 -48
  182. package/packages/shader-lab-react/src/renderer/crt-pass.ts +0 -1040
  183. package/packages/shader-lab-react/src/renderer/custom-shader-pass.ts +0 -108
  184. package/packages/shader-lab-react/src/renderer/custom-shader-runtime.ts +0 -309
  185. package/packages/shader-lab-react/src/renderer/dither-textures.ts +0 -99
  186. package/packages/shader-lab-react/src/renderer/dithering-pass.ts +0 -322
  187. package/packages/shader-lab-react/src/renderer/gradient-pass.ts +0 -521
  188. package/packages/shader-lab-react/src/renderer/halftone-pass.ts +0 -932
  189. package/packages/shader-lab-react/src/renderer/ink-pass.ts +0 -802
  190. package/packages/shader-lab-react/src/renderer/live-pass.ts +0 -194
  191. package/packages/shader-lab-react/src/renderer/media-pass.ts +0 -187
  192. package/packages/shader-lab-react/src/renderer/media-texture.ts +0 -66
  193. package/packages/shader-lab-react/src/renderer/particle-grid-pass.ts +0 -389
  194. package/packages/shader-lab-react/src/renderer/pass-node.ts +0 -209
  195. package/packages/shader-lab-react/src/renderer/pattern-atlas.ts +0 -133
  196. package/packages/shader-lab-react/src/renderer/pattern-pass.ts +0 -552
  197. package/packages/shader-lab-react/src/renderer/pipeline-manager.ts +0 -369
  198. package/packages/shader-lab-react/src/renderer/pixel-sorting-pass.ts +0 -277
  199. package/packages/shader-lab-react/src/renderer/shaders/tsl/color/tonemapping.ts +0 -87
  200. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/common.ts +0 -31
  201. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -36
  202. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -36
  203. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/fbm.ts +0 -13
  204. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -96
  205. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -24
  206. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -79
  207. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -89
  208. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/turbulence.ts +0 -56
  209. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -32
  210. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -60
  211. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -15
  212. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -24
  213. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/atan2.ts +0 -9
  214. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -10
  215. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-div.ts +0 -11
  216. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-log.ts +0 -7
  217. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -12
  218. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -16
  219. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -10
  220. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -18
  221. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -12
  222. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -10
  223. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/index.ts +0 -48
  224. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/rotate.ts +0 -15
  225. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -15
  226. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -6
  227. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -6
  228. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -27
  229. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -6
  230. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smax.ts +0 -7
  231. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smin.ts +0 -7
  232. package/packages/shader-lab-react/src/renderer/text-pass.ts +0 -176
  233. package/packages/shader-lab-react/src/runtime-clock.ts +0 -42
  234. package/packages/shader-lab-react/src/runtime-frame.ts +0 -29
  235. package/packages/shader-lab-react/src/shader-lab-composition.tsx +0 -163
  236. package/packages/shader-lab-react/src/timeline.ts +0 -283
  237. package/packages/shader-lab-react/src/types/editor.ts +0 -5
  238. package/packages/shader-lab-react/src/types.ts +0 -141
  239. package/packages/shader-lab-react/tsconfig.build.json +0 -8
  240. package/packages/shader-lab-react/tsconfig.json +0 -21
  241. package/postcss.config.mjs +0 -5
  242. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf-atlas.png +0 -0
  243. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf.json +0 -1412
  244. package/public/assets/patterns/bars/1.svg +0 -3
  245. package/public/assets/patterns/bars/2.svg +0 -3
  246. package/public/assets/patterns/bars/3.svg +0 -3
  247. package/public/assets/patterns/bars/4.svg +0 -3
  248. package/public/assets/patterns/bars/5.svg +0 -3
  249. package/public/assets/patterns/bars/6.svg +0 -3
  250. package/public/assets/patterns/candles/1.svg +0 -3
  251. package/public/assets/patterns/candles/2.svg +0 -3
  252. package/public/assets/patterns/candles/3.svg +0 -3
  253. package/public/assets/patterns/candles/4.svg +0 -3
  254. package/public/assets/patterns/shapes/1.svg +0 -3
  255. package/public/assets/patterns/shapes/2.svg +0 -3
  256. package/public/assets/patterns/shapes/3.svg +0 -3
  257. package/public/assets/patterns/shapes/4.svg +0 -4
  258. package/public/assets/patterns/shapes/5.svg +0 -3
  259. package/public/assets/patterns/shapes/6.svg +0 -4
  260. package/public/fonts/geist/Geist-Mono.woff2 +0 -0
  261. package/public/textures/blue-noise.png +0 -0
  262. package/public/textures/crt-mask.png +0 -0
  263. package/src/app/design/page.tsx +0 -398
  264. package/src/app/favicon.ico +0 -0
  265. package/src/app/globals.css +0 -280
  266. package/src/app/layout.tsx +0 -89
  267. package/src/app/page.tsx +0 -20
  268. package/src/app/robots.ts +0 -13
  269. package/src/app/sitemap.ts +0 -13
  270. package/src/components/editor/editor-canvas-viewport.tsx +0 -116
  271. package/src/components/editor/editor-export-dialog.tsx +0 -1177
  272. package/src/components/editor/editor-timeline-overlay.tsx +0 -983
  273. package/src/components/editor/editor-topbar.tsx +0 -287
  274. package/src/components/editor/layer-sidebar.tsx +0 -738
  275. package/src/components/editor/properties-sidebar-content.tsx +0 -574
  276. package/src/components/editor/properties-sidebar-fields.tsx +0 -389
  277. package/src/components/editor/properties-sidebar-utils.ts +0 -178
  278. package/src/components/editor/properties-sidebar.tsx +0 -421
  279. package/src/components/ui/button/index.tsx +0 -57
  280. package/src/components/ui/color-picker/index.tsx +0 -358
  281. package/src/components/ui/glass-panel/index.tsx +0 -45
  282. package/src/components/ui/icon-button/index.tsx +0 -46
  283. package/src/components/ui/select/index.tsx +0 -136
  284. package/src/components/ui/slider/index.tsx +0 -192
  285. package/src/components/ui/toggle/index.tsx +0 -34
  286. package/src/components/ui/typography/index.tsx +0 -61
  287. package/src/components/ui/xy-pad/index.tsx +0 -160
  288. package/src/features/editor/components/editor-export-dialog.module.css +0 -271
  289. package/src/hooks/use-editor-renderer.ts +0 -182
  290. package/src/lib/app.ts +0 -6
  291. package/src/lib/cn.ts +0 -7
  292. package/src/lib/easings.ts +0 -240
  293. package/src/lib/editor/config/layer-registry.ts +0 -2434
  294. package/src/lib/editor/custom-shader/shared.ts +0 -28
  295. package/src/lib/editor/export.ts +0 -420
  296. package/src/lib/editor/history.ts +0 -71
  297. package/src/lib/editor/layers.ts +0 -76
  298. package/src/lib/editor/parameter-schema.ts +0 -75
  299. package/src/lib/editor/project-file.ts +0 -145
  300. package/src/lib/editor/shader-export-snippet.ts +0 -37
  301. package/src/lib/editor/shader-export.ts +0 -315
  302. package/src/lib/editor/timeline/evaluate.ts +0 -252
  303. package/src/lib/editor/view-transform.ts +0 -58
  304. package/src/lib/fonts.ts +0 -28
  305. package/src/renderer/ascii-atlas.ts +0 -83
  306. package/src/renderer/ascii-pass.ts +0 -416
  307. package/src/renderer/blend-modes.ts +0 -229
  308. package/src/renderer/contracts.ts +0 -161
  309. package/src/renderer/create-webgpu-renderer.ts +0 -48
  310. package/src/renderer/crt-pass.ts +0 -1040
  311. package/src/renderer/custom-shader-pass.ts +0 -117
  312. package/src/renderer/custom-shader-runtime.ts +0 -309
  313. package/src/renderer/dither-textures.ts +0 -99
  314. package/src/renderer/dithering-pass.ts +0 -322
  315. package/src/renderer/gradient-pass.ts +0 -520
  316. package/src/renderer/halftone-pass.ts +0 -932
  317. package/src/renderer/ink-pass.ts +0 -683
  318. package/src/renderer/live-pass.ts +0 -194
  319. package/src/renderer/media-pass.ts +0 -187
  320. package/src/renderer/media-texture.ts +0 -66
  321. package/src/renderer/particle-grid-pass.ts +0 -389
  322. package/src/renderer/pass-node-factory.ts +0 -33
  323. package/src/renderer/pass-node.ts +0 -209
  324. package/src/renderer/pattern-atlas.ts +0 -97
  325. package/src/renderer/pattern-pass.ts +0 -552
  326. package/src/renderer/pipeline-manager.ts +0 -343
  327. package/src/renderer/pixel-sorting-pass.ts +0 -277
  328. package/src/renderer/project-clock.ts +0 -57
  329. package/src/renderer/shaders/tsl/color/tonemapping.ts +0 -86
  330. package/src/renderer/shaders/tsl/cosine-palette.ts +0 -8
  331. package/src/renderer/shaders/tsl/noise/common.ts +0 -30
  332. package/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -35
  333. package/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -35
  334. package/src/renderer/shaders/tsl/noise/fbm.ts +0 -12
  335. package/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -97
  336. package/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -23
  337. package/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -78
  338. package/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -88
  339. package/src/renderer/shaders/tsl/noise/turbulence.ts +0 -55
  340. package/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -31
  341. package/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -59
  342. package/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -14
  343. package/src/renderer/shaders/tsl/patterns/bloom.ts +0 -10
  344. package/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -23
  345. package/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts +0 -8
  346. package/src/renderer/shaders/tsl/patterns/repeating-pattern.ts +0 -10
  347. package/src/renderer/shaders/tsl/utils/atan2.ts +0 -8
  348. package/src/renderer/shaders/tsl/utils/complex-conj.ts +0 -8
  349. package/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -9
  350. package/src/renderer/shaders/tsl/utils/complex-div.ts +0 -10
  351. package/src/renderer/shaders/tsl/utils/complex-log.ts +0 -6
  352. package/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -11
  353. package/src/renderer/shaders/tsl/utils/complex-mul.ts +0 -8
  354. package/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -15
  355. package/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -9
  356. package/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -17
  357. package/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -11
  358. package/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -9
  359. package/src/renderer/shaders/tsl/utils/hyperbolic.ts +0 -19
  360. package/src/renderer/shaders/tsl/utils/index.ts +0 -47
  361. package/src/renderer/shaders/tsl/utils/rotate.ts +0 -14
  362. package/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -14
  363. package/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -5
  364. package/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -5
  365. package/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -26
  366. package/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -5
  367. package/src/renderer/shaders/tsl/utils/smax.ts +0 -7
  368. package/src/renderer/shaders/tsl/utils/smin.ts +0 -6
  369. package/src/renderer/text-pass.ts +0 -176
  370. package/src/store/asset-store.ts +0 -193
  371. package/src/store/editor-store.ts +0 -223
  372. package/src/store/history-store.ts +0 -172
  373. package/src/store/index.ts +0 -31
  374. package/src/store/layer-store.ts +0 -675
  375. package/src/store/timeline-store.ts +0 -572
  376. package/src/types/assets.d.ts +0 -6
  377. package/src/types/css.d.ts +0 -21
  378. package/src/types/editor.ts +0 -357
  379. package/src/types/react.d.ts +0 -15
  380. package/src/types/three-tsl.d.ts +0 -146
  381. package/src/types/three-webgpu.d.ts +0 -51
  382. package/tsconfig.json +0 -49
  383. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/1.svg +0 -0
  384. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/2.svg +0 -0
  385. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/3.svg +0 -0
  386. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/4.svg +0 -0
  387. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/5.svg +0 -0
  388. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/6.svg +0 -0
  389. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/1.svg +0 -0
  390. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/2.svg +0 -0
  391. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/3.svg +0 -0
  392. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/4.svg +0 -0
  393. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/1.svg +0 -0
  394. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/2.svg +0 -0
  395. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/3.svg +0 -0
  396. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/4.svg +0 -0
  397. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/5.svg +0 -0
  398. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/6.svg +0 -0
  399. /package/{packages/shader-lab-react/assets → assets}/textures/blue-noise.png +0 -0
@@ -1,572 +0,0 @@
1
- import { create } from "zustand"
2
- import { advanceProjectTimeline } from "@/renderer/project-clock"
3
- import type {
4
- AnimatedPropertyBinding,
5
- AnimatableValueType,
6
- EditorLayer,
7
- LayerAnimatableProperty,
8
- ParameterType,
9
- ParameterValue,
10
- TimelineInterpolation,
11
- TimelineKeyframe,
12
- TimelineStateSnapshot,
13
- TimelineTrack,
14
- } from "@/types/editor"
15
- import {
16
- cloneParameterValue,
17
- getParameterDefinition,
18
- } from "@/lib/editor/parameter-schema"
19
- import { getLayerDefinition } from "@/lib/editor/config/layer-registry"
20
-
21
- export interface TimelineStoreState extends TimelineStateSnapshot {}
22
-
23
- interface ToggleKeyframeInput {
24
- binding: AnimatedPropertyBinding
25
- layerId: string
26
- time?: number
27
- value: ParameterValue
28
- }
29
-
30
- interface UpsertKeyframeInput extends ToggleKeyframeInput {}
31
-
32
- export interface TimelineStoreActions {
33
- advance: (delta: number) => void
34
- clearLayerTracks: (layerId: string) => void
35
- getTrackForBinding: (
36
- layerId: string,
37
- binding: AnimatedPropertyBinding,
38
- ) => TimelineTrack | null
39
- pruneTracks: (layers: EditorLayer[]) => void
40
- replaceState: (
41
- nextState: Pick<
42
- TimelineStateSnapshot,
43
- "currentTime" | "duration" | "isPlaying" | "loop" | "selectedKeyframeId" | "selectedTrackId" | "tracks"
44
- >,
45
- ) => void
46
- removeKeyframe: (trackId: string, keyframeId: string) => void
47
- setCurrentTime: (time: number) => void
48
- setDuration: (duration: number) => void
49
- setLoop: (loop: boolean) => void
50
- setPlaying: (playing: boolean) => void
51
- setSelected: (trackId: string | null, keyframeId?: string | null) => void
52
- setTrackEnabled: (trackId: string, enabled: boolean) => void
53
- setTrackInterpolation: (trackId: string, interpolation: TimelineInterpolation) => void
54
- setKeyframeTime: (trackId: string, keyframeId: string, time: number) => void
55
- stop: () => void
56
- toggleKeyframe: (input: ToggleKeyframeInput) => void
57
- togglePlaying: () => void
58
- upsertKeyframe: (input: UpsertKeyframeInput) => void
59
- }
60
-
61
- export type TimelineStore = TimelineStoreState & TimelineStoreActions
62
-
63
- const DEFAULT_DURATION = 6
64
- const MIN_DURATION = 0.25
65
- const MAX_DURATION = 120
66
- const TIME_EPSILON = 1 / 240
67
-
68
- function clampDuration(duration: number): number {
69
- if (!Number.isFinite(duration)) {
70
- return DEFAULT_DURATION
71
- }
72
-
73
- return Math.min(MAX_DURATION, Math.max(MIN_DURATION, duration))
74
- }
75
-
76
- function clampTime(time: number, duration: number): number {
77
- if (!Number.isFinite(time)) {
78
- return 0
79
- }
80
-
81
- return Math.min(Math.max(duration, MIN_DURATION), Math.max(0, time))
82
- }
83
-
84
- function sortKeyframes(keyframes: TimelineKeyframe[]): TimelineKeyframe[] {
85
- return [...keyframes].sort((left, right) => left.time - right.time)
86
- }
87
-
88
- function bindingEquals(left: AnimatedPropertyBinding, right: AnimatedPropertyBinding): boolean {
89
- if (left.kind !== right.kind) {
90
- return false
91
- }
92
-
93
- if (left.kind === "param" && right.kind === "param") {
94
- return left.key === right.key
95
- }
96
-
97
- if (left.kind === "layer" && right.kind === "layer") {
98
- return left.property === right.property
99
- }
100
-
101
- return false
102
- }
103
-
104
- function isAnimatableValueType(
105
- valueType: ParameterType | AnimatableValueType,
106
- ): valueType is AnimatableValueType {
107
- return valueType !== "text"
108
- }
109
-
110
- function defaultInterpolationForBinding(binding: AnimatedPropertyBinding): TimelineInterpolation {
111
- if (binding.valueType === "boolean" || binding.valueType === "select") {
112
- return "step"
113
- }
114
-
115
- return "smooth"
116
- }
117
-
118
- function getLayerBindingValueType(property: LayerAnimatableProperty): "boolean" | "number" {
119
- if (property === "visible") {
120
- return "boolean"
121
- }
122
-
123
- return "number"
124
- }
125
-
126
- export function createLayerPropertyBinding(
127
- property: LayerAnimatableProperty,
128
- ): AnimatedPropertyBinding {
129
- const labelByProperty: Record<LayerAnimatableProperty, string> = {
130
- hue: "Hue",
131
- opacity: "Opacity",
132
- saturation: "Saturation",
133
- visible: "Visible",
134
- }
135
-
136
- return {
137
- kind: "layer",
138
- label: labelByProperty[property],
139
- property,
140
- valueType: getLayerBindingValueType(property),
141
- }
142
- }
143
-
144
- export function createParamBinding(
145
- layer: EditorLayer,
146
- key: string,
147
- ): AnimatedPropertyBinding | null {
148
- const definition = getParameterDefinition(getLayerDefinition(layer.type).params, key)
149
-
150
- if (!(definition && isAnimatableValueType(definition.type))) {
151
- return null
152
- }
153
-
154
- return {
155
- key,
156
- kind: "param",
157
- label: definition.label,
158
- valueType: definition.type,
159
- }
160
- }
161
-
162
- function cloneTrack(track: TimelineTrack): TimelineTrack {
163
- return {
164
- ...track,
165
- binding: { ...track.binding },
166
- keyframes: track.keyframes.map((keyframe) => ({
167
- ...keyframe,
168
- value: cloneParameterValue(keyframe.value),
169
- })),
170
- }
171
- }
172
-
173
- function cloneTracks(tracks: TimelineTrack[]): TimelineTrack[] {
174
- return tracks.map(cloneTrack)
175
- }
176
-
177
- export const useTimelineStore = create<TimelineStore>((set, get) => ({
178
- currentTime: 0,
179
- duration: DEFAULT_DURATION,
180
- isPlaying: false,
181
- loop: true,
182
- selectedKeyframeId: null,
183
- selectedTrackId: null,
184
- tracks: [],
185
-
186
- setPlaying: (isPlaying) => {
187
- set({ isPlaying })
188
- },
189
-
190
- togglePlaying: () => {
191
- set((state) => ({
192
- isPlaying: !state.isPlaying,
193
- }))
194
- },
195
-
196
- stop: () => {
197
- set({
198
- currentTime: 0,
199
- isPlaying: false,
200
- })
201
- },
202
-
203
- setLoop: (loop) => {
204
- set({ loop })
205
- },
206
-
207
- setDuration: (duration) => {
208
- set((state) => {
209
- const nextDuration = clampDuration(duration)
210
-
211
- return {
212
- currentTime: clampTime(state.currentTime, nextDuration),
213
- duration: nextDuration,
214
- tracks: state.tracks.map((track) => ({
215
- ...track,
216
- keyframes: sortKeyframes(
217
- track.keyframes.map((keyframe) => ({
218
- ...keyframe,
219
- time: clampTime(keyframe.time, nextDuration),
220
- })),
221
- ),
222
- })),
223
- }
224
- })
225
- },
226
-
227
- setCurrentTime: (currentTime) => {
228
- set((state) => ({
229
- currentTime: clampTime(currentTime, state.duration),
230
- }))
231
- },
232
-
233
- advance: (delta) => {
234
- if (!Number.isFinite(delta) || delta <= 0) {
235
- return
236
- }
237
-
238
- set((state) => {
239
- const next = advanceProjectTimeline(state, delta)
240
-
241
- return {
242
- currentTime: next.currentTime,
243
- isPlaying: next.isPlaying,
244
- }
245
- })
246
- },
247
-
248
- toggleKeyframe: ({ binding, layerId, time, value }) => {
249
- if (!isAnimatableValueType(binding.valueType)) {
250
- return
251
- }
252
-
253
- set((state) => {
254
- const targetTime = clampTime(time ?? state.currentTime, state.duration)
255
- const trackIndex = state.tracks.findIndex(
256
- (track) => track.layerId === layerId && bindingEquals(track.binding, binding),
257
- )
258
-
259
- if (trackIndex === -1) {
260
- const trackId = crypto.randomUUID()
261
- const keyframeId = crypto.randomUUID()
262
-
263
- return {
264
- selectedKeyframeId: keyframeId,
265
- selectedTrackId: trackId,
266
- tracks: [
267
- ...state.tracks,
268
- {
269
- binding: { ...binding },
270
- enabled: true,
271
- id: trackId,
272
- interpolation: defaultInterpolationForBinding(binding),
273
- keyframes: [
274
- {
275
- id: keyframeId,
276
- time: targetTime,
277
- value: cloneParameterValue(value),
278
- },
279
- ],
280
- layerId,
281
- },
282
- ],
283
- }
284
- }
285
-
286
- const track = state.tracks[trackIndex]
287
-
288
- if (!track) {
289
- return state
290
- }
291
-
292
- const existingKeyframe = track.keyframes.find(
293
- (keyframe) => Math.abs(keyframe.time - targetTime) <= TIME_EPSILON,
294
- )
295
-
296
- if (existingKeyframe) {
297
- const nextTracks = [...state.tracks]
298
- const nextTrack = cloneTrack(track)
299
- nextTrack.keyframes = nextTrack.keyframes.filter(
300
- (keyframe) => keyframe.id !== existingKeyframe.id,
301
- )
302
-
303
- if (nextTrack.keyframes.length === 0) {
304
- nextTracks.splice(trackIndex, 1)
305
- } else {
306
- nextTracks[trackIndex] = nextTrack
307
- }
308
-
309
- return {
310
- selectedKeyframeId:
311
- state.selectedKeyframeId === existingKeyframe.id
312
- ? null
313
- : state.selectedKeyframeId,
314
- selectedTrackId:
315
- nextTrack.keyframes.length === 0 && state.selectedTrackId === track.id
316
- ? null
317
- : state.selectedTrackId,
318
- tracks: nextTracks,
319
- }
320
- }
321
-
322
- const keyframeId = crypto.randomUUID()
323
- const nextTrack = cloneTrack(track)
324
- nextTrack.enabled = true
325
- nextTrack.keyframes = sortKeyframes([
326
- ...nextTrack.keyframes,
327
- {
328
- id: keyframeId,
329
- time: targetTime,
330
- value: cloneParameterValue(value),
331
- },
332
- ])
333
-
334
- const nextTracks = [...state.tracks]
335
- nextTracks[trackIndex] = nextTrack
336
-
337
- return {
338
- selectedKeyframeId: keyframeId,
339
- selectedTrackId: nextTrack.id,
340
- tracks: nextTracks,
341
- }
342
- })
343
- },
344
-
345
- upsertKeyframe: ({ binding, layerId, time, value }) => {
346
- if (!isAnimatableValueType(binding.valueType)) {
347
- return
348
- }
349
-
350
- set((state) => {
351
- const targetTime = clampTime(time ?? state.currentTime, state.duration)
352
- const trackIndex = state.tracks.findIndex(
353
- (track) => track.layerId === layerId && bindingEquals(track.binding, binding),
354
- )
355
-
356
- if (trackIndex === -1) {
357
- const trackId = crypto.randomUUID()
358
- const keyframeId = crypto.randomUUID()
359
-
360
- return {
361
- selectedKeyframeId: keyframeId,
362
- selectedTrackId: trackId,
363
- tracks: [
364
- ...state.tracks,
365
- {
366
- binding: { ...binding },
367
- enabled: true,
368
- id: trackId,
369
- interpolation: defaultInterpolationForBinding(binding),
370
- keyframes: [
371
- {
372
- id: keyframeId,
373
- time: targetTime,
374
- value: cloneParameterValue(value),
375
- },
376
- ],
377
- layerId,
378
- },
379
- ],
380
- }
381
- }
382
-
383
- const track = state.tracks[trackIndex]
384
-
385
- if (!track) {
386
- return state
387
- }
388
-
389
- const nextTrack = cloneTrack(track)
390
- const existingKeyframeIndex = nextTrack.keyframes.findIndex(
391
- (keyframe) => Math.abs(keyframe.time - targetTime) <= TIME_EPSILON,
392
- )
393
- let selectedKeyframeId = state.selectedKeyframeId
394
-
395
- if (existingKeyframeIndex !== -1) {
396
- const currentKeyframe = nextTrack.keyframes[existingKeyframeIndex]
397
-
398
- if (!currentKeyframe) {
399
- return state
400
- }
401
-
402
- nextTrack.keyframes[existingKeyframeIndex] = {
403
- ...currentKeyframe,
404
- value: cloneParameterValue(value),
405
- }
406
- selectedKeyframeId = currentKeyframe.id
407
- } else {
408
- const keyframeId = crypto.randomUUID()
409
- nextTrack.keyframes = sortKeyframes([
410
- ...nextTrack.keyframes,
411
- {
412
- id: keyframeId,
413
- time: targetTime,
414
- value: cloneParameterValue(value),
415
- },
416
- ])
417
- selectedKeyframeId = keyframeId
418
- }
419
-
420
- const nextTracks = [...state.tracks]
421
- nextTracks[trackIndex] = nextTrack
422
-
423
- return {
424
- selectedKeyframeId,
425
- selectedTrackId: nextTrack.id,
426
- tracks: nextTracks,
427
- }
428
- })
429
- },
430
-
431
- setTrackEnabled: (trackId, enabled) => {
432
- set((state) => ({
433
- tracks: state.tracks.map((track) =>
434
- track.id === trackId ? { ...track, enabled } : track,
435
- ),
436
- }))
437
- },
438
-
439
- setTrackInterpolation: (trackId, interpolation) => {
440
- set((state) => ({
441
- tracks: state.tracks.map((track) =>
442
- track.id === trackId ? { ...track, interpolation } : track,
443
- ),
444
- }))
445
- },
446
-
447
- setSelected: (selectedTrackId, selectedKeyframeId = null) => {
448
- set({
449
- selectedKeyframeId,
450
- selectedTrackId,
451
- })
452
- },
453
-
454
- setKeyframeTime: (trackId, keyframeId, time) => {
455
- set((state) => ({
456
- tracks: state.tracks.map((track) => {
457
- if (track.id !== trackId) {
458
- return track
459
- }
460
-
461
- return {
462
- ...track,
463
- keyframes: sortKeyframes(
464
- track.keyframes.map((keyframe) =>
465
- keyframe.id === keyframeId
466
- ? {
467
- ...keyframe,
468
- time: clampTime(time, state.duration),
469
- }
470
- : keyframe,
471
- ),
472
- ),
473
- }
474
- }),
475
- }))
476
- },
477
-
478
- removeKeyframe: (trackId, keyframeId) => {
479
- set((state) => {
480
- const nextTracks = state.tracks
481
- .map((track) => {
482
- if (track.id !== trackId) {
483
- return track
484
- }
485
-
486
- return {
487
- ...track,
488
- keyframes: track.keyframes.filter((keyframe) => keyframe.id !== keyframeId),
489
- }
490
- })
491
- .filter((track) => track.keyframes.length > 0)
492
-
493
- return {
494
- selectedKeyframeId:
495
- state.selectedKeyframeId === keyframeId ? null : state.selectedKeyframeId,
496
- selectedTrackId:
497
- state.selectedTrackId === trackId &&
498
- !nextTracks.some((track) => track.id === trackId)
499
- ? null
500
- : state.selectedTrackId,
501
- tracks: nextTracks,
502
- }
503
- })
504
- },
505
-
506
- clearLayerTracks: (layerId) => {
507
- set((state) => {
508
- const nextTracks = state.tracks.filter((track) => track.layerId !== layerId)
509
- const selectedTrackStillExists = nextTracks.some(
510
- (track) => track.id === state.selectedTrackId,
511
- )
512
-
513
- return {
514
- selectedKeyframeId: selectedTrackStillExists ? state.selectedKeyframeId : null,
515
- selectedTrackId: selectedTrackStillExists ? state.selectedTrackId : null,
516
- tracks: nextTracks,
517
- }
518
- })
519
- },
520
-
521
- pruneTracks: (layers) => {
522
- const layerById = new Map(layers.map((layer) => [layer.id, layer]))
523
-
524
- set((state) => {
525
- const nextTracks = state.tracks.filter((track) => {
526
- const layer = layerById.get(track.layerId)
527
-
528
- if (!layer) {
529
- return false
530
- }
531
-
532
- if (track.binding.kind === "layer") {
533
- return true
534
- }
535
-
536
- const definition = getParameterDefinition(getLayerDefinition(layer.type).params, track.binding.key)
537
-
538
- return Boolean(definition && isAnimatableValueType(definition.type))
539
- })
540
-
541
- const selectedTrackStillExists = nextTracks.some(
542
- (track) => track.id === state.selectedTrackId,
543
- )
544
-
545
- return {
546
- selectedKeyframeId: selectedTrackStillExists ? state.selectedKeyframeId : null,
547
- selectedTrackId: selectedTrackStillExists ? state.selectedTrackId : null,
548
- tracks: nextTracks,
549
- }
550
- })
551
- },
552
-
553
- getTrackForBinding: (layerId, binding) => {
554
- return (
555
- get().tracks.find(
556
- (track) => track.layerId === layerId && bindingEquals(track.binding, binding),
557
- ) ?? null
558
- )
559
- },
560
-
561
- replaceState: (nextState) => {
562
- set({
563
- currentTime: clampTime(nextState.currentTime, nextState.duration),
564
- duration: clampDuration(nextState.duration),
565
- isPlaying: nextState.isPlaying,
566
- loop: nextState.loop,
567
- selectedKeyframeId: nextState.selectedKeyframeId,
568
- selectedTrackId: nextState.selectedTrackId,
569
- tracks: cloneTracks(nextState.tracks),
570
- })
571
- },
572
- }))
@@ -1,6 +0,0 @@
1
- declare module "*.svg" {
2
- import type { FC, SVGProps } from "react"
3
-
4
- const ReactComponent: FC<SVGProps<SVGSVGElement>>
5
- export default ReactComponent
6
- }
@@ -1,21 +0,0 @@
1
- // CSS module type declarations (ambient - no imports allowed)
2
-
3
- declare module "*.module.css" {
4
- const classes: { [key: string]: string }
5
- export default classes
6
- }
7
-
8
- declare module "*.module.scss" {
9
- const classes: { [key: string]: string }
10
- export default classes
11
- }
12
-
13
- declare module "*.module.sass" {
14
- const classes: { [key: string]: string }
15
- export default classes
16
- }
17
-
18
- // Regular CSS imports
19
- declare module "*.css"
20
- declare module "*.scss"
21
- declare module "*.sass"