{"version":3,"file":"NumberCountingUp.Dg_dbb4s.mjs","names":["r","n","o","i","t","e","u","e.useState","e.useRef","useState"],"sources":["https:/ga.jspm.io/npm:react-intersection-observer@9.13.0/dist/index.mjs","https:/framerusercontent.com/modules/88P0NV1PCJmS2aOZ63Y7/L4stTEYoYyJ92WVPt4c6/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{useEffect,useState}from\"react\";import{addPropertyControls,ControlType}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[displayNumber,setDisplayNumber]=useState(0);const{ref,inView}=useInView({triggerOnce:true});// Track viewport width for responsive font sizing\nconst[vw,setVw]=useState(typeof window!==\"undefined\"?window.innerWidth:1440);useEffect(()=>{const onResize=()=>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(!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]);// Animate number when in view\nuseEffect(()=>{if(!inView)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*parseFloat(targetNumber);const displayValue=decimalMode===\"Decimal\"?(Math.floor(value*10)/10).toFixed(1):Math.floor(value).toString();setDisplayNumber(displayValue);if(progress<1)requestAnimationFrame(animate);};const raf=requestAnimationFrame(animate);return()=>cancelAnimationFrame(raf);},[inView,targetNumber,decimalMode]);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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"}