{"version":3,"file":"Count_up.eCCIvypp.mjs","names":["useState","useRef"],"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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"}