{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react-intersection-observer@9.13.0/dist/index.mjs", "ssg: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 (\u2264810)\",defaultValue:40,min:8,max:300,step:1},fontSizeMobile:{type:ControlType.Number,title:\"Font Size (\u2264390)\",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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",
  "names": ["i", "r", "n", "o", "getRootId", "r", "n", "optionsToId", "createObserver", "i", "o", "s", "t", "e", "observe", "window", "a", "l", "h", "useInView", "t", "i", "r", "n", "o", "s", "a", "l", "h", "c", "d", "u", "p", "ye", "b", "pe", "f", "v", "ue", "e", "observe", "y", "V", "TABLET_MAX", "MOBILE_MAX", "AnimatedNumber", "targetNumber", "fontFile", "fontSize", "fontSizeTablet", "fontSizeMobile", "decimalMode", "suffix", "color", "displayNumber", "setDisplayNumber", "ye", "ref", "inView", "useInView", "vw", "setVw", "window", "ue", "onResize", "effectiveFontSize", "fontName", "loadedFont", "err", "duration", "easeInOutCubic", "t", "startTime", "animate", "timestamp", "elapsed", "progress", "value", "displayValue", "raf", "u", "addPropertyControls", "ControlType"]
}
