{"version":3,"file":"CounterUp.BP5OP3kC.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/Pw0FRpQ7mxsmFPZ62NpT/Ymj7QmfGfMDU7cYd7TWA/CounterUp.js"],"sourcesContent":["// Counter up component that animates numbers when scrolled into view\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition}from\"react\";import{useInView,useMotionValue,useSpring,motion}from\"framer-motion\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * Counter Up component that animates numbers when scrolled into view\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CounterUp(props){const{startNumber=0,endNumber=100,duration=2,delay=0,prefix=\"\",suffix=\"\",separator=true,decimals=0,font,textColor,textAlign=\"left\",style}=props;const ref=useRef(null);const isInView=useInView(ref,{once:true,margin:\"-10%\"});const isStatic=useIsStaticRenderer();const[hasStarted,setHasStarted]=useState(false);const motionValue=useMotionValue(startNumber);const springValue=useSpring(motionValue,{duration:duration*1e3,bounce:0});const[displayValue,setDisplayValue]=useState(startNumber);useEffect(()=>{if(isStatic){setDisplayValue(endNumber);return;}const unsubscribe=springValue.on(\"change\",latest=>{startTransition(()=>{setDisplayValue(latest);});});return unsubscribe;},[springValue,endNumber,isStatic]);useEffect(()=>{if(isStatic)return;if(isInView&&!hasStarted){const timer=setTimeout(()=>{motionValue.set(endNumber);startTransition(()=>{setHasStarted(true);});},delay*1e3);return()=>clearTimeout(timer);}},[isInView,hasStarted,endNumber,delay,motionValue,isStatic]);const formatNumber=value=>{const rounded=Number(value.toFixed(decimals));const formatted=separator?rounded.toLocaleString():rounded.toString();return`${prefix}${formatted}${suffix}`;};const isFixedWidth=style&&style.width===\"100%\";return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style,position:\"relative\",...isFixedWidth?{}:{width:\"max-content\"},textAlign,color:textColor,...font},children:/*#__PURE__*/_jsx(motion.span,{children:formatNumber(displayValue)})});}addPropertyControls(CounterUp,{startNumber:{type:ControlType.Number,title:\"Start Number\",defaultValue:0,step:1},endNumber:{type:ControlType.Number,title:\"End Number\",defaultValue:100,step:1},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2,min:.1,max:10,step:.1,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\"},separator:{type:ControlType.Boolean,title:\"Thousand Separator\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},decimals:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:3,step:1,displayStepper:true},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"32px\",variant:\"Bold\",letterSpacing:\"-0.03em\",lineHeight:\"1em\"},controls:\"extended\",defaultFontType:\"sans-serif\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CounterUp\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CounterUp.map"],"mappings":"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"}