{"version":3,"file":"Number_Counter.CD9nO2TC.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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"}