@paper-design/shaders-react 0.0.24 → 0.0.26
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.
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/shader-mount.d.ts +1 -3
- package/dist/shaders/dot-grid.d.ts +2 -2
- package/dist/shaders/dot-orbit.d.ts +2 -1
- package/dist/shaders/god-rays.d.ts +2 -1
- package/dist/shaders/grain-clouds.d.ts +2 -1
- package/dist/shaders/mesh-gradient.d.ts +2 -1
- package/dist/shaders/metaballs.d.ts +2 -1
- package/dist/shaders/neuro-noise.d.ts +2 -1
- package/dist/shaders/perlin-noise.d.ts +3 -3
- package/dist/shaders/smoke-ring.d.ts +2 -2
- package/dist/shaders/spiral.d.ts +2 -1
- package/dist/shaders/stepped-simplex-noise.d.ts +2 -1
- package/dist/shaders/voronoi.d.ts +2 -2
- package/dist/shaders/warp.d.ts +2 -1
- package/dist/shaders/waves.d.ts +3 -3
- package/dist/use-merge-refs.d.ts +6 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/***** Paper Shaders: https://github.com/paper-design/shaders *****/
|
|
2
|
-
import{useEffect as D,useRef as B}from"react";import{ShaderMount as L}from"@paper-design/shaders";import{jsx as A}from"react/jsx-runtime";var I=e=>{let r={},b=[],F=n=>{try{return n.startsWith("/")||new URL(n),!0}catch{return!1}},x=n=>{try{return n.startsWith("/")?!1:new URL(n,window.location.origin).origin!==window.location.origin}catch{return!1}};return Object.entries(e).forEach(([n,i])=>{if(typeof i=="string"){if(!F(i)){console.warn(`Uniform "${n}" has invalid URL "${i}". Skipping image loading.`);return}let k=new Promise((C,p)=>{let P=new Image;x(i)&&(P.crossOrigin="anonymous"),P.onload=()=>{r[n]=P,C()},P.onerror=()=>{console.error(`Could not set uniforms. Failed to load image at ${i}`),p()},P.src=i});b.push(k)}else r[n]=i}),Promise.all(b).then(()=>r)},o=({ref:e,shaderMountRef:r,fragmentShader:b,style:F,uniforms:x={},webGlContextAttributes:n,speed:i=1,frame:k=0})=>{let C=e??B(null),p=r??B(null);return D(()=>((async()=>{let U=await I(x);C.current&&!p.current&&(p.current=new L(C.current,b,U,n,i,k))})(),()=>{p.current?.dispose(),p.current=null}),[b,n]),D(()=>{(async()=>{let U=await I(x);p.current?.setUniforms(U)})()},[x]),D(()=>{p.current?.setSpeed(i)},[i]),D(()=>{p.current?.setFrame(k)},[k]),A("canvas",{ref:C,style:F})};import{useMemo as H}from"react";import{getShaderColorFromString as E,grainCloudsFragmentShader as $}from"@paper-design/shaders";import{jsx as j}from"react/jsx-runtime";var M={name:"Default",params:{scale:1,speed:.3,frame:0,color1:"hsla(0, 0%, 0%, 1)",color2:"hsla(0, 0%, 100%, 1)",grainAmount:1}},K={name:"Sky",params:{scale:1,speed:.3,frame:0,color1:"hsla(218, 100%, 73%, 1)",color2:"hsla(0, 0%, 100%, 1)",grainAmount:0}},Z=[M,K],Q=e=>{let r=H(()=>({u_scale:e.scale??M.params.scale,u_color1:E(e.color1,M.params.color1),u_color2:E(e.color2,M.params.color2),u_grainAmount:e.grainAmount??M.params.grainAmount}),[e.scale,e.color1,e.color2,e.grainAmount]);return j(o,{...e,fragmentShader:$,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as ee}from"react";import{getShaderColorFromString as z,meshGradientFragmentShader as re}from"@paper-design/shaders";import{jsx as le}from"react/jsx-runtime";var G={name:"Default",params:{speed:.15,frame:0,color1:"hsla(259, 29%, 73%, 1)",color2:"hsla(263, 57%, 39%, 1)",color3:"hsla(48, 73%, 84%, 1)",color4:"hsla(295, 32%, 70%, 1)"}},oe={name:"Beach",params:{speed:.1,frame:0,color1:"hsla(186, 81%, 83%, 1)",color2:"hsla(198, 55%, 68%, 1)",color3:"hsla(53, 67%, 88%, 1)",color4:"hsla(45, 93%, 73%, 1)"}},se={name:"Faded",params:{speed:-.3,frame:0,color1:"hsla(186, 41%, 90%, 1)",color2:"hsla(208, 71%, 85%, 1)",color3:"hsla(183, 51%, 92%, 1)",color4:"hsla(201, 72%, 90%, 1)"}},ae=[G,oe,se],te=e=>{let r=ee(()=>({u_color1:z(e.color1,G.params.color1),u_color2:z(e.color2,G.params.color2),u_color3:z(e.color3,G.params.color3),u_color4:z(e.color4,G.params.color4)}),[e.color1,e.color2,e.color3,e.color4]);return le(o,{...e,fragmentShader:re,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as ne}from"react";import{getShaderColorFromString as v,smokeRingFragmentShader as ie}from"@paper-design/shaders";import{jsx as he}from"react/jsx-runtime";var g={name:"Default",params:{scale:1,speed:1,frame:0,colorBack:"hsla(208, 54%, 7%, 1)",colorInner:"hsla(0, 0%, 100%, 1)",colorOuter:"hsla(211, 100%, 64%, 1)",noiseScale:1.4,thickness:.33}},ce={name:"Cloud",params:{scale:1,speed:1,frame:0,colorBack:"hsla(218, 100%, 62%, 1)",colorInner:"hsla(0, 0%, 100%, 1)",colorOuter:"hsla(0, 0%, 100%, 1)",noiseScale:1.8,thickness:.7}},me={name:"Fire",params:{scale:1,speed:4,frame:0,colorBack:"hsla(20, 100%, 5%, 1)",colorInner:"hsla(40, 100%, 50%, 1)",colorOuter:"hsla(0, 100%, 50%, 1)",noiseScale:1.4,thickness:.35}},de={name:"Electric",params:{scale:1,speed:-2.5,frame:0,colorBack:"hsla(47, 50%, 7%, 1)",colorInner:"hsla(47, 100%, 64%, 1)",colorOuter:"hsla(47, 100%, 64%, 1)",noiseScale:1.8,thickness:.1}},pe={name:"Poison",params:{scale:1,speed:3,frame:0,colorBack:"hsla(120, 100%, 3%, 1)",colorInner:"hsla(120, 100%, 3%, 1)",colorOuter:"hsla(120, 100%, 66%, 1)",noiseScale:5,thickness:.6}},fe=[g,ce,me,de,pe],ue=e=>{let r=ne(()=>({u_scale:e.scale??g.params.scale,u_colorBack:v(e.colorBack,g.params.colorBack),u_colorInner:v(e.colorInner,g.params.colorInner),u_colorOuter:v(e.colorOuter,g.params.colorOuter),u_noiseScale:e.noiseScale??g.params.noiseScale,u_thickness:e.thickness??g.params.thickness}),[e.scale,e.colorBack,e.colorInner,e.colorOuter,e.noiseScale,e.thickness]);return he(o,{...e,fragmentShader:ie,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as Se}from"react";import{getShaderColorFromString as Y,neuroNoiseFragmentShader as Pe}from"@paper-design/shaders";import{jsx as xe}from"react/jsx-runtime";var R={name:"Default",params:{scale:1,speed:1,frame:0,colorFront:"hsla(261, 100%, 82%, 1)",colorBack:"hsla(0, 0%, 0%, 1)",brightness:1.3}},ge={name:"Marble",params:{scale:.4,speed:0,frame:0,colorFront:"hsla(230, 24%, 15%, 1)",colorBack:"hsla(0, 0%, 97%, 1)",brightness:1.1}},ye=[R,ge],be=e=>{let r=Se(()=>({u_scale:e.scale??R.params.scale,u_colorFront:Y(e.colorFront,R.params.colorFront),u_colorBack:Y(e.colorBack,R.params.colorBack),u_brightness:e.brightness??R.params.brightness}),[e.scale,e.colorFront,e.colorBack,e.brightness]);return xe(o,{...e,fragmentShader:Pe,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as ke}from"react";import{getShaderColorFromString as W,dotOrbitFragmentShader as Ce}from"@paper-design/shaders";import{jsx as Re}from"react/jsx-runtime";var f={name:"Default",params:{scale:1,speed:2,frame:0,color1:"hsla(358, 66%, 49%, 1)",color2:"hsla(145, 30%, 33%, 1)",color3:"hsla(39, 88%, 52%, 1)",color4:"hsla(274, 30%, 35%, 1)",dotSize:.7,dotSizeRange:.4,spreading:1}},Me=[f],Ge=e=>{let r=ke(()=>({u_scale:e.scale??f.params.scale,u_color1:W(e.color1,f.params.color1),u_color2:W(e.color2,f.params.color2),u_color3:W(e.color3,f.params.color3),u_color4:W(e.color4,f.params.color4),u_dotSize:e.dotSize??f.params.dotSize,u_dotSizeRange:e.dotSizeRange??f.params.dotSizeRange,u_spreading:e.spreading??f.params.spreading}),[e.scale,e.color1,e.color2,e.color3,e.color4,e.dotSize,e.dotSizeRange,e.spreading]);return Re(o,{...e,fragmentShader:Ce,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as _e}from"react";import{dotGridFragmentShader as Ne,getShaderColorFromString as X,DotGridShapes as u}from"@paper-design/shaders";import{jsx as Be}from"react/jsx-runtime";var c={name:"Default",params:{colorBack:"hsla(358, 66%, 49%, 0)",colorFill:"hsla(145, 30%, 10%, 1)",colorStroke:"hsla(39, 88%, 52%, 1)",dotSize:2,gridSpacingX:50,gridSpacingY:50,strokeWidth:0,sizeRange:0,opacityRange:0,shape:u.Circle}},De={name:"Macrodata",params:{colorBack:"hsla(211, 37%, 13%, 1)",colorFill:"hsla(218, 100%, 67%, 1)",colorStroke:"hsla(0, 0%, 0%, 1)",dotSize:3,gridSpacingX:25,gridSpacingY:25,strokeWidth:0,sizeRange:.25,opacityRange:.9,shape:u.Circle}},ze={name:"Triangles",params:{colorBack:"hsla(0, 0%, 100%, 1)",colorFill:"hsla(0, 0%, 100%, 1)",colorStroke:"hsla(0, 0%, 0%, .5)",dotSize:5,gridSpacingX:32,gridSpacingY:32,strokeWidth:1,sizeRange:0,opacityRange:0,shape:u.Triangle}},We={name:"Bubbles",params:{colorBack:"hsla(234, 100%, 31%, .5)",colorFill:"hsla(100, 30%, 100%, 1)",colorStroke:"hsla(0, 100%, 0%, 1)",dotSize:28,gridSpacingX:60,gridSpacingY:60,strokeWidth:12,sizeRange:.7,opacityRange:1.3,shape:u.Circle}},we={name:"Tree line",params:{colorBack:"hsla(100, 100%, 36%, .05)",colorFill:"hsla(150, 80%, 10%, 1)",colorStroke:"hsla(0, 0%, 0%, 1)",dotSize:8,gridSpacingX:20,gridSpacingY:90,strokeWidth:0,sizeRange:1,opacityRange:.6,shape:u.Circle}},Fe={name:"Diamonds",params:{colorBack:"hsla(0, 0%, 0%, 0)",colorFill:"hsla(0, 100%, 50%, 1)",colorStroke:"hsla(0, 0%, 0%, 1)",dotSize:15,gridSpacingX:30,gridSpacingY:30,strokeWidth:0,sizeRange:0,opacityRange:2,shape:u.Diamond}},Ue={name:"Wallpaper",params:{colorBack:"hsla(154, 33%, 19%, 1)",colorFill:"hsla(0, 0%, 0%, 0)",colorStroke:"hsla(36, 48%, 58%, 1)",dotSize:9,gridSpacingX:32,gridSpacingY:32,strokeWidth:1,sizeRange:0,opacityRange:0,shape:u.Diamond}},ve={name:"Enter the Matrix",params:{colorBack:"hsla(0, 100%, 0%, 1)",colorFill:"hsla(182, 100%, 64%, 1)",colorStroke:"hsla(0, 100%, 100%, 0)",dotSize:2,gridSpacingX:10,gridSpacingY:10,strokeWidth:.5,sizeRange:.25,opacityRange:1,shape:u.Triangle}},Xe={name:"Waveform",params:{colorBack:"hsla(0, 100%, 100%, 1)",colorFill:"hsla(227, 93%, 38%, 1)",colorStroke:"hsla(0, 0%, 0%, 0)",dotSize:100,gridSpacingX:2,gridSpacingY:215,strokeWidth:0,sizeRange:1,opacityRange:0,shape:u.Square}},qe=[c,De,ze,We,we,Fe,Ue,ve,Xe],Oe=e=>{let r=_e(()=>({u_colorBack:X(e.colorBack,c.params.colorBack),u_colorFill:X(e.colorFill,c.params.colorStroke),u_colorStroke:X(e.colorStroke,c.params.colorStroke),u_dotSize:e.dotSize??c.params.dotSize,u_gridSpacingX:e.gridSpacingX??c.params.gridSpacingX,u_gridSpacingY:e.gridSpacingY??c.params.gridSpacingY,u_strokeWidth:e.strokeWidth??c.params.strokeWidth,u_sizeRange:e.sizeRange??c.params.sizeRange,u_opacityRange:e.opacityRange??c.params.opacityRange,u_shape:e.shape??c.params.shape}),[e.colorBack,e.colorFill,e.colorStroke,e.dotSize,e.gridSpacingX,e.gridSpacingY,e.strokeWidth,e.sizeRange,e.opacityRange,e.shape]);return Be(o,{...e,fragmentShader:Ne,uniforms:r})};import{DotGridShapes as la}from"@paper-design/shaders";import{useMemo as Ie}from"react";import{getShaderColorFromString as _,steppedSimplexNoiseFragmentShader as Ee}from"@paper-design/shaders";import{jsx as Ae}from"react/jsx-runtime";var S={name:"Default",params:{scale:1,speed:.15,frame:0,color1:"hsla(208, 25%, 45%, 1)",color2:"hsla(94, 38%, 59%, 1)",color3:"hsla(359, 94%, 62%, 1)",color4:"hsla(42, 93%, 64%, 1)",color5:"hsla(0, 0%, 100%, 1)",stepsNumber:13}},Ye={name:"Magma",params:{scale:.3,speed:.2,frame:0,color1:"hsla(0, 100%, 36%, 1)",color2:"hsla(0, 95%, 44%, 1)",color3:"hsla(20, 100%, 49%, 1)",color4:"hsla(45, 100%, 45%, 1)",color5:"hsla(31, 100%, 94%, 1)",stepsNumber:8}},Ve={name:"Blood cell",params:{scale:1.2,speed:.22,frame:0,color1:"hsla(302, 43%, 13%, 1)",color2:"hsla(325, 93%, 17%, 1)",color3:"hsla(338, 80%, 25%, 1)",color4:"hsla(338, 80%, 25%, 1)",color5:"hsla(2, 85%, 72%, 1)",stepsNumber:29}},Te={name:"First contact",params:{scale:1.2,speed:-.1,frame:0,color1:"hsla(300, 43%, 82%, 1)",color2:"hsla(266, 70%, 9%, 1)",color3:"hsla(289, 36%, 26%, 1)",color4:"hsla(0, 41%, 78%, 1)",color5:"hsla(0, 100%, 96%, 1)",stepsNumber:40}},Je=[S,Ye,Ve,Te],Le=e=>{let r=Ie(()=>({u_scale:e.scale??S.params.scale,u_color1:_(e.color1,S.params.color1),u_color2:_(e.color2,S.params.color2),u_color3:_(e.color3,S.params.color3),u_color4:_(e.color4,S.params.color4),u_color5:_(e.color5,S.params.color5),u_steps_number:e.stepsNumber??S.params.stepsNumber}),[e.scale,e.color1,e.color2,e.color3,e.color4,e.color5,e.stepsNumber]);return Ae(o,{...e,fragmentShader:Ee,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as He}from"react";import{getShaderColorFromString as q,metaballsFragmentShader as $e}from"@paper-design/shaders";import{jsx as Qe}from"react/jsx-runtime";var y={name:"Default",params:{scale:1,speed:.6,frame:0,color1:"hsla(350, 90%, 55%, 1)",color2:"hsla(350, 80%, 60%, 1)",color3:"hsla(20, 85%, 70%, 1)",ballSize:1,visibilityRange:.4}},Ke=[y],Ze=e=>{let r=He(()=>({u_scale:e.scale??y.params.scale,u_color1:q(e.color1,y.params.color1),u_color2:q(e.color2,y.params.color2),u_color3:q(e.color3,y.params.color3),u_ballSize:e.ballSize??y.params.ballSize,u_visibilityRange:e.visibilityRange??y.params.visibilityRange}),[e.scale,e.color1,e.color2,e.color3,e.ballSize,e.visibilityRange]);return Qe(o,{...e,fragmentShader:$e,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as je}from"react";import{getShaderColorFromString as V,wavesFragmentShader as er}from"@paper-design/shaders";import{jsx as ir}from"react/jsx-runtime";var m={name:"Default",params:{scale:1,rotation:0,color1:"hsla(48, 100%, 74%, 1)",color2:"hsla(204, 47%, 45%, 1)",shape:1,frequency:.5,amplitude:.5,spacing:.75,dutyCycle:.2,softness:0}},rr={name:"Spikes",params:{scale:2.3,rotation:0,color1:"hsla(65, 100%, 95%, 1)",color2:"hsla(290, 52%, 15%, 1)",shape:0,frequency:.5,amplitude:.9,spacing:.37,dutyCycle:.93,softness:.15}},or={name:"Groovy",params:{scale:.5,rotation:1,color1:"hsla(60, 100%, 97%, 1)",color2:"hsla(20, 100%, 71%, 1)",shape:2.37,frequency:.2,amplitude:.67,spacing:1.17,dutyCycle:.57,softness:0}},sr={name:"Tangled up",params:{scale:3.04,rotation:1,color1:"hsla(198.7, 66.7%, 14.1%, 1)",color2:"hsla(85.5, 35.7%, 78%, 1)",shape:3,frequency:.44,amplitude:.57,spacing:1.05,dutyCycle:.97,softness:0}},ar={name:"Zig zag",params:{scale:2.7,rotation:1,color1:"hsla(0, 0%, 0%, 1)",color2:"hsla(0, 0%, 90%, 1)",shape:0,frequency:.6,amplitude:.8,spacing:.5,dutyCycle:1,softness:.5}},tr={name:"Ride the wave",params:{scale:.84,rotation:0,color1:"hsla(65, 100%, 95%, 1)",color2:"hsla(0, 0%, 12%, 1)",shape:2.23,frequency:.1,amplitude:.6,spacing:.41,dutyCycle:.99,softness:0}},lr=[m,rr,or,sr,ar,tr],nr=e=>{let r=je(()=>({u_scale:e.scale??m.params.scale,u_rotation:e.rotation??m.params.rotation,u_color1:V(e.color1,m.params.color1),u_color2:V(e.color2,m.params.color2),u_shape:e.shape??m.params.shape,u_frequency:e.frequency??m.params.frequency,u_amplitude:e.amplitude??m.params.amplitude,u_spacing:e.spacing??m.params.spacing,u_dutyCycle:e.dutyCycle??m.params.dutyCycle,u_softness:e.softness??m.params.softness}),[e.scale,e.rotation,e.color1,e.color2,e.shape,e.frequency,e.amplitude,e.spacing,e.dutyCycle,e.softness]);return ir(o,{...e,fragmentShader:er,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as cr}from"react";import{getShaderColorFromString as T,perlinNoiseFragmentShader as mr}from"@paper-design/shaders";import{jsx as gr}from"react/jsx-runtime";var h={name:"Default",params:{scale:1,speed:.5,frame:0,color1:"hsla(0, 0%, 15%, 1)",color2:"hsla(203, 100%, 87%, 1)",proportion:.34,softness:.1,octaveCount:2,persistence:1,lacunarity:1.5}},dr={name:"Nintendo Water",params:{scale:.2,speed:.4,frame:0,color1:"hsla(220, 66%, 50%, 1)",color2:"hsla(200, 66%, 90%, 1)",proportion:.42,softness:0,octaveCount:2,persistence:.55,lacunarity:1.8}},pr={name:"Colony",params:{scale:.15,speed:0,frame:0,color1:"hsla(56, 86%, 81%, 1)",color2:"hsla(230, 80%, 20%, 1)",octaveCount:6,persistence:1,lacunarity:2.55,proportion:.65,softness:.35}},fr={name:"Phosphenes",params:{scale:.03,speed:.15,frame:0,color1:"hsla(350, 80%, 70%, 1)",color2:"hsla(150, 50%, 60%, 1)",proportion:.45,softness:.45,octaveCount:6,persistence:.3,lacunarity:3}},ur={name:"Moss",params:{scale:.15,speed:.02,frame:0,color1:"hsla(137, 100%, 51%, 1)",color2:"hsla(0, 0%, 15%, 1)",proportion:.65,softness:.35,octaveCount:6,persistence:1,lacunarity:2.55}},hr={name:"Worms",params:{scale:2,speed:0,frame:0,color1:"hsla(0, 100%, 100%, 1)",color2:"hsla(0, 0%, 35%, 1)",proportion:.5,softness:0,octaveCount:1,persistence:1,lacunarity:1.5}},Sr=[h,dr,pr,fr,ur,hr],Pr=e=>{let r=cr(()=>({u_scale:e.scale??h.params.scale,u_color1:T(e.color1,h.params.color1),u_color2:T(e.color2,h.params.color2),u_proportion:e.proportion??h.params.proportion,u_softness:e.softness??h.params.softness,u_octaveCount:e.octaveCount??h.params.octaveCount,u_persistence:e.persistence??h.params.persistence,u_lacunarity:e.lacunarity??h.params.lacunarity}),[e.scale,e.color1,e.color2,e.proportion,e.softness,e.octaveCount,e.persistence,e.lacunarity]);return gr(o,{...e,fragmentShader:mr,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as yr}from"react";import{getShaderColorFromString as N,voronoiFragmentShader as br}from"@paper-design/shaders";import{jsx as zr}from"react/jsx-runtime";var a={name:"Default",params:{scale:1.5,speed:.5,frame:0,colorCell1:"hsla(15, 80%, 50%, 1)",colorCell2:"hsla(180, 80%, 50%, 1)",colorCell3:"hsla(200, 80%, 50%, 1)",colorEdges:"hsla(30, 90%, 10%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:.5,distance:.25,edgesSize:.15,edgesSoftness:.01,middleSize:0,middleSoftness:0}},xr={name:"Classic",params:{scale:3,speed:.8,frame:0,colorCell1:"hsla(0, 100%, 100%, 1)",colorCell2:"hsla(0, 0%, 100%, 1)",colorCell3:"hsla(0, 100%, 0%, 1)",colorEdges:"hsla(0, 0%, 0%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.45,edgesSize:.02,edgesSoftness:.07,middleSize:0,middleSoftness:0}},kr={name:"Giraffe",params:{scale:1,speed:.6,frame:0,colorCell1:"hsla(32, 100%, 18%, 1)",colorCell2:"hsla(42, 93%, 35%, 1)",colorCell3:"hsla(32, 100%, 18%, 1)",colorEdges:"hsla(45, 100%, 96%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.25,edgesSize:.2,edgesSoftness:.01,middleSize:0,middleSoftness:0}},Cr={name:"Eyes",params:{scale:1.6,speed:.6,frame:0,colorCell1:"hsla(79, 84%, 60%, 1)",colorCell2:"hsla(207, 53%, 41%, 1)",colorCell3:"hsla(207, 80%, 65%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorEdges:"hsla(0, 100%, 100%, 1)",colorGradient:1,distance:.25,edgesSize:.62,edgesSoftness:.01,middleSize:.1,middleSoftness:0}},Mr={name:"Bubbles",params:{scale:2,speed:.5,frame:0,colorCell1:"hsla(0, 100%, 50%, 1)",colorCell2:"hsla(169, 100%, 66%, 1)",colorCell3:"hsla(50, 100%, 66%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorEdges:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.5,edgesSize:.81,edgesSoftness:0,middleSize:0,middleSoftness:0}},Gr={name:"Cells",params:{scale:2,speed:1,frame:0,colorCell1:"hsla(0, 0%, 100%, 1)",colorCell2:"hsla(0, 0%, 100%, 1)",colorCell3:"hsla(0, 0%, 100%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorEdges:"hsla(200, 50%, 15%, 1)",colorGradient:1,distance:.38,edgesSize:.1,edgesSoftness:.02,middleSize:0,middleSoftness:0}},Rr={name:"Glow",params:{scale:1.2,speed:.8,frame:0,colorCell1:"hsla(40, 100%, 50%, 1)",colorCell2:"hsla(311, 100%, 59%, 1)",colorCell3:"hsla(180, 100%, 65%, 1)",colorEdges:"hsla(0, 100%, 0%, 1)",colorMid:"hsla(0, 0%, 100%, 1)",colorGradient:1,distance:.25,edgesSize:.15,edgesSoftness:.01,middleSize:.7,middleSoftness:1}},_r={name:"Tiles",params:{scale:1.3,speed:1,frame:0,colorCell1:"hsla(80, 50%, 50%, 1)",colorCell2:"hsla(0, 50%, 100%, 1)",colorCell3:"hsla(200, 50%, 50%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorEdges:"hsla(200, 50%, 10%, 1)",colorGradient:0,distance:.05,edgesSize:.25,edgesSoftness:.02,middleSize:0,middleSoftness:0}},Nr=[a,xr,kr,Cr,Mr,Gr,Rr,_r],Dr=e=>{let r=yr(()=>({u_scale:e.scale??a.params.scale,u_colorCell1:N(e.colorCell1,a.params.colorCell1),u_colorCell2:N(e.colorCell2,a.params.colorCell2),u_colorCell3:N(e.colorCell3,a.params.colorCell3),u_colorMid:N(e.colorMid,a.params.colorMid),u_colorEdges:N(e.colorEdges,a.params.colorEdges),u_colorGradient:e.colorGradient??a.params.colorGradient,u_distance:e.distance??a.params.distance,u_edgesSize:e.edgesSize??a.params.edgesSize,u_edgesSoftness:e.edgesSoftness??a.params.edgesSoftness,u_middleSize:e.middleSize??a.params.middleSize,u_middleSoftness:e.middleSoftness??a.params.middleSoftness}),[e.scale,e.colorCell1,e.colorCell3,e.colorCell2,e.colorMid,e.colorEdges,e.colorGradient,e.distance,e.edgesSize,e.edgesSoftness,e.middleSize,e.middleSoftness]);return zr(o,{...e,fragmentShader:br,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as Wr}from"react";import{getShaderColorFromString as O,warpFragmentShader as wr,PatternShapes as d}from"@paper-design/shaders";import{jsx as Jr}from"react/jsx-runtime";var t={name:"Default",params:{scale:1,rotation:0,speed:.1,frame:0,color1:"hsla(0, 0%, 15%, 1)",color2:"hsla(203, 80%, 70%, 1)",color3:"hsla(0, 0%, 100%, 1)",proportion:.35,softness:1,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.1,shape:d.Checks}},Fr={name:"Cauldron Pot",params:{scale:1.1,rotation:1.62,speed:1,frame:0,color1:"hsla(100, 51%, 75%, 1)",color2:"hsla(220, 39%, 32%, 1)",color3:"hsla(129.2, 41.9%, 6.1%, 1)",proportion:.64,softness:.95,distortion:.2,swirl:.86,swirlIterations:7,shapeScale:0,shape:d.Edge}},Ur={name:"Silk",params:{scale:.26,rotation:0,speed:.5,frame:0,color1:"hsla(0, 9%, 7%, 1)",color2:"hsla(8, 13%, 34%, 1)",color3:"hsla(5, 8%, 71%, 1)",proportion:0,softness:1,distortion:.3,swirl:.6,swirlIterations:11,shapeScale:.05,shape:d.Stripes}},vr={name:"Passion",params:{scale:.25,rotation:1.35,speed:.3,frame:0,color1:"hsla(0, 44.7%, 14.9%, 1)",color2:"hsla(353.4, 34%, 42.2%, 1)",color3:"hsla(29, 100%, 76.1%, 1)",proportion:.5,softness:1,distortion:.09,swirl:.9,swirlIterations:6,shapeScale:.25,shape:d.Checks}},Xr={name:"Phantom",params:{scale:.68,rotation:1.8,speed:1.25,frame:0,color1:"hsla(242.2, 44.3%, 12%, 1)",color2:"hsla(236.1, 80.4%, 70%, 1)",color3:"hsla(0, 0%, 100%, 1)",proportion:.45,softness:1,distortion:.16,swirl:.3,swirlIterations:7,shapeScale:.1,shape:d.Checks}},qr={name:"The Abyss",params:{scale:.1,rotation:2,speed:.06,frame:0,color1:"hsla(242.2, 44.3%, 12%, 1)",color2:"hsla(236.1, 80.4%, 70%, 1)",color3:"hsla(0, 0%, 100%, 1)",proportion:0,softness:1,distortion:.09,swirl:.48,swirlIterations:4,shapeScale:.1,shape:d.Edge}},Or={name:"Live Ink",params:{scale:.7,rotation:1.5,speed:.25,frame:0,color1:"hsla(210, 11.1%, 7.1%, 1)",color2:"hsla(165, 9%, 65.1%, 1)",color3:"hsla(84, 100%, 97.1%, 1)",proportion:.35,softness:0,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.26,shape:d.Checks}},Br={name:"Iceberg",params:{scale:1.1,rotation:2,speed:.05,frame:0,color1:"hsla(0, 0%, 100%, 1)",color2:"hsla(220, 38.7%, 32%, 1)",color3:"hsla(129.2, 41.9%, 6.1%, 1)",proportion:.3,softness:1,distortion:.2,swirl:.86,swirlIterations:7,shapeScale:0,shape:d.Checks}},Ir={name:"Nectar",params:{scale:.24,rotation:0,speed:.42,frame:0,color1:"hsla(37.5, 22.2%, 7.1%, 1)",color2:"hsla(38.5, 59.1%, 63.1%, 1)",color3:"hsla(37.6, 30%, 95.2%, 1)",proportion:.24,softness:1,distortion:.21,swirl:.57,swirlIterations:10,shapeScale:.32,shape:d.Edge}},Er={name:"Filtered Light",params:{scale:2,rotation:.44,speed:.32,frame:0,color1:"hsla(60.2, 7.8%, 8.3%, 1)",color2:"hsla(64.4, 27.8%, 81%, 1)",color3:"hsla(60, 100%, 93.9%, 1)",proportion:.25,softness:1,distortion:.06,swirl:0,swirlIterations:0,shapeScale:0,shape:d.Stripes}},Yr={name:"Kelp",params:{scale:.38,rotation:.6,speed:2,frame:0,color1:"hsla(79.3, 100%, 78%, 1)",color2:"hsla(112, 10.5%, 28%, 1)",color3:"hsla(203.3, 50%, 7.1%, 1)",proportion:1,softness:0,distortion:0,swirl:.15,swirlIterations:0,shapeScale:.74,shape:d.Stripes}},Vr=[t,qr,Fr,Er,Br,Or,Yr,Ir,vr,Xr,Ur],Tr=e=>{let r=Wr(()=>({u_scale:e.scale??t.params.scale,u_rotation:e.rotation??t.params.rotation,u_color1:O(e.color1,t.params.color1),u_color2:O(e.color2,t.params.color2),u_color3:O(e.color3,t.params.color2),u_proportion:e.proportion??t.params.proportion,u_softness:e.softness??t.params.softness,u_distortion:e.distortion??t.params.distortion,u_swirl:e.swirl??t.params.swirl,u_swirlIterations:e.swirlIterations??t.params.swirlIterations,u_shapeScale:e.shapeScale??t.params.shapeScale,u_shape:e.shape??t.params.shape}),[e.scale,e.rotation,e.color1,e.color2,e.color3,e.proportion,e.softness,e.distortion,e.swirl,e.swirlIterations,e.shapeScale,e.shape]);return Jr(o,{...e,fragmentShader:wr,uniforms:r})};import{PatternShapes as Wa}from"@paper-design/shaders";import{useMemo as Lr}from"react";import{getShaderColorFromString as w,godRaysFragmentShader as Ar}from"@paper-design/shaders";import{jsx as eo}from"react/jsx-runtime";var l={name:"Default",params:{colorBack:"hsla(215, 100%, 11%, 1)",color1:"hsla(45, 100%, 70%, 1)",color2:"hsla(10, 100%, 80%, 1)",color3:"hsla(178, 100%, 83%, 1)",offsetX:-.6,offsetY:-.6,frequency:6,spotty:.28,midIntensity:.97,midSize:2,density:.3,blending:0,speed:1,frame:0}},Hr={name:"Aurora",params:{colorBack:"hsla(0, 0%, 25%, 1)",color1:"hsla(239, 100%, 70%, 1)",color2:"hsla(150, 100%, 70%, 1)",color3:"hsla(200, 100%, 70%, 1)",offsetX:0,offsetY:1,frequency:2.4,spotty:.9,midIntensity:.8,midSize:2.1,density:.5,blending:1,speed:.5,frame:0}},$r={name:"Warp",params:{colorBack:"hsla(0, 0%, 0%, 1)",color1:"hsla(317, 100%, 50%, 1)",color2:"hsla(25, 100%, 50%, 1)",color3:"hsla(0, 0%, 100%, 1)",offsetX:0,offsetY:0,frequency:1.2,spotty:.15,midIntensity:0,midSize:0,density:.79,blending:.4,speed:2,frame:0}},Kr={name:"Linear",params:{colorBack:"hsla(0, 0%, 0%, 1)",color1:"hsl(0 0% 100% / 12%)",color2:"hsl(0 0% 100% / 24%)",color3:"hsl(0 0% 100% / 16%)",offsetX:.2,offsetY:-.7,frequency:1.2,spotty:.25,midSize:1.1,midIntensity:.75,density:.79,blending:1,speed:.5,frame:0}},Zr={name:"Ether",params:{colorBack:"hsl(226.7 50% 7.1% / 100%)",color1:"hsl(215 100% 53.9% / 65.1%)",color2:"hsl(214.4 85.9% 86.1% / 74.9%)",color3:"hsl(225 31.4% 20% / 100%)",offsetX:-.6,offsetY:0,frequency:.3,spotty:.77,midSize:1.1,midIntensity:.5,density:.6,blending:.6,speed:1,frame:0}},Qr=[l,Hr,$r,Kr,Zr],jr=e=>{let r=Lr(()=>({u_colorBack:w(e.colorBack,l.params.colorBack),u_color1:w(e.color1,l.params.color1),u_color2:w(e.color2,l.params.color2),u_color3:w(e.color3,l.params.color3),u_offsetX:e.offsetX??l.params.offsetX,u_offsetY:e.offsetY??l.params.offsetY,u_frequency:e.frequency??l.params.frequency,u_spotty:e.spotty??l.params.spotty,u_midIntensity:e.midIntensity??l.params.midIntensity,u_midSize:e.midSize??l.params.midSize,u_density:e.density??l.params.density,u_blending:e.blending??l.params.blending}),[e.colorBack,e.color1,e.color2,e.color3,e.offsetX,e.offsetY,e.frequency,e.spotty,e.midIntensity,e.midSize,e.density,e.blending]);return eo(o,{...e,fragmentShader:Ar,uniforms:r})};import{}from"@paper-design/shaders";import{useMemo as ro}from"react";import{getShaderColorFromString as J,spiralFragmentShader as oo}from"@paper-design/shaders";import{jsx as po}from"react/jsx-runtime";var s={name:"Default",params:{color1:"hsla(0, 0%, 90%, 1)",color2:"hsla(0, 0%, 25%, 1)",scale:1,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noiseFreq:0,noisePower:0,softness:.01,speed:1,frame:0}},so={name:"Noisy",params:{color1:"hsla(87, 77%, 53%, 1)",color2:"hsla(109, 70%, 31%, 1)",scale:1.3,offsetX:0,offsetY:0,spiralDensity:.5,spiralDistortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:.5,noiseFreq:.1,noisePower:1,softness:0,speed:1,frame:0}},ao={name:"Droplet",params:{color1:"hsla(320, 50%, 50%, 1)",color2:"hsla(190, 50%, 95%, 1)",scale:.65,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.05,strokeTaper:0,strokeCap:1,noiseFreq:0,noisePower:0,softness:0,speed:1,frame:0}},to={name:"Sand",params:{color1:"hsla(45, 25%, 50%, 1)",color2:"hsla(0, 0%, 87%, 1)",scale:3,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.15,strokeTaper:0,strokeCap:0,noiseFreq:30,noisePower:1,softness:.2,speed:0,frame:0}},lo={name:"Swirl",params:{color1:"hsla(160, 50%, 80%, 1)",color2:"hsla(220, 50%, 20%, 1)",scale:4,offsetX:0,offsetY:0,spiralDensity:.8,spiralDistortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noiseFreq:0,noisePower:0,softness:.5,speed:1,frame:0}},no={name:"Hook",params:{color1:"hsla(0, 0%, 0%, 1)",color2:"hsla(200, 50%, 70%, 1)",scale:.8,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.5,strokeTaper:.5,strokeCap:0,noiseFreq:0,noisePower:0,softness:.02,speed:3,frame:0}},io={name:"Vinyl",params:{color1:"hsla(0, 0%, 15%, 1)",color2:"hsla(320, 5%, 75%, 1)",scale:1,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:.3,strokeWidth:.95,strokeTaper:0,strokeCap:1,noiseFreq:0,noisePower:0,softness:.11,speed:1,frame:0}},co=[s,so,ao,lo,to,no,io],mo=e=>{let r=ro(()=>({u_color1:J(e.color1,s.params.color1),u_color2:J(e.color2,s.params.color2),u_scale:e.scale??s.params.scale,u_offsetX:e.offsetX??s.params.offsetX,u_offsetY:e.offsetY??s.params.offsetY,u_spiralDensity:e.spiralDensity??s.params.spiralDensity,u_spiralDistortion:e.spiralDistortion??s.params.spiralDistortion,u_strokeWidth:e.strokeWidth??s.params.strokeWidth,u_strokeTaper:e.strokeTaper??s.params.strokeTaper,u_strokeCap:e.strokeCap??s.params.strokeCap,u_noiseFreq:e.noiseFreq??s.params.noiseFreq,u_noisePower:e.noisePower??s.params.noisePower,u_softness:e.softness??s.params.softness}),[e.color1,e.color2,e.scale,e.offsetX,e.offsetY,e.spiralDensity,e.spiralDistortion,e.strokeWidth,e.strokeTaper,e.strokeCap,e.noiseFreq,e.noisePower,e.softness]);return po(o,{...e,fragmentShader:oo,uniforms:r})};import{}from"@paper-design/shaders";import{getShaderColorFromString as Ea}from"@paper-design/shaders";export{Oe as DotGrid,la as DotGridShapes,Ge as DotOrbit,jr as GodRays,Q as GrainClouds,te as MeshGradient,Ze as Metaballs,be as NeuroNoise,Wa as PatternShapes,Pr as PerlinNoise,o as ShaderMount,ue as SmokeRing,mo as Spiral,Le as SteppedSimplexNoise,Dr as Voronoi,Tr as Warp,nr as Waves,qe as dotGridPresets,Me as dotOrbitPresets,Ea as getShaderColorFromString,Qr as godRaysPresets,Z as grainCloudsPresets,ae as meshGradientPresets,Ke as metaballsPresets,ye as neuroNoisePresets,Sr as perlinNoisePresets,fe as smokeRingPresets,co as spiralPresets,Je as steppedSimplexNoisePresets,Nr as voronoiPresets,Vr as warpPresets,lr as wavesPresets};
|
|
2
|
+
import{useEffect as z,useRef as X,forwardRef as K}from"react";import{ShaderMount as Z}from"@paper-design/shaders";import*as G from"react";function V(s){let o=G.useRef(void 0),a=G.useCallback(r=>{let n=s.map(e=>{if(e!=null){if(typeof e=="function"){let t=e,l=t(r);return typeof l=="function"?l:()=>{t(null)}}return e.current=r,()=>{e.current=null}}});return()=>{n.forEach(e=>e?.())}},s);return G.useMemo(()=>s.every(r=>r==null)?null:r=>{o.current&&(o.current(),o.current=void 0),r!=null&&(o.current=a(r))},s)}import{jsx as J}from"react/jsx-runtime";var Y=s=>{let o={},a=[],r=e=>{try{return e.startsWith("/")||new URL(e),!0}catch{return!1}},n=e=>{try{return e.startsWith("/")?!1:new URL(e,window.location.origin).origin!==window.location.origin}catch{return!1}};return Object.entries(s).forEach(([e,t])=>{if(typeof t=="string"){if(!r(t)){console.warn(`Uniform "${e}" has invalid URL "${t}". Skipping image loading.`);return}let l=new Promise((m,c)=>{let i=new Image;n(t)&&(i.crossOrigin="anonymous"),i.onload=()=>{o[e]=i,m()},i.onerror=()=>{console.error(`Could not set uniforms. Failed to load image at ${t}`),c()},i.src=t});a.push(l)}else o[e]=t}),Promise.all(a).then(()=>o)},p=K(function({shaderMountRef:o,fragmentShader:a,uniforms:r={},webGlContextAttributes:n,speed:e=1,frame:t=0,...l},m){let c=X(null),i=X(null);return z(()=>((async()=>{let P=await Y(r);c.current&&!i.current&&(i.current=new Z(c.current,a,P,n,e,t),o&&(o.current=i.current))})(),()=>{i.current?.dispose(),i.current=null}),[a,n]),z(()=>{(async()=>{let P=await Y(r);i.current?.setUniforms(P)})()},[r]),z(()=>{i.current?.setSpeed(e)},[e]),z(()=>{i.current?.setFrame(t)},[t]),J("canvas",{ref:V([c,m]),...l})});p.displayName="ShaderMount";import{useMemo as Q}from"react";import{getShaderColorFromString as T,grainCloudsFragmentShader as j}from"@paper-design/shaders";import{jsx as se}from"react/jsx-runtime";var D={name:"Default",params:{scale:1,speed:.3,frame:0,color1:"hsla(0, 0%, 0%, 1)",color2:"hsla(0, 0%, 100%, 1)",grainAmount:1}},ee={name:"Sky",params:{scale:1,speed:.3,frame:0,color1:"hsla(218, 100%, 73%, 1)",color2:"hsla(0, 0%, 100%, 1)",grainAmount:0}},re=[D,ee],oe=({scale:s,color1:o,color2:a,grainAmount:r,...n})=>{let e=Q(()=>({u_scale:s??D.params.scale,u_color1:T(o,D.params.color1),u_color2:T(a,D.params.color2),u_grainAmount:r??D.params.grainAmount}),[s,o,a,r]);return se(p,{...n,fragmentShader:j,uniforms:e})};import{}from"@paper-design/shaders";import{useMemo as ae}from"react";import{getShaderColorFromString as F,meshGradientFragmentShader as te}from"@paper-design/shaders";import{jsx as me}from"react/jsx-runtime";var W={name:"Default",params:{speed:.15,frame:0,color1:"hsla(259, 29%, 73%, 1)",color2:"hsla(263, 57%, 39%, 1)",color3:"hsla(48, 73%, 84%, 1)",color4:"hsla(295, 32%, 70%, 1)"}},ne={name:"Beach",params:{speed:.1,frame:0,color1:"hsla(186, 81%, 83%, 1)",color2:"hsla(198, 55%, 68%, 1)",color3:"hsla(53, 67%, 88%, 1)",color4:"hsla(45, 93%, 73%, 1)"}},le={name:"Faded",params:{speed:-.3,frame:0,color1:"hsla(186, 41%, 90%, 1)",color2:"hsla(208, 71%, 85%, 1)",color3:"hsla(183, 51%, 92%, 1)",color4:"hsla(201, 72%, 90%, 1)"}},ie=[W,ne,le],pe=({color1:s,color2:o,color3:a,color4:r,...n})=>{let e=ae(()=>({u_color1:F(s,W.params.color1),u_color2:F(o,W.params.color2),u_color3:F(a,W.params.color3),u_color4:F(r,W.params.color4)}),[s,o,a,r]);return me(p,{...n,fragmentShader:te,uniforms:e})};import{}from"@paper-design/shaders";import{useMemo as ce}from"react";import{getShaderColorFromString as B,smokeRingFragmentShader as de}from"@paper-design/shaders";import{jsx as ye}from"react/jsx-runtime";var _={name:"Default",params:{scale:1,speed:.5,frame:0,colorInner:"hsla(0, 0%, 100%, 1)",colorOuter:"hsla(38, 4%, 38%, 1)",noiseScale:1,thickness:.5}},ue={name:"Cloud",params:{scale:1,speed:1,frame:0,colorInner:"hsla(0, 0%, 100%, 1)",colorOuter:"hsla(0, 0%, 100%, 1)",noiseScale:1.8,thickness:.7},style:{background:"hsla(218, 100%, 62%, 1)"}},fe={name:"Fire",params:{scale:1,speed:4,frame:0,colorInner:"hsla(40, 100%, 50%, 1)",colorOuter:"hsla(0, 100%, 50%, 1)",noiseScale:1.4,thickness:.35},style:{background:"hsla(20, 100%, 5%, 1)"}},he={name:"Electric",params:{scale:1,speed:-2.5,frame:0,colorInner:"hsla(47, 100%, 64%, 1)",colorOuter:"hsla(47, 100%, 64%, 1)",noiseScale:1.8,thickness:.1},style:{background:"hsla(47, 50%, 7%, 1)"}},Pe={name:"Poison",params:{scale:1,speed:3,frame:0,colorInner:"hsla(120, 100%, 3%, 1)",colorOuter:"hsla(120, 100%, 66%, 1)",noiseScale:5,thickness:.6},style:{background:"hsla(120, 100%, 3%, 1)"}},Se=[_,ue,fe,he,Pe],ge=({scale:s,colorInner:o,colorOuter:a,noiseScale:r,thickness:n,...e})=>{let t=ce(()=>({u_scale:s??_.params.scale,u_colorInner:B(o,_.params.colorInner),u_colorOuter:B(a,_.params.colorOuter),u_noiseScale:r??_.params.noiseScale,u_thickness:n??_.params.thickness}),[s,o,a,r,n]);return ye(p,{...e,fragmentShader:de,uniforms:t})};import{}from"@paper-design/shaders";import{useMemo as be}from"react";import{getShaderColorFromString as L,neuroNoiseFragmentShader as xe}from"@paper-design/shaders";import{jsx as Ce}from"react/jsx-runtime";var w={name:"Default",params:{scale:1,speed:1,frame:0,colorFront:"hsla(261, 100%, 82%, 1)",colorBack:"hsla(0, 0%, 0%, 1)",brightness:1.3}},Re={name:"Marble",params:{scale:.4,speed:0,frame:0,colorFront:"hsla(230, 24%, 15%, 1)",colorBack:"hsla(0, 0%, 97%, 1)",brightness:1.1}},Me=[w,Re],ke=({scale:s,colorFront:o,colorBack:a,brightness:r,...n})=>{let e=be(()=>({u_scale:s??w.params.scale,u_colorFront:L(o,w.params.colorFront),u_colorBack:L(a,w.params.colorBack),u_brightness:r??w.params.brightness}),[s,o,a,r]);return Ce(p,{...n,fragmentShader:xe,uniforms:e})};import{}from"@paper-design/shaders";import{useMemo as Ge}from"react";import{getShaderColorFromString as v,dotOrbitFragmentShader as _e}from"@paper-design/shaders";import{jsx as We}from"react/jsx-runtime";var x={name:"Default",params:{scale:1,speed:2,frame:0,color1:"hsla(358, 66%, 49%, 1)",color2:"hsla(145, 30%, 33%, 1)",color3:"hsla(39, 88%, 52%, 1)",color4:"hsla(274, 30%, 35%, 1)",dotSize:.7,dotSizeRange:.4,spreading:1}},Ne=[x],De=({scale:s,color1:o,color2:a,color3:r,color4:n,dotSize:e,dotSizeRange:t,spreading:l,...m})=>{let c=Ge(()=>({u_scale:s??x.params.scale,u_color1:v(o,x.params.color1),u_color2:v(a,x.params.color2),u_color3:v(r,x.params.color3),u_color4:v(n,x.params.color4),u_dotSize:e??x.params.dotSize,u_dotSizeRange:t??x.params.dotSizeRange,u_spreading:l??x.params.spreading}),[s,o,a,r,n,e,t,l]);return We(p,{...m,fragmentShader:_e,uniforms:c})};import{}from"@paper-design/shaders";import{useMemo as we}from"react";import{dotGridFragmentShader as Ue,getShaderColorFromString as A,DotGridShapes as R}from"@paper-design/shaders";import{jsx as Te}from"react/jsx-runtime";var y={name:"Default",params:{colorFill:"hsla(0, 0%, 0%, 1)",colorStroke:"hsla(40, 100%, 50%, 1)",dotSize:2,gridSpacingX:50,gridSpacingY:50,strokeWidth:0,sizeRange:0,opacityRange:0,shape:R.Circle}},ze={name:"Macrodata",params:{colorFill:"hsla(218, 100%, 67%, 1)",colorStroke:"hsla(0, 0%, 0%, 1)",dotSize:3,gridSpacingX:25,gridSpacingY:25,strokeWidth:0,sizeRange:.25,opacityRange:.9,shape:R.Circle},style:{background:"hsla(211, 37%, 13%, 1)"}},Fe={name:"Triangles",params:{colorFill:"hsla(0, 0%, 100%, 1)",colorStroke:"hsla(0, 0%, 0%, .5)",dotSize:5,gridSpacingX:32,gridSpacingY:32,strokeWidth:1,sizeRange:0,opacityRange:0,shape:R.Triangle},style:{background:"hsla(0, 0%, 100%, 1)"}},ve={name:"Bubbles",params:{colorFill:"hsla(100, 30%, 100%, 1)",colorStroke:"hsla(0, 100%, 0%, 1)",dotSize:28,gridSpacingX:60,gridSpacingY:60,strokeWidth:12,sizeRange:.7,opacityRange:1.3,shape:R.Circle},style:{background:"hsla(234, 100%, 31%, .5)"}},Oe={name:"Tree line",params:{colorFill:"hsla(150, 80%, 10%, 1)",colorStroke:"hsla(0, 0%, 0%, 1)",dotSize:8,gridSpacingX:20,gridSpacingY:90,strokeWidth:0,sizeRange:1,opacityRange:.6,shape:R.Circle},style:{background:"hsla(100, 100%, 36%, .05)"}},qe={name:"Diamonds",params:{colorFill:"hsla(0, 100%, 50%, 1)",colorStroke:"hsla(0, 0%, 0%, 1)",dotSize:15,gridSpacingX:30,gridSpacingY:30,strokeWidth:0,sizeRange:0,opacityRange:2,shape:R.Diamond},style:{background:"hsla(0, 0%, 0%, 0)"}},Ie={name:"Wallpaper",params:{colorFill:"hsla(0, 0%, 0%, 0)",colorStroke:"hsla(36, 48%, 58%, 1)",dotSize:9,gridSpacingX:32,gridSpacingY:32,strokeWidth:1,sizeRange:0,opacityRange:0,shape:R.Diamond},style:{background:"hsla(154, 33%, 19%, 1)"}},Ee={name:"Enter the Matrix",params:{colorFill:"hsla(182, 100%, 64%, 1)",colorStroke:"hsla(0, 100%, 100%, 0)",dotSize:2,gridSpacingX:10,gridSpacingY:10,strokeWidth:.5,sizeRange:.25,opacityRange:1,shape:R.Triangle},style:{background:"hsla(0, 100%, 0%, 1)"}},Ve={name:"Waveform",params:{colorFill:"hsla(227, 93%, 38%, 1)",colorStroke:"hsla(0, 0%, 0%, 0)",dotSize:100,gridSpacingX:2,gridSpacingY:215,strokeWidth:0,sizeRange:1,opacityRange:0,shape:R.Square},style:{background:"hsla(0, 100%, 100%, 1)"}},Xe=[y,ze,Fe,ve,Oe,qe,Ie,Ee,Ve],Ye=({colorFill:s,colorStroke:o,dotSize:a,gridSpacingX:r,gridSpacingY:n,strokeWidth:e,sizeRange:t,opacityRange:l,shape:m,...c})=>{let i=we(()=>({u_colorFill:A(s,y.params.colorStroke),u_colorStroke:A(o,y.params.colorStroke),u_dotSize:a??y.params.dotSize,u_gridSpacingX:r??y.params.gridSpacingX,u_gridSpacingY:n??y.params.gridSpacingY,u_strokeWidth:e??y.params.strokeWidth,u_sizeRange:t??y.params.sizeRange,u_opacityRange:l??y.params.opacityRange,u_shape:m??y.params.shape}),[s,o,a,r,n,e,t,l,m]);return Te(p,{...c,fragmentShader:Ue,uniforms:i})};import{DotGridShapes as fa}from"@paper-design/shaders";import{useMemo as Be}from"react";import{getShaderColorFromString as U,steppedSimplexNoiseFragmentShader as Le}from"@paper-design/shaders";import{jsx as Je}from"react/jsx-runtime";var M={name:"Default",params:{scale:1,speed:.15,frame:0,color1:"hsla(208, 25%, 45%, 1)",color2:"hsla(94, 38%, 59%, 1)",color3:"hsla(359, 94%, 62%, 1)",color4:"hsla(42, 93%, 64%, 1)",color5:"hsla(0, 0%, 100%, 1)",stepsNumber:13}},Ae={name:"Magma",params:{scale:.3,speed:.2,frame:0,color1:"hsla(0, 100%, 36%, 1)",color2:"hsla(0, 95%, 44%, 1)",color3:"hsla(20, 100%, 49%, 1)",color4:"hsla(45, 100%, 45%, 1)",color5:"hsla(31, 100%, 94%, 1)",stepsNumber:8}},He={name:"Blood cell",params:{scale:1.2,speed:.22,frame:0,color1:"hsla(302, 43%, 13%, 1)",color2:"hsla(325, 93%, 17%, 1)",color3:"hsla(338, 80%, 25%, 1)",color4:"hsla(338, 80%, 25%, 1)",color5:"hsla(2, 85%, 72%, 1)",stepsNumber:29}},$e={name:"First contact",params:{scale:1.2,speed:-.1,frame:0,color1:"hsla(300, 43%, 82%, 1)",color2:"hsla(266, 70%, 9%, 1)",color3:"hsla(289, 36%, 26%, 1)",color4:"hsla(0, 41%, 78%, 1)",color5:"hsla(0, 100%, 96%, 1)",stepsNumber:40}},Ke=[M,Ae,He,$e],Ze=({scale:s,color1:o,color2:a,color3:r,color4:n,color5:e,stepsNumber:t,...l})=>{let m=Be(()=>({u_scale:s??M.params.scale,u_color1:U(o,M.params.color1),u_color2:U(a,M.params.color2),u_color3:U(r,M.params.color3),u_color4:U(n,M.params.color4),u_color5:U(e,M.params.color5),u_steps_number:t??M.params.stepsNumber}),[s,o,a,r,n,e,t]);return Je(p,{...l,fragmentShader:Le,uniforms:m})};import{}from"@paper-design/shaders";import{useMemo as Qe}from"react";import{getShaderColorFromString as I,metaballsFragmentShader as je}from"@paper-design/shaders";import{jsx as or}from"react/jsx-runtime";var C={name:"Default",params:{scale:1,speed:.6,frame:0,color1:"hsla(350, 90%, 55%, 1)",color2:"hsla(350, 80%, 60%, 1)",color3:"hsla(20, 85%, 70%, 1)",ballSize:1,visibilityRange:.4}},er=[C],rr=({scale:s,color1:o,color2:a,color3:r,ballSize:n,visibilityRange:e,...t})=>{let l=Qe(()=>({u_scale:s??C.params.scale,u_color1:I(o,C.params.color1),u_color2:I(a,C.params.color2),u_color3:I(r,C.params.color3),u_ballSize:n??C.params.ballSize,u_visibilityRange:e??C.params.visibilityRange}),[s,o,a,r,n,e]);return or(p,{...t,fragmentShader:je,uniforms:l})};import{}from"@paper-design/shaders";import{useMemo as sr}from"react";import{getShaderColorFromString as ar,wavesFragmentShader as tr}from"@paper-design/shaders";import{jsx as ur}from"react/jsx-runtime";var b={name:"Default",params:{scale:1,rotation:0,color:"hsla(204, 47%, 45%, 1)",shape:1,frequency:.5,amplitude:.5,spacing:.75,dutyCycle:.2,softness:0}},nr={name:"Spikes",params:{scale:2.3,rotation:0,color:"hsla(290, 52%, 15%, 1)",shape:0,frequency:.5,amplitude:.9,spacing:.37,dutyCycle:.93,softness:.15},style:{background:"hsla(65, 100%, 95%, 1)"}},lr={name:"Groovy",params:{scale:.5,rotation:1,color:"hsla(20, 100%, 71%, 1)",shape:2.37,frequency:.2,amplitude:.67,spacing:1.17,dutyCycle:.57,softness:0},style:{background:"hsla(60, 100%, 97%, 1)"}},ir={name:"Tangled up",params:{scale:3.04,rotation:1,color:"hsla(85.5, 35.7%, 78%, 1)",shape:3,frequency:.44,amplitude:.57,spacing:1.05,dutyCycle:.97,softness:0},style:{background:"hsla(198.7, 66.7%, 14.1%, 1)"}},pr={name:"Zig zag",params:{scale:2.7,rotation:1,color:"hsla(0, 0%, 90%, 1)",shape:0,frequency:.6,amplitude:.8,spacing:.5,dutyCycle:1,softness:.5},style:{background:"hsla(0, 0%, 0%, 1)"}},mr={name:"Ride the wave",params:{scale:.84,rotation:0,color:"hsla(0, 0%, 12%, 1)",shape:2.23,frequency:.1,amplitude:.6,spacing:.41,dutyCycle:.99,softness:0},style:{background:"hsla(65, 100%, 95%, 1)"}},cr=[b,nr,lr,ir,pr,mr],dr=({scale:s,rotation:o,color:a,shape:r,frequency:n,amplitude:e,spacing:t,dutyCycle:l,softness:m,...c})=>{let i=sr(()=>({u_scale:s??b.params.scale,u_rotation:o??b.params.rotation,u_color:ar(a,b.params.color),u_shape:r??b.params.shape,u_frequency:n??b.params.frequency,u_amplitude:e??b.params.amplitude,u_spacing:t??b.params.spacing,u_dutyCycle:l??b.params.dutyCycle,u_softness:m??b.params.softness}),[s,o,a,r,n,e,t,l,m]);return ur(p,{...c,fragmentShader:tr,uniforms:i})};import{}from"@paper-design/shaders";import{useMemo as fr}from"react";import{getShaderColorFromString as hr,perlinNoiseFragmentShader as Pr}from"@paper-design/shaders";import{jsx as kr}from"react/jsx-runtime";var k={name:"Default",params:{scale:1,speed:.5,frame:0,color:"hsla(0, 0%, 15%, 1)",proportion:.65,softness:.1,octaveCount:2,persistence:1,lacunarity:1.5}},Sr={name:"Nintendo Water",params:{scale:.2,speed:.4,frame:0,color:"hsla(200, 66%, 90%, 1)",proportion:.42,softness:0,octaveCount:2,persistence:.55,lacunarity:1.8},style:{background:"hsla(220, 66%, 50%, 1)"}},gr={name:"Colony",params:{scale:.15,speed:0,frame:0,color:"hsla(230, 80%, 20%, 1)",octaveCount:6,persistence:1,lacunarity:2.55,proportion:.65,softness:.35},style:{background:"hsla(56, 86%, 81%, 1)"}},yr={name:"Phosphenes",params:{scale:.03,speed:.15,frame:0,color:"hsla(150, 50%, 60%, 1)",proportion:.45,softness:.45,octaveCount:6,persistence:.3,lacunarity:3},style:{background:"hsla(350, 80%, 70%, 1)"}},br={name:"Moss",params:{scale:.15,speed:.02,frame:0,color:"hsla(0, 0%, 15%, 1)",proportion:.65,softness:.35,octaveCount:6,persistence:1,lacunarity:2.55},style:{background:"hsla(137, 100%, 51%, 1)"}},xr={name:"Worms",params:{scale:2,speed:0,frame:0,color:"hsla(0, 0%, 35%, 1)",proportion:.5,softness:0,octaveCount:1,persistence:1,lacunarity:1.5},style:{background:"hsla(0, 100%, 100%, 1)"}},Rr=[k,Sr,gr,yr,br,xr],Mr=({scale:s,color:o,proportion:a,softness:r,octaveCount:n,persistence:e,lacunarity:t,...l})=>{let m=fr(()=>({u_scale:s??k.params.scale,u_color:hr(o,k.params.color),u_proportion:a??k.params.proportion,u_softness:r??k.params.softness,u_octaveCount:n??k.params.octaveCount,u_persistence:e??k.params.persistence,u_lacunarity:t??k.params.lacunarity}),[s,o,a,r,n,e,t]);return kr(p,{...l,fragmentShader:Pr,uniforms:m})};import{}from"@paper-design/shaders";import{useMemo as Cr}from"react";import{getShaderColorFromString as O,voronoiFragmentShader as Gr}from"@paper-design/shaders";import{jsx as Or}from"react/jsx-runtime";var S={name:"Default",params:{scale:1.5,speed:.5,frame:0,colorCell1:"hsla(15, 80%, 50%, 1)",colorCell2:"hsla(180, 80%, 50%, 1)",colorCell3:"hsla(200, 80%, 50%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:.5,distance:.25,edgesSize:.15,edgesSoftness:.01,middleSize:0,middleSoftness:0}},_r={name:"Classic",params:{scale:3,speed:.8,frame:0,colorCell1:"hsla(0, 100%, 100%, 1)",colorCell2:"hsla(0, 0%, 100%, 1)",colorCell3:"hsla(0, 100%, 0%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.45,edgesSize:.02,edgesSoftness:.07,middleSize:0,middleSoftness:0}},Nr={name:"Giraffe",params:{scale:1,speed:.6,frame:0,colorCell1:"hsla(32, 100%, 18%, 1)",colorCell2:"hsla(42, 93%, 35%, 1)",colorCell3:"hsla(32, 100%, 18%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.25,edgesSize:.2,edgesSoftness:.01,middleSize:0,middleSoftness:0}},Dr={name:"Eyes",params:{scale:1.6,speed:.6,frame:0,colorCell1:"hsla(79, 84%, 60%, 1)",colorCell2:"hsla(207, 53%, 41%, 1)",colorCell3:"hsla(207, 80%, 65%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.25,edgesSize:.62,edgesSoftness:.01,middleSize:.1,middleSoftness:0}},Wr={name:"Bubbles",params:{scale:2,speed:.5,frame:0,colorCell1:"hsla(0, 100%, 50%, 1)",colorCell2:"hsla(169, 100%, 66%, 1)",colorCell3:"hsla(50, 100%, 66%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.5,edgesSize:.81,edgesSoftness:0,middleSize:0,middleSoftness:0}},wr={name:"Cells",params:{scale:2,speed:1,frame:0,colorCell1:"hsla(0, 0%, 100%, 1)",colorCell2:"hsla(0, 0%, 100%, 1)",colorCell3:"hsla(0, 0%, 100%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:1,distance:.38,edgesSize:.1,edgesSoftness:.02,middleSize:0,middleSoftness:0}},Ur={name:"Glow",params:{scale:1.2,speed:.8,frame:0,colorCell1:"hsla(40, 100%, 50%, 1)",colorCell2:"hsla(311, 100%, 59%, 1)",colorCell3:"hsla(180, 100%, 65%, 1)",colorMid:"hsla(0, 0%, 100%, 1)",colorGradient:1,distance:.25,edgesSize:.15,edgesSoftness:.01,middleSize:.7,middleSoftness:1}},zr={name:"Tiles",params:{scale:1.3,speed:1,frame:0,colorCell1:"hsla(80, 50%, 50%, 1)",colorCell2:"hsla(0, 50%, 100%, 1)",colorCell3:"hsla(200, 50%, 50%, 1)",colorMid:"hsla(0, 0%, 0%, 1)",colorGradient:0,distance:.05,edgesSize:.25,edgesSoftness:.02,middleSize:0,middleSoftness:0}},Fr=[S,_r,Nr,Dr,Wr,wr,Ur,zr],vr=({scale:s,colorCell1:o,colorCell2:a,colorCell3:r,colorMid:n,colorGradient:e,distance:t,edgesSize:l,edgesSoftness:m,middleSize:c,middleSoftness:i,...h})=>{let P=Cr(()=>({u_scale:s??S.params.scale,u_colorCell1:O(o,S.params.colorCell1),u_colorCell2:O(a,S.params.colorCell2),u_colorCell3:O(r,S.params.colorCell3),u_colorMid:O(n,S.params.colorMid),u_colorGradient:e??S.params.colorGradient,u_distance:t??S.params.distance,u_edgesSize:l??S.params.edgesSize,u_edgesSoftness:m??S.params.edgesSoftness,u_middleSize:c??S.params.middleSize,u_middleSoftness:i??S.params.middleSoftness}),[s,o,r,a,n,e,t,l,m,c,i]);return Or(p,{...h,fragmentShader:Gr,uniforms:P})};import{}from"@paper-design/shaders";import{useMemo as qr}from"react";import{getShaderColorFromString as E,warpFragmentShader as Ir,PatternShapes as g}from"@paper-design/shaders";import{jsx as Jr}from"react/jsx-runtime";var u={name:"Default",params:{scale:1,rotation:0,speed:.1,frame:0,color1:"hsla(0, 0%, 15%, 1)",color2:"hsla(203, 80%, 70%, 1)",color3:"hsla(0, 0%, 100%, 1)",proportion:.35,softness:1,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.1,shape:g.Checks}},Er={name:"Cauldron Pot",params:{scale:1.1,rotation:1.62,speed:1,frame:0,color1:"hsla(100, 51%, 75%, 1)",color2:"hsla(220, 39%, 32%, 1)",color3:"hsla(129.2, 41.9%, 6.1%, 1)",proportion:.64,softness:.95,distortion:.2,swirl:.86,swirlIterations:7,shapeScale:0,shape:g.Edge}},Vr={name:"Silk",params:{scale:.26,rotation:0,speed:.5,frame:0,color1:"hsla(0, 9%, 7%, 1)",color2:"hsla(8, 13%, 34%, 1)",color3:"hsla(5, 8%, 71%, 1)",proportion:0,softness:1,distortion:.3,swirl:.6,swirlIterations:11,shapeScale:.05,shape:g.Stripes}},Xr={name:"Passion",params:{scale:.25,rotation:1.35,speed:.3,frame:0,color1:"hsla(0, 44.7%, 14.9%, 1)",color2:"hsla(353.4, 34%, 42.2%, 1)",color3:"hsla(29, 100%, 76.1%, 1)",proportion:.5,softness:1,distortion:.09,swirl:.9,swirlIterations:6,shapeScale:.25,shape:g.Checks}},Yr={name:"Phantom",params:{scale:.68,rotation:1.8,speed:1.25,frame:0,color1:"hsla(242.2, 44.3%, 12%, 1)",color2:"hsla(236.1, 80.4%, 70%, 1)",color3:"hsla(0, 0%, 100%, 1)",proportion:.45,softness:1,distortion:.16,swirl:.3,swirlIterations:7,shapeScale:.1,shape:g.Checks}},Tr={name:"The Abyss",params:{scale:.1,rotation:2,speed:.06,frame:0,color1:"hsla(242.2, 44.3%, 12%, 1)",color2:"hsla(236.1, 80.4%, 70%, 1)",color3:"hsla(0, 0%, 100%, 1)",proportion:0,softness:1,distortion:.09,swirl:.48,swirlIterations:4,shapeScale:.1,shape:g.Edge}},Br={name:"Live Ink",params:{scale:.7,rotation:1.5,speed:.25,frame:0,color1:"hsla(210, 11.1%, 7.1%, 1)",color2:"hsla(165, 9%, 65.1%, 1)",color3:"hsla(84, 100%, 97.1%, 1)",proportion:.35,softness:0,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.26,shape:g.Checks}},Lr={name:"Iceberg",params:{scale:1.1,rotation:2,speed:.05,frame:0,color1:"hsla(0, 0%, 100%, 1)",color2:"hsla(220, 38.7%, 32%, 1)",color3:"hsla(129.2, 41.9%, 6.1%, 1)",proportion:.3,softness:1,distortion:.2,swirl:.86,swirlIterations:7,shapeScale:0,shape:g.Checks}},Ar={name:"Nectar",params:{scale:.24,rotation:0,speed:.42,frame:0,color1:"hsla(37.5, 22.2%, 7.1%, 1)",color2:"hsla(38.5, 59.1%, 63.1%, 1)",color3:"hsla(37.6, 30%, 95.2%, 1)",proportion:.24,softness:1,distortion:.21,swirl:.57,swirlIterations:10,shapeScale:.32,shape:g.Edge}},Hr={name:"Filtered Light",params:{scale:2,rotation:.44,speed:.32,frame:0,color1:"hsla(60.2, 7.8%, 8.3%, 1)",color2:"hsla(64.4, 27.8%, 81%, 1)",color3:"hsla(60, 100%, 93.9%, 1)",proportion:.25,softness:1,distortion:.06,swirl:0,swirlIterations:0,shapeScale:0,shape:g.Stripes}},$r={name:"Kelp",params:{scale:.38,rotation:.6,speed:2,frame:0,color1:"hsla(79.3, 100%, 78%, 1)",color2:"hsla(112, 10.5%, 28%, 1)",color3:"hsla(203.3, 50%, 7.1%, 1)",proportion:1,softness:0,distortion:0,swirl:.15,swirlIterations:0,shapeScale:.74,shape:g.Stripes}},Kr=[u,Tr,Er,Hr,Lr,Br,$r,Ar,Xr,Yr,Vr],Zr=({scale:s,rotation:o,color1:a,color2:r,color3:n,proportion:e,softness:t,distortion:l,swirl:m,swirlIterations:c,shapeScale:i,shape:h,...P})=>{let N=qr(()=>({u_scale:s??u.params.scale,u_rotation:o??u.params.rotation,u_color1:E(a,u.params.color1),u_color2:E(r,u.params.color2),u_color3:E(n,u.params.color2),u_proportion:e??u.params.proportion,u_softness:t??u.params.softness,u_distortion:l??u.params.distortion,u_swirl:m??u.params.swirl,u_swirlIterations:c??u.params.swirlIterations,u_shapeScale:i??u.params.shapeScale,u_shape:h??u.params.shape}),[s,o,a,r,n,e,t,l,m,c,i,h]);return Jr(p,{...P,fragmentShader:Ir,uniforms:N})};import{PatternShapes as Ea}from"@paper-design/shaders";import{useMemo as Qr}from"react";import{getShaderColorFromString as q,godRaysFragmentShader as jr}from"@paper-design/shaders";import{jsx as no}from"react/jsx-runtime";var f={name:"Default",params:{colorBack:"hsla(215, 100%, 11%, 1)",color1:"hsla(45, 100%, 70%, 1)",color2:"hsla(10, 100%, 80%, 1)",color3:"hsla(178, 100%, 83%, 1)",offsetX:-.6,offsetY:-.6,frequency:6,spotty:.28,midIntensity:.97,midSize:2,density:.3,blending:0,speed:1,frame:0}},eo={name:"Aurora",params:{colorBack:"hsla(0, 0%, 25%, 1)",color1:"hsla(239, 100%, 70%, 1)",color2:"hsla(150, 100%, 70%, 1)",color3:"hsla(200, 100%, 70%, 1)",offsetX:0,offsetY:1,frequency:2.4,spotty:.9,midIntensity:.8,midSize:2.1,density:.5,blending:1,speed:.5,frame:0}},ro={name:"Warp",params:{colorBack:"hsla(0, 0%, 0%, 1)",color1:"hsla(317, 100%, 50%, 1)",color2:"hsla(25, 100%, 50%, 1)",color3:"hsla(0, 0%, 100%, 1)",offsetX:0,offsetY:0,frequency:1.2,spotty:.15,midIntensity:0,midSize:0,density:.79,blending:.4,speed:2,frame:0}},oo={name:"Linear",params:{colorBack:"hsla(0, 0%, 0%, 1)",color1:"hsl(0 0% 100% / 12%)",color2:"hsl(0 0% 100% / 24%)",color3:"hsl(0 0% 100% / 16%)",offsetX:.2,offsetY:-.7,frequency:1.2,spotty:.25,midSize:1.1,midIntensity:.75,density:.79,blending:1,speed:.5,frame:0}},so={name:"Ether",params:{colorBack:"hsl(226.7 50% 7.1% / 100%)",color1:"hsl(215 100% 53.9% / 65.1%)",color2:"hsl(214.4 85.9% 86.1% / 74.9%)",color3:"hsl(225 31.4% 20% / 100%)",offsetX:-.6,offsetY:0,frequency:.3,spotty:.77,midSize:1.1,midIntensity:.5,density:.6,blending:.6,speed:1,frame:0}},ao=[f,eo,ro,oo,so],to=({colorBack:s,color1:o,color2:a,color3:r,offsetX:n,offsetY:e,frequency:t,spotty:l,midIntensity:m,midSize:c,density:i,blending:h,...P})=>{let N=Qr(()=>({u_colorBack:q(s,f.params.colorBack),u_color1:q(o,f.params.color1),u_color2:q(a,f.params.color2),u_color3:q(r,f.params.color3),u_offsetX:n??f.params.offsetX,u_offsetY:e??f.params.offsetY,u_frequency:t??f.params.frequency,u_spotty:l??f.params.spotty,u_midIntensity:m??f.params.midIntensity,u_midSize:c??f.params.midSize,u_density:i??f.params.density,u_blending:h??f.params.blending}),[s,o,a,r,n,e,t,l,m,c,i,h]);return no(p,{...P,fragmentShader:jr,uniforms:N})};import{}from"@paper-design/shaders";import{useMemo as lo}from"react";import{getShaderColorFromString as H,spiralFragmentShader as io}from"@paper-design/shaders";import{jsx as go}from"react/jsx-runtime";var d={name:"Default",params:{color1:"hsla(0, 0%, 98%, 1)",color2:"hsla(0, 0%, 50%, 1)",scale:1,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noiseFreq:0,noisePower:0,softness:.01,speed:1,frame:0}},po={name:"Noisy",params:{color1:"hsla(87, 77%, 53%, 1)",color2:"hsla(109, 70%, 31%, 1)",scale:1.3,offsetX:0,offsetY:0,spiralDensity:.5,spiralDistortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:.5,noiseFreq:.1,noisePower:1,softness:0,speed:1,frame:0}},mo={name:"Droplet",params:{color1:"hsla(320, 50%, 50%, 1)",color2:"hsla(190, 50%, 95%, 1)",scale:.65,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.05,strokeTaper:0,strokeCap:1,noiseFreq:0,noisePower:0,softness:0,speed:1,frame:0}},co={name:"Sand",params:{color1:"hsla(45, 25%, 50%, 1)",color2:"hsla(0, 0%, 87%, 1)",scale:3,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.15,strokeTaper:0,strokeCap:0,noiseFreq:30,noisePower:1,softness:.2,speed:0,frame:0}},uo={name:"Swirl",params:{color1:"hsla(160, 50%, 80%, 1)",color2:"hsla(220, 50%, 20%, 1)",scale:4,offsetX:0,offsetY:0,spiralDensity:.8,spiralDistortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noiseFreq:0,noisePower:0,softness:.5,speed:1,frame:0}},fo={name:"Hook",params:{color1:"hsla(0, 0%, 0%, 1)",color2:"hsla(200, 50%, 70%, 1)",scale:.8,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:0,strokeWidth:.5,strokeTaper:.5,strokeCap:0,noiseFreq:0,noisePower:0,softness:.02,speed:3,frame:0}},ho={name:"Vinyl",params:{color1:"hsla(0, 0%, 15%, 1)",color2:"hsla(320, 5%, 75%, 1)",scale:1,offsetX:0,offsetY:0,spiralDensity:0,spiralDistortion:.3,strokeWidth:.95,strokeTaper:0,strokeCap:1,noiseFreq:0,noisePower:0,softness:.11,speed:1,frame:0}},Po=[d,po,mo,uo,co,fo,ho],So=({color1:s,color2:o,scale:a,offsetX:r,offsetY:n,spiralDensity:e,spiralDistortion:t,strokeWidth:l,strokeTaper:m,strokeCap:c,noiseFreq:i,noisePower:h,softness:P,...N})=>{let $=lo(()=>({u_color1:H(s,d.params.color1),u_color2:H(o,d.params.color2),u_scale:a??d.params.scale,u_offsetX:r??d.params.offsetX,u_offsetY:n??d.params.offsetY,u_spiralDensity:e??d.params.spiralDensity,u_spiralDistortion:t??d.params.spiralDistortion,u_strokeWidth:l??d.params.strokeWidth,u_strokeTaper:m??d.params.strokeTaper,u_strokeCap:c??d.params.strokeCap,u_noiseFreq:i??d.params.noiseFreq,u_noisePower:h??d.params.noisePower,u_softness:P??d.params.softness}),[s,o,a,r,n,e,t,l,m,c,i,h,P]);return go(p,{...N,fragmentShader:io,uniforms:$})};import{}from"@paper-design/shaders";import{getShaderColorFromString as Ka}from"@paper-design/shaders";export{Ye as DotGrid,fa as DotGridShapes,De as DotOrbit,to as GodRays,oe as GrainClouds,pe as MeshGradient,rr as Metaballs,ke as NeuroNoise,Ea as PatternShapes,Mr as PerlinNoise,p as ShaderMount,ge as SmokeRing,So as Spiral,Ze as SteppedSimplexNoise,vr as Voronoi,Zr as Warp,dr as Waves,Xe as dotGridPresets,Ne as dotOrbitPresets,Ka as getShaderColorFromString,ao as godRaysPresets,re as grainCloudsPresets,ie as meshGradientPresets,er as metaballsPresets,Me as neuroNoisePresets,Rr as perlinNoisePresets,Se as smokeRingPresets,Po as spiralPresets,Ke as steppedSimplexNoisePresets,Fr as voronoiPresets,Kr as warpPresets,cr as wavesPresets};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/shader-mount.tsx", "../src/shaders/grain-clouds.tsx", "../src/index.ts", "../src/shaders/mesh-gradient.tsx", "../src/shaders/smoke-ring.tsx", "../src/shaders/neuro-noise.tsx", "../src/shaders/dot-orbit.tsx", "../src/shaders/dot-grid.tsx", "../src/shaders/stepped-simplex-noise.tsx", "../src/shaders/metaballs.tsx", "../src/shaders/waves.tsx", "../src/shaders/perlin-noise.tsx", "../src/shaders/voronoi.tsx", "../src/shaders/warp.tsx", "../src/shaders/god-rays.tsx", "../src/shaders/spiral.tsx"],
|
|
4
|
-
"sourcesContent": ["import React, { useEffect, useRef } from 'react';\nimport { ShaderMount as ShaderMountVanilla, type ShaderMountUniforms } from '@paper-design/shaders';\n\n/** The React ShaderMount can also accept strings as uniform values, which will assumed to be URLs and loaded as images */\nexport type ShaderMountUniformsReact = { [key: string]: ShaderMountUniforms[keyof ShaderMountUniforms] | string };\n\nexport interface ShaderMountProps {\n ref?: React.RefObject<HTMLCanvasElement>;\n shaderMountRef?: React.MutableRefObject<ShaderMountVanilla | null>;\n fragmentShader: string;\n style?: React.CSSProperties;\n uniforms?: ShaderMountUniformsReact;\n webGlContextAttributes?: WebGLContextAttributes;\n speed?: number;\n frame?: number;\n}\n\n/** Params that every shader can set as part of their controls */\nexport type GlobalParams = Pick<ShaderMountProps, 'speed' | 'frame'>;\n\n/** Parse the provided uniforms, turning URL strings into loaded images */\nconst processUniforms = (uniforms: ShaderMountUniformsReact): Promise<ShaderMountUniforms> => {\n const processedUniforms: ShaderMountUniforms = {};\n const imageLoadPromises: Promise<void>[] = [];\n\n const isValidUrl = (url: string): boolean => {\n try {\n // Handle absolute paths\n if (url.startsWith('/')) return true;\n // Check if it's a valid URL\n new URL(url);\n return true;\n } catch {\n return false;\n }\n };\n\n const isExternalUrl = (url: string): boolean => {\n try {\n if (url.startsWith('/')) return false;\n const urlObject = new URL(url, window.location.origin);\n return urlObject.origin !== window.location.origin;\n } catch {\n return false;\n }\n };\n\n Object.entries(uniforms).forEach(([key, value]) => {\n if (typeof value === 'string') {\n // Make sure the provided string is a valid URL or just skip trying to set this uniform entirely\n if (!isValidUrl(value)) {\n console.warn(`Uniform \"${key}\" has invalid URL \"${value}\". Skipping image loading.`);\n return;\n }\n\n const imagePromise = new Promise<void>((resolve, reject) => {\n const img = new Image();\n if (isExternalUrl(value)) {\n img.crossOrigin = 'anonymous';\n }\n img.onload = () => {\n processedUniforms[key] = img;\n resolve();\n };\n img.onerror = () => {\n console.error(`Could not set uniforms. Failed to load image at ${value}`);\n reject();\n };\n img.src = value;\n });\n imageLoadPromises.push(imagePromise);\n } else {\n processedUniforms[key] = value;\n }\n });\n\n return Promise.all(imageLoadPromises).then(() => processedUniforms);\n};\n\n/**\n * A React component that mounts a shader and updates its uniforms as the component's props change\n * If you pass a string as a uniform value, it will be assumed to be a URL and attempted to be loaded as an image\n */\nexport const ShaderMount: React.FC<ShaderMountProps> = ({\n ref,\n shaderMountRef: externalShaderMountRef,\n fragmentShader,\n style,\n uniforms = {},\n webGlContextAttributes,\n speed = 1,\n frame = 0,\n}) => {\n const canvasRef = ref ?? useRef<HTMLCanvasElement>(null);\n const shaderMountRef = externalShaderMountRef ?? useRef<ShaderMountVanilla | null>(null);\n\n useEffect(() => {\n const initShader = async () => {\n const processedUniforms = await processUniforms(uniforms);\n\n if (canvasRef.current && !shaderMountRef.current) {\n shaderMountRef.current = new ShaderMountVanilla(\n canvasRef.current,\n fragmentShader,\n processedUniforms,\n webGlContextAttributes,\n speed,\n frame\n );\n }\n };\n\n initShader();\n\n return () => {\n shaderMountRef.current?.dispose();\n shaderMountRef.current = null;\n };\n }, [fragmentShader, webGlContextAttributes]);\n\n useEffect(() => {\n const updateUniforms = async () => {\n const processedUniforms = await processUniforms(uniforms);\n shaderMountRef.current?.setUniforms(processedUniforms);\n };\n\n updateUniforms();\n }, [uniforms]);\n\n useEffect(() => {\n shaderMountRef.current?.setSpeed(speed);\n }, [speed]);\n\n useEffect(() => {\n shaderMountRef.current?.setFrame(frame);\n }, [frame]);\n\n return <canvas ref={canvasRef} style={style} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, grainCloudsFragmentShader, type GrainCloudsUniforms } from '@paper-design/shaders';\n\nexport type GrainCloudsParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n grainAmount?: number;\n} & GlobalParams;\n\nexport type GrainCloudsProps = Omit<ShaderMountProps, 'fragmentShader'> & GrainCloudsParams;\n\ntype GrainCloudsPreset = { name: string; params: Required<GrainCloudsParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: GrainCloudsPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(0, 0%, 100%, 1)',\n grainAmount: 1,\n },\n};\n\nexport const skyPreset: GrainCloudsPreset = {\n name: 'Sky',\n params: {\n scale: 1,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(218, 100%, 73%, 1)',\n color2: 'hsla(0, 0%, 100%, 1)',\n grainAmount: 0,\n },\n};\n\nexport const grainCloudsPresets: GrainCloudsPreset[] = [defaultPreset, skyPreset];\n\nexport const GrainClouds = (props: GrainCloudsProps): JSX.Element => {\n const uniforms: GrainCloudsUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_grainAmount: props.grainAmount ?? defaultPreset.params.grainAmount,\n };\n }, [props.scale, props.color1, props.color2, props.grainAmount]);\n\n return <ShaderMount {...props} fragmentShader={grainCloudsFragmentShader} uniforms={uniforms} />;\n};\n", "// ----- ShaderMount ----- //\nexport { ShaderMount } from './shader-mount';\n\n// ----- Fragment shaders ----- //\n\n// Grain clouds\nexport { GrainClouds, grainCloudsPresets } from './shaders/grain-clouds';\nexport { type GrainCloudsProps } from './shaders/grain-clouds';\nexport { type GrainCloudsParams } from './shaders/grain-clouds';\nexport { type GrainCloudsUniforms } from '@paper-design/shaders';\n\n// Mesh gradient\nexport { MeshGradient, meshGradientPresets } from './shaders/mesh-gradient';\nexport { type MeshGradientProps } from './shaders/mesh-gradient';\nexport { type MeshGradientParams } from './shaders/mesh-gradient';\nexport { type MeshGradientUniforms } from '@paper-design/shaders';\n\n// Smoke ring\nexport { SmokeRing, smokeRingPresets } from './shaders/smoke-ring';\nexport { type SmokeRingProps } from './shaders/smoke-ring';\nexport { type SmokeRingParams } from './shaders/smoke-ring';\nexport { type SmokeRingUniforms } from '@paper-design/shaders';\n\n// Neuro noise\nexport { NeuroNoise, neuroNoisePresets } from './shaders/neuro-noise';\nexport { type NeuroNoiseProps } from './shaders/neuro-noise';\nexport { type NeuroNoiseParams } from './shaders/neuro-noise';\nexport { type NeuroNoiseUniforms } from '@paper-design/shaders';\n\n// Animated dot pattern: orbit type of animation\nexport { DotOrbit, dotOrbitPresets } from './shaders/dot-orbit';\nexport { type DotOrbitProps } from './shaders/dot-orbit';\nexport { type DotOrbitParams } from './shaders/dot-orbit';\nexport { type DotOrbitUniforms } from '@paper-design/shaders';\n\n// Dot Grid\nexport { DotGrid, dotGridPresets } from './shaders/dot-grid';\nexport { type DotGridProps } from './shaders/dot-grid';\nexport { type DotGridParams } from './shaders/dot-grid';\nexport { type DotGridUniforms, DotGridShapes, type DotGridShape } from '@paper-design/shaders';\n\n// Stepped simplex noise\nexport { SteppedSimplexNoise, steppedSimplexNoisePresets } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseProps } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseParams } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseUniforms } from '@paper-design/shaders';\n\n// Metaballs\nexport { Metaballs, metaballsPresets } from './shaders/metaballs';\nexport { type MetaballsProps } from './shaders/metaballs';\nexport { type MetaballsParams } from './shaders/metaballs';\nexport { type MetaballsUniforms } from '@paper-design/shaders';\n\n// Waves\nexport { Waves, wavesPresets } from './shaders/waves';\nexport { type WavesProps } from './shaders/waves';\nexport { type WavesParams } from './shaders/waves';\nexport { type WavesUniforms } from '@paper-design/shaders';\n\n// Perlin noise\nexport { PerlinNoise, perlinNoisePresets } from './shaders/perlin-noise';\nexport { type PerlinNoiseProps } from './shaders/perlin-noise';\nexport { type PerlinNoiseParams } from './shaders/perlin-noise';\nexport { type PerlinNoiseUniforms } from '@paper-design/shaders';\n\n// Voronoi diagram\nexport { Voronoi, voronoiPresets } from './shaders/voronoi';\nexport { type VoronoiProps } from './shaders/voronoi';\nexport { type VoronoiParams } from './shaders/voronoi';\nexport { type VoronoiUniforms } from '@paper-design/shaders';\n\n// Warping distortion\nexport { Warp, warpPresets } from './shaders/warp';\nexport { type WarpProps } from './shaders/warp';\nexport { type WarpParams } from './shaders/warp';\nexport { type WarpUniforms, PatternShapes, type PatternShape } from '@paper-design/shaders';\n\n// God Rays effect\nexport { GodRays, godRaysPresets } from './shaders/god-rays';\nexport { type GodRaysProps } from './shaders/god-rays';\nexport { type GodRaysParams } from './shaders/god-rays';\nexport { type GodRaysUniforms } from '@paper-design/shaders';\n\n// Single-colored spiral shape\nexport { Spiral, spiralPresets } from './shaders/spiral';\nexport { type SpiralProps } from './shaders/spiral';\nexport { type SpiralParams } from './shaders/spiral';\nexport { type SpiralUniforms } from '@paper-design/shaders';\n\n// ----- Uniform conversion utils ----- //\nexport { getShaderColorFromString } from '@paper-design/shaders';\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, meshGradientFragmentShader, type MeshGradientUniforms } from '@paper-design/shaders';\n\nexport type MeshGradientParams = {\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n} & GlobalParams;\n\nexport type MeshGradientProps = Omit<ShaderMountProps, 'fragmentShader'> & MeshGradientParams;\n\ntype MeshGradientPreset = { name: string; params: Required<MeshGradientParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MeshGradientPreset = {\n name: 'Default',\n params: {\n speed: 0.15,\n frame: 0,\n color1: 'hsla(259, 29%, 73%, 1)',\n color2: 'hsla(263, 57%, 39%, 1)',\n color3: 'hsla(48, 73%, 84%, 1)',\n color4: 'hsla(295, 32%, 70%, 1)',\n },\n} as const;\n\nexport const beachPreset: MeshGradientPreset = {\n name: 'Beach',\n params: {\n speed: 0.1,\n frame: 0,\n color1: 'hsla(186, 81%, 83%, 1)',\n color2: 'hsla(198, 55%, 68%, 1)',\n color3: 'hsla(53, 67%, 88%, 1)',\n color4: 'hsla(45, 93%, 73%, 1)',\n },\n};\n\nexport const fadedPreset: MeshGradientPreset = {\n name: 'Faded',\n params: {\n speed: -0.3,\n frame: 0,\n color1: 'hsla(186, 41%, 90%, 1)',\n color2: 'hsla(208, 71%, 85%, 1)',\n color3: 'hsla(183, 51%, 92%, 1)',\n color4: 'hsla(201, 72%, 90%, 1)',\n },\n};\n\nexport const meshGradientPresets: MeshGradientPreset[] = [defaultPreset, beachPreset, fadedPreset];\n\nexport const MeshGradient = (props: MeshGradientProps): JSX.Element => {\n const uniforms: MeshGradientUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(props.color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(props.color4, defaultPreset.params.color4),\n };\n }, [props.color1, props.color2, props.color3, props.color4]);\n\n return <ShaderMount {...props} fragmentShader={meshGradientFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, smokeRingFragmentShader, type SmokeRingUniforms } from '@paper-design/shaders';\n\nexport type SmokeRingParams = {\n colorBack?: string;\n colorInner?: string;\n colorOuter?: string;\n scale?: number;\n noiseScale?: number;\n thickness?: number;\n} & GlobalParams;\n\nexport type SmokeRingProps = Omit<ShaderMountProps, 'fragmentShader'> & SmokeRingParams;\n\ntype SmokeRingPreset = { name: string; params: Required<SmokeRingParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SmokeRingPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorBack: 'hsla(208, 54%, 7%, 1)',\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(211, 100%, 64%, 1)',\n noiseScale: 1.4,\n thickness: 0.33,\n },\n} as const;\n\nexport const cloudPreset: SmokeRingPreset = {\n name: 'Cloud',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorBack: 'hsla(218, 100%, 62%, 1)',\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(0, 0%, 100%, 1)',\n noiseScale: 1.8,\n thickness: 0.7,\n },\n};\n\nexport const firePreset: SmokeRingPreset = {\n name: 'Fire',\n params: {\n scale: 1,\n speed: 4,\n frame: 0,\n colorBack: 'hsla(20, 100%, 5%, 1)',\n colorInner: 'hsla(40, 100%, 50%, 1)',\n colorOuter: 'hsla(0, 100%, 50%, 1)',\n noiseScale: 1.4,\n thickness: 0.35,\n },\n};\n\nexport const electricPreset: SmokeRingPreset = {\n name: 'Electric',\n params: {\n scale: 1,\n speed: -2.5,\n frame: 0,\n colorBack: 'hsla(47, 50%, 7%, 1)',\n colorInner: 'hsla(47, 100%, 64%, 1)',\n colorOuter: 'hsla(47, 100%, 64%, 1)',\n noiseScale: 1.8,\n thickness: 0.1,\n },\n};\n\nexport const poisonPreset: SmokeRingPreset = {\n name: 'Poison',\n params: {\n scale: 1,\n speed: 3,\n frame: 0,\n colorBack: 'hsla(120, 100%, 3%, 1)',\n colorInner: 'hsla(120, 100%, 3%, 1)',\n colorOuter: 'hsla(120, 100%, 66%, 1)',\n noiseScale: 5,\n thickness: 0.6,\n },\n};\n\nexport const smokeRingPresets: SmokeRingPreset[] = [\n defaultPreset,\n cloudPreset,\n firePreset,\n electricPreset,\n poisonPreset,\n];\n\nexport const SmokeRing = (props: SmokeRingProps): JSX.Element => {\n const uniforms: SmokeRingUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_colorBack: getShaderColorFromString(props.colorBack, defaultPreset.params.colorBack),\n u_colorInner: getShaderColorFromString(props.colorInner, defaultPreset.params.colorInner),\n u_colorOuter: getShaderColorFromString(props.colorOuter, defaultPreset.params.colorOuter),\n u_noiseScale: props.noiseScale ?? defaultPreset.params.noiseScale,\n u_thickness: props.thickness ?? defaultPreset.params.thickness,\n };\n }, [props.scale, props.colorBack, props.colorInner, props.colorOuter, props.noiseScale, props.thickness]);\n\n return <ShaderMount {...props} fragmentShader={smokeRingFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, neuroNoiseFragmentShader, type NeuroNoiseUniforms } from '@paper-design/shaders';\n\nexport type NeuroNoiseParams = {\n scale?: number;\n colorFront?: string;\n colorBack?: string;\n brightness?: number;\n} & GlobalParams;\n\nexport type NeuroNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & NeuroNoiseParams;\n\ntype NeuroNoisePreset = { name: string; params: Required<NeuroNoiseParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: NeuroNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorFront: 'hsla(261, 100%, 82%, 1)',\n colorBack: 'hsla(0, 0%, 0%, 1)',\n brightness: 1.3,\n },\n} as const;\n\nconst marblePreset: NeuroNoisePreset = {\n name: 'Marble',\n params: {\n scale: 0.4,\n speed: 0,\n frame: 0,\n colorFront: 'hsla(230, 24%, 15%, 1)',\n colorBack: 'hsla(0, 0%, 97%, 1)',\n brightness: 1.1,\n },\n} as const;\n\nexport const neuroNoisePresets: NeuroNoisePreset[] = [defaultPreset, marblePreset] as const;\n\nexport const NeuroNoise = (props: NeuroNoiseProps): JSX.Element => {\n const uniforms: NeuroNoiseUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_colorFront: getShaderColorFromString(props.colorFront, defaultPreset.params.colorFront),\n u_colorBack: getShaderColorFromString(props.colorBack, defaultPreset.params.colorBack),\n u_brightness: props.brightness ?? defaultPreset.params.brightness,\n };\n }, [props.scale, props.colorFront, props.colorBack, props.brightness]);\n\n return <ShaderMount {...props} fragmentShader={neuroNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, dotOrbitFragmentShader, type DotOrbitUniforms } from '@paper-design/shaders';\n\nexport type DotOrbitParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n dotSize?: number;\n dotSizeRange?: number;\n spreading?: number;\n} & GlobalParams;\n\nexport type DotOrbitProps = Omit<ShaderMountProps, 'fragmentShader'> & DotOrbitParams;\n\ntype DotOrbitPreset = { name: string; params: Required<DotOrbitParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: DotOrbitPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 2,\n frame: 0,\n color1: 'hsla(358, 66%, 49%, 1)',\n color2: 'hsla(145, 30%, 33%, 1)',\n color3: 'hsla(39, 88%, 52%, 1)',\n color4: 'hsla(274, 30%, 35%, 1)',\n dotSize: 0.7,\n dotSizeRange: 0.4,\n spreading: 1,\n },\n} as const;\n\nexport const dotOrbitPresets: DotOrbitPreset[] = [defaultPreset];\n\nexport const DotOrbit = (props: DotOrbitProps): JSX.Element => {\n const uniforms: DotOrbitUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(props.color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(props.color4, defaultPreset.params.color4),\n u_dotSize: props.dotSize ?? defaultPreset.params.dotSize,\n u_dotSizeRange: props.dotSizeRange ?? defaultPreset.params.dotSizeRange,\n u_spreading: props.spreading ?? defaultPreset.params.spreading,\n };\n }, [\n props.scale,\n props.color1,\n props.color2,\n props.color3,\n props.color4,\n props.dotSize,\n props.dotSizeRange,\n props.spreading,\n ]);\n\n return <ShaderMount {...props} fragmentShader={dotOrbitFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport {\n dotGridFragmentShader,\n getShaderColorFromString,\n type DotGridUniforms,\n type DotGridShape,\n DotGridShapes,\n} from '@paper-design/shaders';\n\nexport type DotGridParams = {\n colorBack?: string;\n colorFill?: string;\n colorStroke?: string;\n dotSize?: number;\n gridSpacingX?: number;\n gridSpacingY?: number;\n strokeWidth?: number;\n sizeRange?: number;\n opacityRange?: number;\n shape?: DotGridShape;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport type DotGridProps = Omit<ShaderMountProps, 'fragmentShader'> & DotGridParams;\n\ntype DotGridPreset = { name: string; params: Required<DotGridParams> };\n\nexport const defaultPreset: DotGridPreset = {\n name: 'Default',\n params: {\n colorBack: 'hsla(358, 66%, 49%, 0)',\n colorFill: 'hsla(145, 30%, 10%, 1)',\n colorStroke: 'hsla(39, 88%, 52%, 1)',\n dotSize: 2,\n gridSpacingX: 50,\n gridSpacingY: 50,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Circle,\n },\n} as const;\n\nexport const macrodataPreset: DotGridPreset = {\n name: 'Macrodata',\n params: {\n colorBack: 'hsla(211, 37%, 13%, 1)',\n colorFill: 'hsla(218, 100%, 67%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 3,\n gridSpacingX: 25,\n gridSpacingY: 25,\n strokeWidth: 0,\n sizeRange: 0.25,\n opacityRange: 0.9,\n shape: DotGridShapes.Circle,\n },\n};\n\nconst trianglesPreset: DotGridPreset = {\n name: 'Triangles',\n params: {\n colorBack: 'hsla(0, 0%, 100%, 1)',\n colorFill: 'hsla(0, 0%, 100%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, .5)',\n dotSize: 5,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Triangle,\n },\n} as const;\n\nconst bubblesPreset: DotGridPreset = {\n name: 'Bubbles',\n params: {\n colorBack: 'hsla(234, 100%, 31%, .5)',\n colorFill: 'hsla(100, 30%, 100%, 1)',\n colorStroke: 'hsla(0, 100%, 0%, 1)',\n dotSize: 28,\n gridSpacingX: 60,\n gridSpacingY: 60,\n strokeWidth: 12,\n sizeRange: 0.7,\n opacityRange: 1.3,\n shape: DotGridShapes.Circle,\n },\n} as const;\n\nconst treeLinePreset: DotGridPreset = {\n name: 'Tree line',\n params: {\n colorBack: 'hsla(100, 100%, 36%, .05)',\n colorFill: 'hsla(150, 80%, 10%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 8,\n gridSpacingX: 20,\n gridSpacingY: 90,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0.6,\n shape: DotGridShapes.Circle,\n },\n} as const;\n\nconst diamondsPreset: DotGridPreset = {\n name: 'Diamonds',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 0)',\n colorFill: 'hsla(0, 100%, 50%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 15,\n gridSpacingX: 30,\n gridSpacingY: 30,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 2,\n shape: DotGridShapes.Diamond,\n },\n} as const;\n\nconst wallpaperPreset: DotGridPreset = {\n name: 'Wallpaper',\n params: {\n colorBack: 'hsla(154, 33%, 19%, 1)',\n colorFill: 'hsla(0, 0%, 0%, 0)',\n colorStroke: 'hsla(36, 48%, 58%, 1)',\n dotSize: 9,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Diamond,\n },\n} as const;\n\nconst matrixPreset: DotGridPreset = {\n name: 'Enter the Matrix',\n params: {\n colorBack: 'hsla(0, 100%, 0%, 1)',\n colorFill: 'hsla(182, 100%, 64%, 1)',\n colorStroke: 'hsla(0, 100%, 100%, 0)',\n dotSize: 2,\n gridSpacingX: 10,\n gridSpacingY: 10,\n strokeWidth: 0.5,\n sizeRange: 0.25,\n opacityRange: 1,\n shape: DotGridShapes.Triangle,\n },\n} as const;\n\nconst waveformPreset: DotGridPreset = {\n name: 'Waveform',\n params: {\n colorBack: 'hsla(0, 100%, 100%, 1)',\n colorFill: 'hsla(227, 93%, 38%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 0)',\n dotSize: 100,\n gridSpacingX: 2,\n gridSpacingY: 215,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0,\n shape: DotGridShapes.Square,\n },\n} as const;\n\nexport const dotGridPresets: DotGridPreset[] = [\n defaultPreset,\n macrodataPreset,\n trianglesPreset,\n bubblesPreset,\n treeLinePreset,\n diamondsPreset,\n wallpaperPreset,\n matrixPreset,\n waveformPreset,\n];\n\nexport const DotGrid = (props: DotGridProps): JSX.Element => {\n const uniforms: DotGridUniforms = useMemo(() => {\n return {\n u_colorBack: getShaderColorFromString(props.colorBack, defaultPreset.params.colorBack),\n u_colorFill: getShaderColorFromString(props.colorFill, defaultPreset.params.colorStroke),\n u_colorStroke: getShaderColorFromString(props.colorStroke, defaultPreset.params.colorStroke),\n u_dotSize: props.dotSize ?? defaultPreset.params.dotSize,\n u_gridSpacingX: props.gridSpacingX ?? defaultPreset.params.gridSpacingX,\n u_gridSpacingY: props.gridSpacingY ?? defaultPreset.params.gridSpacingY,\n u_strokeWidth: props.strokeWidth ?? defaultPreset.params.strokeWidth,\n u_sizeRange: props.sizeRange ?? defaultPreset.params.sizeRange,\n u_opacityRange: props.opacityRange ?? defaultPreset.params.opacityRange,\n u_shape: props.shape ?? defaultPreset.params.shape,\n };\n }, [\n props.colorBack,\n props.colorFill,\n props.colorStroke,\n props.dotSize,\n props.gridSpacingX,\n props.gridSpacingY,\n props.strokeWidth,\n props.sizeRange,\n props.opacityRange,\n props.shape,\n ]);\n\n return <ShaderMount {...props} fragmentShader={dotGridFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n steppedSimplexNoiseFragmentShader,\n type SteppedSimplexNoiseUniforms,\n} from '@paper-design/shaders';\n\nexport type SteppedSimplexNoiseParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n color5?: string;\n stepsNumber?: number;\n} & GlobalParams;\n\nexport type SteppedSimplexNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & SteppedSimplexNoiseParams;\n\ntype SteppedSimplexNoisePreset = { name: string; params: Required<SteppedSimplexNoiseParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SteppedSimplexNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.15,\n frame: 0,\n color1: 'hsla(208, 25%, 45%, 1)',\n color2: 'hsla(94, 38%, 59%, 1)',\n color3: 'hsla(359, 94%, 62%, 1)',\n color4: 'hsla(42, 93%, 64%, 1)',\n color5: 'hsla(0, 0%, 100%, 1)',\n stepsNumber: 13,\n },\n} as const;\n\nconst magmaPreset: SteppedSimplexNoisePreset = {\n name: 'Magma',\n params: {\n scale: 0.3,\n speed: 0.2,\n frame: 0,\n color1: 'hsla(0, 100%, 36%, 1)',\n color2: 'hsla(0, 95%, 44%, 1)',\n color3: 'hsla(20, 100%, 49%, 1)',\n color4: 'hsla(45, 100%, 45%, 1)',\n color5: 'hsla(31, 100%, 94%, 1)',\n stepsNumber: 8,\n },\n};\n\nconst bloodCellPreset: SteppedSimplexNoisePreset = {\n name: 'Blood cell',\n params: {\n scale: 1.2,\n speed: 0.22,\n frame: 0,\n color1: 'hsla(302, 43%, 13%, 1)',\n color2: 'hsla(325, 93%, 17%, 1)',\n color3: 'hsla(338, 80%, 25%, 1)',\n color4: 'hsla(338, 80%, 25%, 1)',\n color5: 'hsla(2, 85%, 72%, 1)',\n stepsNumber: 29,\n },\n};\n\nconst firstContactPreset: SteppedSimplexNoisePreset = {\n name: 'First contact',\n params: {\n scale: 1.2,\n speed: -0.1,\n frame: 0,\n color1: 'hsla(300, 43%, 82%, 1)',\n color2: 'hsla(266, 70%, 9%, 1)',\n color3: 'hsla(289, 36%, 26%, 1)',\n color4: 'hsla(0, 41%, 78%, 1)',\n color5: 'hsla(0, 100%, 96%, 1)',\n stepsNumber: 40,\n },\n};\n\nexport const steppedSimplexNoisePresets: SteppedSimplexNoisePreset[] = [\n defaultPreset,\n magmaPreset,\n bloodCellPreset,\n firstContactPreset,\n];\n\nexport const SteppedSimplexNoise = (props: SteppedSimplexNoiseProps): JSX.Element => {\n const uniforms: SteppedSimplexNoiseUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(props.color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(props.color4, defaultPreset.params.color4),\n u_color5: getShaderColorFromString(props.color5, defaultPreset.params.color5),\n u_steps_number: props.stepsNumber ?? defaultPreset.params.stepsNumber,\n };\n }, [props.scale, props.color1, props.color2, props.color3, props.color4, props.color5, props.stepsNumber]);\n\n return <ShaderMount {...props} fragmentShader={steppedSimplexNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, metaballsFragmentShader, type MetaballsUniforms } from '@paper-design/shaders';\n\nexport type MetaballsParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n ballSize?: number;\n visibilityRange?: number;\n} & GlobalParams;\n\nexport type MetaballsProps = Omit<ShaderMountProps, 'fragmentShader'> & MetaballsParams;\n\ntype MetaballsPreset = { name: string; params: Required<MetaballsParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MetaballsPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n color1: 'hsla(350, 90%, 55%, 1)',\n color2: 'hsla(350, 80%, 60%, 1)',\n color3: 'hsla(20, 85%, 70%, 1)',\n ballSize: 1,\n visibilityRange: 0.4,\n },\n} as const;\n\nexport const metaballsPresets: MetaballsPreset[] = [defaultPreset];\n\nexport const Metaballs = (props: MetaballsProps): JSX.Element => {\n const uniforms: MetaballsUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(props.color3, defaultPreset.params.color3),\n u_ballSize: props.ballSize ?? defaultPreset.params.ballSize,\n u_visibilityRange: props.visibilityRange ?? defaultPreset.params.visibilityRange,\n };\n }, [props.scale, props.color1, props.color2, props.color3, props.ballSize, props.visibilityRange]);\n\n return <ShaderMount {...props} fragmentShader={metaballsFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, wavesFragmentShader, type WavesUniforms } from '@paper-design/shaders';\n\nexport type WavesParams = {\n scale?: number;\n rotation?: number;\n color1?: string;\n color2?: string;\n shape?: number;\n frequency?: number;\n amplitude?: number;\n spacing?: number;\n dutyCycle?: number;\n softness?: number;\n};\n\nexport type WavesProps = Omit<ShaderMountProps, 'fragmentShader'> & WavesParams;\n\ntype WavesPreset = { name: string; params: Required<WavesParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WavesPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n color1: 'hsla(48, 100%, 74%, 1)',\n color2: 'hsla(204, 47%, 45%, 1)',\n shape: 1,\n frequency: 0.5,\n amplitude: 0.5,\n spacing: 0.75,\n dutyCycle: 0.2,\n softness: 0,\n },\n} as const;\n\nexport const spikesPreset: WavesPreset = {\n name: 'Spikes',\n params: {\n scale: 2.3,\n rotation: 0,\n color1: 'hsla(65, 100%, 95%, 1)',\n color2: 'hsla(290, 52%, 15%, 1)',\n shape: 0,\n frequency: 0.5,\n amplitude: 0.9,\n spacing: 0.37,\n dutyCycle: 0.93,\n softness: 0.15,\n },\n} as const;\n\nexport const groovyPreset: WavesPreset = {\n name: 'Groovy',\n params: {\n scale: 0.5,\n rotation: 1,\n color1: 'hsla(60, 100%, 97%, 1)',\n color2: 'hsla(20, 100%, 71%, 1)',\n shape: 2.37,\n frequency: 0.2,\n amplitude: 0.67,\n spacing: 1.17,\n dutyCycle: 0.57,\n softness: 0,\n },\n} as const;\n\nexport const tangledUpPreset: WavesPreset = {\n name: 'Tangled up',\n params: {\n scale: 3.04,\n rotation: 1,\n color1: 'hsla(198.7, 66.7%, 14.1%, 1)',\n color2: 'hsla(85.5, 35.7%, 78%, 1)',\n shape: 3,\n frequency: 0.44,\n amplitude: 0.57,\n spacing: 1.05,\n dutyCycle: 0.97,\n softness: 0,\n },\n} as const;\n\nexport const zigZagPreset: WavesPreset = {\n name: 'Zig zag',\n params: {\n scale: 2.7,\n rotation: 1,\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(0, 0%, 90%, 1)',\n shape: 0,\n frequency: 0.6,\n amplitude: 0.8,\n spacing: 0.5,\n dutyCycle: 1,\n softness: 0.5,\n },\n} as const;\n\nexport const waveRidePreset: WavesPreset = {\n name: 'Ride the wave',\n params: {\n scale: 0.84,\n rotation: 0,\n color1: 'hsla(65, 100%, 95%, 1)',\n color2: 'hsla(0, 0%, 12%, 1)',\n shape: 2.23,\n frequency: 0.1,\n amplitude: 0.6,\n spacing: 0.41,\n dutyCycle: 0.99,\n softness: 0,\n },\n} as const;\n\nexport const wavesPresets: WavesPreset[] = [\n defaultPreset,\n spikesPreset,\n groovyPreset,\n tangledUpPreset,\n zigZagPreset,\n waveRidePreset,\n];\n\nexport const Waves = (props: WavesProps): JSX.Element => {\n const uniforms: WavesUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_rotation: props.rotation ?? defaultPreset.params.rotation,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_shape: props.shape ?? defaultPreset.params.shape,\n u_frequency: props.frequency ?? defaultPreset.params.frequency,\n u_amplitude: props.amplitude ?? defaultPreset.params.amplitude,\n u_spacing: props.spacing ?? defaultPreset.params.spacing,\n u_dutyCycle: props.dutyCycle ?? defaultPreset.params.dutyCycle,\n u_softness: props.softness ?? defaultPreset.params.softness,\n };\n }, [\n props.scale,\n props.rotation,\n props.color1,\n props.color2,\n props.shape,\n props.frequency,\n props.amplitude,\n props.spacing,\n props.dutyCycle,\n props.softness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={wavesFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, perlinNoiseFragmentShader, type PerlinNoiseUniforms } from '@paper-design/shaders';\n\nexport type PerlinNoiseParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n proportion?: number;\n softness?: number;\n octaveCount?: number;\n persistence?: number;\n lacunarity?: number;\n} & GlobalParams;\n\nexport type PerlinNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & PerlinNoiseParams;\n\ntype PerlinNoisePreset = { name: string; params: Required<PerlinNoiseParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: PerlinNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(203, 100%, 87%, 1)',\n proportion: 0.34,\n softness: 0.1,\n octaveCount: 2,\n persistence: 1,\n lacunarity: 1.5,\n },\n};\n\nexport const nintendoWaterPreset: PerlinNoisePreset = {\n name: 'Nintendo Water',\n params: {\n scale: 0.2,\n speed: 0.4,\n frame: 0,\n color1: 'hsla(220, 66%, 50%, 1)',\n color2: 'hsla(200, 66%, 90%, 1)',\n proportion: 0.42,\n softness: 0,\n octaveCount: 2,\n persistence: 0.55,\n lacunarity: 1.8,\n },\n};\n\nexport const colonyPreset: PerlinNoisePreset = {\n name: 'Colony',\n params: {\n scale: 0.15,\n speed: 0,\n frame: 0,\n color1: 'hsla(56, 86%, 81%, 1)',\n color2: 'hsla(230, 80%, 20%, 1)',\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n proportion: 0.65,\n softness: 0.35,\n },\n};\n\nexport const phosphenesPreset: PerlinNoisePreset = {\n name: 'Phosphenes',\n params: {\n scale: 0.03,\n speed: 0.15,\n frame: 0,\n color1: 'hsla(350, 80%, 70%, 1)',\n color2: 'hsla(150, 50%, 60%, 1)',\n proportion: 0.45,\n softness: 0.45,\n octaveCount: 6,\n persistence: 0.3,\n lacunarity: 3,\n },\n} as const;\n\nexport const mossPreset: PerlinNoisePreset = {\n name: 'Moss',\n params: {\n scale: 0.15,\n speed: 0.02,\n frame: 0,\n color1: 'hsla(137, 100%, 51%, 1)',\n color2: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.35,\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n },\n} as const;\n\nexport const wormsPreset: PerlinNoisePreset = {\n name: 'Worms',\n params: {\n scale: 2,\n speed: 0,\n frame: 0,\n color1: 'hsla(0, 100%, 100%, 1)',\n color2: 'hsla(0, 0%, 35%, 1)',\n proportion: 0.5,\n softness: 0,\n octaveCount: 1,\n persistence: 1,\n lacunarity: 1.5,\n },\n} as const;\n\nexport const perlinNoisePresets: PerlinNoisePreset[] = [\n defaultPreset,\n nintendoWaterPreset,\n colonyPreset,\n phosphenesPreset,\n mossPreset,\n wormsPreset,\n];\n\nexport const PerlinNoise = (props: PerlinNoiseProps): JSX.Element => {\n const uniforms: PerlinNoiseUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_proportion: props.proportion ?? defaultPreset.params.proportion,\n u_softness: props.softness ?? defaultPreset.params.softness,\n u_octaveCount: props.octaveCount ?? defaultPreset.params.octaveCount,\n u_persistence: props.persistence ?? defaultPreset.params.persistence,\n u_lacunarity: props.lacunarity ?? defaultPreset.params.lacunarity,\n };\n }, [\n props.scale,\n props.color1,\n props.color2,\n props.proportion,\n props.softness,\n props.octaveCount,\n props.persistence,\n props.lacunarity,\n ]);\n\n return <ShaderMount {...props} fragmentShader={perlinNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, voronoiFragmentShader, type VoronoiUniforms } from '@paper-design/shaders';\n\nexport type VoronoiParams = {\n scale?: number;\n colorCell1?: string;\n colorCell2?: string;\n colorCell3?: string;\n colorMid?: string;\n colorEdges?: string;\n colorGradient?: number;\n distance?: number;\n edgesSize?: number;\n edgesSoftness?: number;\n middleSize?: number;\n middleSoftness?: number;\n} & GlobalParams;\n\nexport type VoronoiProps = Omit<ShaderMountProps, 'fragmentShader'> & VoronoiParams;\n\ntype VoronoiPreset = { name: string; params: Required<VoronoiParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: VoronoiPreset = {\n name: 'Default',\n params: {\n scale: 1.5,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(15, 80%, 50%, 1)',\n colorCell2: 'hsla(180, 80%, 50%, 1)',\n colorCell3: 'hsla(200, 80%, 50%, 1)',\n colorEdges: 'hsla(30, 90%, 10%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0.5,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n} as const;\n\nexport const classicPreset: VoronoiPreset = {\n name: 'Classic',\n params: {\n scale: 3,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 100%, 0%, 1)',\n colorEdges: 'hsla(0, 0%, 0%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.45,\n edgesSize: 0.02,\n edgesSoftness: 0.07,\n middleSize: 0,\n middleSoftness: 0,\n },\n} as const;\n\nexport const giraffePreset: VoronoiPreset = {\n name: 'Giraffe',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(32, 100%, 18%, 1)',\n colorCell2: 'hsla(42, 93%, 35%, 1)',\n colorCell3: 'hsla(32, 100%, 18%, 1)',\n colorEdges: 'hsla(45, 100%, 96%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.2,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n} as const;\n\nexport const eyesPreset: VoronoiPreset = {\n name: 'Eyes',\n params: {\n scale: 1.6,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(79, 84%, 60%, 1)',\n colorCell2: 'hsla(207, 53%, 41%, 1)',\n colorCell3: 'hsla(207, 80%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorEdges: 'hsla(0, 100%, 100%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.62,\n edgesSoftness: 0.01,\n middleSize: 0.1,\n middleSoftness: 0,\n },\n} as const;\n\nexport const bubblesPreset: VoronoiPreset = {\n name: 'Bubbles',\n params: {\n scale: 2,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 50%, 1)',\n colorCell2: 'hsla(169, 100%, 66%, 1)',\n colorCell3: 'hsla(50, 100%, 66%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorEdges: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.5,\n edgesSize: 0.81,\n edgesSoftness: 0.0,\n middleSize: 0,\n middleSoftness: 0,\n },\n} as const;\n\nexport const cellsPreset: VoronoiPreset = {\n name: 'Cells',\n params: {\n scale: 2,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(0, 0%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 0%, 100%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorEdges: 'hsla(200, 50%, 15%, 1)',\n colorGradient: 1,\n distance: 0.38,\n edgesSize: 0.1,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n} as const;\n\nexport const glowPreset: VoronoiPreset = {\n name: 'Glow',\n params: {\n scale: 1.2,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(40, 100%, 50%, 1)',\n colorCell2: 'hsla(311, 100%, 59%, 1)',\n colorCell3: 'hsla(180, 100%, 65%, 1)',\n colorEdges: 'hsla(0, 100%, 0%, 1)',\n colorMid: 'hsla(0, 0%, 100%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0.7,\n middleSoftness: 1,\n },\n} as const;\n\nexport const tilesPreset: VoronoiPreset = {\n name: 'Tiles',\n params: {\n scale: 1.3,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(80, 50%, 50%, 1)',\n colorCell2: 'hsla(0, 50%, 100%, 1)',\n colorCell3: 'hsla(200, 50%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorEdges: 'hsla(200, 50%, 10%, 1)',\n colorGradient: 0,\n distance: 0.05,\n edgesSize: 0.25,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n} as const;\n\nexport const voronoiPresets: VoronoiPreset[] = [\n defaultPreset,\n classicPreset,\n giraffePreset,\n eyesPreset,\n bubblesPreset,\n cellsPreset,\n glowPreset,\n tilesPreset,\n];\n\nexport const Voronoi = (props: VoronoiProps): JSX.Element => {\n const uniforms: VoronoiUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_colorCell1: getShaderColorFromString(props.colorCell1, defaultPreset.params.colorCell1),\n u_colorCell2: getShaderColorFromString(props.colorCell2, defaultPreset.params.colorCell2),\n u_colorCell3: getShaderColorFromString(props.colorCell3, defaultPreset.params.colorCell3),\n u_colorMid: getShaderColorFromString(props.colorMid, defaultPreset.params.colorMid),\n u_colorEdges: getShaderColorFromString(props.colorEdges, defaultPreset.params.colorEdges),\n u_colorGradient: props.colorGradient ?? defaultPreset.params.colorGradient,\n u_distance: props.distance ?? defaultPreset.params.distance,\n u_edgesSize: props.edgesSize ?? defaultPreset.params.edgesSize,\n u_edgesSoftness: props.edgesSoftness ?? defaultPreset.params.edgesSoftness,\n u_middleSize: props.middleSize ?? defaultPreset.params.middleSize,\n u_middleSoftness: props.middleSoftness ?? defaultPreset.params.middleSoftness,\n };\n }, [\n props.scale,\n props.colorCell1,\n props.colorCell3,\n props.colorCell2,\n props.colorMid,\n props.colorEdges,\n props.colorGradient,\n props.distance,\n props.edgesSize,\n props.edgesSoftness,\n props.middleSize,\n props.middleSoftness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={voronoiFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n warpFragmentShader,\n type WarpUniforms,\n type PatternShape,\n PatternShapes,\n} from '@paper-design/shaders';\n\nexport type WarpParams = {\n scale?: number;\n rotation?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n proportion?: number;\n softness?: number;\n distortion?: number;\n swirl?: number;\n swirlIterations?: number;\n shapeScale?: number;\n shape?: PatternShape;\n} & GlobalParams;\n\nexport type WarpProps = Omit<ShaderMountProps, 'fragmentShader'> & WarpParams;\n\ntype WarpPreset = { name: string; params: Required<WarpParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WarpPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n speed: 0.1,\n frame: 0,\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(203, 80%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.35,\n softness: 1,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetCauldron: WarpPreset = {\n name: 'Cauldron Pot',\n params: {\n scale: 1.1,\n rotation: 1.62,\n speed: 1,\n frame: 0,\n color1: 'hsla(100, 51%, 75%, 1)',\n color2: 'hsla(220, 39%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.64,\n softness: 0.95,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetSilk: WarpPreset = {\n name: 'Silk',\n params: {\n scale: 0.26,\n rotation: 0,\n speed: 0.5,\n frame: 0,\n color1: 'hsla(0, 9%, 7%, 1)',\n color2: 'hsla(8, 13%, 34%, 1)',\n color3: 'hsla(5, 8%, 71%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.3,\n swirl: 0.6,\n swirlIterations: 11,\n shapeScale: 0.05,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetPassion: WarpPreset = {\n name: 'Passion',\n params: {\n scale: 0.25,\n rotation: 1.35,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(0, 44.7%, 14.9%, 1)',\n color2: 'hsla(353.4, 34%, 42.2%, 1)',\n color3: 'hsla(29, 100%, 76.1%, 1)',\n proportion: 0.5,\n softness: 1,\n distortion: 0.09,\n swirl: 0.9,\n swirlIterations: 6,\n shapeScale: 0.25,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetPhantom: WarpPreset = {\n name: 'Phantom',\n params: {\n scale: 0.68,\n rotation: 1.8,\n speed: 1.25,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.45,\n softness: 1,\n distortion: 0.16,\n swirl: 0.3,\n swirlIterations: 7,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetAbyss: WarpPreset = {\n name: 'The Abyss',\n params: {\n scale: 0.1,\n rotation: 2,\n speed: 0.06,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.09,\n swirl: 0.48,\n swirlIterations: 4,\n shapeScale: 0.1,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetInk: WarpPreset = {\n name: 'Live Ink',\n params: {\n scale: 0.7,\n rotation: 1.5,\n speed: 0.25,\n frame: 0,\n color1: 'hsla(210, 11.1%, 7.1%, 1)',\n color2: 'hsla(165, 9%, 65.1%, 1)',\n color3: 'hsla(84, 100%, 97.1%, 1)',\n proportion: 0.35,\n softness: 0,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.26,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetIceberg: WarpPreset = {\n name: 'Iceberg',\n params: {\n scale: 1.1,\n rotation: 2,\n speed: 0.05,\n frame: 0,\n color1: 'hsla(0, 0%, 100%, 1)',\n color2: 'hsla(220, 38.7%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.3,\n softness: 1,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetNectar: WarpPreset = {\n name: 'Nectar',\n params: {\n scale: 0.24,\n rotation: 0,\n speed: 0.42,\n frame: 0,\n color1: 'hsla(37.5, 22.2%, 7.1%, 1)',\n color2: 'hsla(38.5, 59.1%, 63.1%, 1)',\n color3: 'hsla(37.6, 30%, 95.2%, 1)',\n proportion: 0.24,\n softness: 1,\n distortion: 0.21,\n swirl: 0.57,\n swirlIterations: 10,\n shapeScale: 0.32,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetFilteredLight: WarpPreset = {\n name: 'Filtered Light',\n params: {\n scale: 2,\n rotation: 0.44,\n speed: 0.32,\n frame: 0,\n color1: 'hsla(60.2, 7.8%, 8.3%, 1)',\n color2: 'hsla(64.4, 27.8%, 81%, 1)',\n color3: 'hsla(60, 100%, 93.9%, 1)',\n proportion: 0.25,\n softness: 1,\n distortion: 0.06,\n swirl: 0,\n swirlIterations: 0,\n shapeScale: 0,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetKelp: WarpPreset = {\n name: 'Kelp',\n params: {\n scale: 0.38,\n rotation: 0.6,\n speed: 2,\n frame: 0,\n color1: 'hsla(79.3, 100%, 78%, 1)',\n color2: 'hsla(112, 10.5%, 28%, 1)',\n color3: 'hsla(203.3, 50%, 7.1%, 1)',\n proportion: 1,\n softness: 0,\n distortion: 0,\n swirl: 0.15,\n swirlIterations: 0,\n shapeScale: 0.74,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const warpPresets: WarpPreset[] = [\n defaultPreset,\n presetAbyss,\n presetCauldron,\n presetFilteredLight,\n presetIceberg,\n presetInk,\n presetKelp,\n presetNectar,\n presetPassion,\n presetPhantom,\n presetSilk,\n];\n\nexport const Warp = (props: WarpProps): JSX.Element => {\n const uniforms: WarpUniforms = useMemo(() => {\n return {\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_rotation: props.rotation ?? defaultPreset.params.rotation,\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(props.color3, defaultPreset.params.color2),\n u_proportion: props.proportion ?? defaultPreset.params.proportion,\n u_softness: props.softness ?? defaultPreset.params.softness,\n u_distortion: props.distortion ?? defaultPreset.params.distortion,\n u_swirl: props.swirl ?? defaultPreset.params.swirl,\n u_swirlIterations: props.swirlIterations ?? defaultPreset.params.swirlIterations,\n u_shapeScale: props.shapeScale ?? defaultPreset.params.shapeScale,\n u_shape: props.shape ?? defaultPreset.params.shape,\n };\n }, [\n props.scale,\n props.rotation,\n props.color1,\n props.color2,\n props.color3,\n props.proportion,\n props.softness,\n props.distortion,\n props.swirl,\n props.swirlIterations,\n props.shapeScale,\n props.shape,\n ]);\n\n return <ShaderMount {...props} fragmentShader={warpFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, godRaysFragmentShader, type GodRaysUniforms } from '@paper-design/shaders';\n\nexport type GodRaysParams = {\n colorBack?: string;\n color1?: string;\n color2?: string;\n color3?: string;\n offsetX?: number;\n offsetY?: number;\n frequency?: number;\n spotty?: number;\n midIntensity?: number;\n midSize?: number;\n density?: number;\n blending?: number;\n} & GlobalParams;\n\nexport type GodRaysProps = Omit<ShaderMountProps, 'fragmentShader'> & GodRaysParams;\n\ntype GodRaysPreset = { name: string; params: Required<GodRaysParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: GodRaysPreset = {\n name: 'Default',\n params: {\n colorBack: 'hsla(215, 100%, 11%, 1)',\n color1: 'hsla(45, 100%, 70%, 1)',\n color2: 'hsla(10, 100%, 80%, 1)',\n color3: 'hsla(178, 100%, 83%, 1)',\n offsetX: -0.6,\n offsetY: -0.6,\n frequency: 6,\n spotty: 0.28,\n midIntensity: 0.97,\n midSize: 2,\n density: 0.3,\n blending: 0,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const auroraPreset: GodRaysPreset = {\n name: 'Aurora',\n params: {\n colorBack: 'hsla(0, 0%, 25%, 1)',\n color1: 'hsla(239, 100%, 70%, 1)',\n color2: 'hsla(150, 100%, 70%, 1)',\n color3: 'hsla(200, 100%, 70%, 1)',\n offsetX: 0,\n offsetY: 1,\n frequency: 2.4,\n spotty: 0.9,\n midIntensity: 0.8,\n midSize: 2.1,\n density: 0.5,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n} as const;\n\nexport const warpPreset: GodRaysPreset = {\n name: 'Warp',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsla(317, 100%, 50%, 1)',\n color2: 'hsla(25, 100%, 50%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n offsetX: 0,\n offsetY: 0,\n frequency: 1.2,\n spotty: 0.15,\n midIntensity: 0,\n midSize: 0,\n density: 0.79,\n blending: 0.4,\n speed: 2,\n frame: 0,\n },\n} as const;\n\nexport const linearPreset: GodRaysPreset = {\n name: 'Linear',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsl(0 0% 100% / 12%)',\n color2: 'hsl(0 0% 100% / 24%)',\n color3: 'hsl(0 0% 100% / 16%)',\n offsetX: 0.2,\n offsetY: -0.7,\n frequency: 1.2,\n spotty: 0.25,\n midSize: 1.1,\n midIntensity: 0.75,\n density: 0.79,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n} as const;\n\nexport const etherPreset: GodRaysPreset = {\n name: 'Ether',\n params: {\n colorBack: 'hsl(226.7 50% 7.1% / 100%)',\n color1: 'hsl(215 100% 53.9% / 65.1%)',\n color2: 'hsl(214.4 85.9% 86.1% / 74.9%)',\n color3: 'hsl(225 31.4% 20% / 100%)',\n offsetX: -0.6,\n offsetY: 0,\n frequency: 0.3,\n spotty: 0.77,\n midSize: 1.1,\n midIntensity: 0.5,\n density: 0.6,\n blending: 0.6,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const godRaysPresets: GodRaysPreset[] = [defaultPreset, auroraPreset, warpPreset, linearPreset, etherPreset];\n\nexport const GodRays = (props: GodRaysProps): JSX.Element => {\n const uniforms: GodRaysUniforms = useMemo(() => {\n return {\n u_colorBack: getShaderColorFromString(props.colorBack, defaultPreset.params.colorBack),\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(props.color3, defaultPreset.params.color3),\n u_offsetX: props.offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: props.offsetY ?? defaultPreset.params.offsetY,\n u_frequency: props.frequency ?? defaultPreset.params.frequency,\n u_spotty: props.spotty ?? defaultPreset.params.spotty,\n u_midIntensity: props.midIntensity ?? defaultPreset.params.midIntensity,\n u_midSize: props.midSize ?? defaultPreset.params.midSize,\n u_density: props.density ?? defaultPreset.params.density,\n u_blending: props.blending ?? defaultPreset.params.blending,\n };\n }, [\n props.colorBack,\n props.color1,\n props.color2,\n props.color3,\n props.offsetX,\n props.offsetY,\n props.frequency,\n props.spotty,\n props.midIntensity,\n props.midSize,\n props.density,\n props.blending,\n ]);\n\n return <ShaderMount {...props} fragmentShader={godRaysFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, spiralFragmentShader, type SpiralUniforms } from '@paper-design/shaders';\n\nexport type SpiralParams = {\n color1?: string;\n color2?: string;\n scale?: number;\n offsetX?: number;\n offsetY?: number;\n spiralDensity?: number;\n spiralDistortion?: number;\n strokeWidth?: number;\n strokeTaper?: number;\n strokeCap?: number;\n noiseFreq?: number;\n noisePower?: number;\n softness?: number;\n} & GlobalParams;\n\nexport type SpiralProps = Omit<ShaderMountProps, 'fragmentShader'> & SpiralParams;\n\ntype SpiralPreset = { name: string; params: Required<SpiralParams> };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: SpiralPreset = {\n name: 'Default',\n params: {\n color1: 'hsla(0, 0%, 90%, 1)',\n color2: 'hsla(0, 0%, 25%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.01,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const noisyPreset: SpiralPreset = {\n name: 'Noisy',\n params: {\n color1: 'hsla(87, 77%, 53%, 1)',\n color2: 'hsla(109, 70%, 31%, 1)',\n scale: 1.3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.5,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0.5,\n noiseFreq: 0.1,\n noisePower: 1,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const dropletPreset: SpiralPreset = {\n name: 'Droplet',\n params: {\n color1: 'hsla(320, 50%, 50%, 1)',\n color2: 'hsla(190, 50%, 95%, 1)',\n scale: 0.65,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.05,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const sandPreset: SpiralPreset = {\n name: 'Sand',\n params: {\n color1: 'hsla(45, 25%, 50%, 1)',\n color2: 'hsla(0, 0%, 87%, 1)',\n scale: 3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.15,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 30,\n noisePower: 1,\n softness: 0.2,\n speed: 0,\n frame: 0,\n },\n} as const;\n\nexport const swirlPreset: SpiralPreset = {\n name: 'Swirl',\n params: {\n color1: 'hsla(160, 50%, 80%, 1)',\n color2: 'hsla(220, 50%, 20%, 1)',\n scale: 4,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.8,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.5,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const hookPreset: SpiralPreset = {\n name: 'Hook',\n params: {\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(200, 50%, 70%, 1)',\n scale: 0.8,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0.5,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.02,\n speed: 3,\n frame: 0,\n },\n} as const;\n\nexport const vinylPreset: SpiralPreset = {\n name: 'Vinyl',\n params: {\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(320, 5%, 75%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0.3,\n strokeWidth: 0.95,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.11,\n speed: 1,\n frame: 0,\n },\n} as const;\n\nexport const spiralPresets: SpiralPreset[] = [\n defaultPreset,\n noisyPreset,\n dropletPreset,\n swirlPreset,\n sandPreset,\n hookPreset,\n vinylPreset,\n];\n\nexport const Spiral = (props: SpiralProps): JSX.Element => {\n const uniforms: SpiralUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(props.color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(props.color2, defaultPreset.params.color2),\n u_scale: props.scale ?? defaultPreset.params.scale,\n u_offsetX: props.offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: props.offsetY ?? defaultPreset.params.offsetY,\n u_spiralDensity: props.spiralDensity ?? defaultPreset.params.spiralDensity,\n u_spiralDistortion: props.spiralDistortion ?? defaultPreset.params.spiralDistortion,\n u_strokeWidth: props.strokeWidth ?? defaultPreset.params.strokeWidth,\n u_strokeTaper: props.strokeTaper ?? defaultPreset.params.strokeTaper,\n u_strokeCap: props.strokeCap ?? defaultPreset.params.strokeCap,\n u_noiseFreq: props.noiseFreq ?? defaultPreset.params.noiseFreq,\n u_noisePower: props.noisePower ?? defaultPreset.params.noisePower,\n u_softness: props.softness ?? defaultPreset.params.softness,\n };\n }, [\n props.color1,\n props.color2,\n props.scale,\n props.offsetX,\n props.offsetY,\n props.spiralDensity,\n props.spiralDistortion,\n props.strokeWidth,\n props.strokeTaper,\n props.strokeCap,\n props.noiseFreq,\n props.noisePower,\n props.softness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={spiralFragmentShader} uniforms={uniforms} />;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["useEffect", "useRef", "ShaderMountVanilla", "jsx", "processUniforms", "uniforms", "processedUniforms", "imageLoadPromises", "isValidUrl", "url", "isExternalUrl", "key", "value", "imagePromise", "resolve", "reject", "img", "ShaderMount", "
|
|
3
|
+
"sources": ["../src/shader-mount.tsx", "../src/use-merge-refs.ts", "../src/shaders/grain-clouds.tsx", "../src/index.ts", "../src/shaders/mesh-gradient.tsx", "../src/shaders/smoke-ring.tsx", "../src/shaders/neuro-noise.tsx", "../src/shaders/dot-orbit.tsx", "../src/shaders/dot-grid.tsx", "../src/shaders/stepped-simplex-noise.tsx", "../src/shaders/metaballs.tsx", "../src/shaders/waves.tsx", "../src/shaders/perlin-noise.tsx", "../src/shaders/voronoi.tsx", "../src/shaders/warp.tsx", "../src/shaders/god-rays.tsx", "../src/shaders/spiral.tsx"],
|
|
4
|
+
"sourcesContent": ["import React, { useEffect, useRef, forwardRef } from 'react';\nimport { ShaderMount as ShaderMountVanilla, type ShaderMountUniforms } from '@paper-design/shaders';\nimport { useMergeRefs } from './use-merge-refs';\n\n/** The React ShaderMount can also accept strings as uniform values, which will assumed to be URLs and loaded as images */\nexport type ShaderMountUniformsReact = { [key: string]: ShaderMountUniforms[keyof ShaderMountUniforms] | string };\n\nexport interface ShaderMountProps extends React.ComponentProps<'canvas'> {\n shaderMountRef?: React.MutableRefObject<ShaderMountVanilla | null>;\n fragmentShader: string;\n uniforms?: ShaderMountUniformsReact;\n webGlContextAttributes?: WebGLContextAttributes;\n speed?: number;\n frame?: number;\n}\n\n/** Params that every shader can set as part of their controls */\nexport type GlobalParams = Pick<ShaderMountProps, 'speed' | 'frame'>;\n\n/** Parse the provided uniforms, turning URL strings into loaded images */\nconst processUniforms = (uniforms: ShaderMountUniformsReact): Promise<ShaderMountUniforms> => {\n const processedUniforms: ShaderMountUniforms = {};\n const imageLoadPromises: Promise<void>[] = [];\n\n const isValidUrl = (url: string): boolean => {\n try {\n // Handle absolute paths\n if (url.startsWith('/')) return true;\n // Check if it's a valid URL\n new URL(url);\n return true;\n } catch {\n return false;\n }\n };\n\n const isExternalUrl = (url: string): boolean => {\n try {\n if (url.startsWith('/')) return false;\n const urlObject = new URL(url, window.location.origin);\n return urlObject.origin !== window.location.origin;\n } catch {\n return false;\n }\n };\n\n Object.entries(uniforms).forEach(([key, value]) => {\n if (typeof value === 'string') {\n // Make sure the provided string is a valid URL or just skip trying to set this uniform entirely\n if (!isValidUrl(value)) {\n console.warn(`Uniform \"${key}\" has invalid URL \"${value}\". Skipping image loading.`);\n return;\n }\n\n const imagePromise = new Promise<void>((resolve, reject) => {\n const img = new Image();\n if (isExternalUrl(value)) {\n img.crossOrigin = 'anonymous';\n }\n img.onload = () => {\n processedUniforms[key] = img;\n resolve();\n };\n img.onerror = () => {\n console.error(`Could not set uniforms. Failed to load image at ${value}`);\n reject();\n };\n img.src = value;\n });\n imageLoadPromises.push(imagePromise);\n } else {\n processedUniforms[key] = value;\n }\n });\n\n return Promise.all(imageLoadPromises).then(() => processedUniforms);\n};\n\n/**\n * A React component that mounts a shader and updates its uniforms as the component's props change\n * If you pass a string as a uniform value, it will be assumed to be a URL and attempted to be loaded as an image\n */\nexport const ShaderMount: React.FC<ShaderMountProps> = forwardRef<HTMLCanvasElement, ShaderMountProps>(\n function ShaderMountImpl(\n {\n shaderMountRef: externalShaderMountRef,\n fragmentShader,\n uniforms = {},\n webGlContextAttributes,\n speed = 1,\n frame = 0,\n ...canvasProps\n },\n forwardedRef\n ) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const shaderMountRef: React.MutableRefObject<ShaderMountVanilla | null> = useRef<ShaderMountVanilla>(null);\n\n useEffect(() => {\n const initShader = async () => {\n const processedUniforms = await processUniforms(uniforms);\n\n if (canvasRef.current && !shaderMountRef.current) {\n shaderMountRef.current = new ShaderMountVanilla(\n canvasRef.current,\n fragmentShader,\n processedUniforms,\n webGlContextAttributes,\n speed,\n frame\n );\n\n if (externalShaderMountRef) {\n externalShaderMountRef.current = shaderMountRef.current;\n }\n }\n };\n\n initShader();\n\n return () => {\n shaderMountRef.current?.dispose();\n shaderMountRef.current = null;\n };\n }, [fragmentShader, webGlContextAttributes]);\n\n useEffect(() => {\n const updateUniforms = async () => {\n const processedUniforms = await processUniforms(uniforms);\n shaderMountRef.current?.setUniforms(processedUniforms);\n };\n\n updateUniforms();\n }, [uniforms]);\n\n useEffect(() => {\n shaderMountRef.current?.setSpeed(speed);\n }, [speed]);\n\n useEffect(() => {\n shaderMountRef.current?.setFrame(frame);\n }, [frame]);\n\n return <canvas ref={useMergeRefs([canvasRef, forwardedRef])} {...canvasProps} />;\n }\n);\n\nShaderMount.displayName = 'ShaderMount';\n", "import * as React from 'react';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nexport function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.Ref<Instance> {\n const cleanupRef = React.useRef<void | (() => void)>(undefined);\n\n const refEffect = React.useCallback((instance: Instance | null) => {\n const cleanups = refs.map((ref) => {\n if (ref == null) {\n return;\n }\n\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup: void | (() => void) = refCallback(instance);\n return typeof refCleanup === 'function'\n ? refCleanup\n : () => {\n refCallback(null);\n };\n }\n\n (ref as React.MutableRefObject<Instance | null>).current = instance;\n return () => {\n (ref as React.MutableRefObject<Instance | null>).current = null;\n };\n });\n\n return () => {\n cleanups.forEach((refCleanup) => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n\n return React.useMemo(() => {\n if (refs.every((ref) => ref == null)) {\n return null;\n }\n\n return (value) => {\n if (cleanupRef.current) {\n cleanupRef.current();\n (cleanupRef as React.MutableRefObject<void | (() => void)>).current = undefined;\n }\n\n if (value != null) {\n (cleanupRef as React.MutableRefObject<void | (() => void)>).current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, grainCloudsFragmentShader, type GrainCloudsUniforms } from '@paper-design/shaders';\n\nexport type GrainCloudsParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n grainAmount?: number;\n} & GlobalParams;\n\nexport type GrainCloudsProps = Omit<ShaderMountProps, 'fragmentShader'> & GrainCloudsParams;\n\ntype GrainCloudsPreset = { name: string; params: Required<GrainCloudsParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: GrainCloudsPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(0, 0%, 100%, 1)',\n grainAmount: 1,\n },\n};\n\nexport const skyPreset: GrainCloudsPreset = {\n name: 'Sky',\n params: {\n scale: 1,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(218, 100%, 73%, 1)',\n color2: 'hsla(0, 0%, 100%, 1)',\n grainAmount: 0,\n },\n};\n\nexport const grainCloudsPresets: GrainCloudsPreset[] = [defaultPreset, skyPreset];\n\nexport const GrainClouds = ({ scale, color1, color2, grainAmount, ...props }: GrainCloudsProps): React.ReactElement => {\n const uniforms: GrainCloudsUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_grainAmount: grainAmount ?? defaultPreset.params.grainAmount,\n };\n }, [scale, color1, color2, grainAmount]);\n\n return <ShaderMount {...props} fragmentShader={grainCloudsFragmentShader} uniforms={uniforms} />;\n};\n", "// ----- ShaderMount ----- //\nexport { ShaderMount } from './shader-mount';\n\n// ----- Fragment shaders ----- //\n\n// Grain clouds\nexport { GrainClouds, grainCloudsPresets } from './shaders/grain-clouds';\nexport { type GrainCloudsProps } from './shaders/grain-clouds';\nexport { type GrainCloudsParams } from './shaders/grain-clouds';\nexport { type GrainCloudsUniforms } from '@paper-design/shaders';\n\n// Mesh gradient\nexport { MeshGradient, meshGradientPresets } from './shaders/mesh-gradient';\nexport { type MeshGradientProps } from './shaders/mesh-gradient';\nexport { type MeshGradientParams } from './shaders/mesh-gradient';\nexport { type MeshGradientUniforms } from '@paper-design/shaders';\n\n// Smoke ring\nexport { SmokeRing, smokeRingPresets } from './shaders/smoke-ring';\nexport { type SmokeRingProps } from './shaders/smoke-ring';\nexport { type SmokeRingParams } from './shaders/smoke-ring';\nexport { type SmokeRingUniforms } from '@paper-design/shaders';\n\n// Neuro noise\nexport { NeuroNoise, neuroNoisePresets } from './shaders/neuro-noise';\nexport { type NeuroNoiseProps } from './shaders/neuro-noise';\nexport { type NeuroNoiseParams } from './shaders/neuro-noise';\nexport { type NeuroNoiseUniforms } from '@paper-design/shaders';\n\n// Animated dot pattern: orbit type of animation\nexport { DotOrbit, dotOrbitPresets } from './shaders/dot-orbit';\nexport { type DotOrbitProps } from './shaders/dot-orbit';\nexport { type DotOrbitParams } from './shaders/dot-orbit';\nexport { type DotOrbitUniforms } from '@paper-design/shaders';\n\n// Dot Grid\nexport { DotGrid, dotGridPresets } from './shaders/dot-grid';\nexport { type DotGridProps } from './shaders/dot-grid';\nexport { type DotGridParams } from './shaders/dot-grid';\nexport { type DotGridUniforms, DotGridShapes, type DotGridShape } from '@paper-design/shaders';\n\n// Stepped simplex noise\nexport { SteppedSimplexNoise, steppedSimplexNoisePresets } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseProps } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseParams } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseUniforms } from '@paper-design/shaders';\n\n// Metaballs\nexport { Metaballs, metaballsPresets } from './shaders/metaballs';\nexport { type MetaballsProps } from './shaders/metaballs';\nexport { type MetaballsParams } from './shaders/metaballs';\nexport { type MetaballsUniforms } from '@paper-design/shaders';\n\n// Waves\nexport { Waves, wavesPresets } from './shaders/waves';\nexport { type WavesProps } from './shaders/waves';\nexport { type WavesParams } from './shaders/waves';\nexport { type WavesUniforms } from '@paper-design/shaders';\n\n// Perlin noise\nexport { PerlinNoise, perlinNoisePresets } from './shaders/perlin-noise';\nexport { type PerlinNoiseProps } from './shaders/perlin-noise';\nexport { type PerlinNoiseParams } from './shaders/perlin-noise';\nexport { type PerlinNoiseUniforms } from '@paper-design/shaders';\n\n// Voronoi diagram\nexport { Voronoi, voronoiPresets } from './shaders/voronoi';\nexport { type VoronoiProps } from './shaders/voronoi';\nexport { type VoronoiParams } from './shaders/voronoi';\nexport { type VoronoiUniforms } from '@paper-design/shaders';\n\n// Warping distortion\nexport { Warp, warpPresets } from './shaders/warp';\nexport { type WarpProps } from './shaders/warp';\nexport { type WarpParams } from './shaders/warp';\nexport { type WarpUniforms, PatternShapes, type PatternShape } from '@paper-design/shaders';\n\n// God Rays effect\nexport { GodRays, godRaysPresets } from './shaders/god-rays';\nexport { type GodRaysProps } from './shaders/god-rays';\nexport { type GodRaysParams } from './shaders/god-rays';\nexport { type GodRaysUniforms } from '@paper-design/shaders';\n\n// Single-colored spiral shape\nexport { Spiral, spiralPresets } from './shaders/spiral';\nexport { type SpiralProps } from './shaders/spiral';\nexport { type SpiralParams } from './shaders/spiral';\nexport { type SpiralUniforms } from '@paper-design/shaders';\n\n// ----- Uniform conversion utils ----- //\nexport { getShaderColorFromString } from '@paper-design/shaders';\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, meshGradientFragmentShader, type MeshGradientUniforms } from '@paper-design/shaders';\n\nexport type MeshGradientParams = {\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n} & GlobalParams;\n\nexport type MeshGradientProps = Omit<ShaderMountProps, 'fragmentShader'> & MeshGradientParams;\n\ntype MeshGradientPreset = { name: string; params: Required<MeshGradientParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MeshGradientPreset = {\n name: 'Default',\n params: {\n speed: 0.15,\n frame: 0,\n color1: 'hsla(259, 29%, 73%, 1)',\n color2: 'hsla(263, 57%, 39%, 1)',\n color3: 'hsla(48, 73%, 84%, 1)',\n color4: 'hsla(295, 32%, 70%, 1)',\n },\n};\n\nexport const beachPreset: MeshGradientPreset = {\n name: 'Beach',\n params: {\n speed: 0.1,\n frame: 0,\n color1: 'hsla(186, 81%, 83%, 1)',\n color2: 'hsla(198, 55%, 68%, 1)',\n color3: 'hsla(53, 67%, 88%, 1)',\n color4: 'hsla(45, 93%, 73%, 1)',\n },\n};\n\nexport const fadedPreset: MeshGradientPreset = {\n name: 'Faded',\n params: {\n speed: -0.3,\n frame: 0,\n color1: 'hsla(186, 41%, 90%, 1)',\n color2: 'hsla(208, 71%, 85%, 1)',\n color3: 'hsla(183, 51%, 92%, 1)',\n color4: 'hsla(201, 72%, 90%, 1)',\n },\n};\n\nexport const meshGradientPresets: MeshGradientPreset[] = [defaultPreset, beachPreset, fadedPreset];\n\nexport const MeshGradient = ({ color1, color2, color3, color4, ...props }: MeshGradientProps): React.ReactElement => {\n const uniforms: MeshGradientUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n };\n }, [color1, color2, color3, color4]);\n\n return <ShaderMount {...props} fragmentShader={meshGradientFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, smokeRingFragmentShader, type SmokeRingUniforms } from '@paper-design/shaders';\n\nexport type SmokeRingParams = {\n colorInner?: string;\n colorOuter?: string;\n scale?: number;\n noiseScale?: number;\n thickness?: number;\n} & GlobalParams;\n\nexport type SmokeRingProps = Omit<ShaderMountProps, 'fragmentShader'> & SmokeRingParams;\n\ntype SmokeRingPreset = { name: string; params: Required<SmokeRingParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SmokeRingPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(38, 4%, 38%, 1)',\n noiseScale: 1,\n thickness: 0.5,\n },\n};\n\nexport const cloudPreset: SmokeRingPreset = {\n name: 'Cloud',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(0, 0%, 100%, 1)',\n noiseScale: 1.8,\n thickness: 0.7,\n },\n style: {\n background: 'hsla(218, 100%, 62%, 1)',\n },\n};\n\nexport const firePreset: SmokeRingPreset = {\n name: 'Fire',\n params: {\n scale: 1,\n speed: 4,\n frame: 0,\n colorInner: 'hsla(40, 100%, 50%, 1)',\n colorOuter: 'hsla(0, 100%, 50%, 1)',\n noiseScale: 1.4,\n thickness: 0.35,\n },\n style: {\n background: 'hsla(20, 100%, 5%, 1)',\n },\n};\n\nexport const electricPreset: SmokeRingPreset = {\n name: 'Electric',\n params: {\n scale: 1,\n speed: -2.5,\n frame: 0,\n colorInner: 'hsla(47, 100%, 64%, 1)',\n colorOuter: 'hsla(47, 100%, 64%, 1)',\n noiseScale: 1.8,\n thickness: 0.1,\n },\n style: {\n background: 'hsla(47, 50%, 7%, 1)',\n },\n};\n\nexport const poisonPreset: SmokeRingPreset = {\n name: 'Poison',\n params: {\n scale: 1,\n speed: 3,\n frame: 0,\n colorInner: 'hsla(120, 100%, 3%, 1)',\n colorOuter: 'hsla(120, 100%, 66%, 1)',\n noiseScale: 5,\n thickness: 0.6,\n },\n style: {\n background: 'hsla(120, 100%, 3%, 1)',\n },\n};\n\nexport const smokeRingPresets: SmokeRingPreset[] = [\n defaultPreset,\n cloudPreset,\n firePreset,\n electricPreset,\n poisonPreset,\n];\n\nexport const SmokeRing = ({\n scale,\n colorInner,\n colorOuter,\n noiseScale,\n thickness,\n ...props\n}: SmokeRingProps): React.ReactElement => {\n const uniforms: SmokeRingUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorInner: getShaderColorFromString(colorInner, defaultPreset.params.colorInner),\n u_colorOuter: getShaderColorFromString(colorOuter, defaultPreset.params.colorOuter),\n u_noiseScale: noiseScale ?? defaultPreset.params.noiseScale,\n u_thickness: thickness ?? defaultPreset.params.thickness,\n };\n }, [scale, colorInner, colorOuter, noiseScale, thickness]);\n\n return <ShaderMount {...props} fragmentShader={smokeRingFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, neuroNoiseFragmentShader, type NeuroNoiseUniforms } from '@paper-design/shaders';\n\nexport type NeuroNoiseParams = {\n scale?: number;\n colorFront?: string;\n colorBack?: string;\n brightness?: number;\n} & GlobalParams;\n\nexport type NeuroNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & NeuroNoiseParams;\n\ntype NeuroNoisePreset = { name: string; params: Required<NeuroNoiseParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: NeuroNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorFront: 'hsla(261, 100%, 82%, 1)',\n colorBack: 'hsla(0, 0%, 0%, 1)',\n brightness: 1.3,\n },\n};\n\nconst marblePreset: NeuroNoisePreset = {\n name: 'Marble',\n params: {\n scale: 0.4,\n speed: 0,\n frame: 0,\n colorFront: 'hsla(230, 24%, 15%, 1)',\n colorBack: 'hsla(0, 0%, 97%, 1)',\n brightness: 1.1,\n },\n};\n\nexport const neuroNoisePresets: NeuroNoisePreset[] = [defaultPreset, marblePreset] as const;\n\nexport const NeuroNoise = ({\n scale,\n colorFront,\n colorBack,\n brightness,\n ...props\n}: NeuroNoiseProps): React.ReactElement => {\n const uniforms: NeuroNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorFront: getShaderColorFromString(colorFront, defaultPreset.params.colorFront),\n u_colorBack: getShaderColorFromString(colorBack, defaultPreset.params.colorBack),\n u_brightness: brightness ?? defaultPreset.params.brightness,\n };\n }, [scale, colorFront, colorBack, brightness]);\n\n return <ShaderMount {...props} fragmentShader={neuroNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, dotOrbitFragmentShader, type DotOrbitUniforms } from '@paper-design/shaders';\n\nexport type DotOrbitParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n dotSize?: number;\n dotSizeRange?: number;\n spreading?: number;\n} & GlobalParams;\n\nexport type DotOrbitProps = Omit<ShaderMountProps, 'fragmentShader'> & DotOrbitParams;\n\ntype DotOrbitPreset = { name: string; params: Required<DotOrbitParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: DotOrbitPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 2,\n frame: 0,\n color1: 'hsla(358, 66%, 49%, 1)',\n color2: 'hsla(145, 30%, 33%, 1)',\n color3: 'hsla(39, 88%, 52%, 1)',\n color4: 'hsla(274, 30%, 35%, 1)',\n dotSize: 0.7,\n dotSizeRange: 0.4,\n spreading: 1,\n },\n};\n\nexport const dotOrbitPresets: DotOrbitPreset[] = [defaultPreset];\n\nexport const DotOrbit = ({\n scale,\n color1,\n color2,\n color3,\n color4,\n dotSize,\n dotSizeRange,\n spreading,\n ...props\n}: DotOrbitProps): React.ReactElement => {\n const uniforms: DotOrbitUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n u_dotSize: dotSize ?? defaultPreset.params.dotSize,\n u_dotSizeRange: dotSizeRange ?? defaultPreset.params.dotSizeRange,\n u_spreading: spreading ?? defaultPreset.params.spreading,\n };\n }, [scale, color1, color2, color3, color4, dotSize, dotSizeRange, spreading]);\n\n return <ShaderMount {...props} fragmentShader={dotOrbitFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport {\n dotGridFragmentShader,\n getShaderColorFromString,\n type DotGridUniforms,\n type DotGridShape,\n DotGridShapes,\n} from '@paper-design/shaders';\n\nexport type DotGridParams = {\n colorFill?: string;\n colorStroke?: string;\n dotSize?: number;\n gridSpacingX?: number;\n gridSpacingY?: number;\n strokeWidth?: number;\n sizeRange?: number;\n opacityRange?: number;\n shape?: DotGridShape;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport type DotGridProps = Omit<ShaderMountProps, 'fragmentShader'> & DotGridParams;\n\ntype DotGridPreset = { name: string; params: Required<DotGridParams>; style?: React.CSSProperties };\n\nexport const defaultPreset: DotGridPreset = {\n name: 'Default',\n params: {\n colorFill: 'hsla(0, 0%, 0%, 1)',\n colorStroke: 'hsla(40, 100%, 50%, 1)',\n dotSize: 2,\n gridSpacingX: 50,\n gridSpacingY: 50,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Circle,\n },\n};\n\nexport const macrodataPreset: DotGridPreset = {\n name: 'Macrodata',\n params: {\n colorFill: 'hsla(218, 100%, 67%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 3,\n gridSpacingX: 25,\n gridSpacingY: 25,\n strokeWidth: 0,\n sizeRange: 0.25,\n opacityRange: 0.9,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(211, 37%, 13%, 1)',\n },\n};\n\nconst trianglesPreset: DotGridPreset = {\n name: 'Triangles',\n params: {\n colorFill: 'hsla(0, 0%, 100%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, .5)',\n dotSize: 5,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Triangle,\n },\n style: {\n background: 'hsla(0, 0%, 100%, 1)',\n },\n};\n\nconst bubblesPreset: DotGridPreset = {\n name: 'Bubbles',\n params: {\n colorFill: 'hsla(100, 30%, 100%, 1)',\n colorStroke: 'hsla(0, 100%, 0%, 1)',\n dotSize: 28,\n gridSpacingX: 60,\n gridSpacingY: 60,\n strokeWidth: 12,\n sizeRange: 0.7,\n opacityRange: 1.3,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(234, 100%, 31%, .5)',\n },\n};\n\nconst treeLinePreset: DotGridPreset = {\n name: 'Tree line',\n params: {\n colorFill: 'hsla(150, 80%, 10%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 8,\n gridSpacingX: 20,\n gridSpacingY: 90,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0.6,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(100, 100%, 36%, .05)',\n },\n};\n\nconst diamondsPreset: DotGridPreset = {\n name: 'Diamonds',\n params: {\n colorFill: 'hsla(0, 100%, 50%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 15,\n gridSpacingX: 30,\n gridSpacingY: 30,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 2,\n shape: DotGridShapes.Diamond,\n },\n style: {\n background: 'hsla(0, 0%, 0%, 0)',\n },\n};\n\nconst wallpaperPreset: DotGridPreset = {\n name: 'Wallpaper',\n params: {\n colorFill: 'hsla(0, 0%, 0%, 0)',\n colorStroke: 'hsla(36, 48%, 58%, 1)',\n dotSize: 9,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Diamond,\n },\n style: {\n background: 'hsla(154, 33%, 19%, 1)',\n },\n};\n\nconst matrixPreset: DotGridPreset = {\n name: 'Enter the Matrix',\n params: {\n colorFill: 'hsla(182, 100%, 64%, 1)',\n colorStroke: 'hsla(0, 100%, 100%, 0)',\n dotSize: 2,\n gridSpacingX: 10,\n gridSpacingY: 10,\n strokeWidth: 0.5,\n sizeRange: 0.25,\n opacityRange: 1,\n shape: DotGridShapes.Triangle,\n },\n style: {\n background: 'hsla(0, 100%, 0%, 1)',\n },\n};\n\nconst waveformPreset: DotGridPreset = {\n name: 'Waveform',\n params: {\n colorFill: 'hsla(227, 93%, 38%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 0)',\n dotSize: 100,\n gridSpacingX: 2,\n gridSpacingY: 215,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0,\n shape: DotGridShapes.Square,\n },\n style: {\n background: 'hsla(0, 100%, 100%, 1)',\n },\n};\n\nexport const dotGridPresets: DotGridPreset[] = [\n defaultPreset,\n macrodataPreset,\n trianglesPreset,\n bubblesPreset,\n treeLinePreset,\n diamondsPreset,\n wallpaperPreset,\n matrixPreset,\n waveformPreset,\n];\n\nexport const DotGrid = ({\n colorFill,\n colorStroke,\n dotSize,\n gridSpacingX,\n gridSpacingY,\n strokeWidth,\n sizeRange,\n opacityRange,\n shape,\n ...props\n}: DotGridProps): React.ReactElement => {\n const uniforms: DotGridUniforms = useMemo(() => {\n return {\n u_colorFill: getShaderColorFromString(colorFill, defaultPreset.params.colorStroke),\n u_colorStroke: getShaderColorFromString(colorStroke, defaultPreset.params.colorStroke),\n u_dotSize: dotSize ?? defaultPreset.params.dotSize,\n u_gridSpacingX: gridSpacingX ?? defaultPreset.params.gridSpacingX,\n u_gridSpacingY: gridSpacingY ?? defaultPreset.params.gridSpacingY,\n u_strokeWidth: strokeWidth ?? defaultPreset.params.strokeWidth,\n u_sizeRange: sizeRange ?? defaultPreset.params.sizeRange,\n u_opacityRange: opacityRange ?? defaultPreset.params.opacityRange,\n u_shape: shape ?? defaultPreset.params.shape,\n };\n }, [colorFill, colorStroke, dotSize, gridSpacingX, gridSpacingY, strokeWidth, sizeRange, opacityRange, shape]);\n\n return <ShaderMount {...props} fragmentShader={dotGridFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n steppedSimplexNoiseFragmentShader,\n type SteppedSimplexNoiseUniforms,\n} from '@paper-design/shaders';\n\nexport type SteppedSimplexNoiseParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n color5?: string;\n stepsNumber?: number;\n} & GlobalParams;\n\nexport type SteppedSimplexNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & SteppedSimplexNoiseParams;\n\ntype SteppedSimplexNoisePreset = {\n name: string;\n params: Required<SteppedSimplexNoiseParams>;\n style?: React.CSSProperties;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SteppedSimplexNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.15,\n frame: 0,\n color1: 'hsla(208, 25%, 45%, 1)',\n color2: 'hsla(94, 38%, 59%, 1)',\n color3: 'hsla(359, 94%, 62%, 1)',\n color4: 'hsla(42, 93%, 64%, 1)',\n color5: 'hsla(0, 0%, 100%, 1)',\n stepsNumber: 13,\n },\n};\n\nconst magmaPreset: SteppedSimplexNoisePreset = {\n name: 'Magma',\n params: {\n scale: 0.3,\n speed: 0.2,\n frame: 0,\n color1: 'hsla(0, 100%, 36%, 1)',\n color2: 'hsla(0, 95%, 44%, 1)',\n color3: 'hsla(20, 100%, 49%, 1)',\n color4: 'hsla(45, 100%, 45%, 1)',\n color5: 'hsla(31, 100%, 94%, 1)',\n stepsNumber: 8,\n },\n};\n\nconst bloodCellPreset: SteppedSimplexNoisePreset = {\n name: 'Blood cell',\n params: {\n scale: 1.2,\n speed: 0.22,\n frame: 0,\n color1: 'hsla(302, 43%, 13%, 1)',\n color2: 'hsla(325, 93%, 17%, 1)',\n color3: 'hsla(338, 80%, 25%, 1)',\n color4: 'hsla(338, 80%, 25%, 1)',\n color5: 'hsla(2, 85%, 72%, 1)',\n stepsNumber: 29,\n },\n};\n\nconst firstContactPreset: SteppedSimplexNoisePreset = {\n name: 'First contact',\n params: {\n scale: 1.2,\n speed: -0.1,\n frame: 0,\n color1: 'hsla(300, 43%, 82%, 1)',\n color2: 'hsla(266, 70%, 9%, 1)',\n color3: 'hsla(289, 36%, 26%, 1)',\n color4: 'hsla(0, 41%, 78%, 1)',\n color5: 'hsla(0, 100%, 96%, 1)',\n stepsNumber: 40,\n },\n};\n\nexport const steppedSimplexNoisePresets: SteppedSimplexNoisePreset[] = [\n defaultPreset,\n magmaPreset,\n bloodCellPreset,\n firstContactPreset,\n];\n\nexport const SteppedSimplexNoise = ({\n scale,\n color1,\n color2,\n color3,\n color4,\n color5,\n stepsNumber,\n ...props\n}: SteppedSimplexNoiseProps): React.ReactElement => {\n const uniforms: SteppedSimplexNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n u_color5: getShaderColorFromString(color5, defaultPreset.params.color5),\n u_steps_number: stepsNumber ?? defaultPreset.params.stepsNumber,\n };\n }, [scale, color1, color2, color3, color4, color5, stepsNumber]);\n\n return <ShaderMount {...props} fragmentShader={steppedSimplexNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, metaballsFragmentShader, type MetaballsUniforms } from '@paper-design/shaders';\n\nexport type MetaballsParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n ballSize?: number;\n visibilityRange?: number;\n} & GlobalParams;\n\nexport type MetaballsProps = Omit<ShaderMountProps, 'fragmentShader'> & MetaballsParams;\n\ntype MetaballsPreset = { name: string; params: Required<MetaballsParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MetaballsPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n color1: 'hsla(350, 90%, 55%, 1)',\n color2: 'hsla(350, 80%, 60%, 1)',\n color3: 'hsla(20, 85%, 70%, 1)',\n ballSize: 1,\n visibilityRange: 0.4,\n },\n};\n\nexport const metaballsPresets: MetaballsPreset[] = [defaultPreset];\n\nexport const Metaballs = ({\n scale,\n color1,\n color2,\n color3,\n ballSize,\n visibilityRange,\n ...props\n}: MetaballsProps): React.ReactElement => {\n const uniforms: MetaballsUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_ballSize: ballSize ?? defaultPreset.params.ballSize,\n u_visibilityRange: visibilityRange ?? defaultPreset.params.visibilityRange,\n };\n }, [scale, color1, color2, color3, ballSize, visibilityRange]);\n\n return <ShaderMount {...props} fragmentShader={metaballsFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, wavesFragmentShader, type WavesUniforms } from '@paper-design/shaders';\n\nexport type WavesParams = {\n scale?: number;\n rotation?: number;\n color?: string;\n shape?: number;\n frequency?: number;\n amplitude?: number;\n spacing?: number;\n dutyCycle?: number;\n softness?: number;\n};\n\nexport type WavesProps = Omit<ShaderMountProps, 'fragmentShader'> & WavesParams;\n\ntype WavesPreset = { name: string; params: Required<WavesParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WavesPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n color: 'hsla(204, 47%, 45%, 1)',\n shape: 1,\n frequency: 0.5,\n amplitude: 0.5,\n spacing: 0.75,\n dutyCycle: 0.2,\n softness: 0,\n },\n};\n\nexport const spikesPreset: WavesPreset = {\n name: 'Spikes',\n params: {\n scale: 2.3,\n rotation: 0,\n color: 'hsla(290, 52%, 15%, 1)',\n shape: 0,\n frequency: 0.5,\n amplitude: 0.9,\n spacing: 0.37,\n dutyCycle: 0.93,\n softness: 0.15,\n },\n style: {\n background: 'hsla(65, 100%, 95%, 1)',\n },\n};\n\nexport const groovyPreset: WavesPreset = {\n name: 'Groovy',\n params: {\n scale: 0.5,\n rotation: 1,\n color: 'hsla(20, 100%, 71%, 1)',\n shape: 2.37,\n frequency: 0.2,\n amplitude: 0.67,\n spacing: 1.17,\n dutyCycle: 0.57,\n softness: 0,\n },\n style: {\n background: 'hsla(60, 100%, 97%, 1)',\n },\n};\n\nexport const tangledUpPreset: WavesPreset = {\n name: 'Tangled up',\n params: {\n scale: 3.04,\n rotation: 1,\n color: 'hsla(85.5, 35.7%, 78%, 1)',\n shape: 3,\n frequency: 0.44,\n amplitude: 0.57,\n spacing: 1.05,\n dutyCycle: 0.97,\n softness: 0,\n },\n style: {\n background: 'hsla(198.7, 66.7%, 14.1%, 1)',\n },\n};\n\nexport const zigZagPreset: WavesPreset = {\n name: 'Zig zag',\n params: {\n scale: 2.7,\n rotation: 1,\n color: 'hsla(0, 0%, 90%, 1)',\n shape: 0,\n frequency: 0.6,\n amplitude: 0.8,\n spacing: 0.5,\n dutyCycle: 1,\n softness: 0.5,\n },\n style: {\n background: 'hsla(0, 0%, 0%, 1)',\n },\n};\n\nexport const waveRidePreset: WavesPreset = {\n name: 'Ride the wave',\n params: {\n scale: 0.84,\n rotation: 0,\n color: 'hsla(0, 0%, 12%, 1)',\n shape: 2.23,\n frequency: 0.1,\n amplitude: 0.6,\n spacing: 0.41,\n dutyCycle: 0.99,\n softness: 0,\n },\n style: {\n background: 'hsla(65, 100%, 95%, 1)',\n },\n};\n\nexport const wavesPresets: WavesPreset[] = [\n defaultPreset,\n spikesPreset,\n groovyPreset,\n tangledUpPreset,\n zigZagPreset,\n waveRidePreset,\n];\n\nexport const Waves = ({\n scale,\n rotation,\n color,\n shape,\n frequency,\n amplitude,\n spacing,\n dutyCycle,\n softness,\n ...props\n}: WavesProps): React.ReactElement => {\n const uniforms: WavesUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_rotation: rotation ?? defaultPreset.params.rotation,\n u_color: getShaderColorFromString(color, defaultPreset.params.color),\n u_shape: shape ?? defaultPreset.params.shape,\n u_frequency: frequency ?? defaultPreset.params.frequency,\n u_amplitude: amplitude ?? defaultPreset.params.amplitude,\n u_spacing: spacing ?? defaultPreset.params.spacing,\n u_dutyCycle: dutyCycle ?? defaultPreset.params.dutyCycle,\n u_softness: softness ?? defaultPreset.params.softness,\n };\n }, [scale, rotation, color, shape, frequency, amplitude, spacing, dutyCycle, softness]);\n\n return <ShaderMount {...props} fragmentShader={wavesFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, perlinNoiseFragmentShader, type PerlinNoiseUniforms } from '@paper-design/shaders';\n\nexport type PerlinNoiseParams = {\n scale?: number;\n color?: string;\n proportion?: number;\n softness?: number;\n octaveCount?: number;\n persistence?: number;\n lacunarity?: number;\n} & GlobalParams;\n\nexport type PerlinNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & PerlinNoiseParams;\n\ntype PerlinNoisePreset = { name: string; params: Required<PerlinNoiseParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: PerlinNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n color: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.1,\n octaveCount: 2,\n persistence: 1,\n lacunarity: 1.5,\n },\n};\n\nexport const nintendoWaterPreset: PerlinNoisePreset = {\n name: 'Nintendo Water',\n params: {\n scale: 0.2,\n speed: 0.4,\n frame: 0,\n color: 'hsla(200, 66%, 90%, 1)',\n proportion: 0.42,\n softness: 0,\n octaveCount: 2,\n persistence: 0.55,\n lacunarity: 1.8,\n },\n style: {\n background: 'hsla(220, 66%, 50%, 1)',\n },\n};\n\nexport const colonyPreset: PerlinNoisePreset = {\n name: 'Colony',\n params: {\n scale: 0.15,\n speed: 0,\n frame: 0,\n color: 'hsla(230, 80%, 20%, 1)',\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n proportion: 0.65,\n softness: 0.35,\n },\n style: {\n background: 'hsla(56, 86%, 81%, 1)',\n },\n};\n\nexport const phosphenesPreset: PerlinNoisePreset = {\n name: 'Phosphenes',\n params: {\n scale: 0.03,\n speed: 0.15,\n frame: 0,\n color: 'hsla(150, 50%, 60%, 1)',\n proportion: 0.45,\n softness: 0.45,\n octaveCount: 6,\n persistence: 0.3,\n lacunarity: 3,\n },\n style: {\n background: 'hsla(350, 80%, 70%, 1)',\n },\n};\n\nexport const mossPreset: PerlinNoisePreset = {\n name: 'Moss',\n params: {\n scale: 0.15,\n speed: 0.02,\n frame: 0,\n color: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.35,\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n },\n style: {\n background: 'hsla(137, 100%, 51%, 1)',\n },\n};\n\nexport const wormsPreset: PerlinNoisePreset = {\n name: 'Worms',\n params: {\n scale: 2,\n speed: 0,\n frame: 0,\n color: 'hsla(0, 0%, 35%, 1)',\n proportion: 0.5,\n softness: 0,\n octaveCount: 1,\n persistence: 1,\n lacunarity: 1.5,\n },\n style: {\n background: 'hsla(0, 100%, 100%, 1)',\n },\n};\n\nexport const perlinNoisePresets: PerlinNoisePreset[] = [\n defaultPreset,\n nintendoWaterPreset,\n colonyPreset,\n phosphenesPreset,\n mossPreset,\n wormsPreset,\n];\n\nexport const PerlinNoise = ({\n scale,\n color,\n proportion,\n softness,\n octaveCount,\n persistence,\n lacunarity,\n ...props\n}: PerlinNoiseProps): React.ReactElement => {\n const uniforms: PerlinNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color: getShaderColorFromString(color, defaultPreset.params.color),\n u_proportion: proportion ?? defaultPreset.params.proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_octaveCount: octaveCount ?? defaultPreset.params.octaveCount,\n u_persistence: persistence ?? defaultPreset.params.persistence,\n u_lacunarity: lacunarity ?? defaultPreset.params.lacunarity,\n };\n }, [scale, color, proportion, softness, octaveCount, persistence, lacunarity]);\n\n return <ShaderMount {...props} fragmentShader={perlinNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, voronoiFragmentShader, type VoronoiUniforms } from '@paper-design/shaders';\n\nexport type VoronoiParams = {\n scale?: number;\n colorCell1?: string;\n colorCell2?: string;\n colorCell3?: string;\n colorMid?: string;\n colorGradient?: number;\n distance?: number;\n edgesSize?: number;\n edgesSoftness?: number;\n middleSize?: number;\n middleSoftness?: number;\n} & GlobalParams;\n\nexport type VoronoiProps = Omit<ShaderMountProps, 'fragmentShader'> & VoronoiParams;\n\ntype VoronoiPreset = { name: string; params: Required<VoronoiParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: VoronoiPreset = {\n name: 'Default',\n params: {\n scale: 1.5,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(15, 80%, 50%, 1)',\n colorCell2: 'hsla(180, 80%, 50%, 1)',\n colorCell3: 'hsla(200, 80%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0.5,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const classicPreset: VoronoiPreset = {\n name: 'Classic',\n params: {\n scale: 3,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 100%, 0%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.45,\n edgesSize: 0.02,\n edgesSoftness: 0.07,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const giraffePreset: VoronoiPreset = {\n name: 'Giraffe',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(32, 100%, 18%, 1)',\n colorCell2: 'hsla(42, 93%, 35%, 1)',\n colorCell3: 'hsla(32, 100%, 18%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.2,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const eyesPreset: VoronoiPreset = {\n name: 'Eyes',\n params: {\n scale: 1.6,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(79, 84%, 60%, 1)',\n colorCell2: 'hsla(207, 53%, 41%, 1)',\n colorCell3: 'hsla(207, 80%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.62,\n edgesSoftness: 0.01,\n middleSize: 0.1,\n middleSoftness: 0,\n },\n};\n\nexport const bubblesPreset: VoronoiPreset = {\n name: 'Bubbles',\n params: {\n scale: 2,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 50%, 1)',\n colorCell2: 'hsla(169, 100%, 66%, 1)',\n colorCell3: 'hsla(50, 100%, 66%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.5,\n edgesSize: 0.81,\n edgesSoftness: 0.0,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const cellsPreset: VoronoiPreset = {\n name: 'Cells',\n params: {\n scale: 2,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(0, 0%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 0%, 100%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.38,\n edgesSize: 0.1,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const glowPreset: VoronoiPreset = {\n name: 'Glow',\n params: {\n scale: 1.2,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(40, 100%, 50%, 1)',\n colorCell2: 'hsla(311, 100%, 59%, 1)',\n colorCell3: 'hsla(180, 100%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 100%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0.7,\n middleSoftness: 1,\n },\n};\n\nexport const tilesPreset: VoronoiPreset = {\n name: 'Tiles',\n params: {\n scale: 1.3,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(80, 50%, 50%, 1)',\n colorCell2: 'hsla(0, 50%, 100%, 1)',\n colorCell3: 'hsla(200, 50%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0,\n distance: 0.05,\n edgesSize: 0.25,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const voronoiPresets: VoronoiPreset[] = [\n defaultPreset,\n classicPreset,\n giraffePreset,\n eyesPreset,\n bubblesPreset,\n cellsPreset,\n glowPreset,\n tilesPreset,\n];\n\nexport const Voronoi = ({\n scale,\n colorCell1,\n colorCell2,\n colorCell3,\n colorMid,\n colorGradient,\n distance,\n edgesSize,\n edgesSoftness,\n middleSize,\n middleSoftness,\n ...props\n}: VoronoiProps): React.ReactElement => {\n const uniforms: VoronoiUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorCell1: getShaderColorFromString(colorCell1, defaultPreset.params.colorCell1),\n u_colorCell2: getShaderColorFromString(colorCell2, defaultPreset.params.colorCell2),\n u_colorCell3: getShaderColorFromString(colorCell3, defaultPreset.params.colorCell3),\n u_colorMid: getShaderColorFromString(colorMid, defaultPreset.params.colorMid),\n u_colorGradient: colorGradient ?? defaultPreset.params.colorGradient,\n u_distance: distance ?? defaultPreset.params.distance,\n u_edgesSize: edgesSize ?? defaultPreset.params.edgesSize,\n u_edgesSoftness: edgesSoftness ?? defaultPreset.params.edgesSoftness,\n u_middleSize: middleSize ?? defaultPreset.params.middleSize,\n u_middleSoftness: middleSoftness ?? defaultPreset.params.middleSoftness,\n };\n }, [\n scale,\n colorCell1,\n colorCell3,\n colorCell2,\n colorMid,\n colorGradient,\n distance,\n edgesSize,\n edgesSoftness,\n middleSize,\n middleSoftness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={voronoiFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n warpFragmentShader,\n type WarpUniforms,\n type PatternShape,\n PatternShapes,\n} from '@paper-design/shaders';\n\nexport type WarpParams = {\n scale?: number;\n rotation?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n proportion?: number;\n softness?: number;\n distortion?: number;\n swirl?: number;\n swirlIterations?: number;\n shapeScale?: number;\n shape?: PatternShape;\n} & GlobalParams;\n\nexport type WarpProps = Omit<ShaderMountProps, 'fragmentShader'> & WarpParams;\n\ntype WarpPreset = { name: string; params: Required<WarpParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WarpPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n speed: 0.1,\n frame: 0,\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(203, 80%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.35,\n softness: 1,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetCauldron: WarpPreset = {\n name: 'Cauldron Pot',\n params: {\n scale: 1.1,\n rotation: 1.62,\n speed: 1,\n frame: 0,\n color1: 'hsla(100, 51%, 75%, 1)',\n color2: 'hsla(220, 39%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.64,\n softness: 0.95,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetSilk: WarpPreset = {\n name: 'Silk',\n params: {\n scale: 0.26,\n rotation: 0,\n speed: 0.5,\n frame: 0,\n color1: 'hsla(0, 9%, 7%, 1)',\n color2: 'hsla(8, 13%, 34%, 1)',\n color3: 'hsla(5, 8%, 71%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.3,\n swirl: 0.6,\n swirlIterations: 11,\n shapeScale: 0.05,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetPassion: WarpPreset = {\n name: 'Passion',\n params: {\n scale: 0.25,\n rotation: 1.35,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(0, 44.7%, 14.9%, 1)',\n color2: 'hsla(353.4, 34%, 42.2%, 1)',\n color3: 'hsla(29, 100%, 76.1%, 1)',\n proportion: 0.5,\n softness: 1,\n distortion: 0.09,\n swirl: 0.9,\n swirlIterations: 6,\n shapeScale: 0.25,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetPhantom: WarpPreset = {\n name: 'Phantom',\n params: {\n scale: 0.68,\n rotation: 1.8,\n speed: 1.25,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.45,\n softness: 1,\n distortion: 0.16,\n swirl: 0.3,\n swirlIterations: 7,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetAbyss: WarpPreset = {\n name: 'The Abyss',\n params: {\n scale: 0.1,\n rotation: 2,\n speed: 0.06,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.09,\n swirl: 0.48,\n swirlIterations: 4,\n shapeScale: 0.1,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetInk: WarpPreset = {\n name: 'Live Ink',\n params: {\n scale: 0.7,\n rotation: 1.5,\n speed: 0.25,\n frame: 0,\n color1: 'hsla(210, 11.1%, 7.1%, 1)',\n color2: 'hsla(165, 9%, 65.1%, 1)',\n color3: 'hsla(84, 100%, 97.1%, 1)',\n proportion: 0.35,\n softness: 0,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.26,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetIceberg: WarpPreset = {\n name: 'Iceberg',\n params: {\n scale: 1.1,\n rotation: 2,\n speed: 0.05,\n frame: 0,\n color1: 'hsla(0, 0%, 100%, 1)',\n color2: 'hsla(220, 38.7%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.3,\n softness: 1,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetNectar: WarpPreset = {\n name: 'Nectar',\n params: {\n scale: 0.24,\n rotation: 0,\n speed: 0.42,\n frame: 0,\n color1: 'hsla(37.5, 22.2%, 7.1%, 1)',\n color2: 'hsla(38.5, 59.1%, 63.1%, 1)',\n color3: 'hsla(37.6, 30%, 95.2%, 1)',\n proportion: 0.24,\n softness: 1,\n distortion: 0.21,\n swirl: 0.57,\n swirlIterations: 10,\n shapeScale: 0.32,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetFilteredLight: WarpPreset = {\n name: 'Filtered Light',\n params: {\n scale: 2,\n rotation: 0.44,\n speed: 0.32,\n frame: 0,\n color1: 'hsla(60.2, 7.8%, 8.3%, 1)',\n color2: 'hsla(64.4, 27.8%, 81%, 1)',\n color3: 'hsla(60, 100%, 93.9%, 1)',\n proportion: 0.25,\n softness: 1,\n distortion: 0.06,\n swirl: 0,\n swirlIterations: 0,\n shapeScale: 0,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetKelp: WarpPreset = {\n name: 'Kelp',\n params: {\n scale: 0.38,\n rotation: 0.6,\n speed: 2,\n frame: 0,\n color1: 'hsla(79.3, 100%, 78%, 1)',\n color2: 'hsla(112, 10.5%, 28%, 1)',\n color3: 'hsla(203.3, 50%, 7.1%, 1)',\n proportion: 1,\n softness: 0,\n distortion: 0,\n swirl: 0.15,\n swirlIterations: 0,\n shapeScale: 0.74,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const warpPresets: WarpPreset[] = [\n defaultPreset,\n presetAbyss,\n presetCauldron,\n presetFilteredLight,\n presetIceberg,\n presetInk,\n presetKelp,\n presetNectar,\n presetPassion,\n presetPhantom,\n presetSilk,\n];\n\nexport const Warp = ({\n scale,\n rotation,\n color1,\n color2,\n color3,\n proportion,\n softness,\n distortion,\n swirl,\n swirlIterations,\n shapeScale,\n shape,\n ...props\n}: WarpProps): React.ReactElement => {\n const uniforms: WarpUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_rotation: rotation ?? defaultPreset.params.rotation,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color2),\n u_proportion: proportion ?? defaultPreset.params.proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_distortion: distortion ?? defaultPreset.params.distortion,\n u_swirl: swirl ?? defaultPreset.params.swirl,\n u_swirlIterations: swirlIterations ?? defaultPreset.params.swirlIterations,\n u_shapeScale: shapeScale ?? defaultPreset.params.shapeScale,\n u_shape: shape ?? defaultPreset.params.shape,\n };\n }, [\n scale,\n rotation,\n color1,\n color2,\n color3,\n proportion,\n softness,\n distortion,\n swirl,\n swirlIterations,\n shapeScale,\n shape,\n ]);\n\n return <ShaderMount {...props} fragmentShader={warpFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, godRaysFragmentShader, type GodRaysUniforms } from '@paper-design/shaders';\n\nexport type GodRaysParams = {\n colorBack?: string;\n color1?: string;\n color2?: string;\n color3?: string;\n offsetX?: number;\n offsetY?: number;\n frequency?: number;\n spotty?: number;\n midIntensity?: number;\n midSize?: number;\n density?: number;\n blending?: number;\n} & GlobalParams;\n\nexport type GodRaysProps = Omit<ShaderMountProps, 'fragmentShader'> & GodRaysParams;\n\ntype GodRaysPreset = { name: string; params: Required<GodRaysParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: GodRaysPreset = {\n name: 'Default',\n params: {\n colorBack: 'hsla(215, 100%, 11%, 1)',\n color1: 'hsla(45, 100%, 70%, 1)',\n color2: 'hsla(10, 100%, 80%, 1)',\n color3: 'hsla(178, 100%, 83%, 1)',\n offsetX: -0.6,\n offsetY: -0.6,\n frequency: 6,\n spotty: 0.28,\n midIntensity: 0.97,\n midSize: 2,\n density: 0.3,\n blending: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const auroraPreset: GodRaysPreset = {\n name: 'Aurora',\n params: {\n colorBack: 'hsla(0, 0%, 25%, 1)',\n color1: 'hsla(239, 100%, 70%, 1)',\n color2: 'hsla(150, 100%, 70%, 1)',\n color3: 'hsla(200, 100%, 70%, 1)',\n offsetX: 0,\n offsetY: 1,\n frequency: 2.4,\n spotty: 0.9,\n midIntensity: 0.8,\n midSize: 2.1,\n density: 0.5,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n};\n\nexport const warpPreset: GodRaysPreset = {\n name: 'Warp',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsla(317, 100%, 50%, 1)',\n color2: 'hsla(25, 100%, 50%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n offsetX: 0,\n offsetY: 0,\n frequency: 1.2,\n spotty: 0.15,\n midIntensity: 0,\n midSize: 0,\n density: 0.79,\n blending: 0.4,\n speed: 2,\n frame: 0,\n },\n};\n\nexport const linearPreset: GodRaysPreset = {\n name: 'Linear',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsl(0 0% 100% / 12%)',\n color2: 'hsl(0 0% 100% / 24%)',\n color3: 'hsl(0 0% 100% / 16%)',\n offsetX: 0.2,\n offsetY: -0.7,\n frequency: 1.2,\n spotty: 0.25,\n midSize: 1.1,\n midIntensity: 0.75,\n density: 0.79,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n};\n\nexport const etherPreset: GodRaysPreset = {\n name: 'Ether',\n params: {\n colorBack: 'hsl(226.7 50% 7.1% / 100%)',\n color1: 'hsl(215 100% 53.9% / 65.1%)',\n color2: 'hsl(214.4 85.9% 86.1% / 74.9%)',\n color3: 'hsl(225 31.4% 20% / 100%)',\n offsetX: -0.6,\n offsetY: 0,\n frequency: 0.3,\n spotty: 0.77,\n midSize: 1.1,\n midIntensity: 0.5,\n density: 0.6,\n blending: 0.6,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const godRaysPresets: GodRaysPreset[] = [defaultPreset, auroraPreset, warpPreset, linearPreset, etherPreset];\n\nexport const GodRays = ({\n colorBack,\n color1,\n color2,\n color3,\n offsetX,\n offsetY,\n frequency,\n spotty,\n midIntensity,\n midSize,\n density,\n blending,\n ...props\n}: GodRaysProps): React.ReactElement => {\n const uniforms: GodRaysUniforms = useMemo(() => {\n return {\n u_colorBack: getShaderColorFromString(colorBack, defaultPreset.params.colorBack),\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_offsetX: offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: offsetY ?? defaultPreset.params.offsetY,\n u_frequency: frequency ?? defaultPreset.params.frequency,\n u_spotty: spotty ?? defaultPreset.params.spotty,\n u_midIntensity: midIntensity ?? defaultPreset.params.midIntensity,\n u_midSize: midSize ?? defaultPreset.params.midSize,\n u_density: density ?? defaultPreset.params.density,\n u_blending: blending ?? defaultPreset.params.blending,\n };\n }, [\n colorBack,\n color1,\n color2,\n color3,\n offsetX,\n offsetY,\n frequency,\n spotty,\n midIntensity,\n midSize,\n density,\n blending,\n ]);\n\n return <ShaderMount {...props} fragmentShader={godRaysFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, spiralFragmentShader, type SpiralUniforms } from '@paper-design/shaders';\n\nexport type SpiralParams = {\n color1?: string;\n color2?: string;\n scale?: number;\n offsetX?: number;\n offsetY?: number;\n spiralDensity?: number;\n spiralDistortion?: number;\n strokeWidth?: number;\n strokeTaper?: number;\n strokeCap?: number;\n noiseFreq?: number;\n noisePower?: number;\n softness?: number;\n} & GlobalParams;\n\nexport type SpiralProps = Omit<ShaderMountProps, 'fragmentShader'> & SpiralParams;\n\ntype SpiralPreset = { name: string; params: Required<SpiralParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: SpiralPreset = {\n name: 'Default',\n params: {\n color1: 'hsla(0, 0%, 98%, 1)',\n color2: 'hsla(0, 0%, 50%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.01,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const noisyPreset: SpiralPreset = {\n name: 'Noisy',\n params: {\n color1: 'hsla(87, 77%, 53%, 1)',\n color2: 'hsla(109, 70%, 31%, 1)',\n scale: 1.3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.5,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0.5,\n noiseFreq: 0.1,\n noisePower: 1,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const dropletPreset: SpiralPreset = {\n name: 'Droplet',\n params: {\n color1: 'hsla(320, 50%, 50%, 1)',\n color2: 'hsla(190, 50%, 95%, 1)',\n scale: 0.65,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.05,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const sandPreset: SpiralPreset = {\n name: 'Sand',\n params: {\n color1: 'hsla(45, 25%, 50%, 1)',\n color2: 'hsla(0, 0%, 87%, 1)',\n scale: 3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.15,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 30,\n noisePower: 1,\n softness: 0.2,\n speed: 0,\n frame: 0,\n },\n};\n\nexport const swirlPreset: SpiralPreset = {\n name: 'Swirl',\n params: {\n color1: 'hsla(160, 50%, 80%, 1)',\n color2: 'hsla(220, 50%, 20%, 1)',\n scale: 4,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.8,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.5,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const hookPreset: SpiralPreset = {\n name: 'Hook',\n params: {\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(200, 50%, 70%, 1)',\n scale: 0.8,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0.5,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.02,\n speed: 3,\n frame: 0,\n },\n};\n\nexport const vinylPreset: SpiralPreset = {\n name: 'Vinyl',\n params: {\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(320, 5%, 75%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0.3,\n strokeWidth: 0.95,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.11,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const spiralPresets: SpiralPreset[] = [\n defaultPreset,\n noisyPreset,\n dropletPreset,\n swirlPreset,\n sandPreset,\n hookPreset,\n vinylPreset,\n];\n\nexport const Spiral = ({\n color1,\n color2,\n scale,\n offsetX,\n offsetY,\n spiralDensity,\n spiralDistortion,\n strokeWidth,\n strokeTaper,\n strokeCap,\n noiseFreq,\n noisePower,\n softness,\n ...props\n}: SpiralProps): React.ReactElement => {\n const uniforms: SpiralUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_scale: scale ?? defaultPreset.params.scale,\n u_offsetX: offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: offsetY ?? defaultPreset.params.offsetY,\n u_spiralDensity: spiralDensity ?? defaultPreset.params.spiralDensity,\n u_spiralDistortion: spiralDistortion ?? defaultPreset.params.spiralDistortion,\n u_strokeWidth: strokeWidth ?? defaultPreset.params.strokeWidth,\n u_strokeTaper: strokeTaper ?? defaultPreset.params.strokeTaper,\n u_strokeCap: strokeCap ?? defaultPreset.params.strokeCap,\n u_noiseFreq: noiseFreq ?? defaultPreset.params.noiseFreq,\n u_noisePower: noisePower ?? defaultPreset.params.noisePower,\n u_softness: softness ?? defaultPreset.params.softness,\n };\n }, [\n color1,\n color2,\n scale,\n offsetX,\n offsetY,\n spiralDensity,\n spiralDistortion,\n strokeWidth,\n strokeTaper,\n strokeCap,\n noiseFreq,\n noisePower,\n softness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={spiralFragmentShader} uniforms={uniforms} />;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useEffect", "useRef", "forwardRef", "ShaderMountVanilla", "React", "useMergeRefs", "refs", "cleanupRef", "refEffect", "instance", "cleanups", "ref", "refCallback", "refCleanup", "value", "jsx", "processUniforms", "uniforms", "processedUniforms", "imageLoadPromises", "isValidUrl", "url", "isExternalUrl", "key", "value", "imagePromise", "resolve", "reject", "img", "ShaderMount", "forwardRef", "externalShaderMountRef", "fragmentShader", "webGlContextAttributes", "speed", "frame", "canvasProps", "forwardedRef", "canvasRef", "useRef", "shaderMountRef", "useEffect", "ShaderMountVanilla", "useMergeRefs", "useMemo", "getShaderColorFromString", "grainCloudsFragmentShader", "jsx", "defaultPreset", "skyPreset", "grainCloudsPresets", "GrainClouds", "scale", "color1", "color2", "grainAmount", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "meshGradientFragmentShader", "jsx", "defaultPreset", "beachPreset", "fadedPreset", "meshGradientPresets", "MeshGradient", "color1", "color2", "color3", "color4", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "smokeRingFragmentShader", "jsx", "defaultPreset", "cloudPreset", "firePreset", "electricPreset", "poisonPreset", "smokeRingPresets", "SmokeRing", "scale", "colorInner", "colorOuter", "noiseScale", "thickness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "neuroNoiseFragmentShader", "jsx", "defaultPreset", "marblePreset", "neuroNoisePresets", "NeuroNoise", "scale", "colorFront", "colorBack", "brightness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "dotOrbitFragmentShader", "jsx", "defaultPreset", "dotOrbitPresets", "DotOrbit", "scale", "color1", "color2", "color3", "color4", "dotSize", "dotSizeRange", "spreading", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "dotGridFragmentShader", "getShaderColorFromString", "DotGridShapes", "jsx", "defaultPreset", "macrodataPreset", "trianglesPreset", "bubblesPreset", "treeLinePreset", "diamondsPreset", "wallpaperPreset", "matrixPreset", "waveformPreset", "dotGridPresets", "DotGrid", "colorFill", "colorStroke", "dotSize", "gridSpacingX", "gridSpacingY", "strokeWidth", "sizeRange", "opacityRange", "shape", "props", "uniforms", "useMemo", "ShaderMount", "DotGridShapes", "useMemo", "getShaderColorFromString", "steppedSimplexNoiseFragmentShader", "jsx", "defaultPreset", "magmaPreset", "bloodCellPreset", "firstContactPreset", "steppedSimplexNoisePresets", "SteppedSimplexNoise", "scale", "color1", "color2", "color3", "color4", "color5", "stepsNumber", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "metaballsFragmentShader", "jsx", "defaultPreset", "metaballsPresets", "Metaballs", "scale", "color1", "color2", "color3", "ballSize", "visibilityRange", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "wavesFragmentShader", "jsx", "defaultPreset", "spikesPreset", "groovyPreset", "tangledUpPreset", "zigZagPreset", "waveRidePreset", "wavesPresets", "Waves", "scale", "rotation", "color", "shape", "frequency", "amplitude", "spacing", "dutyCycle", "softness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "perlinNoiseFragmentShader", "jsx", "defaultPreset", "nintendoWaterPreset", "colonyPreset", "phosphenesPreset", "mossPreset", "wormsPreset", "perlinNoisePresets", "PerlinNoise", "scale", "color", "proportion", "softness", "octaveCount", "persistence", "lacunarity", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "voronoiFragmentShader", "jsx", "defaultPreset", "classicPreset", "giraffePreset", "eyesPreset", "bubblesPreset", "cellsPreset", "glowPreset", "tilesPreset", "voronoiPresets", "Voronoi", "scale", "colorCell1", "colorCell2", "colorCell3", "colorMid", "colorGradient", "distance", "edgesSize", "edgesSoftness", "middleSize", "middleSoftness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "warpFragmentShader", "PatternShapes", "jsx", "defaultPreset", "presetCauldron", "presetSilk", "presetPassion", "presetPhantom", "presetAbyss", "presetInk", "presetIceberg", "presetNectar", "presetFilteredLight", "presetKelp", "warpPresets", "Warp", "scale", "rotation", "color1", "color2", "color3", "proportion", "softness", "distortion", "swirl", "swirlIterations", "shapeScale", "shape", "props", "uniforms", "useMemo", "ShaderMount", "PatternShapes", "useMemo", "getShaderColorFromString", "godRaysFragmentShader", "jsx", "defaultPreset", "auroraPreset", "warpPreset", "linearPreset", "etherPreset", "godRaysPresets", "GodRays", "colorBack", "color1", "color2", "color3", "offsetX", "offsetY", "frequency", "spotty", "midIntensity", "midSize", "density", "blending", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "spiralFragmentShader", "jsx", "defaultPreset", "noisyPreset", "dropletPreset", "sandPreset", "swirlPreset", "hookPreset", "vinylPreset", "spiralPresets", "Spiral", "color1", "color2", "scale", "offsetX", "offsetY", "spiralDensity", "spiralDistortion", "strokeWidth", "strokeTaper", "strokeCap", "noiseFreq", "noisePower", "softness", "props", "uniforms", "useMemo", "ShaderMount", "getShaderColorFromString"]
|
|
7
7
|
}
|
package/dist/shader-mount.d.ts
CHANGED
|
@@ -4,11 +4,9 @@ import { ShaderMount as ShaderMountVanilla, type ShaderMountUniforms } from '@pa
|
|
|
4
4
|
export type ShaderMountUniformsReact = {
|
|
5
5
|
[key: string]: ShaderMountUniforms[keyof ShaderMountUniforms] | string;
|
|
6
6
|
};
|
|
7
|
-
export interface ShaderMountProps {
|
|
8
|
-
ref?: React.RefObject<HTMLCanvasElement>;
|
|
7
|
+
export interface ShaderMountProps extends React.ComponentProps<'canvas'> {
|
|
9
8
|
shaderMountRef?: React.MutableRefObject<ShaderMountVanilla | null>;
|
|
10
9
|
fragmentShader: string;
|
|
11
|
-
style?: React.CSSProperties;
|
|
12
10
|
uniforms?: ShaderMountUniformsReact;
|
|
13
11
|
webGlContextAttributes?: WebGLContextAttributes;
|
|
14
12
|
speed?: number;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type ShaderMountProps } from '../shader-mount';
|
|
2
2
|
import { type DotGridShape } from '@paper-design/shaders';
|
|
3
3
|
export type DotGridParams = {
|
|
4
|
-
colorBack?: string;
|
|
5
4
|
colorFill?: string;
|
|
6
5
|
colorStroke?: string;
|
|
7
6
|
dotSize?: number;
|
|
@@ -16,9 +15,10 @@ export type DotGridProps = Omit<ShaderMountProps, 'fragmentShader'> & DotGridPar
|
|
|
16
15
|
type DotGridPreset = {
|
|
17
16
|
name: string;
|
|
18
17
|
params: Required<DotGridParams>;
|
|
18
|
+
style?: React.CSSProperties;
|
|
19
19
|
};
|
|
20
20
|
export declare const defaultPreset: DotGridPreset;
|
|
21
21
|
export declare const macrodataPreset: DotGridPreset;
|
|
22
22
|
export declare const dotGridPresets: DotGridPreset[];
|
|
23
|
-
export declare const DotGrid: (props: DotGridProps) =>
|
|
23
|
+
export declare const DotGrid: ({ colorFill, colorStroke, dotSize, gridSpacingX, gridSpacingY, strokeWidth, sizeRange, opacityRange, shape, ...props }: DotGridProps) => React.ReactElement;
|
|
24
24
|
export {};
|
|
@@ -13,8 +13,9 @@ export type DotOrbitProps = Omit<ShaderMountProps, 'fragmentShader'> & DotOrbitP
|
|
|
13
13
|
type DotOrbitPreset = {
|
|
14
14
|
name: string;
|
|
15
15
|
params: Required<DotOrbitParams>;
|
|
16
|
+
style?: React.CSSProperties;
|
|
16
17
|
};
|
|
17
18
|
export declare const defaultPreset: DotOrbitPreset;
|
|
18
19
|
export declare const dotOrbitPresets: DotOrbitPreset[];
|
|
19
|
-
export declare const DotOrbit: (props: DotOrbitProps) =>
|
|
20
|
+
export declare const DotOrbit: ({ scale, color1, color2, color3, color4, dotSize, dotSizeRange, spreading, ...props }: DotOrbitProps) => React.ReactElement;
|
|
20
21
|
export {};
|
|
@@ -17,6 +17,7 @@ export type GodRaysProps = Omit<ShaderMountProps, 'fragmentShader'> & GodRaysPar
|
|
|
17
17
|
type GodRaysPreset = {
|
|
18
18
|
name: string;
|
|
19
19
|
params: Required<GodRaysParams>;
|
|
20
|
+
style?: React.CSSProperties;
|
|
20
21
|
};
|
|
21
22
|
export declare const defaultPreset: GodRaysPreset;
|
|
22
23
|
export declare const auroraPreset: GodRaysPreset;
|
|
@@ -24,5 +25,5 @@ export declare const warpPreset: GodRaysPreset;
|
|
|
24
25
|
export declare const linearPreset: GodRaysPreset;
|
|
25
26
|
export declare const etherPreset: GodRaysPreset;
|
|
26
27
|
export declare const godRaysPresets: GodRaysPreset[];
|
|
27
|
-
export declare const GodRays: (props: GodRaysProps) =>
|
|
28
|
+
export declare const GodRays: ({ colorBack, color1, color2, color3, offsetX, offsetY, frequency, spotty, midIntensity, midSize, density, blending, ...props }: GodRaysProps) => React.ReactElement;
|
|
28
29
|
export {};
|
|
@@ -9,9 +9,10 @@ export type GrainCloudsProps = Omit<ShaderMountProps, 'fragmentShader'> & GrainC
|
|
|
9
9
|
type GrainCloudsPreset = {
|
|
10
10
|
name: string;
|
|
11
11
|
params: Required<GrainCloudsParams>;
|
|
12
|
+
style?: React.CSSProperties;
|
|
12
13
|
};
|
|
13
14
|
export declare const defaultPreset: GrainCloudsPreset;
|
|
14
15
|
export declare const skyPreset: GrainCloudsPreset;
|
|
15
16
|
export declare const grainCloudsPresets: GrainCloudsPreset[];
|
|
16
|
-
export declare const GrainClouds: (props: GrainCloudsProps) =>
|
|
17
|
+
export declare const GrainClouds: ({ scale, color1, color2, grainAmount, ...props }: GrainCloudsProps) => React.ReactElement;
|
|
17
18
|
export {};
|
|
@@ -9,10 +9,11 @@ export type MeshGradientProps = Omit<ShaderMountProps, 'fragmentShader'> & MeshG
|
|
|
9
9
|
type MeshGradientPreset = {
|
|
10
10
|
name: string;
|
|
11
11
|
params: Required<MeshGradientParams>;
|
|
12
|
+
style?: React.CSSProperties;
|
|
12
13
|
};
|
|
13
14
|
export declare const defaultPreset: MeshGradientPreset;
|
|
14
15
|
export declare const beachPreset: MeshGradientPreset;
|
|
15
16
|
export declare const fadedPreset: MeshGradientPreset;
|
|
16
17
|
export declare const meshGradientPresets: MeshGradientPreset[];
|
|
17
|
-
export declare const MeshGradient: (props: MeshGradientProps) =>
|
|
18
|
+
export declare const MeshGradient: ({ color1, color2, color3, color4, ...props }: MeshGradientProps) => React.ReactElement;
|
|
18
19
|
export {};
|
|
@@ -11,8 +11,9 @@ export type MetaballsProps = Omit<ShaderMountProps, 'fragmentShader'> & Metaball
|
|
|
11
11
|
type MetaballsPreset = {
|
|
12
12
|
name: string;
|
|
13
13
|
params: Required<MetaballsParams>;
|
|
14
|
+
style?: React.CSSProperties;
|
|
14
15
|
};
|
|
15
16
|
export declare const defaultPreset: MetaballsPreset;
|
|
16
17
|
export declare const metaballsPresets: MetaballsPreset[];
|
|
17
|
-
export declare const Metaballs: (props: MetaballsProps) =>
|
|
18
|
+
export declare const Metaballs: ({ scale, color1, color2, color3, ballSize, visibilityRange, ...props }: MetaballsProps) => React.ReactElement;
|
|
18
19
|
export {};
|
|
@@ -9,8 +9,9 @@ export type NeuroNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & NeuroNo
|
|
|
9
9
|
type NeuroNoisePreset = {
|
|
10
10
|
name: string;
|
|
11
11
|
params: Required<NeuroNoiseParams>;
|
|
12
|
+
style?: React.CSSProperties;
|
|
12
13
|
};
|
|
13
14
|
export declare const defaultPreset: NeuroNoisePreset;
|
|
14
15
|
export declare const neuroNoisePresets: NeuroNoisePreset[];
|
|
15
|
-
export declare const NeuroNoise: (props: NeuroNoiseProps) =>
|
|
16
|
+
export declare const NeuroNoise: ({ scale, colorFront, colorBack, brightness, ...props }: NeuroNoiseProps) => React.ReactElement;
|
|
16
17
|
export {};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { type GlobalParams, type ShaderMountProps } from '../shader-mount';
|
|
2
2
|
export type PerlinNoiseParams = {
|
|
3
3
|
scale?: number;
|
|
4
|
-
|
|
5
|
-
color2?: string;
|
|
4
|
+
color?: string;
|
|
6
5
|
proportion?: number;
|
|
7
6
|
softness?: number;
|
|
8
7
|
octaveCount?: number;
|
|
@@ -13,6 +12,7 @@ export type PerlinNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & Perlin
|
|
|
13
12
|
type PerlinNoisePreset = {
|
|
14
13
|
name: string;
|
|
15
14
|
params: Required<PerlinNoiseParams>;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
16
|
};
|
|
17
17
|
export declare const defaultPreset: PerlinNoisePreset;
|
|
18
18
|
export declare const nintendoWaterPreset: PerlinNoisePreset;
|
|
@@ -21,5 +21,5 @@ export declare const phosphenesPreset: PerlinNoisePreset;
|
|
|
21
21
|
export declare const mossPreset: PerlinNoisePreset;
|
|
22
22
|
export declare const wormsPreset: PerlinNoisePreset;
|
|
23
23
|
export declare const perlinNoisePresets: PerlinNoisePreset[];
|
|
24
|
-
export declare const PerlinNoise: (props: PerlinNoiseProps) =>
|
|
24
|
+
export declare const PerlinNoise: ({ scale, color, proportion, softness, octaveCount, persistence, lacunarity, ...props }: PerlinNoiseProps) => React.ReactElement;
|
|
25
25
|
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type GlobalParams, type ShaderMountProps } from '../shader-mount';
|
|
2
2
|
export type SmokeRingParams = {
|
|
3
|
-
colorBack?: string;
|
|
4
3
|
colorInner?: string;
|
|
5
4
|
colorOuter?: string;
|
|
6
5
|
scale?: number;
|
|
@@ -11,6 +10,7 @@ export type SmokeRingProps = Omit<ShaderMountProps, 'fragmentShader'> & SmokeRin
|
|
|
11
10
|
type SmokeRingPreset = {
|
|
12
11
|
name: string;
|
|
13
12
|
params: Required<SmokeRingParams>;
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
14
|
};
|
|
15
15
|
export declare const defaultPreset: SmokeRingPreset;
|
|
16
16
|
export declare const cloudPreset: SmokeRingPreset;
|
|
@@ -18,5 +18,5 @@ export declare const firePreset: SmokeRingPreset;
|
|
|
18
18
|
export declare const electricPreset: SmokeRingPreset;
|
|
19
19
|
export declare const poisonPreset: SmokeRingPreset;
|
|
20
20
|
export declare const smokeRingPresets: SmokeRingPreset[];
|
|
21
|
-
export declare const SmokeRing: (props: SmokeRingProps) =>
|
|
21
|
+
export declare const SmokeRing: ({ scale, colorInner, colorOuter, noiseScale, thickness, ...props }: SmokeRingProps) => React.ReactElement;
|
|
22
22
|
export {};
|
package/dist/shaders/spiral.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export type SpiralProps = Omit<ShaderMountProps, 'fragmentShader'> & SpiralParam
|
|
|
18
18
|
type SpiralPreset = {
|
|
19
19
|
name: string;
|
|
20
20
|
params: Required<SpiralParams>;
|
|
21
|
+
style?: React.CSSProperties;
|
|
21
22
|
};
|
|
22
23
|
export declare const defaultPreset: SpiralPreset;
|
|
23
24
|
export declare const noisyPreset: SpiralPreset;
|
|
@@ -27,5 +28,5 @@ export declare const swirlPreset: SpiralPreset;
|
|
|
27
28
|
export declare const hookPreset: SpiralPreset;
|
|
28
29
|
export declare const vinylPreset: SpiralPreset;
|
|
29
30
|
export declare const spiralPresets: SpiralPreset[];
|
|
30
|
-
export declare const Spiral: (props: SpiralProps) =>
|
|
31
|
+
export declare const Spiral: ({ color1, color2, scale, offsetX, offsetY, spiralDensity, spiralDistortion, strokeWidth, strokeTaper, strokeCap, noiseFreq, noisePower, softness, ...props }: SpiralProps) => React.ReactElement;
|
|
31
32
|
export {};
|
|
@@ -12,8 +12,9 @@ export type SteppedSimplexNoiseProps = Omit<ShaderMountProps, 'fragmentShader'>
|
|
|
12
12
|
type SteppedSimplexNoisePreset = {
|
|
13
13
|
name: string;
|
|
14
14
|
params: Required<SteppedSimplexNoiseParams>;
|
|
15
|
+
style?: React.CSSProperties;
|
|
15
16
|
};
|
|
16
17
|
export declare const defaultPreset: SteppedSimplexNoisePreset;
|
|
17
18
|
export declare const steppedSimplexNoisePresets: SteppedSimplexNoisePreset[];
|
|
18
|
-
export declare const SteppedSimplexNoise: (props: SteppedSimplexNoiseProps) =>
|
|
19
|
+
export declare const SteppedSimplexNoise: ({ scale, color1, color2, color3, color4, color5, stepsNumber, ...props }: SteppedSimplexNoiseProps) => React.ReactElement;
|
|
19
20
|
export {};
|
|
@@ -5,7 +5,6 @@ export type VoronoiParams = {
|
|
|
5
5
|
colorCell2?: string;
|
|
6
6
|
colorCell3?: string;
|
|
7
7
|
colorMid?: string;
|
|
8
|
-
colorEdges?: string;
|
|
9
8
|
colorGradient?: number;
|
|
10
9
|
distance?: number;
|
|
11
10
|
edgesSize?: number;
|
|
@@ -17,6 +16,7 @@ export type VoronoiProps = Omit<ShaderMountProps, 'fragmentShader'> & VoronoiPar
|
|
|
17
16
|
type VoronoiPreset = {
|
|
18
17
|
name: string;
|
|
19
18
|
params: Required<VoronoiParams>;
|
|
19
|
+
style?: React.CSSProperties;
|
|
20
20
|
};
|
|
21
21
|
export declare const defaultPreset: VoronoiPreset;
|
|
22
22
|
export declare const classicPreset: VoronoiPreset;
|
|
@@ -27,5 +27,5 @@ export declare const cellsPreset: VoronoiPreset;
|
|
|
27
27
|
export declare const glowPreset: VoronoiPreset;
|
|
28
28
|
export declare const tilesPreset: VoronoiPreset;
|
|
29
29
|
export declare const voronoiPresets: VoronoiPreset[];
|
|
30
|
-
export declare const Voronoi: (props: VoronoiProps) =>
|
|
30
|
+
export declare const Voronoi: ({ scale, colorCell1, colorCell2, colorCell3, colorMid, colorGradient, distance, edgesSize, edgesSoftness, middleSize, middleSoftness, ...props }: VoronoiProps) => React.ReactElement;
|
|
31
31
|
export {};
|
package/dist/shaders/warp.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export type WarpProps = Omit<ShaderMountProps, 'fragmentShader'> & WarpParams;
|
|
|
18
18
|
type WarpPreset = {
|
|
19
19
|
name: string;
|
|
20
20
|
params: Required<WarpParams>;
|
|
21
|
+
style?: React.CSSProperties;
|
|
21
22
|
};
|
|
22
23
|
export declare const defaultPreset: WarpPreset;
|
|
23
24
|
export declare const presetCauldron: WarpPreset;
|
|
@@ -31,5 +32,5 @@ export declare const presetNectar: WarpPreset;
|
|
|
31
32
|
export declare const presetFilteredLight: WarpPreset;
|
|
32
33
|
export declare const presetKelp: WarpPreset;
|
|
33
34
|
export declare const warpPresets: WarpPreset[];
|
|
34
|
-
export declare const Warp: (props: WarpProps) =>
|
|
35
|
+
export declare const Warp: ({ scale, rotation, color1, color2, color3, proportion, softness, distortion, swirl, swirlIterations, shapeScale, shape, ...props }: WarpProps) => React.ReactElement;
|
|
35
36
|
export {};
|
package/dist/shaders/waves.d.ts
CHANGED
|
@@ -2,8 +2,7 @@ import { type ShaderMountProps } from '../shader-mount';
|
|
|
2
2
|
export type WavesParams = {
|
|
3
3
|
scale?: number;
|
|
4
4
|
rotation?: number;
|
|
5
|
-
|
|
6
|
-
color2?: string;
|
|
5
|
+
color?: string;
|
|
7
6
|
shape?: number;
|
|
8
7
|
frequency?: number;
|
|
9
8
|
amplitude?: number;
|
|
@@ -15,6 +14,7 @@ export type WavesProps = Omit<ShaderMountProps, 'fragmentShader'> & WavesParams;
|
|
|
15
14
|
type WavesPreset = {
|
|
16
15
|
name: string;
|
|
17
16
|
params: Required<WavesParams>;
|
|
17
|
+
style?: React.CSSProperties;
|
|
18
18
|
};
|
|
19
19
|
export declare const defaultPreset: WavesPreset;
|
|
20
20
|
export declare const spikesPreset: WavesPreset;
|
|
@@ -23,5 +23,5 @@ export declare const tangledUpPreset: WavesPreset;
|
|
|
23
23
|
export declare const zigZagPreset: WavesPreset;
|
|
24
24
|
export declare const waveRidePreset: WavesPreset;
|
|
25
25
|
export declare const wavesPresets: WavesPreset[];
|
|
26
|
-
export declare const Waves: (props: WavesProps) =>
|
|
26
|
+
export declare const Waves: ({ scale, rotation, color, shape, frequency, amplitude, spacing, dutyCycle, softness, ...props }: WavesProps) => React.ReactElement;
|
|
27
27
|
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Merges an array of refs into a single memoized callback ref or `null`.
|
|
4
|
+
* @see https://floating-ui.com/docs/react-utils#usemergerefs
|
|
5
|
+
*/
|
|
6
|
+
export declare function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.Ref<Instance>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paper-design/shaders-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.26",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"type-check": "tsc --project tsconfig.json"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@paper-design/shaders": "0.0.
|
|
26
|
+
"@paper-design/shaders": "0.0.23",
|
|
27
27
|
"react": ">=18"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@types/react": "^
|
|
30
|
+
"@types/react": "^19.0.12"
|
|
31
31
|
}
|
|
32
32
|
}
|