{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/o9J63C2Gfvp2SadOka5I/ZSBEWqji7d0vRNdANKWl/API_Title_1.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{ControlType,addPropertyControls}from\"framer\";import{useEffect,useState}from\"react\";// Add this custom hook at the top of your file\nfunction useWindowSize(){const[windowSize,setWindowSize]=useState({width:typeof window!==\"undefined\"?window.innerWidth:0,height:typeof window!==\"undefined\"?window.innerHeight:0});useEffect(()=>{function handleResize(){setWindowSize({width:window.innerWidth,height:window.innerHeight});}window.addEventListener(\"resize\",handleResize);return()=>window.removeEventListener(\"resize\",handleResize);},[]);return windowSize;}export default function API_Title(props){const[city,setCity]=useState(\"\");const[state,setState]=useState(\"\");const[savings,setSavings]=useState(null);const[loading,setLoading]=useState(true);const[error,setError]=useState(null);const[showPopup,setShowPopup]=useState(false);const[animatedSavings,setAnimatedSavings]=useState(0);const[intervalId,setIntervalId]=useState(null);const{width}=useWindowSize();const roundToNearestHundred=value=>{const remainder=value%100;return remainder>=50?Math.ceil(value/100)*100:Math.floor(value/100)*100;};const generateRandomNumber=()=>{return Math.floor(Math.random()*9e3)+1e3;};const startAnimation=()=>{const id=setInterval(()=>{setAnimatedSavings(generateRandomNumber());},100);setIntervalId(id);};const stopAnimation=finalValue=>{clearInterval(intervalId);setAnimatedSavings(finalValue);};// Responsive popup styles based on window width\nconst getPopupStyle=()=>{const baseStyle={position:\"absolute\",left:\"50%\",transform:\"translateX(-50%)\",backgroundColor:\"#09090B\",color:\"#fff\",padding:\"12px 8px\",borderRadius:\"10px\",whiteSpace:\"wrap\",boxShadow:\"0 2px 8px rgba(0, 0, 0, 0.15)\",zIndex:10,marginBottom:\"8px\",lineHeight:\"1.5em\",fontFamily:props.popupFontStyle.fontFamily,fontSize:props.popupFontStyle.fontSize,textAlign:props.popupFontStyle.textAlign,fontWeight:props.popupFontStyle.fontWeight};if(width<=480){// Mobile (small)\nreturn{...baseStyle,width:\"180px\",bottom:\"-250%\",fontSize:\"10px\"};}else if(width<=768){// Mobile\nreturn{...baseStyle,width:\"200px\",bottom:\"-250%\",fontSize:\"11px\"};}else if(width<=1024){// Tablet\nreturn{...baseStyle,width:\"220px\",bottom:\"-200%\"};}else{// Desktop\nreturn{...baseStyle,width:\"250px\",bottom:\"-175%\"};}};useEffect(()=>{const fetchLocationAndSavings=async()=>{try{setLoading(true);startAnimation();const[locationResponse,savingsResponse]=await Promise.all([fetch(\"https://ipapi.co/json/?key=NjLoegtgqZsZDVhXuStXToqId6EFztHnSedAFRxKhO4PBQKqCd\"),fetch(\"https://d10097iyq0q28w.cloudfront.net/realEstateSavings.json\")]);if(!locationResponse.ok||!savingsResponse.ok){throw new Error(`Failed to fetch data: ${locationResponse.status}, ${savingsResponse.status}`);}const[locationData,savingsData]=await Promise.all([locationResponse.json(),savingsResponse.json()]);setCity(locationData.city);setState(locationData.region_code);const stateSavings=savingsData.filter(item=>item.State===locationData.region_code);const citySavings=stateSavings.find(item=>item.City===locationData.city);const userSavings=citySavings?citySavings.Savings:stateSavings.length>0?stateSavings[0].Savings:4253;setSavings(userSavings);localStorage.setItem(\"userSavings\",JSON.stringify(userSavings));window.dispatchEvent(new Event(\"savingsUpdated\"));stopAnimation(userSavings);setLoading(false);}catch(err){console.error(\"Error:\",err);setError(`Failed to fetch data: ${err.message}`);setLoading(false);stopAnimation(0);}};fetchLocationAndSavings();},[]);return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:loading?/*#__PURE__*/_jsxs(\"p\",{style:{fontFamily:props.fontStyle.fontFamily,fontSize:props.fontStyle.fontSize,textAlign:props.fontStyle.textAlign,fontWeight:props.fontStyle.fontWeight,color:props.textColor,lineHeight:\"1.4em\",overflow:\"visible\"},children:[props.prefixTitle,\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:props.savedColor},children:[\"$\",roundToNearestHundred(animatedSavings).toLocaleString()]}),\" \",props.suffixTitle]}):error?/*#__PURE__*/_jsx(\"p\",{}):/*#__PURE__*/_jsxs(\"p\",{style:{fontFamily:props.fontStyle.fontFamily,fontSize:props.fontStyle.fontSize,textAlign:props.fontStyle.textAlign,fontWeight:props.fontStyle.fontWeight,color:props.textColor,lineHeight:\"1.4em\",overflow:\"visible\"},children:[props.prefixTitle,\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:props.savedColor},children:[\"$\",roundToNearestHundred(savings).toLocaleString()]}),\" \",props.suffixTitle,/*#__PURE__*/_jsxs(\"span\",{style:buttonContainerStyle,children:[/*#__PURE__*/_jsx(\"button\",{style:buttonStyle,onMouseEnter:()=>setShowPopup(true),onMouseLeave:()=>setShowPopup(false),children:\"\u24D8\"}),showPopup&&/*#__PURE__*/_jsxs(\"span\",{style:getPopupStyle(),children:[\"Estimated savings when buying without a buyer's agent based on the average home price in \",city,\",\",\" \",state,\" and a seller contribution of 2.5%. Actual savings may vary based on purchase price and other factors.\"]})]})]})});}addPropertyControls(API_Title,{prefixTitle:{type:ControlType.String,defaultValue:\"Save\",placeholder:\"Prefix Title\",description:\"The title snippet that comes before the number\"},savedDollars:{type:ControlType.String,defaultValue:\"$9,500\",placeholder:\"Amount of money saved\",description:\"The saved amount in $.\"},suffixTitle:{type:ControlType.String,defaultValue:\"and stay in control of your home buying process\",placeholder:\"Suffix Title\",description:\"The title snippet that comes after the number\"},savedColor:{type:ControlType.Color,defaultValue:\"#F4AA69\",optional:true},textColor:{type:ControlType.Color,defaultValue:\"#000000\",optional:true},fontStyle:{type:ControlType.Font,defaulFontSize:\"42px\",displayFontSize:true,displayTextAlignment:true,displaySegmentedControl:true},popupFontStyle:{type:ControlType.Font,defaulFontSize:\"12px\",displayFontSize:true,displayTextAlignment:true,displaySegmentedControl:true}});const containerStyle={display:\"flex\",justifyContent:\"left\",alignItems:\"center\",overflow:\"visible\",padding:\"0px\",margin:\"0px\"};const buttonContainerStyle={position:\"relative\",display:\"inline-block\"};const buttonStyle={background:\"none\",border:\"none\",cursor:\"pointer\",fontSize:\"14px\",color:\"#fff\",padding:\"0\"};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"API_Title\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./API_Title_1.map"],
  "mappings": "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",
  "names": ["useWindowSize", "windowSize", "setWindowSize", "ye", "window", "ue", "handleResize", "API_Title", "props", "city", "setCity", "state", "setState", "savings", "setSavings", "loading", "setLoading", "error", "setError", "showPopup", "setShowPopup", "animatedSavings", "setAnimatedSavings", "intervalId", "setIntervalId", "width", "roundToNearestHundred", "value", "generateRandomNumber", "startAnimation", "id", "stopAnimation", "finalValue", "getPopupStyle", "baseStyle", "locationResponse", "savingsResponse", "locationData", "savingsData", "stateSavings", "item", "citySavings", "userSavings", "err", "p", "containerStyle", "u", "buttonContainerStyle", "buttonStyle", "addPropertyControls", "ControlType"]
}
