{"version":3,"file":"AnimatedCounter.Cs0ClJAW.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/rQhmMrjvifjgEww6516M/3ZoTMfvx0FLMuMmJIAUb/AnimatedCounter.js"],"sourcesContent":["// Number counter component that animates from start to end value when in view\n// Supports prefix/suffix, font customization, decimals, easing, duration and delay\n// Animation triggers once when component enters viewport\nimport{jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useInView,animate}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function AnimatedCounter(props){const{startValue,endValue,duration,delay,decimals,prefix,suffix,transition,font,color,loop,loopDelay,style}=props;const[displayValue,setDisplayValue]=useState(startValue);const[hasAnimated,setHasAnimated]=useState(false);const ref=useRef(null);const isInView=useInView(ref,{once:!loop});useEffect(()=>{if(isInView&&(!hasAnimated||loop)){const timer=setTimeout(()=>{const controls=animate(startValue,endValue,{duration:duration,...transition,onUpdate:value=>{startTransition(()=>{setDisplayValue(value);});},onComplete:()=>{startTransition(()=>{setHasAnimated(true);});if(loop){setTimeout(()=>{startTransition(()=>{setDisplayValue(startValue);setHasAnimated(false);});},loopDelay*1e3);}}});return()=>controls.stop();},delay*1e3);return()=>clearTimeout(timer);}},[isInView,hasAnimated,startValue,endValue,duration,delay,transition,loop,loopDelay]);const formattedValue=displayValue.toFixed(decimals);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{...style,position:\"relative\",width:\"max-content\",minWidth:\"max-content\",color:color,...font},children:[prefix,formattedValue,suffix]});}addPropertyControls(AnimatedCounter,{startValue:{type:ControlType.Number,title:\"Start Value\",defaultValue:0,step:1},endValue:{type:ControlType.Number,title:\"End Value\",defaultValue:2e3,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\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},loopDelay:{type:ControlType.Number,title:\"Loop Delay\",defaultValue:1,min:0,max:10,step:.1,unit:\"s\",hidden:({loop})=>!loop},decimals:{type:ControlType.Number,title:\"Decimals\",defaultValue:0,min:0,max:4,step:1,displayStepper:true},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\"},transition:{type:ControlType.Transition,title:\"Easing\"},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:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedCounter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedCounter.map"],"mappings":"wPAMG,SAAwB,EAAgB,EAAM,CAAC,GAAK,CAAC,aAAW,WAAS,WAAS,QAAM,WAAS,SAAO,SAAO,aAAW,OAAK,QAAM,OAAK,YAAU,SAAO,EAAW,CAAC,EAAa,GAAiBA,EAAS,EAAW,CAAM,CAAC,EAAY,GAAgBA,EAAS,GAAM,CAAO,EAAIC,EAAO,KAAK,CAAO,EAAS,EAAU,EAAI,CAAC,KAAK,CAAC,EAAK,CAAC,CAAC,MAAc,CAAC,GAAG,IAAW,CAAC,GAAa,GAAM,CAAC,IAAM,EAAM,eAAe,CAAC,IAAM,EAAS,EAAQ,EAAW,EAAS,CAAU,WAAS,GAAG,EAAW,SAAS,GAAO,CAAC,MAAoB,CAAC,EAAgB,EAAM,EAAG,EAAG,eAAe,CAAC,MAAoB,CAAC,EAAe,GAAK,EAAG,CAAI,GAAM,eAAe,CAAC,MAAoB,CAAC,EAAgB,EAAW,CAAC,EAAe,GAAM,EAAG,EAAG,EAAU,IAAI,EAAI,CAAC,CAAC,UAAU,EAAS,MAAM,EAAG,EAAM,IAAI,CAAC,UAAU,aAAa,EAAM,GAAI,CAAC,EAAS,EAAY,EAAW,EAAS,EAAS,EAAM,EAAW,EAAK,EAAU,CAAC,CAAC,IAAM,EAAe,EAAa,QAAQ,EAAS,CAAC,OAAoB,EAAM,MAAM,CAAK,MAAI,MAAM,CAAC,GAAG,EAAM,SAAS,WAAW,MAAM,cAAc,SAAS,cAAoB,QAAM,GAAG,EAAK,CAAC,SAAS,CAAC,EAAO,EAAe,EAAO,CAAC,CAAC,kBAH7jC,IAA6D,IAAoD,IAA6C,CAGi6B,EAAoB,EAAgB,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,UAAQ,CAAC,EAAK,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,GAAK,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAY,WAAW,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,OAAO,QAAQ,OAAO,cAAc,UAAU,WAAW,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,CAAC"}