1import"./Bzak7iHL.js";import{p as It,ap as Lt,g as P,h as t,ax as q,f as $,a as Tt,b as M,az as l,d as n,s as i,t as G,c as Ct,r as e,e as h}from"./7ngGZi-H.js";import{i as Nt}from"./B43B0yqw.js";import{e as ut,i as vt}from"./vZCW8iBA.js";import{r as J,s as pt}from"./DCJNo0Xp.js";import{a as K}from"./BbdvPgt3.js";import{F as O}from"./OCdojPJo.js";import{S as Q}from"./S1VVTpgi.js";import{C as ht}from"./BNuEaUmh.js";import{p as Ut}from"./dfVUbAs8.js";import{d as Bt,b as Yt,t as zt,l as Dt}from"./iWjpWwFV.js";var Ht=$('<input type="number" min="0" step="1000" class="input input-bordered w-full tabular-nums"/>'),jt=$('<input type="range" min="0" max="30" step="0.1" class="range range-primary w-full" aria-label="Annual interest rate percent"/>'),At=$('<input type="range" min="1" max="30" step="1" class="range range-primary w-full" aria-label="Loan term in years"/>'),Rt=$('<tr><td class="tabular-nums"> </td><td class="text-right tabular-nums"> </td><td class="text-right tabular-nums"> </td><td class="text-right tabular-nums"> </td></tr>'),Xt=$('<tr><td class="tabular-nums"> </td><td class="text-right tabular-nums"> </td><td class="text-right tabular-nums"> </td><td class="text-right tabular-nums"> </td></tr>'),qt=$('<div class="mt-4 grid gap-4 lg:grid-cols-2"><div class="card bg-base-200 min-w-0"><div class="card-body gap-2 p-4"><h3 class="text-sm font-bold">First 12 payments</h3> <div class="overflow-x-auto"><table class="table table-sm"><thead><tr><th>#</th><th class="text-right">Interest</th><th class="text-right">Principal</th><th class="text-right">Balance</th></tr></thead><tbody></tbody></table></div></div></div> <div class="card bg-base-200 min-w-0"><div class="card-body gap-2 p-4"><h3 class="text-sm font-bold">Yearly summary</h3> <div class="overflow-x-auto"><table class="table table-sm"><thead><tr><th>Year</th><th class="text-right">Interest</th><th class="text-right">Principal</th><th class="text-right">Balance</th></tr></thead><tbody></tbody></table></div></div></div></div>'),Gt=$('<div class="grid gap-4 lg:grid-cols-2"><div class="flex min-w-0 flex-col gap-4"><!> <!> <!> <div class="flex flex-wrap gap-2"><!></div> <div class="flex flex-wrap items-center gap-2" aria-label="Share this result"><!> <a target="_blank" rel="noopener" class="btn btn-sm btn-outline">Share on X</a> <a target="_blank" rel="noopener" class="btn btn-sm btn-outline">Share on LinkedIn</a></div></div> <div class="grid min-w-0 content-start gap-3 sm:grid-cols-3 lg:grid-cols-1 xl:grid-cols-3"><!> <!> <!></div></div> <!>',1);function sa(bt,ft){It(ft,!0);let d=q(5e5),m=q(8.5),u=q(20);const b=l(()=>Math.max(1,Math.round(t(u)*12))),S=l(()=>t(m)/1200),f=l(()=>{if(t(d)<=0||t(b)<=0)return 0;if(t(S)<=0)return t(d)/t(b);const a=Math.pow(1+t(S),t(b));return!Number.isFinite(a)||a<=1?0:t(d)*t(S)*a/(a-1)}),L=l(()=>t(f)*t(b)),V=l(()=>Math.max(0,t(L)-t(d))),gt=l(()=>{const a=[];let r=t(d);for(let s=1;s<=Math.min(12,t(b));s++){const o=r*t(S),p=Math.min(r,t(f)-o);r=Math.max(0,r-p),a.push({month:s,emi:t(f),interest:Math.max(0,o),principalPaid:Math.max(0,p),balance:r})}return a}),_t=l(()=>{const a=[];let r=t(d);const s=Math.max(1,Math.round(t(u)));for(let o=1;o<=s;o++){let p=0,E=0;for(let w=0;w<12&&(o-1)*12+w<t(b);w++){const k=r*t(S),F=Math.min(r,t(f)-k);p+=Math.max(0,F),E+=Math.max(0,k),r=Math.max(0,r-F)}if(a.push({year:o,principalPaid:p,interest:E,balance:r}),r<=0)break}return a}),c=a=>a.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:0}),W=l(()=>`EMI: ${c(t(f))}/month for ${t(b)} months. Loan ${c(t(d))} at ${t(m)}%. Total interest ${c(t(V))}, total payable ${c(t(L))}.`),xt=l(()=>t(d)<=0?"Enter a loan amount above zero.":""),yt=l(()=>t(m)<0||t(m)>30?"Enter a rate between 0 and 30%.":""),Mt=l(()=>t(u)<=0||t(u)>30?"Enter a term between 1 and 30 years.":""),T=l(()=>Yt("emi-calculator",{principal:t(d),rate:t(m),years:t(u)})),$t=l(()=>zt(t(W),t(T))),wt=l(()=>Dt(t(T)));function C(a,r){const s=typeof a=="number"?a:Number(a);return Number.isFinite(s)?s:r}Lt(()=>{const a=Ut.url.searchParams.get("s");if(!a)return;const r=Bt(a);r&&("principal"in r&&P(d,Math.max(1,C(r.principal,t(d))),!0),"rate"in r&&P(m,Math.min(30,Math.max(0,C(r.rate,t(m)))),!0),"years"in r&&P(u,Math.min(30,Math.max(1,Math.round(C(r.years,t(u))))),!0))});var Z=Gt(),N=Tt(Z),U=n(N),tt=n(U);O(tt,{label:"Loan amount",get error(){return t(xt)},hint:"Total amount you plan to borrow.",children:(a,r)=>{var s=Ht();J(s),K(s,()=>t(d),o=>P(d,o)),M(a,s)},$$slots:{default:!0}});var at=i(tt,2);O(at,{get label(){return`Interest rate (${t(m)??""}%)`},get error(){return t(yt)},children:(a,r)=>{var s=jt();J(s),K(s,()=>t(m),o=>P(m,o)),M(a,s)},$$slots:{default:!0}});var rt=i(at,2);O(rt,{get label(){return`Loan term (${t(u)??""} years)`},get error(){return t(Mt)},children:(a,r)=>{var s=At();J(s),K(s,()=>t(u),o=>P(u,o)),M(a,s)},$$slots:{default:!0}});var B=i(rt,2),Pt=n(B);ht(Pt,{get text(){return t(W)},label:"Copy summary"}),e(B);var et=i(B,2),st=n(et);ht(st,{get text(){return t(T)},label:"Copy share link"});var nt=i(st,2),St=i(nt,2);e(et),e(U);var it=i(U,2),lt=n(it);{let a=l(()=>c(t(f)));Q(lt,{label:"Monthly EMI",get value(){return t(a)}})}var ot=i(lt,2);{let a=l(()=>c(t(V)));Q(ot,{label:"Total interest",get value(){return t(a)}})}var Et=i(ot,2);{let a=l(()=>c(t(L)));Q(Et,{label:"Total payable",get value(){return t(a)}})}e(it),e(N);var kt=i(N,2);{var Ft=a=>{var r=qt(),s=n(r),o=n(s),p=i(n(o),2),E=n(p),w=i(n(E));ut(w,21,()=>t(gt),vt,(Y,v)=>{var g=Rt(),_=n(g),z=n(_,!0);e(_);var x=i(_),D=n(x,!0);
1e(x);var y=i(x),H=n(y,!0);e(y);var I=i(y),j=n(I,!0);e(I),e(g),G((A,R,X)=>{h(z,t(v).month),h(D,A),h(H,R),h(j,X)},[()=>c(t(v).interest),()=>c(t(v).principalPaid),()=>c(t(v).balance)]),M(Y,g)}),e(w),e(E),e(p),e(o),e(s);var k=i(s,2),F=n(k),dt=i(n(F),2),ct=n(dt),mt=i(n(ct));ut(mt,21,()=>t(_t),vt,(Y,v)=>{var g=Xt(),_=n(g),z=n(_,!0);e(_);var x=i(_),D=n(x,!0);e(x);var y=i(x),H=n(y,!0);e(y);var I=i(y),j=n(I,!0);e(I),e(g),G((A,R,X)=>{h(z,t(v).year),h(D,A),h(H,R),h(j,X)},[()=>c(t(v).interest),()=>c(t(v).principalPaid),()=>c(t(v).balance)]),M(Y,g)}),e(mt),e(ct),e(dt),e(F),e(k),e(r),M(a,r)};Nt(kt,a=>{t(f)>0&&a(Ft)})}G(()=>{pt(nt,"href",t($t)),pt(St,"href",t(wt))}),M(bt,Z),Ct()}export{sa as default};
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.