{"version":3,"file":"NumberAnimator.D_P98JsS.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/yOeR3ab2JjbOOHDQLMjC/jvzHq7GJxlRW7xW49LkW/NumberAnimator.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";/**\n * Count Up Animation\n * \n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight fixed\n */export default function NumberAnimator(props){const{targetNumber=0,startingNumber=0,duration=2,prefix=\"\",suffix=\"\",textAlign=\"center\",textStyleDesktop,textStyleTablet,textStyleMobile,textColor=\"#000000\",useGradient=false,gradientColor1=\"#0099FF\",gradientColor2=\"#8855FF\",gradientAngle=90,decimalPlaces=0,manualDecimalPosition=1,useManualDecimal=false,useThousandsSeparator=false,easingFunction=\"easeOutCubic\",style}=props;const[displayValue,setDisplayValue]=useState(startingNumber);const ref=useRef(null);const isInView=useInView(ref,{once:true,amount:.5});const isStatic=useIsStaticRenderer();const animationRef=useRef(null);// Easing functions\nconst easingFunctions={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>t*(2-t),easeInOutQuad:t=>t<.5?2*t*t:-1+(4-2*t)*t,easeInCubic:t=>t*t*t,easeOutCubic:t=>--t*t*t+1,easeInOutCubic:t=>t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1,easeInQuart:t=>t*t*t*t,easeOutQuart:t=>1- --t*t*t*t,easeInOutQuart:t=>t<.5?8*t*t*t*t:1-8*--t*t*t*t,easeInBack:t=>t*t*(2.7*t-1.7),easeOutBack:t=>1+--t*t*(2.7*t+1.7),easeInOutBack:t=>{const c1=1.70158;const c2=c1*1.525;return t<.5?Math.pow(2*t,2)*((c2+1)*2*t-c2)/2:(Math.pow(2*t-2,2)*((c2+1)*(t*2-2)+c2)+2)/2;},easeOutBounce:t=>{const n1=7.5625;const d1=2.75;if(t<1/d1){return n1*t*t;}else if(t<2/d1){return n1*(t-=1.5/d1)*t+.75;}else if(t<2.5/d1){return n1*(t-=2.25/d1)*t+.9375;}else{return n1*(t-=2.625/d1)*t+.984375;}}};useEffect(()=>{if(isStatic){startTransition(()=>setDisplayValue(targetNumber));return;}if(!isInView)return;let startTime=null;let frameId=null;const animate=timestamp=>{if(!startTime)startTime=timestamp;const linearProgress=Math.min((timestamp-startTime)/(duration*1e3),1);// Apply easing function\nconst easedProgress=easingFunctions[easingFunction]?easingFunctions[easingFunction](linearProgress):linearProgress;const currentValue=startingNumber+easedProgress*(targetNumber-startingNumber);startTransition(()=>setDisplayValue(currentValue));if(linearProgress<1){frameId=requestAnimationFrame(animate);}};// Clean up any existing animation\nif(animationRef.current){cancelAnimationFrame(animationRef.current);}// Start new animation\nanimationRef.current=requestAnimationFrame(animate);return()=>{if(frameId)cancelAnimationFrame(frameId);};},[targetNumber,startingNumber,duration,easingFunction,isInView,isStatic]);const formatNumber=value=>{let result=Math.round(value).toString();if(useThousandsSeparator){result=result.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\");}return result;};return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",display:\"inline-block\",alignItems:\"flex-end\",textAlign,...style},children:[/*#__PURE__*/_jsxs(\"span\",{style:{...textStyleDesktop,textAlign,...useGradient?{background:`linear-gradient(${gradientAngle}deg, ${gradientColor1}, ${gradientColor2})`,WebkitBackgroundClip:\"text\",WebkitTextFillColor:\"transparent\",backgroundClip:\"text\"}:{color:textColor}},className:\"responsive-text\",children:[prefix,formatNumber(displayValue),suffix]}),/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:`\n            .responsive-text {\n              ${Object.entries(textStyleDesktop||{}).map(([key,value])=>`${key.replace(/([A-Z])/g,\"-$1\").toLowerCase()}: ${value};`).join(\" \")}\n              text-align: ${textAlign} !important;\n            }\n            @media (max-width: 1024px) {\n              .responsive-text {\n                ${Object.entries(textStyleTablet||{}).map(([key,value])=>`${key.replace(/([A-Z])/g,\"-$1\").toLowerCase()}: ${value};`).join(\" \")}\n                text-align: ${textAlign} !important;\n              }\n            }\n            @media (max-width: 768px) {\n              .responsive-text {\n                ${Object.entries(textStyleMobile||{}).map(([key,value])=>`${key.replace(/([A-Z])/g,\"-$1\").toLowerCase()}: ${value};`).join(\" \")}\n                text-align: ${textAlign} !important;\n              }\n            }\n          `}})]});}addPropertyControls(NumberAnimator,{startingNumber:{type:ControlType.Number,title:\"Starting Number\",defaultValue:0,min:0,max:3e6,step:1e3,displayStepper:true},targetNumber:{type:ControlType.Number,title:\"Target Number\",defaultValue:50,min:0,max:3e6,step:1e3,displayStepper:true},duration:{type:ControlType.Number,title:\"Duration (s)\",defaultValue:2,min:.1,max:10,step:.1,displayStepper:true},easingFunction:{type:ControlType.Enum,title:\"Easing\",defaultValue:\"easeOutCubic\",options:[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"easeOutBounce\"],optionTitles:[\"Linear\",\"Ease In Quad\",\"Ease Out Quad\",\"Ease In Out Quad\",\"Ease In Cubic\",\"Ease Out Cubic\",\"Ease In Out Cubic\",\"Ease In Quart\",\"Ease Out Quart\",\"Ease In Out Quart\",\"Ease In Back\",\"Ease Out Back\",\"Ease In Out Back\",\"Ease Out Bounce\"]},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"},textAlign:{type:ControlType.Enum,title:\"Text Align\",defaultValue:\"center\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],displaySegmentedControl:true,segmentedControlDirection:\"horizontal\"},useThousandsSeparator:{type:ControlType.Boolean,title:\"Thousands Separator\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},useGradient:{type:ControlType.Boolean,title:\"Use Gradient\",defaultValue:false,enabledTitle:\"Gradient\",disabledTitle:\"Solid\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\",hidden:({useGradient})=>useGradient},gradientColor1:{type:ControlType.Color,title:\"Gradient Start\",defaultValue:\"#0099FF\",hidden:({useGradient})=>!useGradient},gradientColor2:{type:ControlType.Color,title:\"Gradient End\",defaultValue:\"#8855FF\",hidden:({useGradient})=>!useGradient},gradientAngle:{type:ControlType.Number,title:\"Gradient Angle\",defaultValue:90,min:0,max:360,step:1,unit:\"deg\",hidden:({useGradient})=>!useGradient},textStyleDesktop:{type:ControlType.Font,title:\"Desktop Text Style\",defaultValue:{fontSize:40,lineHeight:1.2,variant:\"Bold\",textAlign:\"center\"},controls:\"extended\",defaultFontType:\"sans-serif\"},textStyleTablet:{type:ControlType.Font,title:\"Tablet Text Style\",defaultValue:{fontSize:32,lineHeight:1.2,variant:\"Bold\",textAlign:\"center\"},controls:\"extended\",defaultFontType:\"sans-serif\"},textStyleMobile:{type:ControlType.Font,title:\"Mobile Text Style\",defaultValue:{fontSize:24,lineHeight:1.2,variant:\"Bold\",textAlign:\"center\"},controls:\"extended\",defaultFontType:\"sans-serif\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberAnimator\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberAnimator.map"],"mappings":"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"}