{"version":3,"file":"NumberCountingUp.kDLfCgwv.mjs","names":["e.useState","e.useRef","e.Component","e.createElement","useMemo","useCallback","useState"],"sources":["https:/ga.jspm.io/npm:react-intersection-observer@9.13.0/dist/index.mjs","https:/framerusercontent.com/modules/88P0NV1PCJmS2aOZ63Y7/YWsqOzxGNaELRFBWX9Bd/NumberCountingUp.js"],"sourcesContent":["import*as e from\"react\";\"use client\";var t=Object.defineProperty;var __defNormalProp=(e,i,r)=>i in e?t(e,i,{enumerable:true,configurable:true,writable:true,value:r}):e[i]=r;var __publicField=(e,t,i)=>__defNormalProp(e,typeof t!==\"symbol\"?t+\"\":t,i);var i=new Map;var r=new WeakMap;var n=0;var o=void 0;function defaultFallbackInView(e){o=e}function getRootId(e){if(!e)return\"0\";if(r.has(e))return r.get(e);n+=1;r.set(e,n.toString());return r.get(e)}function optionsToId(e){return Object.keys(e).sort().filter((t=>e[t]!==void 0)).map((t=>`${t}_${t===\"root\"?getRootId(e.root):e[t]}`)).toString()}function createObserver(e){const t=optionsToId(e);let r=i.get(t);if(!r){const n=new Map;let o;const s=new IntersectionObserver((t=>{t.forEach((t=>{var i;const r=t.isIntersecting&&o.some((e=>t.intersectionRatio>=e));e.trackVisibility&&typeof t.isVisible===\"undefined\"&&(t.isVisible=r);(i=n.get(t.target))==null?void 0:i.forEach((e=>{e(r,t)}))}))}),e);o=s.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]);r={id:t,observer:s,elements:n};i.set(t,r)}return r}function observe(e,t,r={},n=o){if(typeof window.IntersectionObserver===\"undefined\"&&n!==void 0){const i=e.getBoundingClientRect();t(n,{isIntersecting:n,target:e,intersectionRatio:typeof r.threshold===\"number\"?r.threshold:0,time:0,boundingClientRect:i,intersectionRect:i,rootBounds:i});return()=>{}}const{id:s,observer:a,elements:l}=createObserver(r);const h=l.get(e)||[];l.has(e)||l.set(e,h);h.push(t);a.observe(e);return function unobserve(){h.splice(h.indexOf(t),1);if(h.length===0){l.delete(e);a.unobserve(e)}if(l.size===0){a.disconnect();i.delete(s)}}}function isPlainChildren(e){return typeof e.children!==\"function\"}var s=class extends e.Component{constructor(e){super(e);__publicField(this,\"node\",null);__publicField(this,\"_unobserveCb\",null);__publicField(this,\"handleNode\",(e=>{if(this.node){this.unobserve();e||this.props.triggerOnce||this.props.skip||this.setState({inView:!!this.props.initialInView,entry:void 0})}this.node=e||null;this.observeNode()}));__publicField(this,\"handleChange\",((e,t)=>{e&&this.props.triggerOnce&&this.unobserve();isPlainChildren(this.props)||this.setState({inView:e,entry:t});this.props.onChange&&this.props.onChange(e,t)}));this.state={inView:!!e.initialInView,entry:void 0}}componentDidMount(){this.unobserve();this.observeNode()}componentDidUpdate(e){if(e.rootMargin!==this.props.rootMargin||e.root!==this.props.root||e.threshold!==this.props.threshold||e.skip!==this.props.skip||e.trackVisibility!==this.props.trackVisibility||e.delay!==this.props.delay){this.unobserve();this.observeNode()}}componentWillUnmount(){this.unobserve()}observeNode(){if(!this.node||this.props.skip)return;const{threshold:e,root:t,rootMargin:i,trackVisibility:r,delay:n,fallbackInView:o}=this.props;this._unobserveCb=observe(this.node,this.handleChange,{threshold:e,root:t,rootMargin:i,trackVisibility:r,delay:n},o)}unobserve(){if(this._unobserveCb){this._unobserveCb();this._unobserveCb=null}}render(){const{children:t}=this.props;if(typeof t===\"function\"){const{inView:e,entry:i}=this.state;return t({inView:e,entry:i,ref:this.handleNode})}const{as:i,triggerOnce:r,threshold:n,root:o,rootMargin:s,onChange:a,skip:l,trackVisibility:h,delay:c,initialInView:d,fallbackInView:u,...p}=this.props;return e.createElement(i||\"div\",{ref:this.handleNode,...p},t)}};function useInView({threshold:t,delay:i,trackVisibility:r,rootMargin:n,root:o,triggerOnce:s,skip:a,initialInView:l,fallbackInView:h,onChange:c}={}){var d;const[u,p]=e.useState(null);const b=e.useRef();const[f,v]=e.useState({inView:!!l,entry:void 0});b.current=c;e.useEffect((()=>{if(a||!u)return;let e;e=observe(u,((t,i)=>{v({inView:t,entry:i});b.current&&b.current(t,i);if(i.isIntersecting&&s&&e){e();e=void 0}}),{root:o,rootMargin:n,threshold:t,trackVisibility:r,delay:i},h);return()=>{e&&e()}}),[Array.isArray(t)?t.toString():t,u,o,n,s,a,r,h,i]);const g=(d=f.entry)==null?void 0:d.target;const y=e.useRef();if(!u&&g&&!s&&!a&&y.current!==g){y.current=g;v({inView:!!l,entry:void 0})}const V=[p,f.inView,f.entry];V.ref=V[0];V.inView=V[1];V.entry=V[2];return V}export{s as InView,defaultFallbackInView,observe,useInView};\n//# sourceMappingURL=index.mjs.map\n","import{jsxs as _jsxs}from\"react/jsx-runtime\";import{startTransition,useCallback,useEffect,useMemo,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"react-intersection-observer\";// breakpoints (inclusive)\nconst TABLET_MAX=810;const MOBILE_MAX=390;export default function AnimatedNumber({targetNumber,fontFile,fontSize,fontSizeTablet,fontSizeMobile,decimalMode,suffix,color}){const isStaticRenderer=useIsStaticRenderer();const{ref,inView}=useInView({triggerOnce:true});const numericTarget=useMemo(()=>{const parsed=Number(targetNumber);return Number.isFinite(parsed)?parsed:0;},[targetNumber]);const formatValue=useCallback(value=>{return decimalMode===\"Decimal\"?(Math.floor(value*10)/10).toFixed(1):Math.floor(value).toString();},[decimalMode]);const finalDisplayValue=useMemo(()=>formatValue(numericTarget),[formatValue,numericTarget]);const[displayNumber,setDisplayNumber]=useState(finalDisplayValue);const[hasMounted,setHasMounted]=useState(false);// Track viewport width for responsive font sizing\nconst[vw,setVw]=useState(typeof window!==\"undefined\"?window.innerWidth:1440);useEffect(()=>{if(typeof window===\"undefined\")return;const onResize=()=>{startTransition(()=>setVw(window.innerWidth));};window.addEventListener(\"resize\",onResize);return()=>window.removeEventListener(\"resize\",onResize);},[]);// Choose font size based on breakpoints\nconst effectiveFontSize=vw<=MOBILE_MAX?fontSizeMobile:vw<=TABLET_MAX?fontSizeTablet:fontSize;// Load custom font if provided\nuseEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;if(!fontFile)return;const fontName=\"UploadedFont\";const fontFace=new FontFace(fontName,`url(${fontFile})`);fontFace.load().then(loadedFont=>{document.fonts.add(loadedFont);}).catch(err=>{console.error(\"Font loading failed:\",err);});},[fontFile]);useEffect(()=>{startTransition(()=>setHasMounted(true));},[]);useEffect(()=>{if(isStaticRenderer||!hasMounted||!inView){startTransition(()=>setDisplayNumber(finalDisplayValue));return;}startTransition(()=>setDisplayNumber(formatValue(0)));},[finalDisplayValue,formatValue,hasMounted,inView,isStaticRenderer]);// Animate number when in view\nuseEffect(()=>{if(isStaticRenderer||!hasMounted||!inView||typeof window===\"undefined\")return;const duration=1e3;const easeInOutCubic=t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2;const startTime=performance.now();const animate=timestamp=>{const elapsed=timestamp-startTime;const progress=Math.min(elapsed/duration,1);const eased=easeInOutCubic(progress);const value=eased*numericTarget;const displayValue=formatValue(value);startTransition(()=>setDisplayNumber(displayValue));if(progress<1)requestAnimationFrame(animate);};const raf=requestAnimationFrame(animate);return()=>cancelAnimationFrame(raf);},[formatValue,hasMounted,inView,isStaticRenderer,numericTarget]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{color:color||\"#FF4D4D\",fontSize:`${effectiveFontSize}px`,lineHeight:\"0.95\",fontFamily:fontFile?\"UploadedFont\":\"inherit\",display:\"inline-block\"},children:[displayNumber,suffix]});}addPropertyControls(AnimatedNumber,{targetNumber:{type:ControlType.Number,title:\"Target Number\",defaultValue:5,min:0,max:1e3,step:.1},decimalMode:{type:ControlType.Enum,title:\"Decimal Mode\",options:[\"Decimal\",\"No Decimal\"],optionTitles:[\"Decimal\",\"No Decimal\"],defaultValue:\"Decimal\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",placeholder:\"e.g. %, +\"},fontFile:{type:ControlType.File,title:\"Font File\",allowedFileTypes:[\"woff\",\"woff2\"]},fontSize:{type:ControlType.Number,title:\"Font Size (Desktop)\",defaultValue:48,min:10,max:300,step:1},fontSizeTablet:{type:ControlType.Number,title:\"Font Size (≤810)\",defaultValue:40,min:8,max:300,step:1},fontSizeMobile:{type:ControlType.Number,title:\"Font Size (≤390)\",defaultValue:32,min:8,max:300,step:1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FF4D4D\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedNumber\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberCountingUp.map"],"mappings":"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"}