{"version":3,"file":"GlitchImage.C8DGtjHT.mjs","names":["p","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/cRaj9yJAx0emdM0NWICe/8e4UH6DYAmTmTqYdVJXc/GlitchImage.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useRef,useEffect,useCallback}from\"react\";// --- GLSL Shaders (raw strings for WebGL) ---\nconst VERT=`\nattribute vec2 position;\nvarying vec2 vUv;\nvoid main() {\n  vUv = position * 0.5 + 0.5;\n  vUv.y = 1.0 - vUv.y;\n  gl_Position = vec4(position, 0.0, 1.0);\n}\n`;const FRAG=`\nprecision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uMouse;\nuniform float uHover;\nuniform float uTime;\nuniform vec2 uResolution;\nuniform vec2 uImageResolution;\nuniform float uWaveIntensity;\nuniform float uGlitchIntensity;\nuniform float uRgbShift;\nuniform float uScanlineIntensity;\nuniform float uFieldRadius;\nuniform float uPixelSize;\nuniform float uPixelIntensity;\nuniform float uWaveDirection;\nuniform float uGlitchMode;\nvarying vec2 vUv;\n\nvec2 coverUv(vec2 uv, vec2 canvasSize, vec2 textureSize) {\n  float canvasAspect = canvasSize.x / canvasSize.y;\n  float textureAspect = textureSize.x / textureSize.y;\n  \n  vec2 scale;\n  if (canvasAspect > textureAspect) {\n    // Canvas is wider - fit to width, crop height\n    scale = vec2(1.0, textureAspect / canvasAspect);\n  } else {\n    // Canvas is taller - fit to height, crop width\n    scale = vec2(canvasAspect / textureAspect, 1.0);\n  }\n  \n  // Center the image\n  vec2 offset = (vec2(1.0) - scale) * 0.5;\n  return uv * scale + offset;\n}\n\nvoid main() {\n  vec2 uv = coverUv(vUv, uResolution, uImageResolution);\n\n  float dist = distance(uv, uMouse);\n  float proximity = smoothstep(uFieldRadius, 0.0, dist);\n  float effectStrength = proximity * uHover;\n\n  // Pixel distortion layer\n  vec2 pixelUv = uv;\n  if (uPixelIntensity > 0.0 && uPixelSize > 0.0) {\n    float pixelEffect = effectStrength * uPixelIntensity;\n    vec2 pixelGrid = floor(uv * uResolution / uPixelSize) * uPixelSize / uResolution;\n    pixelUv = mix(uv, pixelGrid + (uPixelSize / uResolution) * 0.5, pixelEffect);\n  }\n\n  // Wave displacement with direction control\n  // 0 = horizontal, 1 = vertical, 2 = diagonal\n  float wave = 0.0;\n  if (uWaveDirection < 0.5) {\n    // Horizontal waves\n    wave = sin(pixelUv.x * 30.0 + uTime * 3.0) * 0.012 * effectStrength * uWaveIntensity;\n    wave += sin(pixelUv.x * 80.0 - uTime * 5.0) * 0.006 * effectStrength * uWaveIntensity;\n  } else if (uWaveDirection < 1.5) {\n    // Vertical waves\n    wave = sin(pixelUv.y * 30.0 + uTime * 3.0) * 0.012 * effectStrength * uWaveIntensity;\n    wave += sin(pixelUv.y * 80.0 - uTime * 5.0) * 0.006 * effectStrength * uWaveIntensity;\n  } else {\n    // Diagonal waves\n    float diag = (pixelUv.x + pixelUv.y) * 0.5;\n    wave = sin(diag * 30.0 + uTime * 3.0) * 0.012 * effectStrength * uWaveIntensity;\n    wave += sin(diag * 80.0 - uTime * 5.0) * 0.006 * effectStrength * uWaveIntensity;\n  }\n\n  // Block glitch with mode control\n  // 0 = blocks, 1 = noise, 2 = chromatic\n  float blockGlitch = 0.0;\n  if (uGlitchMode < 0.5) {\n    // Block mode\n    float blockY = floor(pixelUv.y * 40.0 + uTime * 2.0);\n    float blockNoise = fract(sin(blockY * 43758.5453) * 1.0);\n    blockGlitch = step(0.92, blockNoise) * 0.035 * effectStrength * uGlitchIntensity;\n  } else if (uGlitchMode < 1.5) {\n    // Noise mode\n    float noiseX = fract(sin(dot(pixelUv * 100.0, vec2(12.9898, 78.233)) + uTime) * 43758.5453);\n    blockGlitch = (noiseX - 0.5) * 0.025 * effectStrength * uGlitchIntensity;\n  } else {\n    // Chromatic mode (more RGB separation)\n    float chromaY = floor(pixelUv.y * 20.0 + uTime * 3.0);\n    float chromaNoise = fract(sin(chromaY * 12345.6789) * 1.0);\n    blockGlitch = step(0.85, chromaNoise) * 0.05 * effectStrength * uGlitchIntensity;\n  }\n\n  // RGB split\n  float rgbShift = (0.012 + 0.025 * proximity) * effectStrength * uRgbShift;\n\n  vec2 uvR = coverUv(pixelUv + vec2(rgbShift + wave + blockGlitch, wave * 0.5), uResolution, uImageResolution);\n  vec2 uvG = coverUv(pixelUv + vec2(-wave * 0.5 + blockGlitch, -rgbShift * 0.3), uResolution, uImageResolution);\n  vec2 uvB = coverUv(pixelUv + vec2(-rgbShift + wave * 0.3 + blockGlitch, wave * 0.8), uResolution, uImageResolution);\n\n  float r = texture2D(uTexture, uvR).r;\n  float g = texture2D(uTexture, uvG).g;\n  float b = texture2D(uTexture, uvB).b;\n\n  vec3 color = vec3(r, g, b);\n\n  // Scanlines\n  float scanline = sin(pixelUv.y * uResolution.y * 1.5) * 0.04 * effectStrength * uScanlineIntensity;\n  color -= scanline;\n\n  // Flicker\n  float flicker = 1.0 + sin(uTime * 20.0) * 0.02 * effectStrength;\n  color *= flicker;\n\n  gl_FragColor = vec4(color, 1.0);\n}\n`;// --- Raw WebGL helper (no three.js dependency) ---\nfunction createShader(gl,type,src){const s=gl.createShader(type);gl.shaderSource(s,src);gl.compileShader(s);if(!gl.getShaderParameter(s,gl.COMPILE_STATUS)){console.error(gl.getShaderInfoLog(s));gl.deleteShader(s);return null;}return s;}function createProgram(gl,vs,fs){const v=createShader(gl,gl.VERTEX_SHADER,vs);const f=createShader(gl,gl.FRAGMENT_SHADER,fs);if(!v||!f)return null;const p=gl.createProgram();gl.attachShader(p,v);gl.attachShader(p,f);gl.linkProgram(p);if(!gl.getProgramParameter(p,gl.LINK_STATUS)){console.error(gl.getProgramInfoLog(p));return null;}gl.deleteShader(v);gl.deleteShader(f);return p;}/**\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 300\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function GlitchImage(props){const{image={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"},waveIntensity=1,glitchIntensity=1,rgbShift=1,scanlineIntensity=1,fieldRadius=.3,pixelSize=8,pixelIntensity=0,waveDirection=1,glitchMode=0,style}=props;const canvasRef=useRef(null);const isStatic=useIsStaticRenderer();const stateRef=useRef({mouseX:.5,mouseY:.5,hover:0,hoverTarget:0,animId:0,program:null,gl:null,texture:null,buffer:null,isCleanedUp:false,uniforms:{},startTime:Date.now(),isReady:false,cleanup:null,imageWidth:0,imageHeight:0});useEffect(()=>{if(isStatic)return;const canvas=canvasRef.current;if(!canvas||!image.src)return;let mounted=true;const st=stateRef.current;st.isCleanedUp=false;const initTimeout=setTimeout(()=>{if(!mounted||st.isCleanedUp)return;const gl=canvas.getContext(\"webgl\",{antialias:false,alpha:false,premultipliedAlpha:false,powerPreference:\"high-performance\"});if(!gl)return;const program=createProgram(gl,VERT,FRAG);if(!program)return;st.gl=gl;st.program=program;st.startTime=Date.now();const buf=gl.createBuffer();st.buffer=buf;gl.bindBuffer(gl.ARRAY_BUFFER,buf);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),gl.STATIC_DRAW);const posLoc=gl.getAttribLocation(program,\"position\");gl.enableVertexAttribArray(posLoc);gl.vertexAttribPointer(posLoc,2,gl.FLOAT,false,0,0);gl.useProgram(program);st.uniforms={uTexture:gl.getUniformLocation(program,\"uTexture\"),uMouse:gl.getUniformLocation(program,\"uMouse\"),uHover:gl.getUniformLocation(program,\"uHover\"),uTime:gl.getUniformLocation(program,\"uTime\"),uResolution:gl.getUniformLocation(program,\"uResolution\"),uImageResolution:gl.getUniformLocation(program,\"uImageResolution\"),uWaveIntensity:gl.getUniformLocation(program,\"uWaveIntensity\"),uGlitchIntensity:gl.getUniformLocation(program,\"uGlitchIntensity\"),uRgbShift:gl.getUniformLocation(program,\"uRgbShift\"),uScanlineIntensity:gl.getUniformLocation(program,\"uScanlineIntensity\"),uFieldRadius:gl.getUniformLocation(program,\"uFieldRadius\"),uPixelSize:gl.getUniformLocation(program,\"uPixelSize\"),uPixelIntensity:gl.getUniformLocation(program,\"uPixelIntensity\"),uWaveDirection:gl.getUniformLocation(program,\"uWaveDirection\"),uGlitchMode:gl.getUniformLocation(program,\"uGlitchMode\")};const tex=gl.createTexture();st.texture=tex;gl.bindTexture(gl.TEXTURE_2D,tex);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,1,1,0,gl.RGBA,gl.UNSIGNED_BYTE,new Uint8Array([0,0,0,255]));const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{if(st.isCleanedUp||!mounted)return;// Use naturalWidth/naturalHeight — `img.width`/`img.height`\n// are layout dimensions and return 0 for off-DOM Images,\n// which would make coverUv a no-op and squash the image.\nconst w=img.naturalWidth||img.width||1;const h=img.naturalHeight||img.height||1;st.imageWidth=w;st.imageHeight=h;gl.bindTexture(gl.TEXTURE_2D,tex);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,img);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);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);st.isReady=true;};img.onerror=()=>{console.error(\"Failed to load image:\",image.src);};img.src=image.src;const resize=()=>{if(st.isCleanedUp||!canvas||!mounted)return;const rect=canvas.getBoundingClientRect();const dpr=Math.min(window.devicePixelRatio||1,2);canvas.width=Math.max(1,rect.width*dpr);canvas.height=Math.max(1,rect.height*dpr);gl.viewport(0,0,canvas.width,canvas.height);};resize();const ro=new ResizeObserver(resize);ro.observe(canvas);const render=()=>{if(st.isCleanedUp||!st.gl||!st.program||!mounted)return;const u=st.uniforms;const elapsed=(Date.now()-st.startTime)/1e3;st.hover+=(st.hoverTarget-st.hover)*.08;gl.uniform1i(u.uTexture,0);gl.uniform2f(u.uMouse,st.mouseX,st.mouseY);gl.uniform1f(u.uHover,st.hover);gl.uniform1f(u.uTime,elapsed);gl.uniform2f(u.uResolution,canvas.width,canvas.height);// Fall back to canvas dimensions only if image truly hasn't\n// loaded yet (both natural dims 0). Once loaded we use the\n// real source dimensions so the cover math works on mobile.\ngl.uniform2f(u.uImageResolution,st.imageWidth||canvas.width,st.imageHeight||canvas.height);gl.uniform1f(u.uWaveIntensity,waveIntensity);gl.uniform1f(u.uGlitchIntensity,glitchIntensity);gl.uniform1f(u.uRgbShift,rgbShift);gl.uniform1f(u.uScanlineIntensity,scanlineIntensity);gl.uniform1f(u.uFieldRadius,fieldRadius);gl.uniform1f(u.uPixelSize,pixelSize);gl.uniform1f(u.uPixelIntensity,pixelIntensity);gl.uniform1f(u.uWaveDirection,waveDirection);gl.uniform1f(u.uGlitchMode,glitchMode);gl.drawArrays(gl.TRIANGLE_STRIP,0,4);st.animId=requestAnimationFrame(render);};render();st.cleanup=()=>{if(st.animId)cancelAnimationFrame(st.animId);ro.disconnect();if(gl&&st.buffer)gl.deleteBuffer(st.buffer);if(gl&&st.texture)gl.deleteTexture(st.texture);if(gl&&st.program)gl.deleteProgram(st.program);st.buffer=null;st.texture=null;st.program=null;st.gl=null;};},0);return()=>{mounted=false;st.isCleanedUp=true;clearTimeout(initTimeout);if(st.cleanup)st.cleanup();};},[image.src,waveIntensity,glitchIntensity,rgbShift,scanlineIntensity,fieldRadius,pixelSize,pixelIntensity,waveDirection,glitchMode,isStatic]);const onMouseMove=useCallback(e=>{if(isStatic)return;const rect=canvasRef.current?.getBoundingClientRect();if(!rect)return;stateRef.current.mouseX=(e.clientX-rect.left)/rect.width;stateRef.current.mouseY=(e.clientY-rect.top)/rect.height;},[isStatic]);const onMouseEnter=useCallback(()=>{if(isStatic)return;stateRef.current.hoverTarget=1;},[isStatic]);const onMouseLeave=useCallback(()=>{if(isStatic)return;stateRef.current.hoverTarget=0;},[isStatic]);if(!image.src){return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"#111\",color:\"#666\",fontFamily:\"Inter, sans-serif\",fontSize:14},children:\"Add an image\"});}if(isStatic){return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",backgroundImage:`url(${image.src})`,backgroundSize:\"cover\",backgroundPosition:\"center\"}});}return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{...style,width:\"100%\",height:\"100%\",display:\"block\"},onMouseMove:onMouseMove,onMouseEnter:onMouseEnter,onMouseLeave:onMouseLeave});}addPropertyControls(GlitchImage,{image:{type:ControlType.ResponsiveImage,title:\"Image\"},fieldRadius:{type:ControlType.Number,title:\"Field Radius\",defaultValue:.3,min:.05,max:1,step:.05},waveDirection:{type:ControlType.Enum,title:\"Wave Direction\",options:[0,1,2],optionTitles:[\"Horizontal\",\"Vertical\",\"Diagonal\"],defaultValue:1,displaySegmentedControl:true},glitchMode:{type:ControlType.Enum,title:\"Glitch Mode\",options:[0,1,2],optionTitles:[\"Blocks\",\"Noise\",\"Chromatic\"],defaultValue:0,displaySegmentedControl:true},pixelSize:{type:ControlType.Number,title:\"Pixel Size\",defaultValue:8,min:2,max:32,step:1},pixelIntensity:{type:ControlType.Number,title:\"Pixel Distortion\",defaultValue:0,min:0,max:1,step:.05},waveIntensity:{type:ControlType.Number,title:\"Wave\",defaultValue:1,min:0,max:3,step:.1},glitchIntensity:{type:ControlType.Number,title:\"Glitch\",defaultValue:1,min:0,max:3,step:.1},rgbShift:{type:ControlType.Number,title:\"RGB Shift\",defaultValue:1,min:0,max:3,step:.1},scanlineIntensity:{type:ControlType.Number,title:\"Scanlines\",defaultValue:1,min:0,max:3,step:.1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GlitchImage\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"300\",\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GlitchImage.map"],"mappings":"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"}