nepali-datepicker-vue
Version:
A Vue 3 Nepali Datepicker with TypeScript Support
695 lines (694 loc) • 41.2 kB
JavaScript
import { defineComponent as Ve, ref as p, onMounted as Ce, watch as J, computed as X, onUnmounted as be, createElementBlock as h, openBlock as m, normalizeClass as S, createElementVNode as v, createVNode as xe, withDirectives as Ie, createCommentVNode as T, withKeys as Oe, vModelText as Qe, withModifiers as $, Transition as $e, withCtx as He, toDisplayString as Y, Fragment as H, renderList as F, unref as se } from "vue";
var o = [{ year: 1976, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 1977, days: [30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 1978, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1979, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1980, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 1981, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1982, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1983, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1984, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 1985, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1986, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1987, days: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1988, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 1989, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1990, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1991, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1992, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 1993, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1994, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1995, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1996, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 1997, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1998, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 1999, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2e3, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2001, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2002, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2003, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2004, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2005, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2006, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2007, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2008, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2009, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2010, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2011, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2012, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2013, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2014, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2015, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2016, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2017, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2018, days: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2019, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2020, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2021, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2022, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2023, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2024, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2025, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2026, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2027, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2028, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2029, days: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2030, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2031, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2032, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2033, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2034, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2035, days: [30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2036, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2037, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2038, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2039, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2040, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2041, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2042, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2043, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2044, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2045, days: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2046, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2047, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2048, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2049, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2050, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2051, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2052, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2053, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2054, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2055, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2056, days: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2057, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2058, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2059, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2060, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2061, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2062, days: [30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2063, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2064, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2065, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2066, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2067, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2068, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2069, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2070, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2071, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2072, days: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2073, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2074, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2075, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2076, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2077, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2078, days: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2079, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2080, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2081, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2082, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2083, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2084, days: [31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2085, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2086, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2087, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2088, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2089, days: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2090, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2091, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2092, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2093, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], totalDays: 0, daysTillNow: 0 }, { year: 2094, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2095, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2096, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }, { year: 2097, days: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2098, days: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2099, days: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], totalDays: 0, daysTillNow: 0 }, { year: 2100, days: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], totalDays: 0, daysTillNow: 0 }], le = 0;
o.forEach((r) => {
r.totalDays = r.days.reduce((e, a) => e + a, 0), le += r.totalDays, r.daysTillNow = le;
});
var q = new Date(1919, 3, 13).getTime(), oe = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], ee = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], ye = ["आइतबार", "सोमबार", "मंगलबार", "बुधबार", "बिहिबार", "शुक्रबार", "शनिबार"], ie = ["आइत", "सोम", "मंगल", "बुध", "बिहि", "शुक्र", "शनि"], ae = ["Baisakh", "Jestha", "Asar", "Shrawan", "Bhadra", "Aswin", "Kartik", "Mangsir", "Poush", "Magh", "Falgun", "Chaitra"], de = ["Bai", "Jes", "Asa", "Shr", "Bha", "Asw", "Kar", "Man", "Pou", "Mag", "Fal", "Cha"], ue = ["बैशाख", "जेठ", "असार", "श्रावण", "भाद्र", "आश्विन", "कार्तिक", "मंसिर", "पौष", "माघ", "फाल्गुण", "चैत्र"], ce = ["बै", "जे", "अस", "श्र", "भा", "आ", "का", "मं", "पौ", "मा", "फा", "चै"], Fe = ["०", "१", "२", "३", "४", "५", "६", "७", "८", "९"];
function j(r) {
return r < 10 ? `0${r}` : `${r}`;
}
function A(r) {
let e = "";
for (let a = 0; a < r.length; a += 1) e += Fe[r.charCodeAt(a) - 48];
return e;
}
function Pe(r) {
return (e) => r <= 2 ? String(e.getYear()).substring(2) : r === 3 ? String(e.getYear()).substring(1) : String(e.getYear());
}
function Ae(r) {
return (e) => A(r <= 2 ? String(e.getYear()).substring(2) : r === 3 ? String(e.getYear()).substring(1) : String(e.getYear()));
}
function Be(r) {
return (e) => r === 1 ? String(e.getMonth() + 1) : r === 2 ? j(e.getMonth() + 1) : r === 3 ? de[e.getMonth()] : ae[e.getMonth()];
}
function Le(r) {
return (e) => r === 1 ? A(String(e.getMonth() + 1)) : r === 2 ? A(j(e.getMonth() + 1)) : r === 3 ? ce[e.getMonth()] : ue[e.getMonth()];
}
function Re(r) {
return (e) => r === 1 ? String(e.getDate()) : r === 2 ? j(e.getDate()) : r === 3 ? ee[e.getDay()] : oe[e.getDay()];
}
function We(r) {
return (e) => r === 1 ? A(String(e.getDate())) : r === 2 ? A(j(e.getDate())) : r === 3 ? ie[e.getDay()] : ye[e.getDay()];
}
function re(r) {
return () => r;
}
var Z = { Y: Pe, y: Ae, M: Be, m: Le, D: Re, d: We };
function Ke(r) {
return r in Z;
}
function qe(r) {
let e = !1, a = "", n = "", s = 0;
const i = [];
for (let u = 0; u < r.length; u += 1) {
const w = r[u];
w !== n ? (n !== "" && (i.push(Z[n](s)), n = "", s = 0), w !== '"' ? !Ke(w) || e ? a += w : (a && (i.push(re(a)), a = ""), n = w, s = 1) : e = !e) : s += 1;
}
return a ? i.push(re(a)) : n && i.push(Z[n](s)), i;
}
function ze(r, e) {
return qe(e).map((a) => a(r)).join("");
}
function ne(r) {
const e = r.split(/[-./]/, 3), [a, n = 1, s = 1] = e.map((u) => {
const w = parseInt(u, 10);
if (Number.isNaN(w)) throw new Error("Invalid date");
return w;
});
if (a < o[0].year || a >= o[0].year + o.length) throw new Error(`Nepal year out of range. Supported range: ${o[0].year}-${o[0].year + o.length - 1}`);
if (n < 1 || n > 12) throw new Error("Invalid nepali month must be between 1 - 12");
const i = o[a - o[0].year].days[n - 1];
if (s < 1 || s > i) throw new Error(`Invalid nepali date must be between 1 - ${i} in ${a} ${n}`);
return [a, n - 1, s];
}
var c = class d {
constructor() {
if (arguments.length === 0) this.setEnglishDate(/* @__PURE__ */ new Date());
else if (arguments.length === 1) {
const e = arguments.length <= 0 ? void 0 : arguments[0];
if (typeof e == "object") if (e instanceof Date) this.setEnglishDate(e);
else {
if (!(e instanceof d)) throw new Error("Invalid date argument");
this.timestamp = e.timestamp, this.year = e.year, this.month = e.month, this.day = e.day;
}
else if (typeof e == "string") this.set(...ne(e));
else {
if (typeof e != "number") throw new Error("Invalid date argument");
this.setEnglishDate(new Date(e));
}
} else {
if (arguments.length !== 3) throw new Error("Invalid argument syntax");
this.set(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], arguments.length <= 2 ? void 0 : arguments[2]);
}
}
setEnglishDate(e) {
this.timestamp = e;
let a = Math.floor((this.timestamp.getTime() - q) / 864e5), n = Math.floor(a / 366);
for (; a >= o[n].daysTillNow; ) n += 1;
a -= o[n - 1] ? o[n - 1].daysTillNow : 0;
const s = o[n];
for (this.year = s.year, this.month = 0; a >= s.days[this.month]; ) this.month += 1, a -= s.days[this.month - 1];
this.day = a + 1;
}
getEnglishDate() {
return this.timestamp;
}
parse(e) {
this.set(...ne(e));
}
getYear() {
return this.year;
}
getMonth() {
return this.month;
}
getDate() {
return this.day;
}
getDay() {
return this.timestamp.getDay();
}
getHours() {
return this.timestamp.getHours();
}
getMinutes() {
return this.timestamp.getMinutes();
}
getSeconds() {
return this.timestamp.getSeconds();
}
getMilliseconds() {
return this.timestamp.getMilliseconds();
}
getTime() {
return this.timestamp.getTime();
}
setYear(e) {
this.set(e, this.month, this.day);
}
setMonth(e) {
this.set(this.year, e, this.day);
}
setDate(e) {
this.set(this.year, this.month, e);
}
set(e, a, n) {
const s = e + Math.floor(a / 12) - o[0].year, i = o[s];
let u = i.daysTillNow - i.totalDays;
const w = a % 12, x = w < 0 ? 12 + w : w;
for (let D = 0; D < x; D += 1) u += i.days[D];
u += n - 1, this.setEnglishDate(new Date(q + 864e5 * u));
}
format(e) {
return ze(this, e);
}
toString() {
return `${this.year}/${this.month + 1}/${this.day}`;
}
addDays(e) {
const a = new Date(this.timestamp.getTime() + 864e5 * e);
return new d(a);
}
addMonths(e) {
let a = this.year, n = this.month + e;
a += Math.floor(n / 12), n %= 12, n < 0 && (n += 12, a -= 1);
const s = a - o[0].year;
if (s < 0 || s >= o.length) throw new Error("Resulting date is out of supported range");
const i = o[s].days[n], u = Math.min(this.day, i);
return new d(a, n, u);
}
addYears(e) {
const a = this.year + e;
if (a < o[0].year || a >= o[0].year + o.length) throw new Error("Resulting date is out of supported range");
const n = a - o[0].year;
if (this.month === 11 && this.day === 29) {
const s = o[n].days[11];
if (s < 29) return new d(a, 11, s);
}
return new d(a, this.month, this.day);
}
static minimum() {
return new Date(q);
}
static maximum() {
return new Date(q + 864e5 * o[o.length - 1].daysTillNow);
}
daysInMonth() {
const e = this.year - o[0].year;
return o[e].days[this.month];
}
isLeapYear() {
const e = this.year - o[0].year;
return o[e].totalDays === 366;
}
getWeeksInMonth() {
const e = new d(this.year, this.month, 1).getDay(), a = this.daysInMonth();
return Math.ceil((e + a) / 7);
}
diff(e, a) {
switch (a) {
case "day":
return Math.floor((this.timestamp.getTime() - e.timestamp.getTime()) / 864e5);
case "month":
return 12 * (this.year - e.year) + (this.month - e.month);
case "year":
return this.year - e.year;
default:
throw new Error("Invalid unit for diff calculation");
}
}
startOfDay() {
const e = new Date(this.timestamp);
return e.setHours(0, 0, 0, 0), new d(e);
}
endOfDay() {
const e = new Date(this.timestamp);
return e.setHours(23, 59, 59, 999), new d(e);
}
startOfWeek() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
if (e < 0 || e > 6 || !Number.isInteger(e)) throw new Error("startOfWeek must be an integer between 0 and 6");
const a = (this.getDay() - e + 7) % 7;
return this.clone().startOfDay().addDays(-a);
}
endOfWeek() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
return this.startOfWeek(e).addDays(6).endOfDay();
}
startOfMonth() {
return new d(this.year, this.month, 1);
}
endOfMonth() {
const e = this.daysInMonth();
return new d(this.year, this.month, e).endOfDay();
}
startOfYear() {
return new d(this.year, 0, 1);
}
endOfYear() {
const e = this.year - o[0].year, a = o[e].days[11];
return new d(this.year, 11, a).endOfDay();
}
static getMonthName(e) {
let a = arguments.length > 1 && arguments[1] !== void 0 && arguments[1], n = arguments.length > 2 && arguments[2] !== void 0 && arguments[2];
if (e < 0 || e > 11) throw new Error("Invalid month index, must be between 0-11");
let s = "";
return s = n ? a ? ce[e] : ue[e] : a ? de[e] : ae[e], s;
}
static getDayName(e) {
let a = arguments.length > 1 && arguments[1] !== void 0 && arguments[1], n = arguments.length > 2 && arguments[2] !== void 0 && arguments[2];
if (e < 0 || e > 6) throw new Error("Invalid day index, must be between 0-6");
let s = "";
return s = n ? a ? ie[e] : ye[e] : a ? ee[e] : oe[e], s;
}
static isValid(e, a, n) {
try {
if (e < o[0].year || e >= o[0].year + o.length || a < 0 || a > 11) return !1;
const s = e - o[0].year, i = o[s].days[a];
return !(n < 1 || n > i);
} catch {
return !1;
}
}
isValid() {
return d.isValid(this.year, this.month, this.day);
}
static getCalendarDays(e, a) {
if (!d.isValid(e, a, 1)) throw new Error("Invalid year or month");
const n = { year: 0, month: 0, days: [] }, s = { year: 0, month: 0, days: [] }, i = { year: 0, month: 0, days: [] }, u = e - o[0].year, w = new d(e, a, 1).getDay(), x = o[u].days[a];
s.year = e, s.month = a;
let D = a - 1, g = e, b = a + 1, V = e;
if (D < 0 && (D = 11, g--), g >= o[0].year && (n.year = g, n.month = D), g >= o[0].year && w > 0) {
const f = g - o[0].year, C = o[f].days[D];
for (let k = 0; k < w; k++) n.days.push(C - w + k + 1);
}
for (let f = 1; f <= x; f++) s.days.push(f);
b > 11 && (b = 0, V++), V < o[0].year + o.length && (i.year = V, i.month = b);
const _ = 42 - w - s.days.length;
if (V < o[0].year + o.length && _ > 0) for (let f = 1; f <= _; f++) i.days.push(f);
return { prevRemainingDays: w, prevMonth: n, currentMonth: s, nextMonth: i, remainingDays: _ };
}
clone() {
return new d(this);
}
isAfter(e) {
return this.timestamp.getTime() > e.timestamp.getTime();
}
isBefore(e) {
return this.timestamp.getTime() < e.timestamp.getTime();
}
isEqual(e) {
return this.year === e.year && this.month === e.month && this.day === e.day;
}
isSame(e, a) {
switch (a) {
case "year":
return this.year === e.year;
case "month":
return this.year === e.year && this.month === e.month;
case "day":
return this.isEqual(e);
default:
throw new Error("Invalid unit for comparison");
}
}
static getQuarter(e, a) {
if (e < 1 || e > 4 || !Number.isInteger(e)) throw new Error("Quarter must be an integer between 1 and 4");
const n = a ?? new d().getYear(), s = 3 * (e - 1);
return { start: new d(n, s, 1), end: new d(n, s + 2, 1).endOfMonth() };
}
getCurrentQuarter() {
return Math.floor(this.month / 3) + 1;
}
static getQuarters(e) {
const a = e ?? new d().getYear();
return { Q1: d.getQuarter(1, a), Q2: d.getQuarter(2, a), Q3: d.getQuarter(3, a), Q4: d.getQuarter(4, a) };
}
static getCurrentFiscalYear() {
const e = new d(), a = e.getYear();
return e.getMonth() < 3 ? a - 1 : a;
}
static getFiscalYearQuarter(e, a) {
if (e < 1 || e > 4 || !Number.isInteger(e)) throw new Error("Quarter must be an integer between 1 and 4");
const n = a ?? d.getCurrentFiscalYear();
let s = n, i = 3 * (e - 1) + 3;
e === 4 && (s = n + 1, i = 0), i > 11 && (s++, i -= 12);
let u = i + 2, w = s;
return u > 11 && (w++, u -= 12), { start: new d(s, i, 1), end: new d(w, u, 1).endOfMonth() };
}
getCurrentFiscalYearQuarter() {
const e = this.getMonth();
return e >= 3 && e <= 5 ? 1 : e >= 6 && e <= 8 ? 2 : e >= 9 && e <= 11 ? 3 : 4;
}
getCurrentFiscalYearQuarterDates() {
const e = this.getCurrentFiscalYearQuarter(), a = d.getCurrentFiscalYear();
return d.getFiscalYearQuarter(e, a);
}
static getFiscalYearQuarters(e) {
const a = e ?? d.getCurrentFiscalYear();
return { Q1: d.getFiscalYearQuarter(1, a), Q2: d.getFiscalYearQuarter(2, a), Q3: d.getFiscalYearQuarter(3, a), Q4: d.getFiscalYearQuarter(4, a) };
}
};
const je = ["placeholder", "id"], Ue = {
key: 0,
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024",
width: "1em",
height: "1em"
}, Ge = ["id"], Je = { class: "calendar__body" }, Xe = { class: "calendar__head" }, Ze = { class: "calendar__header_label" }, ea = { key: 0 }, aa = { key: 2 }, ta = { key: 4 }, sa = { class: "calendar__container" }, la = { key: 0 }, ra = { class: "calendar__weeks" }, na = { class: "calendar__days" }, oa = ["title", "onClick"], ya = ["title", "onClick"], ia = ["title", "onClick"], da = ["onClick"], ua = ["onClick"], z = 10, ca = /* @__PURE__ */ Ve({
__name: "NepaliDatePicker",
props: {
modelValue: {
type: String,
default: ""
},
yearSelect: {
type: Boolean,
default: !0
},
monthSelect: {
type: Boolean,
default: !0
},
class: {
type: String,
default: ""
},
placeholder: {
type: String,
default: ""
},
minDate: {
type: String,
required: !1
},
maxDate: {
type: String,
required: !1
},
inputClass: {
type: String,
default: ""
}
},
emits: ["update:modelValue", "onSelect"],
setup(r, { emit: e }) {
const a = r, n = e, s = p(
a.modelValue ? new c(a.modelValue) : new c()
), i = p(!1), u = p(a.modelValue), w = p(
a.modelValue ? new c(a.modelValue).getYear() : new c().getYear()
), x = p(
a.modelValue ? new c(a.modelValue).getMonth() : new c().getMonth()
), D = p(!1), g = p(!1), b = p(o[0].year), V = p(o.length + o[0].year - 1), _ = p(0), f = p(), C = p(!1), k = p(), I = p(!1);
Ce(() => {
U();
}), J(
() => a.modelValue,
() => {
u.value = a.modelValue, w.value = a.modelValue ? new c(a.modelValue).getYear() : new c().getYear(), x.value = a.modelValue ? new c(a.modelValue).getMonth() : new c().getMonth(), s.value = a.modelValue ? new c(a.modelValue) : new c();
}
), J(
() => a.minDate,
() => {
U();
}
), J(
() => a.maxDate,
() => {
U();
}
);
const U = () => {
if (a.minDate)
try {
f.value = new c(a.minDate), C.value = !0;
} catch (l) {
f.value = null, console.error("Invalid Minimum Date", l), C.value = !1;
}
if (a.maxDate)
try {
k.value = new c(a.maxDate), I.value = !0;
} catch (l) {
console.error("Invalid Maximum Date", l), I.value = !1;
}
I.value && C.value && (f.value.isAfter(k.value) ? (console.error("Minimum Date is Greater than Maximum Date"), I.value = !1, C.value = !1) : f.value.isEqual(k.value) && (console.error("Minimum Date is Equal to Maximum Date"), I.value = !1, C.value = !1));
}, N = X(() => c.getCalendarDays(s.value.year, s.value.month)), E = (l, t) => new c(l.year, l.month, t), he = () => {
if (g.value = !g.value, D.value = !1, g.value) {
const l = s.value.year, t = o.findIndex(
(y) => y.year === l
);
_.value = Math.floor(t / z);
}
}, me = () => {
const l = new c();
O(l) && (C.value ? s.value = new c(f.value.year, f.value.month, f.value.day) : I.value && (s.value = new c(k.value.year, k.value.month, k.value.day)));
}, B = (l, t) => {
l ? i.value = !0 : t ? i.value = !1 : i.value = !i.value, i.value ? (me(), document.addEventListener("click", K)) : (document.removeEventListener("click", K), te());
}, we = () => {
D.value = !D.value, g.value = !1;
}, ve = () => {
let l = s.value.month + 1, t = s.value.year;
l > 11 && (t++, l = 0), t + 1 < b.value || t > V.value || (R(l, t), s.value = new c(t, l, 1));
}, ge = () => {
if (g.value)
_.value < Ye.value - 1 && _.value++;
else {
let l = s.value.month, t = s.value.year + 1;
t < b.value || t > V.value || (R(l, t), s.value = new c(t, l, 1));
}
}, De = () => {
let l = s.value.month - 1, t = s.value.year;
l < 0 && (t--, l = 11), t < b.value || t > V.value || (R(l, t), s.value = new c(t, l, 1));
}, fe = () => {
if (g.value)
_.value > 0 && _.value--;
else {
let l = s.value.month, t = s.value.year - 1;
t < b.value || t > V.value || (R(l, t), s.value = new c(t, l, 1));
}
}, Ne = (l) => a.modelValue ? new c(a.modelValue).getTime() === l.getTime() : !1, Te = (l) => s.value.month == l, pe = (l) => s.value.year == l, O = (l) => !!(C.value && l.isBefore(f.value) || I.value && l.isAfter(k.value)), Me = (l) => {
const t = new c();
return l.day === t.day && l.year === t.year && l.month === t.month;
}, L = X(() => {
const l = o.map((y) => y.year), t = _.value * z;
return l.slice(t, t + z);
}), Ye = X(() => Math.ceil(o.length / z)), G = (l) => {
let t = "";
const y = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", M = y.length;
let Q = 0;
for (; Q < l; )
t += y.charAt(Math.floor(Math.random() * M)), Q += 1;
return t;
}, P = G(3) + G(3) + G(3), R = (l, t) => {
x.value = l, w.value = t;
}, ke = (l) => {
x.value = l, s.value.setMonth(l), D.value = !1;
}, Ee = (l) => {
w.value = l, s.value.setYear(l), g.value = !1, a.monthSelect && (D.value = !0);
}, W = (l) => {
O(l) || (s.value = l, u.value = s.value.format("YYYY-MM-DD"), n("update:modelValue", u.value), n("onSelect", u.value), B());
}, _e = () => {
/^\d{4}-\d{2}-\d{2}$/.test(u.value) || (u.value = a.modelValue);
try {
const l = new c(u.value);
if (O(l)) {
console.warn("Entered date is outside allowed range"), u.value = a.modelValue;
return;
}
W(l);
} catch {
u.value = a.modelValue;
}
}, K = (l) => {
const t = document.getElementById("nepali-calendar-" + P), y = document.getElementById("nepali-date-input-" + P);
t && !t.contains(l.target) && y && !y.contains(l.target) && (i.value = !1, te(), document.removeEventListener("click", K));
}, te = () => {
D.value = !1, g.value = !1, s.value = a.modelValue ? new c(a.modelValue) : new c();
}, Se = () => {
D.value = !1, g.value = !1, s.value = new c(), n("update:modelValue", ""), n("onSelect", ""), B(!1, !0);
};
return be(() => {
document.removeEventListener("click", K);
}), (l, t) => (m(), h("div", {
class: S(["nepali-datepicker", a.class]),
key: P
}, [
v("div", {
class: S(["calendar-input-div", r.modelValue ? "calendar-input-contain-value" : ""])
}, [
Ie(v("input", {
type: "text",
class: S(["calendar-input", a.inputClass]),
onClick: t[0] || (t[0] = (y) => B(!0)),
"onUpdate:modelValue": t[1] || (t[1] = (y) => u.value = y),
placeholder: r.placeholder,
"aria-haspopup": "true",
id: "nepali-date-input-" + P,
onKeyup: t[2] || (t[2] = Oe((y) => _e(), ["enter"]))
}, null, 42, je), [
[Qe, u.value]
]),
v("div", {
class: "calendar-input-icon calender-icon",
onClick: t[3] || (t[3] = $((y) => B(!0), ["stop"]))
}, [
i.value && r.modelValue ? T("", !0) : (m(), h("svg", Ue, [...t[11] || (t[11] = [
v("path", { d: "M940.218 107.055H730.764v-60.51H665.6v60.51H363.055v-60.51H297.89v60.51H83.78c-18.617 0-32.581 13.963-32.581 32.581v805.237c0 18.618 13.964 32.582 32.582 32.582h861.09c18.619 0 32.583-13.964 32.583-32.582V139.636c-4.655-18.618-18.619-32.581-37.237-32.581zm-642.327 65.163v60.51h65.164v-60.51h307.2v60.51h65.163v-60.51h176.873v204.8H116.364v-204.8H297.89zM116.364 912.291V442.18H912.29v470.11H116.364z" }, null, -1)
])]))
]),
r.modelValue ? (m(), h("div", {
key: 0,
class: S(["calendar-input-icon", i.value ? "" : "calendar-clear-input"]),
onClick: t[4] || (t[4] = $((y) => Se(), ["stop"]))
}, [...t[12] || (t[12] = [
v("svg", {
width: "1em",
height: "1em",
viewBox: "0 0 24 24",
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, [
v("path", {
id: "Vector",
d: "M18 18L12 12M12 12L6 6M12 12L18 6M12 12L6 18",
"stroke-width": "2",
"stroke-linecap": "round",
"stroke-linejoin": "round"
})
], -1)
])], 2)) : T("", !0)
], 2),
xe($e, { name: "calendar-animation" }, {
default: He(() => [
i.value ? (m(), h("div", {
key: 0,
class: S(["calendar", { show: i.value }]),
id: "nepali-calendar-" + P,
style: { "user-select": "none" }
}, [
v("div", Je, [
v("div", Xe, [
v("div", null, [
v("button", {
class: "calendar__toggle_button",
onClick: t[5] || (t[5] = (y) => fe())
}, [...t[13] || (t[13] = [
v("i", { class: "calendar-icon-double-left" }, null, -1)
])]),
!D.value && !g.value ? (m(), h("button", {
key: 0,
class: "calendar__toggle_button",
onClick: t[6] || (t[6] = (y) => De())
}, [...t[14] || (t[14] = [
v("i", { class: "calendar-icon-left" }, null, -1)
])])) : T("", !0)
]),
v("div", Ze, [
r.monthSelect ? T("", !0) : (m(), h("a", ea, Y(s.value.format("MMMM")), 1)),
!D.value && !g.value && r.monthSelect ? (m(), h("a", {
key: 1,
class: "calendar__header_selector",
onClick: $(we, ["stop"])
}, Y(s.value.format("MMMM")), 1)) : T("", !0),
r.yearSelect ? T("", !0) : (m(), h("a", aa, Y(s.value.format("YYYY")), 1)),
!g.value && r.yearSelect ? (m(), h("a", {
key: 3,
class: "calendar__header_selector",
onClick: $(he, ["stop"])
}, Y(s.value.format("YYYY")), 1)) : T("", !0),
g.value && r.yearSelect ? (m(), h("a", ta, Y(L.value[0]) + " ~ " + Y(L.value[L.value.length - 1]), 1)) : T("", !0)
]),
v("div", null, [
!D.value && !g.value ? (m(), h("button", {
key: 0,
class: "calendar__toggle_button",
onClick: t[7] || (t[7] = (y) => ve())
}, [...t[15] || (t[15] = [
v("i", { class: "calendar-icon-right" }, null, -1)
])])) : T("", !0),
v("button", {
class: "calendar__toggle_button",
onClick: t[8] || (t[8] = (y) => ge())
}, [...t[16] || (t[16] = [
v("i", { class: "calendar-icon-double-right" }, null, -1)
])])
])
]),
v("div", sa, [
!D.value && !g.value ? (m(), h("div", la, [
v("div", ra, [
(m(!0), h(H, null, F(se(ee), (y, M) => (m(), h("div", {
key: M,
class: "calendar__weekday"
}, Y(y), 1))), 128))
]),
v("div", na, [
N.value.prevRemainingDays > 0 ? (m(!0), h(H, { key: 0 }, F(N.value.prevMonth.days, (y, M) => (m(), h("div", {
key: M,
class: S(["calendar__day calendar__not_current_month", {
calendar__disable_date: O(
E(N.value.prevMonth, y)
)
}]),
title: E(N.value.prevMonth, y).format(
"YYYY-MM-DD"
),
onClick: (Q) => W(E(N.value.prevMonth, y))
}, [
v("span", null, Y(y), 1)
], 10, oa))), 128)) : T("", !0),
(m(!0), h(H, null, F(N.value.currentMonth.days, (y, M) => (m(), h("div", {
key: M,
class: S(["calendar__day", {
calendar__selected: Ne(
E(N.value.currentMonth, y)
),
calendar__today: Me(
E(N.value.currentMonth, y)
),
calendar__disable_date: O(
E(N.value.currentMonth, y)
)
}]),
title: E(N.value.currentMonth, y).format(
"YYYY-MM-DD"
),
onClick: (Q) => W(E(N.value.currentMonth, y))
}, [
v("span", null, Y(y), 1)
], 10, ya))), 128)),
N.value.remainingDays > 0 ? (m(!0), h(H, { key: 1 }, F(N.value.nextMonth.days, (y, M) => (m(), h("div", {
key: M,
class: S(["calendar__day calendar__not_current_month", {
calendar__disable_date: O(
E(N.value.nextMonth, y)
)
}]),
title: E(N.value.nextMonth, y).format(
"YYYY-MM-DD"
),
onClick: (Q) => W(E(N.value.nextMonth, y))
}, [
v("span", null, Y(y), 1)
], 10, ia))), 128)) : T("", !0)
])
])) : T("", !0),
D.value ? (m(), h("div", {
key: 1,
class: "calendar__months",
onClick: t[9] || (t[9] = $(() => {
}, ["stop"]))
}, [
(m(!0), h(H, null, F(se(ae), (y, M) => (m(), h("div", {
class: S(["calendar_month", { calendar__selected: Te(M) }]),
onClick: (Q) => ke(M)
}, Y(y), 11, da))), 256))
])) : T("", !0),
g.value ? (m(), h("div", {
key: 2,
class: "calendar__years",
onClick: t[10] || (t[10] = $(() => {
}, ["stop"]))
}, [
(m(!0), h(H, null, F(L.value, (y) => (m(), h("div", {
class: S(["calendar__year", { calendar__selected: pe(y) }]),
onClick: (M) => Ee(y)
}, Y(y), 11, ua))), 256))
])) : T("", !0)
])
])
], 10, Ge)) : T("", !0)
]),
_: 1
})
], 2));
}
}), ha = (r, e) => {
const a = r.__vccOpts || r;
for (const [n, s] of e)
a[n] = s;
return a;
}, wa = /* @__PURE__ */ ha(ca, [["__scopeId", "data-v-d902ca7c"]]);
export {
wa as NepaliDatePicker
};