{"version":3,"file":"Digit_Up.D2T--UW0.mjs","names":["useState","useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/gJLfw9umjAUXlhuxJcSV/5XMErng7mxTAKHkY2dNw/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: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,textAlign:\"right\",...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":"8PAMG,SAAwB,EAAgB,EAAM,CAAC,GAAK,CAAC,aAAW,WAAS,WAAS,QAAM,WAAS,SAAO,SAAO,SAAO,OAAK,QAAM,SAAO,EAAW,CAAC,EAAa,GAAiBA,EAAS,EAAW,CAAM,CAAC,EAAY,GAAgBA,EAAS,GAAM,CAAO,EAAIC,EAAO,KAAK,CAAO,EAAS,EAAU,EAAI,CAAC,KAAK,GAAK,CAAC,CAAO,EAAiBC,MAAY,CAAC,IAAM,EAAY,GAAO,CAAC,IAAM,EAAS,EAAM,UAAU,CAAO,EAAS,EAAS,QAAQ,IAAI,CAA2B,OAAvB,IAAW,GAAU,EAAS,EAAS,OAAO,EAAS,GAAI,OAAO,KAAK,IAAI,EAAY,EAAW,CAAC,EAAY,EAAS,CAAC,EAAG,CAAC,EAAW,EAAS,CAAC,CAAC,MAAc,CAAC,GAAG,GAAU,CAAC,EAAY,CAAC,IAAI,EAAe,EAAM,eAAe,CAAC,EAAS,EAAQ,EAAW,EAAS,CAAU,WAAS,KAAK,EAAO,SAAS,GAAO,CAAC,MAAoB,CAAC,EAAgB,EAAM,EAAG,EAAG,eAAe,CAAC,MAAoB,CAAC,EAAe,GAAK,EAAG,EAAG,CAAC,EAAG,EAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAM,CAAI,GAAU,EAAS,MAAM,IAAO,CAAC,EAAS,EAAY,EAAW,EAAS,EAAS,EAAM,EAAO,CAAC,CAAC,MAAc,CAAC,MAAoB,CAAC,EAAe,GAAM,CAAC,EAAgB,EAAW,EAAG,EAAG,CAAC,EAAW,EAAS,EAAS,EAAM,EAAO,EAAS,CAAC,CAAC,IAAM,EAAe,EAAa,QAAQ,EAAS,EAAE,EAAS,EAAiB,CAAC,OAAoB,EAAM,MAAM,CAAK,MAAI,MAAM,CAAC,GAAG,EAAM,SAAS,WAAW,MAAM,cAAc,SAAS,cAAoB,QAAM,UAAU,QAAQ,GAAG,EAAK,CAAC,SAAS,CAAC,EAAO,EAAe,EAAO,CAAC,CAAC,kBAH73C,IAAqE,IAAoD,IAA6C,CAGytC,EAAoB,EAAgB,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,GAAK,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,SAAS,UAAU,YAAY,CAAC,aAAa,CAAC,SAAS,UAAU,WAAW,cAAc,CAAC,aAAa,UAAU,wBAAwB,GAAK,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,OAAO,QAAQ,OAAO,cAAc,UAAU,WAAW,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,CAAC"}