{"version":3,"file":"Digit_Up.Dx2RPsFz.mjs","names":["useState","useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/ty2g1ZjKCCzHcdbW6Tmt/agwrjSYzAWFq9NXSUARd/Digit_Up.js"],"sourcesContent":["// Number counter component that animates from start to end value when in view\n// Supports prefix/suffix, font customization, decimals, easing, duration and delay\n// Animation triggers once when component enters viewport\nimport{jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useMemo,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useInView,animate}from\"framer-motion\";const easingFunctions={linear:[0,0,1,1],easeIn:[.42,0,1,1],easeOut:[0,0,.58,1],easeInOut:[.42,0,.58,1]};/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function AnimatedCounter(props){const{startValue,endValue,duration,delay,decimals,prefix,suffix,easing,font,color,style}=props;const[displayValue,setDisplayValue]=useState(startValue);const[hasAnimated,setHasAnimated]=useState(false);const ref=useRef(null);const isInView=useInView(ref,{once:true});const inferredDecimals=useMemo(()=>{const getDecimals=value=>{const asString=value.toString();const dotIndex=asString.indexOf(\".\");if(dotIndex===-1)return 0;return asString.length-dotIndex-1;};return Math.max(getDecimals(startValue),getDecimals(endValue));},[startValue,endValue]);useEffect(()=>{if(isInView&&!hasAnimated){let controls;const timer=setTimeout(()=>{controls=animate(startValue,endValue,{duration:duration,ease:easingFunctions[easing],onUpdate:value=>{startTransition(()=>{setDisplayValue(value);});},onComplete:()=>{startTransition(()=>{setHasAnimated(true);});}});},delay*1e3);return()=>{clearTimeout(timer);if(controls){controls.stop();}};}},[isInView,hasAnimated,startValue,endValue,duration,delay,easing]);useEffect(()=>{startTransition(()=>{setHasAnimated(false);setDisplayValue(startValue);});},[startValue,endValue,duration,delay,easing,decimals]);const formattedValue=displayValue.toFixed(decimals>0?decimals:inferredDecimals);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{...style,position:\"relative\",width:\"max-content\",minWidth:\"max-content\",color:color,...font},children:[prefix,formattedValue,suffix]});}addPropertyControls(AnimatedCounter,{startValue:{type:ControlType.Number,title:\"Start Value\",defaultValue:0,step:.1},endValue:{type:ControlType.Number,title:\"End Value\",defaultValue:100,step:.1},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2,min:.1,max:10,step:.1,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"},decimals:{type:ControlType.Number,title:\"Decimals\",defaultValue:1,min:0,max:4,step:1,displayStepper:true},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\"},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\"],optionTitles:[\"Linear\",\"Ease In\",\"Ease Out\",\"Ease In Out\"],defaultValue:\"easeOut\",displaySegmentedControl:true},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedCounter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Digit_Up.map"],"mappings":"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"}