{"version":3,"file":"Number_Counter.DFOoSibk.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/2tdnDuqxjIHPHJVQzTQ4/aPnD7klMkKFlrchyIZfP/Number_Counter.js"],"sourcesContent":["// © Manikandan. All rights reserved.\n// Distribution without written consent is prohibited.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{motion,useAnimation,useInView}from\"framer-motion\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerDisableUnlink\n * @framerIntrinsicWidth 100\n * @framerIntrinsicHeight 50\n */export default function NumberCounter(props){const{from,to,duration,delay,font,color,once,animationType}=props;const controls=useAnimation();const[displayedNumber,setDisplayedNumber]=useState(to)// Default to the \"To\" value initially\n;const ref=useRef(null);const isInView=useInView(ref,{once});// Map animation types to easing functions\nconst easingFunctions={linear:\"linear\",easeIn:\"easeIn\",easeOut:\"easeOut\",easeInOut:\"easeInOut\",bounce:\"easeInOutBounce\"};// Animate the counter when in view with delay\nuseEffect(()=>{if(isInView){controls.start({opacity:1});const countUp=()=>{const start=from;const end=to;const totalFrames=duration*60// Convert minutes to seconds for frames\n;let currentFrame=0;const counter=setInterval(()=>{currentFrame++;const progress=currentFrame/totalFrames;const currentNumber=Math.floor(start+progress*(end-start));setDisplayedNumber(currentNumber);if(currentFrame>=totalFrames)clearInterval(counter);},1e3/60)// 60 FPS\n;};// Start counting after the specified delay\nconst delayTimeout=setTimeout(countUp,delay*1e3);return()=>clearTimeout(delayTimeout)// Clean up timeout if component unmounts\n;}},[isInView,from,to,duration,delay,once]);return /*#__PURE__*/_jsx(motion.div,{ref:ref,initial:{opacity:1},animate:controls,style:{color,...font},children:displayedNumber});}NumberCounter.defaultProps={from:0,to:100,duration:1,delay:0,font:{family:\"Inter\",size:32,weight:400,lineHeight:\"1.5em\",letterSpacing:\"0px\"},color:\"#000\",once:true,animationType:\"linear\"};addPropertyControls(NumberCounter,{from:{type:ControlType.Number,title:\"From\",defaultValue:0},to:{type:ControlType.Number,title:\"To\",defaultValue:100},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1,min:.1,max:10,step:.1},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:10,step:.1},font:{type:ControlType.Font,title:\"Font\",defaultValue:NumberCounter.defaultProps.font,controls:\"extended\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000\"},once:{type:ControlType.Boolean,title:\"Once\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},animationType:{type:ControlType.Enum,title:\"Animation Type\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\",\"bounce\"],optionTitles:[\"Linear\",\"Ease In\",\"Ease Out\",\"Ease In-Out\",\"Bounce\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"50\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 100\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Number_Counter.map"],"mappings":"wPAMG,SAAwB,EAAc,EAAM,CAAC,GAAK,CAAC,OAAK,KAAG,WAAS,QAAM,OAAK,QAAM,OAAK,iBAAe,EAAY,EAAS,EAAa,EAAO,CAAC,EAAgB,GAAoBA,EAAS,CAAE,EAC9L,EAAIC,EAAO,IAAI,EAAQ,EAAS,EAAU,EAAI,CAAC,MAAI,CAAC,EAMf,OAJ5C,MAAc,CAAC,GAAG,EAAS,CAAC,EAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,EAGtD,IAAM,EAAa,eAHuD,CAAC,IAAM,EAAM,EAAW,EAAI,EAAS,EAAY,EAAS,GAC/H,EAAa,EAAQ,EAAQ,gBAAgB,CAAC,IAAe,IAAM,EAAS,EAAa,EAAkB,EAAc,KAAK,MAAM,EAAM,GAAU,EAAI,EAAM,EAAE,EAAmB,CAAa,EAAK,GAAc,GAAY,cAAc,CAAO,CAAE,EAAE,IAAI,EAAE,CAClQ,EACqC,EAAM,GAAG,EAAE,UAAU,aAAa,CAAY,CACnF,CAAC,EAAE,CAAC,EAAS,EAAK,EAAG,EAAS,EAAM,CAAI,CAAC,EAAsB,EAAK,EAAO,IAAI,CAAK,MAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAS,MAAM,CAAC,QAAM,GAAG,CAAI,EAAE,SAAS,CAAe,CAAC,CAAE,iBAXrI,IAAyD,IAA6C,IAAoD,EAWpB,EAAc,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,QAAQ,KAAK,GAAG,OAAO,IAAI,WAAW,QAAQ,cAAc,KAAK,EAAE,MAAM,OAAO,KAAK,GAAK,cAAc,QAAQ,EAAE,EAAoB,EAAc,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,CAAC,EAAE,GAAG,CAAC,KAAK,EAAY,OAAO,MAAM,KAAK,aAAa,GAAG,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,aAAa,EAAc,aAAa,KAAK,SAAS,UAAU,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,MAAM,EAAE,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,aAAa,MAAM,cAAc,IAAI,EAAE,cAAc,CAAC,KAAK,EAAY,KAAK,MAAM,iBAAiB,QAAQ,CAAC,SAAS,SAAS,UAAU,YAAY,QAAQ,EAAE,aAAa,CAAC,SAAS,UAAU,WAAW,cAAc,QAAQ,CAAC,CAAC,CAAC"}