{"version":3,"file":"NumberCounter.BxDS7sf0.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/iySSSDxDvliMoeu1n6V4/acAcMPtqJ2lMnQzh6kFT/PYMxN9WOw.js","https:/framerusercontent.com/modules/CCnzYVRfFVBL7ILqFD6Y/INDZilOJElr0dHp03oDM/NumberCounter.js"],"sourcesContent":["// Generated by Framer (3079af2)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Libre Baskerville-regular\",\"GF;Libre Baskerville-700\",\"GF;Libre Baskerville-700italic\",\"GF;Libre Baskerville-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Libre Baskerville\",openType:true,source:\"google\",style:\"normal\",uiFamilyName:\"Libre Baskerville\",url:\"https://fonts.gstatic.com/s/librebaskerville/v24/kmKUZrc3Hgbbcjq75U4uslyuy4kn0olVQ-LglH6T17uj8Q4SDAlOvuPCfQ.woff2\",weight:\"400\"},{cssFamilyName:\"Libre Baskerville\",openType:true,source:\"google\",style:\"normal\",uiFamilyName:\"Libre Baskerville\",url:\"https://fonts.gstatic.com/s/librebaskerville/v24/kmKUZrc3Hgbbcjq75U4uslyuy4kn0olVQ-LglH6T17ujFgkSDAlOvuPCfQ.woff2\",weight:\"700\"},{cssFamilyName:\"Libre Baskerville\",openType:true,source:\"google\",style:\"italic\",uiFamilyName:\"Libre Baskerville\",url:\"https://fonts.gstatic.com/s/librebaskerville/v24/kmKWZrc3Hgbbcjq75U4uslyuy4kn0qNccR04_RUJeby2OU0dTQNPnObSfbge.woff2\",weight:\"700\"},{cssFamilyName:\"Libre Baskerville\",openType:true,source:\"google\",style:\"italic\",uiFamilyName:\"Libre Baskerville\",url:\"https://fonts.gstatic.com/s/librebaskerville/v24/kmKWZrc3Hgbbcjq75U4uslyuy4kn0qNccR04_RUJeby2OU36SgNPnObSfbge.woff2\",weight:\"400\"}]}];export const css=['.framer-8mCBj .framer-styles-preset-1kfwcat:not(.rich-text-wrapper), .framer-8mCBj .framer-styles-preset-1kfwcat.rich-text-wrapper h5 { --framer-font-family: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-bold: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-bold-italic: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-italic: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv09\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv11\\' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 1); --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.04em; --framer-line-height: 1.5em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-3b64f221-0623-4878-b9a5-f9f98cb6bc2e, #d4af37); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-8mCBj .framer-styles-preset-1kfwcat:not(.rich-text-wrapper), .framer-8mCBj .framer-styles-preset-1kfwcat.rich-text-wrapper h5 { --framer-font-family: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-bold: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-bold-italic: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-italic: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv09\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv11\\' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 1); --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.04em; --framer-line-height: 1.5em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-3b64f221-0623-4878-b9a5-f9f98cb6bc2e, #d4af37); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-8mCBj .framer-styles-preset-1kfwcat:not(.rich-text-wrapper), .framer-8mCBj .framer-styles-preset-1kfwcat.rich-text-wrapper h5 { --framer-font-family: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-bold: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-bold-italic: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-family-italic: \"Libre Baskerville\", \"Libre Baskerville Placeholder\", serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv09\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv11\\' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 1); --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.04em; --framer-line-height: 1.5em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-3b64f221-0623-4878-b9a5-f9f98cb6bc2e, #d4af37); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-8mCBj\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Number Counter component with animated number counting and extensive customization options\n// Version 1.0\n// First created 19 Sep 2025\n// Last edited 19 Sep 2025\n// By Wes Ambler\n// © Kompa Design Pty Ltd\n//\n// -----------------------------------------------------------------------------\nfunction _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";export class Odometer{render(elem,formatted){// render DOM here\nconst options=this.options;const rAF=this.rAF;var createdNow=false;if(!this.cell_digits){createdNow=true;// avoid adding more than once\nif(typeof document!==\"undefined\"&&!document.querySelector(\"style[odometer]\")){// add styles for odometer numbers\nvar style=document.createElement(\"style\");style.setAttribute(\"odometer\",\"odometer\");style.innerHTML=\".odometer-numbers{display:inline-flex;line-height:100%;overflow-y:hidden}.odometer-numbers>span{display:flex;flex-direction:column;justify-content:start;align-items:center;height:1em;will-change:transform;transform:translateY(0)}\";document.head.appendChild(style);}// create wrapper\nelem.innerHTML='<div class=\"odometer-numbers\"></div>';// create array cell_digits information\nthis.cell_digits=[];}//blank space\nconst blank='<span style=\"color:transparent\">0</span>';const transitionDigit=`transform ${options.duration}s ease-out`;// appearing new cell_digits\nfor(var i=this.cell_digits.length;i<formatted.length;i++){// create a container\nconst container=document.createElement(\"span\");container.style.transition=transitionDigit;// add a first transparent cell\ncontainer.innerHTML=createdNow?\"\":blank;if(elem.firstChild)elem.firstChild.appendChild(container);// prepare data id cell\nthis.cell_digits.push({container,current:undefined,position:createdNow?1:0,new:true});}function appendDigit(cell,newDigit){cell.position--;cell.container.appendChild(newDigit);cell.lastTimeAdd=+new Date;// we need to stablish transition at first number, using timeout\nif(cell.new){cell.new=false;rAF(function(){cell.container.style.transform=`translateY(${cell.position}em)`;});}else cell.container.style.transform=`translateY(${cell.position}em)`;}function pushDigit(cell,newDigit){// if there was another cell waiting to be added, we add it here\nif(cell.nextToAdd){appendDigit(cell,cell.nextToAdd);clearTimeout(cell.lastTimer);cell.nextToAdd=null;}const now=+new Date;const delayTime=options.lastDigitDelay*1e3-(now-cell.lastTimeAdd);// if we are in slow animation, we just add digit\nif(options.lastDigitDelay<=0||now-cell.lastTimeAdd>=delayTime*1.05){appendDigit(cell,newDigit);cell.nextToAdd=null;}else{// if not, we delay the push\ncell.nextToAdd=newDigit;cell.lastTimer=setTimeout(()=>{appendDigit(cell,cell.nextToAdd);cell.nextToAdd=null;},options.duration*1e3);}}// we add all sequence cell_digits that are new in formatted number\n// or remove cells no more exist (we put blank cells)\nconst len=Math.max(formatted.length,this.cell_digits.length);for(var i=0;i<len;i++){// cell has changed\nvar ch=i<formatted.length?formatted.charAt(i):null;const cell=this.cell_digits[i];if(cell.current!=ch){cell.current=ch;var newDigit=document.createElement(\"span\");newDigit.innerHTML=ch===null?blank:ch;// the last delay animation only if there is a minimum of 3 elements\nif(cell.container.children.length<4){appendDigit(cell,newDigit);}else{pushDigit(cell,newDigit);}clearTimeout(cell.timerClean);// when animation end, we can remove all extra animated cells\ncell.timerClean=setTimeout(function(){cell.timerClean=null;if(cell.container.children.length<3)return;cell.container.style.transition=\"none\"// temporally clear animation transition\n;rAF(()=>{cell.position=-1;// we remove all childs except last\nwhile(cell.container.children.length>1)cell.container.removeChild(cell.container.firstChild);//insert blank space (forcing width to avoid weird behaviour in comma)\nconst digitBlank=document.createElement(\"span\");digitBlank.innerHTML=blank;cell.container.insertBefore(digitBlank,cell.container.firstChild);// set scroll to last cell position\ncell.container.style.transform=`translateY(${cell.position}em)`;rAF(()=>{cell.container.style.transition=transitionDigit// restart animation transition\n;});});},((options.duration||.8)+(options.duration||.25))*1e3+2500)// 2.5 seconds after last update\n;}}}constructor(options){_define_property(this,\"version\",\"1.0\");_define_property(this,\"options\",void 0);_define_property(this,\"defaults\",{duration:.8,lastDigitDelay:.25});_define_property(this,\"cell_digits\",null);_define_property(this,\"rAF\",null);this.options={...this.defaults,...options};this.cell_digits=null;// Initialize rAF safely for browser environment\nif(typeof window!==\"undefined\"){this.rAF=window.requestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60);};}else{// Fallback for server-side rendering\nthis.rAF=function(callback){setTimeout(callback,1e3/60);};}}}/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function NumberCounter(props){const{endValue=8146,startValue=0,duration=5,decimalPlaces=0,smoothing=7,grouping=\"standard\",separator=\",\",decimal=\".\",prefix=\"\",suffix=\"\",color=\"#000000\",font,offScreen=\"play\",odometer=false,direction=\"up\"}=props;const[currentValue,setCurrentValue]=useState(startValue);const animationRef=useRef();const startTimeRef=useRef();const pausedTimeRef=useRef(0);const containerRef=useRef(null);const odometerRef=useRef(null);const isStatic=useIsStaticRenderer();const isInView=useInView(containerRef);// Determine if animation should be running\nconst shouldAnimate=offScreen===\"play\"||isInView;// Easing function - easeOutExpo\nconst easeOutExpo=useCallback((t,b,c,d)=>{return c*(-Math.pow(2,-10*t/d)+1)*1024/1023+b;},[]);// Format number with all options\nconst formatNumber=useCallback(num=>{const neg=num<0?\"-\":\"\";let result,x1,x2,x3;result=Math.abs(num).toFixed(decimalPlaces);result+=\"\";const x=result.split(\".\");x1=x[0];x2=x.length>1?decimal+x[1]:\"\";if(grouping!==\"none\"){x3=\"\";let factor=3,j=0;for(let i=0,len=x1.length;i<len;++i){if(grouping===\"indian\"&&i===4){factor=2;j=1;}if(i!==0&&j%factor===0){x3=separator+x3;}j++;x3=x1[len-i-1]+x3;}x1=x3;}return neg+prefix+x1+x2+suffix;},[decimalPlaces,decimal,grouping,separator,prefix,suffix]);// Initialize odometer\nuseEffect(()=>{if(odometer&&typeof window!==\"undefined\"){odometerRef.current=new Odometer({duration:duration*.3,lastDigitDelay:.1});// Initialize with start value immediately\nif(containerRef.current){const initialValue=isStatic?endValue:startValue;const formattedValue=formatNumber(initialValue);odometerRef.current.render(containerRef.current,formattedValue);}}},[odometer,duration,isStatic,endValue,startValue,formatNumber]);// Animation function\nconst animate=useCallback(timestamp=>{if(!startTimeRef.current){startTimeRef.current=timestamp-pausedTimeRef.current;}const progress=timestamp-startTimeRef.current;const durationMs=duration*1e3;let frameVal;const countDown=direction===\"down\";const useEasing=smoothing>0;if(useEasing){// Apply easing intensity based on slider value (0-10)\nconst easingIntensity=smoothing/10;if(countDown){frameVal=startValue-easeOutExpo(progress,0,startValue-endValue,durationMs)*easingIntensity-(startValue-endValue)*(progress/durationMs)*(1-easingIntensity);}else{frameVal=easeOutExpo(progress,startValue,endValue-startValue,durationMs)*easingIntensity+(startValue+(endValue-startValue)*(progress/durationMs))*(1-easingIntensity);}}else{if(countDown){frameVal=startValue-(startValue-endValue)*(progress/durationMs);}else{frameVal=startValue+(endValue-startValue)*(progress/durationMs);}}// Don't go past endValue\nconst wentPast=countDown?frameVal<endValue:frameVal>endValue;frameVal=wentPast?endValue:frameVal;// Apply decimal places\nframeVal=Number(frameVal.toFixed(decimalPlaces));startTransition(()=>{setCurrentValue(frameVal);});// Update odometer if enabled\nif(odometer&&odometerRef.current&&containerRef.current){const formattedValue=formatNumber(frameVal);odometerRef.current.render(containerRef.current,formattedValue);}if(progress<durationMs&&shouldAnimate){animationRef.current=requestAnimationFrame(animate);}else if(progress>=durationMs){startTransition(()=>{setCurrentValue(endValue);});// Final odometer update\nif(odometer&&odometerRef.current&&containerRef.current){const formattedValue=formatNumber(endValue);odometerRef.current.render(containerRef.current,formattedValue);}}else{// Animation paused, store the current progress\npausedTimeRef.current=progress;}},[startValue,endValue,duration,smoothing,easeOutExpo,decimalPlaces,shouldAnimate,odometer,formatNumber,direction]);// Start animation\nconst startAnimation=useCallback(()=>{if(isStatic)return;if(animationRef.current){cancelAnimationFrame(animationRef.current);}if(pausedTimeRef.current===0){startTimeRef.current=undefined;startTransition(()=>{setCurrentValue(startValue);});}animationRef.current=requestAnimationFrame(animate);},[animate,startValue,isStatic]);// Handle viewport changes for pause mode\nuseEffect(()=>{if(isStatic)return;if(offScreen===\"pause\"){if(isInView&&!animationRef.current){// Resume animation when coming into view\nstartAnimation();}else if(!isInView&&animationRef.current){// Pause animation when going out of view\ncancelAnimationFrame(animationRef.current);animationRef.current=undefined;}}},[isInView,offScreen,startAnimation,isStatic]);// Auto start functionality\nuseEffect(()=>{if(!isStatic&&shouldAnimate){startAnimation();}},[startAnimation,isStatic,shouldAnimate]);// Reset on prop changes\nuseEffect(()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}pausedTimeRef.current=0;setTimeout(startAnimation,50);},[endValue,startValue,duration,startAnimation,direction]);// Cleanup\nuseEffect(()=>{return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[]);const displayValue=isStatic?endValue:currentValue;return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{display:\"inline-block\",color:color,minWidth:odometer?\"fit-content\":\"max-content\",minHeight:\"1em\",width:odometer?\"fit-content\":\"auto\",...font},children:!odometer&&formatNumber(displayValue)});}NumberCounter.displayName=\"Number Counter\";addPropertyControls(NumberCounter,{startValue:{type:ControlType.Number,title:\"Start Value\",defaultValue:0,step:1},endValue:{type:ControlType.Number,title:\"End Value\",defaultValue:1e4,step:1},direction:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"up\",options:[\"up\",\"down\"],optionTitles:[\"Up\",\"Down\"],displaySegmentedControl:true},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:5,min:.1,step:1,unit:\"s\"},decimalPlaces:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:10,step:1,displayStepper:true},smoothing:{type:ControlType.Number,title:\"Smoothing\",defaultValue:7,min:0,max:10,step:1},grouping:{type:ControlType.Enum,title:\"Grouping\",defaultValue:\"standard\",options:[\"none\",\"standard\",\"indian\"],optionTitles:[\"None (1000)\",\"Standard (1,000)\",\"Indian (1,00,000)\"]},separator:{type:ControlType.String,title:\"Separator\",defaultValue:\",\",placeholder:\",\",hidden:({grouping})=>grouping===\"none\"},decimal:{type:ControlType.String,title:\"Decimal\",defaultValue:\".\",placeholder:\".\",hidden:({decimalPlaces})=>decimalPlaces===0},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"32px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1.2em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},offScreen:{type:ControlType.Enum,title:\"Off-Screen\",defaultValue:\"play\",options:[\"play\",\"pause\"],optionTitles:[\"Play\",\"Reset\"],displaySegmentedControl:true},odometer:{type:ControlType.Boolean,title:\"Odometer\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",displaySegmentedControl:true,description:\"Build better sites, faster with [Kompa](https://www.kompa.design)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"OdometerOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Odometer\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberCounter.map"],"mappings":"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"}