{"version":3,"file":"NumberCounterStat.CfIdWQMF.mjs","names":["useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/4uznrTiUqMUBZGbTDwhb/kZTR6jRozAjyBa2XOfz7/NumberCounterStat.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function NumberCounterStat(props){const{value=1200,suffix=\"+\",label=\"Stat label\",duration=1.2,numberColor=\"#000000\",labelColor=\"#CCCCCC\",fontFamily=\"Instrument Serif\",numberFontFamily=\"Instrument Serif\",labelFontFamily=\"Public Sans\",numberSize=48,labelSize=16,numberWeight=700,labelWeight=500,alignment=\"left\",dividerColor=\"#EEEEEE\",showDivider=false,backgroundColor=\"#FFFFFF\",borderColor=\"#EEEEEE\",radius=0,padding=16}=props;const rootRef=useRef(null);const rafRef=useRef(null);const hasAnimatedRef=useRef(false);const isStatic=useIsStaticRenderer();const[displayValue,setDisplayValue]=useState(0);const formatter=useMemo(()=>new Intl.NumberFormat(undefined),[]);const finishAtValue=useCallback(()=>{startTransition(()=>setDisplayValue(value));hasAnimatedRef.current=true;},[value]);const runAnimation=useCallback(()=>{if(hasAnimatedRef.current)return;const safeDuration=Math.max(.01,duration)*1e3;const start=typeof performance!==\"undefined\"?performance.now():Date.now();const tick=now=>{const elapsed=now-start;const progress=Math.min(elapsed/safeDuration,1);const eased=1-Math.pow(1-progress,3);const nextValue=Math.round(value*eased);startTransition(()=>setDisplayValue(nextValue));if(progress<1){rafRef.current=requestAnimationFrame(tick);}else{hasAnimatedRef.current=true;}};rafRef.current=requestAnimationFrame(tick);},[duration,value]);useEffect(()=>{if(isStatic){finishAtValue();return;}if(typeof window===\"undefined\")return;const reducedMotion=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;if(reducedMotion){finishAtValue();return;}const node=rootRef.current;if(!node||typeof IntersectionObserver===\"undefined\"){runAnimation();return;}const observer=new IntersectionObserver(entries=>{const entry=entries[0];if(entry?.isIntersecting){runAnimation();observer.disconnect();}},{threshold:.35});observer.observe(node);return()=>{observer.disconnect();if(rafRef.current!==null){cancelAnimationFrame(rafRef.current);}};},[finishAtValue,isStatic,runAnimation]);const textAlign=alignment;return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{position:\"relative\",width:\"100%\",height:\"auto\",minHeight:\"min-content\",background:backgroundColor,border:`1px solid ${borderColor}`,borderRadius:radius,padding,display:\"flex\",alignItems:\"stretch\",justifyContent:\"space-between\",boxSizing:\"border-box\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:6,flex:1,minWidth:0,textAlign},children:[/*#__PURE__*/_jsxs(\"div\",{style:{fontFamily:numberFontFamily||fontFamily,fontSize:numberSize,fontWeight:numberWeight,color:numberColor,lineHeight:1.05,letterSpacing:\"-0.02em\",whiteSpace:\"nowrap\"},children:[formatter.format(displayValue),suffix]}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:labelFontFamily||fontFamily,fontSize:labelSize,fontWeight:labelWeight,color:labelColor,lineHeight:1.3},children:label})]}),showDivider?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{width:1,alignSelf:\"stretch\",marginLeft:16,background:dividerColor,flexShrink:0}}):null]});}addPropertyControls(NumberCounterStat,{value:{type:ControlType.Number,title:\"Value\",defaultValue:1200,min:0,step:1},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"+\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Stat label\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.2,min:.1,max:10,step:.1,unit:\"s\"},numberColor:{type:ControlType.Color,title:\"Number\",defaultValue:\"#000000\"},labelColor:{type:ControlType.Color,title:\"Label\",defaultValue:\"#CCCCCC\"},fontFamily:{type:ControlType.String,title:\"Font\",defaultValue:\"Instrument Serif\"},numberFontFamily:{type:ControlType.String,title:\"Num Font\",defaultValue:\"Instrument Serif\"},labelFontFamily:{type:ControlType.String,title:\"Lbl Font\",defaultValue:\"Public Sans\"},numberSize:{type:ControlType.Number,title:\"Num Size\",defaultValue:48,min:8,max:160,step:1},labelSize:{type:ControlType.Number,title:\"Lbl Size\",defaultValue:16,min:8,max:80,step:1},numberWeight:{type:ControlType.Number,title:\"Num Weight\",defaultValue:700,min:100,max:900,step:100},labelWeight:{type:ControlType.Number,title:\"Lbl Weight\",defaultValue:500,min:100,max:900,step:100},alignment:{type:ControlType.Enum,title:\"Align\",defaultValue:\"left\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],displaySegmentedControl:true},dividerColor:{type:ControlType.Color,title:\"Divider\",defaultValue:\"#EEEEEE\"},showDivider:{type:ControlType.Boolean,title:\"Divider\",defaultValue:false},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#EEEEEE\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:80,step:1},padding:{type:ControlType.Number,title:\"Padding\",defaultValue:16,min:0,max:120,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberCounterStat\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberCounterStat.map"],"mappings":"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"}