{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/schJYqegTZ6xxjWkAked/BfwZMsxP7VpDo2p43FLs/CountUP.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Count up (Count up numbers with dynamic controls)\n * By OneFramer.com\n *\n * @framerDisableUnlink\n */export default function CountUp(props){const{endAt,speed,textSize,fontWeight,fontColor,fontFamily,userSuffix}=props;// Value states\nconst[count,setCount]=useState(0);const[isVisible,setIsVisible]=useState(false);// Ref for the target element\nconst countRef=useRef(null);useEffect(()=>{const observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting){setIsVisible(true);observer.unobserve(entry.target);}});},{threshold:.5}// Trigger when 50% of the element is in view\n);// Start observing when component mounts\nobserver.observe(countRef.current);return()=>{// Clean up observer when component unmounts\nobserver.disconnect();};},[]);useEffect(()=>{if(isVisible){// Calculate the interval time based on speed and endAt\nconst intervalTime=speed*1e3/endAt;const interval=setInterval(()=>{if(count<endAt){setCount(prevCount=>prevCount+1);}else{clearInterval(interval);}},intervalTime);// Clean up after unmount\nreturn()=>clearInterval(interval);}},[count,endAt,speed,isVisible]);// styles\nconst styleObj={fontSize:`${textSize}px`,fontWeight:fontWeight,color:fontColor,fontFamily:fontFamily};return /*#__PURE__*/_jsx(\"span\",{ref:countRef,style:styleObj,children:count+userSuffix});}// Property controls\naddPropertyControls(CountUp,{endAt:{type:ControlType.Number,title:\"End\",defaultValue:10,min:2},speed:{type:ControlType.Number,title:\"Speed (s)\",defaultValue:5,min:1},textSize:{type:ControlType.Number,title:\"Text Size (px)\",defaultValue:20,min:12},fontWeight:{type:ControlType.Number,title:\"Font Weight\",defaultValue:600,min:100,max:900},fontColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"Calibri\"},userSuffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CountUp\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CountUP.map"],
  "mappings": "8GAKkB,SAARA,EAAyBC,EAAM,CAAC,GAAK,CAAC,MAAAC,EAAM,MAAAC,EAAM,SAAAC,EAAS,WAAAC,EAAW,UAAAC,EAAU,WAAAC,EAAW,WAAAC,CAAU,EAAEP,EAC5G,CAACQ,EAAMC,CAAQ,EAAEC,EAAS,CAAC,EAAO,CAACC,EAAUC,CAAY,EAAEF,EAAS,EAAK,EACxEG,EAASC,EAAO,IAAI,EAAEC,EAAU,IAAI,CAAC,IAAMC,EAAS,IAAI,qBAAqBC,GAAS,CAACA,EAAQ,QAAQC,GAAO,CAAIA,EAAM,iBAAgBN,EAAa,EAAI,EAAEI,EAAS,UAAUE,EAAM,MAAM,EAAG,CAAC,CAAE,EAAE,CAAC,UAAU,EAAE,CACrN,EACA,OAAAF,EAAS,QAAQH,EAAS,OAAO,EAAQ,IAAI,CAC7CG,EAAS,WAAW,CAAE,CAAE,EAAE,CAAC,CAAC,EAAED,EAAU,IAAI,CAAC,GAAGJ,EAAU,CAC1D,IAAMQ,EAAajB,EAAM,IAAID,EAAYmB,EAAS,YAAY,IAAI,CAAIZ,EAAMP,EAAOQ,EAASY,GAAWA,EAAU,CAAC,EAAQ,cAAcD,CAAQ,CAAG,EAAED,CAAY,EACjK,MAAM,IAAI,cAAcC,CAAQ,CAAE,CAAC,EAAE,CAACZ,EAAMP,EAAMC,EAAMS,CAAS,CAAC,EAClE,IAAMW,EAAS,CAAC,SAAS,GAAGnB,CAAQ,KAAK,WAAWC,EAAW,MAAMC,EAAU,WAAWC,CAAU,EAAE,OAAoB,EAAK,OAAO,CAAC,IAAIO,EAAS,MAAMS,EAAS,SAASd,EAAMD,CAAU,CAAC,CAAE,CAC/LgB,EAAoBxB,EAAQ,CAAC,MAAM,CAAC,KAAKyB,EAAY,OAAO,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,iBAAiB,aAAa,GAAG,IAAI,EAAE,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,UAAU,CAAC,KAAKA,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,SAAS,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,CAAC,CAAC",
  "names": ["CountUp", "props", "endAt", "speed", "textSize", "fontWeight", "fontColor", "fontFamily", "userSuffix", "count", "setCount", "ye", "isVisible", "setIsVisible", "countRef", "pe", "ue", "observer", "entries", "entry", "intervalTime", "interval", "prevCount", "styleObj", "addPropertyControls", "ControlType"]
}
