{"version":3,"file":"MultiModeGradientMap.v8ro2Qfs.mjs","names":["THREE.Color","THREE.Vector3","React.useRef","THREE.Vector2","THREE.WebGLRenderer","THREE.Scene","THREE.OrthographicCamera","THREE.ShaderMaterial","THREE.Mesh","THREE.PlaneGeometry","THREE.TextureLoader","THREE.Clock","THREE.LinearFilter","React.useCallback","__esmMin","ne","window","init_npm_react_18_3_1","init_ssg_sandbox_shims","de","ce","addPropertyControls","RenderTarget","init_framer_BWFVvmND","ControlType","init_three_module","TextureLoader","Clock","Vector3","OrthographicCamera","ShaderMaterial","Scene","PlaneGeometry","Color","Mesh","ye","WebGLRenderer","Vector2","resolveFramerColor","tempCanvas","ctx","colorString","g","b","extractColorsLuminance","fallback","canvas","image","data","c1","c2","c3","count1","count2","count3","i","r","lum","extractColorsDistinct","pixels","maxDist","p","d","centers","iter","sums","counts","minDist","bestIdx","k","a","MultiModeShaderFX","containerRef","isEditor","propsRef","props","forceRenderRef","uniformsRef","textureLoaderRef","currentImageRef","container","renderer","scene","camera","material","mesh","animationFrame","isVisible","clock","handleResize","width","height","resizeObserver","intersectionObserver","entries","handleVisibilityChange","animate","texture","applyColors","colors","modeStr","modeIndex","GUI_MODES","init_MultiModeGradientMap","init_jsx_runtime"],"sources":["https:/framerusercontent.com/modules/KP5YHz4h9prmztkpsTJq/RYyA8eesCP285TO0CaZI/MultiModeGradientMap.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import*as THREE from\"three\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */const GUI_MODES=[\"Manual Palette\",\"Auto-Palette Luminance\",\"Auto-Palette Distinct\",\"Banded Invert\",\"Chromatic Invert\",\"Pixel Displacement\"];// ==========================================\n// Helpers for Color Extraction & Parsing\n// ==========================================\nfunction resolveFramerColor(colorString){if(typeof document===\"undefined\")return new THREE.Color(0,0,0);const tempCanvas=document.createElement(\"canvas\");tempCanvas.width=1;tempCanvas.height=1;const ctx=tempCanvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return new THREE.Color(0,0,0);ctx.fillStyle=colorString;ctx.fillRect(0,0,1,1);const[r,g,b]=ctx.getImageData(0,0,1,1).data;return new THREE.Color(r/255,g/255,b/255);}function extractColorsLuminance(image,fallback){if(typeof document===\"undefined\")return fallback;const canvas=document.createElement(\"canvas\");const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return fallback;canvas.width=64;canvas.height=64;ctx.drawImage(image,0,0,64,64);try{const data=ctx.getImageData(0,0,64,64).data;let c1=new THREE.Vector3,c2=new THREE.Vector3,c3=new THREE.Vector3;let count1=0,count2=0,count3=0;for(let i=0;i<data.length;i+=4){if(data[i+3]<128)continue;const r=data[i]/255,g=data[i+1]/255,b=data[i+2]/255;const lum=.299*r+.587*g+.114*b;if(lum<.33){c1.add(new THREE.Vector3(r,g,b));count1++;}else if(lum<.66){c2.add(new THREE.Vector3(r,g,b));count2++;}else{c3.add(new THREE.Vector3(r,g,b));count3++;}}if(count1>0)c1.divideScalar(count1);if(count2>0)c2.divideScalar(count2);if(count3>0)c3.divideScalar(count3);if(count1===0)c1.copy(c2).multiplyScalar(.5);if(count3===0)c3.copy(c2).multiplyScalar(1.5);if(count2===0)c2.copy(c1).lerp(c3,.5);return[new THREE.Color(c1.x,c1.y,c1.z),new THREE.Color(c2.x,c2.y,c2.z),new THREE.Color(c3.x,c3.y,c3.z)];}catch(e){console.warn(\"CORS issue extracting palette, using fallback.\");return fallback;}}function extractColorsDistinct(image,fallback){if(typeof document===\"undefined\")return fallback;const canvas=document.createElement(\"canvas\");const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return fallback;const size=32;canvas.width=size;canvas.height=size;ctx.drawImage(image,0,0,size,size);try{const data=ctx.getImageData(0,0,size,size).data;const pixels=[];for(let i=0;i<data.length;i+=4){if(data[i+3]<128)continue;pixels.push(new THREE.Vector3(data[i]/255,data[i+1]/255,data[i+2]/255));}if(pixels.length===0)return fallback;let c1=pixels[Math.floor(Math.random()*pixels.length)].clone();let c2=c1.clone();let c3=c1.clone();let maxDist=-1;for(let p of pixels){let d=p.distanceToSquared(c1);if(d>maxDist){maxDist=d;c2=p.clone();}}maxDist=-1;for(let p of pixels){let d=Math.min(p.distanceToSquared(c1),p.distanceToSquared(c2));if(d>maxDist){maxDist=d;c3=p.clone();}}let centers=[c1,c2,c3];for(let iter=0;iter<10;iter++){let sums=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];let counts=[0,0,0];for(let p of pixels){let minDist=Infinity;let bestIdx=0;for(let k=0;k<3;k++){let d=p.distanceToSquared(centers[k]);if(d<minDist){minDist=d;bestIdx=k;}}sums[bestIdx].add(p);counts[bestIdx]++;}for(let k=0;k<3;k++){if(counts[k]>0)centers[k]=sums[k].divideScalar(counts[k]);}}centers.sort((a,b)=>{let lumA=.299*a.x+.587*a.y+.114*a.z;let lumB=.299*b.x+.587*b.y+.114*b.z;return lumA-lumB;});return[new THREE.Color(centers[0].x,centers[0].y,centers[0].z),new THREE.Color(centers[1].x,centers[1].y,centers[1].z),new THREE.Color(centers[2].x,centers[2].y,centers[2].z)];}catch(e){console.warn(\"CORS issue extracting palette, using fallback.\");return fallback;}}// ==========================================\n// Component Main Export\n// ==========================================\nexport default function MultiModeShaderFX(props){const containerRef=React.useRef(null);const isEditor=RenderTarget.current()===RenderTarget.canvas;// Maintain instantaneous access to props for the render loop\nconst propsRef=React.useRef(props);const forceRenderRef=React.useRef(true)// Forces a render pass when settings change in Editor\n;const uniformsRef=React.useRef({u_image:{value:null},u_resolution:{value:new THREE.Vector2(0,0)},u_imageResolution:{value:new THREE.Vector2(0,0)},u_time:{value:0},u_mode:{value:0},u_color1:{value:new THREE.Color},u_color2:{value:new THREE.Color},u_color3:{value:new THREE.Color},u_speed:{value:.5},u_frequency:{value:1.5},u_waveIntensity:{value:.2},u_bandWidth:{value:.3},u_rgbShift:{value:.1}});const textureLoaderRef=React.useRef(null);const currentImageRef=React.useRef(null);// Setup WebGL Scene\nReact.useEffect(()=>{if(typeof window===\"undefined\"||!containerRef.current)return;const container=containerRef.current;const renderer=new THREE.WebGLRenderer({alpha:true,antialias:false});renderer.setPixelRatio(Math.min(window.devicePixelRatio,2));renderer.setClearColor(0,0);container.appendChild(renderer.domElement);const scene=new THREE.Scene;const camera=new THREE.OrthographicCamera(-1,1,1,-1,.1,10);camera.position.z=1;const vertexShader=`\n            varying vec2 vUv;\n            void main() {\n                vUv = uv;\n                gl_Position = vec4(position, 1.0);\n            }\n        `;const fragmentShader=`\n            uniform sampler2D u_image;\n            uniform vec2 u_resolution;\n            uniform vec2 u_imageResolution;\n            uniform float u_time;\n            uniform int u_mode;\n            uniform vec3 u_color1;\n            uniform vec3 u_color2;\n            uniform vec3 u_color3;\n            uniform float u_speed;\n            uniform float u_frequency;\n            uniform float u_waveIntensity;\n            uniform float u_bandWidth;\n            uniform float u_rgbShift;\n            varying vec2 vUv;\n\n            float getLuminance(vec3 color) {\n                return dot(color, vec3(0.299, 0.587, 0.114));\n            }\n\n            float getBandFactor(float phase, float width) {\n                float center = 0.5;\n                float halfWidth = width * 0.5;\n                float smoothness = 0.1;\n                return smoothstep(center - halfWidth - smoothness, center - halfWidth, phase) \n                     - smoothstep(center + halfWidth, center + halfWidth + smoothness, phase);\n            }\n\n            void main() {\n                if (u_imageResolution.x == 0.0 || u_imageResolution.y == 0.0) {\n                    gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n                    return;\n                }\n\n                vec2 ratio = u_resolution / u_imageResolution;\n                float coverRatio = max(ratio.x, ratio.y);\n                vec2 scaledRes = u_imageResolution * coverRatio;\n                vec2 offset = (scaledRes - u_resolution) * 0.5 / scaledRes;\n                vec2 uv = vUv * (u_resolution / scaledRes) + offset;\n\n                vec4 texColor = texture2D(u_image, uv);\n                float lum = getLuminance(texColor.rgb);\n\n                float time = u_time * u_speed;\n                float wave = sin(time + vUv.y * 5.0 + vUv.x * 3.0) * u_waveIntensity;\n                \n                vec3 finalColor = texColor.rgb;\n\n                if (u_mode == 0) {\n                    float phase = fract(lum * u_frequency + time + wave);\n                    float segment = phase * 3.0;\n                    float blend = smoothstep(0.0, 1.0, fract(segment));\n                    if (segment < 1.0) finalColor = mix(u_color1, u_color2, blend);\n                    else if (segment < 2.0) finalColor = mix(u_color2, u_color3, blend);\n                    else finalColor = mix(u_color3, u_color1, blend);\n                } \n                else if (u_mode == 1) {\n                    float phase = fract(lum * u_frequency + time + wave);\n                    float invertFactor = getBandFactor(phase, u_bandWidth);\n                    finalColor = mix(texColor.rgb, vec3(1.0) - texColor.rgb, invertFactor);\n                } \n                else if (u_mode == 2) {\n                    float phaseR = fract(lum * u_frequency + time + wave);\n                    float phaseG = fract(lum * u_frequency + time + wave + u_rgbShift);\n                    float phaseB = fract(lum * u_frequency + time + wave + u_rgbShift * 2.0);\n                    float invertR = getBandFactor(phaseR, u_bandWidth);\n                    float invertG = getBandFactor(phaseG, u_bandWidth);\n                    float invertB = getBandFactor(phaseB, u_bandWidth);\n                    finalColor.r = mix(texColor.r, 1.0 - texColor.r, invertR);\n                    finalColor.g = mix(texColor.g, 1.0 - texColor.g, invertG);\n                    finalColor.b = mix(texColor.b, 1.0 - texColor.b, invertB);\n                }\n                else if (u_mode == 3) {\n                    float waveX = sin(uv.y * u_frequency * 5.0 + time * 2.0) * u_waveIntensity * 0.1;\n                    float waveY = cos(uv.x * u_frequency * 5.0 + time * 2.0) * u_waveIntensity * 0.1;\n                    vec2 distortedUv = uv + vec2(waveX, waveY);\n                    finalColor = texture2D(u_image, distortedUv).rgb;\n                }\n\n                // Preserve alpha from texture\n                gl_FragColor = vec4(finalColor, texColor.a);\n            }\n        `;const material=new THREE.ShaderMaterial({vertexShader,fragmentShader,uniforms:uniformsRef.current,depthWrite:false,depthTest:false,transparent:true});const mesh=new THREE.Mesh(new THREE.PlaneGeometry(2,2),material);scene.add(mesh);textureLoaderRef.current=new THREE.TextureLoader;textureLoaderRef.current.crossOrigin=\"anonymous\";let animationFrame=0;let isVisible=true;const clock=new THREE.Clock;const handleResize=()=>{const width=container.clientWidth;const height=container.clientHeight;renderer.setSize(width,height);uniformsRef.current.u_resolution.value.set(width,height);forceRenderRef.current=true;};const resizeObserver=new ResizeObserver(handleResize);resizeObserver.observe(container);const intersectionObserver=new IntersectionObserver(entries=>{isVisible=entries[0].isIntersecting;});intersectionObserver.observe(container);const handleVisibilityChange=()=>{isVisible=!document.hidden;};document.addEventListener(\"visibilitychange\",handleVisibilityChange);handleResize();const animate=()=>{animationFrame=requestAnimationFrame(animate);if(isEditor&&propsRef.current.stopAnimation){if(forceRenderRef.current){renderer.render(scene,camera);forceRenderRef.current=false;}return;}forceRenderRef.current=false// Reset trigger\n;if(!isVisible)return;uniformsRef.current.u_time.value=clock.getElapsedTime();renderer.render(scene,camera);};animate();return()=>{cancelAnimationFrame(animationFrame);resizeObserver.disconnect();intersectionObserver.disconnect();document.removeEventListener(\"visibilitychange\",handleVisibilityChange);renderer.dispose();material.dispose();mesh.geometry.dispose();if(uniformsRef.current.u_image.value){uniformsRef.current.u_image.value.dispose();}if(container&&renderer.domElement.parentNode===container){container.removeChild(renderer.domElement);}};},[]);// Handle Image Loading\nReact.useEffect(()=>{if(!textureLoaderRef.current||!props.image)return;textureLoaderRef.current.load(props.image,texture=>{texture.minFilter=THREE.LinearFilter;texture.magFilter=THREE.LinearFilter;if(uniformsRef.current.u_image.value){uniformsRef.current.u_image.value.dispose();}uniformsRef.current.u_image.value=texture;uniformsRef.current.u_imageResolution.value.set(texture.image.width,texture.image.height);currentImageRef.current=texture.image;forceRenderRef.current=true;// Trigger palette extraction if needed\nif(propsRef.current.mode.startsWith(\"Auto-Palette\")){applyColors(propsRef.current.mode);}});},[props.image]);const applyColors=React.useCallback(modeStr=>{let colors=[resolveFramerColor(propsRef.current.color1),resolveFramerColor(propsRef.current.color2),resolveFramerColor(propsRef.current.color3)];if(modeStr===\"Auto-Palette Luminance\"&&currentImageRef.current){colors=extractColorsLuminance(currentImageRef.current,colors);}else if(modeStr===\"Auto-Palette Distinct\"&&currentImageRef.current){colors=extractColorsDistinct(currentImageRef.current,colors);}uniformsRef.current.u_color1.value.copy(colors[0]);uniformsRef.current.u_color2.value.copy(colors[1]);uniformsRef.current.u_color3.value.copy(colors[2]);forceRenderRef.current=true;},[]);// Sync Props to Uniforms dynamically without full re-render\nReact.useEffect(()=>{propsRef.current=props;let modeIndex=0;if(props.mode.includes(\"Palette\"))modeIndex=0;else if(props.mode===\"Banded Invert\")modeIndex=1;else if(props.mode===\"Chromatic Invert\")modeIndex=2;else if(props.mode===\"Pixel Displacement\")modeIndex=3;uniformsRef.current.u_mode.value=modeIndex;uniformsRef.current.u_speed.value=props.speed;uniformsRef.current.u_frequency.value=props.frequency;uniformsRef.current.u_waveIntensity.value=props.waveIntensity;uniformsRef.current.u_bandWidth.value=props.bandWidth;uniformsRef.current.u_rgbShift.value=props.rgbShift;if(props.mode===\"Manual Palette\"){applyColors(\"Manual Palette\");}else if(props.mode.startsWith(\"Auto-Palette\")&&currentImageRef.current){applyColors(props.mode);}forceRenderRef.current=true;},[props.mode,props.speed,props.frequency,props.waveIntensity,props.bandWidth,props.rgbShift,props.color1,props.color2,props.color3,applyColors]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",display:\"block\"}});}MultiModeShaderFX.defaultProps={image:\"\",mode:\"Auto-Palette Distinct\",color1:\"#09001a\",color2:\"#ff0055\",color3:\"#ffdd00\",speed:.5,frequency:1.5,waveIntensity:.2,bandWidth:.3,rgbShift:.1,stopAnimation:true};addPropertyControls(MultiModeShaderFX,{image:{type:ControlType.Image,title:\"Image\"},mode:{type:ControlType.Enum,title:\"Mode\",options:GUI_MODES},// Colors group (Only visible when Manual Palette is selected)\ncolor1:{type:ControlType.Color,title:\"Color: Shadow\",hidden:props=>props.mode!==\"Manual Palette\"},color2:{type:ControlType.Color,title:\"Color: Midtone\",hidden:props=>props.mode!==\"Manual Palette\"},color3:{type:ControlType.Color,title:\"Color: Highlight\",hidden:props=>props.mode!==\"Manual Palette\"},// Effects group\nbandWidth:{type:ControlType.Number,title:\"Fx: Width\",min:.05,max:.8,step:.01,hidden:props=>props.mode===\"Pixel Displacement\"||props.mode.includes(\"Palette\")},rgbShift:{type:ControlType.Number,title:\"Fx: RGB Offset\",min:0,max:.5,step:.01,hidden:props=>props.mode!==\"Chromatic Invert\"},// Animation group\nspeed:{type:ControlType.Number,title:\"Anim: Speed\",min:0,max:3,step:.05},frequency:{type:ControlType.Number,title:\"Anim: Frequency\",min:.5,max:5,step:.1},waveIntensity:{type:ControlType.Number,title:\"Anim: Distortion\",min:0,max:1,step:.01},// Editor controls\nstopAnimation:{type:ControlType.Boolean,title:\"Stop (Editor)\",enabledTitle:\"Yes\",disabledTitle:\"No\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MultiModeShaderFX\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MultiModeGradientMap.map"],"mappings":"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"}