{"version":3,"file":"CountUpOverride.fxMFdyv8.mjs","names":["forwardRef","useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/URK2E0EINBp5luqtN2yV/ddR2CVjndoDp1RwiHqew/CountUpOverride.js"],"sourcesContent":["// User request: Create a `withCountUp` code override that counts text numbers up on in-view, preserves prefix/suffix formatting, supports easing/delay/duration/replay controls, and is SSR-safe.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,startTransition,useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";function parseNumberText(input){const safeInput=input??\"\";const match=safeInput.match(/^(.*?)([-+]?(?:\\d{1,3}(?:,\\d{3})*|\\d+)(?:\\.\\d+)?)(.*)$/);if(!match){return{hasNumber:false,prefix:\"\",suffix:\"\",targetNumber:0,decimals:0,useGrouping:false,fallback:safeInput};}const[,prefix,numericPart,suffix]=match;const normalized=numericPart.replace(/,/g,\"\");const parsed=Number.parseFloat(normalized);const decimals=normalized.includes(\".\")?normalized.split(\".\")[1]?.length??0:0;return{hasNumber:true,prefix,suffix,targetNumber:Number.isFinite(parsed)?parsed:0,decimals,useGrouping:numericPart.includes(\",\"),fallback:safeInput};}function formatCountValue(value,parsed){if(!Number.isFinite(value))return parsed.fallback;const formatted=value.toLocaleString(undefined,{minimumFractionDigits:parsed.decimals,maximumFractionDigits:parsed.decimals,useGrouping:parsed.useGrouping});return`${parsed.prefix}${formatted}${parsed.suffix}`;}export function withCountUp(Component){const Wrapped=/*#__PURE__*/forwardRef(function WithCountUp(props,ref){const{duration=1.5,delay=0,easing=\"easeOut\",replay=false,range=20}=props;const isStatic=useIsStaticRenderer();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const shouldAnimate=!isStatic&&!isCanvas;const localRef=useRef(null);const rafRef=useRef(null);const timeoutRef=useRef(null);const hasAnimatedRef=useRef(false);const writingRef=useRef(false);const targetTextNodeRef=useRef(null);const targetExactRef=useRef(\"\");const targetParsedRef=useRef(null);const[hasResolvedTarget,setHasResolvedTarget]=useState(false);const easingFunction=useMemo(()=>{if(easing===\"linear\")return t=>t;if(easing===\"smooth\"){return t=>1-Math.pow(1-t,3);}return t=>t>=1?1:1-Math.pow(2,-10*t);},[easing]);const cleanupAnimation=useCallback(()=>{if(typeof window===\"undefined\")return;if(rafRef.current!==null){window.cancelAnimationFrame(rafRef.current);rafRef.current=null;}if(timeoutRef.current!==null){window.clearTimeout(timeoutRef.current);timeoutRef.current=null;}},[]);const setDomText=useCallback(nextValue=>{const root=localRef.current;if(!root)return;writingRef.current=true;if(targetTextNodeRef.current){targetTextNodeRef.current.nodeValue=nextValue;}else{root.textContent=nextValue;}writingRef.current=false;},[]);const setRefs=useCallback(node=>{localRef.current=node;if(typeof ref===\"function\"){ref(node);}else if(ref&&\"current\"in ref){ref.current=node;}},[ref]);const runAnimation=useCallback(()=>{if(typeof window===\"undefined\"||!shouldAnimate)return;cleanupAnimation();const parsedTarget=targetParsedRef.current;const target=parsedTarget?.targetNumber??0;const start=Math.max(0,target-Math.max(0,range));const durationMs=Math.max(0,duration)*1e3;const delayMs=Math.max(0,delay)*1e3;if(!parsedTarget||!parsedTarget.hasNumber||!Number.isFinite(target)){hasAnimatedRef.current=true;return;}timeoutRef.current=window.setTimeout(()=>{const startTime=window.performance.now();const tick=now=>{const elapsed=now-startTime;const progress=durationMs===0?1:Math.min(elapsed/durationMs,1);const eased=easingFunction(progress);const current=start+(target-start)*eased;setDomText(formatCountValue(current,parsedTarget));if(progress<1){rafRef.current=window.requestAnimationFrame(tick);}else{hasAnimatedRef.current=true;setDomText(targetExactRef.current);}};rafRef.current=window.requestAnimationFrame(tick);},delayMs);},[cleanupAnimation,delay,duration,easingFunction,range,setDomText,shouldAnimate]);useEffect(()=>{if(typeof window===\"undefined\")return;const root=localRef.current;if(!root)return;let frameId=null;let attempts=0;let stopped=false;const tryResolveFromDom=()=>{if(typeof document===\"undefined\")return false;const walker=document.createTreeWalker(root,window.NodeFilter.SHOW_TEXT);let textNode=walker.nextNode();while(textNode){const raw=textNode.nodeValue??\"\";const trimmed=raw.trim();if(trimmed.length>0){const parsed=parseNumberText(trimmed);if(parsed.hasNumber){targetTextNodeRef.current=textNode;targetParsedRef.current=parsed;targetExactRef.current=trimmed;startTransition(()=>setHasResolvedTarget(true));return true;}}textNode=walker.nextNode();}const fallback=root.textContent?.trim()??\"\";const parsed=parseNumberText(fallback);if(!parsed.hasNumber)return false;targetTextNodeRef.current=null;targetParsedRef.current=parsed;targetExactRef.current=fallback;startTransition(()=>setHasResolvedTarget(true));return true;};if(tryResolveFromDom())return;const mutationObserver=typeof window.MutationObserver!==\"undefined\"?new window.MutationObserver(()=>{if(writingRef.current||stopped)return;if(tryResolveFromDom()){mutationObserver.disconnect();}}):null;if(mutationObserver){mutationObserver.observe(root,{childList:true,subtree:true,characterData:true});}const poll=()=>{if(stopped)return;if(tryResolveFromDom()){if(mutationObserver)mutationObserver.disconnect();return;}attempts+=1;if(attempts<=60){frameId=window.requestAnimationFrame(poll);}};frameId=window.requestAnimationFrame(poll);return()=>{stopped=true;if(frameId!==null)window.cancelAnimationFrame(frameId);if(mutationObserver)mutationObserver.disconnect();};},[]);useEffect(()=>{if(typeof window===\"undefined\"||!shouldAnimate||!hasResolvedTarget){return;}const node=localRef.current;if(!node)return;if(typeof window.IntersectionObserver===\"undefined\"){if(!hasAnimatedRef.current||replay)runAnimation();return cleanupAnimation;}const observer=new window.IntersectionObserver(entries=>{for(const entry of entries){if(!entry.isIntersecting)continue;if(!hasAnimatedRef.current||replay)runAnimation();}},{threshold:.2});observer.observe(node);return()=>{observer.disconnect();cleanupAnimation();};},[cleanupAnimation,hasResolvedTarget,replay,runAnimation,shouldAnimate]);return /*#__PURE__*/_jsx(Component,{...props,ref:setRefs});});return Wrapped;}addPropertyControls(withCountUp,{duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.5,min:0,max:10,step:.1,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:10,step:.1,unit:\"s\"},easing:{type:ControlType.Enum,title:\"Easing\",defaultValue:\"easeOut\",options:[\"linear\",\"easeOut\",\"smooth\"],optionTitles:[\"Linear\",\"Ease Out\",\"Smooth\"]},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},range:{type:ControlType.Number,title:\"Count Range\",defaultValue:20,min:0,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"withCountUp\":{\"type\":\"reactHoc\",\"name\":\"withCountUp\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountUpOverride.map"],"mappings":"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"}