shaders 2.5.87 → 2.5.89

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 (380) hide show
  1. package/dist/core/ConicGradient-BXXizzIs.js +92 -0
  2. package/dist/core/{Crescent-DnFexzlT.js → Crescent-DPxGWdPH.js} +1 -1
  3. package/dist/core/{Cross-rsVMygBv.js → Cross-CDyzf8TT.js} +1 -1
  4. package/dist/core/{Crystal-z-2qqfhQ.js → Crystal-DSuN8TNY.js} +1 -1
  5. package/dist/core/DiamondGradient-TsOxHjg_.js +123 -0
  6. package/dist/core/DropShadow-_VJqd8du.js +131 -0
  7. package/dist/core/{Ellipse-CJFK20Xl.js → Ellipse-BvlGDQyZ.js} +1 -1
  8. package/dist/core/{Emboss-DWXpvlZO.js → Emboss-CF-BN_CQ.js} +1 -1
  9. package/dist/core/{Flower-BST3LQVi.js → Flower-ByQNUJyZ.js} +1 -1
  10. package/dist/core/{Glass-BDHs6Enu.js → Glass-BGy9jsiS.js} +1 -1
  11. package/dist/core/{Grid-CV2iJqlk.js → Grid-Dweeo8b2.js} +32 -6
  12. package/dist/core/HexGrid-KxwCqF1D.js +85 -0
  13. package/dist/core/MultiPointGradient-BcjurHeM.js +181 -0
  14. package/dist/core/{Neon-gsfaMvGq.js → Neon-CRC16G0F.js} +1 -1
  15. package/dist/core/{Plasma-LpGeN0eG.js → Plasma-Cuv1eJhl.js} +2 -2
  16. package/dist/core/{Polygon-BeqB8MSz.js → Polygon-2V8po0Ba.js} +1 -1
  17. package/dist/core/RadialGradient-niSnNlOF.js +123 -0
  18. package/dist/core/{Ring-DJl9JUMR.js → Ring-BiKv_lr2.js} +1 -1
  19. package/dist/core/{RoundedRect--rHP7xW4.js → RoundedRect-BjOTRXb0.js} +1 -1
  20. package/dist/core/Solarize-B0aT_8tE.js +47 -0
  21. package/dist/core/{Star-CxI_taxd.js → Star-DJnks6B5.js} +1 -1
  22. package/dist/core/{Trapezoid-D7qg9Gc5.js → Trapezoid-CoK8i1IS.js} +1 -1
  23. package/dist/core/Truchet-Bz6ETvSS.js +100 -0
  24. package/dist/core/{Vesica-p8oNtcOH.js → Vesica-BELYZ5M8.js} +1 -1
  25. package/dist/core/{VideoTexture-ChFw0jKS.js → VideoTexture-C90aUnt4.js} +1 -1
  26. package/dist/core/Vignette-B94FMFBz.js +84 -0
  27. package/dist/core/Voronoi-DPWvdZ05.js +152 -0
  28. package/dist/core/Weave-DzZv1-19.js +95 -0
  29. package/dist/core/{WebcamTexture-CF1nwkNG.js → WebcamTexture-7SK_C_Xf.js} +1 -1
  30. package/dist/core/index.js +91 -81
  31. package/dist/core/registry.js +91 -81
  32. package/dist/core/shaderRegistry-DICjiu4V.js +242 -0
  33. package/dist/core/shaderRegistry.d.ts.map +1 -1
  34. package/dist/core/shaders/CRTScreen/index.js +1 -1
  35. package/dist/core/shaders/ConicGradient/index.d.ts +48 -0
  36. package/dist/core/shaders/ConicGradient/index.d.ts.map +1 -0
  37. package/dist/core/shaders/ConicGradient/index.js +4 -0
  38. package/dist/core/shaders/ContourLines/index.js +1 -1
  39. package/dist/core/shaders/Crescent/index.js +2 -2
  40. package/dist/core/shaders/Cross/index.js +2 -2
  41. package/dist/core/shaders/Crystal/index.js +2 -2
  42. package/dist/core/shaders/CursorRipples/index.js +1 -1
  43. package/dist/core/shaders/CursorTrail/index.js +1 -1
  44. package/dist/core/shaders/DiamondGradient/index.d.ts +60 -0
  45. package/dist/core/shaders/DiamondGradient/index.d.ts.map +1 -0
  46. package/dist/core/shaders/DiamondGradient/index.js +4 -0
  47. package/dist/core/shaders/DiffuseBlur/index.js +1 -1
  48. package/dist/core/shaders/Dither/index.js +1 -1
  49. package/dist/core/shaders/DotGrid/index.js +1 -1
  50. package/dist/core/shaders/DropShadow/index.d.ts +39 -0
  51. package/dist/core/shaders/DropShadow/index.d.ts.map +1 -0
  52. package/dist/core/shaders/DropShadow/index.js +4 -0
  53. package/dist/core/shaders/Duotone/index.js +1 -1
  54. package/dist/core/shaders/Ellipse/index.js +2 -2
  55. package/dist/core/shaders/Emboss/index.js +2 -2
  56. package/dist/core/shaders/FallingLines/index.js +1 -1
  57. package/dist/core/shaders/FilmGrain/index.js +1 -1
  58. package/dist/core/shaders/FloatingParticles/index.js +1 -1
  59. package/dist/core/shaders/FlowField/index.js +1 -1
  60. package/dist/core/shaders/Flower/index.js +2 -2
  61. package/dist/core/shaders/FlowingGradient/index.js +1 -1
  62. package/dist/core/shaders/Form3D/index.js +1 -1
  63. package/dist/core/shaders/Glass/index.js +2 -2
  64. package/dist/core/shaders/GlassTiles/index.js +1 -1
  65. package/dist/core/shaders/Glitch/index.js +1 -1
  66. package/dist/core/shaders/Glow/index.js +1 -1
  67. package/dist/core/shaders/Godrays/index.js +1 -1
  68. package/dist/core/shaders/Grayscale/index.js +1 -1
  69. package/dist/core/shaders/Grid/index.d.ts +6 -0
  70. package/dist/core/shaders/Grid/index.d.ts.map +1 -1
  71. package/dist/core/shaders/Grid/index.js +1 -1
  72. package/dist/core/shaders/GridDistortion/index.js +1 -1
  73. package/dist/core/shaders/Group/index.js +1 -1
  74. package/dist/core/shaders/Halftone/index.js +1 -1
  75. package/dist/core/shaders/HexGrid/index.d.ts +41 -0
  76. package/dist/core/shaders/HexGrid/index.d.ts.map +1 -0
  77. package/dist/core/shaders/HexGrid/index.js +4 -0
  78. package/dist/core/shaders/HueShift/index.js +1 -1
  79. package/dist/core/shaders/ImageTexture/index.js +1 -1
  80. package/dist/core/shaders/Invert/index.js +1 -1
  81. package/dist/core/shaders/Kaleidoscope/index.js +1 -1
  82. package/dist/core/shaders/LensFlare/index.js +1 -1
  83. package/dist/core/shaders/LinearBlur/index.js +1 -1
  84. package/dist/core/shaders/LinearGradient/index.js +1 -1
  85. package/dist/core/shaders/Liquify/index.js +1 -1
  86. package/dist/core/shaders/Mirror/index.js +1 -1
  87. package/dist/core/shaders/MultiPointGradient/index.d.ts +84 -0
  88. package/dist/core/shaders/MultiPointGradient/index.d.ts.map +1 -0
  89. package/dist/core/shaders/MultiPointGradient/index.js +3 -0
  90. package/dist/core/shaders/Neon/index.js +2 -2
  91. package/dist/core/shaders/Paper/index.js +1 -1
  92. package/dist/core/shaders/Perspective/index.js +1 -1
  93. package/dist/core/shaders/Pixelate/index.js +1 -1
  94. package/dist/core/shaders/Plasma/index.js +1 -1
  95. package/dist/core/shaders/PolarCoordinates/index.js +1 -1
  96. package/dist/core/shaders/Polygon/index.js +2 -2
  97. package/dist/core/shaders/Posterize/index.js +1 -1
  98. package/dist/core/shaders/ProgressiveBlur/index.js +1 -1
  99. package/dist/core/shaders/RadialGradient/index.d.ts +18 -0
  100. package/dist/core/shaders/RadialGradient/index.d.ts.map +1 -1
  101. package/dist/core/shaders/RadialGradient/index.js +1 -1
  102. package/dist/core/shaders/RectangularCoordinates/index.js +1 -1
  103. package/dist/core/shaders/Ring/index.js +2 -2
  104. package/dist/core/shaders/Ripples/index.js +1 -1
  105. package/dist/core/shaders/RoundedRect/index.js +2 -2
  106. package/dist/core/shaders/Saturation/index.js +1 -1
  107. package/dist/core/shaders/Sharpness/index.js +1 -1
  108. package/dist/core/shaders/Shatter/index.js +1 -1
  109. package/dist/core/shaders/SimplexNoise/index.js +1 -1
  110. package/dist/core/shaders/SineWave/index.js +1 -1
  111. package/dist/core/shaders/Solarize/index.d.ts +19 -0
  112. package/dist/core/shaders/Solarize/index.d.ts.map +1 -0
  113. package/dist/core/shaders/Solarize/index.js +2 -0
  114. package/dist/core/shaders/SolidColor/index.js +1 -1
  115. package/dist/core/shaders/Spherize/index.js +1 -1
  116. package/dist/core/shaders/Spiral/index.js +1 -1
  117. package/dist/core/shaders/Star/index.js +2 -2
  118. package/dist/core/shaders/Strands/index.js +1 -1
  119. package/dist/core/shaders/Stretch/index.js +1 -1
  120. package/dist/core/shaders/Stripes/index.js +1 -1
  121. package/dist/core/shaders/StudioBackground/index.js +1 -1
  122. package/dist/core/shaders/Swirl/index.js +1 -1
  123. package/dist/core/shaders/TiltShift/index.js +1 -1
  124. package/dist/core/shaders/Tint/index.js +1 -1
  125. package/dist/core/shaders/Trapezoid/index.js +2 -2
  126. package/dist/core/shaders/Tritone/index.js +1 -1
  127. package/dist/core/shaders/Truchet/index.d.ts +47 -0
  128. package/dist/core/shaders/Truchet/index.d.ts.map +1 -0
  129. package/dist/core/shaders/Truchet/index.js +4 -0
  130. package/dist/core/shaders/Twirl/index.js +1 -1
  131. package/dist/core/shaders/Vesica/index.js +2 -2
  132. package/dist/core/shaders/Vibrance/index.js +1 -1
  133. package/dist/core/shaders/VideoTexture/index.js +2 -2
  134. package/dist/core/shaders/Vignette/index.d.ts +40 -0
  135. package/dist/core/shaders/Vignette/index.d.ts.map +1 -0
  136. package/dist/core/shaders/Vignette/index.js +3 -0
  137. package/dist/core/shaders/Voronoi/index.d.ts +67 -0
  138. package/dist/core/shaders/Voronoi/index.d.ts.map +1 -0
  139. package/dist/core/shaders/Voronoi/index.js +5 -0
  140. package/dist/core/shaders/WaveDistortion/index.js +1 -1
  141. package/dist/core/shaders/Weave/index.d.ts +40 -0
  142. package/dist/core/shaders/Weave/index.d.ts.map +1 -0
  143. package/dist/core/shaders/Weave/index.js +3 -0
  144. package/dist/core/shaders/WebcamTexture/index.js +2 -2
  145. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  146. package/dist/js/createShader.js +1 -1
  147. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  148. package/dist/js/utils/generatePresetCode.js +141 -1
  149. package/dist/react/ConicGradient.js +181 -0
  150. package/dist/react/DiamondGradient.js +181 -0
  151. package/dist/react/DropShadow.js +181 -0
  152. package/dist/react/HexGrid.js +181 -0
  153. package/dist/react/MultiPointGradient.js +181 -0
  154. package/dist/react/Preview.js +10 -0
  155. package/dist/react/Shader.js +1 -1
  156. package/dist/react/Solarize.js +181 -0
  157. package/dist/react/Truchet.js +181 -0
  158. package/dist/react/Vignette.js +181 -0
  159. package/dist/react/Voronoi.js +181 -0
  160. package/dist/react/Weave.js +181 -0
  161. package/dist/react/components/ConicGradient.d.ts +35 -0
  162. package/dist/react/components/ConicGradient.d.ts.map +1 -0
  163. package/dist/react/components/DiamondGradient.d.ts +37 -0
  164. package/dist/react/components/DiamondGradient.d.ts.map +1 -0
  165. package/dist/react/components/DropShadow.d.ts +36 -0
  166. package/dist/react/components/DropShadow.d.ts.map +1 -0
  167. package/dist/react/components/Grid.d.ts +2 -1
  168. package/dist/react/components/Grid.d.ts.map +1 -1
  169. package/dist/react/components/HexGrid.d.ts +34 -0
  170. package/dist/react/components/HexGrid.d.ts.map +1 -0
  171. package/dist/react/components/MultiPointGradient.d.ts +38 -0
  172. package/dist/react/components/MultiPointGradient.d.ts.map +1 -0
  173. package/dist/react/components/RadialGradient.d.ts +4 -1
  174. package/dist/react/components/RadialGradient.d.ts.map +1 -1
  175. package/dist/react/components/Solarize.d.ts +34 -0
  176. package/dist/react/components/Solarize.d.ts.map +1 -0
  177. package/dist/react/components/Truchet.d.ts +35 -0
  178. package/dist/react/components/Truchet.d.ts.map +1 -0
  179. package/dist/react/components/Vignette.d.ts +36 -0
  180. package/dist/react/components/Vignette.d.ts.map +1 -0
  181. package/dist/react/components/Voronoi.d.ts +36 -0
  182. package/dist/react/components/Voronoi.d.ts.map +1 -0
  183. package/dist/react/components/Weave.d.ts +35 -0
  184. package/dist/react/components/Weave.d.ts.map +1 -0
  185. package/dist/react/engine/Preview.d.ts.map +1 -1
  186. package/dist/react/index.d.ts +10 -0
  187. package/dist/react/index.d.ts.map +1 -1
  188. package/dist/react/index.js +11 -1
  189. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  190. package/dist/react/utils/generatePresetCode.js +141 -1
  191. package/dist/registry.js +2315 -267
  192. package/dist/solid/components/ConicGradient.d.ts +32 -0
  193. package/dist/solid/components/ConicGradient.d.ts.map +1 -0
  194. package/dist/solid/components/ConicGradient.js +183 -0
  195. package/dist/solid/components/DiamondGradient.d.ts +34 -0
  196. package/dist/solid/components/DiamondGradient.d.ts.map +1 -0
  197. package/dist/solid/components/DiamondGradient.js +183 -0
  198. package/dist/solid/components/DropShadow.d.ts +33 -0
  199. package/dist/solid/components/DropShadow.d.ts.map +1 -0
  200. package/dist/solid/components/DropShadow.js +183 -0
  201. package/dist/solid/components/Grid.d.ts +2 -1
  202. package/dist/solid/components/Grid.d.ts.map +1 -1
  203. package/dist/solid/components/HexGrid.d.ts +31 -0
  204. package/dist/solid/components/HexGrid.d.ts.map +1 -0
  205. package/dist/solid/components/HexGrid.js +183 -0
  206. package/dist/solid/components/MultiPointGradient.d.ts +35 -0
  207. package/dist/solid/components/MultiPointGradient.d.ts.map +1 -0
  208. package/dist/solid/components/MultiPointGradient.js +183 -0
  209. package/dist/solid/components/RadialGradient.d.ts +4 -1
  210. package/dist/solid/components/RadialGradient.d.ts.map +1 -1
  211. package/dist/solid/components/Solarize.d.ts +31 -0
  212. package/dist/solid/components/Solarize.d.ts.map +1 -0
  213. package/dist/solid/components/Solarize.js +183 -0
  214. package/dist/solid/components/Truchet.d.ts +32 -0
  215. package/dist/solid/components/Truchet.d.ts.map +1 -0
  216. package/dist/solid/components/Truchet.js +183 -0
  217. package/dist/solid/components/Vignette.d.ts +33 -0
  218. package/dist/solid/components/Vignette.d.ts.map +1 -0
  219. package/dist/solid/components/Vignette.js +183 -0
  220. package/dist/solid/components/Voronoi.d.ts +33 -0
  221. package/dist/solid/components/Voronoi.d.ts.map +1 -0
  222. package/dist/solid/components/Voronoi.js +183 -0
  223. package/dist/solid/components/Weave.d.ts +32 -0
  224. package/dist/solid/components/Weave.d.ts.map +1 -0
  225. package/dist/solid/components/Weave.js +183 -0
  226. package/dist/solid/engine/Preview.d.ts.map +1 -1
  227. package/dist/solid/engine/Preview.js +200 -180
  228. package/dist/solid/engine/Shader.js +1 -1
  229. package/dist/solid/index.d.ts +10 -0
  230. package/dist/solid/index.d.ts.map +1 -1
  231. package/dist/solid/index.js +178 -158
  232. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  233. package/dist/solid/utils/generatePresetCode.js +141 -1
  234. package/dist/svelte/components/ConicGradient.svelte.d.ts +22 -0
  235. package/dist/svelte/components/DiamondGradient.svelte.d.ts +24 -0
  236. package/dist/svelte/components/DropShadow.svelte.d.ts +23 -0
  237. package/dist/svelte/components/Grid.svelte.d.ts +1 -0
  238. package/dist/svelte/components/HexGrid.svelte.d.ts +21 -0
  239. package/dist/svelte/components/MultiPointGradient.svelte.d.ts +25 -0
  240. package/dist/svelte/components/RadialGradient.svelte.d.ts +3 -0
  241. package/dist/svelte/components/Solarize.svelte.d.ts +21 -0
  242. package/dist/svelte/components/Truchet.svelte.d.ts +22 -0
  243. package/dist/svelte/components/Vignette.svelte.d.ts +23 -0
  244. package/dist/svelte/components/Voronoi.svelte.d.ts +23 -0
  245. package/dist/svelte/components/Weave.svelte.d.ts +22 -0
  246. package/dist/svelte/{generatePresetCode-BzFhasGi.js → generatePresetCode-C7KnCLnD.js} +141 -1
  247. package/dist/svelte/index.d.ts +10 -0
  248. package/dist/svelte/index.js +1810 -340
  249. package/dist/svelte/source/components/ConicGradient.svelte +289 -0
  250. package/dist/svelte/source/components/DiamondGradient.svelte +291 -0
  251. package/dist/svelte/source/components/DropShadow.svelte +290 -0
  252. package/dist/svelte/source/components/Grid.svelte +1 -0
  253. package/dist/svelte/source/components/HexGrid.svelte +288 -0
  254. package/dist/svelte/source/components/MultiPointGradient.svelte +292 -0
  255. package/dist/svelte/source/components/RadialGradient.svelte +3 -0
  256. package/dist/svelte/source/components/Solarize.svelte +288 -0
  257. package/dist/svelte/source/components/Truchet.svelte +289 -0
  258. package/dist/svelte/source/components/Vignette.svelte +290 -0
  259. package/dist/svelte/source/components/Voronoi.svelte +290 -0
  260. package/dist/svelte/source/components/Weave.svelte +289 -0
  261. package/dist/svelte/source/engine/Preview.svelte +20 -0
  262. package/dist/svelte/source/index.js +10 -0
  263. package/dist/svelte/utils/generatePresetCode.js +1 -1
  264. package/dist/vue/ConicGradient.js +3 -0
  265. package/dist/vue/ConicGradient.vue_vue_type_script_setup_true_lang.js +171 -0
  266. package/dist/vue/DiamondGradient.js +3 -0
  267. package/dist/vue/DiamondGradient.vue_vue_type_script_setup_true_lang.js +173 -0
  268. package/dist/vue/DropShadow.js +3 -0
  269. package/dist/vue/DropShadow.vue_vue_type_script_setup_true_lang.js +170 -0
  270. package/dist/vue/Grid.vue_vue_type_script_setup_true_lang.js +1 -0
  271. package/dist/vue/HexGrid.js +3 -0
  272. package/dist/vue/HexGrid.vue_vue_type_script_setup_true_lang.js +170 -0
  273. package/dist/vue/MultiPointGradient.js +3 -0
  274. package/dist/vue/MultiPointGradient.vue_vue_type_script_setup_true_lang.js +176 -0
  275. package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +20 -0
  276. package/dist/vue/RadialGradient.vue_vue_type_script_setup_true_lang.js +3 -0
  277. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  278. package/dist/vue/Solarize.js +3 -0
  279. package/dist/vue/Solarize.vue_vue_type_script_setup_true_lang.js +167 -0
  280. package/dist/vue/Truchet.js +3 -0
  281. package/dist/vue/Truchet.vue_vue_type_script_setup_true_lang.js +171 -0
  282. package/dist/vue/Vignette.js +3 -0
  283. package/dist/vue/Vignette.vue_vue_type_script_setup_true_lang.js +170 -0
  284. package/dist/vue/Voronoi.js +3 -0
  285. package/dist/vue/Voronoi.vue_vue_type_script_setup_true_lang.js +174 -0
  286. package/dist/vue/Weave.js +3 -0
  287. package/dist/vue/Weave.vue_vue_type_script_setup_true_lang.js +170 -0
  288. package/dist/vue/components/ConicGradient.vue.d.ts +57 -0
  289. package/dist/vue/components/ConicGradient.vue.d.ts.map +1 -0
  290. package/dist/vue/components/DiamondGradient.vue.d.ts +59 -0
  291. package/dist/vue/components/DiamondGradient.vue.d.ts.map +1 -0
  292. package/dist/vue/components/DropShadow.vue.d.ts +58 -0
  293. package/dist/vue/components/DropShadow.vue.d.ts.map +1 -0
  294. package/dist/vue/components/Grid.vue.d.ts +1 -0
  295. package/dist/vue/components/Grid.vue.d.ts.map +1 -1
  296. package/dist/vue/components/HexGrid.vue.d.ts +56 -0
  297. package/dist/vue/components/HexGrid.vue.d.ts.map +1 -0
  298. package/dist/vue/components/MultiPointGradient.vue.d.ts +60 -0
  299. package/dist/vue/components/MultiPointGradient.vue.d.ts.map +1 -0
  300. package/dist/vue/components/RadialGradient.vue.d.ts +3 -0
  301. package/dist/vue/components/RadialGradient.vue.d.ts.map +1 -1
  302. package/dist/vue/components/Solarize.vue.d.ts +56 -0
  303. package/dist/vue/components/Solarize.vue.d.ts.map +1 -0
  304. package/dist/vue/components/Truchet.vue.d.ts +57 -0
  305. package/dist/vue/components/Truchet.vue.d.ts.map +1 -0
  306. package/dist/vue/components/Vignette.vue.d.ts +58 -0
  307. package/dist/vue/components/Vignette.vue.d.ts.map +1 -0
  308. package/dist/vue/components/Voronoi.vue.d.ts +58 -0
  309. package/dist/vue/components/Voronoi.vue.d.ts.map +1 -0
  310. package/dist/vue/components/Weave.vue.d.ts +57 -0
  311. package/dist/vue/components/Weave.vue.d.ts.map +1 -0
  312. package/dist/vue/index.d.ts +10 -0
  313. package/dist/vue/index.d.ts.map +1 -1
  314. package/dist/vue/index.js +11 -1
  315. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  316. package/dist/vue/utils/generatePresetCode.js +141 -1
  317. package/package.json +106 -1
  318. package/dist/core/RadialGradient-BMmhr2qB.js +0 -75
  319. package/dist/core/shaderRegistry-O96t1zA9.js +0 -222
  320. /package/dist/core/{CRTScreen-BZ-sAmPZ.js → CRTScreen-DolQEkb1.js} +0 -0
  321. /package/dist/core/{ContourLines-yEb5IJ1Y.js → ContourLines-C0XSJEkE.js} +0 -0
  322. /package/dist/core/{CursorRipples-CkVMs3DF.js → CursorRipples-n_xEDr10.js} +0 -0
  323. /package/dist/core/{CursorTrail-1D7ymT9O.js → CursorTrail-Dm2pOh9x.js} +0 -0
  324. /package/dist/core/{DiffuseBlur-BAq1jHVB.js → DiffuseBlur-BqIV4JLM.js} +0 -0
  325. /package/dist/core/{Dither-U_UFB8oZ.js → Dither-D_YF6z03.js} +0 -0
  326. /package/dist/core/{DotGrid-BzAsAVrt.js → DotGrid-Cv_aCN_c.js} +0 -0
  327. /package/dist/core/{Duotone-CuIRHH_k.js → Duotone-Db9kfzCs.js} +0 -0
  328. /package/dist/core/{FallingLines-BQzBwOy0.js → FallingLines-CTa8zuvs.js} +0 -0
  329. /package/dist/core/{FilmGrain-Birzz05_.js → FilmGrain-SrB3ZXIg.js} +0 -0
  330. /package/dist/core/{FloatingParticles-shoqY6fm.js → FloatingParticles-BVUK6GlL.js} +0 -0
  331. /package/dist/core/{FlowField-CJdtd3Za.js → FlowField-CF95xOBc.js} +0 -0
  332. /package/dist/core/{FlowingGradient-Dsuqf7Yn.js → FlowingGradient-DhOce4wJ.js} +0 -0
  333. /package/dist/core/{Form3D-Czd8VBcU.js → Form3D-CcBdpCQr.js} +0 -0
  334. /package/dist/core/{GlassTiles-CQFngHS9.js → GlassTiles-LsfUL0JT.js} +0 -0
  335. /package/dist/core/{Glitch-q3H4XH_K.js → Glitch-DuQ-dtyM.js} +0 -0
  336. /package/dist/core/{Glow-BltxRvyM.js → Glow-CsiZkj9_.js} +0 -0
  337. /package/dist/core/{Godrays-YxezlRHu.js → Godrays-CoSL15CM.js} +0 -0
  338. /package/dist/core/{Grayscale-D_RwmAV3.js → Grayscale-BrwJ4_uW.js} +0 -0
  339. /package/dist/core/{GridDistortion-JCuvWcoV.js → GridDistortion-DIarsmKa.js} +0 -0
  340. /package/dist/core/{Group-CeA8FtS3.js → Group-Cc3_0QdC.js} +0 -0
  341. /package/dist/core/{Halftone-4oL_AA-D.js → Halftone-nfr7eNaT.js} +0 -0
  342. /package/dist/core/{HueShift-7Gv8BV4v.js → HueShift-kNK2rEVM.js} +0 -0
  343. /package/dist/core/{ImageTexture-BaVcRld1.js → ImageTexture-acllbA1z.js} +0 -0
  344. /package/dist/core/{Invert-D_jzp4D9.js → Invert-CMnUhHo2.js} +0 -0
  345. /package/dist/core/{Kaleidoscope-Baz9Fu8k.js → Kaleidoscope-CgnidMrq.js} +0 -0
  346. /package/dist/core/{LensFlare-Dyv84bAb.js → LensFlare-CkCTGuKS.js} +0 -0
  347. /package/dist/core/{LinearBlur-ZGWbzIt4.js → LinearBlur-ByirUCm_.js} +0 -0
  348. /package/dist/core/{LinearGradient-CZGPiyHq.js → LinearGradient-B2ErQXPL.js} +0 -0
  349. /package/dist/core/{Liquify-DrWLq2Kz.js → Liquify-BTyJAOmV.js} +0 -0
  350. /package/dist/core/{Mirror-C5LuGm-w.js → Mirror-CAW37Y13.js} +0 -0
  351. /package/dist/core/{Paper-BVuYd7u4.js → Paper-Dkh14pIW.js} +0 -0
  352. /package/dist/core/{Perspective-CqV-lhEE.js → Perspective-CyG4fNaI.js} +0 -0
  353. /package/dist/core/{Pixelate-DrG7QsBR.js → Pixelate-DkD_q_Ma.js} +0 -0
  354. /package/dist/core/{PolarCoordinates-CiNUC56M.js → PolarCoordinates-iQB2vg0q.js} +0 -0
  355. /package/dist/core/{Posterize-CGEUVRt_.js → Posterize-Bnf3EUfk.js} +0 -0
  356. /package/dist/core/{ProgressiveBlur-jEam9zrU.js → ProgressiveBlur-Bc_dXikb.js} +0 -0
  357. /package/dist/core/{RectangularCoordinates-Cj-d2ol3.js → RectangularCoordinates-DbQ25OTz.js} +0 -0
  358. /package/dist/core/{Ripples-r12S7WG7.js → Ripples-Daco0GPY.js} +0 -0
  359. /package/dist/core/{Saturation-BAORnZso.js → Saturation-BNWZN-nJ.js} +0 -0
  360. /package/dist/core/{Sharpness-CFzYBYlL.js → Sharpness-tRNM2arG.js} +0 -0
  361. /package/dist/core/{Shatter-avsezFDy.js → Shatter-Cyq_lBjn.js} +0 -0
  362. /package/dist/core/{SimplexNoise-BjoeAe6H.js → SimplexNoise-DSvDs4b7.js} +0 -0
  363. /package/dist/core/{SineWave-B-2YxAht.js → SineWave-Beim8Xoe.js} +0 -0
  364. /package/dist/core/{SolidColor-2o0vQu86.js → SolidColor-kt6ayyXz.js} +0 -0
  365. /package/dist/core/{Spherize-DKJKva6y.js → Spherize-u6gO2hh2.js} +0 -0
  366. /package/dist/core/{Spiral-Dzsm_AJG.js → Spiral-DRpE_jsz.js} +0 -0
  367. /package/dist/core/{Strands-42wUIQMv.js → Strands-BqCaitMb.js} +0 -0
  368. /package/dist/core/{Stretch-BVPICFxU.js → Stretch-TztFP3F2.js} +0 -0
  369. /package/dist/core/{Stripes-DpWPzhd5.js → Stripes-UYWf5Cmn.js} +0 -0
  370. /package/dist/core/{StudioBackground-CxOYZ28g.js → StudioBackground-CvKGt77W.js} +0 -0
  371. /package/dist/core/{Swirl-CaQpQWY2.js → Swirl-YCWu5OJE.js} +0 -0
  372. /package/dist/core/{TiltShift-yJYvxA1V.js → TiltShift-DKibnYzM.js} +0 -0
  373. /package/dist/core/{Tint-BR2yMhfB.js → Tint-aVYSCIlD.js} +0 -0
  374. /package/dist/core/{Tritone-PTTYWr_w.js → Tritone-Cn0ugwld.js} +0 -0
  375. /package/dist/core/{Twirl-CE2yzv3_.js → Twirl-Dk8y9GcM.js} +0 -0
  376. /package/dist/core/{Vibrance-CljpZu_J.js → Vibrance-Cdx5A_q2.js} +0 -0
  377. /package/dist/core/{WaveDistortion-BSt0JJbk.js → WaveDistortion-C7mIgJok.js} +0 -0
  378. /package/dist/core/{ZoomBlur-CAeswzf5.js → ZoomBlur-DUcqnggc.js} +0 -0
  379. /package/dist/core/{browser-CWKHEzb9.js → browser-CpS3EEFG.js} +0 -0
  380. /package/dist/core/{sdf-CZRX0uur.js → sdf-Bux00UoZ.js} +0 -0
