{"version":3,"file":"AnimatedCounter.DmAwWUiu.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/Z4RpjZBYotHeRNzj7DF4/Tepu6m3jQatDpx6yRTC3/AnimatedCounter.js"],"sourcesContent":["// Animated counter that counts upwards continuously with customizable settings\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Animated Counter\n * \n * A continuously counting number display with customizable settings\n * \n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function AnimatedCounter(props){const{startValue=0,increment=1,updateFrequency=100,prefix=\"\",suffix=\"\",decimalPlaces=0,useThousandsSeparator=true,autoStart=true,maxValue=1e6,useMaxValue=false,font,textColor=\"#000000\",style}=props;const[currentValue,setCurrentValue]=useState(startValue);const[isRunning,setIsRunning]=useState(autoStart);const intervalRef=useRef(null);// Format number with thousands separator and decimal places\nconst formatNumber=num=>{const fixed=num.toFixed(decimalPlaces);if(!useThousandsSeparator){return fixed;}const parts=fixed.split(\".\");parts[0]=parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\");return parts.join(\".\");};// Start/stop counter\nuseEffect(()=>{if(isRunning){intervalRef.current=window.setInterval(()=>{startTransition(()=>{setCurrentValue(prev=>{const next=prev+increment;if(useMaxValue&&next>=maxValue){setIsRunning(false);return maxValue;}return next;});});},updateFrequency);}else{if(intervalRef.current!==null){clearInterval(intervalRef.current);intervalRef.current=null;}}return()=>{if(intervalRef.current!==null){clearInterval(intervalRef.current);}};},[isRunning,increment,updateFrequency,useMaxValue,maxValue]);// Reset when startValue changes\nuseEffect(()=>{startTransition(()=>{setCurrentValue(startValue);});},[startValue]);// Update running state when autoStart changes\nuseEffect(()=>{startTransition(()=>{setIsRunning(autoStart);});},[autoStart]);const displayValue=`${prefix}${formatNumber(currentValue)}${suffix}`;return /*#__PURE__*/_jsx(\"div\",{style:{...style,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"max-content\",minWidth:\"max-content\",...font},children:/*#__PURE__*/_jsx(\"span\",{style:{whiteSpace:\"nowrap\",color:textColor},children:displayValue})});}addPropertyControls(AnimatedCounter,{startValue:{type:ControlType.Number,title:\"Start Value\",defaultValue:0,step:1,displayStepper:true},increment:{type:ControlType.Number,title:\"Increment\",defaultValue:1,min:.01,step:.1,displayStepper:true},updateFrequency:{type:ControlType.Number,title:\"Update Speed\",defaultValue:100,min:10,max:5e3,step:10,unit:\"ms\"},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"$\",placeholder:\"e.g. $, \\xa3, €\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"e.g. /min, %\"},decimalPlaces:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:2,min:0,max:10,step:1,displayStepper:true},useThousandsSeparator:{type:ControlType.Boolean,title:\"Thousands Separator\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},autoStart:{type:ControlType.Boolean,title:\"Auto Start\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},useMaxValue:{type:ControlType.Boolean,title:\"Use Max Value\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},maxValue:{type:ControlType.Number,title:\"Max Value\",defaultValue:1e6,step:1e3,displayStepper:true,hidden:({useMaxValue})=>!useMaxValue},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"48px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1em\"}},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedCounter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedCounter.map"],"mappings":"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"}