{"version":3,"file":"Counter.Be2XEv2y.mjs","names":["useState"],"sources":["https:/framerusercontent.com/modules/5D1EYTkyvoFdrxdmAHCt/UWavW7tplHBOPdwM8iEx/Counter.js"],"sourcesContent":["// Counter from 0 to 100 with controls\nimport{jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * Counter from 0 to 100\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function Counter(props){const{start,end,duration,color,font,easing=\"linear\",style}=props;const[count,setCount]=useState(start);const[opacity,setOpacity]=useState(1);const isStatic=useIsStaticRenderer();// Easing functions\nconst easings={linear:t=>t,easeIn:t=>t*t,easeOut:t=>t*(2-t),easeInOut:t=>t<.5?2*t*t:-1+(4-2*t)*t,cubic:t=>t*t*t,cubicInOut:t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,easeOutEarly:t=>1-Math.pow(1-t,3)};const easeFn=easings[easing]||easings.linear;useEffect(()=>{if(isStatic){startTransition(()=>setCount(end));return;}let frame;let startTime=null;function animate(ts){if(startTime===null)startTime=ts;const progress=Math.min((ts-startTime)/(duration*1e3),1);const eased=easeFn(progress);const value=Math.round(start+(end-start)*eased);// Fade out as we approach the end\nconst fadeOutStart=.7// Start fading at 70% of the animation\n;const fadeOpacity=progress>fadeOutStart?1-(progress-fadeOutStart)/(1-fadeOutStart):1;startTransition(()=>{setCount(value);setOpacity(fadeOpacity);});if(progress<1){frame=requestAnimationFrame(animate);}}frame=requestAnimationFrame(animate);return()=>cancelAnimationFrame(frame);},[start,end,duration,isStatic,easing]);return /*#__PURE__*/_jsxs(\"span\",{style:{color,...font,...style,minWidth:\"max-content\",display:\"inline-block\",opacity:opacity,transition:\"opacity 0.1s ease-out\"},children:[count,\"%\"]});}addPropertyControls(Counter,{start:{type:ControlType.Number,title:\"Start\",defaultValue:0,min:0,max:100,step:1},end:{type:ControlType.Number,title:\"End\",defaultValue:100,min:0,max:100,step:1},duration:{type:ControlType.Number,title:\"Duration (s)\",defaultValue:2,min:.1,max:10,step:.1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"linear\",\"easeIn\",\"easeOut\",\"easeInOut\",\"cubic\",\"cubicInOut\",\"easeOutEarly\"],optionTitles:[\"Linear\",\"Ease In\",\"Ease Out\",\"Ease In Out\",\"Cubic\",\"Cubic In Out\",\"Ease Out Early\"],defaultValue:\"easeOutEarly\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Counter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Counter.map"],"mappings":"0SAMG,SAAwB,EAAQ,EAAM,CAAC,GAAK,CAAC,QAAM,MAAI,WAAS,QAAM,OAAK,SAAO,SAAS,SAAO,EAAW,CAAC,EAAM,GAAUA,EAAS,EAAM,CAAM,CAAC,EAAQ,GAAYA,EAAS,EAAE,CAAO,EAAS,GAAqB,CACrN,EAAQ,CAAC,OAAO,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,WAAW,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAW,GAAG,EAAE,IAAE,EAAG,EAAE,aAAa,GAAG,GAAW,EAAE,IAAE,EAAG,CAAO,EAAO,EAAQ,IAAS,EAAQ,OAEoF,OAF7E,MAAc,CAAC,GAAG,EAAS,CAAC,MAAoB,EAAS,EAAI,CAAC,CAAC,OAAQ,IAAI,EAAU,EAAU,KAAK,SAAS,EAAQ,EAAG,CAAI,IAAY,OAAK,EAAU,GAAG,IAAM,EAAS,KAAK,KAAK,EAAG,IAAY,EAAS,KAAK,EAAE,CAAO,EAAM,EAAO,EAAS,CAAO,EAAM,KAAK,MAAM,GAAO,EAAI,GAAO,EAAM,CAC3gB,EAAa,GACZ,EAAY,EAAS,EAAa,GAAG,EAAS,IAAe,EAAE,GAAc,EAAE,MAAoB,CAAC,EAAS,EAAM,CAAC,EAAW,EAAY,EAAG,CAAI,EAAS,IAAG,EAAM,sBAAsB,EAAQ,EAAwC,MAArC,GAAM,sBAAsB,EAAQ,KAAW,qBAAqB,EAAM,EAAG,CAAC,EAAM,EAAI,EAAS,EAAS,EAAO,CAAC,CAAqB,EAAM,OAAO,CAAC,MAAM,CAAC,QAAM,GAAG,EAAK,GAAG,EAAM,SAAS,cAAc,QAAQ,eAAuB,UAAQ,WAAW,wBAAwB,CAAC,SAAS,CAAC,EAAM,IAAI,CAAC,CAAC,kBAR1c,IAAsD,IAAwE,CAQ8U,EAAoB,EAAQ,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,OAAO,QAAQ,OAAO,cAAc,UAAU,WAAW,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,SAAS,UAAU,YAAY,QAAQ,aAAa,eAAe,CAAC,aAAa,CAAC,SAAS,UAAU,WAAW,cAAc,QAAQ,eAAe,iBAAiB,CAAC,aAAa,eAAe,CAAC,CAAC"}