{"version":3,"file":"Counter.B1ZZO2Hy.mjs","names":["useState","React"],"sources":["https:/framerusercontent.com/modules/gh4ITahhtGuicSbfz43J/NcqyYdVdWAbUJmoVvkHF/Counter.js"],"sourcesContent":["import{jsxs as _jsxs}from\"react/jsx-runtime\";import React,{useState,useEffect}from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";const NumberCounterStyles={display:\"flex\",justifyContent:\"left\",alignItems:\"left\"};export function NumberCounter(props){const{startNumber,endNumber,duration,prefix,suffix,loop,decimalSeparator,fontSize,font,fontColor}=props;const[count,setCount]=useState(startNumber);const[isVisible,setIsVisible]=useState(false);const ref=React.useRef(null);// Total steps based on duration and frame rate\nconst totalSteps=60*duration// Assuming 60 updates per second\n;const increment=(endNumber-startNumber)/totalSteps// Increment per step\n;useEffect(()=>{const observer=new IntersectionObserver(entries=>{const entry=entries[0];setIsVisible(entry.isIntersecting);});if(ref.current){observer.observe(ref.current);}return()=>{if(ref.current){observer.unobserve(ref.current);}};},[]);useEffect(()=>{if(isVisible&&startNumber!==endNumber){const intervalId=setInterval(()=>{setCount(prevCount=>{const nextValue=prevCount+increment;if(nextValue>=endNumber){if(loop){return startNumber;}else{clearInterval(intervalId);return endNumber;}}return nextValue;});},1e3/60)// 60 updates per second\n;return()=>{clearInterval(intervalId);};}},[count,startNumber,endNumber,loop,isVisible,increment]);const formatCount=number=>{if(decimalSeparator===\"comma\"){return Math.floor(number).toLocaleString(\"en-US\");}else if(decimalSeparator===\"period\"){return Math.floor(number).toLocaleString(\"en-US\").replace(/,/g,\".\");}else{return Math.floor(number).toFixed(0);}};return /*#__PURE__*/_jsxs(motion.div,{ref:ref,style:{...NumberCounterStyles,gap:`${fontSize/2}px`,flexDirection:\"row\",alignItems:\"left\",fontSize:`${fontSize}px`,fontFamily:font.fontFamily,fontWeight:font.fontWeight,color:fontColor},children:[prefix,formatCount(count),suffix]});}NumberCounter.defaultProps={startNumber:0,endNumber:3e5,duration:5,prefix:\"\",suffix:\"\",loop:false,decimalSeparator:\"comma\",fontSize:16,font:{fontFamily:\"Arial\",fontWeight:400,systemFont:true},fontColor:\"#707070\"};addPropertyControls(NumberCounter,{font:{title:\"Font\",type:ControlType.Font,defaultValue:{fontFamily:\"Arial\",fontWeight:400,systemFont:true}},fontSize:{title:\"Font Size\",type:ControlType.Number,min:8,max:200,step:1},fontColor:{type:ControlType.Color,title:\"Font Color\"},startNumber:{type:ControlType.Number,title:\"Start Number\",defaultValue:0,displayStepper:true},endNumber:{type:ControlType.Number,title:\"End Number\",defaultValue:3e5,displayStepper:true},decimalSeparator:{type:ControlType.Enum,title:\"Decimal Separator\",defaultValue:\"comma\",options:[\"comma\",\"period\",\"none\"],optionTitles:[\"Comma (1,000)\",\"Period (1.000)\",\"None\"]},duration:{type:ControlType.Number,title:\"Duration (s)\",defaultValue:5,min:.1,max:60,step:.1},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"},loop:{type:ControlType.Boolean,title:\"Loop Animation\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"NumberCounter\":{\"type\":\"reactComponent\",\"name\":\"NumberCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Counter.map"],"mappings":"yOAAmQ,SAAgB,EAAc,EAAM,CAAC,GAAK,CAAC,cAAY,YAAU,WAAS,SAAO,SAAO,OAAK,mBAAiB,WAAS,OAAK,aAAW,EAAW,CAAC,EAAM,GAAUA,EAAS,EAAY,CAAM,CAAC,EAAU,GAAcA,EAAS,GAAM,CAAO,EAAIC,EAAM,OAAO,KAAK,CAChgB,EAAW,GAAG,EACb,GAAW,EAAU,GAAa,EACxC,MAAc,CAAC,IAAM,EAAS,IAAI,qBAAqB,GAAS,CAAC,IAAM,EAAM,EAAQ,GAAG,EAAa,EAAM,eAAe,EAAG,CAAgD,OAA5C,EAAI,SAAS,EAAS,QAAQ,EAAI,QAAQ,KAAY,CAAI,EAAI,SAAS,EAAS,UAAU,EAAI,QAAQ,GAAM,EAAE,CAAC,CAAC,MAAc,CAAC,GAAG,GAAW,IAAc,EAAU,CAAC,IAAM,EAAW,gBAAgB,CAAC,EAAS,GAAW,CAAC,IAAM,EAAU,EAAU,EAAkH,OAArG,GAAW,EAAc,EAAa,GAAkB,cAAc,EAAW,CAAQ,GAAmB,GAAY,EAAG,IAAI,GAAG,CACvgB,UAAU,CAAC,cAAc,EAAW,IAAM,CAAC,EAAM,EAAY,EAAU,EAAK,EAAU,EAAU,CAAC,CAAC,IAAM,EAAY,GAAY,IAAmB,QAAgB,KAAK,MAAM,EAAO,CAAC,eAAe,QAAQ,CAAU,IAAmB,SAAiB,KAAK,MAAM,EAAO,CAAC,eAAe,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAc,KAAK,MAAM,EAAO,CAAC,QAAQ,EAAE,CAAI,OAAoB,EAAM,EAAO,IAAI,CAAK,MAAI,MAAM,CAAC,GAAG,EAAoB,IAAI,GAAG,EAAS,EAAE,IAAI,cAAc,MAAM,WAAW,OAAO,SAAS,GAAG,EAAS,IAAI,WAAW,EAAK,WAAW,WAAW,EAAK,WAAW,MAAM,EAAU,CAAC,SAAS,CAAC,EAAO,EAAY,EAAM,CAAC,EAAO,CAAC,CAAC,oBAJ/kB,IAA6C,IAAkC,IAAoD,CAAM,EAAoB,CAAC,QAAQ,OAAO,eAAe,OAAO,WAAW,OAAO,CAI4X,EAAc,aAAa,CAAC,YAAY,EAAE,UAAU,IAAI,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,GAAM,iBAAiB,QAAQ,SAAS,GAAG,KAAK,CAAC,WAAW,QAAQ,WAAW,IAAI,WAAW,GAAK,CAAC,UAAU,UAAU,CAAC,EAAoB,EAAc,CAAC,KAAK,CAAC,MAAM,OAAO,KAAK,EAAY,KAAK,aAAa,CAAC,WAAW,QAAQ,WAAW,IAAI,WAAW,GAAK,CAAC,CAAC,SAAS,CAAC,MAAM,YAAY,KAAK,EAAY,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,eAAe,GAAK,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,eAAe,GAAK,CAAC,iBAAiB,CAAC,KAAK,EAAY,KAAK,MAAM,oBAAoB,aAAa,QAAQ,QAAQ,CAAC,QAAQ,SAAS,OAAO,CAAC,aAAa,CAAC,gBAAgB,iBAAiB,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,CAAC,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,iBAAiB,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,CAAC,CAAC"}