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