{"version":3,"file":"NumberAnimator.FxusPVoP.mjs","names":["useRef","useState","number"],"sources":["https:/framerusercontent.com/modules/fONf9xpEnRB5fhZ36jxV/PFQw4hQn5StRPC8BS3iZ/NumberAnimator.js"],"sourcesContent":["import{jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,animate,useInView}from\"framer-motion\";import{useEffect,useState,useRef}from\"react\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function NumberAnimator(props){const ref=useRef(null);const isInView=useInView(ref,{once:!props.animation.replay,amount:\"some\"});const[numberText,setNumberText]=useState(\"\");const{start,end,decimals,commas,rounding,fontColor,animation}=props;const[currentAnimation,setCurrentAnimation]=useState(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;function formatNumber(value){let number=value;let numberString=number.toFixed(decimals);if(commas){numberString=numberString.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\");}return numberString;}function runAnimation(){if(!isCanvas){if(currentAnimation){currentAnimation.stop();}setCurrentAnimation(animate(start,end,{...animation.transition,onUpdate:latest=>{setNumberText(formatNumber(latest));}}));}}useEffect(()=>{if(animation.trigger==\"appear\"){runAnimation();}setNumberText(formatNumber(start));},[]);useEffect(()=>{if(isInView&&animation.trigger==\"layerInView\"){runAnimation();}},[isInView]);useEffect(()=>{if(animation.trigger==\"layerInView\"){if(isInView){runAnimation();}else{if(currentAnimation){currentAnimation.stop();}setNumberText(formatNumber(start));}}},[isInView]);return /*#__PURE__*/_jsxs(motion.p,{ref:ref,style:{userSelect:props.textSelect?\"auto\":\"none\",fontVariantNumeric:`${props.monospace?\"tabular-nums \":\"\"}${props.slashedZeros?\"slashed-zero\":\"\"}`,margin:0,...fontColor.mode==\"solid\"?{color:fontColor.color}:{WebkitBackgroundClip:\"text\",WebkitTextFillColor:\"transparent\",backgroundImage:`linear-gradient(${fontColor.angle}deg, ${fontColor.startColor}, ${fontColor.endColor})`},...props.font,...props.style},children:[props.prefix,isCanvas?formatNumber(end):numberText,props.suffix]});}NumberAnimator.displayName=\"Animated Number Counter\";addPropertyControls(NumberAnimator,{start:{type:ControlType.Number,defaultValue:0},end:{type:ControlType.Number,defaultValue:100},decimals:{type:ControlType.Number,defaultValue:0,min:0,max:3,step:1},commas:{type:ControlType.Boolean,defaultValue:true},fontColor:{type:ControlType.Object,controls:{mode:{type:ControlType.Enum,defaultValue:\"solid\",options:[\"solid\",\"gradient\"],optionTitles:[\"Solid\",\"Gradient\"],displaySegmentedControl:true},color:{type:ControlType.Color,defaultValue:\"#000\",hidden:props=>props.mode!=\"solid\"},startColor:{type:ControlType.Color,defaultValue:\"#000\",hidden:props=>props.mode!=\"gradient\"},endColor:{type:ControlType.Color,defaultValue:\"#FFF\",hidden:props=>props.mode!=\"gradient\"},angle:{type:ControlType.Number,defaultValue:180,min:-360,max:360,unit:\"\\xb0\",hidden:props=>props.mode!=\"gradient\"}}},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,lineHeight:1}},animation:{type:ControlType.Object,icon:\"effect\",controls:{trigger:{type:ControlType.Enum,defaultValue:\"layerInView\",options:[\"appear\",\"layerInView\"],optionTitles:[\"Appear\",\"Layer in View\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},replay:{type:ControlType.Boolean,defaultValue:true,hidden(props){return props.trigger!==\"layerInView\";}},transition:{type:ControlType.Transition}}},prefix:{type:ControlType.String},suffix:{type:ControlType.String},textSelect:{type:ControlType.Boolean,defaultValue:true},display:{type:ControlType.Object,buttonTitle:\"Options\",controls:{monospace:{type:ControlType.Boolean,defaultValue:false,description:\"Monospaced number characters.\"},slashedZeros:{type:ControlType.Boolean,defaultValue:false,description:\"Adds a diagonal slash through zeros if your font supports it.\"}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberAnimator\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberAnimator.map"],"mappings":"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"}