{"version":3,"file":"NeuralNoise_prod.CC0O2oiR.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/B7awAGBkUD4kwS36lqNf/5nUKeVy5Avo9VrA6TDZF/NeuralNoise_prod.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{RenderTarget,addPropertyControls,ControlType}from\"framer\";// Vertex shader - positions the fullscreen quad\nconst vertexShaderSource=`\nattribute vec2 a_position;\nvarying vec2 vUv;\n\nvoid main() {\n    vUv = 0.5 * (a_position + 1.0);\n    gl_Position = vec4(a_position, 0.0, 1.0);\n}\n`;// Fragment shader - renders the neural noise effect\nconst fragmentShaderSource=`\nprecision mediump float;\n\nvarying vec2 vUv;\n\nuniform float u_time;\nuniform float u_ratio;\nuniform vec2 u_pointer_position;\nuniform float u_pointer_strength;\nuniform float u_intensity;\nuniform float u_detail;\nuniform vec3 u_color_a;\nuniform vec3 u_color_b;\n\n// Rotate UV coordinates by angle\nvec2 rotate(vec2 uv, float th) {\n    return mat2(cos(th), sin(th), -sin(th), cos(th)) * uv;\n}\n\n// Generate the neural-like noise pattern\nfloat neuro_shape(vec2 uv, float t, float pointerInfluence, float detailFactor) {\n    vec2 sine_acc = vec2(0.0);\n    vec2 res = vec2(0.0);\n    float scale = mix(5.5, 9.5, detailFactor);\n\n    // Layer accumulation to create complex patterns\n    for (int j = 0; j < 15; j++) {\n        uv = rotate(uv, 1.0);\n        sine_acc = rotate(sine_acc, 1.0);\n        vec2 layer = uv * scale + float(j) + sine_acc - t;\n        sine_acc += sin(layer) + 2.4 * pointerInfluence;\n        res += (0.5 + 0.5 * cos(layer)) / scale;\n        scale *= 1.18;\n    }\n    return res.x + res.y;\n}\n\nvoid main() {\n    vec2 uv = 0.5 * vUv;\n    uv.x *= u_ratio;\n\n    // Calculate pointer influence based on distance from cursor\n    vec2 pointer = vUv - u_pointer_position;\n    pointer.x *= u_ratio;\n    float pointerDistance = clamp(length(pointer), 0.0, 1.0);\n    float pointerInfluence = 0.5 * pow(1.0 - pointerDistance, 2.0) * u_pointer_strength;\n\n    float t = u_time;\n    \n    // Generate noise pattern\n    float noise = neuro_shape(uv, t, pointerInfluence, u_detail);\n    noise = 1.2 * pow(max(noise, 0.0), mix(2.5, 3.8, u_detail));\n    noise += pow(noise, 10.0);\n    noise = max(0.0, noise - 0.5);\n    \n    // Fade at edges\n    noise *= (1.0 - length(vUv - 0.5));\n\n    // Boost highlights near the pointer to emphasize interaction\n    float glow = clamp(noise + pointerInfluence * 0.35, 0.0, 1.0);\n\n    // Blend between the provided colors using the animated glow as the mix factor\n    vec3 blendedColor = mix(u_color_a, u_color_b, smoothstep(0.15, 0.85, glow));\n\n    vec3 finalColor = blendedColor * glow * u_intensity;\n\n    gl_FragColor = vec4(finalColor, glow);\n}\n`;// Compile a WebGL shader\nfunction compileShader(gl,source,type){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.warn(\"NeuralNoise shader error:\",gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}// Create and link a WebGL program\nfunction createProgram(gl,vertexSource,fragmentSource){const vertexShader=compileShader(gl,vertexSource,gl.VERTEX_SHADER);const fragmentShader=compileShader(gl,fragmentSource,gl.FRAGMENT_SHADER);if(!vertexShader||!fragmentShader)return null;const program=gl.createProgram();if(!program)return null;gl.attachShader(program,vertexShader);gl.attachShader(program,fragmentShader);gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.warn(\"NeuralNoise program link error:\",gl.getProgramInfoLog(program));gl.deleteProgram(program);gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return null;}gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return program;}const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;function extractDefaultValue(cssVar){if(!cssVar||!cssVar.startsWith(\"var(\"))return cssVar;const match=cssVariableRegex.exec(cssVar);if(!match)return cssVar;const fallback=(match[2]||\"\").trim();if(fallback.startsWith(\"var(\"))return extractDefaultValue(fallback);return fallback||cssVar;}function resolveTokenColor(input,fallback){const value=(input||fallback||\"#ffffff\").trim();if(!value)return fallback;if(!value.startsWith(\"var(\"))return value;return resolveTokenColor(extractDefaultValue(value),fallback);}function parseColorToRgb(input,fallback){const resolved=resolveTokenColor(input,fallback).trim().toLowerCase();if(!resolved)return parseColorToRgb(fallback,\"#ffffff\");const rgbaMatch=resolved.match(/rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/i);if(rgbaMatch){const r=Math.max(0,Math.min(255,parseFloat(rgbaMatch[1])))/255;const g=Math.max(0,Math.min(255,parseFloat(rgbaMatch[2])))/255;const b=Math.max(0,Math.min(255,parseFloat(rgbaMatch[3])))/255;if(Number.isFinite(r)&&Number.isFinite(g)&&Number.isFinite(b)){return[r,g,b];}}if(resolved.startsWith(\"#\")){const hex=resolved.slice(1);const expandHex=value=>{if(value.length===3){return value.split(\"\").map(digit=>digit+digit).join(\"\");}if(value.length===4){return value.split(\"\").map(digit=>digit+digit).join(\"\").slice(0,6);}return value;};const normalizedHex=expandHex(hex);if(normalizedHex.length>=6){const r=parseInt(normalizedHex.slice(0,2),16);const g=parseInt(normalizedHex.slice(2,4),16);const b=parseInt(normalizedHex.slice(4,6),16);if(Number.isFinite(r)&&Number.isFinite(g)&&Number.isFinite(b)){return[r/255,g/255,b/255];}}}return parseColorToRgb(fallback,\"#ffffff\");}function clamp(value,min,max){return Math.min(Math.max(value,min),max);}// Map UI values to internal shader values\nfunction mapLinear(value,inMin,inMax,outMin,outMax){if(inMax===inMin)return outMin;const t=(value-inMin)/(inMax-inMin);return outMin+t*(outMax-outMin);}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 500\n * @framerDisableUnlink\n */const NeuralNoise=props=>{const{backgroundColor=\"transparent\",animationSpeed=.5,pointerStrength=.3,intensity=.45,detail=.6,primaryColor=\"#007BFF\",secondaryColor=\"#ffffff\",preview=false}=props;const canvasRef=useRef(null);const glRef=useRef(null);const programRef=useRef(null);const colorUniformsRef=useRef({colorA:null,colorB:null});const colorsRef=useRef({colorA:parseColorToRgb(primaryColor,\"#007BFF\"),colorB:parseColorToRgb(secondaryColor,\"#ffffff\")});const animationFrameRef=useRef(null);// Map UI values (0.1-1) to shader intensity (0.2-3)\nconst mappedIntensity=mapLinear(intensity,.1,1,.2,3);// Map UI values (0-1) to shader pointer strength (0-2)\nconst mappedPointerStrength=mapLinear(pointerStrength,0,1,0,2);// Map UI values (0-1) to shader animation speed (0.2-3)\nconst mappedAnimationSpeed=mapLinear(animationSpeed,0,1,.2,3);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;// Initialize WebGL context\nconst gl=canvas.getContext(\"webgl\",{alpha:true,antialias:true,preserveDrawingBuffer:false})||canvas.getContext(\"experimental-webgl\");if(!(gl instanceof WebGLRenderingContext)){console.warn(\"NeuralNoise: WebGL not supported in this environment.\");return;}// Create shader program\nconst program=createProgram(gl,vertexShaderSource,fragmentShaderSource);if(!program)return;// Get attribute and uniform locations\nconst positionAttributeLocation=gl.getAttribLocation(program,\"a_position\");const timeLocation=gl.getUniformLocation(program,\"u_time\");const ratioLocation=gl.getUniformLocation(program,\"u_ratio\");const pointerLocation=gl.getUniformLocation(program,\"u_pointer_position\");const pointerStrengthLocation=gl.getUniformLocation(program,\"u_pointer_strength\");const intensityLocation=gl.getUniformLocation(program,\"u_intensity\");const detailLocation=gl.getUniformLocation(program,\"u_detail\");const colorALocation=gl.getUniformLocation(program,\"u_color_a\");const colorBLocation=gl.getUniformLocation(program,\"u_color_b\");if(!timeLocation||!ratioLocation||!pointerLocation||!pointerStrengthLocation||!intensityLocation||!detailLocation||!colorALocation||!colorBLocation){console.warn(\"NeuralNoise: Missing uniform locations.\");gl.deleteProgram(program);return;}// Create buffer for fullscreen quad\nconst buffer=gl.createBuffer();if(!buffer){gl.deleteProgram(program);return;}gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),gl.STATIC_DRAW);gl.enableVertexAttribArray(positionAttributeLocation);gl.vertexAttribPointer(positionAttributeLocation,2,gl.FLOAT,false,0,0);gl.useProgram(program);gl.enable(gl.BLEND);gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);glRef.current=gl;programRef.current=program;colorUniformsRef.current={colorA:colorALocation,colorB:colorBLocation};// State tracking\nconst pointerRef={x:.5,y:.5};let isMounted=true;let canvasWidth=0;let canvasHeight=0;const startTime=performance.now();// Parse color props\n// Resize canvas to match parent with device pixel ratio\nconst resizeCanvas=()=>{const parent=canvas.parentElement;if(!parent)return;const ratio=window.devicePixelRatio||1;const displayWidth=Math.max(2,Math.floor(parent.clientWidth*ratio));const displayHeight=Math.max(2,Math.floor(parent.clientHeight*ratio));if(canvasWidth!==displayWidth||canvasHeight!==displayHeight){canvasWidth=displayWidth;canvasHeight=displayHeight;canvas.width=displayWidth;canvas.height=displayHeight;gl.viewport(0,0,canvas.width,canvas.height);}};// Update pointer position on mouse/touch move\nconst drawFrame=now=>{if(!isMounted)return false;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const shouldAnimate=preview||!isCanvas;const effectiveNow=shouldAnimate?now:startTime;gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);const ratio=canvasHeight===0?1:canvasWidth/canvasHeight;const elapsedSeconds=(effectiveNow-startTime)*.001*mappedAnimationSpeed;gl.uniform1f(timeLocation,elapsedSeconds);gl.uniform1f(ratioLocation,ratio);gl.uniform2f(pointerLocation,pointerRef.x,1-pointerRef.y);gl.uniform1f(pointerStrengthLocation,mappedPointerStrength);gl.uniform1f(intensityLocation,mappedIntensity);gl.uniform1f(detailLocation,clamp(detail,0,1));gl.uniform3f(colorALocation,colorsRef.current.colorA[0],colorsRef.current.colorA[1],colorsRef.current.colorA[2]);gl.uniform3f(colorBLocation,colorsRef.current.colorB[0],colorsRef.current.colorB[1],colorsRef.current.colorB[2]);gl.drawArrays(gl.TRIANGLES,0,6);return shouldAnimate;};const render=now=>{if(!isMounted)return;resizeCanvas();const shouldAnimate=drawFrame(now);if(shouldAnimate){animationFrameRef.current=requestAnimationFrame(render);}else{animationFrameRef.current=null;}};const updatePointer=event=>{if(!canvas)return;const rect=canvas.getBoundingClientRect();if(rect.width===0||rect.height===0)return;pointerRef.x=clamp((event.clientX-rect.left)/rect.width,0,1);pointerRef.y=clamp((event.clientY-rect.top)/rect.height,0,1);if(RenderTarget.current()===RenderTarget.canvas&&!preview){resizeCanvas();drawFrame(performance.now());}};resizeCanvas();// Event listeners\nwindow.addEventListener(\"pointermove\",updatePointer,{passive:true});window.addEventListener(\"resize\",resizeCanvas);animationFrameRef.current=requestAnimationFrame(render);// Cleanup\nreturn()=>{isMounted=false;if(animationFrameRef.current!==null){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}window.removeEventListener(\"pointermove\",updatePointer);window.removeEventListener(\"resize\",resizeCanvas);gl.deleteBuffer(buffer);gl.deleteProgram(program);glRef.current=null;programRef.current=null;colorUniformsRef.current={colorA:null,colorB:null};};},[mappedAnimationSpeed,mappedPointerStrength,mappedIntensity,detail,preview,primaryColor,secondaryColor,backgroundColor]);useEffect(()=>{colorsRef.current.colorA=parseColorToRgb(primaryColor,\"#007BFF\");colorsRef.current.colorB=parseColorToRgb(secondaryColor,\"#ffffff\");const gl=glRef.current;const program=programRef.current;const{colorA,colorB}=colorUniformsRef.current;if(!gl||!program)return;gl.useProgram(program);if(colorA){gl.uniform3f(colorA,colorsRef.current.colorA[0],colorsRef.current.colorA[1],colorsRef.current.colorA[2]);}if(colorB){gl.uniform3f(colorB,colorsRef.current.colorB[0],colorsRef.current.colorB[1],colorsRef.current.colorB[2]);}},[primaryColor,secondaryColor]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",backgroundColor},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",opacity:1}})});};addPropertyControls(NeuralNoise,{preview:{type:ControlType.Boolean,title:\"Preview\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},animationSpeed:{type:ControlType.Number,title:\"Speed\",min:0,max:1,step:.05,defaultValue:.3},pointerStrength:{type:ControlType.Number,title:\"Pointer\",min:0,max:1,step:.05,defaultValue:.3},intensity:{type:ControlType.Number,title:\"Intensity\",min:.1,max:1,step:.05,defaultValue:.45},detail:{type:ControlType.Number,title:\"Detail\",min:0,max:1,step:.05,defaultValue:.6},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#0e0e0e\",optional:true},secondaryColor:{type:ControlType.Color,title:\"Main Color\",defaultValue:\"#ffffff\"},primaryColor:{type:ControlType.Color,title:\"Secondary\",defaultValue:\"#007BFF\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});NeuralNoise.displayName=\"Neural Noise\";export default NeuralNoise;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NeuralNoise\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"500\",\"framerDisableUnlink\":\"\",\"framerIntrinsicWidth\":\"800\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NeuralNoise_prod.map"],"mappings":"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"}