{"version":3,"file":"Number_Counter.CTeIBsIq.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/rqU6fOtM7dZxf4wJFOXV/igq4C1sE0wq4Y3nJMxjN/Number_Counter.js"],"sourcesContent":["// Number Counter with ease-out animation, runs once on first viewport entry, no loop, no replay, no delay\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,startTransition}from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Number Counter with ease-out animation, runs once on first viewport entry\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */function Counter({start=0,end=100,duration=2,gapSize=4,prefixText=\"\",suffixText=\"\",prefixFont,suffixFont,prefixColor,suffixColor,decimalSeparatorType=\"comma\",font,textColor=\"#D3D3D3\",startOnViewport=false,incrementType=\"integer\",style}){const[count,setCount]=useState(start);const[hasAnimated,setHasAnimated]=useState(false);const containerRef=useRef(null);const rafRef=useRef(null);// Ease-out cubic function\nfunction easeOutCubic(t){return 1-Math.pow(1-t,3);}useEffect(()=>{if(!startOnViewport){if(!hasAnimated){setHasAnimated(true);}return;}if(typeof window===\"undefined\")return;const observer=new window.IntersectionObserver(([entry])=>{if(entry.isIntersecting&&!hasAnimated){startTransition(()=>setHasAnimated(true));}});if(containerRef.current)observer.observe(containerRef.current);return()=>observer.disconnect();},[startOnViewport,hasAnimated]);useEffect(()=>{if(!hasAnimated)return;let startTime=null;let cancelled=false;function animate(ts){if(cancelled)return;if(!startTime)startTime=ts;const elapsed=(ts-startTime)/1e3;let t=Math.min(elapsed/duration,1);let eased=easeOutCubic(t);let value;if(incrementType===\"integer\"){value=Math.round(start+(end-start)*eased);}else{value=parseFloat((start+(end-start)*eased).toFixed(1));}setCount(value);if(t<1){rafRef.current=requestAnimationFrame(animate);}else{setCount(end);}}rafRef.current=requestAnimationFrame(animate);return()=>{cancelled=true;if(rafRef.current)cancelAnimationFrame(rafRef.current);};},[hasAnimated,start,end,duration,incrementType]);const formatNumber=number=>{if(decimalSeparatorType===\"comma\")return number.toLocaleString(\"en-US\");if(decimalSeparatorType===\"period\")return number.toLocaleString(\"en-US\").replace(/,/g,\".\");return number.toFixed(incrementType===\"integer\"?0:1);};return /*#__PURE__*/_jsxs(motion.div,{ref:containerRef,style:{display:\"flex\",gap:`${gapSize}px`,alignItems:\"center\",color:textColor,letterSpacing:font?.letterSpacing,fontSize:font?.fontSize,fontWeight:font?.variant?undefined:font?.fontWeight,fontStyle:font?.variant&&font.variant.toLowerCase().includes(\"italic\")?\"italic\":undefined,fontFamily:font?.fontFamily,lineHeight:font?.lineHeight,...style},children:[prefixText&&/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:prefixFont?.fontFamily,fontWeight:prefixFont?.fontWeight,fontSize:prefixFont?.fontSize,letterSpacing:prefixFont?.letterSpacing,lineHeight:prefixFont?.lineHeight,color:prefixColor},children:prefixText}),/*#__PURE__*/_jsx(\"span\",{children:formatNumber(count)}),suffixText&&/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:suffixFont?.fontFamily,fontWeight:suffixFont?.fontWeight,fontSize:suffixFont?.fontSize,letterSpacing:suffixFont?.letterSpacing,lineHeight:suffixFont?.lineHeight,color:suffixColor},children:suffixText})]});}addPropertyControls(Counter,{startOnViewport:{type:ControlType.Boolean,title:\"Viewport\",defaultValue:false},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"36px\",variant:\"Medium\",letterSpacing:\"-0.07em\",lineHeight:\"1em\"}},textColor:{type:ControlType.Color,title:\"Font Color\",defaultValue:\"#D3D3D3\"},start:{type:ControlType.Number,title:\"Start Number\",defaultValue:0},end:{type:ControlType.Number,title:\"End Number\",defaultValue:10},duration:{type:ControlType.Number,title:\"Duration (s)\",defaultValue:2,min:.1,max:20,step:.1},decimalSeparatorType:{type:ControlType.Enum,title:\"Separator\",defaultValue:\"comma\",options:[\"comma\",\"period\",\"none\"]},incrementType:{type:ControlType.Enum,title:\"Increment Type\",defaultValue:\"integer\",options:[\"integer\",\"decimal\"]},prefixText:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\"},prefixFont:{title:\"Prefix Font\",type:ControlType.Font,controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"18px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"}},prefixColor:{type:ControlType.Color,title:\"Prefix Color\",defaultValue:\"#D3D3D3\"},suffixText:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"},suffixFont:{title:\"Suffix Font\",type:ControlType.Font,controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"18px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"}},suffixColor:{type:ControlType.Color,title:\"Suffix Color\",defaultValue:\"#D3D3D3\"},gapSize:{type:ControlType.Number,title:\"Gap Size\",defaultValue:4,min:0,max:100}});export default Counter;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Counter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Number_Counter.map"],"mappings":"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"}