{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/1R65Uox1DAcstQ8LUw1x/py5biFvGilXylOD7gFRH/Number_Counter_1.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,fontFamily=\"Inter, sans-serif\",fontSize=40,fontWeight=700,textColor=\"#111111\",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:{fontFamily:fontFamily,fontSize:`${fontSize}px`,fontWeight:fontWeight,color:textColor},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\"},fontFamily:{type:\"string\",title:\"Font Family\",defaultValue:\"Inter, sans-serif\"},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\"}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Number_Counter_1.map"],
  "mappings": "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",
  "names": ["easingFunctions", "t", "formatNumber", "number", "separator", "decimals", "numberAsFloat", "parts", "sep", "NumberCounter", "startNumber", "endNumber", "duration", "prefix", "suffix", "easingOption", "delay", "replay", "animateOnView", "fontFamily", "fontSize", "fontWeight", "textColor", "currentEndNumber", "setCurrentEndNumber", "ye", "startNumberFloat", "endNumberFloat", "count", "setCount", "hasAnimated", "setHasAnimated", "isAnimating", "setIsAnimating", "counterRef", "pe", "animationRef", "isCanvas", "RenderTarget", "startAnimation", "startTime", "difference", "animate", "currentTime", "progress", "easedProgress", "ue", "observer", "entries", "entry", "u"]
}
