UNPKG

@brightsoftware/date-np

Version:

Simple & minimal Nepali date picker that just works.

43 lines (42 loc) 1.33 kB
import { BS_MONTHS as s, MAX_BS_YEAR as l, MIN_BS_YEAR as a, MIN_AD_YEAR as D } from "../data/constants.js"; import { NepaliDate as c } from "../src/NepaliDate.js"; import f from "./Errors.js"; import { calcTotalDaysFromMinAD as A } from "./helpers.js"; import { isValidADRange as _ } from "./validators.js"; const m = (t, r, e) => !(r < 0 || r > 11 || t < a || t > l || e < 1 || e > s[t][r] || t === a && r === 8 && e < 17), u = (t, r, e) => { let o = e; if (t < a || t > l) throw f.INVALID_BS_YEAR; for (let n = 0; n < r; n++) o += s[t][n]; if (t === Number(a)) return o; for (let n = a; n < t; n++) for (let i = 0; i < 12; i++) o += s[n][i]; return o - 293; }, S = (t) => { let r = a, e = 9, o = 18, n = s[r][e]; for (let i = 0; i < t; i++) if (o++, !(o <= n)) { if (e != 11 ? e++ : (e = 0, r++), r > l) break; n = s[r][e], o = 1; } return { year: r, month: e, date: o }; }, p = (t) => { const r = t.getFullYear(), e = t.getMonth(), o = t.getDate(); if (!m(r, e, o)) throw f.INVALID_BS_DATE_RANGE; const n = u(r, e, o); return new Date(D, 1, n); }, M = (t) => { if (!_(t)) throw f.INVALID_AD_DATE_RANGE; const e = A(t), o = S(e); return new c(o.year, o.month, o.date); }; export { M as convertFromADToBS, p as convertFromBSToAD };