{"version":3,"file":"Advanced_Number_Counter.BbfivsuQ.mjs","names":["React.useState","React.useRef"],"sources":["https:/framerusercontent.com/modules/41anhJfNDl1kc3TII3Aq/ajdCg68M2VzAgHka8CwE/Advanced_Number_Counter.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const containerStyle={height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",overflow:\"hidden\"};// @framerDisableUnlink\nexport default function AdvancedNumberCounter({startNumber,endNumber,duration,color,prefix,suffix,font,fontSize,lineHeight,letterSpacing,prefixFontSize,suffixFontSize,prefixAlignment,suffixAlignment,decimalSeparator,countDirection,text}){const[count,setCount]=React.useState(startNumber);const startTimeRef=React.useRef(null);const easeOutQuad=t=>t*(2-t);const formatNumber=num=>{switch(decimalSeparator){case\"comma\":return num.toLocaleString(\"en-US\");case\"period\":return num.toLocaleString(\"de-DE\");default:return num.toString();}};React.useEffect(()=>{const totalDurationMs=duration*1e3;const range=endNumber-startNumber;const updateCounter=currentTime=>{if(!startTimeRef.current)startTimeRef.current=currentTime;const elapsedTime=currentTime-startTimeRef.current;const progress=Math.min(1,elapsedTime/totalDurationMs);const easedProgress=easeOutQuad(progress);const currentCount=startNumber+range*easedProgress;setCount(Math[progress===1?\"round\":\"floor\"](currentCount));if(progress<1){requestAnimationFrame(updateCounter);}else{setCount(endNumber)// Ensure it exactly matches endNumber at the end\n;}};requestAnimationFrame(updateCounter);return()=>{startTimeRef.current=null;};},[startNumber,endNumber,duration,countDirection]);const dynamicStyle={...containerStyle,color:typeof color===\"string\"?color:undefined,fontFamily:font.fontFamily,fontWeight:font.fontWeight,fontSize:`${fontSize}px`,lineHeight:lineHeight.toString(),letterSpacing:`${letterSpacing}px`,background:typeof color===\"object\"?`linear-gradient(${color.angle}deg, ${color.start} 0%, ${color.end} 100%)`:undefined};const prefixStyle={fontSize:`${prefixFontSize}px`,alignSelf:prefixAlignment===\"top\"?\"flex-start\":prefixAlignment===\"middle\"?\"center\":\"flex-end\"};const suffixStyle={fontSize:`${suffixFontSize}px`,alignSelf:suffixAlignment===\"top\"?\"flex-start\":suffixAlignment===\"middle\"?\"center\":\"flex-end\"};return /*#__PURE__*/_jsxs(\"div\",{style:dynamicStyle,children:[/*#__PURE__*/_jsx(\"span\",{style:prefixStyle,children:prefix}),/*#__PURE__*/_jsx(\"span\",{children:formatNumber(count)}),/*#__PURE__*/_jsx(\"span\",{style:suffixStyle,children:suffix})]});}AdvancedNumberCounter.defaultProps={startNumber:0,endNumber:1e3,duration:5,color:\"#121212\",prefix:\"\",suffix:\"\",font:{fontFamily:\"Inter\",fontWeight:400,systemFont:true},fontSize:100,lineHeight:1.2,letterSpacing:0,prefixFontSize:100,suffixFontSize:100,prefixAlignment:\"middle\",suffixAlignment:\"middle\",decimalSeparator:\"comma\",countDirection:\"up\",text:\"\"};addPropertyControls(AdvancedNumberCounter,{startNumber:{type:ControlType.Number,title:\"Start Number\",defaultValue:AdvancedNumberCounter.defaultProps.startNumber,displayStepper:true},endNumber:{type:ControlType.Number,title:\"End Number\",defaultValue:AdvancedNumberCounter.defaultProps.endNumber,displayStepper:true},duration:{type:ControlType.Number,title:\"Duration\",min:0,max:3600,unit:\"s\",defaultValue:AdvancedNumberCounter.defaultProps.duration},color:{title:\"Color\",type:ControlType.Color,defaultValue:AdvancedNumberCounter.defaultProps.color},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:AdvancedNumberCounter.defaultProps.prefix},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:AdvancedNumberCounter.defaultProps.suffix},font:{title:\"Font\",type:ControlType.Font,defaultValue:AdvancedNumberCounter.defaultProps.font},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:AdvancedNumberCounter.defaultProps.fontSize,min:1},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:AdvancedNumberCounter.defaultProps.lineHeight,min:0},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:AdvancedNumberCounter.defaultProps.letterSpacing,min:-5,max:20,step:.1},prefixFontSize:{type:ControlType.Number,title:\"Prefix Font Size\",defaultValue:AdvancedNumberCounter.defaultProps.prefixFontSize,min:1},suffixFontSize:{type:ControlType.Number,title:\"Suffix Font Size\",defaultValue:AdvancedNumberCounter.defaultProps.suffixFontSize,min:1},prefixAlignment:{type:ControlType.Enum,title:\"Prefix Alignment\",options:[\"top\",\"middle\",\"bottom\"],optionTitles:[\"Top\",\"Middle\",\"Bottom\"],defaultValue:AdvancedNumberCounter.defaultProps.prefixAlignment},suffixAlignment:{type:ControlType.Enum,title:\"Suffix Alignment\",options:[\"top\",\"middle\",\"bottom\"],optionTitles:[\"Top\",\"Middle\",\"Bottom\"],defaultValue:AdvancedNumberCounter.defaultProps.suffixAlignment},decimalSeparator:{type:ControlType.Enum,title:\"Decimal Separator\",options:[\"comma\",\"period\",\"none\"],optionTitles:[\"Comma (1,000)\",\"Period (1.000)\",\"None\"],defaultValue:AdvancedNumberCounter.defaultProps.decimalSeparator},countDirection:{type:ControlType.SegmentedEnum,title:\"Direction\",options:[\"up\",\"down\"],optionTitles:[\"Up\",\"Down\"],defaultValue:AdvancedNumberCounter.defaultProps.countDirection}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AdvancedNumberCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Advanced_Number_Counter.map"],"mappings":"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"}