{"version":3,"file":"LoopingGlowLine.5RPpgzdR.mjs","names":["useRef","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/4hvqCzzobwqYlb8cSaFw/O4kyacSaFmJQHuDdzh3o/LoopingGlowLine.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView}from\"framer-motion\";import{startTransition,useEffect,useMemo,useRef,useState}from\"react\";/**\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 5\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight fixed\n */export default function LoopingGlowLine(props){const{lineColor,glowColor,glowSize,glowVisibleHeight,blur,duration,style}=props;const isStatic=useIsStaticRenderer();const containerRef=useRef(null);const isInView=useInView(containerRef,{amount:.15});const[containerWidth,setContainerWidth]=useState(0);useEffect(()=>{if(isStatic)return;if(typeof window===\"undefined\")return;const el=containerRef.current;if(!el)return;const update=()=>{const rect=el.getBoundingClientRect();const w=Math.max(0,rect.width||0);startTransition(()=>setContainerWidth(w));};update();if(typeof window.ResizeObserver===\"undefined\"){const onResize=()=>update();window.addEventListener(\"resize\",onResize);return()=>window.removeEventListener(\"resize\",onResize);}const ro=new ResizeObserver(()=>update());ro.observe(el);return()=>ro.disconnect();},[isStatic]);const safeGlowSize=useMemo(()=>{const n=Number.isFinite(glowSize)?glowSize:20;return Math.max(1,n);},[glowSize]);const safeGlowVisibleHeight=useMemo(()=>{const n=Number.isFinite(glowVisibleHeight)?glowVisibleHeight:1;return Math.max(1,n);},[glowVisibleHeight]);const safeBlur=useMemo(()=>{const n=Number.isFinite(blur)?blur:12;return Math.max(0,n);},[blur]);const safeDuration=useMemo(()=>{const n=Number.isFinite(duration)?duration:1.6;return Math.max(.05,n);},[duration]);const travelToX=useMemo(()=>{const w=Number.isFinite(containerWidth)?containerWidth:0;// Move fully past the right edge\nreturn Math.max(0,w+safeGlowSize);},[containerWidth,safeGlowSize]);const glowStyle=useMemo(()=>({position:\"absolute\",top:\"50%\",left:0,width:safeGlowSize,height:safeGlowSize,background:glowColor,borderRadius:safeGlowSize/2,transform:\"translateY(-50%)\",filter:`blur(${safeBlur}px)`,pointerEvents:\"none\",willChange:\"transform\"}),[glowColor,safeBlur,safeGlowSize]);const glowClipStyle=useMemo(()=>({position:\"absolute\",left:0,right:0,top:\"50%\",height:safeGlowVisibleHeight,transform:\"translateY(-50%)\",overflow:\"hidden\",pointerEvents:\"none\"}),[safeGlowVisibleHeight]);const rootStyle=useMemo(()=>({position:\"relative\",width:\"100%\",height:\"100%\",minHeight:5,overflow:\"hidden\",background:\"transparent\",...style}),[style]);const shouldAnimate=!isStatic&&isInView&&travelToX>0;return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:rootStyle,\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,right:0,top:\"50%\",height:1,transform:\"translateY(-50%)\",background:lineColor}}),/*#__PURE__*/_jsx(\"div\",{style:glowClipStyle,children:isStatic?/*#__PURE__*/_jsx(\"div\",{style:{...glowStyle,transform:`translateY(-50%) translateX(${-safeGlowSize}px)`}}):/*#__PURE__*/_jsx(motion.div,{style:glowStyle,initial:{x:-safeGlowSize},animate:shouldAnimate?{x:travelToX}:{x:-safeGlowSize},transition:shouldAnimate?{duration:safeDuration,ease:\"linear\",repeat:Infinity,repeatType:\"loop\"}:{duration:0}})})]});}addPropertyControls(LoopingGlowLine,{lineColor:{type:ControlType.Color,title:\"Line\",defaultValue:\"#000000\"},glowColor:{type:ControlType.Color,title:\"Glow\",defaultValue:\"#FFFFFF\"},glowSize:{type:ControlType.Number,title:\"Glow Size\",defaultValue:20,min:1,max:200,step:1,unit:\"px\"},glowVisibleHeight:{type:ControlType.Number,title:\"Glow Height\",defaultValue:1,min:1,max:200,step:1,unit:\"px\"},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:12,min:0,max:60,step:1,unit:\"px\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.6,min:.05,max:10,step:.05,unit:\"s\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LoopingGlowLine\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"5\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"300\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LoopingGlowLine.map"],"mappings":"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"}