{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/kOQZZiJi4XjWqBWVunyR/74BlezHy1wOrl2yc6y48/Number_Counter.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";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 startVal=parseFloat(startNumber)||0;const endVal=parseFloat(endNumber)||0;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[displayValue,setDisplayValue]=useState(startVal);const[hasAnimated,setHasAnimated]=useState(false);const animationRef=useRef(null);const elementRef=useRef(null);// Simplified easing functions for better browser support\nconst easingFunctions={linear:t=>t,easeOut:t=>1-(1-t)*(1-t),easeIn:t=>t*t,easeInOut:t=>t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2};// Simple animation function using requestAnimationFrame\nconst startAnimation=()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}const startTime=Date.now();const difference=endVal-startVal;const easing=easingFunctions[easingOption]||easingFunctions.easeOut;const animate=()=>{const elapsed=Date.now()-startTime;const progress=Math.min(elapsed/duration,1);const easedProgress=easing(progress);const currentValue=startVal+difference*easedProgress;setDisplayValue(currentValue);if(progress<1){animationRef.current=requestAnimationFrame(animate);}else{setDisplayValue(endVal);setHasAnimated(true);}};setDisplayValue(startVal);animationRef.current=requestAnimationFrame(animate);};// Format number with separators\nconst formatNumber=num=>{let formatted=num.toFixed(decimals);if(separator!==\"none\"){const parts=formatted.split(\".\");const sep=separator===\"comma\"?\",\":\" \";parts[0]=parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g,sep);formatted=parts.join(\".\");}return prefix+formatted+suffix;};// Handle canvas preview\nuseEffect(()=>{if(isCanvas){setDisplayValue(endVal);}},[endVal,isCanvas]);// Animation trigger logic\nuseEffect(()=>{if(isCanvas)return;const triggerAnimation=()=>{if(!hasAnimated||replay){setHasAnimated(false);if(delay>0){setTimeout(startAnimation,delay);}else{startAnimation();}}};if(animateOnView){// Simple visibility check using IntersectionObserver with fallback\nif(typeof IntersectionObserver!==\"undefined\"){const observer=new IntersectionObserver(entries=>{if(entries[0].isIntersecting){triggerAnimation();}},{threshold:.1});if(elementRef.current){observer.observe(elementRef.current);}return()=>{if(elementRef.current){observer.unobserve(elementRef.current);}if(animationRef.current){cancelAnimationFrame(animationRef.current);}};}else{// Fallback for browsers without IntersectionObserver\ntriggerAnimation();}}else{triggerAnimation();}return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[startVal,endVal,duration,easingOption,delay,replay,animateOnView,hasAnimated]);// Simple inline styles for maximum compatibility\nconst containerStyle={fontSize:fontSize+\"px\",fontWeight:fontWeight,fontFamily:fontFamily,color:textColor,display:\"inline-block\",lineHeight:1};return /*#__PURE__*/_jsx(\"div\",{ref:elementRef,style:containerStyle,children:formatNumber(displayValue)});}// Simplified property controls\naddPropertyControls(NumberCounter,{startNumber:{type:ControlType.String,title:\"Start Number\",defaultValue:\"0\"},endNumber:{type:ControlType.String,title:\"End Number\",defaultValue:\"100\"},duration:{type:ControlType.Number,title:\"Duration (ms)\",defaultValue:2e3,min:100,step:100},delay:{type:ControlType.Number,title:\"Delay (ms)\",defaultValue:0,min:0,step:100},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"},decimals:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:5,step:1},separator:{type:ControlType.Enum,title:\"Number Separator\",options:[\"none\",\"comma\",\"space\"],defaultValue:\"none\"},easingOption:{type:ControlType.Enum,title:\"Animation Easing\",options:[\"linear\",\"easeOut\",\"easeIn\",\"easeInOut\"],defaultValue:\"easeOut\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:40,min:8,max:200},fontWeight:{type:ControlType.Number,title:\"Font Weight\",defaultValue:700,min:100,max:900,step:100},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"Inter\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#111111\"},animateOnView:{type:ControlType.Boolean,title:\"Animate On View\",defaultValue:true},replay:{type:ControlType.Boolean,title:\"Allow Replay\",defaultValue:false}});export default NumberCounter;\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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",
  "names": ["init_ssg_sandbox_shims", "NumberCounter", "startNumber", "endNumber", "duration", "prefix", "suffix", "decimals", "easingOption", "delay", "replay", "animateOnView", "fontSize", "fontWeight", "textColor", "fontFamily", "separator", "startVal", "endVal", "isCanvas", "RenderTarget", "displayValue", "setDisplayValue", "ye", "hasAnimated", "setHasAnimated", "animationRef", "pe", "elementRef", "easingFunctions", "t", "startAnimation", "startTime", "difference", "easing", "animate", "elapsed", "progress", "easedProgress", "currentValue", "formatNumber", "num", "formatted", "parts", "sep", "ue", "triggerAnimation", "observer", "entries", "containerStyle", "p", "addPropertyControls", "ControlType", "Number_Counter_default"]
}
