{"version":3,"file":"CountUpNumber.CIexaxXD.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/OR1FNdnz5B3UlD07DiLs/IrqqSYZPpTXVxyZCY3Kr/CountUpNumber.js"],"sourcesContent":["import{jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";function formatNumber(n,decimals){return new Intl.NumberFormat(\"nl-NL\",{minimumFractionDigits:decimals,maximumFractionDigits:decimals}).format(n);}/**\n * CountUpNumber\n *\n * Animates a number counting from 0 to a target value once it scrolls into view.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function CountUpNumber(props){const{prefix=\"\",value=100,suffix=\"\",decimals=0,duration=1.5,color=\"#000000\",font}=props;const ref=useRef(null);const isStatic=useIsStaticRenderer();const isInView=useInView(ref,{once:true,amount:.2});const[display,setDisplay]=useState(()=>formatNumber(0,decimals));const hasAnimated=useRef(false);useEffect(()=>{if(isStatic){setDisplay(formatNumber(value,decimals));return;}if(!isInView||hasAnimated.current)return;hasAnimated.current=true;const start=performance.now();const durationMs=duration*1e3;function tick(now){const elapsed=now-start;const progress=Math.min(elapsed/durationMs,1);const eased=1-Math.pow(1-progress,3);const current=value*eased;startTransition(()=>setDisplay(formatNumber(current,decimals)));if(progress<1){requestAnimationFrame(tick);}}requestAnimationFrame(tick);},[isInView,isStatic,value,duration,decimals]);return /*#__PURE__*/_jsxs(\"span\",{ref:ref,style:{...font,color,whiteSpace:\"nowrap\",width:\"max-content\",display:\"inline-block\",...props.style},children:[prefix,display,suffix]});}addPropertyControls(CountUpNumber,{prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},value:{type:ControlType.Number,title:\"Value\",defaultValue:100},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"},decimals:{type:ControlType.Number,title:\"Decimals\",defaultValue:0,min:0,max:2,step:1},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.5,min:.2,max:5,step:.1,unit:\"s\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"36px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1.1em\"}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CountUpNumber\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountUpNumber.map"],"mappings":"wPAAuN,SAAS,EAAa,EAAE,EAAS,CAAC,OAAO,IAAI,KAAK,aAAa,QAAQ,CAAC,sBAAsB,EAAS,sBAAsB,CAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAE,CAOtW,SAAwB,EAAc,EAAM,CAAC,GAAK,CAAC,SAAO,GAAG,QAAM,IAAI,SAAO,GAAG,WAAS,EAAE,WAAS,IAAI,QAAM,UAAU,QAAM,EAAY,EAAIA,EAAO,IAAI,EAAQ,EAAS,EAAoB,EAAQ,EAAS,EAAU,EAAI,CAAC,KAAK,GAAK,OAAO,EAAE,CAAC,EAAO,CAAC,EAAQ,GAAYC,MAAa,EAAa,EAAE,CAAQ,CAAC,EAAQ,EAAYD,EAAO,EAAK,EAA6hB,OAA3hB,MAAc,CAAC,GAAG,EAAS,CAAC,EAAW,EAAa,EAAM,CAAQ,CAAC,EAAE,MAAO,CAAC,GAAG,CAAC,GAAU,EAAY,QAAQ,OAAO,EAAY,QAAQ,GAAK,IAAM,EAAM,YAAY,IAAI,EAAQ,EAAW,EAAS,IAAI,SAAS,EAAK,EAAI,CAAC,IAAM,EAAQ,EAAI,EAAY,EAAS,KAAK,IAAI,EAAQ,EAAW,CAAC,EAAQ,EAAM,GAAW,EAAE,IAAS,EAAS,EAAQ,EAAM,EAAM,MAAoB,EAAW,EAAa,EAAQ,CAAQ,CAAC,CAAC,EAAK,EAAS,GAAG,sBAAsB,CAAI,CAAG,CAAC,sBAAsB,CAAI,CAAE,EAAE,CAAC,EAAS,EAAS,EAAM,EAAS,CAAQ,CAAC,EAAsB,EAAM,OAAO,CAAK,MAAI,MAAM,CAAC,GAAG,EAAK,QAAM,WAAW,SAAS,MAAM,cAAc,QAAQ,eAAe,GAAG,EAAM,KAAK,EAAE,SAAS,CAAC,EAAO,EAAQ,CAAM,CAAC,CAAC,CAAE,iBAPz/B,IAA6D,IAAwE,IAAqC,EAOg1B,EAAoB,EAAc,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,OAAO,QAAQ,OAAO,cAAc,UAAU,WAAW,OAAO,CAAC,CAAC,CAAC"}