{"version":3,"file":"Counter.DJaOfDbJ.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/7cS7ZFIDdkzKRAG7RIp7/dxJLRD10qgI9riZ7iDjW/Counter.js"],"sourcesContent":["// Counter Number component with interactive transition from start to end\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * Counter Number\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function Counter(props){const{start,end,duration,font,color,decimals,style}=props;const[value,setValue]=useState(start);const raf=useRef(null);const isStatic=useIsStaticRenderer();// Unique id for this counter instance\nconst idRef=useRef(\"\");if(!idRef.current)idRef.current=Math.random().toString(36).slice(2);useEffect(()=>{if(isStatic){setValue(end);return;}let observer=null;let started=false;let startTime=null;if(raf.current)cancelAnimationFrame(raf.current);function animate(ts){if(startTime===null)startTime=ts;const progress=Math.min((ts-startTime)/(duration*1e3),1);const current=start+(end-start)*progress;startTransition(()=>setValue(progress<1?current:end));if(progress<1){raf.current=requestAnimationFrame(animate);}}function startAnim(){if(!started){started=true;raf.current=requestAnimationFrame(animate);}}if(typeof window!==\"undefined\"){const node=document.querySelector(`[data-counter-id=\"${idRef.current}\"]`);if(node){observer=new window.IntersectionObserver(entries=>{if(entries[0].isIntersecting){startAnim();observer&&observer.disconnect();}},{threshold:.01});observer.observe(node);}else{// fallback: start immediately if node not found\nstartAnim();}}else{startAnim();}return()=>{if(raf.current)cancelAnimationFrame(raf.current);if(observer)observer.disconnect();};},[start,end,duration,isStatic]);// Determine fontStyle from font\nconst fontStyleFinal=font.fontStyle||\"normal\";return /*#__PURE__*/_jsx(\"span\",{\"data-counter-id\":idRef.current,style:{fontFamily:font.fontFamily,fontSize:font.fontSize,fontWeight:font.fontWeight,fontStyle:fontStyleFinal,letterSpacing:font.letterSpacing,lineHeight:font.lineHeight,textAlign:font.textAlign,textTransform:font.textTransform,textDecoration:font.textDecoration,color,...style,minWidth:\"max-content\",display:\"inline-block\"},children:value.toFixed(decimals)});}addPropertyControls(Counter,{start:{type:ControlType.Number,title:\"Start\",defaultValue:0,min:-1e6,max:1e6,step:1},end:{type:ControlType.Number,title:\"End\",defaultValue:100,min:-1e6,max:1e6,step:1},duration:{type:ControlType.Number,title:\"Duration (s)\",defaultValue:2,min:.1,max:10,step:.1},decimals:{type:ControlType.Number,title:\"Decimals\",defaultValue:0,min:0,max:6,step:1,displayStepper:true},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Variable\",letterSpacing:\"-0.04em\",lineHeight:\"1em\",textTransform:\"none\",textDecoration:\"none\"}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Counter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Counter.map"],"mappings":"0VAMG,SAAwB,EAAQ,EAAM,CAAC,GAAK,CAAC,QAAM,MAAI,WAAS,OAAK,QAAM,WAAS,QAAM,CAAC,EAAW,CAAC,EAAM,EAAS,CAACA,EAAS,GAAa,EAAIC,EAAO,MAAY,EAAS,IAC1K,EAAMA,EAAO,IAAI,AAAkB,EAAM,UAAQ,KAAK,SAAS,SAAS,IAAI,MAAM,GAAG,MAAc,CAAC,GAAG,EAAS,CAAC,EAAS,GAAK,MAAQ,KAAI,EAAS,KAAS,EAAQ,GAAU,EAAU,KAAQ,EAAI,SAAQ,qBAAqB,EAAI,SAAS,SAAS,EAAQ,EAAG,CAAI,IAAY,OAAK,EAAU,GAAG,IAAM,EAAS,KAAK,KAAK,EAAG,IAAY,EAAS,KAAK,GAAS,EAAQ,GAAO,EAAI,GAAO,EAAS,MAAoB,EAAS,EAAS,EAAE,EAAQ,IAAS,EAAS,IAAG,EAAI,QAAQ,sBAAsB,GAAW,UAAS,GAAW,CAAK,IAAS,EAAQ,GAAK,EAAI,QAAQ,sBAAsB,GAAW,IAAU,IAAS,OAAY,CAAC,IAAM,EAAK,SAAS,cAAc,qBAAqB,EAAM,QAAQ,KAAQ,GAAM,EAAS,IAAI,EAAO,qBAAqB,GAAS,CAAI,EAAQ,GAAG,iBAAgB,IAAY,GAAU,EAAS,aAAe,EAAC,CAAC,UAAU,IAAI,EAAE,EAAS,QAAQ,IACh3B,GAAc,MAAK,IAAa,UAAU,CAAI,EAAI,SAAQ,qBAAqB,EAAI,SAAY,GAAS,EAAS,YAAc,CAAE,EAAC,CAAC,EAAM,EAAI,EAAS,EAAS,EAC/J,IAAM,EAAe,EAAK,WAAW,SAAS,OAAoB,EAAK,OAAO,CAAC,kBAAkB,EAAM,QAAQ,MAAM,CAAC,WAAW,EAAK,WAAW,SAAS,EAAK,SAAS,WAAW,EAAK,WAAW,UAAU,EAAe,cAAc,EAAK,cAAc,WAAW,EAAK,WAAW,UAAU,EAAK,UAAU,cAAc,EAAK,cAAc,eAAe,EAAK,eAAe,QAAM,GAAG,EAAM,SAAS,cAAc,QAAQ,eAAe,CAAC,SAAS,EAAM,QAAQ,GAAU,CAAG,iCAAoB,EAAQ,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,aAAa,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,GAAK,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,WAAW,cAAc,UAAU,WAAW,MAAM,cAAc,OAAO,eAAe,OAAO,CAAC,CAAC"}