{"version":3,"file":"NumberAnimator.CceEw0fb.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/ZLYRCQKOUSfFxC69IM87/82mlQ0sMPCXEBSkTGSPt/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:props.animation.amount});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(animation.amount==\"some\"){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=\"Number Animator\";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\"},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\"},amount:{type:ControlType.Enum,defaultValue:\"some\",options:[\"some\",\"all\"],optionTitles:[\"Any\",\"All\"],displaySegmentedControl:true,hidden(props){return props.trigger!==\"layerInView\";}},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},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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"}