{"version":3,"file":"EchoStack.D5pwSvCV.mjs","names":["useRef","useState","useCallback","__esmMin","window","init_ssg_sandbox_shims","init_npm_react_18_3_1","_e","de","ne","c","init_jsx_runtime","ce","addPropertyControls","init_framer_B1b760uK","RenderTarget","useIsStaticRenderer","ControlType","EchoStack","props","isStatic","isCanvas","isLive","ref","scrollProgress","setScrollProgress","pointer","setPointer","hovered","setHovered","lastTouchTime","touchOutTimer","enableScrollParallax","handleScroll","rect","windowH","progress","handlePointerMove","enablePointerParallax","clientX","clientY","onMouseEnter","handleMouseLeave","handleTouchStart","maxStaggerDelay","hoverStagger","layerCount","hoverStaggerDelay","hoverDuration","handleTouchEnd","image","style","borderRadius","br","scale","scaleFactor","i","blur","blurFalloff","opacity","opacityFalloff","rotation","rotationOffset","scrollTx","scrollTy","p","scrollParallaxStrength","scrollParallaxDirection","ptrTx","ptrTy","pointerParallaxStrength","tx","offsetX","ty","offsetY","msx","msy","mirrorMode","layerTransform","shadowVal","enableShadow","shadowSize","shadowColor","hoverDelay","hoverStaggerDirection","center","imgScale","hoverScale","init_EchoStack"],"sources":["https:/framerusercontent.com/modules/lJm3LUw73jQyepKIeLcl/MgKxjHESvfEtWq9ga57T/EchoStack.js"],"sourcesContent":["/**\n * EchoStack\n * @framer\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer,RenderTarget}from\"framer\";import{useCallback,useRef,useState,useEffect}from\"react\";export default function EchoStack(props){const{image,layerCount=5,scaleFactor=.85,offsetX=0,offsetY=-15,rotationOffset=0,opacityFalloff=.1,blurFalloff=1,borderRadius=50,enableShadow=false,shadowColor=\"rgba(0,0,0,0.25)\",shadowSize=10,mirrorMode=\"none\",enableScrollParallax=true,scrollParallaxStrength=20,scrollParallaxDirection=\"vertical\",enablePointerParallax=false,pointerParallaxStrength=10,hoverScale=1.05,hoverDuration=300,hoverStagger=true,hoverStaggerDirection=\"topToBottom\",hoverStaggerDelay=50,style}=props;const isStatic=useIsStaticRenderer();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isLive=!isStatic&&!isCanvas;const ref=useRef(null);const[scrollProgress,setScrollProgress]=useState(0);const[pointer,setPointer]=useState({x:0,y:0});const[hovered,setHovered]=useState(false);// Suppress synthetic mouse events browsers fire ~300ms after touch\nconst lastTouchTime=useRef(0);// Holds the setTimeout that triggers the out animation\nconst touchOutTimer=useRef(null);// ─── Scroll parallax ──────────────────────────────────────────────────────\nuseEffect(()=>{if(!isLive||!enableScrollParallax)return;const handleScroll=()=>{if(!ref.current)return;const rect=ref.current.getBoundingClientRect();const windowH=window.innerHeight;const progress=1-(rect.top+rect.height)/(windowH+rect.height);setScrollProgress(Math.max(-.5,Math.min(.5,progress-.5)));};handleScroll();window.addEventListener(\"scroll\",handleScroll,{passive:true});return()=>window.removeEventListener(\"scroll\",handleScroll);},[isLive,enableScrollParallax]);useEffect(()=>{return()=>{if(touchOutTimer.current)clearTimeout(touchOutTimer.current);};},[]);// ─── Pointer / touch parallax ─────────────────────────────────────────────\nconst handlePointerMove=useCallback(e=>{if(!isLive||!enablePointerParallax||!ref.current)return;const clientX=e.touches?e.touches[0].clientX:e.clientX;const clientY=e.touches?e.touches[0].clientY:e.clientY;const rect=ref.current.getBoundingClientRect();setPointer({x:(clientX-rect.left-rect.width/2)/(rect.width/2),y:(clientY-rect.top-rect.height/2)/(rect.height/2)});},[isLive,enablePointerParallax]);// ─── Desktop mouse ────────────────────────────────────────────────────────\nconst onMouseEnter=useCallback(()=>{if(!isLive||Date.now()-lastTouchTime.current<500)return;setHovered(true);},[isLive]);const handleMouseLeave=useCallback(()=>{if(Date.now()-lastTouchTime.current<500)return;setPointer({x:0,y:0});setHovered(false);},[]);// ─── Touch: play full in→out cycle on every tap ───────────────────────────\nconst handleTouchStart=useCallback(()=>{if(!isLive)return;lastTouchTime.current=Date.now();// Cancel any in-progress out timer so retapping mid-animation works\nif(touchOutTimer.current){clearTimeout(touchOutTimer.current);touchOutTimer.current=null;}setHovered(true);// Wait for the full in-animation to finish, then trigger out\nconst maxStaggerDelay=hoverStagger?(layerCount-1)*hoverStaggerDelay:0;touchOutTimer.current=setTimeout(()=>{setHovered(false);touchOutTimer.current=null;},hoverDuration+maxStaggerDelay);},[isLive,hoverDuration,hoverStagger,layerCount,hoverStaggerDelay]);const handleTouchEnd=useCallback(()=>{setPointer({x:0,y:0});},[]);// ─── Placeholder ──────────────────────────────────────────────────────────\nif(!image){return /*#__PURE__*/_jsx(\"div\",{style:{...style,background:\"#e0e0e0\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#666\",fontSize:14,fontFamily:\"sans-serif\",borderRadius:`${borderRadius}%`},children:\"Select an image\"});}const br=`${borderRadius}%`;return /*#__PURE__*/_jsx(\"div\",{style:style,children:/*#__PURE__*/_jsx(\"div\",{ref:ref,onMouseMove:handlePointerMove,onMouseEnter:onMouseEnter,onMouseLeave:handleMouseLeave,onTouchStart:handleTouchStart,onTouchMove:handlePointerMove,onTouchEnd:handleTouchEnd,style:{position:\"absolute\",top:0,left:0,right:0,bottom:0,overflow:\"hidden\",borderRadius:br},children:Array.from({length:layerCount}).map((_,i)=>{const scale=Math.pow(scaleFactor,i);if(scale<.05)return null;const blur=(layerCount-1-i)*blurFalloff;const opacity=Math.max(0,1-i*opacityFalloff);const rotation=i*rotationOffset;let scrollTx=0,scrollTy=0;if(isLive&&enableScrollParallax){const p=scrollProgress*scrollParallaxStrength*i;if(scrollParallaxDirection===\"vertical\")scrollTy=p;else if(scrollParallaxDirection===\"horizontal\")scrollTx=p;else{scrollTx=p;scrollTy=p;}}let ptrTx=0,ptrTy=0;if(isLive&&enablePointerParallax){ptrTx=pointer.x*-pointerParallaxStrength*i;ptrTy=pointer.y*-pointerParallaxStrength*i;}const tx=i*offsetX+scrollTx+ptrTx;const ty=i*offsetY+scrollTy+ptrTy;let msx=1,msy=1;if(mirrorMode===\"alternateH\"&&i%2===1)msx=-1;else if(mirrorMode===\"alternateV\"&&i%2===1)msy=-1;const layerTransform=[`translate(${tx}px, ${ty}px)`,`scale(${scale})`,rotation!==0?`rotate(${rotation}deg)`:null,msx!==1||msy!==1?`scale(${msx}, ${msy})`:null].filter(Boolean).join(\" \");const shadowVal=enableShadow&&i>0?`0px ${i*shadowSize*.4}px ${i*shadowSize}px ${shadowColor}`:\"none\";let hoverDelay=0;if(isLive&&hoverStagger){if(hoverStaggerDirection===\"topToBottom\")hoverDelay=(layerCount-1-i)*hoverStaggerDelay;else if(hoverStaggerDirection===\"bottomToTop\")hoverDelay=i*hoverStaggerDelay;else if(hoverStaggerDirection===\"centerOut\"){const center=(layerCount-1)/2;hoverDelay=Math.abs(i-center)*hoverStaggerDelay;}}const imgScale=isLive&&hovered?hoverScale:1;return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",overflow:\"hidden\",borderRadius:br,opacity,filter:blur>0?`blur(${blur}px)`:\"none\",boxShadow:shadowVal,pointerEvents:i===0?\"auto\":\"none\",transform:layerTransform,transition:isLive?\"transform 0.12s ease-out\":\"none\",willChange:isLive?\"transform\":\"auto\"},children:/*#__PURE__*/_jsx(\"img\",{src:image,alt:\"\",draggable:false,style:{display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:\"center\",transform:`scale(${imgScale})`,transition:isLive?`transform ${hoverDuration}ms ease-out ${hoverDelay}ms`:\"none\",willChange:isLive?\"transform\":\"auto\"}})},i);})})});}addPropertyControls(EchoStack,{image:{type:ControlType.Image,title:\"Image\"},layerCount:{type:ControlType.Number,defaultValue:5,min:1,max:20,title:\"Layers\",description:\"Total number of image copies stacked to create depth\"},scaleFactor:{type:ControlType.Number,defaultValue:.85,min:.5,max:.99,step:.01,title:\"Scale Factor\",description:\"How much each layer shrinks relative to the one in front\"},offsetX:{type:ControlType.Number,defaultValue:0,min:-50,max:50,title:\"Offset X\",description:\"Horizontal shift per layer in pixels\"},offsetY:{type:ControlType.Number,defaultValue:-15,min:-50,max:50,title:\"Offset Y\",description:\"Vertical shift per layer in pixels\"},rotationOffset:{type:ControlType.Number,defaultValue:0,min:-30,max:30,step:.5,title:\"Rotation per Layer\",description:\"Each layer rotates by this many degrees, creating a fan effect\"},opacityFalloff:{type:ControlType.Number,defaultValue:.1,min:0,max:1,step:.05,title:\"Opacity Falloff\",description:\"How quickly back layers fade out\"},blurFalloff:{type:ControlType.Number,defaultValue:1,min:0,max:10,title:\"Blur Falloff\",description:\"Back layers are blurred; the front layer is always sharp\"},borderRadius:{type:ControlType.Number,defaultValue:50,min:0,max:50,title:\"Roundness %\",description:\"0 = square corners, 50 = full circle\"},enableShadow:{type:ControlType.Boolean,defaultValue:false,title:\"Drop Shadow\",description:\"Shadow deepens on back layers to enhance the depth illusion\"},shadowColor:{type:ControlType.Color,defaultValue:\"rgba(0,0,0,0.25)\",title:\"Shadow Color\",hidden:p=>!p.enableShadow},shadowSize:{type:ControlType.Number,defaultValue:10,min:1,max:60,title:\"Shadow Size\",hidden:p=>!p.enableShadow},mirrorMode:{type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"alternateH\",\"alternateV\"],optionTitles:[\"None\",\"Ripple Horizontal\",\"Ripple Vertical\"],title:\"Mirror Layers\",description:\"Flips every other layer for a ripple/echo effect\"},enableScrollParallax:{type:ControlType.Boolean,defaultValue:true,title:\"Scroll Parallax\",description:\"Layers shift at different speeds as the page scrolls\"},scrollParallaxStrength:{type:ControlType.Number,defaultValue:20,min:1,max:100,title:\"Scroll Amount\",hidden:p=>!p.enableScrollParallax},scrollParallaxDirection:{type:ControlType.Enum,defaultValue:\"vertical\",options:[\"vertical\",\"horizontal\",\"both\"],optionTitles:[\"Vertical\",\"Horizontal\",\"Both\"],title:\"Scroll Direction\",hidden:p=>!p.enableScrollParallax},enablePointerParallax:{type:ControlType.Boolean,defaultValue:false,title:\"Pointer Parallax\",description:\"Layers shift with mouse position or touch on mobile\"},pointerParallaxStrength:{type:ControlType.Number,defaultValue:10,min:1,max:50,title:\"Pointer Amount\",hidden:p=>!p.enablePointerParallax},hoverScale:{type:ControlType.Number,defaultValue:1.05,min:1,max:1.5,step:.01,title:\"Hover Scale\",description:\"How much images zoom in when hovered\"},hoverDuration:{type:ControlType.Number,defaultValue:300,min:50,max:1e3,step:10,title:\"Hover Speed (ms)\"},hoverStagger:{type:ControlType.Boolean,defaultValue:true,title:\"Stagger Hover\",description:\"Layers animate in sequence rather than all at once\"},hoverStaggerDirection:{type:ControlType.Enum,defaultValue:\"topToBottom\",options:[\"topToBottom\",\"bottomToTop\",\"centerOut\",\"allAtOnce\"],optionTitles:[\"Top → Bottom\",\"Bottom → Top\",\"Center Out\",\"All at Once\"],title:\"Stagger Direction\",hidden:p=>!p.hoverStagger},hoverStaggerDelay:{type:ControlType.Number,defaultValue:50,min:0,max:200,step:5,title:\"Stagger Delay (ms)\",description:\"Milliseconds between each layer's animation start\",hidden:p=>!p.hoverStagger}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"EchoStack\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./EchoStack.map"],"mappings":"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"}