{"version":3,"file":"Count_up.u45FbDPm.mjs","names":["useState","useRef","endNum","__esmMin","init_npm_react_18_3_1","_e","de","init_jsx_runtime","c","ce","addPropertyControls","init_framer_BWFVvmND","ControlType","CountUp","rest","props","typography","displayValue","setDisplayValue","startValue","isVisible","setIsVisible","hasStarted","setHasStarted","elementRef","animationRef","easeOut","useEasing","t","formatNumber","fixed","num","decimals","separator","animate","startTime","startNum","totalChange","endValue","step","elapsed","progress","duration","easedProgress","currentValue","triggerInView","observer","entry","triggerOnMount","displayText","prefix","suffix","typographyStyles","font","style","init_Count_up"],"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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"}