@@ -0,0 +1,290 @@
1
+ <script lang="ts">
2
+ import { getContext, setContext, onMount, onDestroy } from 'svelte';
3
+ import {
4
+ createUniformsMap,
5
+ type UniformsMap,
6
+ type BlendMode,
7
+ type NodeMetadata,
8
+ type PropConfig,
9
+ type MaskConfig,
10
+ type PropDriver,
11
+ type TransformConfig
12
+ } from '../../../core/index.js';
13
+ import {setColorSpaceMode} from '../../../core/utilities/transformations/index.js';
14
+
15
+ // @ts-ignore - this import is replaced at build time
16
+ import { componentDefinition, type ComponentProps } from '../../../core/shaders/Voronoi/index.js';
17
+
18
+ /**
19
+ * Define component props including blend mode, opacity, visibility, masking, and transformation
20
+ */
21
+ interface ExtendedComponentProps extends Partial<ComponentProps> {
22
+ scale?: ComponentProps['scale'] | PropDriver;
23
+ seed?: ComponentProps['seed'] | PropDriver;
24
+ edgeIntensity?: ComponentProps['edgeIntensity'] | PropDriver;
25
+ edgeSoftness?: ComponentProps['edgeSoftness'] | PropDriver;
26
+ blendMode?: BlendMode;
27
+ opacity?: number;
28
+ visible?: boolean;
29
+ id?: string;
30
+ maskSource?: string;
31
+ maskType?: string;
32
+ renderOrder?: number;
33
+ transform?: Partial<TransformConfig>;
34
+ children?: import('svelte').Snippet;
35
+ }
36
+
37
+ function isPropDriver(value: unknown): value is PropDriver {
38
+ return typeof value === 'object' && value !== null && 'type' in value &&
39
+ ((value as any).type === 'map' || (value as any).type === 'mouse' || (value as any).type === 'mouse-position' || (value as any).type === 'auto-animate');
40
+ }
41
+
42
+ /**
43
+ * Default transform configuration (optimized for zero overhead)
44
+ */
45
+ const DEFAULT_TRANSFORM: TransformConfig = {
46
+ offsetX: 0,
47
+ offsetY: 0,
48
+ rotation: 0,
49
+ scale: 1,
50
+ anchorX: 0.5,
51
+ anchorY: 0.5,
52
+ edges: 'transparent'
53
+ };
54
+
55
+ // Define the component props and their default values from the shader definition
56
+ const componentDefaults = {
57
+ blendMode: 'normal' as BlendMode,
58
+ visible: true,
59
+ // opacity intentionally has no default - handled by renderer
60
+ // transform intentionally has no default - handled by effectiveTransform
61
+ ...Object.entries(componentDefinition.props).reduce(
62
+ (acc, [key, config]) => {
63
+ acc[key] = (config as unknown as PropConfig<typeof config>).default;
64
+ return acc;
65
+ },
66
+ {} as Record<string, any>
67
+ )
68
+ };
69
+
70
+ // Declare props using Svelte 5's syntax
71
+ const props: ExtendedComponentProps = $props();
72
+
73
+ // Apply defaults manually since Svelte 5 doesn't have withDefaults equivalent
74
+ // Use $derived so the metadata $effect re-runs when any of these change at runtime
75
+ const blendMode = $derived(props.blendMode ?? componentDefaults.blendMode);
76
+ const opacity = $derived(props.opacity); // No default - handled by renderer
77
+ const visible = $derived(props.visible ?? componentDefaults.visible); // Default to true
78
+ const id = $derived(props.id);
79
+ const maskSource = $derived(props.maskSource);
80
+ const maskType = $derived(props.maskType);
81
+ const renderOrder = $derived(props.renderOrder);
82
+ const { children } = props;
83
+
84
+ // Collect PropDriver values from shader props into the maps metadata structure
85
+ const mapsFromProps = $derived.by(() => {
86
+ const maps: Record<string, PropDriver> = {};
87
+ for (const key of Object.keys(componentDefinition.props)) {
88
+ const val = (props as any)[key];
89
+ if (isPropDriver(val)) maps[key] = val as PropDriver;
90
+ }
91
+ return Object.keys(maps).length > 0 ? maps : undefined;
92
+ });
93
+
94
+ /**
95
+ * Computed transform that merges user-provided values with defaults
96
+ */
97
+ const effectiveTransform = $derived({
98
+ ...DEFAULT_TRANSFORM,
99
+ ...props.transform
100
+ });
101
+
102
+ /**
103
+ * FIRST: Get the parent ID from context BEFORE setting our own context
104
+ */
105
+ const parentId = getContext<string>('shaderParentId');
106
+ if (parentId === undefined) {
107
+ throw new Error('Shader components must be used inside an <Shader> component or another shader component');
108
+ }
109
+
110
+ /**
111
+ * Use the provided ID or generate a unique identifier for this component instance
112
+ */
113
+ const instanceId = (id ? id.replace(/[^a-zA-Z0-9_]/g, '_') : null) || Math.random().toString(36).substring(2, 10);
114
+
115
+ /**
116
+ * THEN: Provide our unique identifier to child components
117
+ */
118
+ setContext('shaderParentId', instanceId);
119
+
120
+ /**
121
+ * Creates a non-reactive object containing only props that differ from defaults
122
+ * This optimization prevents unnecessary GPU uniform updates for unchanged values
123
+ * Special props like blendMode and opacity are handled separately
124
+ */
125
+ const shaderReadyProps = $derived.by(() => {
126
+ let baseProps = { ...componentDefaults };
127
+
128
+ // Only include props that differ from defaults (excluding special props and PropDrivers)
129
+ for (const key in props) {
130
+ if (key !== 'blendMode' && key !== 'opacity' && key !== 'visible' &&
131
+ key !== 'id' && key !== 'maskSource' && key !== 'maskType' && key !== 'renderOrder' &&
132
+ key !== 'transform' && key !== 'children') {
133
+ const propValue = (props as any)[key];
134
+ if (isPropDriver(propValue)) continue; // PropDrivers go to metadata.maps, not uniforms
135
+ const defaultValue = (componentDefaults as any)[key];
136
+ if (propValue !== undefined && propValue !== defaultValue) {
137
+ (baseProps as any)[key] = propValue;
138
+ }
139
+ }
140
+ }
141
+ return baseProps;
142
+ });
143
+
144
+ /**
145
+ * Get the color space from the root Shader component.
146
+ * Used to set the global color space mode before creating uniforms.
147
+ */
148
+ const shaderColorSpace = getContext<() => 'p3-linear' | 'srgb'>('shaderColorSpace');
149
+
150
+ /**
151
+ * Creates the GPU uniform values map using only the changed props
152
+ * Set the global color space mode before creating uniforms so colors are transformed correctly
153
+ * Note: Intentionally captures initial value - props are immutable after initialization
154
+ */
155
+ if (shaderColorSpace) {
156
+ setColorSpaceMode(shaderColorSpace());
157
+ }
158
+ // svelte-ignore state_referenced_locally
159
+ const uniforms: UniformsMap = createUniformsMap(componentDefinition, shaderReadyProps, instanceId);
160
+
161
+ /**
162
+ * Get the node registration function from parent context
163
+ */
164
+ const parentRegister = getContext<(id: string, fragmentNodeFunc: any, parentId: string | null, metadata: NodeMetadata | null, uniforms: UniformsMap | null, componentDefinition: any) => void>('shaderNodeRegister');
165
+ if (parentRegister === undefined) {
166
+ throw new Error('Shader components must be used inside an <Shader> component or another shader component');
167
+ }
168
+
169
+ /**
170
+ * Get the uniform update function from parent context
171
+ */
172
+ const parentUniformUpdate = getContext<(nodeId: string, uniformName: string, value: any) => void>('shaderUniformUpdate');
173
+ if (parentUniformUpdate === undefined) {
174
+ throw new Error('Shader components require shaderUniformUpdate from parent');
175
+ }
176
+
177
+ /**
178
+ * Get the metadata update function from parent context
179
+ */
180
+ const parentMetadataUpdate = getContext<(nodeId: string, metadata: NodeMetadata) => void>('shaderMetadataUpdate');
181
+ if (parentMetadataUpdate === undefined) {
182
+ throw new Error('Shader components require shaderMetadataUpdate from parent');
183
+ }
184
+
185
+ // DOM marker ref for determining render order from template position
186
+ let orderMarker: HTMLSpanElement;
187
+
188
+ // Stores the DOM-detected render order
189
+ let detectedRenderOrder: number | undefined = undefined;
190
+
191
+ // Flag to track when component is registered
192
+ let isRegistered = $state(false);
193
+
194
+ // Setup uniform watchers with registration guard
195
+ Object.entries(uniforms).forEach(([propName, { uniform, transform }]) => {
196
+ $effect(() => {
197
+ // Only run after component is registered
198
+ if (!isRegistered) return;
199
+
200
+ if (uniform && uniform.value !== undefined) {
201
+ const newValue = (props as any)[propName];
202
+ if (newValue !== undefined && !isPropDriver(newValue)) {
203
+ // Send raw value - renderer will handle transformation
204
+ // PropDriver values go to metadata.maps, not uniforms
205
+ parentUniformUpdate(instanceId, propName, newValue);
206
+ }
207
+ }
208
+ });
209
+ });
210
+
211
+ // Watch blend mode, opacity, visibility, masking, transformations, and prop maps changes
212
+ $effect(() => {
213
+ // Only run after component is registered
214
+ if (!isRegistered) return;
215
+
216
+ const metadata: NodeMetadata = {
217
+ blendMode,
218
+ opacity,
219
+ visible: visible === false ? false : true,
220
+ id,
221
+ mask: maskSource ? {
222
+ source: maskSource,
223
+ type: (maskType || 'alpha') as MaskConfig['type']
224
+ } : undefined,
225
+ maps: mapsFromProps,
226
+ renderOrder: renderOrder ?? detectedRenderOrder,
227
+ transform: effectiveTransform
228
+ };
229
+ parentMetadataUpdate(instanceId, metadata);
230
+ });
231
+
232
+ // Register this component after mount to ensure parent is ready
233
+ onMount(() => {
234
+ // Register this component with safety check
235
+ if (componentDefinition && typeof componentDefinition.fragmentNode === 'function') {
236
+ parentRegister(
237
+ instanceId,
238
+ componentDefinition.fragmentNode,
239
+ parentId,
240
+ {
241
+ blendMode,
242
+ opacity,
243
+ visible: visible !== false ? true : false,
244
+ id,
245
+ mask: maskSource ? {
246
+ source: maskSource,
247
+ type: (maskType || 'alpha') as MaskConfig['type']
248
+ } as MaskConfig : undefined,
249
+ maps: mapsFromProps,
250
+ renderOrder: renderOrder ?? detectedRenderOrder,
251
+ transform: effectiveTransform
252
+ },
253
+ uniforms,
254
+ componentDefinition
255
+ );
256
+
257
+ // Set flag to enable effects after successful registration
258
+ isRegistered = true;
259
+
260
+ // Detect DOM position for correct render ordering
261
+ if (renderOrder === undefined && orderMarker) {
262
+ const parent = orderMarker.parentElement;
263
+ if (parent) {
264
+ const siblings = parent.querySelectorAll(':scope > [data-shader-id]');
265
+ const position = Array.from(siblings).indexOf(orderMarker);
266
+ if (position >= 0) {
267
+ detectedRenderOrder = position;
268
+ parentMetadataUpdate(instanceId, { renderOrder: position } as NodeMetadata);
269
+ }
270
+ }
271
+ }
272
+ } else {
273
+ console.error('componentDefinition.fragmentNode is not a function:', {
274
+ componentDefinition,
275
+ fragmentNode: componentDefinition?.fragmentNode,
276
+ type: typeof componentDefinition?.fragmentNode
277
+ });
278
+ }
279
+ });
280
+
281
+ // Clean up node from registry when component is unmounted
282
+ onDestroy(() => {
283
+ isRegistered = false;
284
+ parentRegister(instanceId, null, null, null, null);
285
+ });
286
+ </script>
287
+
288
+ <span bind:this={orderMarker} style="display:contents" data-shader-id={instanceId}>
289
+ {@render children?.()}
290
+ </span>
@@ -0,0 +1,289 @@
1
+ <script lang="ts">
2
+ import { getContext, setContext, onMount, onDestroy } from 'svelte';
3
+ import {
4
+ createUniformsMap,
5
+ type UniformsMap,
6
+ type BlendMode,
7
+ type NodeMetadata,
8
+ type PropConfig,
9
+ type MaskConfig,
10
+ type PropDriver,
11
+ type TransformConfig
12
+ } from '../../../core/index.js';
13
+ import {setColorSpaceMode} from '../../../core/utilities/transformations/index.js';
14
+
15
+ // @ts-ignore - this import is replaced at build time
16
+ import { componentDefinition, type ComponentProps } from '../../../core/shaders/Weave/index.js';
17
+
18
+ /**
19
+ * Define component props including blend mode, opacity, visibility, masking, and transformation
20
+ */
21
+ interface ExtendedComponentProps extends Partial<ComponentProps> {
22
+ cells?: ComponentProps['cells'] | PropDriver;
23
+ gap?: ComponentProps['gap'] | PropDriver;
24
+ rotation?: ComponentProps['rotation'] | PropDriver;
25
+ blendMode?: BlendMode;
26
+ opacity?: number;
27
+ visible?: boolean;
28
+ id?: string;
29
+ maskSource?: string;
30
+ maskType?: string;
31
+ renderOrder?: number;
32
+ transform?: Partial<TransformConfig>;
33
+ children?: import('svelte').Snippet;
34
+ }
35
+
36
+ function isPropDriver(value: unknown): value is PropDriver {
37
+ return typeof value === 'object' && value !== null && 'type' in value &&
38
+ ((value as any).type === 'map' || (value as any).type === 'mouse' || (value as any).type === 'mouse-position' || (value as any).type === 'auto-animate');
39
+ }
40
+
41
+ /**
42
+ * Default transform configuration (optimized for zero overhead)
43
+ */
44
+ const DEFAULT_TRANSFORM: TransformConfig = {
45
+ offsetX: 0,
46
+ offsetY: 0,
47
+ rotation: 0,
48
+ scale: 1,
49
+ anchorX: 0.5,
50
+ anchorY: 0.5,
51
+ edges: 'transparent'
52
+ };
53
+
54
+ // Define the component props and their default values from the shader definition
55
+ const componentDefaults = {
56
+ blendMode: 'normal' as BlendMode,
57
+ visible: true,
58
+ // opacity intentionally has no default - handled by renderer
59
+ // transform intentionally has no default - handled by effectiveTransform
60
+ ...Object.entries(componentDefinition.props).reduce(
61
+ (acc, [key, config]) => {
62
+ acc[key] = (config as unknown as PropConfig<typeof config>).default;
63
+ return acc;
64
+ },
65
+ {} as Record<string, any>
66
+ )
67
+ };
68
+
69
+ // Declare props using Svelte 5's syntax
70
+ const props: ExtendedComponentProps = $props();
71
+
72
+ // Apply defaults manually since Svelte 5 doesn't have withDefaults equivalent
73
+ // Use $derived so the metadata $effect re-runs when any of these change at runtime
74
+ const blendMode = $derived(props.blendMode ?? componentDefaults.blendMode);
75
+ const opacity = $derived(props.opacity); // No default - handled by renderer
76
+ const visible = $derived(props.visible ?? componentDefaults.visible); // Default to true
77
+ const id = $derived(props.id);
78
+ const maskSource = $derived(props.maskSource);
79
+ const maskType = $derived(props.maskType);
80
+ const renderOrder = $derived(props.renderOrder);
81
+ const { children } = props;
82
+
83
+ // Collect PropDriver values from shader props into the maps metadata structure
84
+ const mapsFromProps = $derived.by(() => {
85
+ const maps: Record<string, PropDriver> = {};
86
+ for (const key of Object.keys(componentDefinition.props)) {
87
+ const val = (props as any)[key];
88
+ if (isPropDriver(val)) maps[key] = val as PropDriver;
89
+ }
90
+ return Object.keys(maps).length > 0 ? maps : undefined;
91
+ });
92
+
93
+ /**
94
+ * Computed transform that merges user-provided values with defaults
95
+ */
96
+ const effectiveTransform = $derived({
97
+ ...DEFAULT_TRANSFORM,
98
+ ...props.transform
99
+ });
100
+
101
+ /**
102
+ * FIRST: Get the parent ID from context BEFORE setting our own context
103
+ */
104
+ const parentId = getContext<string>('shaderParentId');
105
+ if (parentId === undefined) {
106
+ throw new Error('Shader components must be used inside an <Shader> component or another shader component');
107
+ }
108
+
109
+ /**
110
+ * Use the provided ID or generate a unique identifier for this component instance
111
+ */
112
+ const instanceId = (id ? id.replace(/[^a-zA-Z0-9_]/g, '_') : null) || Math.random().toString(36).substring(2, 10);
113
+
114
+ /**
115
+ * THEN: Provide our unique identifier to child components
116
+ */
117
+ setContext('shaderParentId', instanceId);
118
+
119
+ /**
120
+ * Creates a non-reactive object containing only props that differ from defaults
121
+ * This optimization prevents unnecessary GPU uniform updates for unchanged values
122
+ * Special props like blendMode and opacity are handled separately
123
+ */
124
+ const shaderReadyProps = $derived.by(() => {
125
+ let baseProps = { ...componentDefaults };
126
+
127
+ // Only include props that differ from defaults (excluding special props and PropDrivers)
128
+ for (const key in props) {
129
+ if (key !== 'blendMode' && key !== 'opacity' && key !== 'visible' &&
130
+ key !== 'id' && key !== 'maskSource' && key !== 'maskType' && key !== 'renderOrder' &&
131
+ key !== 'transform' && key !== 'children') {
132
+ const propValue = (props as any)[key];
133
+ if (isPropDriver(propValue)) continue; // PropDrivers go to metadata.maps, not uniforms
134
+ const defaultValue = (componentDefaults as any)[key];
135
+ if (propValue !== undefined && propValue !== defaultValue) {
136
+ (baseProps as any)[key] = propValue;
137
+ }
138
+ }
139
+ }
140
+ return baseProps;
141
+ });
142
+
143
+ /**
144
+ * Get the color space from the root Shader component.
145
+ * Used to set the global color space mode before creating uniforms.
146
+ */
147
+ const shaderColorSpace = getContext<() => 'p3-linear' | 'srgb'>('shaderColorSpace');
148
+
149
+ /**
150
+ * Creates the GPU uniform values map using only the changed props
151
+ * Set the global color space mode before creating uniforms so colors are transformed correctly
152
+ * Note: Intentionally captures initial value - props are immutable after initialization
153
+ */
154
+ if (shaderColorSpace) {
155
+ setColorSpaceMode(shaderColorSpace());
156
+ }
157
+ // svelte-ignore state_referenced_locally
158
+ const uniforms: UniformsMap = createUniformsMap(componentDefinition, shaderReadyProps, instanceId);
159
+
160
+ /**
161
+ * Get the node registration function from parent context
162
+ */
163
+ const parentRegister = getContext<(id: string, fragmentNodeFunc: any, parentId: string | null, metadata: NodeMetadata | null, uniforms: UniformsMap | null, componentDefinition: any) => void>('shaderNodeRegister');
164
+ if (parentRegister === undefined) {
165
+ throw new Error('Shader components must be used inside an <Shader> component or another shader component');
166
+ }
167
+
168
+ /**
169
+ * Get the uniform update function from parent context
170
+ */
171
+ const parentUniformUpdate = getContext<(nodeId: string, uniformName: string, value: any) => void>('shaderUniformUpdate');
172
+ if (parentUniformUpdate === undefined) {
173
+ throw new Error('Shader components require shaderUniformUpdate from parent');
174
+ }
175
+
176
+ /**
177
+ * Get the metadata update function from parent context
178
+ */
179
+ const parentMetadataUpdate = getContext<(nodeId: string, metadata: NodeMetadata) => void>('shaderMetadataUpdate');
180
+ if (parentMetadataUpdate === undefined) {
181
+ throw new Error('Shader components require shaderMetadataUpdate from parent');
182
+ }
183
+
184
+ // DOM marker ref for determining render order from template position
185
+ let orderMarker: HTMLSpanElement;
186
+
187
+ // Stores the DOM-detected render order
188
+ let detectedRenderOrder: number | undefined = undefined;
189
+
190
+ // Flag to track when component is registered
191
+ let isRegistered = $state(false);
192
+
193
+ // Setup uniform watchers with registration guard
194
+ Object.entries(uniforms).forEach(([propName, { uniform, transform }]) => {
195
+ $effect(() => {
196
+ // Only run after component is registered
197
+ if (!isRegistered) return;
198
+
199
+ if (uniform && uniform.value !== undefined) {
200
+ const newValue = (props as any)[propName];
201
+ if (newValue !== undefined && !isPropDriver(newValue)) {
202
+ // Send raw value - renderer will handle transformation
203
+ // PropDriver values go to metadata.maps, not uniforms
204
+ parentUniformUpdate(instanceId, propName, newValue);
205
+ }
206
+ }
207
+ });
208
+ });
209
+
210
+ // Watch blend mode, opacity, visibility, masking, transformations, and prop maps changes
211
+ $effect(() => {
212
+ // Only run after component is registered
213
+ if (!isRegistered) return;
214
+
215
+ const metadata: NodeMetadata = {
216
+ blendMode,
217
+ opacity,
218
+ visible: visible === false ? false : true,
219
+ id,
220
+ mask: maskSource ? {
221
+ source: maskSource,
222
+ type: (maskType || 'alpha') as MaskConfig['type']
223
+ } : undefined,
224
+ maps: mapsFromProps,
225
+ renderOrder: renderOrder ?? detectedRenderOrder,
226
+ transform: effectiveTransform
227
+ };
228
+ parentMetadataUpdate(instanceId, metadata);
229
+ });
230
+
231
+ // Register this component after mount to ensure parent is ready
232
+ onMount(() => {
233
+ // Register this component with safety check
234
+ if (componentDefinition && typeof componentDefinition.fragmentNode === 'function') {
235
+ parentRegister(
236
+ instanceId,
237
+ componentDefinition.fragmentNode,
238
+ parentId,
239
+ {
240
+ blendMode,
241
+ opacity,
242
+ visible: visible !== false ? true : false,
243
+ id,
244
+ mask: maskSource ? {
245
+ source: maskSource,
246
+ type: (maskType || 'alpha') as MaskConfig['type']
247
+ } as MaskConfig : undefined,
248
+ maps: mapsFromProps,
249
+ renderOrder: renderOrder ?? detectedRenderOrder,
250
+ transform: effectiveTransform
251
+ },
252
+ uniforms,
253
+ componentDefinition
254
+ );
255
+
256
+ // Set flag to enable effects after successful registration
257
+ isRegistered = true;
258
+
259
+ // Detect DOM position for correct render ordering
260
+ if (renderOrder === undefined && orderMarker) {
261
+ const parent = orderMarker.parentElement;
262
+ if (parent) {
263
+ const siblings = parent.querySelectorAll(':scope > [data-shader-id]');
264
+ const position = Array.from(siblings).indexOf(orderMarker);
265
+ if (position >= 0) {
266
+ detectedRenderOrder = position;
267
+ parentMetadataUpdate(instanceId, { renderOrder: position } as NodeMetadata);
268
+ }
269
+ }
270
+ }
271
+ } else {
272
+ console.error('componentDefinition.fragmentNode is not a function:', {
273
+ componentDefinition,
274
+ fragmentNode: componentDefinition?.fragmentNode,
275
+ type: typeof componentDefinition?.fragmentNode
276
+ });
277
+ }
278
+ });
279
+
280
+ // Clean up node from registry when component is unmounted
281
+ onDestroy(() => {
282
+ isRegistered = false;
283
+ parentRegister(instanceId, null, null, null, null);
284
+ });
285
+ </script>
286
+
287
+ <span bind:this={orderMarker} style="display:contents" data-shader-id={instanceId}>
288
+ {@render children?.()}
289
+ </span>
@@ -20,15 +20,18 @@ import ChromaFlow from '../components/ChromaFlow.svelte'
20
20
  import ChromaticAberration from '../components/ChromaticAberration.svelte'
