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