shaders 3.0.440 → 3.0.442

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 (407) hide show
  1. package/dist/cli.js +2 -2
  2. package/dist/core/{AngularBlur-BJKQrsoZ.js → AngularBlur-BDxGVOMQ.js} +2 -2
  3. package/dist/core/{Arc-BZdfWWlz.js → Arc-C981IGmm.js} +2 -2
  4. package/dist/core/{Ascii-CR5iFmk8.js → Ascii-C_-Jn2_c.js} +2 -2
  5. package/dist/core/{Aurora-C0KIoJY5.js → Aurora-D66-fTnE.js} +3 -3
  6. package/dist/core/{BarShift-_mdK3UWW.js → BarShift-DLaO6DjV.js} +3 -3
  7. package/dist/core/{Beam-DYvBEj6q.js → Beam-mVVEXCwG.js} +2 -2
  8. package/dist/core/{Blob-DgMJ5M6V.js → Blob-BnBDJJ84.js} +3 -3
  9. package/dist/core/{BlockNoise-CsBWCDzA.js → BlockNoise-DINAV0qg.js} +3 -3
  10. package/dist/core/{BlueNoise-D-WjLdgK.js → BlueNoise-B9jPJ1s5.js} +2 -2
  11. package/dist/core/{Blur-WeJoA31s.js → Blur-DDWaY0Ld.js} +1 -1
  12. package/dist/core/{BrickPattern-DPez_hvr.js → BrickPattern-DGsAflLE.js} +3 -3
  13. package/dist/core/{BrightnessContrast-XvDV1ixv.js → BrightnessContrast-CEHGmtvm.js} +1 -1
  14. package/dist/core/{BrushedMetal-DYwNjVpX.js → BrushedMetal-CcpOuWtJ.js} +5 -5
  15. package/dist/core/{Bulge-DcBJaYyW.js → Bulge-B3noQSAj.js} +2 -2
  16. package/dist/core/{CRTScreen-Byau9--w.js → CRTScreen-DL5luEsd.js} +1 -1
  17. package/dist/core/{CarbonFiber-DwYVLmd0.js → CarbonFiber-CSHN_f_N.js} +4 -4
  18. package/dist/core/{Chalkboard-D_FVdz4V.js → Chalkboard-BSLaGFyY.js} +2 -2
  19. package/dist/core/{ChannelBlur-B70l9vql.js → ChannelBlur-CDigdYX8.js} +1 -1
  20. package/dist/core/{Checkerboard-B_z4be-A.js → Checkerboard-DlZGigj6.js} +2 -2
  21. package/dist/core/{Chevron-CfGjPdH6.js → Chevron-BuOn9mA1.js} +3 -3
  22. package/dist/core/{ChromaFlow-B9zZUgzN.js → ChromaFlow-BOB8M0bU.js} +2 -2
  23. package/dist/core/{ChromaticAberration-BrGXd7kq.js → ChromaticAberration-gtezUw88.js} +2 -2
  24. package/dist/core/{Circle-DFx6OVnv.js → Circle-Vb7e3gL-.js} +2 -2
  25. package/dist/core/{ColorWheel-CI_qR6vL.js → ColorWheel-jc1jsi5U.js} +3 -3
  26. package/dist/core/{CompressionArtifacts-CVWkWovO.js → CompressionArtifacts-DlwHUO-X.js} +1 -1
  27. package/dist/core/{ConcentricSpin-lAMdNRDl.js → ConcentricSpin-BLIJre0M.js} +3 -3
  28. package/dist/core/{ConicGradient-C3wD1h2z.js → ConicGradient-BcNQlquk.js} +3 -3
  29. package/dist/core/{ContourLines-C3Hwaw1Y.js → ContourLines-CkGvhac3.js} +2 -2
  30. package/dist/core/{CornerPin-DxUoEjhR.js → CornerPin-DYy3m7oY.js} +2 -2
  31. package/dist/core/{Crescent-BCf_ZZI3.js → Crescent-CrWVqQDf.js} +2 -2
  32. package/dist/core/{Cross-CeQhwjVB.js → Cross-DUznb_Y-.js} +2 -2
  33. package/dist/core/{Crystal-CC7d_6kZ.js → Crystal-CgDpYkhN.js} +4 -4
  34. package/dist/core/{CurlNoise-KsNJEh6E.js → CurlNoise-DAYJuMmN.js} +3 -3
  35. package/dist/core/{CursorRipples-Jgm7iF0Z.js → CursorRipples-CNP8wzdR.js} +2 -2
  36. package/dist/core/{CursorTrail-CkNn85vn.js → CursorTrail-B1VULW3E.js} +3 -3
  37. package/dist/core/{DOMTexture-DFvbXYrj.js → DOMTexture-DROf41BI.js} +1 -1
  38. package/dist/core/{DataMosh-Dh7TYpbW.js → DataMosh-BYwbcTxJ.js} +1 -1
  39. package/dist/core/{DiamondGradient-HmZwnTdD.js → DiamondGradient-BB7ajCKo.js} +3 -3
  40. package/dist/core/{DiffuseBlur-uXE0w0DD.js → DiffuseBlur-KE2fGEND.js} +2 -2
  41. package/dist/core/{Dither-YUNtD1tI.js → Dither-B8yxWNxE.js} +2 -2
  42. package/dist/core/{DotGrid-DABCUp6d.js → DotGrid-Doh7yuqR.js} +3 -3
  43. package/dist/core/{DropShadow-C7KAuipC.js → DropShadow-DhHQBpiK.js} +2 -2
  44. package/dist/core/{Duotone-CuJunWJ0.js → Duotone-DA3IudVy.js} +2 -2
  45. package/dist/core/{Ellipse-DrZqqQh2.js → Ellipse-m1D5EVjj.js} +2 -2
  46. package/dist/core/{Emboss-D_-1_a3u.js → Emboss-C3NBF44G.js} +4 -4
  47. package/dist/core/{Engraving-fQ1zZJ89.js → Engraving-Bz503L4R.js} +2 -2
  48. package/dist/core/{ErosionNoise-B01HEvZk.js → ErosionNoise-DOOt5U2Z.js} +2 -2
  49. package/dist/core/{Exposure-o_CViEwJ.js → Exposure-DkQ4kanv.js} +1 -1
  50. package/dist/core/{FallingLines-Bv8X8gRy.js → FallingLines-BE6S1TUf.js} +3 -3
  51. package/dist/core/{FilmGrain-CoW4iHsT.js → FilmGrain-9-Mgc2Ri.js} +1 -1
  52. package/dist/core/{Flip-h2K3wLGX.js → Flip-Dpi0pVGo.js} +2 -2
  53. package/dist/core/{FloatingParticles-W_QAKOku.js → FloatingParticles-Qh0dQBmA.js} +2 -2
  54. package/dist/core/{FlowField-CwU9iWbf.js → FlowField-0UUp41dK.js} +3 -3
  55. package/dist/core/{Flower-DxOinfag.js → Flower-DJLgm11L.js} +2 -2
  56. package/dist/core/{FlowingGradient-DdFrloZC.js → FlowingGradient-C01NbZ16.js} +3 -3
  57. package/dist/core/{FlutedGlass-B9652Bh4.js → FlutedGlass-DIwsLgXX.js} +3 -3
  58. package/dist/core/{Fog-D5sIF3cX.js → Fog-BwPDTYRv.js} +2 -2
  59. package/dist/core/{Form3D-BmCwmFPZ.js → Form3D-Csuoy7Rq.js} +3 -3
  60. package/dist/core/{FractalNoise-BFs55FIe.js → FractalNoise-B9usxoBx.js} +3 -3
  61. package/dist/core/{Frost-C6qVP9a2.js → Frost-Bhd3oWES.js} +6 -6
  62. package/dist/core/{GaborNoise-C1LVTyG3.js → GaborNoise-CQX_VPTg.js} +3 -3
  63. package/dist/core/{Glass-DR9JYQMG.js → Glass-tFOQd3eV.js} +4 -4
  64. package/dist/core/{GlassTiles-D5Lrddns.js → GlassTiles-C-yPKp5B.js} +1 -1
  65. package/dist/core/{Glitch-B93JzM-d.js → Glitch-0i5BtHaq.js} +1 -1
  66. package/dist/core/{Glow-DlxNehzC.js → Glow-CMz4cv5I.js} +1 -1
  67. package/dist/core/{Godrays-n9Gjl-h6.js → Godrays-D0euidZr.js} +3 -3
  68. package/dist/core/{Goo-BusLBgE3.js → Goo-AMjCwSDQ.js} +5 -5
  69. package/dist/core/{GradientMap-CapG6NfM.js → GradientMap-BU4kVWfH.js} +2 -2
  70. package/dist/core/{Grayscale-Dx9gKGZb.js → Grayscale-iaDYz9To.js} +1 -1
  71. package/dist/core/{Grid-gZHTJmwP.js → Grid-BwbSPDqS.js} +2 -2
  72. package/dist/core/{GridDistortion-BkkuULR2.js → GridDistortion-B3S8D94q.js} +2 -2
  73. package/dist/core/{Group-pHN72R84.js → Group-0BcuiZZM.js} +1 -1
  74. package/dist/core/{Halftone-dlX8bpPV.js → Halftone-ClxolEhO.js} +2 -2
  75. package/dist/core/{Heart-CwELiXMT.js → Heart-BdSnsqq-.js} +2 -2
  76. package/dist/core/{Heatmap-unI_z4Uc.js → Heatmap-CFEEphb2.js} +62 -41
  77. package/dist/core/{HexGrid-BTWeNz9Z.js → HexGrid-D8CgLdgw.js} +2 -2
  78. package/dist/core/{Hologram-3-c4mCzw.js → Hologram-IJhpMkKa.js} +5 -5
  79. package/dist/core/{Holographic-SchvA6Dy.js → Holographic-BbrHmA39.js} +5 -5
  80. package/dist/core/{HueShift-BJGcv19-.js → HueShift-Bv6qzKH0.js} +1 -1
  81. package/dist/core/{ImageTexture-CRueGzAZ.js → ImageTexture-Dh6VPuYy.js} +1 -1
  82. package/dist/core/{Invert-DLot9mli.js → Invert-B8gtmw54.js} +1 -1
  83. package/dist/core/{IsometricCubes-CFg5QBjO.js → IsometricCubes-BL0ZvkwZ.js} +2 -2
  84. package/dist/core/{Kaleidoscope-BQFm59wM.js → Kaleidoscope-D4VzDZni.js} +2 -2
  85. package/dist/core/{KeyFrames-DiAKRsxm.js → KeyFrames-C-nnFGBw.js} +2 -2
  86. package/dist/core/{LensFlare-BpFbnSsM.js → LensFlare-D_LFHDo0.js} +3 -3
  87. package/dist/core/{LightEdge-CZpMFMKO.js → LightEdge-Ck4lGBye.js} +5 -5
  88. package/dist/core/{LightLeak-DGt9quKs.js → LightLeak-DuaMzzKh.js} +3 -3
  89. package/dist/core/{LinearBlur-ClAsNnkC.js → LinearBlur-CHioFPql.js} +2 -2
  90. package/dist/core/{LinearGradient-B_dBLhFm.js → LinearGradient-CEz9WjgA.js} +3 -3
  91. package/dist/core/{LiquidMetal-Bb9b2h9X.js → LiquidMetal-CtbGXpkb.js} +5 -5
  92. package/dist/core/{Liquify-B9ypclFj.js → Liquify-B0rCOoDY.js} +2 -2
  93. package/dist/core/{Marble-CZYhaDcz.js → Marble-BJp6F6BF.js} +3 -3
  94. package/dist/core/{Mirror--NvGPp-u.js → Mirror-9fC_SqqB.js} +2 -2
  95. package/dist/core/{MultiPointGradient-IJtw3dEC.js → MultiPointGradient-BuDBY6Ax.js} +2 -2
  96. package/dist/core/{Neon-Der_R-Bh.js → Neon-CgA9zX4Y.js} +4 -4
  97. package/dist/core/{ObjectTracker-CfW_aMyp.js → ObjectTracker-D1qrJe0c.js} +2 -2
  98. package/dist/core/{PagePeel-D_DnKmec.js → PagePeel-YA6Q8kM0.js} +1 -1
  99. package/dist/core/{Paper-CZT7vlqM.js → Paper-Bu3J7_h8.js} +1 -1
  100. package/dist/core/{Parallelogram-BAi9iFi0.js → Parallelogram-8VWcTkAt.js} +2 -2
  101. package/dist/core/{Particles-DtxN6LL7.js → Particles-BG7Z-4in.js} +3 -3
  102. package/dist/core/{PerlinNoise-BCbLpWKn.js → PerlinNoise-gV2dOb_o.js} +3 -3
  103. package/dist/core/{Perspective-DXIafIz8.js → Perspective-m70JnY4Z.js} +2 -2
  104. package/dist/core/{PixelSort-BnZgslHG.js → PixelSort-tKcoDnMz.js} +1 -1
  105. package/dist/core/{PixelThrow-BAVO2zdp.js → PixelThrow-CzelDKa4.js} +2 -2
  106. package/dist/core/{Pixelate-L-pZ8G79.js → Pixelate-CcBgoqXj.js} +1 -1
  107. package/dist/core/{Plasma-BELcebZa.js → Plasma-Bsei8uLa.js} +3 -3
  108. package/dist/core/{Plastic-e8KLjCgS.js → Plastic-D9qe3OWm.js} +5 -5
  109. package/dist/core/{PolarCoordinates-CNZ6Df5J.js → PolarCoordinates-C9WxI22k.js} +2 -2
  110. package/dist/core/{Polygon-BGBTOGLe.js → Polygon-D58HZRzJ.js} +2 -2
  111. package/dist/core/{Posterize-Cs_kyyjG.js → Posterize-DxR6F30M.js} +1 -1
  112. package/dist/core/{Prism-BUalIt7a.js → Prism-JLQP5dhZ.js} +3 -3
  113. package/dist/core/{ProgressiveBlur-C2wYIOH-.js → ProgressiveBlur-DpERTuHY.js} +2 -2
  114. package/dist/core/{RadialGradient-B3tlBsQZ.js → RadialGradient-N4mHVX7b.js} +3 -3
  115. package/dist/core/ReactionDiffusion-BpLbPwbw.js +4640 -0
  116. package/dist/core/{RectangularCoordinates-DWWlrqB4.js → RectangularCoordinates-Bt9H7sBE.js} +2 -2
  117. package/dist/core/{ReflectivePlane-BmM5w76k.js → ReflectivePlane-Cumbz3x2.js} +2 -2
  118. package/dist/core/{Repeater-V37OGlry.js → Repeater-DuRfWt9x.js} +2 -2
  119. package/dist/core/{Ring-WVyMeyoh.js → Ring-Cg_pZTin.js} +2 -2
  120. package/dist/core/{Ripples-Bv__zvme.js → Ripples-BtenteeG.js} +3 -3
  121. package/dist/core/{RoundedRect-B62UFEeb.js → RoundedRect-C0ETFLNc.js} +2 -2
  122. package/dist/core/{Saturation-DIRGc5kp.js → Saturation-BbOceqP3.js} +1 -1
  123. package/dist/core/{Scratches-ZFLTq06k.js → Scratches-B2Q_mgvt.js} +3 -3
  124. package/dist/core/{Sharpness-WYaGJlSI.js → Sharpness-Bhb9aDxA.js} +1 -1
  125. package/dist/core/{Shatter-CPS5Kdei.js → Shatter-zxLD4RY8.js} +2 -2
  126. package/dist/core/{SimplexNoise-DMWtripU.js → SimplexNoise-DTCJ__Jt.js} +3 -3
  127. package/dist/core/{SineWave-BOoYgny1.js → SineWave-JNTzGGXH.js} +3 -3
  128. package/dist/core/{Smoke-BGGH2iTS.js → Smoke-BX4EcQdI.js} +3 -3
  129. package/dist/core/{SmokeFill-ClBFBWz3.js → SmokeFill-9SqGHgJt.js} +4 -4
  130. package/dist/core/{SmokeFlow-DkBGrN_d.js → SmokeFlow-Cfs5EVW_.js} +3 -3
  131. package/dist/core/{Solarize-D_ZPY_Cr.js → Solarize-BQq15L3x.js} +1 -1
  132. package/dist/core/{SolidColor-rdMtlNyB.js → SolidColor-8aFR9Ecl.js} +1 -1
  133. package/dist/core/{Spherize-h1F31u9-.js → Spherize-Czfb_NCO.js} +2 -2
  134. package/dist/core/{Spiral-BMFhUpkP.js → Spiral-CO_pymky.js} +3 -3
  135. package/dist/core/{Star-D8d3Gk74.js → Star-CgLpQtzz.js} +2 -2
  136. package/dist/core/{Stone-CfpfDKpn.js → Stone-Bl9-bI0G.js} +2 -2
  137. package/dist/core/{Strands-256prKRG.js → Strands-BdSTwZXc.js} +3 -3
  138. package/dist/core/{Stretch-C7z0wdI7.js → Stretch-BCZ_vkQn.js} +2 -2
  139. package/dist/core/{Stripes-BVvuh6r7.js → Stripes-OLW9XYEW.js} +3 -3
  140. package/dist/core/{StudioBackground-Cy2qPLYJ.js → StudioBackground-ksKsEcWQ.js} +3 -3
  141. package/dist/core/{SunBurst-vUglW69s.js → SunBurst-B_mkcjjh.js} +3 -3
  142. package/dist/core/{Surface3D-quYcBdK_.js → Surface3D-D6D9L3et.js} +2 -2
  143. package/dist/core/{Swirl-BD3Fk-SC.js → Swirl-DMQ-Iq-_.js} +3 -3
  144. package/dist/core/{Teardrop-Bxfkjjaz.js → Teardrop-Dz5aCCyM.js} +2 -2
  145. package/dist/core/{Text-CrbVixvj.js → Text-9v36CCo0.js} +2 -2
  146. package/dist/core/{ThinFilm-D_y48u9e.js → ThinFilm-C28dTgXR.js} +4 -4
  147. package/dist/core/{TiltShift-3s5RKGCa.js → TiltShift-Df93B2bk.js} +2 -2
  148. package/dist/core/{Tint-DZUIRc-Z.js → Tint-e-sF3Q5L.js} +2 -2
  149. package/dist/core/{Trapezoid-7VOLjftp.js → Trapezoid-B6r05rcQ.js} +2 -2
  150. package/dist/core/{TriangularGrid-Qek0gRuV.js → TriangularGrid-CX7hnKpa.js} +3 -3
  151. package/dist/core/{Tritone-CqYOMKFE.js → Tritone-CccAEZZ2.js} +2 -2
  152. package/dist/core/{Truchet-D6emdFny.js → Truchet-DG3fNF5b.js} +2 -2
  153. package/dist/core/{Twirl-Y8OzHc49.js → Twirl-CtFo8Cjm.js} +2 -2
  154. package/dist/core/{VHS-B28K9Bfc.js → VHS-CKc1qc0j.js} +1 -1
  155. package/dist/core/{Vesica-DFRPMcgz.js → Vesica-D1HOV75v.js} +2 -2
  156. package/dist/core/{Vibrance-BkMNClGf.js → Vibrance-E9-pYAwh.js} +1 -1
  157. package/dist/core/{VideoTexture-DNfGZ4kz.js → VideoTexture-Df7BPBe-.js} +1 -1
  158. package/dist/core/{Vignette-DWveIoCk.js → Vignette-DOVH3O7h.js} +2 -2
  159. package/dist/core/{Voronoi-c1kHPUka.js → Voronoi-BYmYkJfN.js} +3 -3
  160. package/dist/core/{Water-CEmTC2Ii.js → Water-DAQnd09w.js} +5 -5
  161. package/dist/core/{Watercolor--Bg1ZPIG.js → Watercolor-B1iwfQSH.js} +2 -2
  162. package/dist/core/{WaveDistortion-BSyW8c28.js → WaveDistortion-BNkgWs3D.js} +3 -3
  163. package/dist/core/{WaveletNoise-cDkFw55m.js → WaveletNoise-ByqzdG-6.js} +3 -3
  164. package/dist/core/{Weave--Ex2UVBt.js → Weave-DeItcIeX.js} +2 -2
  165. package/dist/core/{WebcamTexture-CPWUtxVm.js → WebcamTexture-BAeqZ7pH.js} +1 -1
  166. package/dist/core/{Wool-BNmVUISf.js → Wool-Br5Ajlvr.js} +2 -2
  167. package/dist/core/{WorleyNoise-CbhvPZS-.js → WorleyNoise-D1piyiG2.js} +3 -3
  168. package/dist/core/{ZoomBlur-BR_do-LV.js → ZoomBlur-ZEtNzn4_.js} +2 -2
  169. package/dist/core/{coords-CWOT0Wqh.js → coords-DLZT4HVT.js} +136 -13
  170. package/dist/core/{glass-hUL2pCYG.js → glass-CGThMEIa.js} +1 -1
  171. package/dist/core/gpu/composer.d.ts.map +1 -1
  172. package/dist/core/gpu/contract.d.ts +1 -0
  173. package/dist/core/gpu/contract.d.ts.map +1 -1
  174. package/dist/core/gpu/index.d.ts.map +1 -1
  175. package/dist/core/gpu/kit/sdf3d.d.ts.map +1 -1
  176. package/dist/core/gpu/transforms.d.ts.map +1 -1
  177. package/dist/core/index.js +176 -175
  178. package/dist/core/{noiseColor-WSY8YuLZ.js → noiseColor-kVjc2DJn.js} +2 -2
  179. package/dist/core/{porters-Dg80Yg90.js → porters-DdcOi7BN.js} +4 -3
  180. package/dist/core/registry.js +175 -174
  181. package/dist/core/shaderRegistry-Gsachoy8.js +372 -0
  182. package/dist/core/shaderRegistry.d.ts.map +1 -1
  183. package/dist/core/shaders/AngularBlur/index.js +4 -4
  184. package/dist/core/shaders/Arc/index.js +4 -4
  185. package/dist/core/shaders/Ascii/index.js +4 -4
  186. package/dist/core/shaders/Aurora/index.js +4 -4
  187. package/dist/core/shaders/BarShift/index.js +4 -4
  188. package/dist/core/shaders/Beam/index.js +4 -4
  189. package/dist/core/shaders/Blob/index.js +4 -4
  190. package/dist/core/shaders/BlockNoise/index.js +5 -5
  191. package/dist/core/shaders/BlueNoise/index.js +5 -5
  192. package/dist/core/shaders/Blur/index.js +4 -4
  193. package/dist/core/shaders/BrickPattern/index.js +4 -4
  194. package/dist/core/shaders/BrightnessContrast/index.js +4 -4
  195. package/dist/core/shaders/BrushedMetal/index.js +6 -6
  196. package/dist/core/shaders/Bulge/index.js +4 -4
  197. package/dist/core/shaders/CRTScreen/index.js +4 -4
  198. package/dist/core/shaders/CarbonFiber/index.js +6 -6
  199. package/dist/core/shaders/Chalkboard/index.js +4 -4
  200. package/dist/core/shaders/ChannelBlur/index.js +4 -4
  201. package/dist/core/shaders/Checkerboard/index.js +4 -4
  202. package/dist/core/shaders/Chevron/index.js +4 -4
  203. package/dist/core/shaders/ChromaFlow/index.js +4 -4
  204. package/dist/core/shaders/ChromaticAberration/index.js +4 -4
  205. package/dist/core/shaders/Circle/index.js +4 -4
  206. package/dist/core/shaders/ColorWheel/index.js +4 -4
  207. package/dist/core/shaders/CompressionArtifacts/index.js +4 -4
  208. package/dist/core/shaders/ConcentricSpin/index.js +4 -4
  209. package/dist/core/shaders/ConicGradient/index.js +4 -4
  210. package/dist/core/shaders/ContourLines/index.js +4 -4
  211. package/dist/core/shaders/CornerPin/index.js +4 -4
  212. package/dist/core/shaders/Crescent/index.js +4 -4
  213. package/dist/core/shaders/Cross/index.js +4 -4
  214. package/dist/core/shaders/Crystal/index.js +6 -6
  215. package/dist/core/shaders/CurlNoise/index.js +5 -5
  216. package/dist/core/shaders/CursorRipples/index.js +4 -4
  217. package/dist/core/shaders/CursorTrail/index.js +4 -4
  218. package/dist/core/shaders/DOMTexture/index.js +4 -4
  219. package/dist/core/shaders/DataMosh/index.js +4 -4
  220. package/dist/core/shaders/DiamondGradient/index.js +4 -4
  221. package/dist/core/shaders/DiffuseBlur/index.js +4 -4
  222. package/dist/core/shaders/Dither/index.js +4 -4
  223. package/dist/core/shaders/DotGrid/index.js +4 -4
  224. package/dist/core/shaders/DropShadow/index.js +4 -4
  225. package/dist/core/shaders/Duotone/index.js +4 -4
  226. package/dist/core/shaders/Ellipse/index.js +4 -4
  227. package/dist/core/shaders/Emboss/index.js +6 -6
  228. package/dist/core/shaders/Engraving/index.js +4 -4
  229. package/dist/core/shaders/ErosionNoise/index.js +5 -5
  230. package/dist/core/shaders/Exposure/index.js +4 -4
  231. package/dist/core/shaders/FallingLines/index.js +4 -4
  232. package/dist/core/shaders/FilmGrain/index.js +4 -4
  233. package/dist/core/shaders/Flip/index.js +4 -4
  234. package/dist/core/shaders/FloatingParticles/index.js +4 -4
  235. package/dist/core/shaders/FlowField/index.js +4 -4
  236. package/dist/core/shaders/Flower/index.js +4 -4
  237. package/dist/core/shaders/FlowingGradient/index.js +4 -4
  238. package/dist/core/shaders/FlutedGlass/index.js +4 -4
  239. package/dist/core/shaders/Fog/index.js +4 -4
  240. package/dist/core/shaders/Form3D/index.js +4 -4
  241. package/dist/core/shaders/FractalNoise/index.js +4 -4
  242. package/dist/core/shaders/Frost/index.d.ts.map +1 -1
  243. package/dist/core/shaders/Frost/index.js +6 -6
  244. package/dist/core/shaders/GaborNoise/index.js +5 -5
  245. package/dist/core/shaders/Glass/index.js +6 -6
  246. package/dist/core/shaders/GlassTiles/index.js +4 -4
  247. package/dist/core/shaders/Glitch/index.js +4 -4
  248. package/dist/core/shaders/Glow/index.js +4 -4
  249. package/dist/core/shaders/Godrays/index.js +4 -4
  250. package/dist/core/shaders/Goo/index.js +6 -6
  251. package/dist/core/shaders/GradientMap/index.js +4 -4
  252. package/dist/core/shaders/Grayscale/index.js +4 -4
  253. package/dist/core/shaders/Grid/index.js +4 -4
  254. package/dist/core/shaders/GridDistortion/index.js +4 -4
  255. package/dist/core/shaders/Group/index.js +4 -4
  256. package/dist/core/shaders/Halftone/index.js +4 -4
  257. package/dist/core/shaders/Heart/index.js +4 -4
  258. package/dist/core/shaders/Heatmap/index.d.ts +2 -2
  259. package/dist/core/shaders/Heatmap/index.d.ts.map +1 -1
  260. package/dist/core/shaders/Heatmap/index.js +6 -6
  261. package/dist/core/shaders/HexGrid/index.js +4 -4
  262. package/dist/core/shaders/Hologram/index.js +6 -6
  263. package/dist/core/shaders/Holographic/index.js +6 -6
  264. package/dist/core/shaders/HueShift/index.js +4 -4
  265. package/dist/core/shaders/ImageTexture/index.js +4 -4
  266. package/dist/core/shaders/Invert/index.js +4 -4
  267. package/dist/core/shaders/IsometricCubes/index.js +4 -4
  268. package/dist/core/shaders/Kaleidoscope/index.js +4 -4
  269. package/dist/core/shaders/KeyFrames/index.js +4 -4
  270. package/dist/core/shaders/LensFlare/index.js +4 -4
  271. package/dist/core/shaders/LightEdge/index.js +6 -6
  272. package/dist/core/shaders/LightLeak/index.js +4 -4
  273. package/dist/core/shaders/LinearBlur/index.js +4 -4
  274. package/dist/core/shaders/LinearGradient/index.js +4 -4
  275. package/dist/core/shaders/LiquidMetal/index.js +6 -6
  276. package/dist/core/shaders/Liquify/index.js +4 -4
  277. package/dist/core/shaders/Marble/index.js +4 -4
  278. package/dist/core/shaders/Mirror/index.js +4 -4
  279. package/dist/core/shaders/MultiPointGradient/index.js +4 -4
  280. package/dist/core/shaders/Neon/index.js +5 -5
  281. package/dist/core/shaders/ObjectTracker/index.js +4 -4
  282. package/dist/core/shaders/PagePeel/index.js +4 -4
  283. package/dist/core/shaders/Paper/index.js +4 -4
  284. package/dist/core/shaders/Parallelogram/index.js +4 -4
  285. package/dist/core/shaders/Particles/index.js +5 -5
  286. package/dist/core/shaders/PerlinNoise/index.js +5 -5
  287. package/dist/core/shaders/Perspective/index.js +4 -4
  288. package/dist/core/shaders/PixelSort/index.js +4 -4
  289. package/dist/core/shaders/PixelThrow/index.js +4 -4
  290. package/dist/core/shaders/Pixelate/index.js +4 -4
  291. package/dist/core/shaders/Plasma/index.js +4 -4
  292. package/dist/core/shaders/Plastic/index.js +6 -6
  293. package/dist/core/shaders/PolarCoordinates/index.js +4 -4
  294. package/dist/core/shaders/Polygon/index.js +4 -4
  295. package/dist/core/shaders/Posterize/index.js +4 -4
  296. package/dist/core/shaders/Prism/index.js +4 -4
  297. package/dist/core/shaders/ProgressiveBlur/index.js +4 -4
  298. package/dist/core/shaders/RadialGradient/index.js +4 -4
  299. package/dist/core/shaders/ReactionDiffusion/index.d.ts +163 -0
  300. package/dist/core/shaders/ReactionDiffusion/index.d.ts.map +1 -0
  301. package/dist/core/shaders/ReactionDiffusion/index.js +5 -0
  302. package/dist/core/shaders/RectangularCoordinates/index.js +4 -4
  303. package/dist/core/shaders/ReflectivePlane/index.js +4 -4
  304. package/dist/core/shaders/Repeater/index.js +4 -4
  305. package/dist/core/shaders/Ring/index.js +4 -4
  306. package/dist/core/shaders/Ripples/index.js +4 -4
  307. package/dist/core/shaders/RoundedRect/index.js +4 -4
  308. package/dist/core/shaders/Saturation/index.js +4 -4
  309. package/dist/core/shaders/Scratches/index.js +5 -5
  310. package/dist/core/shaders/Sharpness/index.js +4 -4
  311. package/dist/core/shaders/Shatter/index.js +4 -4
  312. package/dist/core/shaders/SimplexNoise/index.js +4 -4
  313. package/dist/core/shaders/SineWave/index.js +4 -4
  314. package/dist/core/shaders/Smoke/index.js +4 -4
  315. package/dist/core/shaders/SmokeFill/index.js +6 -6
  316. package/dist/core/shaders/SmokeFlow/index.js +4 -4
  317. package/dist/core/shaders/Solarize/index.js +4 -4
  318. package/dist/core/shaders/SolidColor/index.js +2 -2
  319. package/dist/core/shaders/Spherize/index.js +4 -4
  320. package/dist/core/shaders/Spiral/index.js +4 -4
  321. package/dist/core/shaders/Star/index.js +4 -4
  322. package/dist/core/shaders/Stone/index.js +3 -3
  323. package/dist/core/shaders/Strands/index.js +4 -4
  324. package/dist/core/shaders/Stretch/index.js +4 -4
  325. package/dist/core/shaders/Stripes/index.js +4 -4
  326. package/dist/core/shaders/StudioBackground/index.js +4 -4
  327. package/dist/core/shaders/SunBurst/index.js +4 -4
  328. package/dist/core/shaders/Surface3D/index.js +4 -4
  329. package/dist/core/shaders/Swirl/index.js +4 -4
  330. package/dist/core/shaders/Teardrop/index.js +4 -4
  331. package/dist/core/shaders/Text/index.js +4 -4
  332. package/dist/core/shaders/ThinFilm/index.js +5 -5
  333. package/dist/core/shaders/TiltShift/index.js +4 -4
  334. package/dist/core/shaders/Tint/index.js +4 -4
  335. package/dist/core/shaders/Trapezoid/index.js +4 -4
  336. package/dist/core/shaders/TriangularGrid/index.js +4 -4
  337. package/dist/core/shaders/Tritone/index.js +4 -4
  338. package/dist/core/shaders/Truchet/index.js +4 -4
  339. package/dist/core/shaders/Twirl/index.js +4 -4
  340. package/dist/core/shaders/VHS/index.js +4 -4
  341. package/dist/core/shaders/Vesica/index.js +4 -4
  342. package/dist/core/shaders/Vibrance/index.js +4 -4
  343. package/dist/core/shaders/VideoTexture/index.js +4 -4
  344. package/dist/core/shaders/Vignette/index.js +4 -4
  345. package/dist/core/shaders/Voronoi/index.js +4 -4
  346. package/dist/core/shaders/Water/index.js +6 -6
  347. package/dist/core/shaders/Watercolor/index.js +4 -4
  348. package/dist/core/shaders/WaveDistortion/index.js +4 -4
  349. package/dist/core/shaders/WaveletNoise/index.js +5 -5
  350. package/dist/core/shaders/Weave/index.js +4 -4
  351. package/dist/core/shaders/WebcamTexture/index.js +4 -4
  352. package/dist/core/shaders/Wool/index.js +3 -3
  353. package/dist/core/shaders/WorleyNoise/index.js +4 -4
  354. package/dist/core/shaders/ZoomBlur/index.js +4 -4
  355. package/dist/core/{shapeEffectBounds-BlxxsYMN.js → shapeEffectBounds-BglTGD4B.js} +1 -59
  356. package/dist/core/{transformations-fqzznt4g.js → transformations-P50Uo_Ju.js} +2 -1
  357. package/dist/core/utilities/transformations/index.js +1 -1
  358. package/dist/core/utilities/transformations.d.ts.map +1 -1
  359. package/dist/js/bundle.js +142 -142
  360. package/dist/js/createShader.js +1 -1
  361. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  362. package/dist/js/utils/generatePresetCode.js +25 -0
  363. package/dist/react/Preview.js +1 -0
  364. package/dist/react/ReactionDiffusion.js +220 -0
  365. package/dist/react/Shader.js +1 -1
  366. package/dist/react/bundle.js +138 -138
  367. package/dist/react/components/ReactionDiffusion.d.ts +40 -0
  368. package/dist/react/components/ReactionDiffusion.d.ts.map +1 -0
  369. package/dist/react/engine/Preview.d.ts.map +1 -1
  370. package/dist/react/index.d.ts +1 -0
  371. package/dist/react/index.d.ts.map +1 -1
  372. package/dist/react/index.js +2 -1
  373. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  374. package/dist/react/utils/generatePresetCode.js +25 -0
  375. package/dist/registry.js +674 -0
  376. package/dist/solid/components/ReactionDiffusion.d.ts +37 -0
  377. package/dist/solid/components/ReactionDiffusion.d.ts.map +1 -0
  378. package/dist/solid/components/ReactionDiffusion.js +228 -0
  379. package/dist/solid/engine/Preview.d.ts.map +1 -1
  380. package/dist/solid/engine/Preview.js +228 -226
  381. package/dist/solid/engine/Shader.js +1 -1
  382. package/dist/solid/index.d.ts +1 -0
  383. package/dist/solid/index.d.ts.map +1 -1
  384. package/dist/solid/index.js +112 -110
  385. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  386. package/dist/solid/utils/generatePresetCode.js +25 -0
  387. package/dist/svelte/components/ReactionDiffusion.svelte.d.ts +27 -0
  388. package/dist/svelte/index.d.ts +1 -0
  389. package/dist/svelte/index.js +2131 -1928
  390. package/dist/svelte/source/components/ReactionDiffusion.svelte +346 -0
  391. package/dist/svelte/source/engine/Preview.svelte +2 -0
  392. package/dist/svelte/source/index.js +1 -0
  393. package/dist/svelte/utils/generatePresetCode.js +25 -0
  394. package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
  395. package/dist/vue/ReactionDiffusion.js +3 -0
  396. package/dist/vue/ReactionDiffusion.vue_vue_type_script_setup_true_lang.js +237 -0
  397. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  398. package/dist/vue/components/ReactionDiffusion.vue.d.ts +62 -0
  399. package/dist/vue/components/ReactionDiffusion.vue.d.ts.map +1 -0
  400. package/dist/vue/index.d.ts +1 -0
  401. package/dist/vue/index.d.ts.map +1 -1
  402. package/dist/vue/index.js +2 -1
  403. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  404. package/dist/vue/utils/generatePresetCode.js +25 -0
  405. package/package.json +9 -6
  406. package/dist/core/shaderRegistry-DC0r_QlY.js +0 -370
  407. /package/dist/core/{noiseStylize-C2jzZv4d.js → noiseStylize-BMnwulEm.js} +0 -0