21
21
  import Circle from '../components/Circle.svelte'
22
22
  import ConcentricSpin from '../components/ConcentricSpin.svelte'
23
+ import ConicGradient from '../components/ConicGradient.svelte'
23
24
  import ContourLines from '../components/ContourLines.svelte'
24
25
  import Crescent from '../components/Crescent.svelte'
25
26
  import Cross from '../components/Cross.svelte'
26
27
  import Crystal from '../components/Crystal.svelte'
27
28
  import CursorRipples from '../components/CursorRipples.svelte'
28
29
  import CursorTrail from '../components/CursorTrail.svelte'
30
+ import DiamondGradient from '../components/DiamondGradient.svelte'
29
31
  import DiffuseBlur from '../components/DiffuseBlur.svelte'
30
32
  import Dither from '../components/Dither.svelte'
31
33
  import DotGrid from '../components/DotGrid.svelte'
34
+ import DropShadow from '../components/DropShadow.svelte'
32
35
  import Duotone from '../components/Duotone.svelte'
33
36
  import Ellipse from '../components/Ellipse.svelte'
34
37
  import Emboss from '../components/Emboss.svelte'
@@ -49,6 +52,7 @@ import Grid from '../components/Grid.svelte'
49
52
  import GridDistortion from '../components/GridDistortion.svelte'
