{"version":3,"file":"WaveMotionWebGL.C2lNSCBn.mjs","names":["useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/lOZyP5nwxuICdomvbhj5/1wk87m7kYAxVsWz3HBbj/WaveMotionWebGL.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useMemo,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const THREE_CDN=\"https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js\";const GSAP_CDN=\"https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js\";function loadScript(src,key){return new Promise((resolve,reject)=>{const existing=document.querySelector(`script[data-${key}]`);if(existing){const ok=key===\"three\"&&window.THREE||key===\"gsap\"&&window.gsap;if(ok)return resolve();existing.addEventListener(\"load\",()=>resolve(),{once:true});existing.addEventListener(\"error\",()=>reject(),{once:true});return;}const s=document.createElement(\"script\");s.src=src;s.async=true;s.dataset[key]=\"1\";s.onload=()=>resolve();s.onerror=()=>reject();document.head.appendChild(s);});}async function loadThreeAndGsap(){await Promise.all([loadScript(THREE_CDN,\"three\"),loadScript(GSAP_CDN,\"gsap\")]);const w=window;if(!w.THREE||!w.gsap)return null;return{THREE:w.THREE,gsap:w.gsap};}function effectToIndex(effect){switch(effect){case\"Actuator\":return 0;case\"Random\":return 1;case\"Uplinking\":return 2;case\"Half Time\":return 3;case\"Operator\":return 4;case\"Remote\":return 5;case\"Slurbt\":return 6;case\"Cybark\":return 7;case\"Alt Touch\":return 8;default:return 0;}}function fitModeToInt(mode){switch(mode){case\"Fill\":return 0;case\"Fit\":return 1;case\"Crop\":return 2;case\"Tile\":return 3;default:return 0;}}const vertexShader=`\nprecision highp float;\nvarying vec2 vUv;\nuniform float uTime;\nvoid main() {\n  vUv = uv;\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`;const fragmentShader=`\nprecision highp float;\n\nvarying vec2 vUv;\n\nuniform sampler2D uTexture;\nuniform float uTime;\nuniform float uProg;\nuniform float uEffectIndex;\n\nuniform float uRGBSplit;\nuniform float uMotionBlur;\n\nuniform vec2 uScale;\nuniform vec2 uOffset;\nuniform int uFitMode;\n\nfloat rand(float n){ return fract(sin(n) * 43758.5453123); }\n\nvec2 safeUv(vec2 uv){\n  if (uFitMode == 3) return fract(uv);\n  return clamp(uv, 0.001, 0.999);\n}\n\nvec2 applyFit(vec2 uv){\n  uv = (uv - 0.5) * uScale + 0.5 + uOffset;\n  return safeUv(uv);\n}\n\nvec4 tex(vec2 uv){\n  return texture2D(uTexture, safeUv(uv));\n}\n\nvoid main() {\n  vec2 uv0 = vUv;\n  vec2 uv = applyFit(uv0);\n\n  float e = uEffectIndex;\n  float t = uTime;\n  float p = uProg;\n\n  vec2 duv = uv;\n\n  if (e < 0.5) {\n    float off = sin(uv.y * 10.0 + t * 1.4) * 0.03 * p;\n    duv.x += off;\n  } else if (e < 1.5) {\n    float offX = sin(uv.y * 16.0 + t * 1.7) * 0.025 * p;\n    float offY = cos(uv.x * 10.0 + t * 1.3) * 0.02 * p;\n    duv += vec2(offX, offY);\n  } else if (e < 2.5) {\n    float swirl = sin((uv.x + uv.y) * 12.0 + t * 1.8) * 0.03 * p;\n    duv += vec2(swirl, -swirl * 0.5);\n  } else if (e < 3.5) {\n    float stripes = 10.0;\n    float band = floor(uv.y * stripes);\n    float dir = mod(band, 2.0) * 2.0 - 1.0;\n    float shift = dir * 0.06 * p;\n    duv.x += shift;\n    duv.y += sin(uv.x * 10.0 + t * 1.6) * 0.01 * p;\n  } else if (e < 4.5) {\n    float stripes = 16.0;\n    float band = floor(uv.y * stripes);\n    float dir = mod(band, 2.0) * 2.0 - 1.0;\n    float shift = dir * 0.035 * p;\n    duv.x += shift;\n  } else if (e < 5.5) {\n    float stripes = 28.0;\n    float band = floor(uv.y * stripes);\n    float s = rand(band + floor(t * 6.0));\n    float dir = (step(0.5, s) * 2.0 - 1.0);\n    float amt = mix(0.02, 0.09, rand(band * 1.7 + 13.0));\n    float wob = sin(uv.x * 12.0 + t * 2.2 + band) * 0.007;\n    duv.x += dir * amt * p;\n    duv.y += wob * p;\n  } else if (e < 6.5) {\n    float jitter = (rand(uv.y * 120.0 + t * 30.0) - 0.5) * 0.05 * p;\n    duv.x += jitter;\n  } else if (e < 7.5) {\n    float band = floor(uv.y * 40.0);\n    float barJitter = (rand(band + t * 5.0) - 0.5) * 0.07 * p;\n    duv.x += barJitter;\n  } else {\n    float jitter = (rand(uv.y * 200.0 + t * 40.0) - 0.5) * 0.09 * p;\n    duv.x += jitter;\n  }\n\n  duv = applyFit(duv);\n\n  float split = uRGBSplit * p;\n\n  vec2 rUv = duv + vec2(split, 0.0);\n  vec2 gUv = duv;\n  vec2 bUv = duv + vec2(-split, 0.0);\n\n  vec4 cR = tex(rUv);\n  vec4 cG = tex(gUv);\n  vec4 cB = tex(bUv);\n\n  vec3 col = vec3(cR.r, cG.g, cB.b);\n\n  if (uMotionBlur > 0.0 && p > 0.0) {\n    vec2 blurDir = vec2(0.0, 0.004) * uMotionBlur * p;\n    vec3 acc = col;\n    acc += tex(duv + blurDir *  1.0).rgb;\n    acc += tex(duv + blurDir * -1.0).rgb;\n    acc += tex(duv + blurDir *  2.0).rgb;\n    acc += tex(duv + blurDir * -2.0).rgb;\n    acc /= 5.0;\n    col = mix(col, acc, 0.7);\n  }\n\n  gl_FragColor = vec4(col, 1.0);\n}\n`;export default function WaveMotionHoverPro(props){const{image,effect,amplitude,speed,intensity,rgbSplit,motionBlur,fitMode,scale,posX,posY,hover,scrollScrub,scrubStrength}=props;const containerRef=useRef(null);const rendererRef=useRef(null);const sceneRef=useRef(null);const cameraRef=useRef(null);const meshRef=useRef(null);const materialRef=useRef(null);const textureRef=useRef(null);const rafRef=useRef(null);const hoverTweenRef=useRef(null);const scrubTweenRef=useRef(null);const roRef=useRef(null);const ioRef=useRef(null);const texAspectRef=useRef(1);const planeAspectRef=useRef(1);const applyUvTransform=useMemo(()=>{return()=>{const mat=materialRef.current;const cont=containerRef.current;if(!mat||!cont)return;const w=Math.max(1,cont.clientWidth||1);const h=Math.max(1,cont.clientHeight||1);const planeAspect=w/h;planeAspectRef.current=planeAspect;const imgAspect=texAspectRef.current||1;const z=Math.max(.1,scale||1);let sx=1;let sy=1;if(fitMode===\"Tile\"){sx=planeAspect/imgAspect*z;sy=z;}else if(fitMode===\"Fill\"){sx=z;sy=z;}else if(fitMode===\"Fit\"){if(planeAspect>imgAspect){sx=imgAspect/planeAspect*z;sy=z;}else{sx=z;sy=planeAspect/imgAspect*z;}}else{if(planeAspect>imgAspect){sx=z;sy=planeAspect/imgAspect*z;}else{sx=imgAspect/planeAspect*z;sy=z;}}mat.uniforms.uScale.value.set(sx,sy);mat.uniforms.uOffset.value.set((posX||0)*.25,(posY||0)*.25);mat.uniforms.uFitMode.value=fitModeToInt(fitMode);mat.needsUpdate=true;};},[fitMode,scale,posX,posY]);useEffect(()=>{let dead=false;loadThreeAndGsap().then(loaded=>{if(!loaded||dead)return;const{THREE,gsap}=loaded;const container=containerRef.current;if(!container)return;const w=Math.max(1,container.clientWidth||1);const h=Math.max(1,container.clientHeight||1);const aspect=w/h;planeAspectRef.current=aspect;const scene=new THREE.Scene;sceneRef.current=scene;const camera=new THREE.OrthographicCamera(-aspect,aspect,1,-1,.1,10);camera.position.z=2;cameraRef.current=camera;const renderer=new THREE.WebGLRenderer({antialias:true,alpha:true});renderer.setPixelRatio(Math.min(window.devicePixelRatio||1,2));renderer.setClearColor(0,0);renderer.setSize(w,h);renderer.domElement.style.width=\"100%\";renderer.domElement.style.height=\"100%\";renderer.domElement.style.display=\"block\";rendererRef.current=renderer;container.appendChild(renderer.domElement);const geometry=new THREE.PlaneGeometry(2*aspect,2,80,80);const material=new THREE.ShaderMaterial({uniforms:{uTime:{value:0},uProg:{value:0},uEffectIndex:{value:effectToIndex(effect)},uRGBSplit:{value:rgbSplit},uMotionBlur:{value:motionBlur},uScale:{value:new THREE.Vector2(1,1)},uOffset:{value:new THREE.Vector2(0,0)},uFitMode:{value:fitModeToInt(fitMode)},uTexture:{value:null}},vertexShader,fragmentShader,transparent:true});materialRef.current=material;const mesh=new THREE.Mesh(geometry,material);meshRef.current=mesh;scene.add(mesh);const loader=new THREE.TextureLoader;if(image){loader.load(image,tex=>{tex.minFilter=THREE.LinearFilter;tex.magFilter=THREE.LinearFilter;tex.generateMipmaps=false;tex.wrapS=fitMode===\"Tile\"?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping;tex.wrapT=fitMode===\"Tile\"?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping;textureRef.current=tex;material.uniforms.uTexture.value=tex;if(tex.image&&tex.image.width&&tex.image.height){texAspectRef.current=tex.image.width/tex.image.height;}else{texAspectRef.current=1;}applyUvTransform();material.needsUpdate=true;});}const start=performance.now();const tick=()=>{const r=rendererRef.current;const s=sceneRef.current;const c=cameraRef.current;const m=materialRef.current;if(!r||!s||!c||!m)return;const now=performance.now();m.uniforms.uTime.value=(now-start)/1e3*speed;r.render(s,c);rafRef.current=requestAnimationFrame(tick);};tick();const uniforms=material.uniforms;const go=v=>{if(!gsap)return;if(hoverTweenRef.current)hoverTweenRef.current.kill();hoverTweenRef.current=gsap.to(uniforms.uProg,{value:v,duration:v>0?.9:.8,ease:\"expo.out\"});};const onEnter=()=>go(amplitude*intensity);const onLeave=()=>go(0);if(hover){container.addEventListener(\"pointerenter\",onEnter);container.addEventListener(\"pointerleave\",onLeave);}roRef.current=new ResizeObserver(()=>{const ww=Math.max(1,container.clientWidth||1);const hh=Math.max(1,container.clientHeight||1);const asp=ww/hh;planeAspectRef.current=asp;camera.left=-asp;camera.right=asp;camera.top=1;camera.bottom=-1;camera.updateProjectionMatrix();mesh.geometry.dispose();mesh.geometry=new THREE.PlaneGeometry(2*asp,2,80,80);renderer.setSize(ww,hh);applyUvTransform();});roRef.current.observe(container);if(scrollScrub&&\"IntersectionObserver\"in window){ioRef.current=new IntersectionObserver(entries=>{const entry=entries[0];if(!entry||!gsap||!materialRef.current)return;const r=Math.max(0,Math.min(1,entry.intersectionRatio))*Math.max(0,scrubStrength);if(scrubTweenRef.current)scrubTweenRef.current.kill();scrubTweenRef.current=gsap.to(materialRef.current.uniforms.uProg,{value:amplitude*intensity*r,duration:.6,ease:\"expo.out\"});},{threshold:[0,.2,.4,.6,.8,1]});ioRef.current.observe(container);}applyUvTransform();return()=>{if(hover){container.removeEventListener(\"pointerenter\",onEnter);container.removeEventListener(\"pointerleave\",onLeave);}};}).catch(()=>{});return()=>{dead=true;if(rafRef.current)cancelAnimationFrame(rafRef.current);rafRef.current=null;if(ioRef.current)ioRef.current.disconnect();ioRef.current=null;if(roRef.current)roRef.current.disconnect();roRef.current=null;const renderer=rendererRef.current;const mesh=meshRef.current;const scene=sceneRef.current;if(mesh&&scene){if(mesh.geometry)mesh.geometry.dispose();if(mesh.material)mesh.material.dispose();scene.remove(mesh);}if(textureRef.current){textureRef.current.dispose();textureRef.current=null;}if(renderer){renderer.dispose();if(renderer.domElement?.parentNode){renderer.domElement.parentNode.removeChild(renderer.domElement);}}rendererRef.current=null;sceneRef.current=null;cameraRef.current=null;meshRef.current=null;materialRef.current=null;};},[]);useEffect(()=>{const mat=materialRef.current;if(!mat)return;mat.uniforms.uEffectIndex.value=effectToIndex(effect);},[effect]);useEffect(()=>{const mat=materialRef.current;if(!mat)return;mat.uniforms.uRGBSplit.value=rgbSplit;mat.uniforms.uMotionBlur.value=motionBlur;},[rgbSplit,motionBlur]);useEffect(()=>{const w=window.THREE;const mat=materialRef.current;if(!w||!mat)return;mat.uniforms.uFitMode.value=fitModeToInt(fitMode);if(textureRef.current){textureRef.current.wrapS=fitMode===\"Tile\"?w.RepeatWrapping:w.ClampToEdgeWrapping;textureRef.current.wrapT=fitMode===\"Tile\"?w.RepeatWrapping:w.ClampToEdgeWrapping;textureRef.current.needsUpdate=true;}applyUvTransform();},[fitMode,scale,posX,posY,applyUvTransform]);useEffect(()=>{const w=window.THREE;const mat=materialRef.current;if(!w||!mat||!image)return;const loader=new w.TextureLoader;loader.load(image,tex=>{tex.minFilter=w.LinearFilter;tex.magFilter=w.LinearFilter;tex.generateMipmaps=false;tex.wrapS=fitMode===\"Tile\"?w.RepeatWrapping:w.ClampToEdgeWrapping;tex.wrapT=fitMode===\"Tile\"?w.RepeatWrapping:w.ClampToEdgeWrapping;if(textureRef.current)textureRef.current.dispose();textureRef.current=tex;mat.uniforms.uTexture.value=tex;if(tex.image&&tex.image.width&&tex.image.height){texAspectRef.current=tex.image.width/tex.image.height;}else{texAspectRef.current=1;}applyUvTransform();mat.needsUpdate=true;});},[image]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\"}});}WaveMotionHoverPro.defaultProps={width:400,height:600,image:\"\",effect:\"Actuator\",amplitude:1,speed:1,intensity:1,rgbSplit:.008,motionBlur:.7,fitMode:\"Crop\",scale:1,posX:0,posY:0,hover:true,scrollScrub:false,scrubStrength:1};addPropertyControls(WaveMotionHoverPro,{image:{type:ControlType.Image,title:\"Image\"},effect:{type:ControlType.Enum,title:\"Effect\",options:[\"Actuator\",\"Random\",\"Uplinking\",\"Half Time\",\"Operator\",\"Remote\",\"Slurbt\",\"Cybark\",\"Alt Touch\"]},fitMode:{type:ControlType.Enum,title:\"Fit\",options:[\"Crop\",\"Fit\",\"Fill\",\"Tile\"]},scale:{type:ControlType.Number,title:\"Scale\",min:.25,max:4,step:.05},posX:{type:ControlType.Number,title:\"Pos X\",min:-1,max:1,step:.01},posY:{type:ControlType.Number,title:\"Pos Y\",min:-1,max:1,step:.01},amplitude:{type:ControlType.Number,title:\"Amplitude\",min:0,max:2,step:.05},intensity:{type:ControlType.Number,title:\"Intensity\",min:0,max:3,step:.05},speed:{type:ControlType.Number,title:\"Speed\",min:0,max:3,step:.05},rgbSplit:{type:ControlType.Number,title:\"RGB Split\",min:0,max:.05,step:.001},motionBlur:{type:ControlType.Number,title:\"Motion Blur\",min:0,max:2,step:.05},hover:{type:ControlType.Boolean,title:\"Hover\",enabledTitle:\"On\",disabledTitle:\"Off\"},scrollScrub:{type:ControlType.Boolean,title:\"Scroll\",enabledTitle:\"On\",disabledTitle:\"Off\"},scrubStrength:{type:ControlType.Number,title:\"Scrub\",min:0,max:1,step:.01,hidden:p=>!p.scrollScrub}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"WaveMotionHoverPro\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WaveMotionWebGL.map"],"mappings":"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"}