{"version":3,"file":"Cursor_Image_Reveal.Cgwpqual.mjs","names":["React.useState","React.useRef","p"],"sources":["https:/framerusercontent.com/modules/NEgs8xufWsZ1QxMKCLyq/yCCr0GLfw5C8fMp8FNvv/Cursor_Image_Reveal.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{motion,AnimatePresence}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";export default function CursorImageTrail(props){const{image1,image2,image3,image4,image5,image6,image7,image8,image9,image10,image11,image12,image13,image14,image15,image16,image17,image18,image19,image20,// Ciao-like defaults\nlifespanMs=220,maxSpots=1,minIntervalMs=0,minDistancePx=2,bg=\"transparent\",hideCursor=true,blendMode=\"screen\",minSize=24,maxSize=52,maxRotation=20,// keep burst controls but we won't use them\nburstCount=1,burstDelayMs=0,jitterPx=0,// motion (no bounce)\n// enter* kept for prop compatibility but not used\nenterStiffness=420,enterDamping=18,enterMass=.6,exitDuration=.12,fillViewport=true,fixedHeight=600}=props;const images=[image1,image2,image3,image4,image5,image6,image7,image8,image9,image10,image11,image12,image13,image14,image15,image16,image17,image18,image19,image20].filter(Boolean);const[spots,setSpots]=React.useState([]);const idRef=React.useRef(0);const lastTime=React.useRef(0);const lastPos=React.useRef(null);const timers=React.useRef(new Map);const wrap=React.useRef(null);// deck + lastSrc to reduce immediate repeats\nconst deckRef=React.useRef([]);const lastSrcRef=React.useRef(null);React.useEffect(()=>{return()=>{timers.current.forEach(t=>clearTimeout(t));timers.current.clear();};},[]);const shuffle=arr=>{const a=arr.slice();for(let i=a.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[a[i],a[j]]=[a[j],a[i]];}return a;};const getNextImage=()=>{if(deckRef.current.length===0)deckRef.current=shuffle(images);let next=deckRef.current.pop();if(lastSrcRef.current&&images.length>1&&next===lastSrcRef.current){deckRef.current.unshift(next);next=deckRef.current.pop();}lastSrcRef.current=next;return next;};const remove=id=>{setSpots(p=>p.filter(s=>s.id!==id));const t=timers.current.get(id);if(t){clearTimeout(t);timers.current.delete(id);}};// single spawn (no burst)\nconst spawn=(clientX,clientY,force=false)=>{if(!wrap.current||images.length===0)return;const now=performance.now();if(!force&&now-lastTime.current<minIntervalMs)return;const rect=wrap.current.getBoundingClientRect();const x=clientX-rect.left;const y=clientY-rect.top;if(!force&&lastPos.current){const dx=x-lastPos.current.x;const dy=y-lastPos.current.y;if(dx*dx+dy*dy<minDistancePx*minDistancePx)return;}lastPos.current={x,y};lastTime.current=now;const src=getNextImage();const size=Math.max(8,Math.min(2048,minSize+Math.random()*(maxSize-minSize)));const rot=(Math.random()-.5)*2*maxRotation;const id=idRef.current++;// keep only ONE sprite on screen\nsetSpots([{id,x,y,src,size,rot}]);const t=window.setTimeout(()=>remove(id),lifespanMs);timers.current.set(id,t);};const onMove=e=>{spawn(e.clientX,e.clientY,false);};return /*#__PURE__*/_jsx(\"div\",{ref:wrap,onPointerMove:onMove,onPointerDown:onMove,style:{position:\"relative\",width:\"100%\",height:fillViewport?\"100vh\":fixedHeight,overflow:\"hidden\",background:bg,touchAction:\"none\",cursor:hideCursor?\"none\":\"auto\"},children:/*#__PURE__*/_jsx(AnimatePresence,{children:spots.map(({id,x,y,src,size,rot})=>/*#__PURE__*/_jsx(motion.img,{src:src,alt:\"\",initial:{opacity:0,scale:1,rotate:rot,x:\"-50%\",y:\"-50%\"},animate:{opacity:1,scale:1,rotate:rot,transition:{type:\"tween\",ease:\"linear\",duration:.08}},exit:{opacity:0,scale:1,transition:{type:\"tween\",ease:\"linear\",duration:exitDuration}},style:{position:\"absolute\",left:x,top:y,width:size,height:\"auto\",pointerEvents:\"none\",transform:\"translate(-50%,-50%)\",willChange:\"transform,opacity\",mixBlendMode:blendMode}},id))})});}addPropertyControls(CursorImageTrail,{image1:{type:ControlType.Image,title:\"Image 1\"},image2:{type:ControlType.Image,title:\"Image 2\"},image3:{type:ControlType.Image,title:\"Image 3\"},image4:{type:ControlType.Image,title:\"Image 4\"},image5:{type:ControlType.Image,title:\"Image 5\"},image6:{type:ControlType.Image,title:\"Image 6\"},image7:{type:ControlType.Image,title:\"Image 7\"},image8:{type:ControlType.Image,title:\"Image 8\"},image9:{type:ControlType.Image,title:\"Image 9\"},image10:{type:ControlType.Image,title:\"Image 10\"},image11:{type:ControlType.Image,title:\"Image 11\"},image12:{type:ControlType.Image,title:\"Image 12\"},image13:{type:ControlType.Image,title:\"Image 13\"},image14:{type:ControlType.Image,title:\"Image 14\"},image15:{type:ControlType.Image,title:\"Image 15\"},image16:{type:ControlType.Image,title:\"Image 16\"},image17:{type:ControlType.Image,title:\"Image 17\"},image18:{type:ControlType.Image,title:\"Image 18\"},image19:{type:ControlType.Image,title:\"Image 19\"},image20:{type:ControlType.Image,title:\"Image 20\"},lifespanMs:{type:ControlType.Number,title:\"Lifespan (ms)\",min:60,max:1e5,step:10},maxSpots:{type:ControlType.Number,title:\"Max Sprites\",min:1,max:4,step:1},minIntervalMs:{type:ControlType.Number,title:\"Spawn Throttle (ms)\",min:0,max:50,step:1},minDistancePx:{type:ControlType.Number,title:\"Min Move (px)\",min:0,max:12,step:1},bg:{type:ControlType.Color,title:\"Background\"},hideCursor:{type:ControlType.Boolean,title:\"Hide Cursor\"},blendMode:{type:ControlType.Enum,title:\"Blend Mode\",options:[\"normal\",\"screen\",\"multiply\",\"overlay\",\"lighten\",\"darken\"],optionTitles:[\"Normal\",\"Screen\",\"Multiply\",\"Overlay\",\"Lighten\",\"Darken\"]},minSize:{type:ControlType.Number,title:\"Min Size (px)\",min:10,max:1e3,step:1},maxSize:{type:ControlType.Number,title:\"Max Size (px)\",min:12,max:1e3,step:1},maxRotation:{type:ControlType.Number,title:\"Max \\xb1Rotate (\\xb0)\",min:0,max:60,step:1},fillViewport:{type:ControlType.Boolean,title:\"Fill 100vh\"},fixedHeight:{type:ControlType.Number,title:\"Fixed Height (px)\",min:200,max:2e3,step:10,hidden:p=>p.fillViewport}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorImageTrail\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Cursor_Image_Reveal.map"],"mappings":"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"}