{"version":3,"file":"Image_Flicker.osKbcfe3.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/B2hxrk05Nc2xGvHAbVsk/xZlAk385TCXSH5a8nUNB/Image_Flicker.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const TRAIL_LENGTH=30;/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 300\n */export default function CursorImageFlicker(props){const[trail,setTrail]=useState([]);const lastPosition=useRef({x:0,y:0});const accumulatedDistance=useRef(0);const imageIndexRef=useRef(0);const containerRef=useRef(null);const trailIdRef=useRef(0);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{if(isCanvas)return;const updateCursorPosition=e=>{if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const newX=e.clientX-rect.left+props.offsetX;const newY=e.clientY-rect.top+props.offsetY;const distance=Math.sqrt(Math.pow(newX-lastPosition.current.x,2)+Math.pow(newY-lastPosition.current.y,2));accumulatedDistance.current+=distance*props.speedMultiplier;if(accumulatedDistance.current>=80){const imageIndex=imageIndexRef.current%props.images.length;imageIndexRef.current+=1;accumulatedDistance.current=0;const id=trailIdRef.current++;setTrail(prev=>{const next=[...prev,{id,x:newX,y:newY,imageIndex,opacity:1}];return next.slice(-TRAIL_LENGTH);});// Fade starts at 2500ms — by then ~15 images have accumulated\nsetTimeout(()=>{setTrail(prev=>prev.map(item=>item.id===id?{...item,opacity:0}:item));},2500);// Remove from DOM after fade completes\nsetTimeout(()=>{setTrail(prev=>prev.filter(item=>item.id!==id));},3500);}lastPosition.current={x:newX,y:newY};};window.addEventListener(\"mousemove\",updateCursorPosition);return()=>window.removeEventListener(\"mousemove\",updateCursorPosition);},[props.images.length,props.speedMultiplier,props.offsetX,props.offsetY,isCanvas]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",minWidth:`${props.imageSize}px`,minHeight:`${props.imageSize}px`,position:\"relative\",pointerEvents:\"none\",overflow:\"visible\"},children:isCanvas&&props.images.length>0?/*#__PURE__*/_jsx(\"img\",{src:props.images[0],alt:\"Cursor\",style:{position:\"absolute\",left:\"50%\",top:\"50%\",transform:\"translate(-50%, -50%)\",opacity:1,width:`${props.imageSize}px`,height:`${props.imageSize}px`,pointerEvents:\"none\",objectFit:props.imageFit}}):trail.map((item,index)=>{// Subtle scale/opacity falloff so older items feel more faded\nconst trailAge=trail.length-1-index;const baseScale=1;const baseOpacity=item.opacity*(1-trailAge*.03);return /*#__PURE__*/_jsx(\"img\",{src:props.images[item.imageIndex%props.images.length],alt:\"Cursor trail\",style:{position:\"absolute\",left:`${item.x}px`,top:`${item.y}px`,transform:`translate(-50%, -50%) scale(${baseScale})`,opacity:baseOpacity,width:`${props.imageSize}px`,height:`${props.imageSize}px`,pointerEvents:\"none\",objectFit:props.imageFit,transition:\"transform 0.3s ease, opacity 1s ease\",zIndex:index}},item.id);})});}CursorImageFlicker.defaultProps={images:[],speedMultiplier:1,offsetX:0,offsetY:0,imageFit:\"contain\",imageSize:50};addPropertyControls(CursorImageFlicker,{images:{type:ControlType.Array,control:{type:ControlType.Image},title:\"Images\"},speedMultiplier:{type:ControlType.Number,title:\"Speed Multiplier\",min:.1,max:10,step:.1},offsetX:{type:ControlType.Number,title:\"X Offset\",min:-500,max:500,step:1},offsetY:{type:ControlType.Number,title:\"Y Offset\",min:-500,max:500,step:1},imageFit:{type:ControlType.Enum,title:\"Image Fit\",options:[\"contain\",\"cover\",\"fill\",\"none\",\"scale-down\"],defaultValue:\"contain\"},imageSize:{type:ControlType.Number,title:\"Image Size\",min:10,max:1e3,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorImageFlicker\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"300\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"300\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Image_Flicker.map"],"mappings":"yMAKG,SAAwB,EAAmB,EAAM,CAAC,GAAK,CAAC,EAAM,GAAUA,EAAS,EAAE,CAAC,CAAO,EAAaC,EAAO,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAO,EAAoBA,EAAO,EAAE,CAAO,EAAcA,EAAO,EAAE,CAAO,EAAaA,EAAO,KAAK,CAAO,EAAWA,EAAO,EAAE,CAAO,EAAS,EAAa,SAAS,GAAG,EAAa,OAEsB,OAFf,MAAc,CAAC,GAAG,EAAS,OAAO,IAAM,EAAqB,GAAG,CAAC,GAAG,CAAC,EAAa,QAAQ,OAAO,IAAM,EAAK,EAAa,QAAQ,uBAAuB,CAAO,EAAK,EAAE,QAAQ,EAAK,KAAK,EAAM,QAAc,EAAK,EAAE,QAAQ,EAAK,IAAI,EAAM,QAAc,EAAS,KAAK,MAAc,EAAK,EAAa,QAAQ,IAAE,GAAY,EAAK,EAAa,QAAQ,IAAE,EAAG,CAA6D,GAA5D,EAAoB,SAAS,EAAS,EAAM,gBAAmB,EAAoB,SAAS,GAAG,CAAC,IAAM,EAAW,EAAc,QAAQ,EAAM,OAAO,OAAO,EAAc,SAAS,EAAE,EAAoB,QAAQ,EAAE,IAAM,EAAG,EAAW,UAAU,EAAS,GAAkB,CAAC,GAAG,EAAK,CAAC,KAAG,EAAE,EAAK,EAAE,EAAK,aAAW,QAAQ,EAAE,CAAC,CAAa,MAAM,CAAC,EAAa,CAAG,CACl/B,eAAe,CAAC,EAAS,GAAM,EAAK,IAAI,GAAM,EAAK,KAAK,EAAG,CAAC,GAAG,EAAK,QAAQ,EAAE,CAAC,EAAK,CAAC,EAAG,KAAK,CAC7F,eAAe,CAAC,EAAS,GAAM,EAAK,OAAO,GAAM,EAAK,KAAK,EAAG,CAAC,EAAG,KAAK,CAAE,EAAa,QAAQ,CAAC,EAAE,EAAK,EAAE,EAAK,EAA6D,OAA1D,EAAO,iBAAiB,YAAY,EAAqB,KAAW,EAAO,oBAAoB,YAAY,EAAqB,EAAG,CAAC,EAAM,OAAO,OAAO,EAAM,gBAAgB,EAAM,QAAQ,EAAM,QAAQ,EAAS,CAAC,CAAqB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,SAAS,GAAG,EAAM,UAAU,IAAI,UAAU,GAAG,EAAM,UAAU,IAAI,SAAS,WAAW,cAAc,OAAO,SAAS,UAAU,CAAC,SAAS,GAAU,EAAM,OAAO,OAAO,EAAe,EAAK,MAAM,CAAC,IAAI,EAAM,OAAO,GAAG,IAAI,SAAS,MAAM,CAAC,SAAS,WAAW,KAAK,MAAM,IAAI,MAAM,UAAU,wBAAwB,QAAQ,EAAE,MAAM,GAAG,EAAM,UAAU,IAAI,OAAO,GAAG,EAAM,UAAU,IAAI,cAAc,OAAO,UAAU,EAAM,SAAS,CAAC,CAAC,CAAC,EAAM,KAAK,EAAK,IAAQ,CACz1B,IAAM,EAAS,EAAM,OAAO,EAAE,EAA8B,EAAY,EAAK,SAAS,EAAE,EAAS,KAAK,OAAoB,EAAK,MAAM,CAAC,IAAI,EAAM,OAAO,EAAK,WAAW,EAAM,OAAO,QAAQ,IAAI,eAAe,MAAM,CAAC,SAAS,WAAW,KAAK,GAAG,EAAK,EAAE,IAAI,IAAI,GAAG,EAAK,EAAE,IAAI,UAAU,iCAA4C,QAAQ,EAAY,MAAM,GAAG,EAAM,UAAU,IAAI,OAAO,GAAG,EAAM,UAAU,IAAI,cAAc,OAAO,UAAU,EAAM,SAAS,WAAW,uCAAuC,OAAO,EAAM,CAAC,CAAC,EAAK,GAAG,EAAG,CAAC,CAAC,wBARre,IAA6C,IAAiE,CAAM,EAAa,GAQsW,EAAmB,aAAa,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,UAAU,UAAU,GAAG,CAAC,EAAoB,EAAmB,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,QAAQ,CAAC,KAAK,EAAY,MAAM,CAAC,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,UAAU,QAAQ,OAAO,OAAO,aAAa,CAAC,aAAa,UAAU,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC"}