{"version":3,"file":"NumberAnimator.DFvxHuOb.mjs","names":["useRef","useState","number","__esmMin","init_npm_react_18_3_1","ce","p","init_jsx_runtime","_e","de","motion","useInView","animate","init_framer_motion_DhsWWWsN","addPropertyControls","RenderTarget","init_framer_BWFVvmND","ControlType","NumberAnimator","ref","isInView","props","numberText","setNumberText","currentAnimation","setCurrentAnimation","isCanvas","formatNumber","numberString","value","decimals","commas","runAnimation","start","end","animation","latest","fontColor","init_NumberAnimator"],"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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"}