50
53
  import Group from '../components/Group.svelte'
51
54
  import Halftone from '../components/Halftone.svelte'
55
+ import HexGrid from '../components/HexGrid.svelte'
52
56
  import HueShift from '../components/HueShift.svelte'
53
57
  import ImageTexture from '../components/ImageTexture.svelte'
54
58
  import Invert from '../components/Invert.svelte'
@@ -58,6 +62,7 @@ import LinearBlur from '../components/LinearBlur.svelte'
58
62
  import LinearGradient from '../components/LinearGradient.svelte'
59
63
  import Liquify from '../components/Liquify.svelte'
60
64
  import Mirror from '../components/Mirror.svelte'
65
+ import MultiPointGradient from '../components/MultiPointGradient.svelte'
61
66
  import Neon from '../components/Neon.svelte'
62
67
  import Paper from '../components/Paper.svelte'
63
68
  import Perspective from '../components/Perspective.svelte'
@@ -77,6 +82,7 @@ import Sharpness from '../components/Sharpness.svelte'
77
82
  import Shatter from '../components/Shatter.svelte'
78
83
  import SimplexNoise from '../components/SimplexNoise.svelte'
79
84
  import SineWave from '../components/SineWave.svelte'
85
+ import Solarize from '../components/Solarize.svelte'
80
86
  import SolidColor from '../components/SolidColor.svelte'
