{"version":3,"file":"Mouse_trail.BZ2zupno.mjs","names":["useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/TIiEQkDMkMjIqjNIKnSF/6uF4OdcSAYIt6zQvdZBZ/Mouse_trail.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useCallback,useMemo}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";export default function MouseTrail(props){const{variant=\"line\",fillType=\"solid\",trailColor=\"#0099FF\",trailColorEnd=\"#FF00FF\",trailLength=20,lineWidth=3,fadeOut=true,smoothing=.3,dotSize=6,dotSpacing=10,particleCount=6,particleSize=3,spreadAngle=30,drift=.4,pixelSize=6,snapToGrid=true,blendMode=\"source-over\",// NEW defaults\nautoFade=true,fadeDuration=2,style}=props;const canvasRef=useRef(null);const containerRef=useRef(null);const trailPointsRef=useRef([]);const particlesRef=useRef([]);const rafRef=useRef();const isStatic=useIsStaticRenderer();const timeRef=useRef(performance.now());const baseRGBStart=useMemo(()=>parseColor(trailColor),[trailColor]);const baseRGBEnd=useMemo(()=>parseColor(trailColorEnd),[trailColorEnd]);const rgba=useCallback((a,t)=>{if(fillType===\"gradient\"){const r=baseRGBStart.r+(baseRGBEnd.r-baseRGBStart.r)*t;const g=baseRGBStart.g+(baseRGBEnd.g-baseRGBStart.g)*t;const b=baseRGBStart.b+(baseRGBEnd.b-baseRGBStart.b)*t;return`rgba(${r},${g},${b},${Math.max(0,Math.min(1,a))})`;}return`rgba(${baseRGBStart.r},${baseRGBStart.g},${baseRGBStart.b},${Math.max(0,Math.min(1,a))})`;},[baseRGBStart,baseRGBEnd,fillType]);useEffect(()=>{if(variant!==\"particles\")particlesRef.current=[];},[variant]);const localToCanvas=(clientX,clientY)=>{const canvas=canvasRef.current;if(!canvas)return{x:0,y:0};const rect=canvas.getBoundingClientRect();return{x:clientX-rect.left,y:clientY-rect.top};};const addPoint=useCallback((x,y)=>{const points=trailPointsRef.current;const last=points[points.length-1];if(variant===\"dots\"&&last){const dx=x-last.x;const dy=y-last.y;if(Math.hypot(dx,dy)<dotSpacing)return;}const s=Math.max(.001,1-smoothing);const sx=last?last.x+(x-last.x)*s:x;const sy=last?last.y+(y-last.y)*s:y;// NEW: push with life=1\npoints.push({x:sx,y:sy,life:1});// Keep max length as before\nif(points.length>trailLength)points.splice(0,points.length-trailLength);if(variant===\"particles\"&&last){const dx=sx-last.x;const dy=sy-last.y;const speed=Math.hypot(dx,dy);if(speed>2){const angle=Math.atan2(dy,dx);const spread=spreadAngle*Math.PI/180;for(let i=0;i<particleCount;i++){const a=angle+(Math.random()-.5)*spread;const v=speed*.1+Math.random()*2;particlesRef.current.push({x:sx,y:sy,vx:Math.cos(a)*v,vy:Math.sin(a)*v,life:.8+Math.random()*.4,size:particleSize+Math.random()*1.5});}}}},[trailLength,smoothing,variant,dotSpacing,particleCount,particleSize,spreadAngle]);const drawFrame=useCallback(dt=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;ctx.globalCompositeOperation=blendMode;const rect=canvas.getBoundingClientRect();ctx.clearRect(0,0,rect.width,rect.height);const points=trailPointsRef.current;// NEW: age points over time (when enabled)\nif(autoFade&&points.length){const decay=dt/Math.max(.001,fadeDuration);for(let i=points.length-1;i>=0;i--){points[i].life-=decay;if(points[i].life<=0)points.splice(i,1);}}if(points.length<1)return;const indexAlpha=(i,n)=>{if(!fadeOut)return 1;const t=n<=1?1:i/(n-1);return 1-(1-t)*(1-t);};if(variant===\"dots\"){for(let i=0;i<points.length;i++){const p=points[i];const t=i/(points.length-1||1);const a=indexAlpha(i,points.length)*(autoFade?p.life:1);const r=dotSize*(fadeOut?.3+.7*a:1);ctx.fillStyle=rgba(a,t);ctx.beginPath();ctx.arc(p.x,p.y,r,0,Math.PI*2);ctx.fill();}}else if(variant===\"pixel\"){for(let i=0;i<points.length;i++){let{x,y}=points[i];if(snapToGrid){x=Math.round(x/pixelSize)*pixelSize;y=Math.round(y/pixelSize)*pixelSize;}const t=i/(points.length-1||1);const a=indexAlpha(i,points.length)*(autoFade?points[i].life:1);const s=pixelSize*(fadeOut?.6+.4*a:1);ctx.fillStyle=rgba(a,t);ctx.fillRect(x-s/2,y-s/2,s,s);}}else if(variant===\"particles\"){const particles=particlesRef.current;const decayPerSec=1.6;const gravityPerSec=drift*60*.001;const dampingPerSec=.98;const damping=Math.pow(dampingPerSec,dt*60);const g=gravityPerSec*dt*60;const decay=decayPerSec*dt;for(let i=particles.length-1;i>=0;i--){const p=particles[i];p.x+=p.vx*dt*60;p.y+=p.vy*dt*60;p.vx*=damping;p.vy=p.vy*damping+g;p.life-=decay;if(p.life<=0){particles.splice(i,1);}else{ctx.fillStyle=rgba(p.life,1-p.life);ctx.beginPath();ctx.arc(p.x,p.y,p.size*p.life,0,Math.PI*2);ctx.fill();}}if(points.length>1){for(let i=1;i<points.length;i++){const p1=points[i-1];const p2=points[i];const lifeFactor=autoFade?points[i].life:1;const a=.15*indexAlpha(i,points.length)*lifeFactor;ctx.strokeStyle=rgba(a,i/(points.length-1||1));ctx.lineWidth=Math.max(1,lineWidth*.5*a);ctx.beginPath();ctx.moveTo(p1.x,p1.y);ctx.lineTo(p2.x,p2.y);ctx.stroke();}}else{const p=points[0];const a=(autoFade?p.life:1)*.2;ctx.fillStyle=rgba(a,0);ctx.beginPath();ctx.arc(p.x,p.y,lineWidth,0,Math.PI*2);ctx.fill();}}else{if(points.length<2){const p=points[0];const a=autoFade?p.life:1;ctx.fillStyle=rgba(a,0);ctx.beginPath();ctx.arc(p.x,p.y,Math.max(1,lineWidth/2),0,Math.PI*2);ctx.fill();return;}for(let i=1;i<points.length;i++){const p1=points[i-1];const p2=points[i];const t=i/(points.length-1||1);const lifeFactor=autoFade?points[i].life:1;const a=indexAlpha(i,points.length)*lifeFactor;const widthScale=fadeOut?.3+.7*a:1;ctx.strokeStyle=rgba(a,t);ctx.lineWidth=Math.max(1,lineWidth*widthScale);ctx.beginPath();ctx.moveTo(p1.x,p1.y);ctx.lineTo(p2.x,p2.y);ctx.stroke();}}},[variant,fadeOut,rgba,lineWidth,dotSize,drift,blendMode,pixelSize,snapToGrid,autoFade,fadeDuration]);const animate=useCallback(()=>{const now=performance.now();let dt=(now-timeRef.current)/1e3;dt=Math.max(0,Math.min(dt,.05));timeRef.current=now;drawFrame(dt);rafRef.current=requestAnimationFrame(animate);},[drawFrame]);useEffect(()=>{if(isStatic)return;const canvas=canvasRef.current;const container=containerRef.current;if(!canvas||!container)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const resize=()=>{const rect=canvas.getBoundingClientRect();const dpr=window.devicePixelRatio||1;canvas.width=rect.width*dpr;canvas.height=rect.height*dpr;ctx.setTransform(1,0,0,1,0,0);ctx.scale(dpr,dpr);trailPointsRef.current=[];};resize();window.addEventListener(\"resize\",resize);const handlePointerMove=e=>{// Check if the pointer is over the container area\nconst containerRect=container.getBoundingClientRect();if(e.clientX>=containerRect.left&&e.clientX<=containerRect.right&&e.clientY>=containerRect.top&&e.clientY<=containerRect.bottom){const{x,y}=localToCanvas(e.clientX,e.clientY);addPoint(x,y);}};const handlePointerDown=handlePointerMove;// Listen to document instead of canvas\ndocument.addEventListener(\"pointermove\",handlePointerMove,{passive:true});document.addEventListener(\"pointerdown\",handlePointerDown,{passive:true});timeRef.current=performance.now();rafRef.current=requestAnimationFrame(animate);return()=>{window.removeEventListener(\"resize\",resize);document.removeEventListener(\"pointermove\",handlePointerMove);document.removeEventListener(\"pointerdown\",handlePointerDown);if(rafRef.current)cancelAnimationFrame(rafRef.current);};},[animate,addPoint,isStatic]);// Provide intrinsic size so Auto layout in Framer doesn't collapse to 0×0.\n// We read width/height if Framer passes them; otherwise fall back to 500.\nconst w=props?.width??500;const h=props?.height??500;return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100%\",height:\"100%\",// 👇 intrinsic fallback to avoid 0×0 when hugging contents\nminWidth:w,minHeight:h,position:\"relative\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\"}})});}function parseColor(col){if(col.startsWith(\"#\")){let hex=col.slice(1);if(hex.length===3)hex=hex.split(\"\").map(c=>c+c).join(\"\");return{r:parseInt(hex.slice(0,2),16),g:parseInt(hex.slice(2,4),16),b:parseInt(hex.slice(4,6),16)};}else if(col.startsWith(\"rgb\")){const m=col.match(/\\d+/g);return m?{r:+m[0],g:+m[1],b:+m[2]}:{r:0,g:0,b:0};}return{r:0,g:0,b:0};}// --- Framer Controls ---\naddPropertyControls(MouseTrail,{// Top: style & fill\nvariant:{type:ControlType.Enum,title:\"Style\",options:[\"line\",\"dots\",\"particles\",\"pixel\"],optionTitles:[\"Line\",\"Dots\",\"Particles\",\"Pixel\"],defaultValue:\"line\"},fillType:{type:ControlType.Enum,title:\"Fill\",options:[\"solid\",\"gradient\"],optionTitles:[\"Solid\",\"Gradient\"],defaultValue:\"solid\"},trailColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#0099FF\"},trailColorEnd:{type:ControlType.Color,title:\"Color End\",defaultValue:\"#FF00FF\",hidden:p=>p.fillType!==\"gradient\"},// Core\ntrailLength:{type:ControlType.Number,title:\"Trail\",defaultValue:20,min:5,max:120},lineWidth:{type:ControlType.Number,title:\"Line\",defaultValue:3,min:1,max:20,hidden:p=>p.variant===\"pixel\"},fadeOut:{type:ControlType.Boolean,title:\"Fade (along)\",defaultValue:true},// NEW: time-based fade controls\nautoFade:{type:ControlType.Boolean,title:\"Fade over time\",defaultValue:true},fadeDuration:{type:ControlType.Number,title:\"Seconds\",defaultValue:2,min:.2,max:10,step:.1,hidden:p=>!p.autoFade},smoothing:{type:ControlType.Number,title:\"Smoothing\",defaultValue:.3,min:0,max:1,step:.05},// Dots\ndotSize:{type:ControlType.Number,title:\"Dot Size\",defaultValue:6,min:2,max:20,hidden:p=>p.variant!==\"dots\"},dotSpacing:{type:ControlType.Number,title:\"Spacing\",defaultValue:10,min:5,max:40,hidden:p=>p.variant!==\"dots\"},// Particles\nparticleCount:{type:ControlType.Number,title:\"Particles\",defaultValue:6,min:1,max:40,hidden:p=>p.variant!==\"particles\"},particleSize:{type:ControlType.Number,title:\"Size\",defaultValue:3,min:1,max:10,hidden:p=>p.variant!==\"particles\"},spreadAngle:{type:ControlType.Number,title:\"Spread\\xb0\",defaultValue:30,min:0,max:180,hidden:p=>p.variant!==\"particles\"},drift:{type:ControlType.Number,title:\"Drift\",defaultValue:.4,min:-2,max:2,step:.1,hidden:p=>p.variant!==\"particles\"},// Pixel\npixelSize:{type:ControlType.Number,title:\"Pixel\",defaultValue:6,min:2,max:24,hidden:p=>p.variant!==\"pixel\"},snapToGrid:{type:ControlType.Boolean,title:\"Snap Grid\",defaultValue:true,hidden:p=>p.variant!==\"pixel\"},// Canvas blend\nblendMode:{type:ControlType.Enum,title:\"Blend\",defaultValue:\"source-over\",options:[\"source-over\",\"lighter\",\"screen\"],optionTitles:[\"Normal\",\"Lighter\",\"Screen\"]}});// 👇 Default insert size in Framer canvas\nMouseTrail.defaultProps={width:500,height:500};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MouseTrail\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Mouse_trail.map"],"mappings":"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"}