{"version":3,"file":"CursorDotTrail.CCpllts2.mjs","names":["useRef","__esmMin","init_ssg_sandbox_shims","Ha","de","init_jsx_runtime","init_npm_react_dom_18_3_1","c","init_npm_react_18_3_1","ce","window","init_framer_BL70qLPA","useIsStaticRenderer","addPropertyControls","ControlType","CursorDotTrail","props","isStatic","isBrowser","canvasRef","pointsRef","ballRef","targetRef","velocityRef","animRef","lastTimeRef","radiusRef","size","fillOpacityRef","strokeOpacityRef","lineOpacityRef","lineWidthRef","lineTargetWidthRef","lineProgressRef","lineYRef","canvas","ctx","resize","dpr","w","h","centerX","centerY","onMouseMove","lerp","from","to","amt","animate","now","dt","dx","dy","spring","friction","i","p","trailDuration","el","currentColor","colorInverted","color","oldest","newest","oldestOpacity","gradient","hexToRgba","isRing","hideDot","linkEl","workCardEl","isLink","isWorkCard","rect","targetRadius","hoverSize","transitionSpeed","targetProgress","linkRect","y","currentWidth","startX","borderWidth","alpha","r","g","b","init_CursorDotTrail"],"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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"}