81
87
  import Spherize from '../components/Spherize.svelte'
82
88
  import Spiral from '../components/Spiral.svelte'
@@ -90,11 +96,15 @@ import TiltShift from '../components/TiltShift.svelte'
90
96
  import Tint from '../components/Tint.svelte'
91
97
  import Trapezoid from '../components/Trapezoid.svelte'
92
98
  import Tritone from '../components/Tritone.svelte'
99
+ import Truchet from '../components/Truchet.svelte'
93
100
  import Twirl from '../components/Twirl.svelte'
94
101
  import Vesica from '../components/Vesica.svelte'
95
102
  import Vibrance from '../components/Vibrance.svelte'
96
103
  import VideoTexture from '../components/VideoTexture.svelte'
104
+ import Vignette from '../components/Vignette.svelte'
105
+ import Voronoi from '../components/Voronoi.svelte'
97
106
  import WaveDistortion from '../components/WaveDistortion.svelte'
107
+ import Weave from '../components/Weave.svelte'
98
108
  import WebcamTexture from '../components/WebcamTexture.svelte'
99
109
  import ZoomBlur from '../components/ZoomBlur.svelte'
100
110
 
@@ -116,15 +126,18 @@ const componentMap: Record<string, any> = {
116
126
  ChromaticAberration,
117
127
  Circle,
118
128
  ConcentricSpin,
129
+ ConicGradient,
119
130
  ContourLines,
120
131
  Crescent,
121
132
  Cross,
122
133
  Crystal,
123
134
  CursorRipples,
124
135
  CursorTrail,
136
+ DiamondGradient,
125
137
  DiffuseBlur,
126
138
  Dither,
127
139
  DotGrid,
140
+ DropShadow,
128
141
  Duotone,
129
142
  Ellipse,
130
143
  Emboss,
@@ -145,6 +158,7 @@ const componentMap: Record<string, any> = {
145
158
  GridDistortion,
146
159
  Group,
147
160
  Halftone,
161
+ HexGrid,
148
162
  HueShift,
149
163
  ImageTexture,
150
164
  Invert,
@@ -154,6 +168,7 @@ const componentMap: Record<string, any> = {
154
168
  LinearGradient,
155
169
  Liquify,
156
170
  Mirror,
171
+ MultiPointGradient,
157
172
  Neon,
158
173
  Paper,
159
174
  Perspective,
@@ -173,6 +188,7 @@ const componentMap: Record<string, any> = {
173
188
  Shatter,
174
189
  SimplexNoise,
175
190
  SineWave,
191
+ Solarize,
176
192
  SolidColor,
177
193
  Spherize,
178
194
  Spiral,
@@ -186,11 +202,15 @@ const componentMap: Record<string, any> = {
186
202
  Tint,
187
203
  Trapezoid,
188
204
  Tritone,
205
+ Truchet,
189
206
  Twirl,
190
207
  Vesica,
191
208
  Vibrance,
192
209
  VideoTexture,
210
+ Vignette,
211
+ Voronoi,
193
212
  WaveDistortion,
213
+ Weave,
194
214
  WebcamTexture,
195
215
  ZoomBlur,
196
216
  }