{"version":3,"file":"shared-lib.C9UeKuyc.mjs","names":["useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/HMj0vLRRtr14yrpzChuy/xCzOF8Jt2WveHE9ylkda/CursorTrail.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function CursorTrail(props){const{color=\"#F0F332\",trailLength=20,dotSize=8,smoothing=.25,fadeTail=true,blendMode=\"screen\"}=props;const isStatic=useIsStaticRenderer();const canvasRef=useRef(null);const rafRef=useRef(null);const pointerRef=useRef({x:-9999,y:-9999});const pointsRef=useRef([]);const hasMovedRef=useRef(false);const safeSmoothing=useMemo(()=>{return Math.min(1,Math.max(.01,smoothing));},[smoothing]);const safeTrailLength=useMemo(()=>{return Math.max(5,Math.min(60,Math.round(trailLength)));},[trailLength]);const safeDotSize=useMemo(()=>{return Math.max(1,dotSize);},[dotSize]);const initializePoints=useCallback((x,y)=>{const points=Array.from({length:safeTrailLength},()=>({x,y}));pointsRef.current=points;},[safeTrailLength]);useEffect(()=>{if(typeof window===\"undefined\")return;if(typeof document===\"undefined\")return;if(isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const resize=()=>{const width=window.innerWidth;const height=window.innerHeight;const dpr=Math.max(1,window.devicePixelRatio||1);canvas.width=Math.floor(width*dpr);canvas.height=Math.floor(height*dpr);canvas.style.width=`${width}px`;canvas.style.height=`${height}px`;ctx.setTransform(dpr,0,0,dpr,0,0);};const onMouseMove=event=>{pointerRef.current={x:event.clientX,y:event.clientY};if(!hasMovedRef.current){hasMovedRef.current=true;initializePoints(event.clientX,event.clientY);}};const draw=()=>{const width=window.innerWidth;const height=window.innerHeight;ctx.clearRect(0,0,width,height);if(!hasMovedRef.current||pointsRef.current.length===0){rafRef.current=window.requestAnimationFrame(draw);return;}const points=pointsRef.current;points[0].x+=(pointerRef.current.x-points[0].x)*safeSmoothing;points[0].y+=(pointerRef.current.y-points[0].y)*safeSmoothing;for(let i=1;i<points.length;i++){points[i].x+=(points[i-1].x-points[i].x)*safeSmoothing;points[i].y+=(points[i-1].y-points[i].y)*safeSmoothing;}const segmentCount=Math.max(1,points.length-1);ctx.strokeStyle=color;ctx.lineCap=\"round\";ctx.lineJoin=\"round\";for(let i=0;i<segmentCount;i++){const current=points[i];const next=points[Math.min(i+1,points.length-1)];const prev=points[Math.max(i-1,0)];const afterNext=points[Math.min(i+2,points.length-1)];const startX=i===0?current.x:(prev.x+current.x)*.5;const startY=i===0?current.y:(prev.y+current.y)*.5;const endX=i>=points.length-2?next.x:(current.x+next.x)*.5;const endY=i>=points.length-2?next.y:(current.y+next.y)*.5;const controlX=(current.x+next.x)*.5;const controlY=(current.y+next.y)*.5;const fallbackControlX=current.x;const fallbackControlY=current.y;const t=1-i/segmentCount;const widthScale=.16+t*.84;const lineWidth=Math.max(.8,safeDotSize*widthScale);const alpha=fadeTail?Math.max(.06,t):1;ctx.globalAlpha=alpha;ctx.lineWidth=lineWidth;ctx.shadowColor=color;ctx.shadowBlur=lineWidth*2;ctx.beginPath();ctx.moveTo(startX,startY);if(i<points.length-2){ctx.quadraticCurveTo(controlX,controlY,endX,endY);}else{ctx.quadraticCurveTo(fallbackControlX,fallbackControlY,endX,endY);}if(i===segmentCount-1){ctx.quadraticCurveTo(next.x,next.y,afterNext.x,afterNext.y);}ctx.stroke();}ctx.shadowBlur=0;ctx.globalAlpha=1;rafRef.current=window.requestAnimationFrame(draw);};resize();initializePoints(pointerRef.current.x,pointerRef.current.y);window.addEventListener(\"resize\",resize);window.addEventListener(\"mousemove\",onMouseMove,{passive:true});rafRef.current=window.requestAnimationFrame(draw);return()=>{window.removeEventListener(\"resize\",resize);window.removeEventListener(\"mousemove\",onMouseMove);if(rafRef.current!==null){window.cancelAnimationFrame(rafRef.current);rafRef.current=null;}};},[color,fadeTail,initializePoints,isStatic,safeDotSize,safeSmoothing]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",pointerEvents:\"none\",zIndex:9999,mixBlendMode:blendMode,overflow:\"hidden\"},\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\"}})});}addPropertyControls(CursorTrail,{color:{type:ControlType.Color,defaultValue:\"#F0F332\"},trailLength:{type:ControlType.Number,defaultValue:20,min:5,max:60,step:1},dotSize:{type:ControlType.Number,defaultValue:8,min:1,max:40,step:.5,unit:\"px\"},smoothing:{type:ControlType.Number,defaultValue:.25,min:0,max:1,step:.01},fadeTail:{type:ControlType.Boolean,defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},blendMode:{type:ControlType.Enum,defaultValue:\"screen\",options:[\"normal\",\"screen\",\"difference\",\"lighten\"],optionTitles:[\"Normal\",\"Screen\",\"Difference\",\"Lighten\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorTrail\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorTrail.map"],"mappings":"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"}