{"version":3,"file":"CounterPro.CQeInZgl.mjs","names":["useRef","useState","useMemo","__esmMin","init_npm_react_18_3_1","te","pe","le","_e","de","init_jsx_runtime","p","ce","useTransform","useInView","useSpring","motion","init_framer_motion_DhsWWWsN","addPropertyControls","init_framer_BWFVvmND","ControlType","useFontMetrics","ref","height","setHeight","el","measure","h","ro","font","Digit","valueRoundedToPlace","value","place","animatedValue","digitWidth","blur","useMotionBlur","velocity","motionBlurIntensity","digitHeight","b","verticalSpacing","AnimatedDigit","i","y","mv","placeValue","latest","offset","number","memo","CounterPro","props","fontMeasureRef","measuredDigitHeight","FALLBACK_DIGIT_HEIGHT","fontSize","n","rawDecimalPlaces","decimalPlaces","safeDecimalPlaces","isInView","currentValue","setCurrentValue","from","hasAnimated","setHasAnimated","animationKey","setAnimationKey","animationInProgressRef","hasSetFinalValueRef","prev","to","startOnView","timer","shouldStart","capturedStartValue","startTime","difference","animate","elapsed","progress","duration","easeOutCubic","newValue","delay","decimalData","absValue","integerPart","scale","decimalValue","decimalDigits","hasValidDecimals","maxDigits","maxValue","places","renderDigitsWithSeparators","digits","index","useSeparator","separatorChar","separatorPosition","glowStyle","useGlow","glowIntensity","glowColor","decimalAnimatedValue","decimalBlur","decimalFilter","textColor","style","prefix","decimalChar","suffix","init_CounterPro"],"sources":["https:/framerusercontent.com/modules/jPr6lPrh3tKXtEZkW02u/v2lSM1RFG3d2HZmTHO44/CounterPro.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition,useMemo,useLayoutEffect}from\"react\";import{motion,useInView,useSpring,useTransform}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";// Custom hook to measure font metrics\nfunction useFontMetrics(font){const ref=useRef(null);const[height,setHeight]=useState(null);useLayoutEffect(()=>{if(!ref.current)return;const el=ref.current;const measure=()=>{const h=el.offsetHeight;if(h>0){setHeight(h);}};// Measure immediately\nmeasure();// Observe size changes (safe even with zoom)\nconst ro=new ResizeObserver(measure);ro.observe(el);// Fonts loading (important for rem)\nif(document.fonts){document.fonts.ready.then(measure).catch(()=>{});}return()=>{ro.disconnect();};},[font?.fontSize,font?.lineHeight,font?.fontFamily,font?.fontWeight,font?.letterSpacing]);return{ref,height};}function Digit({place,value,digitHeight,duration,font,useMotionBlur,motionBlurIntensity,verticalSpacing}){const valueRoundedToPlace=Math.floor(value/place);const animatedValue=useSpring(valueRoundedToPlace,{stiffness:100,damping:30,mass:1});// Calculate digit width accounting for letter spacing\nconst letterSpacing=font?.letterSpacing||\"0em\";const letterSpacingValue=typeof letterSpacing===\"string\"?parseFloat(letterSpacing)||0:letterSpacing;const digitWidth=`calc(1ch + ${letterSpacing})`;useEffect(()=>{animatedValue.set(valueRoundedToPlace);},[animatedValue,valueRoundedToPlace]);// Calculate blur based on velocity\nconst blur=useTransform(animatedValue,latest=>{if(!useMotionBlur)return 0;// Get velocity from the spring\nconst velocity=animatedValue.getVelocity();const blurAmount=Math.min(Math.abs(velocity)*motionBlurIntensity*.1,motionBlurIntensity*5);return blurAmount;});return /*#__PURE__*/_jsx(motion.div,{style:{height:digitHeight,position:\"relative\",width:digitWidth,overflow:\"hidden\",fontVariantNumeric:\"tabular-nums\",filter:useTransform(blur,b=>b>0?`blur(${b}px)`:\"none\"),marginLeft:`${verticalSpacing/2}px`,marginRight:`${verticalSpacing/2}px`,display:\"block\"},children:Array.from({length:10},(_,i)=>/*#__PURE__*/_jsx(AnimatedDigit,{mv:animatedValue,number:i,digitHeight:digitHeight},i))});}function AnimatedDigit({mv,number,digitHeight}){const y=useTransform(mv,latest=>{const placeValue=latest%10;const offset=(10+number-placeValue)%10;let memo=offset*digitHeight;// Prevent flickering by wrapping around when offset is too large\nif(offset>5){memo-=10*digitHeight;}return memo;});return /*#__PURE__*/_jsx(motion.span,{style:{y,position:\"absolute\",top:0,left:0,right:0,height:digitHeight,lineHeight:\"1\",display:\"block\",textAlign:\"center\"},children:number});}/**\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 60\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CounterPro(props){const{from=0,to=100,duration=2,delay=0,startOnView=true,textColor=\"#000000\",font,prefix=\"\",suffix=\"\",useSeparator=false,separatorChar=\",\",separatorPosition=3,decimalPlaces=0,decimalChar=\".\",useGlow=false,glowColor=\"#0099FF\",glowIntensity=20,useMotionBlur=false,motionBlurIntensity=1,verticalSpacing=0,style}=props;const{ref:fontMeasureRef,height:measuredDigitHeight}=useFontMetrics(font);const FALLBACK_DIGIT_HEIGHT=useMemo(()=>{const fontSize=font?.fontSize;if(typeof fontSize===\"string\"){const n=parseFloat(fontSize);if(!isNaN(n)){return fontSize.endsWith(\"rem\")?n*16:n;}}if(typeof fontSize===\"number\")return fontSize;return 40// safe default\n;},[font?.fontSize]);const digitHeight=measuredDigitHeight??FALLBACK_DIGIT_HEIGHT;const rawDecimalPlaces=decimalPlaces;// Clamp + sanitize once\nconst safeDecimalPlaces=useMemo(()=>{const n=Number(rawDecimalPlaces);if(!Number.isFinite(n)||isNaN(n))return 0;// Clamp to your allowed range (0..4)\nconst clamped=Math.max(0,Math.min(4,Math.floor(n)));return clamped;},[rawDecimalPlaces]);const ref=useRef(null);const isInView=useInView(ref);const[currentValue,setCurrentValue]=useState(from);const[hasAnimated,setHasAnimated]=useState(false);const[animationKey,setAnimationKey]=useState(0);const animationInProgressRef=useRef(false);const hasSetFinalValueRef=useRef(false);// Reset on mount\nuseEffect(()=>{startTransition(()=>{setCurrentValue(from);setHasAnimated(false);setAnimationKey(0);});animationInProgressRef.current=false;hasSetFinalValueRef.current=false;},[]);// Reset when from/to change\nuseEffect(()=>{startTransition(()=>{setCurrentValue(from);setHasAnimated(false);setAnimationKey(prev=>prev+1);});animationInProgressRef.current=false;hasSetFinalValueRef.current=false;},[from,to]);// Reset hasSetFinalValueRef when view state changes and once is false\nuseEffect(()=>{if(isInView){hasSetFinalValueRef.current=false;startTransition(()=>{setHasAnimated(false);});}else{// Reset when leaving view so it's ready for next entry\nhasSetFinalValueRef.current=false;}},[isInView]);useEffect(()=>{if(!startOnView||!isInView)return;if(hasAnimated)return;const timer=setTimeout(()=>{startTransition(()=>{setAnimationKey(prev=>prev+1);});},50);return()=>clearTimeout(timer);},[isInView,startOnView,hasAnimated]);const shouldStart=!startOnView||isInView&&!hasSetFinalValueRef.current;// Main animation effect\nuseEffect(()=>{if(!shouldStart)return;// Prevent re-triggering if animation is already in progress or final value is set\nif(animationInProgressRef.current||hasSetFinalValueRef.current)return;animationInProgressRef.current=true;startTransition(()=>{setHasAnimated(true);});// Capture the start value at the moment animation begins\nconst capturedStartValue=currentValue;const timer=setTimeout(()=>{const startTime=Date.now();const difference=to-capturedStartValue;const animate=()=>{const elapsed=Date.now()-startTime;const progress=Math.min(elapsed/(duration*1e3),1);const easeOutCubic=1-Math.pow(1-progress,3);const newValue=capturedStartValue+difference*easeOutCubic;if(progress<1){startTransition(()=>{setCurrentValue(newValue);});requestAnimationFrame(animate);}else{// Set final value exactly and mark animation as complete\nstartTransition(()=>{setCurrentValue(to);});animationInProgressRef.current=false;hasSetFinalValueRef.current=true;}};requestAnimationFrame(animate);},delay*1e3);return()=>{clearTimeout(timer);animationInProgressRef.current=false;};},[shouldStart,to,duration,delay,animationKey]);// Handle decimal part - memoize to prevent errors during prop changes\nconst decimalData=useMemo(()=>{const absValue=Math.abs(currentValue);const integerPart=Math.floor(absValue);// Immediately return if no decimal places requested\nif(safeDecimalPlaces<=0){return{integerPart,decimalDigits:\"\",hasValidDecimals:false,decimalValue:0};}const scale=Math.pow(10,safeDecimalPlaces);let decimalValue=0;let decimalDigits=\"\";let hasValidDecimals=false;try{const scaled=Math.floor(absValue*scale);decimalValue=scaled%scale;decimalDigits=decimalValue.toString().padStart(safeDecimalPlaces,\"0\");hasValidDecimals=decimalDigits.length===safeDecimalPlaces;}catch(e){// Fallback to zeros if calculation fails\ndecimalValue=0;decimalDigits=\"0\".repeat(Math.max(0,safeDecimalPlaces));hasValidDecimals=safeDecimalPlaces>0;}return{integerPart,decimalDigits,hasValidDecimals,decimalValue};},[currentValue,safeDecimalPlaces]);const maxDigits=useMemo(()=>{const maxValue=Math.max(Math.abs(Math.floor(from)).toString().length,Math.abs(Math.floor(to)).toString().length,Math.abs(Math.floor(currentValue)).toString().length);// Ensure at least 1 digit to prevent errors\nreturn Math.max(maxValue,1);},[from,to,currentValue]);const places=useMemo(()=>{return Array.from({length:maxDigits},(_,i)=>Math.pow(10,maxDigits-i-1));},[maxDigits]);// Create digit groups for separators\nconst renderDigitsWithSeparators=()=>{const digits=[];places.forEach((place,index)=>{// Calculate stagger factor based on position from right (ones place = 0)\nconst staggerFactor=maxDigits-index-1;// Add separator AFTER previous digit if needed (before current digit)\nif(useSeparator&&separatorChar&&index>0){const digitsFromRight=maxDigits-index;if(digitsFromRight%separatorPosition===0){digits.push(/*#__PURE__*/_jsx(\"span\",{style:{opacity:.7},children:separatorChar},`sep-${index}-${animationKey}`));}}digits.push(/*#__PURE__*/_jsx(Digit,{place:place,value:decimalData.integerPart,digitHeight:digitHeight,duration:duration,font:font,useMotionBlur:useMotionBlur,motionBlurIntensity:motionBlurIntensity,verticalSpacing:verticalSpacing},`digit-${index}-${animationKey}`));});return digits;};// Generate glow effect\nconst glowStyle=useGlow?{textShadow:`\n\t\t\t\t\t0 0 ${glowIntensity*.5}px ${glowColor},\n\t\t\t\t\t0 0 ${glowIntensity}px ${glowColor},\n\t\t\t\t\t0 0 ${glowIntensity*1.5}px ${glowColor},\n\t\t\t\t\t0 0 ${glowIntensity*2}px ${glowColor}\n\t\t\t\t`}:{};// Create a spring for decimal blur animation\nconst decimalAnimatedValue=useSpring(currentValue,{stiffness:100,damping:30,mass:1});useEffect(()=>{decimalAnimatedValue.set(currentValue);},[currentValue,decimalAnimatedValue]);const decimalBlur=useTransform(decimalAnimatedValue,latest=>{if(!useMotionBlur)return 0;const velocity=Math.abs(decimalAnimatedValue.getVelocity());// Apply 2x more blur to decimal places than the ones digit\nconst blurAmount=Math.min(velocity*motionBlurIntensity*.2,motionBlurIntensity*10);return blurAmount;});const decimalFilter=useTransform(decimalBlur,b=>b>0?`blur(${b}px)`:\"none\");return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",height:digitHeight,minHeight:digitHeight,alignItems:\"center\",display:\"flex\",color:textColor,...font,...glowStyle,...style},children:[/*#__PURE__*/_jsx(\"span\",{ref:fontMeasureRef,style:{...font,position:\"absolute\",visibility:\"hidden\",whiteSpace:\"nowrap\",pointerEvents:\"none\",lineHeight:\"1\"},children:\"0\"}),prefix&&/*#__PURE__*/_jsx(\"span\",{style:{marginRight:`${verticalSpacing}px`,whiteSpace:\"pre\"},children:prefix}),currentValue<0&&/*#__PURE__*/_jsx(\"span\",{style:{marginRight:`${verticalSpacing/2}px`},children:\"-\"}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\"},children:renderDigitsWithSeparators()}),safeDecimalPlaces>0&&decimalData.hasValidDecimals&&decimalData.decimalDigits&&decimalChar&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\"},children:[/*#__PURE__*/_jsx(motion.span,{style:{opacity:.7,filter:decimalFilter},children:decimalChar}),Array.from(decimalData.decimalDigits).map((digit,index)=>/*#__PURE__*/_jsx(Digit,{place:Math.pow(10,safeDecimalPlaces-index-1),value:Math.floor(Math.abs(currentValue)*Math.pow(10,safeDecimalPlaces)),digitHeight:digitHeight,duration:duration,font:font,useMotionBlur:useMotionBlur,motionBlurIntensity:motionBlurIntensity,verticalSpacing:verticalSpacing},`decimal-${index}-${animationKey}`))]}),suffix&&/*#__PURE__*/_jsx(\"span\",{style:{marginLeft:`${verticalSpacing}px`,whiteSpace:\"pre\"},children:suffix})]});}CounterPro.displayName=\"Counter Pro\";addPropertyControls(CounterPro,{from:{type:ControlType.Number,title:\"From\",defaultValue:0,step:.01},to:{type:ControlType.Number,title:\"To\",defaultValue:99,step:.01},startOnView:{type:ControlType.Boolean,title:\"Start on View\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1em\"}},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",placeholder:\"$, €, etc.\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"kg, mph, etc.\"},useSeparator:{type:ControlType.Boolean,title:\"Use Separator\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},separatorChar:{type:ControlType.String,title:\"Separator\",defaultValue:\",\",placeholder:\",\",hidden:({useSeparator})=>!useSeparator},separatorPosition:{type:ControlType.Number,title:\"Separator Position\",defaultValue:3,min:1,max:10,step:1,displayStepper:true,hidden:({useSeparator})=>!useSeparator},decimalPlaces:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:4,step:1,displayStepper:true},decimalChar:{type:ControlType.String,title:\"Decimal Char\",defaultValue:\".\",placeholder:\".\",hidden:({decimalPlaces})=>decimalPlaces===0},verticalSpacing:{type:ControlType.Number,title:\"Spacing\",defaultValue:0,max:20,step:1,unit:\"px\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2,min:.1,max:10,step:.1,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"},useGlow:{type:ControlType.Boolean,title:\"Glow Effect\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},glowColor:{type:ControlType.Color,title:\"Glow Color\",defaultValue:\"#0099FF\",hidden:({useGlow})=>!useGlow},glowIntensity:{type:ControlType.Number,title:\"Glow Intensity\",defaultValue:2,min:1,max:50,step:1,hidden:({useGlow})=>!useGlow},useMotionBlur:{type:ControlType.Boolean,title:\"Motion Blur\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"[Click here](https://tinyurl.com/avirallakhanpaul) to get more exciting components!\"},motionBlurIntensity:{type:ControlType.Number,title:\"Blur Intensity\",defaultValue:1,min:.1,max:3,step:.1,hidden:({useMotionBlur})=>!useMotionBlur}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CounterPro\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"60\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicWidth\":\"200\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CounterPro.map"],"mappings":"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"}