{"version":3,"file":"RGB_string_mouse_trail.B5DZ2suh.mjs","names":["useState","useRef","points"],"sources":["https:/framerusercontent.com/modules/IfgwyEKvYui11SwGPCiN/vdPxrMfm3eqnlgaPYoeT/RGB_string_mouse_trail.js"],"sourcesContent":["// RGB glowing thin flowy animated string mouse trail component, customizable size, color, and properties\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useEffect,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const DEFAULT_COLOR=\"#00FFFF\";const DEFAULT_TRAIL_LENGTH=24;const DEFAULT_THICKNESS=3;const DEFAULT_GLOW=16;const DEFAULT_SPEED=.22;const DEFAULT_OPACITY=.7;/**\n * RGB Glowing Mouse Trail\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function RGBMouseTrail(props){const{color,trailLength,thickness,glow,speed,opacity,colorMode,style}=props;const isStatic=useIsStaticRenderer();const[points,setPoints]=useState([]);const[mouse,setMouse]=useState({x:0,y:0});const rafRef=useRef(null);const containerRef=useRef(null);// Mouse move handler\nuseEffect(()=>{if(isStatic)return;function handleMove(e){let x=e.clientX,y=e.clientY;startTransition(()=>setMouse({x,y}));}window.addEventListener(\"mousemove\",handleMove);return()=>window.removeEventListener(\"mousemove\",handleMove);},[isStatic]);// Animate trail\nuseEffect(()=>{if(isStatic)return;let running=true;function animate(){setPoints(prev=>{let next=prev.length?[...prev]:Array(trailLength).fill({x:mouse.x,y:mouse.y});// Move each point towards the previous one\nfor(let i=next.length-1;i>0;i--){next[i]={x:next[i].x+(next[i-1].x-next[i].x)*speed,y:next[i].y+(next[i-1].y-next[i].y)*speed};}// Head follows mouse\nnext[0]={x:mouse.x,y:mouse.y};return next;});if(running)rafRef.current=requestAnimationFrame(animate);}rafRef.current=requestAnimationFrame(animate);return()=>{running=false;if(rafRef.current)cancelAnimationFrame(rafRef.current);};},[mouse.x,mouse.y,trailLength,speed,isStatic]);// Responsive sizing\n// const width = style?.width === \"100%\" ? 400 : style?.width || 400\n// const height = style?.height === \"100%\" ? 300 : style?.height || 300\nconst width=typeof window!==\"undefined\"?window.innerWidth:1920;const height=typeof window!==\"undefined\"?window.innerHeight:1080;// Generate SVG path\nfunction getPath(pts){if(!pts.length)return\"\";// Use Catmull-Rom to Bezier for smooth curve\nfunction catmullRom2bezier(points){if(points.length<2)return\"\";let d=`M${points[0].x},${points[0].y}`;for(let i=0;i<points.length-1;i++){const p0=points[i-1]||points[i];const p1=points[i];const p2=points[i+1];const p3=points[i+2]||p2;const c1x=p1.x+(p2.x-p0.x)/6;const c1y=p1.y+(p2.y-p0.y)/6;const c2x=p2.x-(p3.x-p1.x)/6;const c2y=p2.y-(p3.y-p1.y)/6;d+=` C${c1x},${c1y} ${c2x},${c2y} ${p2.x},${p2.y}`;}return d;}return catmullRom2bezier(pts);}// --- FULLSCREEN RENDERING ---\n// Always render a single absolutely-positioned div at the end of the body\n// so the trail overlays the entire viewport, regardless of Framer container\nuseEffect(()=>{if(isStatic)return;if(!containerRef.current)return;// Move the container to the end of body\nconst el=containerRef.current;if(el.parentNode!==document.body){document.body.appendChild(el);}return()=>{if(el.parentNode===document.body){document.body.removeChild(el);}};},[isStatic]);// RGB animated gradient\nconst gradientId=\"trail-gradient\";const now=Date.now()/1e3;const rgb=[`hsl(${now*120%360},100%,60%)`,`hsl(${(now*120+120)%360},100%,60%)`,`hsl(${(now*120+240)%360},100%,60%)`];// Solid color glow filter (extra blur for solid mode)\nconst solidGlowFilter=colorMode===\"solid\"?`drop-shadow(0 0 ${glow*2}px ${color}) blur(${glow/2}px)`:`drop-shadow(0 0 ${glow}px ${color})`;// Center glow for solid mode\nconst centerGlow=colorMode===\"solid\"?`drop-shadow(0 0 ${glow*2}px ${color}) blur(${glow/2}px) drop-shadow(0 0 24px ${color})`:`drop-shadow(0 0 ${glow}px ${color})`;// Static preview\nif(isStatic){return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100vw\",height:\"100vh\",position:\"fixed\",left:0,top:0,pointerEvents:\"none\",zIndex:9999,background:\"transparent\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"100vw\",height:\"100vh\",style:{position:\"absolute\",top:0,left:0},children:[/*#__PURE__*/_jsx(\"defs\",{children:colorMode===\"rgb\"?/*#__PURE__*/_jsxs(\"linearGradient\",{id:gradientId,x1:\"0%\",y1:\"0%\",x2:\"100%\",y2:\"0%\",children:[typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"0%\",stopColor:color}),typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"50%\",stopColor:\"#fff\"}),typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"100%\",stopColor:color})]}):/*#__PURE__*/_jsxs(\"linearGradient\",{id:gradientId,x1:\"0%\",y1:\"0%\",x2:\"100%\",y2:\"0%\",children:[typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"0%\",stopColor:color}),typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"100%\",stopColor:color})]})}),/*#__PURE__*/_jsx(\"path\",{d:`M${width*.2},${height*.7} Q${width*.5},${height*.1} ${width*.8},${height*.7}`,stroke:`url(#${gradientId})`,strokeWidth:thickness,strokeLinecap:\"round\",fill:\"none\",opacity:opacity,filter:colorMode===\"solid\"?centerGlow:`drop-shadow(0 0 ${glow}px ${color})`})]})});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100vw\",height:\"100vh\",position:\"fixed\",left:0,top:0,pointerEvents:\"none\",zIndex:9999,background:\"transparent\",overflow:\"visible\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"100vw\",height:\"100vh\",style:{position:\"absolute\",top:0,left:0,pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"defs\",{children:colorMode===\"rgb\"?/*#__PURE__*/_jsxs(\"linearGradient\",{id:gradientId,x1:\"0%\",y1:\"0%\",x2:\"100%\",y2:\"0%\",children:[typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"0%\",stopColor:rgb[0]}),typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"50%\",stopColor:rgb[1]}),typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"100%\",stopColor:rgb[2]})]}):/*#__PURE__*/_jsxs(\"linearGradient\",{id:gradientId,x1:\"0%\",y1:\"0%\",x2:\"100%\",y2:\"0%\",children:[typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"0%\",stopColor:color}),typeof window===\"undefined\"?null:/*#__PURE__*/_jsx(\"stop\",{offset:\"100%\",stopColor:color})]})}),/*#__PURE__*/_jsx(\"path\",{d:getPath(points),stroke:`url(#${gradientId})`,strokeWidth:thickness,strokeLinecap:\"round\",fill:\"none\",opacity:opacity,filter:colorMode===\"solid\"?centerGlow:`drop-shadow(0 0 ${glow}px ${color})`})]})});}addPropertyControls(RGBMouseTrail,{colorMode:{type:ControlType.Enum,title:\"Color Mode\",options:[\"rgb\",\"solid\"],optionTitles:[\"RGB Glow\",\"Solid Glow\"],defaultValue:\"rgb\"},color:{type:ControlType.Color,title:\"Glow Color\",defaultValue:DEFAULT_COLOR},trailLength:{type:ControlType.Number,title:\"Trail Length\",defaultValue:DEFAULT_TRAIL_LENGTH,min:8,max:64,step:1,displayStepper:true},thickness:{type:ControlType.Number,title:\"Thickness\",defaultValue:DEFAULT_THICKNESS,min:1,max:12,step:.5,displayStepper:true},glow:{type:ControlType.Number,title:\"Glow/Blur\",defaultValue:DEFAULT_GLOW,min:0,max:48,step:1,displayStepper:true,description:\"Glow/Blur amount for solid mode (also affects RGB mode)\"},speed:{type:ControlType.Number,title:\"Flowiness\",defaultValue:DEFAULT_SPEED,min:.05,max:.5,step:.01,displayStepper:true},opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:DEFAULT_OPACITY,min:.1,max:1,step:.05,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RGBMouseTrail\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RGB_string_mouse_trail.map"],"mappings":"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"}