@@ -0,0 +1,346 @@
1
+ <script lang="ts">
2
+ import { getContext, setContext, onMount, onDestroy } from 'svelte';
3
+ import {
4
+ createGpuUniformsMap,
5
+ resolveBoundingBox,
6
+ type GpuUniformsMap,
7
+ type BlendMode,
8
+ type NodeMetadata,
9
+ type PropConfig,
10
+ type MaskConfig,
11
+ type PropDriver,
12
+ type TransformConfig,
13
+ type BoundingBoxConfig
14
+ } from '../../../core/index.js';
15
+ import {setColorSpaceMode} from '../../../core/utilities/transformations/index.js';
16
+
17
+ // @ts-ignore - this import is replaced at build time
18
+ import { componentDefinition, type ComponentProps } from '../../../core/shaders/ReactionDiffusion/index.js';
19
+
20
+ // Warn once per page load if this is an experimental component
21
+ let _experimentalWarnedOnce = false;
22
+ if ((componentDefinition as any).experimental && !_experimentalWarnedOnce) {
23
+ _experimentalWarnedOnce = true;
24
+ const _e = (componentDefinition as any).experimental;
25
+ console.info(`%c⚠ [Shaders] ${componentDefinition.name} is experimental: ${_e.message}`, 'color: #f59e0b; font-weight: bold');
26
+ }
27
+
28
+ /**
29
+ * Define component props including blend mode, opacity, visibility, masking, and transformation
30
+ */
31
+ interface ExtendedComponentProps extends Partial<ComponentProps> {
32
+ contrast?: ComponentProps['contrast'] | PropDriver;
33
+ threshold?: ComponentProps['threshold'] | PropDriver;
34
+ relief?: ComponentProps['relief'] | PropDriver;
35
+ lightAngle?: ComponentProps['lightAngle'] | PropDriver;
36
+ childInfluence?: ComponentProps['childInfluence'] | PropDriver;
37
+ childContrast?: ComponentProps['childContrast'] | PropDriver;
38
+ childThreshold?: ComponentProps['childThreshold'] | PropDriver;
39
+ blendMode?: BlendMode;
40
+ opacity?: number;
41
+ visible?: boolean;
42
+ id?: string;
43
+ maskSource?: string;
44
+ maskType?: string;
45
+ renderOrder?: number;
46
+ transform?: Partial<TransformConfig>;
47
+ boundingBox?: Partial<BoundingBoxConfig>;
48
+ children?: import('svelte').Snippet;
49
+ }
50
+
51
+ function isPropDriver(value: unknown): value is PropDriver {
52
+ return typeof value === 'object' && value !== null && 'type' in value &&
53
+ ((value as any).type === 'map' || (value as any).type === 'mouse' || (value as any).type === 'mouse-position' || (value as any).type === 'auto-animate');
54
+ }
55
+
56
+ /**
57
+ * Default transform configuration (optimized for zero overhead)
58
+ */
59
+ const DEFAULT_TRANSFORM: TransformConfig = {
60
+ offsetX: 0,
61
+ offsetY: 0,
62
+ rotation: 0,
63
+ scale: 1,
64
+ anchorX: 0.5,
65
+ anchorY: 0.5,
66
+ edges: 'transparent'
67
+ };
68
+
69
+ // Define the component props and their default values from the shader definition
70
+ const componentDefaults = {
71
+ blendMode: 'normal' as BlendMode,
72
+ visible: true,
73
+ // opacity intentionally has no default - handled by renderer
74
+ // transform intentionally has no default - handled by effectiveTransform
75
+ ...Object.entries(componentDefinition.props).reduce(
76
+ (acc, [key, config]) => {
77
+ acc[key] = (config as unknown as PropConfig<typeof config>).default;
78
+ return acc;
79
+ },
80
+ {} as Record<string, any>
81
+ )
82
+ };
83
+
84
+ // Declare props using Svelte 5's syntax
85
+ const props: ExtendedComponentProps = $props();
86
+
87
+ // Apply defaults manually since Svelte 5 doesn't have withDefaults equivalent
88
+ // Use $derived so the metadata $effect re-runs when any of these change at runtime
89
+ const blendMode = $derived(props.blendMode ?? componentDefaults.blendMode);
90
+ const opacity = $derived(props.opacity); // No default - handled by renderer
91
+ const visible = $derived(props.visible ?? componentDefaults.visible); // Default to true
92
+ const id = $derived(props.id);
93
+ const maskSource = $derived(props.maskSource);
94
+ const maskType = $derived(props.maskType);
95
+ const renderOrder = $derived(props.renderOrder);
96
+ const { children } = props;
97
+
98
+ // Collect PropDriver values from shader props into the maps metadata structure
99
+ const mapsFromProps = $derived.by(() => {
100
+ const maps: Record<string, PropDriver> = {};
101
+ for (const key of Object.keys(componentDefinition.props)) {
102
+ const val = (props as any)[key];
103
+ if (isPropDriver(val)) maps[key] = val as PropDriver;
104
+ }
105
+ return Object.keys(maps).length > 0 ? maps : undefined;
106
+ });
107
+
108
+ /**
109
+ * Computed transform that merges user-provided values with defaults
110
+ */
111
+ const effectiveTransform = $derived({
112
+ ...DEFAULT_TRANSFORM,
113
+ ...props.transform
114
+ });
115
+
116
+ /**
117
+ * Effective bounding box — partial configs merge with full-frame defaults,
118
+ * absent stays undefined so the bbox render path is not activated
119
+ */
120
+ const effectiveBoundingBox = $derived(resolveBoundingBox(props.boundingBox));
121
+
122
+ /**
123
+ * FIRST: Get the parent ID from context BEFORE setting our own context
124
+ */
125
+ const parentId = getContext<string>('shaderParentId');
126
+ if (parentId === undefined) {
127
+ throw new Error('Shader components must be used inside an <Shader> component or another shader component');
128
+ }
129
+
130
+ /**
131
+ * Use the provided ID or generate a unique identifier for this component instance
132
+ */
133
+ const instanceId = (id ? id.replace(/[^a-zA-Z0-9_]/g, '_') : null) || Math.random().toString(36).substring(2, 10);
134
+
135
+ /**
136
+ * THEN: Provide our unique identifier to child components
137
+ */
138
+ setContext('shaderParentId', instanceId);
139
+
140
+ /**
141
+ * Creates a non-reactive object containing only props that differ from defaults
142
+ * This optimization prevents unnecessary GPU uniform updates for unchanged values
143
+ * Special props like blendMode and opacity are handled separately
144
+ */
145
+ const shaderReadyProps = $derived.by(() => {
146
+ let baseProps = { ...componentDefaults };
147
+
148
+ // Only include props that differ from defaults (excluding special props and PropDrivers)
149
+ for (const key in props) {
150
+ if (key !== 'blendMode' && key !== 'opacity' && key !== 'visible' &&
151
+ key !== 'id' && key !== 'maskSource' && key !== 'maskType' && key !== 'renderOrder' &&
152
+ key !== 'transform' && key !== 'boundingBox' && key !== 'children') {
153
+ const propValue = (props as any)[key];
154
+ if (isPropDriver(propValue)) continue; // PropDrivers go to metadata.maps, not uniforms
155
+ const defaultValue = (componentDefaults as any)[key];
156
+ if (propValue !== undefined && propValue !== defaultValue) {
157
+ (baseProps as any)[key] = propValue;
158
+ }
159
+ }
160
+ }
161
+ return baseProps;
162
+ });
163
+
164
+ /**
165
+ * Get the color space from the root Shader component.
166
+ * Used to set the global color space mode before creating uniforms.
167
+ */
168
+ const shaderColorSpace = getContext<() => 'p3-linear' | 'srgb'>('shaderColorSpace');
169
+
170
+ /**
171
+ * Creates the GPU uniform values map using only the changed props
172
+ * Set the global color space mode before creating uniforms so colors are transformed correctly
173
+ * Note: Intentionally captures initial value - props are immutable after initialization
174
+ */
175
+ if (shaderColorSpace) {
176
+ setColorSpaceMode(shaderColorSpace());
177
+ }
178
+ // svelte-ignore state_referenced_locally
179
+ const uniforms: GpuUniformsMap = createGpuUniformsMap(componentDefinition, shaderReadyProps, instanceId);
180
+
181
+ /**
182
+ * Get the node registration function from parent context
183
+ */
184
+ const parentRegister = getContext<(id: string, fragmentNodeFunc: any, parentId: string | null, metadata: NodeMetadata | null, uniforms: GpuUniformsMap | null, componentDefinition: any, domCanvas?: HTMLCanvasElement) => void>('shaderNodeRegister');
185
+ if (parentRegister === undefined) {
186
+ throw new Error('Shader components must be used inside an <Shader> component or another shader component');
187
+ }
188
+
189
+ /**
190
+ * Get the uniform update function from parent context
191
+ */
192
+ const parentUniformUpdate = getContext<(nodeId: string, uniformName: string, value: any) => void>('shaderUniformUpdate');
193
+ if (parentUniformUpdate === undefined) {
194
+ throw new Error('Shader components require shaderUniformUpdate from parent');
195
+ }
196
+
197
+ /**
198
+ * Get the metadata update function from parent context
199
+ */
200
+ const parentMetadataUpdate = getContext<(nodeId: string, metadata: NodeMetadata) => void>('shaderMetadataUpdate');
201
+ if (parentMetadataUpdate === undefined) {
202
+ throw new Error('Shader components require shaderMetadataUpdate from parent');
203
+ }
204
+
205
+ // capturesDOM — canvas layoutsubtree portal for DOMTexture-style shaders
206
+ const isCapturesDOM = !!(componentDefinition as any).capturesDOM;
207
+ let captureCanvas: HTMLCanvasElement | undefined;
208
+ let captureW = $state(typeof window !== 'undefined' ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0);
209
+ let captureH = $state(typeof window !== 'undefined' ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0);
210
+
211
+ function teleportToBody(node: HTMLElement) {
212
+ document.body.appendChild(node);
213
+ return { destroy() { node.remove(); } };
214
+ }
215
+
216
+ if (isCapturesDOM) {
217
+ const onWinResize = () => {
218
+ const d = Math.min(window.devicePixelRatio, 2);
219
+ captureW = Math.round(window.innerWidth * d);
220
+ captureH = Math.round(window.innerHeight * d);
221
+ };
222
+ onMount(() => { window.addEventListener('resize', onWinResize); });
223
+ onDestroy(() => { window.removeEventListener('resize', onWinResize); });
224
+ }
225
+
226
+ // DOM marker ref for determining render order from template position
227
+ let orderMarker: HTMLSpanElement;
228
+
229
+ // Stores the DOM-detected render order
230
+ let detectedRenderOrder: number | undefined = undefined;
231
+
232
+ // Flag to track when component is registered
233
+ let isRegistered = $state(false);
234
+
235
+ // Setup uniform watchers with registration guard
236
+ Object.entries(uniforms).forEach(([propName, entry]) => {
237
+ $effect(() => {
238
+ // Only run after component is registered
239
+ if (!isRegistered) return;
240
+
241
+ // GPU bridge entries carry `.value` (no v1 `.uniform` node). colorStops expands into
242
+ // extra array fields (colorsArray/…) that aren't component props — their `props[name]`
243
+ // is always undefined, so the guard below skips them.
244
+ if (entry && entry.value !== undefined) {
245
+ const newValue = (props as any)[propName];
246
+ if (newValue !== undefined && !isPropDriver(newValue)) {
247
+ // Send raw value - renderer will handle transformation
248
+ // PropDriver values go to metadata.maps, not uniforms
249
+ parentUniformUpdate(instanceId, propName, newValue);
250
+ }
251
+ }
252
+ });
253
+ });
254
+
255
+ // Watch blend mode, opacity, visibility, masking, transformations, and prop maps changes
256
+ $effect(() => {
257
+ // Only run after component is registered
258
+ if (!isRegistered) return;
259
+
260
+ const metadata: NodeMetadata = {
261
+ blendMode,
262
+ opacity,
263
+ visible: visible === false ? false : true,
264
+ id,
265
+ mask: maskSource ? {
266
+ source: maskSource,
267
+ type: (maskType || 'alpha') as MaskConfig['type']
268
+ } : undefined,
269
+ maps: mapsFromProps,
270
+ renderOrder: renderOrder ?? detectedRenderOrder,
271
+ transform: effectiveTransform,
272
+ boundingBox: effectiveBoundingBox
273
+ };
274
+ parentMetadataUpdate(instanceId, metadata);
275
+ });
276
+
277
+ // Register this component after mount to ensure parent is ready
278
+ onMount(() => {
279
+ // Register this component with safety check
280
+ if (componentDefinition && typeof componentDefinition.fragment === 'function') {
281
+ parentRegister(
282
+ instanceId,
283
+ componentDefinition.fragment,
284
+ parentId,
285
+ {
286
+ blendMode,
287
+ opacity,
288
+ visible: visible !== false ? true : false,
289
+ id,
290
+ mask: maskSource ? {
291
+ source: maskSource,
292
+ type: (maskType || 'alpha') as MaskConfig['type']
293
+ } as MaskConfig : undefined,
294
+ maps: mapsFromProps,
295
+ renderOrder: renderOrder ?? detectedRenderOrder,
296
+ transform: effectiveTransform,
297
+ boundingBox: effectiveBoundingBox
298
+ },
299
+ uniforms,
300
+ componentDefinition,
301
+ isCapturesDOM ? captureCanvas : undefined
302
+ );
303
+
304
+ // Set flag to enable effects after successful registration
305
+ isRegistered = true;
306
+
307
+ // Detect DOM position for correct render ordering
308
+ if (renderOrder === undefined && orderMarker) {
309
+ const parent = orderMarker.parentElement;
310
+ if (parent) {
311
+ const siblings = parent.querySelectorAll(':scope > [data-shader-id]');
312
+ const position = Array.from(siblings).indexOf(orderMarker);
313
+ if (position >= 0) {
314
+ detectedRenderOrder = position;
315
+ parentMetadataUpdate(instanceId, { renderOrder: position } as NodeMetadata);
316
+ }
317
+ }
318
+ }
319
+ } else {
320
+ console.error('componentDefinition.fragment is not a function:', {
321
+ componentDefinition,
322
+ fragment: componentDefinition?.fragment,
323
+ type: typeof componentDefinition?.fragment
324
+ });
325
+ }
326
+ });
327
+
328
+ // Clean up node from registry when component is unmounted
329
+ onDestroy(() => {
330
+ isRegistered = false;
331
+ parentRegister(instanceId, null, null, null, null);
332
+ });
333
+ </script>
334
+
335
+ <span bind:this={orderMarker} style="display:contents" data-shader-id={instanceId}>
336
+ {#if !isCapturesDOM}
337
+ {@render children?.()}
338
+ {/if}
339
+ </span>
340
+ {#if isCapturesDOM}
341
+ <canvas use:teleportToBody bind:this={captureCanvas} layoutsubtree
342
+ width={captureW} height={captureH}
343
+ style="position:fixed;inset:0;width:100vw;height:100vh;z-index:-9999">
344
+ {@render children?.()}
345
+ </canvas>
346
+ {/if}
@@ -118,6 +118,7 @@ import Posterize from '../components/Posterize.svelte'
118
118
  import Prism from '../components/Prism.svelte'
119
119
  import ProgressiveBlur from '../components/ProgressiveBlur.svelte'
120
120
  import RadialGradient from '../components/RadialGradient.svelte'
121
+ import ReactionDiffusion from '../components/ReactionDiffusion.svelte'
121
122
  import RectangularCoordinates from '../components/RectangularCoordinates.svelte'
122
123
  import ReflectivePlane from '../components/ReflectivePlane.svelte'
123
124
  import Repeater from '../components/Repeater.svelte'
@@ -288,6 +289,7 @@ const componentMap: Record<string, any> = {
288
289
  Prism,
289
290
  ProgressiveBlur,
290
291
  RadialGradient,
292
+ ReactionDiffusion,
291
293
  RectangularCoordinates,
292
294
  ReflectivePlane,
293
295
  Repeater,
@@ -111,6 +111,7 @@ export { default as Posterize } from './components/Posterize.svelte';
111
111
  export { default as Prism } from './components/Prism.svelte';
112
112
  export { default as ProgressiveBlur } from './components/ProgressiveBlur.svelte';
113
113
  export { default as RadialGradient } from './components/RadialGradient.svelte';
114
+ export { default as ReactionDiffusion } from './components/ReactionDiffusion.svelte';
114
115
  export { default as RectangularCoordinates } from './components/RectangularCoordinates.svelte';
115
116
  export { default as ReflectivePlane } from './components/ReflectivePlane.svelte';
116
117
  export { default as Repeater } from './components/Repeater.svelte';
@@ -1683,6 +1683,30 @@ var shaderMetadata = {
1683
1683
  "skewAngle": 0,
1684
1684
  "colorSpace": "linear"
1685
1685
  },
1686
+ "ReactionDiffusion": {
1687
+ "opacity": 1,
1688
+ "blendMode": "normal",
1689
+ "preset": "coral",
1690
+ "feed": .0545,
1691
+ "kill": .062,
1692
+ "diffusionRatio": .5,
1693
+ "featureSize": 3,
1694
+ "speed": 6,
1695
+ "brushSize": .04,
1696
+ "brushStrength": .6,
1697
+ "colorA": "transparent",
1698
+ "colorC": "#38bdf8",
1699
+ "colorB": "#e2f5ff",
1700
+ "contrast": .5,
1701
+ "threshold": .28,
1702
+ "colorSpace": "oklch",
1703
+ "relief": .4,
1704
+ "lightAngle": 135,
1705
+ "childInfluence": .6,
1706
+ "childContrast": .5,
1707
+ "childThreshold": .5,
1708
+ "childInvert": false
1709
+ },
1686
1710
  "RectangularCoordinates": {
1687
1711
  "opacity": 1,
1688
1712
  "blendMode": "normal",
@@ -2721,6 +2745,7 @@ const availableComponents = [
2721
2745
  "Prism",
2722
2746
  "ProgressiveBlur",
2723
2747
  "RadialGradient",
2748
+ "ReactionDiffusion",
2724
2749
  "RectangularCoordinates",
2725
2750
  "ReflectivePlane",
2726
2751
  "Repeater",
@@ -111,6 +111,7 @@ import Posterize_default from "./Posterize.js";
111
111
  import Prism_default from "./Prism.js";
112
112
  import ProgressiveBlur_default from "./ProgressiveBlur.js";
113
113
  import RadialGradient_default from "./RadialGradient.js";
114
+ import ReactionDiffusion_default from "./ReactionDiffusion.js";
114
115
  import RectangularCoordinates_default from "./RectangularCoordinates.js";
115
116
  import ReflectivePlane_default from "./ReflectivePlane.js";
116
117
  import Repeater_default from "./Repeater.js";
@@ -334,6 +335,7 @@ var Preview_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
334
335
  Prism: Prism_default,
335
336
  ProgressiveBlur: ProgressiveBlur_default,
336
337
  RadialGradient: RadialGradient_default,
338
+ ReactionDiffusion: ReactionDiffusion_default,
337
339
  RectangularCoordinates: RectangularCoordinates_default,
338
340
  ReflectivePlane: ReflectivePlane_default,
339
341
  Repeater: Repeater_default,
@@ -0,0 +1,3 @@
1
+ import ReactionDiffusion_vue_vue_type_script_setup_true_lang_default from "./ReactionDiffusion.vue_vue_type_script_setup_true_lang.js";
2
+ var ReactionDiffusion_default = ReactionDiffusion_vue_vue_type_script_setup_true_lang_default;
3
+ export { ReactionDiffusion_default as default };
@@ -0,0 +1,237 @@
1
+ import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, effectScope, inject, mergeDefaults, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, toValue, unref, useId, watch } from "vue";
2
+ import { createGpuUniformsMap, resolveBoundingBox } from "../core/index.js";
3
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
4
+ import { componentDefinition } from "../core/shaders/ReactionDiffusion/index.js";
5
+ var _hoisted_1 = ["data-shader-id"];
6
+ var _hoisted_2 = ["width", "height"];
7
+ var ReactionDiffusion_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ __name: "ReactionDiffusion",
9
+ props: /* @__PURE__ */ mergeDefaults({
10
+ contrast: {},
11
+ threshold: {},
12
+ relief: {},
13
+ lightAngle: {},
14
+ childInfluence: {},
15
+ childContrast: {},
16
+ childThreshold: {},
17
+ blendMode: {},
18
+ opacity: {},
19
+ visible: { type: Boolean },
20
+ id: {},
21
+ maskSource: {},
22
+ maskType: {},
23
+ renderOrder: {},
24
+ transform: {},
25
+ boundingBox: {},
26
+ preset: {},
27
+ feed: {},
28
+ kill: {},
29
+ diffusionRatio: {},
30
+ featureSize: {},
31
+ speed: {},
32
+ brushSize: {},
33
+ brushStrength: {},
34
+ colorA: {},
35
+ colorB: {},
36
+ colorC: {},
37
+ colorSpace: {},
38
+ childInvert: { type: Boolean }
39
+ }, {
40
+ blendMode: "normal",
41
+ visible: true,
42
+ ...Object.entries(componentDefinition.props).reduce((acc, [key, config]) => {
43
+ acc[key] = config.default;
44
+ return acc;
45
+ }, {})
46
+ }),
47
+ setup(__props) {
48
+ let _experimentalWarnedOnce = false;
49
+ if (componentDefinition.experimental && !_experimentalWarnedOnce) {
50
+ _experimentalWarnedOnce = true;
51
+ const _e = componentDefinition.experimental;
52
+ console.info(`%c⚠ [Shaders] ${componentDefinition.name} is experimental: ${_e.message}`, "color: #f59e0b; font-weight: bold");
53
+ }
54
+ function isPropDriver(value) {
55
+ return typeof value === "object" && value !== null && "type" in value && (value.type === "map" || value.type === "mouse" || value.type === "mouse-position" || value.type === "auto-animate");
56
+ }
57
+ const props = __props;
58
+ const instanceId = (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || useId().replace(/[^a-zA-Z0-9_]/g, "");
59
+ provide("shaderParentId", instanceId);
60
+ const DEFAULT_TRANSFORM = {
61
+ offsetX: 0,
62
+ offsetY: 0,
63
+ rotation: 0,
64
+ scale: 1,
65
+ anchorX: .5,
66
+ anchorY: .5,
67
+ edges: "transparent"
68
+ };
69
+ const effectiveTransform = computed(() => ({
70
+ ...DEFAULT_TRANSFORM,
71
+ ...props.transform
72
+ }));
73
+ const effectiveBoundingBox = computed(() => resolveBoundingBox(props.boundingBox));
74
+ const shaderReadyProps = computed(() => {
75
+ let baseProps = { ...Object.entries(componentDefinition.props).reduce((acc, [key, config]) => {
76
+ acc[key] = config.default;
77
+ return acc;
78
+ }, {}) };
79
+ for (const key in props) if (key !== "blendMode" && key !== "opacity" && key !== "visible" && key !== "id" && key !== "maskSource" && key !== "maskType" && key !== "renderOrder" && key !== "transform" && key !== "boundingBox") {
80
+ const val = toValue(props[key]);
81
+ if (isPropDriver(val)) continue;
82
+ if (val !== Object.entries(componentDefinition.props).reduce((acc, [key$1, config]) => {
83
+ acc[key$1] = config.default;
84
+ return acc;
85
+ }, {})[key]) baseProps[key] = val;
86
+ }
87
+ return baseProps;
88
+ });
89
+ const mapsFromProps = computed(() => {
90
+ const maps = {};
91
+ for (const key of Object.keys(componentDefinition.props)) {
92
+ const val = props[key];
93
+ if (isPropDriver(val)) maps[key] = val;
94
+ }
95
+ return Object.keys(maps).length > 0 ? maps : void 0;
96
+ });
97
+ const shaderColorSpace = inject("shaderColorSpace");
98
+ if (shaderColorSpace) setColorSpaceMode(shaderColorSpace.value);
99
+ const uniforms = createGpuUniformsMap(componentDefinition, shaderReadyProps.value, instanceId);
100
+ const parentId = inject("shaderParentId");
101
+ if (parentId === void 0) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
102
+ const parentRegister = inject("shaderNodeRegister");
103
+ if (parentRegister === void 0) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
104
+ const parentUniformUpdate = inject("shaderUniformUpdate");
105
+ if (parentUniformUpdate === void 0) throw new Error("Shader components require shaderUniformUpdate from parent");
106
+ const parentMetadataUpdate = inject("shaderMetadataUpdate");
107
+ if (parentMetadataUpdate === void 0) throw new Error("Shader components require shaderMetadataUpdate from parent");
108
+ const rendererResetSignal = inject("shaderRendererResetSignal");
109
+ const orderMarker = ref(null);
110
+ const isCapturesDOM = !!componentDefinition.capturesDOM;
111
+ const captureCanvas = ref(null);
112
+ const captureW = ref(typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0);
113
+ const captureH = ref(typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0);
114
+ const captureStyle = {
115
+ position: "fixed",
116
+ inset: "0",
117
+ width: "100vw",
118
+ height: "100vh",
119
+ zIndex: "-9999"
120
+ };
121
+ if (isCapturesDOM) {
122
+ const onWinResize = () => {
123
+ const d = Math.min(window.devicePixelRatio, 2);
124
+ captureW.value = Math.round(window.innerWidth * d);
125
+ captureH.value = Math.round(window.innerHeight * d);
126
+ };
127
+ onMounted(() => {
128
+ const d = Math.min(window.devicePixelRatio, 2);
129
+ captureW.value = Math.round(window.innerWidth * d);
130
+ captureH.value = Math.round(window.innerHeight * d);
131
+ window.addEventListener("resize", onWinResize);
132
+ });
133
+ onBeforeUnmount(() => {
134
+ window.removeEventListener("resize", onWinResize);
135
+ });
136
+ }
137
+ let detectedRenderOrder = void 0;
138
+ const registerWithRenderer = () => {
139
+ parentRegister(instanceId, componentDefinition.fragment, parentId, {
140
+ blendMode: props.blendMode,
141
+ opacity: props.opacity,
142
+ visible: props.visible === false ? false : true,
143
+ id: props.id,
144
+ mask: props.maskSource ? {
145
+ source: props.maskSource,
146
+ type: props.maskType || "alpha"
147
+ } : void 0,
148
+ maps: mapsFromProps.value,
149
+ renderOrder: props.renderOrder ?? detectedRenderOrder,
150
+ transform: effectiveTransform.value,
151
+ boundingBox: effectiveBoundingBox.value
152
+ }, uniforms, componentDefinition, isCapturesDOM ? captureCanvas.value ?? void 0 : void 0);
153
+ };
154
+ onMounted(() => {
155
+ if (props.renderOrder === void 0 && orderMarker.value) {
156
+ const parent = orderMarker.value.parentElement;
157
+ if (parent) {
158
+ const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
159
+ const position = Array.from(siblings).indexOf(orderMarker.value);
160
+ if (position >= 0) {
161
+ detectedRenderOrder = position;
162
+ parentMetadataUpdate(instanceId, { renderOrder: position });
163
+ }
164
+ }
165
+ }
166
+ });
167
+ const setupUniformWatchers = () => {
168
+ const scope = effectScope();
169
+ scope.run(() => {
170
+ Object.entries(uniforms).forEach(([propName, entry]) => {
171
+ watch(() => props[propName], (newValue) => {
172
+ if (entry && entry.value !== void 0 && !isPropDriver(newValue)) parentUniformUpdate(instanceId, propName, newValue);
173
+ }, { deep: true });
174
+ });
175
+ watch(() => [
176
+ props.blendMode,
177
+ props.opacity,
178
+ props.visible,
179
+ props.id,
180
+ props.maskSource,
181
+ props.maskType,
182
+ props.renderOrder,
183
+ props.transform,
184
+ props.boundingBox,
185
+ mapsFromProps.value
186
+ ], ([blendMode, opacity, visible]) => {
187
+ parentMetadataUpdate(instanceId, {
188
+ blendMode,
189
+ opacity,
190
+ visible: visible === false ? false : true,
191
+ id: props.id,
192
+ mask: props.maskSource ? {
193
+ source: props.maskSource,
194
+ type: props.maskType || "alpha"
195
+ } : void 0,
196
+ maps: mapsFromProps.value,
197
+ renderOrder: props.renderOrder ?? detectedRenderOrder,
198
+ transform: effectiveTransform.value,
199
+ boundingBox: effectiveBoundingBox.value
200
+ });
201
+ }, { deep: true });
202
+ if (rendererResetSignal) watch(() => rendererResetSignal.value, (newValue) => {
203
+ if (newValue > 0) registerWithRenderer();
204
+ }, { immediate: true });
205
+ });
206
+ onBeforeUnmount(() => {
207
+ scope.stop();
208
+ });
209
+ };
210
+ if (isCapturesDOM) onMounted(() => {
211
+ setupUniformWatchers();
212
+ });
213
+ else setupUniformWatchers();
214
+ onBeforeUnmount(() => {
215
+ parentRegister(instanceId, null, null, null, null, null);
216
+ });
217
+ return (_ctx, _cache) => {
218
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", {
219
+ ref_key: "orderMarker",
220
+ ref: orderMarker,
221
+ style: { "display": "contents" },
222
+ "data-shader-id": unref(instanceId)
223
+ }, [!isCapturesDOM ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("", true)], 8, _hoisted_1), isCapturesDOM ? (openBlock(), createBlock(Teleport, {
224
+ key: 0,
225
+ to: "body"
226
+ }, [createElementVNode("canvas", mergeProps({
227
+ ref_key: "captureCanvas",
228
+ ref: captureCanvas
229
+ }, { "layoutsubtree": "" }, {
230
+ width: captureW.value,
231
+ height: captureH.value,
232
+ style: captureStyle
233
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_2)])) : createCommentVNode("", true)], 64);
234
+ };
235
+ }
236
+ });
237
+ export { ReactionDiffusion_vue_vue_type_script_setup_true_lang_default as default };
@@ -75,7 +75,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
75
75
  const startTelemetryWhenReady = () => {
76
76
  const checkRendering = () => {
77
77
  if (rendererInstance.value.getPerformanceStats().fps > 0) {
78
- telemetryCollector = startTelemetry(rendererInstance.value, "3.0.440", props.disableTelemetry, props.isPreview);
78
+ telemetryCollector = startTelemetry(rendererInstance.value, "3.0.442", props.disableTelemetry, props.isPreview);
79
79
  if (telemetryCollector) telemetryCollector.start();
80
80
  telemetryStartTimeout = null;
81
81
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);