{"version":3,"file":"GenBorder.D_hFM_nM.mjs","names":["React.useRef","React.useState","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/hMYrCHtuS1fApld2Eun4/ZPaQzFaz9pMBDK8IsbdY/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\";const TRANSITION_DURATION=.42;const FILL_MIN_OPACITY=.08;const FILL_MAX_OPACITY=.22;const TRACK_MIN_OPACITY=.24;const TRACK_MAX_OPACITY=.42;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.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 rgbaString(color,alpha){return`rgba(${color.r}, ${color.g}, ${color.b}, ${alpha})`;}function snapToPixel(value){const pixelRatio=typeof window===\"undefined\"?1:window.devicePixelRatio||1;return Math.round(value*pixelRatio)/pixelRatio;}function getFrameGeometry(width,height,borderWidth,radius){const frameWidth=snapToPixel(Math.max(1,width));const frameHeight=snapToPixel(Math.max(1,height));const clampedRadius=Math.max(0,snapToPixel(Math.min(radius,frameWidth/2-borderWidth/2,frameHeight/2-borderWidth/2)));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)};return{clampedRadius,geometry,maskWidth:Math.max(frameWidth*.42,borderWidth*44),maskHeight:Math.max(frameHeight*.42,borderWidth*44)};}function getPulseOpacities(progress,loadedReveal){const pulse=.5-.5*Math.cos(progress*Math.PI*2);const fillOpacity=FILL_MAX_OPACITY-(FILL_MAX_OPACITY-FILL_MIN_OPACITY)*pulse;// The loaded state fades the fill out completely.\nconst blendedFillOpacity=fillOpacity+(0-fillOpacity)*loadedReveal;const trackOpacity=TRACK_MAX_OPACITY-(TRACK_MAX_OPACITY-TRACK_MIN_OPACITY)*pulse;return{blendedFillOpacity,trackOpacity};}/**\n * Animated border that \"loads\" for a fixed duration, then becomes solid.\n * The canvas renders a static final state; preview and the published site 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=\"on\",replayOnView=\"off\",finalState=\"visible\",delay=0,duration=4,cycleDuration=1.2,borderWidth=1,radius=0,borderColor=\"#0099FF\",fillColor=\"#0099FF\",offScreenBehavior=\"pause\",loop=false}=props;const containerRef=React.useRef(null);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 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});// Wait for the observer before starting pause-mode animations.\nconst[isInView,setIsInView]=React.useState(false);const[isPageVisible,setIsPageVisible]=React.useState(()=>typeof document===\"undefined\"||document.visibilityState!==\"hidden\");const isCanvasRender=RenderTarget.current()===RenderTarget.canvas;const borderRgb=React.useMemo(()=>colorToRgba(borderColor),[borderColor]);const fillRgb=React.useMemo(()=>colorToRgba(fillColor),[fillColor]);const{clampedRadius,geometry,maskWidth,maskHeight}=React.useMemo(()=>getFrameGeometry(size.width,size.height,borderWidth,radius),[size.width,size.height,borderWidth,radius]);const shouldAnimate=isPageVisible&&(offScreenBehavior===\"play\"||isInView);const isAnimationEnabled=animation===\"on\"&&!isCanvasRender;const showsVisibleFinalState=isCanvasRender||finalState===\"visible\";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();},[]);React.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 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=TRANSITION_DURATION;}},[delay,duration,isAnimationEnabled,loop,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=null;let delayTimer;let delayStartedAt=0;const targetDelay=Math.max(0,delay);const targetDuration=Math.max(0,duration);const safeCycleDuration=Math.max(.2,cycleDuration);// Seed caches from the actual inline styles after React commits.\n// Visibility changes and replays must not rewrite an unchanged mask.\nlet lastFill=fillLayerRef.current?.style.background??\"\";let lastTrackBorder=animatedBorderRef.current?.style.border??\"\";let lastLayerOpacity=animatedLayerRef.current?.style.opacity??\"\";let lastLayerVisibility=animatedLayerRef.current?.style.visibility??\"\";let lastMask=highlightGlowRef.current?.style.getPropertyValue(\"mask-image\")||highlightGlowRef.current?.style.getPropertyValue(\"-webkit-mask-image\")||\"\";let lastFinalOpacity=finalBorderRef.current?.style.opacity??\"\";const applyVisualState=(progress,loadedReveal)=>{const{blendedFillOpacity,trackOpacity}=getPulseOpacities(progress,loadedReveal);const fill=rgbaString(fillRgb,blendedFillOpacity*fillRgb.a);if(fillLayerRef.current&&fill!==lastFill){fillLayerRef.current.style.background=fill;lastFill=fill;}// The animated track is invisible after the final reveal.\nif(loadedReveal<1){const trackBorder=`${borderWidth}px solid ${rgbaString(borderRgb,trackOpacity*borderRgb.a)}`;if(animatedBorderRef.current&&trackBorder!==lastTrackBorder){animatedBorderRef.current.style.border=trackBorder;lastTrackBorder=trackBorder;}}const layerOpacity=String(1-loadedReveal);const layerVisibility=loadedReveal>=1?\"hidden\":\"visible\";if(animatedLayerRef.current){if(layerOpacity!==lastLayerOpacity){animatedLayerRef.current.style.opacity=layerOpacity;lastLayerOpacity=layerOpacity;}if(layerVisibility!==lastLayerVisibility){animatedLayerRef.current.style.visibility=layerVisibility;lastLayerVisibility=layerVisibility;}}const mask=loadedReveal>=1?\"none\":getHighlightMask(progress,geometry,maskWidth,maskHeight);if(highlightGlowRef.current&&mask!==lastMask){highlightGlowRef.current.style.setProperty(\"-webkit-mask-image\",mask);highlightGlowRef.current.style.setProperty(\"mask-image\",mask);lastMask=mask;}const finalOpacity=String(showsVisibleFinalState?loadedReveal:0);if(finalBorderRef.current&&finalOpacity!==lastFinalOpacity){finalBorderRef.current.style.opacity=finalOpacity;lastFinalOpacity=finalOpacity;}};const getProgress=()=>cycleElapsedRef.current%safeCycleDuration/safeCycleDuration;const getLoadedReveal=()=>Math.min(1,revealElapsedRef.current/TRANSITION_DURATION);const isSettled=()=>isLoadedRef.current&&revealElapsedRef.current>=TRANSITION_DURATION;const tick=time=>{frameId=0;if(lastTime!==null){const delta=(time-lastTime)/1e3;cycleElapsedRef.current+=delta;if(!isLoadedRef.current){loadElapsedRef.current+=delta;if(loadElapsedRef.current>=targetDuration){if(loop){loadElapsedRef.current=0;revealElapsedRef.current=0;}else{isLoadedRef.current=true;}}}if(!loop&&isLoadedRef.current&&revealElapsedRef.current<TRANSITION_DURATION){revealElapsedRef.current=Math.min(TRANSITION_DURATION,revealElapsedRef.current+delta);}}lastTime=time;applyVisualState(getProgress(),getLoadedReveal());if(!isSettled()){frameId=window.requestAnimationFrame(tick);}};if(!isAnimationEnabled){cycleElapsedRef.current=0;applyVisualState(0,1);return;}// Paint once, then leave paused and completed instances entirely idle.\napplyVisualState(getProgress(),getLoadedReveal());if(!shouldAnimate||isSettled())return;const remainingDelay=targetDelay-delayElapsedRef.current;if(remainingDelay>0){// A static delay needs one timer, not a frame-by-frame RAF loop.\ndelayStartedAt=performance.now();delayTimer=window.setTimeout(()=>{delayTimer=undefined;delayElapsedRef.current=targetDelay;frameId=window.requestAnimationFrame(tick);},remainingDelay*1e3);}else{frameId=window.requestAnimationFrame(tick);}return()=>{window.cancelAnimationFrame(frameId);if(delayTimer!==undefined){window.clearTimeout(delayTimer);delayElapsedRef.current=Math.min(targetDelay,delayElapsedRef.current+(performance.now()-delayStartedAt)/1e3);}};},[borderRgb,borderWidth,cycleDuration,delay,duration,fillRgb,geometry,isAnimationEnabled,isInView,loop,maskHeight,maskWidth,replayOnView,shouldAnimate,showsVisibleFinalState]);const cornerAntialiasStyle=clampedRadius>0?{outline:\"1px solid transparent\",WebkitBackfaceVisibility:\"hidden\",backfaceVisibility:\"hidden\"}:undefined;const containerStyle={position:\"relative\",borderRadius:clampedRadius,overflow:\"hidden\",background:\"transparent\",width,height,...style};const solidBorderStyle={position:\"absolute\",inset:0,borderRadius:clampedRadius,border:`${borderWidth}px solid ${borderColor}`,boxSizing:\"border-box\",...cornerAntialiasStyle};if(isCanvasRender){return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:containerStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,background:rgbaString(fillRgb,0),pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{style:{...solidBorderStyle,pointerEvents:\"none\",opacity:showsVisibleFinalState?1:0}})]});}const initialLoadedReveal=!isAnimationEnabled||delay<=0&&duration<=0?1:0;const initial=getPulseOpacities(0,initialLoadedReveal);const initialHighlightMask=getHighlightMask(0,geometry,maskWidth,maskHeight);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:containerStyle,children:[/*#__PURE__*/_jsx(\"div\",{ref:fillLayerRef,style:{position:\"absolute\",inset:0,borderRadius:clampedRadius,background:rgbaString(fillRgb,initial.blendedFillOpacity*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 ${rgbaString(borderRgb,initial.trackOpacity*borderRgb.a)}`,boxSizing:\"border-box\",...cornerAntialiasStyle}}),/*#__PURE__*/_jsx(\"div\",{ref:highlightGlowRef,style:{...solidBorderStyle,opacity:.98,mixBlendMode:\"plus-lighter\",WebkitMaskImage:initialHighlightMask,maskImage:initialHighlightMask,WebkitMaskRepeat:\"no-repeat\",maskRepeat:\"no-repeat\",transform:\"translateZ(0)\",willChange:\"mask-image, opacity\"}})]}),/*#__PURE__*/_jsx(\"div\",{ref:finalBorderRef,style:{...solidBorderStyle,pointerEvents:\"none\",opacity:showsVisibleFinalState?initialLoadedReveal:0}})]});}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\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GenBorder.map"],"mappings":"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"}