PageSourceSearch

https://www.xe.com/_next/static/chunks/1969-9bb28e3cd6e05e0e.js

js xe.com collected 2026-09-24 08:27:02 UTC 12,418 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1969],{29762:(a,e,t)=>{t.d(e,{BB:()=>l,Bi:()=>s,H2:()=>n,JO:()=>m,Ke:()=>i,L0:()=>p,Tr:()=>g,W:()=>o,_u:()=>r,a3:()=>h,ds:()=>d,j2:()=>u,uT:()=>c});let r=1e6,n=1e5,i="5.00",o=30,s=1.2,u=0,l=0,m=0,c=1e3,d=5,p=30,g=30,h={AU:{propertyValue:9e5,deposit:18e4,loanTerm:30,maxLoanTerms:30,interestRate:"0.00",link:"https://tradingeconomics.com/australia/mortgage-rate"},NZ:{propertyValue:9e5,deposit:18e4,loanTerm:30,maxLoanTerms:30,interestRate:"0.00",link:"https://www.opespartners.co.nz/mortgage/interest-rates"},CA:{propertyValue:7e5,deposit:14e4,loanTerm:25,maxLoanTerms:30,interestRate:"0.00",link:"https://www.nbc.ca/personal/mortgages/rates.html#accordion-d1c9554935-item-264a601db1"},US:{propertyValue:4e5,deposit:8e4,loanTerm:30,maxLoanTerms:40,interestRate:"0.00",link:"https://www.freddiemac.com/pmms"},GB:{propertyValue:27e4,deposit:6e4,loanTerm:25,maxLoanTerms:40,interestRate:"0.00",link:"https://www.hsbc.co.uk/mortgages/our-rates/"}}},41969:(a,e,t)=>{t.d(e,{A:()=>h,$:()=>g});var r=t(15383),n=t(14343),i=t(20796),o=t(74626),s=t(54486),u=t(30138),l=t(29762),m=t(66370),c=t(60491),d=t(46683);let p=(0,n.createContext)(void 0),g=()=>{let a=(0,n.useContext)(p);if(void 0===a)throw Error("useMortgageCalculatorContext must be used within a MortgageCalculatorProvider");return a},h=({children:a})=>{let e=function(){var a,e,t;let{query:r}=(0,i.useRouter)(),p=r.slug,{countryData:g,countryCode:h}
1=(0,c.n)(),b=(0,m.em)(p),[y,v]=(0,n.useState)(b),[f,k]=(0,n.useState)(!1),[S,w]=(0,n.useState)("USD"),[T,C]=(0,n.useState)(""),[M,P]=(0,n.useState)(!1),[L,z]=(0,n.useState)(l._u),[A,x]=(0,n.useState)(l.H2),[E,U]=(0,n.useState)(l.W),[B,R]=(0,n.useState)(l.Ke),[D,I]=(0,n.useState)(0),[G,N]=(0,n.useState)(l.j2),[V,j]=(0,n.useState)(l.BB),[q,H]=(0,n.useState)(l.JO),[K,J]=(0,n.useState)(""),Z=K===T?S:T,{rate:$,invertedRate:F,rateToUSD:O,isLoading:W,error:_}=((a,e)=>{let{data:t,isLoading:r,error:i}=(0,d.u)("/api/protected/midmarket-converter/",{revalidateOnMount:!0}),{rate:o,rateToUSD:s,invertedRate:u}=(0,n.useMemo)(()=>{if(r)return{rate:1,rateToUSD:1,invertedRate:1};if(!t?.rates)return console.warn("Exchange rates are not available"),{rate:1,rateToUSD:1,invertedRate:1};let n=1;if(a!==e){let r=t.rates[e],i=t.rates[a];void 0===r||void 0===i?(console.warn(`Missing exchange rate for ${e} or ${a}.`),n=1):n=r/i}let i=1;if("USD"!==a){let e=t.rates.USD,r=t.rates[a];void 0===e||void 0===r?(console.warn(`Missing exchange rate for USD or ${a}.`),i=1):i=e/r}let o=0!==n?1/n:1;return{rate:n,rateToUSD:i,invertedRate:o}},[r,t,a,e]);return{rate:o,rateToUSD:s,invertedRate:u,isLoading:r,error:i}})(S,T),[Y,Q]=(0,n.useState)({convertedPropertyValue:0,monthlyPayment:0,monthlyInterest:0,monthlyPrincipal:0,loanAmount:0,totalLoanCost:0,totalInterest:0,principal:0}),[X,aa]=(0,n.useState)({}),ae=(0,n.useMemo)(()=>s.Ik({propertyValue:s.ai({error:a=>void 0===a.input?"Property value is required.":"Property value must be a number."}).positive("Property value must be greater than 0.").max(0x5f5e0ff,"Maximum property price is $99,999,999 USD (or equivalent)."),deposit:s.ai({error:a=>void 0===a.input?"Deposit is required.":"Deposit must be a number."}).positive("Deposit must be greater than 0."),loanTerm:s.ai({error:a=>void 0===a.input?"Loan term is required.":"Loan term must be a number."}).min(1,"Loan term must be at least 1 year."),interestRate:s.vk(a=>"string"==typeof a?parseFloat(a):a,s.ai({error:a=>void 0===a.input?"Interest rate is required.":"Interest rate must be a number."}).nonnegative("Interest rate must be positive.")),purchaseCurrency:s.Yj({error:a=>void 0===a.input?"Purchase currency is required.":"Purchase currency must be a string."}).min(1,"Select a purchase currency."),purchaseCountry:s.Yj({error:a=>void 0===a.input?"Purchase country is required.":"Purchase country must be a string."}).min(1,"Select a purchase country."),propertyTaxRate:s.ai().min(0,"Property tax rate cannot be negative.").prefault(0),homeInsurance:s.ai().min(0,"Home insurance cannot be negative.").prefault(0),pmi:s.ai().min(0,"PMI cannot be negative.").prefault(0),hoaFees:s.ai().min(0,"HOA fees cannot be negative.").prefault(0)}).refine(a=>a.deposit<a.propertyValue,{path:["deposit"],error:"Please ensure that deposit amount is less than the property value."}).superRefine((a,e)=>{if(!O||O<=0)return;let t=1e4/O,r=0x5f5e0ff/O;a.propertyValue<t&&e.issues.push({code:u.eq.custom,message:`Please enter an amount of at least ${t.toLocaleString(void 0,{maximumFractionDigits:0})} ${a.purchaseCurrency} (equivalent to $10,000 USD).`,path:["propertyValue"],input:""}),a.propertyValue>r&&e.issues.push({code:u.eq.custom,message:`Maximum property price is ${r.toLocaleString(void 0,{maximumFractionDigits:0})} ${a.purchaseCurrency} (equivalent to $99,999,999 USD).`,path:["propertyValue"],input:""})}),[O]),at=(0,n.useCallback)(()=>{let a,e=L-A,t=(parseFloat(B)||0)/100/12,r=12*E,n=(a=0===t?e/r:t*e/(1-Math.pow(1+t,-r)))*r,i=e*t,o=D/12,s=a+("US"===y&&f?o+G+V+q:0);if(s<0)return void aa(a=>({...a,monthlyPayment:"Monthly cost cannot be negative."}));if(a<=0){aa(a=>({...a,monthlyPayment:"Monthly payment must be greater than 0."})),Q(a=>({...a,monthlyPayment:0,monthlyInterest:0,monthlyPrincipal:0,loanAmount:0,totalLoanCost:0,totalInterest:0,principal:0}));return}P(!1);let u=K===T,l=a=>parseFloat((u?a*$:a).toFixed(2));W||_||Q({convertedPropertyValue:l(L),monthlyPayment:l(s),monthlyInterest:l(i),monthlyPrincipal:l(a-i),loanAmount:l(e),totalLoanCost:l(n),totalInterest:l(n-e),principal:l(L-A)}),P(!1)},[W,_,L,A,E,B,$,y,D,G,V,q,f,K,T]),ar=(0,n.useMemo)(()=>(0,o.A)(at,l.uT),[at]),an=(0,n.useCallback)(()=>
1{if(W)return void aa({purchaseCurrency:"Exchange rate is loading."});if(_)return void aa({purchaseCurrency:"Failed to load exchange rate."});let a=ae.safeParse({propertyValue:L,deposit:A,loanTerm:E,interestRate:B,purchaseCurrency:S,purchaseCountry:h,propertyTaxRate:D,homeInsurance:G,pmi:V,hoaFees:q});if(a.success)aa({}),ar();else{let e={};a.error.issues.forEach(a=>{e[a.path[0]]=a.message}),aa(e)}},[W,_,L,A,E,B,S,h,ae,ar,D,G,V,q]);return(0,n.useEffect)(function(){W||_||(at(),P(!1))},[W,_]),(0,n.useEffect)(()=>{f?I(L*l.Bi/100):(I(0),N(0),j(0),H(0))},[f,L]),(0,n.useEffect)(function(){let a=(0,m.JJ)(h,g);a&&(C(a),J(a))},[h]),a=()=>{an()},e=[L,A,E,B,D,G,V,q,f,T,K],t=l.uT,(0,n.useEffect)(()=>{let e=setTimeout(()=>{a()},t);return()=>clearTimeout(e)},[...e,t]),{propertyValue:L,deposit:A,loanTerm:E,interestRate:B,propertyTaxRate:D,homeInsurance:G,pmi:V,hoaFees:q,isCalculating:M,purchaseCurrency:S,paymentCurrency:T,purchaseCountry:y,rate:$,invertedRate:F,isLoadingRate:W,errorRate:_,userCountryLocation:h,includeAdditionalCosts:f,activeCurrency:K,inactiveCurrency:Z,setPropertyValue:z,setDeposit:x,setLoanTerm:U,setInterestRate:R,setPropertyTaxRate:I,setHomeInsurance:N,setPmi:j,setHoaFees:H,setPurchaseCurrency:w,setPaymentCurrency:C,setActiveCurrency:J,setIsCalculating:P,setPurchaseCountry:v,setIncludeAdditionalCosts:k,results:Y,toggleActiveCurrency:()=>{S!==T&&(P(!0),J(a=>a===S?T:S))},errors:X}}(),t=(0,n.useMemo)(()=>e,[e]);return(0,r.jsx)(p.Provider,{value:t,children:a})}},66370:(a,e,t)=>{t.d(e,{JJ:()=>l,em:()=>m,fK:()=>s,k:()=>u});var r=t(38741),n=t(29762),i=t(98252);function o(a){return Array.from({length:Math.floor(a/n.ds)},(a,e)=>{let t=(e+1)*n.ds;return{value:t,label:`${t} years`}}).reverse()}function s(a){let e=n.a3[a];if(!e)return{terms:o(n.L0),defaultTerm:n.Tr};let{maxLoanTerms:t,loanTerm:r}=e,i=o(t),s=Math.round(r/n.ds)*n.ds;return!i.some(a=>a.value===s)&&i.length>0?{terms:i,defaultTerm:i[0].value}:{terms:i,defaultTerm:s}}let u=a=>({AU:{locale:"en-au",slug:"australia"},NZ:{locale:"en-nz",slug:"new-zealand"},CA:{locale:"en-ca",slug:"canada"},US:{locale:"en-us",slug:"united-states"},GB:{locale:"en-gb",slug:"united-kingdom"}})[a],l=(a,e)=>a?"EU"===r.Ew[a]?.closest?"EUR":e[a]?.homeCurrency||"USD":"USD",m=a=>{if(a&&Array.isArray(a)&&a.length>0){let e=a[0].toLowerCase().replace(/-/g," ");return i.C$[e]}return"US"}},98252:(a,e,t)=>{t.d(e,{C$:()=>i,PU:()=>r,dL:()=>n});let r=["albania","algeria","antigua and barbuda","argentina","armenia","australia","austria","bahrain","bangladesh","barbados","belgium","benin","bhutan","bolivia","bosnia and herzegovina","botswana","brazil","brunei darussalam","bulgaria","burkina faso","cambodia","cameroon","canada","cape verde","chile","china","colombia","costa rica","croatia","czechia","denmark","dominican republic","ecuador","egypt","el salvador","estonia","eswatini","ethiopia","fiji","finland","france","french polynesia","gambia","georgia","germany","ghana","greece","grenada","guatemala","guernsey","guinea","haiti","honduras","hong kong","hungary","india","indonesia","ireland","isle of man","israel","italy","ivory coast","jamaica","japan","jersey","jordan","kazakhstan","kenya","kuwait","kyrgyzstan","laos","latvia","lebanon","lithuania","luxembourg","macedonia","malawi","malaysia","mali","malta","mauritius","mexico","moldova","monaco","mongolia","montenegro","morocco","mozambique","namibia","nepal","netherlands","new zealand","nicaragua","niger","nigeria","northern ireland","norway","oman","pakistan","palestine","panama","papua new guinea","peru","philippines","poland","portugal","qatar","romania","rwanda","saint vincent and the grenadines","samoa","saudi arabia","senegal","serbia","sierra leone","singapore","slovakia","slovenia","south africa","south korea","spain","sri lanka","sweden","switzerland","tajikistan","tanzania","thailand","togo","trinidad and tobago","tunisia","turkey","uganda","united arab emirates","united kingdom","united states","uruguay","uzbekistan","vanuatu","vietnam","zambia","zimbabwe"];[...r];let n=["australia","austria","belgium","bulgaria","estonia","finland","france","germany","gibraltar","greece","guernsey","ireland","isle of man","italy","jersey","latvia","liechtenstein","cyprus","lithuania","canada","luxembourg","malta","netherlands","slovakia","spain","portugal","czechia","denmark","united kingdom","croatia","hungary","norway","new zealand","poland","romania","sweden","united states","bahrain","hong kong","israel","kuwait","oman","singapore","switzerland","tunisia","united arab emirates"],i={albania:"AL",algeria:"DZ","antigua and barbuda":"AG",argentina:"AR",armenia:"AM",australia:"AU",austria:"AT",azerbaijan:"AZ",bahamas:"BS",bahrain:"BH",bangladesh:"BD",barbados:"BB",belgium:"BE",benin:"BJ",bhutan:"BT",bolivia:"BO","bosnia and herzegovina":"BA",botswana:"BW",brazil:"BR",brunei:"BN","brunei darussalam":"BN",bulgaria:"BG","burkina faso":"BF",cambodia:"KH",cameroon:"CM",canada:"CA","cape verde":"CV",chile:"CL",china:"CN",colombia:"CO","costa rica":"CR",croatia:"HR",cyprus:"CY",czechia:"
1CZ",denmark:"DK",djibouti:"DJ","dominican republic":"DO",ecuador:"EC",egypt:"EG","el salvador":"SV",estonia:"EE",eswatini:"SZ",ethiopia:"ET",fiji:"FJ",finland:"FI",france:"FR","french polynesia":"PF",gambia:"GM",georgia:"GE",germany:"DE",ghana:"GH",gibraltar:"GI",greece:"GR",grenada:"GD",guatemala:"GT",guernsey:"GG",guinea:"GN",haiti:"HT",honduras:"HN","hong kong":"HK",hungary:"HU",india:"IN",indonesia:"ID",ireland:"IE","isle of man":"IM",israel:"IL",italy:"IT","ivory coast":"CI",jamaica:"JM",japan:"JP",jersey:"JE",jordan:"JO",kazakhstan:"KZ",kenya:"KE",kuwait:"KW",kyrgyzstan:"KG",laos:"LA",latvia:"LV",lebanon:"LB",lesotho:"LS",liechtenstein:"LI",lithuania:"LT",luxembourg:"LU",macedonia:"MK",madagascar:"MG",malawi:"MW",malaysia:"MY",mali:"ML",malta:"MT",mauritius:"MU",mexico:"MX",moldova:"MD",monaco:"MC",mongolia:"MN",montenegro:"ME",morocco:"MA",mozambique:"MZ",namibia:"NA",nepal:"NP",netherlands:"NL","new zealand":"NZ",nicaragua:"NI",niger:"NE",nigeria:"NG","northern ireland":"GB-NIR",norway:"NO",oman:"OM",pakistan:"PK",palestine:"PS",panama:"PA","papua new guinea":"PG",peru:"PE",philippines:"PH",poland:"PL",portugal:"PT",qatar:"QA",romania:"RO",rwanda:"RW","saint vincent and the grenadines":"VC",samoa:"WS","saudi arabia":"SA",senegal:"SN",serbia:"RS","sierra leone":"SL",singapore:"SG",slovakia:"SK",slovenia:"SI","south africa":"ZA","south korea":"KR",spain:"ES","
1sri lanka":"LK",suriname:"SR",sweden:"SE",switzerland:"CH",tajikistan:"TJ",tanzania:"TZ",thailand:"TH",togo:"TG","trinidad and tobago":"TT",tunisia:"TN",turkey:"TR",uganda:"UG","united arab emirates":"AE","united kingdom":"GB","united states":"US",uruguay:"UY",uzbekistan:"UZ",vanuatu:"VU",vietnam:"VN",zambia:"ZM",zimbabwe:"ZW"}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.