{"version":3,"file":"CounterFinalValueInHTML.BLXcAsLx.mjs","names":["useState","useRef","_Fragment","useState","__esmMin","init_npm_react_18_3_1","ce","init_jsx_runtime","J","c","p","_e","de","motion","useInView","useMotionValue","init_framer_motion_DhsWWWsN","RenderTarget","init_framer_BWFVvmND","addPropertyControls","ControlType","AnimatedNumberCounter","props","isCanvas","Tag","MotionTag","isDefault","mode","initialValue","start","value","transition","animation","formatNumber","numberString","number","decimals","commas","setNumber","finalValue","setFinalValue","currentAnimation","setCurrentAnimation","ref","isInView","runAnimation","to","animate","from","latest","end","l","color","init_AnimatedNumberCounter_Prod","withFinalValueInHTML","hydrated","setHydrated","isVariantsMode","Component","init_CounterFinalValueInHTML"],"sources":["https:/framerusercontent.com/modules/qpjhCcDm4G1NbFAlpMKV/OnyZiTlIjOBuSKcKQWFv/AnimatedNumberCounter_Prod.js","https:/framerusercontent.com/modules/XsP07gWrYA9dUEGkIzK7/iXvOkHkDyugXaIInbe4U/CounterFinalValueInHTML.js"],"sourcesContent":["import{jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useState,useRef}from\"react\";import{motion,useMotionValue,animate,useInView}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n */export default function AnimatedNumberCounter(props){const{mode,start,end,value,decimals,commas,color,animation}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const Tag=props.tag;const MotionTag=motion[props.tag];const isDefault=mode==\"default\";const initialValue=isDefault?start:value;const transition=isDefault?animation.transition:props.transition;const formatNumber=number=>{let numberString=number.toFixed(decimals);if(commas){numberString=numberString.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\",\");}return numberString;};const[number,setNumber]=useState(initialValue);const[finalValue,setFinalValue]=useState(number);const[currentAnimation,setCurrentAnimation]=useState(null);const ref=useRef(null);const isInView=useInView(ref,{once:!props.animation.replay,amount:\"some\"});const motionValue=useMotionValue(value);const runAnimation=(from,to)=>{if(!isCanvas){if(currentAnimation){currentAnimation.stop();}setFinalValue(to);setCurrentAnimation(animate(from,to,{...transition,onUpdate:latest=>{setNumber(latest);}}));}};useEffect(()=>{if(isDefault&&animation.trigger==\"appear\"){runAnimation(start,end);}},[]);useEffect(()=>{if(isDefault&&animation.trigger==\"layerInView\"){if(isInView){runAnimation(start,end);}else{if(currentAnimation){currentAnimation.stop();}setNumber(start);}}},[isInView]);useEffect(()=>{if(!isDefault){runAnimation(number,value);}},[value]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(Tag,{style:{...props.style,margin:0,opacity:0,pointerEvents:\"none\",userSelect:\"none\",textWrap:props.balance?\"balance\":undefined,fontVariantNumeric:props.monospace?\"tabular-nums\":undefined,textAlign:\"center\",...props.font},children:[props.prefix,formatNumber(isCanvas?initialValue:finalValue),props.suffix]}),/*#__PURE__*/_jsxs(MotionTag,{ref:ref,style:{position:\"absolute\",inset:0,userSelect:props.userSelect?\"auto\":\"none\",fontVariantNumeric:props.monospace?\"tabular-nums\":undefined,margin:0,...color.mode==\"solid\"?{color:color.color}:{WebkitBackgroundClip:\"text\",WebkitTextFillColor:\"transparent\",backgroundImage:`linear-gradient(${color.angle}deg, ${color.startColor}, ${color.endColor})`},textDecoration:props.decoration,textWrap:props.balance?\"balance\":undefined,textAlign:\"center\",...props.font,...props.style},children:[props.prefix,formatNumber(isCanvas?initialValue:number),props.suffix]})]});}AnimatedNumberCounter.displayName=\"Animated Number Counter\";addPropertyControls(AnimatedNumberCounter,{mode:{type:ControlType.Enum,options:[\"default\",\"variants\"],optionTitles:[\"Default\",\"Variants\"],displaySegmentedControl:true},value:{type:ControlType.Number,defaultValue:0,hidden:props=>props.mode!==\"variants\"},start:{type:ControlType.Number,defaultValue:0,hidden:props=>props.mode!==\"default\"},end:{type:ControlType.Number,defaultValue:100,hidden:props=>props.mode!==\"default\"},animation:{type:ControlType.Object,icon:\"effect\",hidden:props=>props.mode!==\"default\",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,defaultValue:{type:\"spring\",duration:1,bounce:0}}}},transition:{type:ControlType.Transition,defaultValue:{type:\"spring\",duration:1,bounce:0},hidden:props=>props.mode!==\"variants\"},decimals:{type:ControlType.Enum,defaultValue:0,options:[0,1,2,3],optionTitles:[\"Off\",\"1\",\"2\",\"3\"],displaySegmentedControl:true},commas:{type:ControlType.Boolean,defaultValue:true},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,lineHeight:1}},color:{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\"}}},prefix:{type:ControlType.String,placeholder:\"Prefix\"},suffix:{type:ControlType.String,placeholder:\"Suffix\"},decoration:{type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"underline\",\"line-through\"],optionTitles:[\"None\",\"Underline\",\"Strikethrough\"]},balance:{type:ControlType.Boolean,defaultValue:false},userSelect:{type:ControlType.Boolean,defaultValue:true},tag:{type:ControlType.Enum,defaultValue:\"p\",displaySegmentedControl:true,options:[\"h1\",\"h2\",\"h3\",\"p\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"P\"]},monospace:{type:ControlType.Boolean,defaultValue:false,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedNumberCounter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedNumberCounter_Prod.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useEffect,useState}from\"react\";// GEO fix for the \"Animated Number Counter\" component.\n// The counter's server-rendered HTML shows its start value (0), so crawlers that\n// do not run JavaScript read \"0%\" and \"0x\". This override makes the server render\n// and the first client render use the final value, then restores the real start\n// value after hydration. The count-up animation for visitors is unchanged: it still\n// runs from the start value when the counter scrolls into view.\nexport function withFinalValueInHTML(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[hydrated,setHydrated]=useState(false);useEffect(()=>{setHydrated(true);},[]);const isVariantsMode=String(props.mode||\"\").toLowerCase()===\"variants\";if(hydrated||isVariantsMode)return /*#__PURE__*/_jsx(Component,{ref:ref,...props});return /*#__PURE__*/_jsx(Component,{ref:ref,...props,start:props.end});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withFinalValueInHTML\":{\"type\":\"reactHoc\",\"name\":\"withFinalValueInHTML\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CounterFinalValueInHTML.map"],"mappings":"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"}