{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/eZsIxVFOY5rzl3YYZEQz/B1qSOMblDDCWgudkBMoX/Mouse_tracker.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export default function CanvasComponent(props){const canvasRef=useRef(null);useEffect(()=>{const canvas=canvasRef.current;const ctx=canvas.getContext(\"2d\");let mouseMoved=false;const pointer={x:.5*window.innerWidth,y:.5*window.innerHeight};const trail=new Array(props.pointsNumber).fill(null).map(()=>({x:pointer.x,y:pointer.y,dx:0,dy:0}));const updateMousePosition=(eX,eY)=>{pointer.x=eX;pointer.y=eY;};const setupCanvas=()=>{canvas.width=window.innerWidth;canvas.height=window.innerHeight;};const update=t=>{if(!mouseMoved){pointer.x=(.5+.3*Math.cos(.002*t)*Math.sin(.005*t))*window.innerWidth;pointer.y=(.5+.2*Math.cos(.005*t)+.1*Math.cos(.01*t))*window.innerHeight;}ctx.clearRect(0,0,canvas.width,canvas.height);trail.forEach((p,pIdx)=>{const prev=pIdx===0?pointer:trail[pIdx-1];const spring=pIdx===0?.4*props.spring:props.spring;p.dx+=(prev.x-p.x)*spring;p.dy+=(prev.y-p.y)*spring;p.dx*=props.friction;p.dy*=props.friction;p.x+=p.dx;p.y+=p.dy;});ctx.lineCap=\"round\";ctx.beginPath();ctx.moveTo(trail[0].x,trail[0].y);for(let i=1;i<trail.length-1;i++){const xc=.5*(trail[i].x+trail[i+1].x);const yc=.5*(trail[i].y+trail[i+1].y);ctx.quadraticCurveTo(trail[i].x,trail[i].y,xc,yc);ctx.lineWidth=props.widthFactor*(props.pointsNumber-i);ctx.stroke();}ctx.lineTo(trail[trail.length-1].x,trail[trail.length-1].y);ctx.stroke();window.requestAnimationFrame(update);};window.addEventListener(\"click\",e=>{updateMousePosition(e.pageX,e.pageY);});window.addEventListener(\"mousemove\",e=>{mouseMoved=true;updateMousePosition(e.pageX,e.pageY);});window.addEventListener(\"touchmove\",e=>{mouseMoved=true;updateMousePosition(e.targetTouches[0].pageX,e.targetTouches[0].pageY);});window.addEventListener(\"resize\",setupCanvas);setupCanvas();update(0);return()=>{window.removeEventListener(\"click\",updateMousePosition);window.removeEventListener(\"mousemove\",updateMousePosition);window.removeEventListener(\"touchmove\",updateMousePosition);window.removeEventListener(\"resize\",setupCanvas);};},[props]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100vw\",height:\"100vh\",position:\"sticky\",top:0}});}addPropertyControls(CanvasComponent,{pointsNumber:{type:ControlType.Number,defaultValue:40,min:1,max:100,step:1,title:\"Points Number\"},widthFactor:{type:ControlType.Number,defaultValue:.3,min:0,max:1,step:.01,title:\"Width Factor\"},mouseThreshold:{type:ControlType.Number,defaultValue:.6,min:0,max:1,step:.01,title:\"Mouse Threshold\"},spring:{type:ControlType.Number,defaultValue:.4,min:0,max:1,step:.01,title:\"Spring\"},friction:{type:ControlType.Number,defaultValue:.5,min:0,max:1,step:.01,title:\"Friction\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CanvasComponent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Mouse_tracker.map"],
  "mappings": "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",
  "names": ["CanvasComponent", "props", "canvasRef", "pe", "ue", "canvas", "ctx", "mouseMoved", "pointer", "window", "trail", "updateMousePosition", "eX", "eY", "setupCanvas", "update", "t", "p", "pIdx", "prev", "spring", "i", "xc", "yc", "e", "addPropertyControls", "ControlType"]
}
