{"version":3,"file":"CountUpOverride.Ge2ZAzYP.mjs","names":["useRef","useMemo","useState","useCallback","__esmMin","init_ssg_sandbox_shims","te","ne","_e","de","init_jsx_runtime","pe","J","c","init_npm_react_18_3_1","ce","window","init_framer_motion_DhsWWWsN","useInView","init_framer_CaDWdxiz","useIsStaticRenderer","withCountUpOnView","localRef","inView","isStaticRenderer","propText","props","sourceText","setSourceText","displayText","setDisplayText","hasAnimated","setHasAnimated","normalized","isTarget","parsed","clean","hasPlus","numberPart","formatValue","rounded","value","domText","start","frameId","tick","elapsed","now","progress","eased","setRefs","node","ref","overrideText","nextProps","Component","init_CountUpOverride"],"sources":["https:/framerusercontent.com/modules/8mrzxNCuuz43QZa57yXK/aQv9jFNKGocAc04mFHi9/CountUpOverride.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,startTransition,useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";/**\n * User request:\n * Create a new Framer code override export named withCountUpOnView in CountUpOverride.tsx.\n * Apply to existing canvas RichTextNode layers with original text “400+”, “100+”, or “5,000”.\n * On live site, when 40% visible for the first time, animate from 0 to target over 1.2s (cubic ease-out),\n * preserving + suffix and comma formatting. Be SSR/static-renderer safe and keep canvas styling/text behavior.\n */export function withCountUpOnView(Component){return /*#__PURE__*/forwardRef(function WithCountUpOnView(props,ref){const localRef=useRef(null);const inView=useInView(localRef,{amount:.4,once:true});const isStaticRenderer=useIsStaticRenderer();const propText=useMemo(()=>{if(typeof props?.text===\"string\")return props.text;if(typeof props?.children===\"string\")return props.children;return\"\";},[props?.children,props?.text]);const[sourceText,setSourceText]=useState(propText);const[displayText,setDisplayText]=useState(propText);const[hasAnimated,setHasAnimated]=useState(false);const normalized=sourceText.trim();const isTarget=normalized===\"400+\"||normalized===\"100+\"||normalized===\"5,000\";const parsed=useMemo(()=>{const clean=normalized.replaceAll(\",\",\"\");const hasPlus=clean.endsWith(\"+\");const numberPart=hasPlus?clean.slice(0,-1):clean;const target=Number.parseInt(numberPart,10);const usesComma=normalized.includes(\",\");return{target,hasPlus,usesComma};},[normalized]);const formatValue=useCallback(value=>{const rounded=Math.max(0,Math.floor(value));const base=parsed.usesComma?new Intl.NumberFormat(\"en-US\").format(rounded):String(rounded);return`${base}${parsed.hasPlus?\"+\":\"\"}`;},[parsed.hasPlus,parsed.usesComma]);useEffect(()=>{startTransition(()=>{setSourceText(propText);setDisplayText(propText);setHasAnimated(false);});},[propText]);useEffect(()=>{if(typeof window===\"undefined\")return;if(!localRef.current)return;if(propText)return;const domText=localRef.current.textContent?.trim()??\"\";if(!domText)return;startTransition(()=>{setSourceText(domText);setDisplayText(domText);});},[propText]);useEffect(()=>{if(!isTarget)return;if(isStaticRenderer){startTransition(()=>{setDisplayText(normalized);});return;}if(!hasAnimated){startTransition(()=>{setDisplayText(formatValue(0));});}},[formatValue,hasAnimated,isStaticRenderer,isTarget,normalized]);useEffect(()=>{if(typeof window===\"undefined\")return;if(isStaticRenderer||!isTarget||!inView||hasAnimated)return;const duration=1200;const start=window.performance.now();let frameId=0;const tick=now=>{const elapsed=now-start;const progress=Math.min(1,elapsed/duration);const eased=1-Math.pow(1-progress,3);const value=parsed.target*eased;startTransition(()=>{setDisplayText(formatValue(value));});if(progress<1){frameId=window.requestAnimationFrame(tick);}else{startTransition(()=>{setDisplayText(normalized);setHasAnimated(true);});}};frameId=window.requestAnimationFrame(tick);return()=>window.cancelAnimationFrame(frameId);},[formatValue,hasAnimated,inView,isStaticRenderer,isTarget,normalized,parsed.target]);const setRefs=useCallback(node=>{localRef.current=node;if(typeof ref===\"function\")ref(node);else if(ref&&typeof ref===\"object\"){ref.current=node;}},[ref]);const overrideText=isTarget?displayText:undefined;const nextProps={...props,ref:setRefs};if(overrideText!==undefined){if(typeof props?.text===\"string\")nextProps.text=overrideText;else nextProps.children=overrideText;nextProps[\"aria-label\"]=overrideText;}return /*#__PURE__*/_jsx(Component,{...nextProps});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withCountUpOnView\":{\"type\":\"reactHoc\",\"name\":\"withCountUpOnView\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountUpOverride.map"],"mappings":"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"}