{"version":3,"file":"Cursorfollower.BbcbtAkF.mjs","names":["useState","useRef","size","style"],"sources":["https:/framerusercontent.com/modules/NQEP4N3btms9oY6jfVDa/oNSOH0fhp6pMln5ZiIYh/Cursorfollower.js"],"sourcesContent":["// Cursor-following effect with image, CMS compatible, resets position on mouse enter\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer,RenderTarget}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";/**\n * CursorFollower\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function CursorFollower(props){const{transition={stiffness:500,damping:40,mass:1},...rest}=props;const{image={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"},size=64,opacity=.9,offsetX=0,offsetY=0,hideOnMobile=true,style,borderRadius=8,imageDisplay=\"center\",scale=1,scaleIn=.1,children}=rest;const isStatic=useIsStaticRenderer();const[pos,setPos]=useState({x:0,y:0});const[visible,setVisible]=useState(false);const[imgKey,setImgKey]=useState(image.src);const[cursorKey,setCursorKey]=useState(0);const ref=useRef(null);// Helper to get anchor offset\nfunction getAnchorOffset(display,size){if(display===\"center\")return{ax:size/2,ay:size/2};if(display===\"left\")return{ax:size,ay:size/2};if(display===\"right\")return{ax:0,ay:size/2};if(display===\"bottom\")return{ax:size/2,ay:0};return{ax:size/2,ay:size/2};}// Set default position on mount\nuseEffect(()=>{if(ref.current){const rect=ref.current.getBoundingClientRect();let x=rect.width/2,y=rect.height/2;const{ax,ay}=getAnchorOffset(imageDisplay,size);startTransition(()=>setPos({x:x-ax,y:y-ay}));}},[size,imageDisplay]);// Hide on mobile if enabled\nlet isMobile=false;if(typeof window!==\"undefined\"&&window.matchMedia){isMobile=window.matchMedia(\"(max-width: 768px)\").matches;}if(hideOnMobile&&isMobile||isStatic||RenderTarget.current()===RenderTarget.thumbnail){return null;}// Only show follower when hovering over this instance, constrain to bounds\nfunction isHiddenLayer(target){let el=target;// Only check up to the container (ref.current), not globally\nwhile(el&&el!==ref.current){const style=window.getComputedStyle(el);if(style.display===\"none\"||style.visibility===\"hidden\"||style.opacity===\"0\")return true;el=el.parentElement;}// Do not check anything outside this container\nreturn false;}function handleMouseMove(e){if(typeof window!==\"undefined\"&&isHiddenLayer(e.target)){setVisible(false);return;}const rect=ref.current?.getBoundingClientRect();if(!rect)return;const{ax,ay}=getAnchorOffset(imageDisplay,size);let x=e.clientX-rect.left+offsetX-ax;let y=e.clientY-rect.top+offsetY-ay-20// Move image up by 20px\n;// Clamp so image stays fully in container\nx=Math.max(0-ax,Math.min(rect.width-size-ax+size,x));y=Math.max(0-ay,Math.min(rect.height-size-ay+size,y));startTransition(()=>setPos({x,y}));setVisible(true);}function handleMouseEnter(e){const rect=ref.current?.getBoundingClientRect();if(!rect)return;const{ax,ay}=getAnchorOffset(imageDisplay,size);let x=e.clientX-rect.left+offsetX-ax;let y=e.clientY-rect.top+offsetY-ay-20;x=Math.max(0-ax,Math.min(rect.width-size-ax+size,x));y=Math.max(0-ay,Math.min(rect.height-size-ay+size,y));setPos({x,y})// Instantly set position, no animation\n;setCursorKey(Date.now())// Change key to force remount\n;setVisible(true);}function handleMouseLeave(){setVisible(false);}// Animate line when image changes\nuseEffect(()=>{setImgKey(image.src);},[image.src]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",width:\"100%\",height:\"100%\",...style},onMouseMove:handleMouseMove,onMouseLeave:handleMouseLeave,onMouseEnter:handleMouseEnter,children:[props.children,/*#__PURE__*/_jsx(AnimatePresence,{children:visible&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:opacity,x:pos.x,y:pos.y,scale:scaleIn},animate:{opacity:opacity,x:pos.x,y:pos.y,scale:scale},exit:{opacity:0,scale:scaleIn},style:{position:\"absolute\",width:size,height:size,pointerEvents:\"none\",zIndex:9999,left:0,top:0},transition:{opacity:{type:\"spring\",stiffness:transition.stiffness,damping:transition.damping,mass:transition.mass},x:{type:\"spring\",stiffness:transition.stiffness,damping:transition.damping,mass:transition.mass},y:{type:\"spring\",stiffness:transition.stiffness,damping:transition.damping,mass:transition.mass},scale:{ease:\"easeOut\",duration:.2}},children:/*#__PURE__*/_jsx(\"img\",{src:image.src,alt:image.alt||\"\",style:{width:size,height:size,objectFit:\"contain\",borderRadius:borderRadius,userSelect:\"none\",pointerEvents:\"none\"},draggable:false})},imgKey+\"-\"+cursorKey)})]});}addPropertyControls(CursorFollower,{transition:{type:ControlType.Object,title:\"Transition\",controls:{stiffness:{type:ControlType.Number,defaultValue:500,min:10,max:1e3,step:1,unit:\"\"},damping:{type:ControlType.Number,defaultValue:40,min:1,max:200,step:1,unit:\"\"},mass:{type:ControlType.Number,defaultValue:1,min:.1,max:10,step:.1,unit:\"\"}},defaultValue:{stiffness:500,damping:40,mass:1}},borderRadius:{type:ControlType.Number,title:\"Corner Radius\",defaultValue:8,min:0,max:64,unit:\"px\"},image:{type:ControlType.ResponsiveImage,title:\"Image\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:64,min:16,max:600,unit:\"px\"},opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:.9,min:0,max:1,step:.01},offsetX:{type:ControlType.Number,title:\"Offset X\",defaultValue:0,min:-200,max:200,unit:\"px\"},offsetY:{type:ControlType.Number,title:\"Offset Y\",defaultValue:0,min:-200,max:200,unit:\"px\"},imageDisplay:{type:ControlType.Enum,title:\"Image Display\",defaultValue:\"center\",options:[\"center\",\"left\",\"right\",\"bottom\"],optionTitles:[\"Center\",\"Left\",\"Right\",\"Bottom\"],displaySegmentedControl:true},scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:.1,max:2,step:.01},scaleIn:{type:ControlType.Number,title:\"Scale In\",defaultValue:.1,min:.01,max:1,step:.01},hideOnMobile:{type:ControlType.Boolean,title:\"Hide on Mobile\",defaultValue:true,enabledTitle:\"Hide\",disabledTitle:\"Show\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorFollower\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Cursorfollower.map"],"mappings":"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"}