{"version":3,"file":"AnimatedCounter.BOMeVTTp.mjs","names":[],"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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"}