{"version":3,"file":"CountUp.Ddv_Ak8T.mjs","names":["React.useRef","React.useState","React.useCallback","React.useMemo"],"sources":["https:/framerusercontent.com/modules/O28j3aY0qbh9yeljAlNh/gqqBQbJ0gRvZMA8IKKna/CountUp.js"],"sourcesContent":["// User request: Create a CountUp code component for a marketing stats section with optional prefix/suffix, one-time in-view animation from 0 to target value, easing (decelerating near end), Framer property controls (value, prefix, suffix, duration, useGrouping, font, color), canvas/editor-friendly final-value rendering before view, stable tabular numerals, and auto-sized single-line layout.\nimport{jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CountUp(props){const{value=2e4,prefix=\"\",suffix=\"+\",duration=6,useGrouping=true,color=\"#111111\",font}=props;const safeValue=Math.max(0,Number.isFinite(value)?value:0);const safeDuration=Math.max(.1,Number.isFinite(duration)?duration:6);const isStaticRenderer=useIsStaticRenderer();const hasRenderRestrictions=RenderTarget.hasRestrictions();const shouldRenderFinalByDefault=isStaticRenderer||hasRenderRestrictions;const rootRef=React.useRef(null);const isInView=useInView(rootRef,{once:true,margin:\"0px\"});const[displayValue,setDisplayValue]=React.useState(shouldRenderFinalByDefault?safeValue:0);const[hasAnimated,setHasAnimated]=React.useState(false);const formatNumber=React.useCallback(num=>{const rounded=Math.round(num);return useGrouping?rounded.toLocaleString(\"en-US\"):String(rounded);},[useGrouping]);const easedProgress=React.useCallback(t=>1-Math.pow(1-t,3),[]);React.useEffect(()=>{if(shouldRenderFinalByDefault){React.startTransition(()=>{setDisplayValue(safeValue);setHasAnimated(true);});return;}if(!isInView||hasAnimated)return;if(typeof window===\"undefined\")return;let frameId=0;const startTime=window.performance?.now?.()??Date.now();const tick=now=>{const elapsed=(now-startTime)/1e3;const linear=Math.min(elapsed/safeDuration,1);const eased=easedProgress(linear);const nextValue=safeValue*eased;React.startTransition(()=>{setDisplayValue(nextValue);});if(linear<1){frameId=window.requestAnimationFrame(tick);}else{React.startTransition(()=>{setDisplayValue(safeValue);setHasAnimated(true);});}};frameId=window.requestAnimationFrame(tick);return()=>{if(frameId)window.cancelAnimationFrame(frameId);};},[easedProgress,hasAnimated,isInView,safeDuration,safeValue,shouldRenderFinalByDefault]);const visibleNumber=React.useMemo(()=>{if(shouldRenderFinalByDefault&&!hasAnimated)return formatNumber(safeValue);return formatNumber(displayValue);},[displayValue,formatNumber,hasAnimated,safeValue,shouldRenderFinalByDefault]);return /*#__PURE__*/_jsxs(\"span\",{ref:rootRef,style:{position:\"relative\",display:\"inline-block\",width:\"max-content\",whiteSpace:\"nowrap\",color,fontSize:font?.fontSize,lineHeight:font?.lineHeight,letterSpacing:font?.letterSpacing,textAlign:font?.textAlign,fontWeight:font?.fontWeight,fontStyle:font?.fontStyle,fontFamily:font?.fontFamily,fontVariantNumeric:\"tabular-nums\",WebkitFontSmoothing:\"antialiased\"},children:[prefix,visibleNumber,suffix]});}addPropertyControls(CountUp,{value:{type:ControlType.Number,title:\"Value\",defaultValue:2e4,min:0,step:1},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"+\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:6,min:.1,max:20,step:.1,unit:\"s\"},useGrouping:{type:ControlType.Boolean,title:\"Grouping\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CountUp\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountUp.map"],"mappings":"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"}