{"version":3,"file":"Number_Counter.DOIjdGG7.mjs","names":["__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/n1WJjXR9za6NAujvTkoN/AaCmd6UXnsPdVGurie1T/Number_Counter.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";export function NumberCounter(props={}){const{duration=.5,delay=.2,threshold=.5,triggerOnce=true}=props;return{ref:element=>{if(!element)return;if(element.hasAttribute(\"data-number-animated\"))return;element.setAttribute(\"data-number-animated\",\"true\");// Find all text nodes\nconst walker=document.createTreeWalker(element,NodeFilter.SHOW_TEXT,null);const textNodesToAnimate=[];let node;while(node=walker.nextNode()){const text=node.textContent||\"\";if(!text.trim())continue;// Match numbers with optional thousand separators (. or ,)\nconst numberMatches=[...text.matchAll(/\\d{1,3}([.,]\\d{3})+|\\d+/g)];if(numberMatches.length>0){const numbers=numberMatches.map(match=>{const originalFormat=match[0];let separator=null;// Check if it has thousand separators\nif(originalFormat.includes(\".\")&&originalFormat.match(/\\d{1,3}(\\.\\d{3})+/)){separator=\".\";}else if(originalFormat.includes(\",\")&&originalFormat.match(/\\d{1,3}(,\\d{3})+/)){separator=\",\";}// Parse the actual number value (remove separators)\nconst cleanNumber=originalFormat.replace(/[.,]/g,\"\");const value=parseInt(cleanNumber);return{value,originalFormat,separator,index:match.index,length:originalFormat.length};});textNodesToAnimate.push({node:node,originalText:text,numbers});// Initialize with zeros\nlet initText=text;let offset=0;numbers.forEach(num=>{const zero=\"0\";const actualIndex=num.index+offset;initText=initText.substring(0,actualIndex)+zero+initText.substring(actualIndex+num.length);offset+=zero.length-num.length;});node.textContent=initText;}}if(textNodesToAnimate.length===0)return;// Helper function to format number with thousand separator\nconst formatNumber=(num,separator)=>{const numStr=Math.floor(num).toString();if(!separator)return numStr;// Add thousand separators\nreturn numStr.replace(/\\B(?=(\\d{3})+(?!\\d))/g,separator);};// Set up Intersection Observer\nconst observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting){setTimeout(()=>{const startTime=performance.now();const animate=currentTime=>{const elapsed=currentTime-startTime;const progress=Math.min(elapsed/(duration*1e3),1);// Ease-out function\nconst easeOut=1-Math.pow(1-progress,3);// Update each text node\ntextNodesToAnimate.forEach(({node,originalText,numbers})=>{let newText=originalText;let offset=0;numbers.forEach(target=>{const currentValue=target.value*easeOut;const formattedNumber=formatNumber(currentValue,target.separator);const actualIndex=target.index+offset;newText=newText.substring(0,actualIndex)+formattedNumber+newText.substring(actualIndex+target.length);offset+=formattedNumber.length-target.length;});node.textContent=newText;});if(progress<1){requestAnimationFrame(animate);}};requestAnimationFrame(animate);},delay*1e3);if(triggerOnce){observer.disconnect();}}});},{threshold});observer.observe(element);}};}// Preset variations\nexport function NumberCounterFast(){return NumberCounter({duration:.3});}export function NumberCounterSlow(){return NumberCounter({duration:1});}export function NumberCounterDelayed(){return NumberCounter({delay:.5});}export function NumberCounterEarly(){return NumberCounter({threshold:.3});}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withNumberCounter(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NumberCounter(props)});};}withNumberCounter.displayName=\"NumberCounter\";export function withNumberCounterFast(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NumberCounterFast(props)});};}withNumberCounterFast.displayName=\"NumberCounterFast\";export function withNumberCounterSlow(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NumberCounterSlow(props)});};}withNumberCounterSlow.displayName=\"NumberCounterSlow\";export function withNumberCounterDelayed(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NumberCounterDelayed(props)});};}withNumberCounterDelayed.displayName=\"NumberCounterDelayed\";export function withNumberCounterEarly(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NumberCounterEarly(props)});};}withNumberCounterEarly.displayName=\"NumberCounterEarly\";\nexport const __FramerMetadata__ = {\"exports\":{\"NumberCounterDelayed\":{\"type\":\"override\",\"name\":\"NumberCounterDelayed\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNumberCounterDelayed\":{\"type\":\"reactHoc\",\"name\":\"withNumberCounterDelayed\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNumberCounterEarly\":{\"type\":\"reactHoc\",\"name\":\"withNumberCounterEarly\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberCounter\":{\"type\":\"override\",\"name\":\"NumberCounter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNumberCounterSlow\":{\"type\":\"reactHoc\",\"name\":\"withNumberCounterSlow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberCounterSlow\":{\"type\":\"override\",\"name\":\"NumberCounterSlow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberCounterEarly\":{\"type\":\"override\",\"name\":\"NumberCounterEarly\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberCounterFast\":{\"type\":\"override\",\"name\":\"NumberCounterFast\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNumberCounterFast\":{\"type\":\"reactHoc\",\"name\":\"withNumberCounterFast\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNumberCounter\":{\"type\":\"reactHoc\",\"name\":\"withNumberCounter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Number_Counter.map"],"mappings":"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"}