{"version":3,"file":"GenBorder.EpaQAXPa.mjs","names":["React.useRef","React.useState","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/hMYrCHtuS1fApld2Eun4/z7oVrgvKUZrrlFG10Rc1/GenBorder.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";function getPointOnBorder(ratio,geometry){const{strokeInset,strokeWidth,strokeHeight,strokeRadius,straightWidth,straightHeight,cornerLength,perimeter}=geometry;const distance=(ratio%1+1)%1*perimeter;if(strokeRadius<=0){if(distance<=strokeWidth){return{x:strokeInset+distance,y:strokeInset};}if(distance<=strokeWidth+strokeHeight){return{x:strokeInset+strokeWidth,y:strokeInset+(distance-strokeWidth)};}if(distance<=strokeWidth*2+strokeHeight){return{x:strokeInset+strokeWidth-(distance-strokeWidth-strokeHeight),y:strokeInset+strokeHeight};}return{x:strokeInset,y:strokeInset+strokeHeight-(distance-strokeWidth*2-strokeHeight)};}let remaining=distance;if(remaining<=straightWidth){return{x:strokeInset+strokeRadius+remaining,y:strokeInset};}remaining-=straightWidth;if(remaining<=cornerLength){const angle=-Math.PI/2+remaining/cornerLength*(Math.PI/2);const cx=strokeInset+strokeWidth-strokeRadius;const cy=strokeInset+strokeRadius;return{x:cx+Math.cos(angle)*strokeRadius,y:cy+Math.sin(angle)*strokeRadius};}remaining-=cornerLength;if(remaining<=straightHeight){return{x:strokeInset+strokeWidth,y:strokeInset+strokeRadius+remaining};}remaining-=straightHeight;if(remaining<=cornerLength){const angle=remaining/cornerLength*(Math.PI/2);const cx=strokeInset+strokeWidth-strokeRadius;const cy=strokeInset+strokeHeight-strokeRadius;return{x:cx+Math.cos(angle)*strokeRadius,y:cy+Math.sin(angle)*strokeRadius};}remaining-=cornerLength;if(remaining<=straightWidth){return{x:strokeInset+strokeWidth-strokeRadius-remaining,y:strokeInset+strokeHeight};}remaining-=straightWidth;if(remaining<=cornerLength){const angle=Math.PI/2+remaining/cornerLength*(Math.PI/2);const cx=strokeInset+strokeRadius;const cy=strokeInset+strokeHeight-strokeRadius;return{x:cx+Math.cos(angle)*strokeRadius,y:cy+Math.sin(angle)*strokeRadius};}remaining-=cornerLength;if(remaining<=straightHeight){return{x:strokeInset,y:strokeInset+strokeHeight-strokeRadius-remaining};}const angle=Math.PI+(remaining-straightHeight)/cornerLength*(Math.PI/2);const cx=strokeInset+strokeRadius;const cy=strokeInset+strokeRadius;return{x:cx+Math.cos(angle)*strokeRadius,y:cy+Math.sin(angle)*strokeRadius};}function getHighlightMask(progress,geometry,maskWidth,maskHeight){const point=getPointOnBorder(progress,geometry);return`radial-gradient(${maskWidth}px ${maskHeight}px at ${point.x}px ${point.y}px, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.96) 18%, rgba(0, 0, 0, 0.72) 34%, rgba(0, 0, 0, 0.28) 48%, rgba(0, 0, 0, 0.08) 58%, rgba(0, 0, 0, 0) 66%)`;}function parseAlpha(value){if(!value)return 1;const normalized=value.trim();const parsed=Number.parseFloat(normalized);if(Number.isNaN(parsed))return 1;if(normalized.endsWith(\"%\")){return Math.max(0,Math.min(1,parsed/100));}return Math.max(0,Math.min(1,parsed));}function colorToRgba(color){const trimmed=color.trim();if(trimmed===\"transparent\"){return{r:0,g:153,b:255,a:0};}const rgbMatch=trimmed.match(/^rgba?\\((.+)\\)$/i);if(rgbMatch){const values=rgbMatch[1].replace(/\\s*\\/\\s*/,\",\").split(/[\\s,]+/).filter(Boolean);const[red,green,blue,alpha]=values;if(red&&green&&blue){return{r:Math.max(0,Math.min(255,Number.parseFloat(red))),g:Math.max(0,Math.min(255,Number.parseFloat(green))),b:Math.max(0,Math.min(255,Number.parseFloat(blue))),a:parseAlpha(alpha)};}}const normalized=trimmed.replace(\"#\",\"\");const value=normalized.length===3?normalized.split(\"\").map(char=>char+char).join(\"\"):normalized.length===4?normalized.split(\"\").map(char=>char+char).join(\"\"):normalized;const hasAlpha=value.length===8;const parsed=Number.parseInt(hasAlpha?value.slice(0,6):value,16);if(Number.isNaN(parsed)||!hasAlpha&&value.length!==6){return{r:0,g:153,b:255,a:1};}return{r:parsed>>16&255,g:parsed>>8&255,b:parsed&255,a:hasAlpha?Number.parseInt(value.slice(6,8),16)/255:1};}function snapToPixel(value){const pixelRatio=typeof window===\"undefined\"?1:window.devicePixelRatio||1;return Math.round(value*pixelRatio)/pixelRatio;}/**\n * User instruction: Fix loop behavior so loop mode never transitions into loaded fade-out; instead reset load/reveal while keeping cycle elapsed continuous. Also confirm interactions with final_state hidden, replay on view, animation off, and off_screen pause.\n *\n * Animated border that \"loads\" for a fixed duration, then becomes solid.\n *\n * This version avoids injected keyframes and limits motion to preview-like\n * targets so the canvas stays static while preview/export can animate.\n *//**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function GenBorder(props){const{width=600,height=300,style,animation,replayOnView,finalState,delay=0,duration,cycleDuration,borderWidth,radius,borderColor=\"#0099FF\",fillColor=borderColor,offScreenBehavior,loop}=props;const containerRef=React.useRef(null);const delayElapsedRef=React.useRef(0);const loadElapsedRef=React.useRef(0);const revealElapsedRef=React.useRef(0);const cycleElapsedRef=React.useRef(0);const hasExitedViewRef=React.useRef(false);const isLoadedRef=React.useRef(false);const[size,setSize]=React.useState({width,height});const[isInView,setIsInView]=React.useState(true);const[isPageVisible,setIsPageVisible]=React.useState(true);const renderTarget=RenderTarget.current();const isCanvasRender=renderTarget===RenderTarget.canvas;const borderRgb=React.useMemo(()=>colorToRgba(borderColor),[borderColor]);const fillRgb=React.useMemo(()=>colorToRgba(fillColor),[fillColor]);React.useEffect(()=>{if(typeof document===\"undefined\")return;const updateVisibility=()=>{setIsPageVisible(document.visibilityState!==\"hidden\");};updateVisibility();document.addEventListener(\"visibilitychange\",updateVisibility);return()=>document.removeEventListener(\"visibilitychange\",updateVisibility);},[]);React.useEffect(()=>{const element=containerRef.current;if(!element||typeof IntersectionObserver===\"undefined\"){setIsInView(true);return;}const observer=new IntersectionObserver(([entry])=>{setIsInView(entry?.isIntersecting??true);});observer.observe(element);return()=>observer.disconnect();},[]);const shouldAnimate=offScreenBehavior===\"play\"||isInView&&isPageVisible;const isAnimationEnabled=animation===\"on\"&&!isCanvasRender;const fillLayerRef=React.useRef(null);const animatedBorderRef=React.useRef(null);const animatedLayerRef=React.useRef(null);const highlightGlowRef=React.useRef(null);const finalBorderRef=React.useRef(null);const resetAnimation=React.useCallback(()=>{delayElapsedRef.current=0;loadElapsedRef.current=0;revealElapsedRef.current=0;cycleElapsedRef.current=0;isLoadedRef.current=false;},[]);React.useEffect(()=>{const targetDelay=Math.max(0,delay);const targetDuration=Math.max(0,duration);resetAnimation();if(!isAnimationEnabled||targetDelay===0&&targetDuration===0){isLoadedRef.current=true;revealElapsedRef.current=.42;}},[delay,duration,isAnimationEnabled,resetAnimation]);React.useEffect(()=>{if(!isAnimationEnabled||replayOnView!==\"on\")return;if(isInView){if(hasExitedViewRef.current){resetAnimation();hasExitedViewRef.current=false;}return;}hasExitedViewRef.current=true;},[isAnimationEnabled,isInView,replayOnView,resetAnimation]);React.useEffect(()=>{let frameId=0;let lastTime=0;const transitionDuration=.42;const targetDelay=Math.max(0,delay);const targetDuration=Math.max(0,duration);const safeCycleDuration=Math.max(.2,cycleDuration);const fillMinOpacity=.08;const fillMaxOpacity=.22;const loadedFillOpacity=0;const trackMinOpacity=.24;const trackMaxOpacity=.42;const frameWidth=snapToPixel(Math.max(1,size.width));const frameHeight=snapToPixel(Math.max(1,size.height));const clampedRadius=Math.max(0,snapToPixel(Math.min(radius,frameWidth/2-borderWidth/2,frameHeight/2-borderWidth/2)));const showsVisibleFinalState=isCanvasRender||finalState===\"visible\";const finalFillOpacity=showsVisibleFinalState?loadedFillOpacity:0;const strokeInset=borderWidth/2;const strokeWidth=Math.max(1,frameWidth-borderWidth);const strokeHeight=Math.max(1,frameHeight-borderWidth);const strokeRadius=Math.max(0,clampedRadius-strokeInset);const straightWidth=Math.max(0,strokeWidth-strokeRadius*2);const straightHeight=Math.max(0,strokeHeight-strokeRadius*2);const cornerLength=strokeRadius*(Math.PI/2);const geometry={strokeInset,strokeWidth,strokeHeight,strokeRadius,straightWidth,straightHeight,cornerLength,perimeter:strokeRadius>0?2*(straightWidth+straightHeight)+4*cornerLength:2*(strokeWidth+strokeHeight)};const maskWidth=Math.max(frameWidth*.42,borderWidth*44);const maskHeight=Math.max(frameHeight*.42,borderWidth*44);const applyVisualState=(progress,loadedReveal)=>{const pulse=.5-.5*Math.cos(progress*Math.PI*2);const fillOpacity=fillMaxOpacity-(fillMaxOpacity-fillMinOpacity)*pulse;const blendedFillOpacity=fillOpacity+(finalFillOpacity-fillOpacity)*loadedReveal;const trackOpacity=trackMaxOpacity-(trackMaxOpacity-trackMinOpacity)*pulse;const finalBorderOpacity=showsVisibleFinalState?loadedReveal:0;if(fillLayerRef.current){fillLayerRef.current.style.background=`rgba(${fillRgb.r}, ${fillRgb.g}, ${fillRgb.b}, ${blendedFillOpacity*fillRgb.a})`;}if(animatedBorderRef.current){animatedBorderRef.current.style.border=`${borderWidth}px solid rgba(${borderRgb.r}, ${borderRgb.g}, ${borderRgb.b}, ${trackOpacity*borderRgb.a})`;}if(animatedLayerRef.current){animatedLayerRef.current.style.opacity=String(1-loadedReveal);animatedLayerRef.current.style.visibility=loadedReveal>=1?\"hidden\":\"visible\";}if(highlightGlowRef.current){if(loadedReveal>=1){highlightGlowRef.current.style.setProperty(\"-webkit-mask-image\",\"none\");highlightGlowRef.current.style.setProperty(\"mask-image\",\"none\");}else{const highlightMask=getHighlightMask(progress,geometry,maskWidth,maskHeight);highlightGlowRef.current.style.setProperty(\"-webkit-mask-image\",highlightMask);highlightGlowRef.current.style.setProperty(\"mask-image\",highlightMask);}}if(finalBorderRef.current){finalBorderRef.current.style.opacity=String(finalBorderOpacity);}};const tick=time=>{if(lastTime===0){lastTime=time;}else{const delta=(time-lastTime)/1e3;if(isAnimationEnabled&&shouldAnimate){const isDelayed=delayElapsedRef.current<targetDelay;if(isDelayed){delayElapsedRef.current=Math.min(targetDelay,delayElapsedRef.current+delta);}else{cycleElapsedRef.current+=delta;if(!isLoadedRef.current){loadElapsedRef.current+=delta;if(loadElapsedRef.current>=targetDuration){if(loop){isLoadedRef.current=false;loadElapsedRef.current=0;revealElapsedRef.current=0;}else{isLoadedRef.current=true;}}}if(!loop&&isLoadedRef.current&&revealElapsedRef.current<transitionDuration){revealElapsedRef.current=Math.min(transitionDuration,revealElapsedRef.current+delta);}}}lastTime=time;}const progress=cycleElapsedRef.current%safeCycleDuration/safeCycleDuration;const loadedReveal=Math.min(1,revealElapsedRef.current/transitionDuration);applyVisualState(progress,loadedReveal);if(!loop&&isLoadedRef.current&&revealElapsedRef.current>=transitionDuration){return;}frameId=window.requestAnimationFrame(tick);};if(!isAnimationEnabled){cycleElapsedRef.current=0;applyVisualState(0,1);return;}frameId=window.requestAnimationFrame(tick);return()=>window.cancelAnimationFrame(frameId);},[borderColor,borderWidth,borderRgb.b,borderRgb.g,borderRgb.r,borderRgb.a,cycleDuration,delay,duration,fillRgb.a,fillRgb.b,fillRgb.g,fillRgb.r,finalState,isAnimationEnabled,isCanvasRender,radius,shouldAnimate,size.height,size.width,loop]);// Loop interaction notes:\n// - finalState \"hidden\": when loop is true, loadedReveal is kept at 0, so finalBorderRef opacity remains 0 (correct).\n// - replayOnView \"on\": replay reset on re-entry still works and is compatible with loop.\n// - animation \"off\": loop has no effect because static visual state is applied immediately (correct).\n// - offScreenBehavior \"pause\": RAF progression remains gated by shouldAnimate, so off-screen pause behavior is preserved.\nReact.useEffect(()=>{const element=containerRef.current;if(!element)return;const updateSize=()=>{const nextWidth=Math.max(1,element.clientWidth||width);const nextHeight=Math.max(1,element.clientHeight||height);setSize(current=>current.width===nextWidth&&current.height===nextHeight?current:{width:nextWidth,height:nextHeight});};updateSize();if(typeof ResizeObserver===\"undefined\"){window.addEventListener(\"resize\",updateSize);return()=>window.removeEventListener(\"resize\",updateSize);}const observer=new ResizeObserver(updateSize);observer.observe(element);return()=>observer.disconnect();},[width,height]);const showsVisibleFinalState=isCanvasRender||finalState===\"visible\";const frameWidth=snapToPixel(Math.max(1,size.width));const frameHeight=snapToPixel(Math.max(1,size.height));const clampedRadius=Math.max(0,snapToPixel(Math.min(radius,frameWidth/2-borderWidth/2,frameHeight/2-borderWidth/2)));const initialProgress=0;const initialLoadedReveal=!isAnimationEnabled||delay<=0&&duration<=0?1:0;const initialPulse=.5-.5*Math.cos(initialProgress*Math.PI*2);const initialFillOpacity=.22-(.22-.08)*initialPulse;const initialFinalFillOpacity=0;const initialBlendedFillOpacity=initialFillOpacity+(initialFinalFillOpacity-initialFillOpacity)*initialLoadedReveal;const initialTrackOpacity=.42-(.42-.24)*initialPulse;const strokeInset=borderWidth/2;const strokeWidth=Math.max(1,frameWidth-borderWidth);const strokeHeight=Math.max(1,frameHeight-borderWidth);const strokeRadius=Math.max(0,clampedRadius-strokeInset);const straightWidth=Math.max(0,strokeWidth-strokeRadius*2);const straightHeight=Math.max(0,strokeHeight-strokeRadius*2);const cornerLength=strokeRadius*(Math.PI/2);const geometry={strokeInset,strokeWidth,strokeHeight,strokeRadius,straightWidth,straightHeight,cornerLength,perimeter:strokeRadius>0?2*(straightWidth+straightHeight)+4*cornerLength:2*(strokeWidth+strokeHeight)};const maskWidth=Math.max(frameWidth*.42,borderWidth*44);const maskHeight=Math.max(frameHeight*.42,borderWidth*44);const initialHighlightMask=getHighlightMask(initialProgress,geometry,maskWidth,maskHeight);const canvasFillOpacity=0;const cornerAntialiasStyle=clampedRadius>0?{outline:\"1px solid transparent\",WebkitBackfaceVisibility:\"hidden\",backfaceVisibility:\"hidden\"}:undefined;if(isCanvasRender){return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",borderRadius:clampedRadius,overflow:\"hidden\",background:\"transparent\",width,height,...style},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,background:`rgba(${fillRgb.r}, ${fillRgb.g}, ${fillRgb.b}, ${canvasFillOpacity*fillRgb.a})`,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,border:`${borderWidth}px solid ${borderColor}`,boxSizing:\"border-box\",pointerEvents:\"none\",opacity:showsVisibleFinalState?1:0,...cornerAntialiasStyle}})]});}return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",borderRadius:clampedRadius,overflow:\"hidden\",background:\"transparent\",width,height,...style},children:[/*#__PURE__*/_jsx(\"div\",{ref:fillLayerRef,style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,background:`rgba(${fillRgb.r}, ${fillRgb.g}, ${fillRgb.b}, ${initialBlendedFillOpacity*fillRgb.a})`,pointerEvents:\"none\"}}),/*#__PURE__*/_jsxs(\"div\",{ref:animatedLayerRef,style:{position:\"absolute\",inset:0,opacity:1-initialLoadedReveal,visibility:initialLoadedReveal>=1?\"hidden\":\"visible\",pointerEvents:\"none\",isolation:\"isolate\",transform:\"translateZ(0)\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:animatedBorderRef,style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,border:`${borderWidth}px solid rgba(${borderRgb.r}, ${borderRgb.g}, ${borderRgb.b}, ${initialTrackOpacity*borderRgb.a})`,boxSizing:\"border-box\",...cornerAntialiasStyle}}),/*#__PURE__*/_jsx(\"div\",{ref:highlightGlowRef,style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,border:`${borderWidth}px solid ${borderColor}`,boxSizing:\"border-box\",opacity:.98,mixBlendMode:\"plus-lighter\",WebkitMaskImage:initialHighlightMask,maskImage:initialHighlightMask,WebkitMaskRepeat:\"no-repeat\",maskRepeat:\"no-repeat\",transform:\"translateZ(0)\",willChange:\"mask-image, opacity\",...cornerAntialiasStyle}})]}),/*#__PURE__*/_jsx(\"div\",{ref:finalBorderRef,style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,border:`${borderWidth}px solid ${borderColor}`,boxSizing:\"border-box\",pointerEvents:\"none\",opacity:showsVisibleFinalState?initialLoadedReveal:0,...cornerAntialiasStyle}})]});}GenBorder.defaultProps={width:600,height:300,animation:\"on\",replayOnView:\"off\",finalState:\"visible\",duration:4,delay:0,cycleDuration:1.2,borderWidth:1,radius:0,borderColor:\"#0099FF\",fillColor:\"#0099FF\",offScreenBehavior:\"pause\",loop:false};addPropertyControls(GenBorder,{animation:{type:ControlType.Enum,title:\"Animation\",options:[\"on\",\"off\"],optionTitles:[\"On\",\"Off\"],displaySegmentedControl:true,defaultValue:\"on\"},replayOnView:{type:ControlType.Enum,title:\"Replay\",options:[\"on\",\"off\"],optionTitles:[\"On\",\"Off\"],displaySegmentedControl:true,defaultValue:\"off\",hidden(props){return props.animation!==\"on\";}},finalState:{type:ControlType.Enum,title:\"Final State\",options:[\"visible\",\"hidden\"],optionTitles:[\"Visible\",\"Hidden\"],displaySegmentedControl:true,defaultValue:\"visible\"},duration:{type:ControlType.Number,title:\"Load Time\",description:\"Total time before the border finishes loading.\",min:0,max:60,step:.1,defaultValue:4,unit:\"s\"},cycleDuration:{type:ControlType.Number,title:\"Cycle\",description:\"Time for one animated lap around the border.\",min:.2,max:10,step:.1,defaultValue:1.2,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",min:0,max:60,step:.1,defaultValue:0,unit:\"s\",hidden(props){return props.animation!==\"on\";}},borderWidth:{type:ControlType.Number,title:\"Border\",min:1,max:20,step:1,defaultValue:1},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:100,step:1,defaultValue:0},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"#0099FF\"},fillColor:{type:ControlType.Color,title:\"Fill Color\",defaultValue:\"#0099FF\"},offScreenBehavior:{type:ControlType.Enum,title:\"Off Screen\",options:[\"play\",\"pause\"],optionTitles:[\"Play\",\"Pause\"],displaySegmentedControl:true,defaultValue:\"pause\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GenBorder\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GenBorder.map"],"mappings":"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"}