{"version":3,"file":"AnimatedCounter.DRwO5Ukj.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/sIxZFVxIOBdfeANYhkj2/lGu9VayhxpYD2v9lbKlh/AnimatedCounter.js"],"sourcesContent":["/*\n * Animated Counter by framer.today\n * v1.0.1\n *\n * hi@framer.today\n * _joerl on 𝕏\n *\n * Full terms here ↴\n * https://framer.today/license\n *\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{animate,motion,useInView}from\"framer-motion\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerDisableUnlink\n */export default function AnimatedCounter(props){const{from,to,duration,decimalPlaces,decimalSeparator,font:{fontFamily,fontWeight,fontSize,lineHeight,letterSpacing,textAlign},color,playOnLoad,once,animationType}=props;const ref=useRef(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const ariaLabel=`Counter ends at ${to}`;// Pass 'once' to useInView\nconst isInView=useInView(ref,{once});const[hasAnimated,setHasAnimated]=useState(false);const[displayValue,setDisplayValue]=useState(()=>formatNumber(from));function formatNumber(value){let formattedNumber=value.toFixed(decimalPlaces).replace(\".\",decimalSeparator);return formattedNumber;}useEffect(()=>{// Determine if animation should play\nif(!isCanvas&&(playOnLoad||isInView)&&!hasAnimated){const animationControl=animate(from,to,{duration,ease:animationType===\"smooth\"?\"easeInOut\":\"linear\",onUpdate:latest=>{setDisplayValue(formatNumber(latest));},onComplete:()=>{if(once){setHasAnimated(true);}}});return()=>animationControl.stop();}},[from,to,duration,decimalPlaces,decimalSeparator,playOnLoad,isInView,animationType,once,hasAnimated]);return /*#__PURE__*/_jsx(motion.div,{ref:ref,initial:{opacity:isCanvas?1:0},whileInView:{opacity:1},style:{fontFamily,fontWeight,fontSize,lineHeight,letterSpacing,textAlign,color,fontVariantNumeric:\"tabular-nums\",userSelect:\"none\"},\"aria-label\":ariaLabel,children:isCanvas?formatNumber(to):displayValue});}AnimatedCounter.defaultProps={from:0,to:24,duration:5,decimalPlaces:0,decimalSeparator:\".\",font:{fontFamily:\"Manrope\",fontWeight:\"400\",fontSize:40,lineHeight:\"1.5em\",letterSpacing:\"normal\",textAlign:\"left\"},color:\"#FFF\",playOnLoad:true,once:true,animationType:\"smooth\"};addPropertyControls(AnimatedCounter,{from:{type:ControlType.Number,title:\"From\",defaultValue:0,min:0,step:.1,displayStepper:true},to:{type:ControlType.Number,title:\"To\",defaultValue:16,min:0,step:.1,displayStepper:true},animationType:{type:ControlType.Enum,title:\"Animation Type\",defaultValue:\"smooth\",options:[\"smooth\",\"linear\"],optionTitles:[\"Smooth\",\"Linear\"]},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2.5,min:0,step:.1,displayStepper:true},decimalPlaces:{type:ControlType.Number,displayStepper:true,title:\"Decimal Places\",defaultValue:0,min:0,max:2,step:1},decimalSeparator:{type:ControlType.Enum,title:\"↳ Separator\",defaultValue:\".\",options:[\".\",\",\"],optionTitles:[\".\",\",\"],hidden:({decimalPlaces})=>decimalPlaces===0},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:{fontFamily:\"Manrope\",fontWeight:\"400\",fontSize:64,lineHeight:\"1.5em\",letterSpacing:\"Medium\",textAlign:\"left\"},displayFontSize:true,displayTextAlignment:false,defaultFontType:\"monospace\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFF\"},once:{type:ControlType.Boolean,title:\"Once\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},playOnLoad:{type:ControlType.Boolean,title:\"Play on Load\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:`\n        \n        *from framer.today*\n [License](https://framer.today/license)\n    `}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedCounter.map"],"mappings":"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"}