{"version":3,"file":"NumberCounter.BVR3xGuy.mjs","names":["useState","useRef","__esmMin","init_npm_react_18_3_1","te","ce","p","c","init_jsx_runtime","_e","de","motion","useInView","init_framer_motion_DhsWWWsN","addPropertyControls","init_framer_BWFVvmND","useIsStaticRenderer","ControlType","NumberCounter","props","currentValue","setCurrentValue","startValue","hasStarted","setHasStarted","ref","isInView","autoplayOnView","isStatic","shouldAnimate","triggerOnView","autoStart","startTime","difference","endValue","animate","elapsed","progress","duration","easeOutQuart","newValue","displayValue","parts","value","decimals","separator","style","font","prefixColor","prefix","suffixColor","suffix","init_NumberCounter"],"sources":["https:/framerusercontent.com/modules/nfxZGBzocXtdBTRAfqga/6Bc9qItk1NbgwFsPG0tS/NumberCounter.js"],"sourcesContent":["// Number counter component with customizable start/end values and animation\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function NumberCounter(props){const{startValue=0,endValue=100,duration=2,prefix=\"\",suffix=\"\",separator=\",\",decimals=0,autoStart=true,triggerOnView=true,autoplayOnView=false,font,color=\"#000000\",prefixColor=\"#000000\",suffixColor=\"#000000\",style}=props;const[currentValue,setCurrentValue]=useState(startValue);const[hasStarted,setHasStarted]=useState(false);const ref=useRef(null);const isInView=useInView(ref,{once:!autoplayOnView});const isStatic=useIsStaticRenderer();const shouldAnimate=isStatic?false:triggerOnView?isInView:autoStart;useEffect(()=>{if(!shouldAnimate)return;// Reset hasStarted if autoplayOnView is enabled and we're using triggerOnView\nif(autoplayOnView&&triggerOnView){startTransition(()=>setHasStarted(false));}if(hasStarted&&!autoplayOnView)return;startTransition(()=>setHasStarted(true));const startTime=Date.now();const difference=endValue-startValue;const animate=()=>{const elapsed=Date.now()-startTime;const progress=Math.min(elapsed/(duration*1e3),1);// Easing function for smooth animation\nconst easeOutQuart=1-Math.pow(1-progress,4);const newValue=startValue+difference*easeOutQuart;startTransition(()=>setCurrentValue(newValue));if(progress<1){requestAnimationFrame(animate);}else{startTransition(()=>setCurrentValue(endValue));}};requestAnimationFrame(animate);},[shouldAnimate,hasStarted,startValue,endValue,duration,autoplayOnView,triggerOnView]);// Show end value on canvas (static renderer) or when not started\nuseEffect(()=>{if(isStatic){startTransition(()=>setCurrentValue(endValue));}},[isStatic,endValue]);const formatNumber=value=>{const rounded=Number(value.toFixed(decimals));const parts=rounded.toString().split(\".\");// Add thousand separators\nif(separator){parts[0]=parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g,separator);}return parts.join(\".\");};const displayValue=isStatic?formatNumber(endValue):formatNumber(currentValue);return /*#__PURE__*/_jsx(motion.div,{ref:ref,style:{...style,position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\",color,...font},initial:{opacity:isStatic?1:0,scale:isStatic?1:.8},animate:{opacity:1,scale:1},transition:{duration:.3},children:/*#__PURE__*/_jsxs(\"span\",{children:[/*#__PURE__*/_jsx(\"span\",{style:{color:prefixColor},children:prefix}),displayValue,/*#__PURE__*/_jsx(\"span\",{style:{color:suffixColor},children:suffix})]})});}addPropertyControls(NumberCounter,{startValue:{type:ControlType.Number,title:\"Start Value\",defaultValue:0,step:1},endValue:{type:ControlType.Number,title:\"End Value\",defaultValue:100,step:1},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2,min:.1,max:10,step:.1,unit:\"s\"},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\"},separator:{type:ControlType.String,title:\"Thousand Separator\",defaultValue:\",\",placeholder:\",\"},decimals:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:4,step:1},autoStart:{type:ControlType.Boolean,title:\"Auto Start\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:({triggerOnView})=>triggerOnView},triggerOnView:{type:ControlType.Boolean,title:\"Trigger on View\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},autoplayOnView:{type:ControlType.Boolean,title:\"Autoplay on View\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:({triggerOnView})=>!triggerOnView},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"32px\",variant:\"Bold\",letterSpacing:\"-0.03em\",lineHeight:\"1em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},prefixColor:{type:ControlType.Color,title:\"Prefix Color\",defaultValue:\"#000000\"},suffixColor:{type:ControlType.Color,title:\"Suffix Color\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberCounter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberCounter.map"],"mappings":"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"}