{"version":3,"file":"Number_Counter.CbftmLiC.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/O2Fknuia350ldvVuO3C0/9QE4eAlNfwhpdVciKeTf/Number_Counter.js"],"sourcesContent":["import{jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{RenderTarget}from\"framer\";const easingFunctions={linear:t=>t,easeOut:t=>t*(2-t),easeIn:t=>t*t,easeInOut:t=>t<.5?2*t*t:-1+(4-2*t)*t,bounceOut:t=>{const n1=7.5625;const d1=2.75;if(t<1/d1)return n1*t*t;if(t<2/d1)return n1*(t-=1.5/d1)*t+.75;if(t<2.5/d1)return n1*(t-=2.25/d1)*t+.9375;return n1*(t-=2.625/d1)*t+.984375;}};const formatNumber=(number,separator,decimals)=>{const numberAsFloat=parseFloat(number);if(isNaN(numberAsFloat))return\"0\";const parts=numberAsFloat.toFixed(decimals).split(\".\");if(separator===\"none\"){return parts.join(\".\");}const sep=separator===\"space\"?\" \":\",\";parts[0]=parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g,sep);return parts.join(\".\");};export default function NumberCounter({startNumber=\"0\",endNumber=\"100\",duration=2e3,prefix=\"\",suffix=\"\",decimals=0,easingOption=\"easeOut\",delay=0,replay=false,animateOnView=true,fontSize=40,fontWeight=700,textColor=\"#111111\",fontFamily=\"Inter\",separator=\"none\"}){const[currentEndNumber,setCurrentEndNumber]=useState(endNumber);const startNumberFloat=parseFloat(startNumber);const endNumberFloat=parseFloat(currentEndNumber);const[count,setCount]=useState(endNumberFloat);const[hasAnimated,setHasAnimated]=useState(false);const[isAnimating,setIsAnimating]=useState(false);const counterRef=useRef(null);const animationRef=useRef(null);// Check if we're in Framer's canvas\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const startAnimation=()=>{if(isAnimating||isCanvas)return;setIsAnimating(true);let startTime=null;const difference=endNumberFloat-startNumberFloat;const animate=currentTime=>{if(!startTime)startTime=currentTime;const progress=Math.min((currentTime-startTime)/duration,1);const easedProgress=easingFunctions[easingOption](progress);setCount(startNumberFloat+difference*easedProgress);if(progress<1){animationRef.current=requestAnimationFrame(animate);}else{setHasAnimated(true);setIsAnimating(false);}};setTimeout(()=>{animationRef.current=requestAnimationFrame(animate);},delay);};useEffect(()=>{setCurrentEndNumber(endNumber);if(isCanvas){setCount(parseFloat(endNumber));}},[endNumber,isCanvas]);useEffect(()=>{if(isCanvas)return;const observer=new IntersectionObserver(entries=>{const[entry]=entries;if(entry.isIntersecting){if(!hasAnimated||replay&&!isAnimating){setCount(startNumberFloat);startAnimation();}}},{threshold:.1});if(counterRef.current){observer.observe(counterRef.current);}if(!animateOnView){startAnimation();}return()=>{if(counterRef.current){observer.unobserve(counterRef.current);}if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[startNumber,currentEndNumber,duration,easingOption,replay,hasAnimated]);return /*#__PURE__*/_jsxs(\"div\",{ref:counterRef,style:{fontSize:`${fontSize}px`,fontWeight:fontWeight,color:textColor,fontFamily:fontFamily},children:[prefix,formatNumber(count,separator,decimals),suffix]});}NumberCounter.propertyControls={startNumber:{type:\"string\",title:\"Start Number\",defaultValue:\"0\"},endNumber:{type:\"string\",title:\"End Number\",defaultValue:\"100\"},duration:{type:\"number\",title:\"Duration (ms)\",defaultValue:2e3,min:100,step:100},delay:{type:\"number\",title:\"Delay (ms)\",defaultValue:0,min:0,step:100},animateOnView:{type:\"boolean\",title:\"Animate On View\",defaultValue:true},replay:{type:\"boolean\",title:\"Replay Animation\",defaultValue:false},prefix:{type:\"string\",title:\"Prefix\",defaultValue:\"\"},suffix:{type:\"string\",title:\"Suffix\",defaultValue:\"\"},decimals:{type:\"number\",title:\"Decimals\",defaultValue:0,min:0,max:10,step:1},separator:{type:\"enum\",title:\"Number Separator\",options:[\"none\",\"comma\",\"space\"],optionTitles:[\"None\",\"Comma\",\"Space\"],defaultValue:\"none\"},easingOption:{type:\"enum\",title:\"Easing\",options:[\"linear\",\"easeOut\",\"easeIn\",\"easeInOut\",\"bounceOut\"],optionTitles:[\"Linear\",\"Ease Out\",\"Ease In\",\"Ease In Out\",\"Bounce\"],defaultValue:\"easeOut\"},fontSize:{type:\"number\",title:\"Font Size\",defaultValue:40,min:1,step:1},fontWeight:{type:\"number\",title:\"Font Weight\",defaultValue:700,min:100,max:900,step:100},textColor:{type:\"color\",title:\"Text Color\",defaultValue:\"#111111\"},fontFamily:{type:\"string\",title:\"Font Family\",defaultValue:\"Inter\"}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Number_Counter.map"],"mappings":"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"}