{"version":3,"file":"Strands_Background.CEFmjsOK.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/JF6STg3NIK6gBHezHTpo/2RyS9Ram4ZsUSPMTHqbl/Strands_Background.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const MAX_STRANDS=12;const MAX_COLORS=8;const VERT=`#version 300 es\nin vec2 position;\nvoid main() {\n  gl_Position = vec4(position, 0.0, 1.0);\n}\n`;const FRAG=`#version 300 es\nprecision highp float;\n\nuniform float uTime;\nuniform vec2 uResolution;\nuniform vec3 uColors[8];\nuniform int uColorCount;\nuniform int uStrandCount;\nuniform float uSpeed;\nuniform float uAmplitude;\nuniform float uWaviness;\nuniform float uThickness;\nuniform float uGlow;\nuniform float uTaper;\nuniform float uSpread;\nuniform float uHueShift;\nuniform float uIntensity;\nuniform float uOpacity;\nuniform float uScale;\nuniform float uSaturation;\n\nout vec4 fragColor;\n\nconst float PI = 3.14159265;\n\nvec3 spectrum(float t) {\n  return 0.5 + 0.5 * cos(2.0 * PI * (t + vec3(0.00, 0.33, 0.67)));\n}\n\nvec3 samplePalette(float t) {\n  t = fract(t);\n  float scaled = t * float(uColorCount);\n  int idx = int(floor(scaled));\n  float blend = fract(scaled);\n  int nextIdx = idx + 1;\n  if (nextIdx >= uColorCount) nextIdx = 0;\n  return mix(uColors[idx], uColors[nextIdx], blend);\n}\n\nvec3 strandColor(float t) {\n  if (uColorCount > 0) return samplePalette(t);\n  return spectrum(t);\n}\n\nvoid main() {\n  vec2 uv = (gl_FragCoord.xy - 0.5 * uResolution) / uResolution.y;\n  uv /= max(uScale, 0.0001);\n\n  float e = 0.06 + uIntensity * 0.94;\n  float env = pow(max(cos(uv.x * PI * 1.3), 0.0), uTaper);\n\n  vec3 col = vec3(0.0);\n\n  for (int i = 0; i < 12; i++) {\n    if (i >= uStrandCount) break;\n\n    float fi = float(i);\n    float ph = fi * 1.7 * uSpread;\n    float freq = (2.0 + fi * 0.35) * uWaviness;\n    float spd = 1.4 + fi * 1.2;\n\n    float tt = uTime * uSpeed;\n    float w = sin(uv.x * freq + tt * spd + ph) * 0.60\n            + sin(uv.x * freq * 1.1 - tt * spd * 0.7 + ph * 1.7) * 0.40;\n\n    float amp = (0.1 + 0.02 * e) * env * uAmplitude;\n    float y = w * amp;\n\n    float d = abs(uv.y - y);\n    float thick = (0.001 + 0.05 * e) * (0.35 + env) * uThickness;\n    float g = thick / (d + thick * 0.45);\n    g = g * g;\n\n    float h = fi / float(uStrandCount) + uv.x * 0.30 + uTime * 0.04 + uHueShift;\n    col += strandColor(h) * g * env;\n  }\n\n  col *= 0.45 + 0.7 * e;\n  col = 1.0 - exp(-col * uGlow);\n\n  float gray = dot(col, vec3(0.2126, 0.7152, 0.0722));\n  col = max(mix(vec3(gray), col, uSaturation), 0.0);\n\n  float lum = max(max(col.r, col.g), col.b);\n  float alpha = clamp(lum, 0.0, 1.0) * uOpacity;\n\n  fragColor = vec4(col * uOpacity, alpha);\n}\n`;const GLASS_FRAG=`#version 300 es\nprecision highp float;\n\nuniform sampler2D uScene;\nuniform vec2 uResolution;\nuniform float uRadius;\nuniform float uRefraction;\nuniform float uDispersion;\n\nout vec4 fragColor;\n\nvec2 toUv(vec2 p) {\n  return p * (uResolution.y / uResolution) + 0.5;\n}\n\nvoid main() {\n  vec2 p = (gl_FragCoord.xy - 0.5 * uResolution) / uResolution.y;\n  float d = length(p);\n  float r = uRadius;\n\n  float edge = fwidth(d) * 1.5;\n  float mask = 1.0 - smoothstep(r - edge, r + edge, d);\n  if (mask <= 0.0) {\n    fragColor = vec4(0.0);\n    return;\n  }\n\n  float z = sqrt(max(r * r - d * d, 0.0)) / r;\n  float nd = d / r;\n\n  vec2 dir = d > 0.0 ? p / d : vec2(0.0);\n  float lens = smoothstep(0.85, 1.0, nd) * pow(nd, 6.0);\n  vec2 offset = -dir * lens * uRefraction * 0.15;\n  vec2 disp = -dir * lens * uDispersion * 0.012;\n\n  vec3 light;\n  light.r = texture(uScene, toUv(p + offset - disp)).r;\n  light.g = texture(uScene, toUv(p + offset)).g;\n  light.b = texture(uScene, toUv(p + offset + disp)).b;\n\n  float fres = pow(1.0 - z, 3.0);\n  vec3 rim = vec3(1.0) * fres * 0.18;\n\n  vec2 lightDir = normalize(vec2(-0.55, 0.6));\n  float spec = pow(max(dot(p / max(r, 1e-4), lightDir), 0.0), 6.0);\n  spec *= smoothstep(r, r * 0.55, d);\n\n  vec3 emissive = light + rim + vec3(spec) * 0.4;\n  float emissiveA = clamp(max(max(emissive.r, emissive.g), emissive.b), 0.0, 1.0);\n\n  float bodyA = 0.05 + fres * 0.05;\n\n  float outA = emissiveA + bodyA * (1.0 - emissiveA);\n  vec3 outRGB = emissive;\n\n  outRGB *= mask;\n  outA *= mask;\n\n  fragColor = vec4(outRGB, outA);\n}\n`;const colorCache=new Map;let parseCtx=null;const parseColor=color=>{const cached=colorCache.get(color);if(cached)return cached;if(!parseCtx){const cv=document.createElement(\"canvas\");cv.width=1;cv.height=1;parseCtx=cv.getContext(\"2d\");}let rgb=[1,1,1];if(parseCtx){parseCtx.clearRect(0,0,1,1);parseCtx.fillStyle=\"#000\"// reset so an invalid color stays black, not stale\n;parseCtx.fillStyle=color;parseCtx.fillRect(0,0,1,1);const d=parseCtx.getImageData(0,0,1,1).data;rgb=[d[0]/255,d[1]/255,d[2]/255];}colorCache.set(color,rgb);return rgb;};const buildPalette=colors=>{const filled=colors&&colors.length?colors:[\"#ffffff\"];const out=new Float32Array(MAX_COLORS*3);for(let i=0;i<MAX_COLORS;i++){const col=filled[i]??filled[filled.length-1];const rgb=parseColor(col);out[i*3]=rgb[0];out[i*3+1]=rgb[1];out[i*3+2]=rgb[2];}return out;};const compile=(gl,type,src)=>{const s=gl.createShader(type);if(!s)return null;gl.shaderSource(s,src);gl.compileShader(s);if(!gl.getShaderParameter(s,gl.COMPILE_STATUS)){console.error(\"Strands shader:\",gl.getShaderInfoLog(s));gl.deleteShader(s);return null;}return s;};const createProgram=(gl,vsSrc,fsSrc)=>{const vs=compile(gl,gl.VERTEX_SHADER,vsSrc);const fs=compile(gl,gl.FRAGMENT_SHADER,fsSrc);if(!vs||!fs)return null;const program=gl.createProgram();if(!program)return null;gl.attachShader(program,vs);gl.attachShader(program,fs);gl.bindAttribLocation(program,0,\"position\");gl.linkProgram(program);gl.deleteShader(vs);gl.deleteShader(fs);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.error(\"Strands link:\",gl.getProgramInfoLog(program));gl.deleteProgram(program);return null;}return program;};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function Strands(props){const{colors=[\"#FF4242\",\"#7C3AED\",\"#06B6D4\",\"#EAB308\"],count=3,speed=.5,amplitude=1,waviness=1,thickness=.7,glow=2.6,taper=3,spread=1,hueShift=0,intensity=.6,saturation=1.5,opacity=1,scale=1.5,glass=false,refraction=1,dispersion=1,glassSize=1,style}=props;const propsRef=useRef({});propsRef.current={colors,count,speed,amplitude,waviness,thickness,glow,taper,spread,hueShift,intensity,saturation,opacity,scale,glass,refraction,dispersion,glassSize};const ctnDom=useRef(null);useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const ctn=ctnDom.current;if(!ctn)return;const showFallback=()=>{ctn.style.background=`linear-gradient(135deg, ${propsRef.current.colors.join(\", \")})`;};const canvas=document.createElement(\"canvas\");canvas.style.position=\"absolute\";canvas.style.inset=\"0\";canvas.style.display=\"block\";canvas.style.width=\"100%\";canvas.style.height=\"100%\";canvas.style.backgroundColor=\"transparent\";ctn.appendChild(canvas);const removeCanvas=()=>{if(canvas.parentNode===ctn)ctn.removeChild(canvas);};let gl=null;try{gl=canvas.getContext(\"webgl2\",{alpha:true,premultipliedAlpha:true,antialias:true});}catch{gl=null;}if(!gl){console.warn(\"Strands: WebGL2 unavailable — showing fallback gradient.\");showFallback();return removeCanvas;}const program=createProgram(gl,VERT,FRAG);const glassProgram=createProgram(gl,VERT,GLASS_FRAG);if(!program||!glassProgram){showFallback();return removeCanvas;}gl.clearColor(0,0,0,0);gl.enable(gl.BLEND);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);const vao=gl.createVertexArray();gl.bindVertexArray(vao);const buffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),gl.STATIC_DRAW);gl.enableVertexAttribArray(0);gl.vertexAttribPointer(0,2,gl.FLOAT,false,0,0);const loc=(p,name)=>gl.getUniformLocation(p,name);const u={time:loc(program,\"uTime\"),resolution:loc(program,\"uResolution\"),colors:loc(program,\"uColors[0]\"),colorCount:loc(program,\"uColorCount\"),strandCount:loc(program,\"uStrandCount\"),speed:loc(program,\"uSpeed\"),amplitude:loc(program,\"uAmplitude\"),waviness:loc(program,\"uWaviness\"),thickness:loc(program,\"uThickness\"),glow:loc(program,\"uGlow\"),taper:loc(program,\"uTaper\"),spread:loc(program,\"uSpread\"),hueShift:loc(program,\"uHueShift\"),intensity:loc(program,\"uIntensity\"),opacity:loc(program,\"uOpacity\"),scale:loc(program,\"uScale\"),saturation:loc(program,\"uSaturation\")};const gu={scene:loc(glassProgram,\"uScene\"),resolution:loc(glassProgram,\"uResolution\"),radius:loc(glassProgram,\"uRadius\"),refraction:loc(glassProgram,\"uRefraction\"),dispersion:loc(glassProgram,\"uDispersion\")};const sceneTex=gl.createTexture();const framebuffer=gl.createFramebuffer();const setupTexture=(w,h)=>{gl.bindTexture(gl.TEXTURE_2D,sceneTex);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,w,h,0,gl.RGBA,gl.UNSIGNED_BYTE,null);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);};setupTexture(1,1);gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,sceneTex,0);gl.bindFramebuffer(gl.FRAMEBUFFER,null);let bw=0;let bh=0;const applySize=()=>{const computed=window.getComputedStyle(ctn);if(computed.display===\"none\"||computed.visibility===\"hidden\"){bw=0;bh=0;return;}const rect=ctn.getBoundingClientRect();if(rect.width<=0||rect.height<=0){bw=0;bh=0;return;}const dpr=Math.min(window.devicePixelRatio||1,2);const w=Math.max(1,Math.floor(rect.width*dpr));const h=Math.max(1,Math.floor(rect.height*dpr));if(w===bw&&h===bh)return;bw=w;bh=h;canvas.width=w;canvas.height=h;setupTexture(w,h);};let ro=null;if(typeof ResizeObserver!==\"undefined\"){ro=new ResizeObserver(applySize);ro.observe(ctn);}else{window.addEventListener(\"resize\",applySize);}applySize();let raf=0;const onContextLost=e=>{e.preventDefault();if(raf)cancelAnimationFrame(raf);raf=0;};canvas.addEventListener(\"webglcontextlost\",onContextLost,false);const reducedMotionMedia=window.matchMedia?.(\"(prefers-reduced-motion: reduce)\");let reduced=reducedMotionMedia?.matches??false;const onReducedMotionChange=event=>{reduced=event.matches;queueFrame();};reducedMotionMedia?.addEventListener(\"change\",onReducedMotionChange);let isIntersecting=true;let isPageVisible=document.visibilityState!==\"hidden\";const isActive=()=>isIntersecting&&isPageVisible;const onVisibilityChange=()=>{isPageVisible=document.visibilityState!==\"hidden\";if(!isActive())stopLoop();queueFrame();};document.addEventListener(\"visibilitychange\",onVisibilityChange);let io=null;if(typeof IntersectionObserver!==\"undefined\"){io=new IntersectionObserver(entries=>{const entry=entries[0];isIntersecting=entry?.isIntersecting??true;if(!isActive())stopLoop();queueFrame();},{threshold:.01});io.observe(ctn);}let reducedTimer=0;const stopLoop=()=>{if(raf)cancelAnimationFrame(raf);raf=0;if(reducedTimer)window.clearTimeout(reducedTimer);reducedTimer=0;};const render=t=>{raf=0;if(!isActive())return;if(bw<=1||bh<=1){applySize();if(bw<=1||bh<=1)return;}const c=propsRef.current;const time=reduced?0:t*.001;gl.useProgram(program);gl.bindVertexArray(vao);gl.uniform1f(u.time,time);gl.uniform2f(u.resolution,bw,bh);gl.uniform3fv(u.colors,buildPalette(c.colors));gl.uniform1i(u.colorCount,Math.min(c.colors.length,MAX_COLORS));gl.uniform1i(u.strandCount,Math.min(Math.max(Math.round(c.count),1),MAX_STRANDS));gl.uniform1f(u.speed,c.speed);gl.uniform1f(u.amplitude,c.amplitude);gl.uniform1f(u.waviness,c.waviness);gl.uniform1f(u.thickness,c.thickness);gl.uniform1f(u.glow,c.glow);gl.uniform1f(u.taper,c.taper);gl.uniform1f(u.spread,c.spread);gl.uniform1f(u.hueShift,c.hueShift);gl.uniform1f(u.intensity,c.intensity);gl.uniform1f(u.opacity,c.opacity);gl.uniform1f(u.scale,c.scale);gl.uniform1f(u.saturation,c.saturation);if(c.glass){gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer);gl.viewport(0,0,bw,bh);gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES,0,3);gl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.viewport(0,0,bw,bh);gl.clear(gl.COLOR_BUFFER_BIT);gl.useProgram(glassProgram);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,sceneTex);gl.uniform1i(gu.scene,0);gl.uniform2f(gu.resolution,bw,bh);gl.uniform1f(gu.radius,.46*c.glassSize);gl.uniform1f(gu.refraction,c.refraction);gl.uniform1f(gu.dispersion,c.dispersion);gl.drawArrays(gl.TRIANGLES,0,3);}else{gl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.viewport(0,0,bw,bh);gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES,0,3);}if(!isActive())return;if(reduced){reducedTimer=window.setTimeout(()=>{reducedTimer=0;queueFrame();},400);return;}raf=requestAnimationFrame(render);};const queueFrame=()=>{if(!isActive())return;if(raf||reducedTimer)return;if(reduced){render(0);return;}raf=requestAnimationFrame(render);};queueFrame();return()=>{stopLoop();ro?.disconnect();io?.disconnect();window.removeEventListener(\"resize\",applySize);canvas.removeEventListener(\"webglcontextlost\",onContextLost);reducedMotionMedia?.removeEventListener(\"change\",onReducedMotionChange);document.removeEventListener(\"visibilitychange\",onVisibilityChange);gl.deleteProgram(program);gl.deleteProgram(glassProgram);gl.deleteBuffer(buffer);gl.deleteVertexArray(vao);gl.deleteTexture(sceneTex);gl.deleteFramebuffer(framebuffer);gl.getExtension(\"WEBGL_lose_context\")?.loseContext();removeCanvas();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[]);return /*#__PURE__*/_jsx(\"div\",{ref:ctnDom,style:{position:\"relative\",width:\"100%\",height:\"100%\",background:\"transparent\",...style}});}addPropertyControls(Strands,{colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Color},defaultValue:[\"#FF4242\",\"#7C3AED\",\"#06B6D4\",\"#EAB308\"],maxCount:8},count:{type:ControlType.Number,title:\"Count\",min:1,max:12,step:1,defaultValue:3},speed:{type:ControlType.Number,title:\"Speed\",min:0,max:3,step:.1,defaultValue:.5},amplitude:{type:ControlType.Number,title:\"Amplitude\",min:0,max:3,step:.1,defaultValue:1},waviness:{type:ControlType.Number,title:\"Waviness\",min:0,max:3,step:.1,defaultValue:1},thickness:{type:ControlType.Number,title:\"Thickness\",min:0,max:3,step:.1,defaultValue:.7},glow:{type:ControlType.Number,title:\"Glow\",min:0,max:6,step:.1,defaultValue:2.6},taper:{type:ControlType.Number,title:\"Taper\",min:0,max:8,step:.1,defaultValue:3},spread:{type:ControlType.Number,title:\"Spread\",min:0,max:3,step:.1,defaultValue:1},hueShift:{type:ControlType.Number,title:\"Hue Shift\",min:0,max:1,step:.01,defaultValue:0},intensity:{type:ControlType.Number,title:\"Intensity\",min:0,max:1,step:.01,defaultValue:.6},saturation:{type:ControlType.Number,title:\"Saturation\",min:0,max:3,step:.1,defaultValue:1.5},opacity:{type:ControlType.Number,title:\"Opacity\",min:0,max:1,step:.01,defaultValue:1},scale:{type:ControlType.Number,title:\"Scale\",min:.1,max:4,step:.1,defaultValue:1.5},glass:{type:ControlType.Boolean,title:\"Glass\",defaultValue:false},refraction:{type:ControlType.Number,title:\"Refraction\",min:0,max:3,step:.1,defaultValue:1,hidden:p=>!p.glass},dispersion:{type:ControlType.Number,title:\"Dispersion\",min:0,max:3,step:.1,defaultValue:1,hidden:p=>!p.glass},glassSize:{type:ControlType.Number,title:\"Glass Size\",min:.1,max:2,step:.05,defaultValue:1,hidden:p=>!p.glass}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Strands\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Strands_Background.map"],"mappings":"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"}