{"version":3,"file":"Count_up.feyJ4faB.mjs","names":["useState","useRef","endNum"],"sources":["https:/framerusercontent.com/modules/Wnp7vB07DR52B6SIWqUM/NvBjJzZmB1m1feeDNCU4/Count_up.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Count Up Animation Component for Framer\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function CountUp(props){const{startValue,endValue,duration,prefix,suffix,separator,decimals,useEasing,triggerOnMount,triggerInView,typography={},style,...rest}=props;// Extract typography properties with defaults\nconst{font={},color=\"#000000\",textAlign=\"left\",letterSpacing=0,textTransform=\"none\",textDecoration=\"none\"}=typography;const[displayValue,setDisplayValue]=useState(startValue);const[isVisible,setIsVisible]=useState(false);const[hasStarted,setHasStarted]=useState(false);const elementRef=useRef(null);const animationRef=useRef(null);// Easing function (ease-out)\nconst easeOut=t=>{return useEasing?1-Math.pow(1-t,3):t;};// Format number with separators and decimals\nconst formatNumber=num=>{const fixed=Number(num).toFixed(decimals);if(separator&&separator!==\"\"){return fixed.replace(/\\B(?=(\\d{3})+(?!\\d))/g,separator);}return fixed;};// Animation function\nconst animate=()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}const startTime=Date.now();const startNum=startValue;const endNum=endValue;const totalChange=endNum-startNum;const step=()=>{const elapsed=Date.now()-startTime;const progress=Math.min(elapsed/(duration*1e3),1);const easedProgress=easeOut(progress);const currentValue=startNum+totalChange*easedProgress;setDisplayValue(currentValue);if(progress<1){animationRef.current=requestAnimationFrame(step);}};step();};// Intersection Observer for trigger in view\nuseEffect(()=>{if(!triggerInView)return;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting&&!hasStarted){setIsVisible(true);setHasStarted(true);}},{threshold:.1});if(elementRef.current){observer.observe(elementRef.current);}return()=>{if(elementRef.current){observer.unobserve(elementRef.current);}};},[triggerInView,hasStarted]);// Trigger animation\nuseEffect(()=>{if(triggerOnMount&&!triggerInView){animate();}else if(triggerInView&&isVisible){animate();}return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[triggerOnMount,triggerInView,isVisible,startValue,endValue,duration,useEasing]);// Reset when values change\nuseEffect(()=>{setDisplayValue(startValue);setHasStarted(false);setIsVisible(false);},[startValue,endValue]);const formattedValue=formatNumber(displayValue);const displayText=`${prefix}${formattedValue}${suffix}`;// Typography styles using Framer's native font control\nconst typographyStyles={...font,color,textAlign,letterSpacing,textTransform,textDecoration};return /*#__PURE__*/_jsx(\"div\",{ref:elementRef,style:{display:\"inline-block\",...typographyStyles,...style},...rest,children:displayText});}// Framer Property Controls\naddPropertyControls(CountUp,{typography:{type:ControlType.Object,title:\"Typography\",controls:{font:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\"},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:0,min:-2,max:10,step:.1,displayStepper:true},textTransform:{type:ControlType.Enum,title:\"Text Transform\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],optionTitles:[\"None\",\"Uppercase\",\"Lowercase\",\"Capitalize\"],defaultValue:\"none\"},textDecoration:{type:ControlType.Enum,title:\"Text Decoration\",options:[\"none\",\"underline\",\"line-through\"],optionTitles:[\"None\",\"Underline\",\"Line Through\"],defaultValue:\"none\"}}},startValue:{type:ControlType.Number,title:\"Start Value\",defaultValue:0,step:1,displayStepper:true},endValue:{type:ControlType.Number,title:\"End Value\",defaultValue:100,step:1,displayStepper:true},duration:{type:ControlType.Number,title:\"Duration (seconds)\",defaultValue:2,min:.1,max:10,step:.1,displayStepper:true},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"%\"},separator:{type:ControlType.String,title:\"Thousands Separator\",defaultValue:\",\",placeholder:\",\"},decimals:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:4,step:1,displayStepper:true},useEasing:{type:ControlType.Boolean,title:\"Use Easing\",defaultValue:true},triggerOnMount:{type:ControlType.Boolean,title:\"Start on Mount\",defaultValue:true,hidden:props=>props.triggerInView},triggerInView:{type:ControlType.Boolean,title:\"Start When In View\",defaultValue:false}});// Default props\nCountUp.defaultProps={startValue:0,endValue:100,duration:2,prefix:\"\",suffix:\"\",separator:\",\",decimals:0,useEasing:true,triggerOnMount:true,triggerInView:false,typography:{font:{fontFamily:\"Inter, -apple-system, BlinkMacSystemFont, sans-serif\",fontSize:16,fontWeight:\"400\",lineHeight:1.2},color:\"#000000\",textAlign:\"left\",letterSpacing:0,textTransform:\"none\",textDecoration:\"none\"}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CountUp\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Count_up.map"],"mappings":"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"}