{"version":3,"file":"CursorDotTrail.CDm7kswf.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/QAkzCyLGXze5WoqyvOtW/iLyzK205nNCuHNDP5Nsc/CursorDotTrail.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CursorDotTrail(props){const{color,colorInverted,size,hoverSize,borderWidth,spring,friction,trailDuration,transitionSpeed}=props;const isStatic=useIsStaticRenderer();const isBrowser=typeof window!==\"undefined\"&&typeof document!==\"undefined\";const canvasRef=useRef(null);const pointsRef=useRef([]);const ballRef=useRef({x:0,y:0});const targetRef=useRef({x:0,y:0});const velocityRef=useRef({x:0,y:0});const animRef=useRef();const lastTimeRef=useRef(0);const radiusRef=useRef(size/2);const fillOpacityRef=useRef(1);const strokeOpacityRef=useRef(0);const lineOpacityRef=useRef(0);const lineWidthRef=useRef(0);const lineTargetWidthRef=useRef(0);const lineProgressRef=useRef(0);const lineYRef=useRef(0);useEffect(()=>{if(!isBrowser||isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const resize=()=>{const dpr=Math.max(1,window.devicePixelRatio||1);const w=window.innerWidth;const h=window.innerHeight;canvas.style.width=`${w}px`;canvas.style.height=`${h}px`;canvas.width=Math.floor(w*dpr);canvas.height=Math.floor(h*dpr);ctx.setTransform(dpr,0,0,dpr,0,0);const centerX=w/2;const centerY=h/2;if(!ballRef.current.x&&!ballRef.current.y){ballRef.current={x:centerX,y:centerY};}if(!targetRef.current.x&&!targetRef.current.y){targetRef.current={x:centerX,y:centerY};}};resize();const onMouseMove=e=>{targetRef.current={x:e.clientX,y:e.clientY};};window.addEventListener(\"mousemove\",onMouseMove);window.addEventListener(\"resize\",resize);const lerp=(from,to,amt)=>from+(to-from)*amt;const animate=()=>{const now=performance.now();const dt=Math.min(now-lastTimeRef.current,33);lastTimeRef.current=now;ctx.clearRect(0,0,canvas.width,canvas.height);// physics\nconst dx=targetRef.current.x-ballRef.current.x;const dy=targetRef.current.y-ballRef.current.y;velocityRef.current.x+=dx*spring;velocityRef.current.y+=dy*spring;velocityRef.current.x*=friction;velocityRef.current.y*=friction;ballRef.current.x+=velocityRef.current.x;ballRef.current.y+=velocityRef.current.y;// trail\npointsRef.current.push({x:ballRef.current.x,y:ballRef.current.y,age:0});for(let i=0;i<pointsRef.current.length;i++)pointsRef.current[i].age+=dt;pointsRef.current=pointsRef.current.filter(p=>p.age<trailDuration);// element under cursor\nconst el=document.elementFromPoint(targetRef.current.x,targetRef.current.y);// hide-trail\nconst isHideTrail=!!el?.closest('[aria-label~=\"trail{hide}\"],[data-framer-name~=\"trail{hide}\"]');if(isHideTrail){ctx.clearRect(0,0,canvas.width,canvas.height);animRef.current=requestAnimationFrame(animate);return;}// invert color\nconst isInvertColor=!!el?.closest('[aria-label~=\"trail{invert-color}\"],[data-framer-name~=\"trail{invert-color}\"]');const currentColor=isInvertColor?colorInverted:color;if(pointsRef.current.length>1){ctx.beginPath();ctx.moveTo(pointsRef.current[0].x,pointsRef.current[0].y);for(let i=1;i<pointsRef.current.length;i++){const p=pointsRef.current[i];ctx.lineTo(p.x,p.y);}const oldest=pointsRef.current[0];const newest=pointsRef.current[pointsRef.current.length-1];const oldestOpacity=1-oldest.age/trailDuration;const gradient=ctx.createLinearGradient(oldest.x,oldest.y,newest.x,newest.y);gradient.addColorStop(0,hexToRgba(currentColor,Math.max(0,oldestOpacity*.3)));gradient.addColorStop(1,hexToRgba(currentColor,1));ctx.strokeStyle=gradient;ctx.lineWidth=Math.max(2,size/4);ctx.lineCap=\"round\";ctx.lineJoin=\"round\";ctx.stroke();}// interaction\nconst isRing=!!el?.closest(\"a,button,[role~='button']\");const hideDot=!!el?.closest('[aria-label~=\"button\"]');const linkEl=el?.closest('[aria-label~=\"trail{link}\"],[data-framer-name~=\"trail{link}\"]');const workCardEl=el?.closest('[aria-label~=\"work-card\"]');const isLink=!!linkEl;const isWorkCard=!!workCardEl;// link underline\nif(isLink&&linkEl){const rect=linkEl.getBoundingClientRect();ballRef.current.x=rect.left+rect.width/2;ballRef.current.y=rect.bottom;lineTargetWidthRef.current=rect.width;lineYRef.current=rect.bottom;}else{lineTargetWidthRef.current=0;}// radius / opacities\nconst targetRadius=isWorkCard||!isRing&&!isLink?size/2:hoverSize/2;radiusRef.current=lerp(radiusRef.current,targetRadius,transitionSpeed);fillOpacityRef.current=lerp(fillOpacityRef.current,isWorkCard?1:isRing||isLink?0:1,transitionSpeed);strokeOpacityRef.current=lerp(strokeOpacityRef.current,isWorkCard?0:isRing?1:0,transitionSpeed);lineOpacityRef.current=lerp(lineOpacityRef.current,isWorkCard?0:isLink?1:0,transitionSpeed);// underline animation\nconst targetProgress=isLink?1:0;lineProgressRef.current=lerp(lineProgressRef.current,targetProgress,.15);lineWidthRef.current=lerp(lineWidthRef.current,lineTargetWidthRef.current*lineProgressRef.current,transitionSpeed);if(!hideDot){if(isLink&&lineOpacityRef.current>.01&&linkEl){const linkRect=linkEl.getBoundingClientRect();const y=linkRect.bottom+1;const currentWidth=lineWidthRef.current;const startX=linkRect.left+(linkRect.width-currentWidth)/2;ctx.beginPath();ctx.moveTo(startX,y);ctx.lineTo(startX+currentWidth,y);ctx.strokeStyle=hexToRgba(currentColor,lineOpacityRef.current);ctx.lineWidth=Math.max(1,borderWidth-1);ctx.stroke();}else{ctx.beginPath();ctx.arc(ballRef.current.x,ballRef.current.y,radiusRef.current,0,Math.PI*2);if(strokeOpacityRef.current>.01){ctx.strokeStyle=hexToRgba(currentColor,strokeOpacityRef.current);ctx.lineWidth=borderWidth;ctx.stroke();}if(fillOpacityRef.current>.01){ctx.fillStyle=hexToRgba(currentColor,fillOpacityRef.current);ctx.fill();}}}animRef.current=requestAnimationFrame(animate);};lastTimeRef.current=performance.now();animRef.current=requestAnimationFrame(animate);return()=>{window.removeEventListener(\"mousemove\",onMouseMove);window.removeEventListener(\"resize\",resize);if(animRef.current)cancelAnimationFrame(animRef.current);};},[isStatic,color,colorInverted,size,hoverSize,borderWidth,spring,friction,trailDuration,transitionSpeed]);if(!isBrowser||isStatic){return null;}return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"fixed\",inset:0,width:\"100vw\",height:\"100vh\",display:\"block\",pointerEvents:\"none\",zIndex:9999}}),document.body);}function hexToRgba(color,alpha){if(!color)return`rgba(0,0,0,${alpha})`;if(color.startsWith(\"rgba\")){return color.replace(/rgba\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*[^)]+\\)/,(_,r,g,b)=>`rgba(${r},${g},${b},${alpha})`);}if(color.startsWith(\"rgb(\")){const body=color.slice(4,-1);return`rgba(${body},${alpha})`;}if(color.startsWith(\"#\")){let r=0,g=0,b=0;if(color.length===4){r=parseInt(color[1]+color[1],16);g=parseInt(color[2]+color[2],16);b=parseInt(color[3]+color[3],16);}else if(color.length===7){r=parseInt(color.slice(1,3),16);g=parseInt(color.slice(3,5),16);b=parseInt(color.slice(5,7),16);}return`rgba(${r},${g},${b},${alpha})`;}return`rgba(0,0,0,${alpha})`;}CursorDotTrail.displayName=\"Cursor Dot Trail\";addPropertyControls(CursorDotTrail,{color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#080808\"},colorInverted:{type:ControlType.Color,title:\"Inverted Color\",defaultValue:\"#FFFFFF\"},size:{type:ControlType.Number,title:\"Dot Size\",defaultValue:12,min:6,max:80},hoverSize:{type:ControlType.Number,title:\"Hover Size\",defaultValue:40,min:6,max:200},borderWidth:{type:ControlType.Number,title:\"Border Width\",defaultValue:2,min:1,max:10},spring:{type:ControlType.Number,title:\"Follow Spring\",defaultValue:.15,min:.01,max:.5,step:.01},friction:{type:ControlType.Number,title:\"Follow Friction\",defaultValue:.5,min:.1,max:.95,step:.05},trailDuration:{type:ControlType.Number,title:\"Trail Duration\",defaultValue:200,min:200,max:3e3,step:100},transitionSpeed:{type:ControlType.Number,title:\"Transition Speed\",defaultValue:.15,min:.01,max:1,step:.01,description:\"✦ Rename layers to enable extras: trail{hide} to disable, trail{invert-color} to swap colors, trail{link} for link interaction. eg: Button | trail{hide}\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorDotTrail\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorDotTrail.map"],"mappings":"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"}