@nepdatejs/datepicker 0.0.0-bootstrap → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nepdate-datepicker.global.js","names":["exports","DIGIT","DIGITS_ONLY","YEAR_MONTH","maskDateText","next","previous","out","yearMonth","BS_DATA","NepDateRangeError","message","code","toEpochDay","value","weekdayOf","epoch","bsMonths$1","adMonths$1","en","name","bsMonths","adMonths","locales","localeData","current","getConfig","isWeekday","DAYS_BEFORE_EPOCH","DAYS_PER_ERA","MONTH_DAYS","isAdLeapYear","year","adMonthLength","month","isValidAdDate","day","adToEpoch","y","era","yearOfEra","dayOfYear","dayOfEra","epochToAd","z","shiftedMonth","data","freezeData","table","source","months","buildTable","count","yearStart","monthOffset","start","offset","m","bsTable","bsLastYear","bsEpochRange","bsMonthLength","lastYear","isValidBsDate","bsToEpoch","index","epochToBs","first","last","low","high","middle","adDate","bsDate","length","createDate","calendar","isValidDate","daysInMonth","toEpoch","date","fromEpoch","assertConvertible","toCalendar","minDate","maxDate","toIsoDate","pad","fromIsoDate","match","fromJsDate","instant","parts","timeZone","part","item","type","fromIsoTimestamp","time","from","to","isoParts","today","now","hour","minute","addDays","assertInteger","days","addMonths","addYears","years","startOfMonth","endOfMonth","startOfYear","endOfYear","startOfWeek","assertWeekday","weekStartsOn","endOfWeek","differenceInDays","a","b","inCalendarOf","target","compareDates","isSameDay","isSameMonth","other","isBefore","isAfter","isWithin","min","max","clampDate","dayOfWeek","DEVANAGARI","getLocale","locale","monthNames","width","toAsciiDigits","digit","formatNumber","digits","formatMessage","template","values","whole","DATE_FORMATS","formatDate","tokens","pattern","output","token","fiscalYear","bs","fiscalYearRange","endYear","startYear","formatFiscalYear","end","fy","style","YEAR_FIRST","COMPACT","parseDate","parseDateStrict","text","ascii","timeOfDay","isValidTime","parseTime","meridiem","word","kind","am","pm","formatTime","options","toIsoDateTime","wall","offsetMinutes","sign","abs","fromIsoDateTime","zoned","local","FORWARD","nextFocus","key","focused","limits","computeLimits","tableLow","firstWholeMonthDay","tableHigh","lastWholeMonthDay","empty","lowDay","highDay","isInLimits","NO_EVENTS","buildMonthGrid","input","firstEpoch","lead","rows","names","todayEpoch","focusEpoch","selectionEpochs","hoverEpoch","startEpoch","endEpoch","previewLow","previewHigh","weeks","row","week","column","isOutside","safeFromEpoch","otherDate","weekday","isToday","isRangeStart","isRangeEnd","isRangeMiddle","isSelected","singleEpoch","many","isInRangePreview","isDisabled","holiday","holidayLabel","state","buildWeekdays","weekdays","weekendDays","NONE","none","selected","isDayList","mode","selection","buildMonthTiles","long","otherShort","safeConvert","valid","subLabel","yearPageStart","buildYearTiles","safeFiscalYear","isFiscalYearAllowed","buildFiscalYearTiles","anchor","pageStart","currentStart","range","createCalendar","initial","todayDate","normalizeSelection","view","rangeHover","makeHolidayResolver","visibleMonth","clampMonth","anchorOf","clampDay","snapshot","build","listeners","destroyed","focusTarget","isSelectable","loc","selectedDay","fiscalStart","fiscalStartOf","fiscalPage","labels","rangeOf","tileInput","emit","listener","update","before","stateKey","change","single","shiftMonths","actions","modifiers","result","toggleDay","changes","reselect","inCalendar","sortDays","second","kept","holidays","info","byDay","label","parseInput","messages","error","checkDate","format","formatInput","equivalentText","placeholderText","readIso","detailOf","panelOptions","inputLimits","panel","localeOf","formatOf","todayOf","isRange","isSingleDay","createEmitter","queued","depth","notify","rebuild","callback","resolveSinglePreset","context","id","resolveRangePreset","describePreset","preset","resolveBuiltIn","createDatePicker","open","pick","emitter","presetStates","presetContext","resolvedPresets","entry","candidate","syncPanel","showDate","setDate","nextValue","changed","byUser","detail","applyValue","picked","nextDate","createDateRangePicker","ordered","valueOf","startText","endText","lengthError","commit","nextStart","nextEnd","settle","tooFar","allowed","field","otherError","incoming","SEPARATOR","createMultiDatePicker","dates","readAll","valuesOf","textOk","detailsOf","list","tooMany","setDates","sorted","unique","details","maskLast","parsed","firstError","iso","nextDates","head","createDateTimePicker","zone","timeText","fmt","timeError","datePicker","dateOptions","toIsoDay","compose","t","_value","_default","_onChange","_zone","_hour12","_step","_defaultTime","rest","inner","step","hour12","setTime"],"sources":["../src/mask.ts","../../core/dist/years-CabTFbN9.js","../../core/dist/index.js","../../calendar/dist/index.js","../src/input.ts","../src/base.ts","../src/presets.ts","../src/picker.ts","../src/range.ts","../src/multi.ts","../src/datetime.ts"],"sourcesContent":["const DIGIT = '[0-9\\u0966-\\u096f]';\nconst DIGITS_ONLY = new RegExp(`^${DIGIT}{1,8}$`);\nconst YEAR_MONTH = new RegExp(`^(${DIGIT}{4}-${DIGIT}{2})(${DIGIT}?)$`);\n\n/**\n * Add the dashes of YYYY-MM-DD while the user types digits: \"2083\" becomes\n * \"2083-\", \"208306\" becomes \"2083-06-\" and a pasted \"20830624\" becomes\n * \"2083-06-24\". ASCII and Devanagari digits keep their script, and a\n * separator typed straight after a dash is dropped, so typing the dashes\n * yourself works too. Only text that grew at the end (typing, or a paste into\n * an empty field) is touched: deleting, editing in the middle and other\n * separators (\"2083/6/4\") are left as the user wrote them. Pure.\n */\nexport function maskDateText(next: string, previous = ''): string {\n if (next.length <= previous.length || !next.startsWith(previous)) {\n return next;\n }\n if (previous.endsWith('-') && /^[-./]$/.test(next.slice(previous.length))) {\n // The user typed the separator the mask already added.\n return previous;\n }\n if (DIGITS_ONLY.test(next)) {\n // Every character is one ASCII or Devanagari digit, so string offsets are safe.\n let out = next.slice(0, 4);\n if (next.length >= 4) {\n out += '-';\n }\n out += next.slice(4, 6);\n if (next.length >= 6) {\n out += '-';\n }\n\n return out + next.slice(6);\n }\n const yearMonth = YEAR_MONTH.exec(next);\n if (yearMonth) {\n // \"2083-06\" → \"2083-06-\"; \"2083-062\" → \"2083-06-2\".\n return `${yearMonth[1] ?? ''}-${yearMonth[2] ?? ''}`;\n }\n\n return next;\n}\n","//#region src/bs/data/years.ts\nconst BS_DATA = {\n\tfirstYear: 1970,\n\tepochStart: -20717,\n\tverifiedThrough: 2083,\n\tyears: [\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t30,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t30,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t30,\n\t\t\t31,\n\t\t\t32,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t30,\n\t\t\t29,\n\t\t\t31\n\t\t],\n\t\t[\n\t\t\t31,\n\t\t\t31,\n\t\t\t32,\n\t\t\t31,\n\t\t\t31,\n\t\t\t31,\n\t\t\t30,\n\t\t\t29,\n\t\t\t29,\n\t\t\t30,\n\t\t\t30,\n\t\t\t30\n\t\t]\n\t]\n};\n//#endregion\nexport { BS_DATA as t };\n\n//# sourceMappingURL=years-CabTFbN9.js.map","import { t as BS_DATA } from \"./years-CabTFbN9.js\";\n//#region src/errors.ts\n/** Thrown for any invalid date or argument. Check `code`, not the message. */\nvar NepDateRangeError = class extends RangeError {\n\tconstructor(code, message) {\n\t\tsuper(message);\n\t\tthis.name = \"NepDateRangeError\";\n\t\tthis.code = code;\n\t}\n};\n/** Thrown when a BS table passed to `setBsData` or `patchBsYear` is not valid. */\nvar NepDateDataError = class extends Error {\n\tconstructor(code, message, year, month) {\n\t\tsuper(message);\n\t\tthis.name = \"NepDateDataError\";\n\t\tthis.code = code;\n\t\tthis.year = year;\n\t\tthis.month = month;\n\t}\n};\n//#endregion\n//#region src/epoch.ts\n/** Brand a whole number of days since 1970-01-01 as an `EpochDay`. */\nfunction toEpochDay(value) {\n\tif (!Number.isSafeInteger(value)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `${String(value)} is not a whole number of days.`);\n\treturn value;\n}\n/** The weekday of a day count. 1970-01-01 was a Thursday. */\nfunction weekdayOf(epoch) {\n\treturn ((epoch + 4) % 7 + 7) % 7;\n}\n//#endregion\n//#region src/locale/en.ts\nconst bsMonths$1 = [\n\t\"Baisakh\",\n\t\"Jestha\",\n\t\"Asar\",\n\t\"Shrawan\",\n\t\"Bhadra\",\n\t\"Ashwin\",\n\t\"Kartik\",\n\t\"Mangsir\",\n\t\"Poush\",\n\t\"Magh\",\n\t\"Falgun\",\n\t\"Chaitra\"\n];\nconst adMonths$1 = [\n\t\"January\",\n\t\"February\",\n\t\"March\",\n\t\"April\",\n\t\"May\",\n\t\"June\",\n\t\"July\",\n\t\"August\",\n\t\"September\",\n\t\"October\",\n\t\"November\",\n\t\"December\"\n];\nconst en = {\n\tdigits: [\n\t\t\"0\",\n\t\t\"1\",\n\t\t\"2\",\n\t\t\"3\",\n\t\t\"4\",\n\t\t\"5\",\n\t\t\"6\",\n\t\t\"7\",\n\t\t\"8\",\n\t\t\"9\"\n\t],\n\tweekdays: {\n\t\tlong: [\n\t\t\t\"Sunday\",\n\t\t\t\"Monday\",\n\t\t\t\"Tuesday\",\n\t\t\t\"Wednesday\",\n\t\t\t\"Thursday\",\n\t\t\t\"Friday\",\n\t\t\t\"Saturday\"\n\t\t],\n\t\tshort: [\n\t\t\t\"Sun\",\n\t\t\t\"Mon\",\n\t\t\t\"Tue\",\n\t\t\t\"Wed\",\n\t\t\t\"Thu\",\n\t\t\t\"Fri\",\n\t\t\t\"Sat\"\n\t\t],\n\t\tnarrow: [\n\t\t\t\"Su\",\n\t\t\t\"Mo\",\n\t\t\t\"Tu\",\n\t\t\t\"We\",\n\t\t\t\"Th\",\n\t\t\t\"Fr\",\n\t\t\t\"Sa\"\n\t\t]\n\t},\n\tmonths: {\n\t\tAD: {\n\t\t\tlong: adMonths$1,\n\t\t\tshort: adMonths$1.map((name) => name.slice(0, 3))\n\t\t},\n\t\tBS: {\n\t\t\tlong: bsMonths$1,\n\t\t\tshort: bsMonths$1.map((name) => name.slice(0, 3))\n\t\t}\n\t},\n\tcalendarNames: {\n\t\tAD: \"AD\",\n\t\tBS: \"BS\"\n\t},\n\tlabels: {\n\t\ttoday: \"Today\",\n\t\tclear: \"Clear date\",\n\t\tpreviousMonth: \"Previous month\",\n\t\tnextMonth: \"Next month\",\n\t\tpreviousYear: \"Previous year\",\n\t\tnextYear: \"Next year\",\n\t\tmonth: \"Month\",\n\t\tyear: \"Year\",\n\t\topenCalendar: \"Open calendar\",\n\t\tchooseDate: \"Choose a date\",\n\t\tcalendar: \"Calendar\",\n\t\tpresets: \"Shortcuts\",\n\t\tfiscalYear: \"Fiscal year\",\n\t\ttime: \"Time\",\n\t\thour: \"Hour\",\n\t\tminute: \"Minute\",\n\t\tnow: \"Now\",\n\t\tdone: \"Done\"\n\t},\n\ttime: {\n\t\tam: \"AM\",\n\t\tpm: \"PM\"\n\t},\n\tpresets: {\n\t\ttoday: \"Today\",\n\t\tyesterday: \"Yesterday\",\n\t\ttomorrow: \"Tomorrow\",\n\t\tthisWeek: \"This week\",\n\t\tlastWeek: \"Last week\",\n\t\tlast7Days: \"Last 7 days\",\n\t\tlast30Days: \"Last 30 days\",\n\t\tthisMonth: \"This month\",\n\t\tlastMonth: \"Last month\",\n\t\tthisYear: \"This year\",\n\t\tthisFiscalYear: \"This fiscal year\",\n\t\tlastFiscalYear: \"Last fiscal year\"\n\t},\n\tmessages: {\n\t\tinvalidFormat: {\n\t\t\tAD: \"Enter an AD date as YYYY-MM-DD.\",\n\t\t\tBS: \"Enter a BS date as YYYY-MM-DD.\"\n\t\t},\n\t\toutOfRange: \"Choose a date from {min} to {max}.\",\n\t\tonOrAfter: \"Choose {min} or later.\",\n\t\tonOrBefore: \"Choose {max} or earlier.\",\n\t\tunavailable: \"This date is not available.\",\n\t\trangeTooShort: \"Choose at least {min} days.\",\n\t\trangeTooLong: \"Choose at most {max} days.\",\n\t\ttooManyDates: \"Choose at most {max} dates.\",\n\t\tinvalidTime: \"Enter a time as HH:MM.\"\n\t}\n};\n//#endregion\n//#region src/locale/ne.ts\nconst bsMonths = [\n\t\"बैशाख\",\n\t\"जेठ\",\n\t\"असार\",\n\t\"साउन\",\n\t\"भदौ\",\n\t\"असोज\",\n\t\"कार्तिक\",\n\t\"मङ्सिर\",\n\t\"पुस\",\n\t\"माघ\",\n\t\"फाल्गुण\",\n\t\"चैत\"\n];\nconst adMonths = [\n\t\"जनवरी\",\n\t\"फेब्रुअरी\",\n\t\"मार्च\",\n\t\"अप्रिल\",\n\t\"मे\",\n\t\"जुन\",\n\t\"जुलाई\",\n\t\"अगस्ट\",\n\t\"सेप्टेम्बर\",\n\t\"अक्टोबर\",\n\t\"नोभेम्बर\",\n\t\"डिसेम्बर\"\n];\n//#endregion\n//#region src/locale/registry.ts\nconst locales = /* @__PURE__ */ new Map([[\"en\", en], [\"ne\", {\n\tdigits: [\n\t\t\"०\",\n\t\t\"१\",\n\t\t\"२\",\n\t\t\"३\",\n\t\t\"४\",\n\t\t\"५\",\n\t\t\"६\",\n\t\t\"७\",\n\t\t\"८\",\n\t\t\"९\"\n\t],\n\tweekdays: {\n\t\tlong: [\n\t\t\t\"आइतबार\",\n\t\t\t\"सोमबार\",\n\t\t\t\"मङ्गलबार\",\n\t\t\t\"बुधबार\",\n\t\t\t\"बिहिबार\",\n\t\t\t\"शुक्रबार\",\n\t\t\t\"शनिबार\"\n\t\t],\n\t\tshort: [\n\t\t\t\"आइत\",\n\t\t\t\"सोम\",\n\t\t\t\"मङ्गल\",\n\t\t\t\"बुध\",\n\t\t\t\"बिही\",\n\t\t\t\"शुक्र\",\n\t\t\t\"शनि\"\n\t\t],\n\t\tnarrow: [\n\t\t\t\"आ\",\n\t\t\t\"सो\",\n\t\t\t\"मं\",\n\t\t\t\"बु\",\n\t\t\t\"बि\",\n\t\t\t\"शु\",\n\t\t\t\"श\"\n\t\t]\n\t},\n\tmonths: {\n\t\tAD: {\n\t\t\tlong: adMonths,\n\t\t\tshort: adMonths\n\t\t},\n\t\tBS: {\n\t\t\tlong: bsMonths,\n\t\t\tshort: bsMonths\n\t\t}\n\t},\n\tcalendarNames: {\n\t\tAD: \"ई.सं.\",\n\t\tBS: \"वि.सं.\"\n\t},\n\tlabels: {\n\t\ttoday: \"आज\",\n\t\tclear: \"मिति हटाउनुहोस्\",\n\t\tpreviousMonth: \"अघिल्लो महिना\",\n\t\tnextMonth: \"अर्को महिना\",\n\t\tpreviousYear: \"अघिल्लो वर्ष\",\n\t\tnextYear: \"अर्को वर्ष\",\n\t\tmonth: \"महिना\",\n\t\tyear: \"वर्ष\",\n\t\topenCalendar: \"पात्रो खोल्नुहोस्\",\n\t\tchooseDate: \"मिति छान्नुहोस्\",\n\t\tcalendar: \"पात्रो\",\n\t\tpresets: \"छिटो छनोट\",\n\t\tfiscalYear: \"आर्थिक वर्ष\",\n\t\ttime: \"समय\",\n\t\thour: \"घण्टा\",\n\t\tminute: \"मिनेट\",\n\t\tnow: \"अहिले\",\n\t\tdone: \"भयो\"\n\t},\n\ttime: {\n\t\tam: \"पूर्वाह्न\",\n\t\tpm: \"अपराह्न\"\n\t},\n\tpresets: {\n\t\ttoday: \"आज\",\n\t\tyesterday: \"हिजो\",\n\t\ttomorrow: \"भोलि\",\n\t\tthisWeek: \"यो हप्ता\",\n\t\tlastWeek: \"गत हप्ता\",\n\t\tlast7Days: \"पछिल्लो ७ दिन\",\n\t\tlast30Days: \"पछिल्लो ३० दिन\",\n\t\tthisMonth: \"यो महिना\",\n\t\tlastMonth: \"गत महिना\",\n\t\tthisYear: \"यो वर्ष\",\n\t\tthisFiscalYear: \"यो आर्थिक वर्ष\",\n\t\tlastFiscalYear: \"गत आर्थिक वर्ष\"\n\t},\n\tmessages: {\n\t\tinvalidFormat: {\n\t\t\tAD: \"ई.सं. मिति YYYY-MM-DD ढाँचामा लेख्नुहोस्।\",\n\t\t\tBS: \"वि.सं. मिति YYYY-MM-DD ढाँचामा लेख्नुहोस्।\"\n\t\t},\n\t\toutOfRange: \"{min} देखि {max} सम्मको मिति छान्नुहोस्।\",\n\t\tonOrAfter: \"{min} वा त्यसपछिको मिति छान्नुहोस्।\",\n\t\tonOrBefore: \"{max} वा त्यसअघिको मिति छान्नुहोस्।\",\n\t\tunavailable: \"यो मिति उपलब्ध छैन।\",\n\t\trangeTooShort: \"कम्तीमा {min} दिन छान्नुहोस्।\",\n\t\trangeTooLong: \"बढीमा {max} दिन छान्नुहोस्।\",\n\t\ttooManyDates: \"बढीमा {max} मिति छान्नुहोस्।\",\n\t\tinvalidTime: \"समय HH:MM ढाँचामा लेख्नुहोस्।\"\n\t}\n}]]);\n/** Add or replace a language. Lists must have the right lengths (10 digits, 7 weekdays, 12 months). */\nfunction registerLocale(code, data) {\n\tconst checks = [\n\t\t[\n\t\t\t\"digits\",\n\t\t\tdata.digits,\n\t\t\t10\n\t\t],\n\t\t[\n\t\t\t\"weekdays.long\",\n\t\t\tdata.weekdays.long,\n\t\t\t7\n\t\t],\n\t\t[\n\t\t\t\"weekdays.short\",\n\t\t\tdata.weekdays.short,\n\t\t\t7\n\t\t],\n\t\t[\n\t\t\t\"weekdays.narrow\",\n\t\t\tdata.weekdays.narrow,\n\t\t\t7\n\t\t],\n\t\t[\n\t\t\t\"months.AD.long\",\n\t\t\tdata.months.AD.long,\n\t\t\t12\n\t\t],\n\t\t[\n\t\t\t\"months.AD.short\",\n\t\t\tdata.months.AD.short,\n\t\t\t12\n\t\t],\n\t\t[\n\t\t\t\"months.BS.long\",\n\t\t\tdata.months.BS.long,\n\t\t\t12\n\t\t],\n\t\t[\n\t\t\t\"months.BS.short\",\n\t\t\tdata.months.BS.short,\n\t\t\t12\n\t\t]\n\t];\n\tfor (const [name, list, length] of checks) if (list.length !== length) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `Locale \"${code}\": ${name} must have ${length} entries, not ${list.length}.`);\n\tlocales.set(code, data);\n}\nfunction hasLocale(code) {\n\treturn locales.has(code);\n}\n/** The data for a locale, or English when the locale is not registered. */\nfunction localeData(code) {\n\treturn locales.get(code) ?? en;\n}\n//#endregion\n//#region src/config.ts\nconst DEFAULTS = Object.freeze({\n\ttimeZone: \"Asia/Kathmandu\",\n\tweekStartsOn: 0,\n\tweekendDays: Object.freeze([6]),\n\tdefaultLocale: \"en\"\n});\nlet current = DEFAULTS;\n/** Change one or more settings. Every value is checked before any is applied. */\nfunction configure(changes) {\n\tconst next = {\n\t\t...current,\n\t\t...changes\n\t};\n\tif (!isTimeZone(next.timeZone)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `\"${next.timeZone}\" is not a time zone.`);\n\tif (!isWeekday(next.weekStartsOn)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `weekStartsOn must be 0–6, not ${String(next.weekStartsOn)}.`);\n\tif (!next.weekendDays.every(isWeekday) || new Set(next.weekendDays).size !== next.weekendDays.length) throw new NepDateRangeError(\"INVALID_ARGUMENT\", \"weekendDays must be different weekdays, each 0–6.\");\n\tif (!hasLocale(next.defaultLocale)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `Locale \"${next.defaultLocale}\" is not registered.`);\n\tcurrent = Object.freeze({\n\t\t...next,\n\t\tweekendDays: Object.freeze([...next.weekendDays])\n\t});\n}\nfunction getConfig() {\n\treturn current;\n}\n/** Back to the defaults (Kathmandu, Sunday first, Saturday weekend, English). */\nfunction resetConfig() {\n\tcurrent = DEFAULTS;\n}\nfunction isWeekday(value) {\n\treturn Number.isInteger(value) && value >= 0 && value <= 6;\n}\nfunction isTimeZone(value) {\n\ttry {\n\t\tnew Intl.DateTimeFormat(\"en-US\", { timeZone: value });\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n//#endregion\n//#region src/ad/calendar.ts\n/**\n* The Gregorian (AD) calendar, by arithmetic only: no table, no BS knowledge,\n* no `Date`. Works for any year in ±MAX_AD_YEAR (docs/plan D-001).\n*\n* The day-count algorithms are Howard Hinnant's days_from_civil and\n* civil_from_days (proleptic Gregorian, March-based years).\n*/\n/** AD years must lie within ±this value. */\nconst MAX_AD_YEAR = 999999;\nconst DAYS_BEFORE_EPOCH = 719468;\nconst DAYS_PER_ERA = 146097;\nconst MONTH_DAYS = [\n\t31,\n\t28,\n\t31,\n\t30,\n\t31,\n\t30,\n\t31,\n\t31,\n\t30,\n\t31,\n\t30,\n\t31\n];\nfunction isAdLeapYear(year) {\n\treturn year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/** Days in an AD month. The month must be 1–12. */\nfunction adMonthLength(year, month) {\n\treturn month === 2 && isAdLeapYear(year) ? 29 : MONTH_DAYS[month - 1] ?? 0;\n}\nfunction isValidAdDate(year, month, day) {\n\treturn Number.isInteger(year) && Number.isInteger(month) && Number.isInteger(day) && Math.abs(year) <= 999999 && month >= 1 && month <= 12 && day >= 1 && day <= adMonthLength(year, month);\n}\n/** Days since 1970-01-01 of a valid AD date. */\nfunction adToEpoch(year, month, day) {\n\tconst y = month <= 2 ? year - 1 : year;\n\tconst era = Math.floor(y / 400);\n\tconst yearOfEra = y - era * 400;\n\tconst dayOfYear = Math.floor((153 * (month + (month > 2 ? -3 : 9)) + 2) / 5) + day - 1;\n\tconst dayOfEra = yearOfEra * 365 + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100) + dayOfYear;\n\treturn era * DAYS_PER_ERA + dayOfEra - DAYS_BEFORE_EPOCH;\n}\n/** The AD year, month and day of a day count. */\nfunction epochToAd(epoch) {\n\tconst z = epoch + DAYS_BEFORE_EPOCH;\n\tconst era = Math.floor(z / DAYS_PER_ERA);\n\tconst dayOfEra = z - era * DAYS_PER_ERA;\n\tconst yearOfEra = Math.floor((dayOfEra - Math.floor(dayOfEra / 1460) + Math.floor(dayOfEra / 36524) - Math.floor(dayOfEra / 146096)) / 365);\n\tconst dayOfYear = dayOfEra - (365 * yearOfEra + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100));\n\tconst shiftedMonth = Math.floor((5 * dayOfYear + 2) / 153);\n\tconst day = dayOfYear - Math.floor((153 * shiftedMonth + 2) / 5) + 1;\n\tconst month = shiftedMonth < 10 ? shiftedMonth + 3 : shiftedMonth - 9;\n\treturn {\n\t\tyear: yearOfEra + era * 400 + (month <= 2 ? 1 : 0),\n\t\tmonth,\n\t\tday\n\t};\n}\n//#endregion\n//#region src/bs/table.ts\n/**\n* The Bikram Sambat calendar, from its table only. Nothing here reads or\n* produces an AD year: BS dates map to and from day counts (EpochDay) through\n* `epochStart` and the month lengths (docs/plan D-001).\n*/\nlet data = freezeData(BS_DATA);\nlet table = null;\n/** Replace the data the table is built from. Callers validate first (data-api.ts). */\nfunction useBsData(next) {\n\tdata = freezeData(next);\n\ttable = null;\n}\nfunction freezeData(source) {\n\treturn Object.freeze({\n\t\tfirstYear: source.firstYear,\n\t\tepochStart: source.epochStart,\n\t\tverifiedThrough: source.verifiedThrough,\n\t\tyears: Object.freeze(source.years.map((months) => Object.freeze([...months])))\n\t});\n}\nfunction currentBsData() {\n\treturn data;\n}\nfunction buildTable() {\n\tconst count = data.years.length;\n\tconst yearStart = new Float64Array(count + 1);\n\tconst monthOffset = new Uint16Array(count * 12);\n\tlet start = data.epochStart;\n\tfor (let i = 0; i < count; i++) {\n\t\tyearStart[i] = start;\n\t\tconst months = data.years[i] ?? [];\n\t\tlet offset = 0;\n\t\tfor (let m = 0; m < 12; m++) {\n\t\t\tmonthOffset[i * 12 + m] = offset;\n\t\t\toffset += months[m] ?? 0;\n\t\t}\n\t\tstart += offset;\n\t}\n\tyearStart[count] = start;\n\treturn {\n\t\tdata,\n\t\tlastYear: data.firstYear + count - 1,\n\t\tyearStart,\n\t\tmonthOffset\n\t};\n}\nfunction bsTable() {\n\treturn table ?? (table = buildTable());\n}\nfunction bsFirstYear() {\n\treturn data.firstYear;\n}\nfunction bsLastYear() {\n\treturn bsTable().lastYear;\n}\n/** The first and last day counts the table covers. */\nfunction bsEpochRange() {\n\tconst { yearStart } = bsTable();\n\treturn {\n\t\tfirst: yearStart[0] ?? 0,\n\t\tlast: (yearStart[yearStart.length - 1] ?? 0) - 1\n\t};\n}\n/** Days in a BS month. Throws when the year is outside the table or the month is not 1–12. */\nfunction bsMonthLength(year, month) {\n\tconst { lastYear } = bsTable();\n\tif (!Number.isInteger(year) || year < data.firstYear || year > lastYear) throw new NepDateRangeError(\"OUT_OF_TABLE\", `BS year ${String(year)} is outside the supported range (BS ${data.firstYear}–${lastYear}).`);\n\tif (!Number.isInteger(month) || month < 1 || month > 12) throw new NepDateRangeError(\"INVALID_DATE\", `BS month ${String(month)} does not exist.`);\n\treturn data.years[year - data.firstYear]?.[month - 1] ?? 0;\n}\nfunction isValidBsDate(year, month, day) {\n\ttry {\n\t\treturn Number.isInteger(day) && day >= 1 && day <= bsMonthLength(year, month);\n\t} catch {\n\t\treturn false;\n\t}\n}\n/** Day count of a valid BS date. */\nfunction bsToEpoch(year, month, day) {\n\tconst { yearStart, monthOffset } = bsTable();\n\tconst index = year - data.firstYear;\n\treturn (yearStart[index] ?? 0) + (monthOffset[index * 12 + month - 1] ?? 0) + day - 1;\n}\n/** The BS year, month and day of a day count. Throws when it is outside the table. */\nfunction epochToBs(epoch) {\n\tconst { yearStart, monthOffset } = bsTable();\n\tconst { first, last } = bsEpochRange();\n\tif (epoch < first || epoch > last) throw new NepDateRangeError(\"OUT_OF_TABLE\", `Day ${epoch} is outside the BS table (BS ${data.firstYear}–${bsLastYear()}).`);\n\tlet low = 0;\n\tlet high = yearStart.length - 2;\n\twhile (low < high) {\n\t\tconst middle = Math.ceil((low + high) / 2);\n\t\tif ((yearStart[middle] ?? 0) <= epoch) low = middle;\n\t\telse high = middle - 1;\n\t}\n\tconst dayOfYear = epoch - (yearStart[low] ?? 0);\n\tlet month = 11;\n\twhile (month > 0 && (monthOffset[low * 12 + month] ?? 0) > dayOfYear) month--;\n\treturn {\n\t\tyear: data.firstYear + low,\n\t\tmonth: month + 1,\n\t\tday: dayOfYear - (monthOffset[low * 12 + month] ?? 0) + 1\n\t};\n}\n/** Whether a BS year is after the last year checked against a published calendar. */\nfunction isProjectedBsYear(year) {\n\treturn year > data.verifiedThrough;\n}\n//#endregion\n//#region src/bs/data-api.ts\n/** The first BS month of Nepal's fiscal year: Shrawan. */\nconst BS_FISCAL_YEAR_START_MONTH = 4;\n/** Days a verified year may have. Projected years may be off by one (the bundled BS 2096 lists 364). */\nconst VERIFIED_YEAR_DAYS = [365, 366];\nconst PROJECTED_YEAR_DAYS = [\n\t364,\n\t365,\n\t366,\n\t367\n];\n/** Throws NepDateDataError when the table is not usable. Same rules as scripts/gen-data.ts. */\nfunction validateBsData(table) {\n\tif (!Number.isSafeInteger(table.epochStart) || !Number.isInteger(table.firstYear)) throw new NepDateDataError(\"BAD_ANCHOR\", \"firstYear and epochStart must be whole numbers.\");\n\tif (!Number.isInteger(table.verifiedThrough)) throw new NepDateDataError(\"BAD_ANCHOR\", \"verifiedThrough must be a whole number.\");\n\tif (table.years.length === 0) throw new NepDateDataError(\"EMPTY\", \"The BS table has no years.\");\n\ttable.years.forEach((months, index) => {\n\t\tconst year = table.firstYear + index;\n\t\tif (months.length !== 12) throw new NepDateDataError(\"BAD_MONTH_COUNT\", `BS ${year} lists ${months.length} months, not 12.`, year);\n\t\tlet total = 0;\n\t\tmonths.forEach((days, m) => {\n\t\t\tif (!Number.isInteger(days) || days < 29 || days > 32) throw new NepDateDataError(\"BAD_MONTH\", `BS ${year} month ${m + 1} has ${String(days)} days; expected 29–32.`, year, m + 1);\n\t\t\ttotal += days;\n\t\t});\n\t\tconst allowed = year <= table.verifiedThrough ? VERIFIED_YEAR_DAYS : PROJECTED_YEAR_DAYS;\n\t\tif (!allowed.includes(total)) throw new NepDateDataError(\"BAD_YEAR_TOTAL\", `BS ${year} has ${total} days; expected ${allowed.join(\" or \")}.`, year);\n\t});\n}\n/** The BS table in use (frozen). */\nfunction getBsData() {\n\treturn currentBsData();\n}\n/** Replace the whole BS table. Only BS results change; AD functions are unaffected. */\nfunction setBsData(table) {\n\tvalidateBsData(table);\n\tuseBsData(table);\n}\n/**\n* Correct one year's month lengths, or add the year just before the first or\n* just after the last. Years after a corrected year move with it; earlier years\n* never move (adding a year before the first keeps every existing year in place).\n*/\nfunction patchBsYear(year, months) {\n\tconst table = currentBsData();\n\tconst lastYear = table.firstYear + table.years.length - 1;\n\tlet next;\n\tif (year >= table.firstYear && year <= lastYear) next = {\n\t\t...table,\n\t\tyears: table.years.map((row, index) => index === year - table.firstYear ? months : row)\n\t};\n\telse if (year === lastYear + 1) next = {\n\t\t...table,\n\t\tyears: [...table.years, months]\n\t};\n\telse if (year === table.firstYear - 1) {\n\t\tconst length = months.reduce((total, days) => total + days, 0);\n\t\tnext = {\n\t\t\t...table,\n\t\t\tfirstYear: year,\n\t\t\tepochStart: table.epochStart - length,\n\t\t\tyears: [months, ...table.years]\n\t\t};\n\t} else throw new NepDateRangeError(\"OUT_OF_TABLE\", `BS ${String(year)} is not in the table and does not extend it (BS ${table.firstYear}–${lastYear}).`);\n\tsetBsData(next);\n}\n/** Back to the table bundled with the package. */\nfunction resetBsData() {\n\tuseBsData(BS_DATA);\n}\n//#endregion\n//#region src/create.ts\n/** An AD date. Any year within ±999,999 is allowed; only conversion to BS is limited. */\nfunction adDate(year, month, day) {\n\tif (!isValidAdDate(year, month, day)) throw new NepDateRangeError(Number.isInteger(year) && Number.isInteger(month) && Number.isInteger(day) ? \"INVALID_DATE\" : \"INVALID_ARGUMENT\", Math.abs(year) > 999999 ? `AD year ${String(year)} is outside ±${MAX_AD_YEAR}.` : `AD ${String(year)}-${String(month)}-${String(day)} is not a valid date.`);\n\treturn Object.freeze({\n\t\tcalendar: \"AD\",\n\t\tyear,\n\t\tmonth,\n\t\tday\n\t});\n}\n/** A BS date. The year must be in the BS table. */\nfunction bsDate(year, month, day) {\n\tconst length = bsMonthLength(year, month);\n\tif (!Number.isInteger(day) || day < 1 || day > length) throw new NepDateRangeError(Number.isInteger(day) ? \"INVALID_DATE\" : \"INVALID_ARGUMENT\", `BS ${year}-${month} has ${length} days, not ${String(day)}.`);\n\treturn Object.freeze({\n\t\tcalendar: \"BS\",\n\t\tyear,\n\t\tmonth,\n\t\tday\n\t});\n}\nfunction createDate(calendar, year, month, day) {\n\treturn calendar === \"AD\" ? adDate(year, month, day) : bsDate(year, month, day);\n}\nfunction isValidDate(calendar, year, month, day) {\n\treturn calendar === \"AD\" ? isValidAdDate(year, month, day) : isValidBsDate(year, month, day);\n}\n/** Days in a month of either calendar. */\nfunction daysInMonth(calendar, year, month) {\n\tif (calendar === \"BS\") return bsMonthLength(year, month);\n\tif (!isValidAdDate(year, month, 1)) throw new NepDateRangeError(\"INVALID_DATE\", `AD ${String(year)}-${String(month)} is not a month.`);\n\treturn adMonthLength(year, month);\n}\n/** True for a valid, frozen-or-not AD date object (e.g. from JSON). */\nfunction isAdDate(value) {\n\treturn isDateLike(value, \"AD\") && isValidAdDate(value.year, value.month, value.day);\n}\n/** True for a valid BS date object (e.g. from JSON). */\nfunction isBsDate(value) {\n\treturn isDateLike(value, \"BS\") && isValidBsDate(value.year, value.month, value.day);\n}\nfunction isCalendarDate(value) {\n\treturn isAdDate(value) || isBsDate(value);\n}\nfunction isDateLike(value, calendar) {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tconst record = value;\n\treturn record[\"calendar\"] === calendar && typeof record[\"year\"] === \"number\" && typeof record[\"month\"] === \"number\" && typeof record[\"day\"] === \"number\";\n}\n//#endregion\n//#region src/convert.ts\n/**\n* The only place the AD and BS calendars meet, and only through EpochDay\n* (docs/plan D-001). Nothing here looks up a year number across calendars.\n*/\n/** The day count of a date in either calendar. */\nfunction toEpoch(date) {\n\treturn toEpochDay(date.calendar === \"AD\" ? adToEpoch(date.year, date.month, date.day) : bsToEpoch(date.year, date.month, date.day));\n}\n/** The date of a day count in a calendar. BS throws OUT_OF_TABLE outside the table. */\nfunction fromEpoch(epoch, calendar) {\n\tif (calendar === \"AD\") {\n\t\tconst { year, month, day } = epochToAd(epoch);\n\t\treturn adDate(year, month, day);\n\t}\n\tassertConvertible(epoch);\n\tconst { year, month, day } = epochToBs(epoch);\n\treturn bsDate(year, month, day);\n}\nfunction adToBs(date) {\n\treturn fromEpoch(toEpoch(date), \"BS\");\n}\nfunction bsToAd(date) {\n\treturn fromEpoch(toEpoch(date), \"AD\");\n}\n/** The same day in the given calendar (the date itself when it is already in it). */\nfunction toCalendar(date, calendar) {\n\tif (date.calendar === calendar) return date;\n\treturn fromEpoch(toEpoch(date), calendar);\n}\n/** The first day that can be converted, in either calendar (the start of the BS table). */\nfunction minDate(calendar) {\n\treturn fromEpoch(toEpochDay(bsEpochRange().first), calendar);\n}\n/** The last day that can be converted, in either calendar (the end of the BS table). */\nfunction maxDate(calendar) {\n\treturn fromEpoch(toEpochDay(bsEpochRange().last), calendar);\n}\n/** Whether a date can be converted to the other calendar. */\nfunction isConvertible(date) {\n\tconst epoch = toEpoch(date);\n\tconst { first, last } = bsEpochRange();\n\treturn epoch >= first && epoch <= last;\n}\n/** The AD day as \"YYYY-MM-DD\", the form to store and send (docs/plan D-003). */\nfunction toIsoDate(date) {\n\tconst { year, month, day } = toCalendar(date, \"AD\");\n\tif (year < 0 || year > 9999) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `AD year ${year} cannot be written as YYYY-MM-DD.`);\n\treturn `${pad(year, 4)}-${pad(month, 2)}-${pad(day, 2)}`;\n}\n/**\n* An AD date from \"YYYY-MM-DD\", or from a longer ISO timestamp by its date part\n* (\"2026-10-18T09:30:00Z\" → 2026-10-18). Null for anything else.\n*/\nfunction fromIsoDate(value) {\n\tconst match = /^(\\d{4})-(\\d{2})-(\\d{2})(?:$|[T ])/.exec(value ?? \"\");\n\tif (!match) return null;\n\ttry {\n\t\treturn adDate(Number(match[1]), Number(match[2]), Number(match[3]));\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** The AD calendar day an instant falls on in a time zone (Nepal by default). */\nfunction fromJsDate(instant, timeZone = getConfig().timeZone) {\n\tif (Number.isNaN(instant.getTime())) throw new NepDateRangeError(\"INVALID_ARGUMENT\", \"The Date is invalid.\");\n\tlet parts;\n\ttry {\n\t\tparts = new Intl.DateTimeFormat(\"en-US\", {\n\t\t\ttimeZone,\n\t\t\tyear: \"numeric\",\n\t\t\tmonth: \"numeric\",\n\t\t\tday: \"numeric\",\n\t\t\tera: \"short\"\n\t\t}).formatToParts(instant);\n\t} catch {\n\t\tthrow new NepDateRangeError(\"INVALID_ARGUMENT\", `\"${timeZone}\" is not a time zone.`);\n\t}\n\tconst part = (type) => parts.find((item) => item.type === type)?.value ?? \"\";\n\tconst year = Number(part(\"year\"));\n\treturn adDate(part(\"era\") === \"BC\" ? 1 - year : year, Number(part(\"month\")), Number(part(\"day\")));\n}\n/**\n* The calendar day and time of an ISO timestamp *with a zone* (\"…Z\",\n* \"…+05:45\"), read in `timeZone` (Nepal by default). Null for anything else,\n* including plain dates, which have no instant.\n*/\nfunction fromIsoTimestamp(value, timeZone = getConfig().timeZone) {\n\tif (!value || !/T.*(?:Z|[+-]\\d{2}:?\\d{2})$/.test(value)) return null;\n\tconst instant = new Date(value);\n\tif (Number.isNaN(instant.getTime())) return null;\n\tconst time = new Intl.DateTimeFormat(\"en-GB\", {\n\t\ttimeZone,\n\t\thour: \"2-digit\",\n\t\tminute: \"2-digit\",\n\t\thourCycle: \"h23\"\n\t}).format(instant);\n\treturn {\n\t\tdate: fromJsDate(instant, timeZone),\n\t\ttime\n\t};\n}\nfunction assertConvertible(epoch) {\n\tconst { first, last } = bsEpochRange();\n\tif (epoch < first || epoch > last) {\n\t\tconst { year, month, day } = epochToAd(epoch);\n\t\tconst from = epochToAd(first);\n\t\tconst to = epochToAd(last);\n\t\tthrow new NepDateRangeError(\"OUT_OF_TABLE\", `AD ${isoParts(year, month, day)} is outside the BS table (AD ${isoParts(from.year, from.month, from.day)} to ${isoParts(to.year, to.month, to.day)}).`);\n\t}\n}\nfunction isoParts(year, month, day) {\n\treturn `${year}-${pad(month, 2)}-${pad(day, 2)}`;\n}\nfunction pad(value, length) {\n\treturn String(value).padStart(length, \"0\");\n}\n//#endregion\n//#region src/projected.ts\n/** Whether the date's BS year is after the last year checked against a published calendar. */\nfunction isProjected(date) {\n\treturn isProjectedBsYear(toCalendar(date, \"BS\").year);\n}\n//#endregion\n//#region src/clock.ts\nfunction today(calendar = \"AD\", timeZone = getConfig().timeZone) {\n\treturn toCalendar(fromJsDate(/* @__PURE__ */ new Date(), timeZone), calendar);\n}\n/** The current calendar day and time (HH:MM) in `timeZone` (Nepal by default). */\nfunction now(timeZone = getConfig().timeZone) {\n\tconst current = fromIsoTimestamp((/* @__PURE__ */ new Date()).toISOString(), timeZone);\n\tconst [hour = 0, minute = 0] = (current?.time ?? \"00:00\").split(\":\").map(Number);\n\treturn {\n\t\tdate: current?.date ?? fromJsDate(/* @__PURE__ */ new Date(), timeZone),\n\t\ttime: Object.freeze({\n\t\t\thour,\n\t\t\tminute\n\t\t})\n\t};\n}\n//#endregion\n//#region src/arithmetic.ts\nfunction addDays(date, days) {\n\tassertInteger(days, \"days\");\n\treturn fromEpoch(toEpochDay(toEpoch(date) + days), date.calendar);\n}\n/** Move by whole months in the date's own calendar; the day is capped to the new month's length. */\nfunction addMonths(date, months) {\n\tassertInteger(months, \"months\");\n\tconst index = date.year * 12 + (date.month - 1) + months;\n\tconst year = Math.floor(index / 12);\n\tconst month = index - year * 12 + 1;\n\tconst day = Math.min(date.day, daysInMonth(date.calendar, year, month));\n\treturn createDate(date.calendar, year, month, day);\n}\n/** Move by whole years in the date's own calendar; the day is capped (29 Feb, short BS months). */\nfunction addYears(date, years) {\n\tassertInteger(years, \"years\");\n\treturn addMonths(date, years * 12);\n}\nfunction startOfMonth(date) {\n\treturn createDate(date.calendar, date.year, date.month, 1);\n}\nfunction endOfMonth(date) {\n\treturn createDate(date.calendar, date.year, date.month, daysInMonth(date.calendar, date.year, date.month));\n}\nfunction startOfYear(date) {\n\treturn createDate(date.calendar, date.year, 1, 1);\n}\nfunction endOfYear(date) {\n\treturn createDate(date.calendar, date.year, 12, daysInMonth(date.calendar, date.year, 12));\n}\nfunction startOfWeek(date, weekStartsOn = getConfig().weekStartsOn) {\n\tassertWeekday(weekStartsOn);\n\treturn addDays(date, -((weekdayOf(toEpoch(date)) - weekStartsOn + 7) % 7));\n}\nfunction endOfWeek(date, weekStartsOn = getConfig().weekStartsOn) {\n\treturn addDays(startOfWeek(date, weekStartsOn), 6);\n}\n/** Whole days from `b` to `a` (positive when `a` is later). The calendars may differ. */\nfunction differenceInDays(a, b) {\n\treturn toEpoch(a) - toEpoch(b);\n}\n/** Every day from `start` to `end` inclusive, in `start`'s calendar. Nothing when end < start. */\nfunction* eachDayOfInterval(start, end) {\n\tconst last = toEpoch(end);\n\tfor (let epoch = toEpoch(start); epoch <= last; epoch++) yield fromEpoch(toEpochDay(epoch), start.calendar);\n}\n/** Every day of the month the date is in. */\nfunction eachDayOfMonth(date) {\n\treturn [...eachDayOfInterval(startOfMonth(date), endOfMonth(date))];\n}\n/** The date converted to `target`'s calendar; a small helper used by compare and fiscal code. */\nfunction inCalendarOf(target, date) {\n\treturn toCalendar(date, target.calendar);\n}\nfunction assertInteger(value, name) {\n\tif (!Number.isSafeInteger(value)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `${name} must be a whole number, not ${String(value)}.`);\n}\nfunction assertWeekday(value) {\n\tif (!isWeekday(value)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `${String(value)} is not a weekday (0–6).`);\n}\n//#endregion\n//#region src/compare.ts\n/** -1, 0 or 1. Dates in different calendars compare by the day they fall on. */\nfunction compareDates(a, b) {\n\treturn Math.sign(toEpoch(a) - toEpoch(b));\n}\n/** Same day, in any calendars. False when either is missing. */\nfunction isSameDay(a, b) {\n\treturn a != null && b != null && toEpoch(a) === toEpoch(b);\n}\n/** Whether `b` falls in the same month as `a`, judged in `a`'s calendar. */\nfunction isSameMonth(a, b) {\n\tconst other = inCalendarOf(a, b);\n\treturn other.year === a.year && other.month === a.month;\n}\n/** Whether `b` falls in the same year as `a`, judged in `a`'s calendar. */\nfunction isSameYear(a, b) {\n\treturn inCalendarOf(a, b).year === a.year;\n}\nfunction isBefore(a, b) {\n\treturn toEpoch(a) < toEpoch(b);\n}\nfunction isAfter(a, b) {\n\treturn toEpoch(a) > toEpoch(b);\n}\n/** On or after `min` and on or before `max`; a missing bound is open. */\nfunction isWithin(date, min, max) {\n\tconst day = toEpoch(date);\n\treturn (min == null || day >= toEpoch(min)) && (max == null || day <= toEpoch(max));\n}\n/** The date, or the nearest bound when it is outside, in the date's calendar. */\nfunction clampDate(date, min, max) {\n\tif (min != null && isBefore(date, min)) return toCalendar(min, date.calendar);\n\tif (max != null && isAfter(date, max)) return toCalendar(max, date.calendar);\n\treturn date;\n}\n/** 0 = Sunday … 6 = Saturday. The same in both calendars. */\nfunction dayOfWeek(date) {\n\treturn weekdayOf(toEpoch(date));\n}\n/** Saturday by default (Nepal); set `weekendDays` in configure() or pass them here. */\nfunction isWeekend(date, weekendDays = getConfig().weekendDays) {\n\treturn weekendDays.includes(dayOfWeek(date));\n}\n//#endregion\n//#region src/locale/index.ts\nconst DEVANAGARI = [\n\t\"०\",\n\t\"१\",\n\t\"२\",\n\t\"३\",\n\t\"४\",\n\t\"५\",\n\t\"६\",\n\t\"७\",\n\t\"८\",\n\t\"९\"\n];\n/** The data for a locale (the configured default when omitted; English when unknown). */\nfunction getLocale(locale = getConfig().defaultLocale) {\n\treturn localeData(locale);\n}\nfunction monthNames(calendar, locale, width = \"long\") {\n\treturn getLocale(locale).months[calendar][width];\n}\nfunction weekdayNames(locale, width = \"long\") {\n\treturn getLocale(locale).weekdays[width];\n}\n/** Replace Devanagari digits with ASCII digits. */\nfunction toAsciiDigits(value) {\n\treturn value.replace(/[०-९]/g, (digit) => String(DEVANAGARI.indexOf(digit)));\n}\n/** Replace ASCII digits with Devanagari digits. */\nfunction toDevanagariDigits(value) {\n\treturn String(value).replace(/[0-9]/g, (digit) => DEVANAGARI[Number(digit)] ?? digit);\n}\n/** Write a number (or digit string) with the locale's digits. */\nfunction formatNumber(value, locale) {\n\tconst { digits } = getLocale(locale);\n\treturn String(value).replace(/[0-9]/g, (digit) => digits[Number(digit)] ?? digit);\n}\n/** Fill {name} placeholders in a locale message. */\nfunction formatMessage(template, values) {\n\treturn template.replace(/\\{(\\w+)\\}/g, (whole, name) => values[name] ?? whole);\n}\n//#endregion\n//#region src/format.ts\n/** Named formats. `cbms` is the dotted form Nepal's tax system uses. */\nconst DATE_FORMATS = Object.freeze({\n\tiso: \"Y-m-d\",\n\tcbms: \"Y.m.d\",\n\tshort: \"j M Y\",\n\tlong: \"j F Y\",\n\tfull: \"l, j F Y\"\n});\n/**\n* Format a date in its own calendar. Tokens: Y 2083, y 83, m 06, n 6, d 09,\n* j 9, F month name, M short month name, l weekday, D short weekday. Put a\n* backslash before a letter to print it as is. Digits follow the locale.\n*\n* formatDate(bsDate(2082, 4, 1), 'full') → \"Thursday, 1 Shrawan 2082\"\n* formatDate(bsDate(2082, 4, 1), 'long', 'ne') → \"१ साउन २०८२\"\n*/\nfunction formatDate(date, pattern = \"iso\", locale) {\n\tconst tokens = pattern in DATE_FORMATS ? DATE_FORMATS[pattern] : pattern;\n\tconst data = getLocale(locale);\n\tconst months = data.months[date.calendar];\n\tconst digits = (value) => formatNumber(value, locale);\n\tconst pad = (value) => String(value).padStart(2, \"0\");\n\tlet output = \"\";\n\tfor (let index = 0; index < tokens.length; index++) {\n\t\tconst token = tokens.charAt(index);\n\t\tswitch (token) {\n\t\t\tcase \"\\\\\":\n\t\t\t\tindex++;\n\t\t\t\toutput += tokens.charAt(index);\n\t\t\t\tbreak;\n\t\t\tcase \"Y\":\n\t\t\t\toutput += digits(date.year);\n\t\t\t\tbreak;\n\t\t\tcase \"y\":\n\t\t\t\toutput += digits(pad((date.year % 100 + 100) % 100));\n\t\t\t\tbreak;\n\t\t\tcase \"m\":\n\t\t\t\toutput += digits(pad(date.month));\n\t\t\t\tbreak;\n\t\t\tcase \"n\":\n\t\t\t\toutput += digits(date.month);\n\t\t\t\tbreak;\n\t\t\tcase \"d\":\n\t\t\t\toutput += digits(pad(date.day));\n\t\t\t\tbreak;\n\t\t\tcase \"j\":\n\t\t\t\toutput += digits(date.day);\n\t\t\t\tbreak;\n\t\t\tcase \"F\":\n\t\t\t\toutput += months.long[date.month - 1] ?? \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"M\":\n\t\t\t\toutput += months.short[date.month - 1] ?? \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"l\":\n\t\t\t\toutput += data.weekdays.long[dayOfWeek(date)] ?? \"\";\n\t\t\t\tbreak;\n\t\t\tcase \"D\":\n\t\t\t\toutput += data.weekdays.short[dayOfWeek(date)] ?? \"\";\n\t\t\t\tbreak;\n\t\t\tdefault: output += token;\n\t\t}\n\t}\n\treturn output;\n}\n//#endregion\n//#region src/fiscal.ts\n/** The fiscal year a date falls in: 1 Shrawan to the end of Asar. */\nfunction fiscalYear(date) {\n\tconst bs = toCalendar(date, \"BS\");\n\treturn fiscalYearRange(bs.month >= 4 ? bs.year : bs.year - 1);\n}\n/** The fiscal year that starts in BS `startYear` (2083 → FY 2083/84). */\nfunction fiscalYearRange(startYear) {\n\tconst endYear = startYear + 1;\n\tconst lastMonth = 3;\n\treturn Object.freeze({\n\t\tstartYear,\n\t\tlabel: `${startYear}/${String(endYear % 100).padStart(2, \"0\")}`,\n\t\tfirstDay: bsDate(startYear, 4, 1),\n\t\tlastDay: bsDate(endYear, lastMonth, daysInMonth(\"BS\", endYear, lastMonth))\n\t});\n}\n/**\n* label \"2083/84\" · full \"2083/2084\" · cbms \"2083.084\" (the form Nepal's tax\n* system uses). Digits follow the locale.\n*/\nfunction formatFiscalYear(fy, style = \"label\", locale) {\n\tconst end = fy.startYear + 1;\n\treturn formatNumber(style === \"full\" ? `${fy.startYear}/${end}` : style === \"cbms\" ? `${fy.startYear}.${String(end % 1e3).padStart(3, \"0\")}` : fy.label, locale);\n}\nfunction isInFiscalYear(date, fy) {\n\treturn compareDates(date, fy.firstDay) >= 0 && compareDates(date, fy.lastDay) <= 0;\n}\n//#endregion\n//#region src/parse.ts\nconst YEAR_FIRST = /^(\\d{4})[-./](\\d{1,2})[-./](\\d{1,2})$/;\nconst COMPACT = /^(\\d{4})(\\d{2})(\\d{2})$/;\n/**\n* A date written year first (\"2083-06-24\", \"2083/6/24\", \"2083.06.24\", or\n* compact \"20830624\") in ASCII or Devanagari digits, in the calendar the caller names. Other orders are\n* rejected, not guessed. Returns null when the text is not a valid date.\n*/\nfunction parseDate(text, calendar) {\n\ttry {\n\t\treturn parseDateStrict(text ?? \"\", calendar);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Like parseDate, but throws a NepDateRangeError that says what is wrong. */\nfunction parseDateStrict(text, calendar) {\n\tconst ascii = toAsciiDigits(text).trim();\n\tconst match = YEAR_FIRST.exec(ascii) ?? COMPACT.exec(ascii);\n\tif (!match) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `\"${text}\" is not a date written as YYYY-MM-DD.`);\n\treturn createDate(calendar, Number(match[1]), Number(match[2]), Number(match[3]));\n}\n/**\n* A fiscal year from its label: \"2083/84\", \"2083/2084\", \"2083-84\" or the\n* tax form \"2083.084\", in ASCII or Devanagari digits. Null when not valid.\n*/\nfunction parseFiscalYear(text) {\n\tconst match = /^(\\d{4})\\s*[-/.]\\s*(\\d{2,4})$/.exec(toAsciiDigits(text ?? \"\").trim());\n\tif (!match) return null;\n\tconst start = Number(match[1]);\n\tconst end = match[2] ?? \"\";\n\tconst next = start + 1;\n\tif (end !== (end.length === 4 ? String(next) : String(next % 10 ** end.length).padStart(end.length, \"0\"))) return null;\n\ttry {\n\t\treturn fiscalYearRange(start);\n\t} catch {\n\t\treturn null;\n\t}\n}\n//#endregion\n//#region src/time.ts\nfunction timeOfDay(hour, minute = 0) {\n\tif (!isValidTime(hour, minute)) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `${String(hour)}:${String(minute)} is not a time of day.`);\n\treturn Object.freeze({\n\t\thour,\n\t\tminute\n\t});\n}\nfunction isValidTime(hour, minute) {\n\treturn Number.isInteger(hour) && Number.isInteger(minute) && hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59;\n}\n/** -1, 0 or 1. */\nfunction compareTimes(a, b) {\n\treturn Math.sign(a.hour * 60 + a.minute - (b.hour * 60 + b.minute));\n}\n/**\n* \"14:30\", \"2:30 pm\", \"2 PM\", \"1430\", \"१४:३०\", \"२:३० अपराह्न\" → TimeOfDay.\n* Null when the text is not a time.\n*/\nfunction parseTime(text) {\n\tlet value = toAsciiDigits(text ?? \"\").trim().toLowerCase();\n\tlet meridiem = null;\n\tfor (const code of [\"en\", \"ne\"]) {\n\t\tconst { am, pm } = getLocale(code).time;\n\t\tfor (const [word, kind] of [\n\t\t\t[am.toLowerCase(), \"am\"],\n\t\t\t[pm.toLowerCase(), \"pm\"],\n\t\t\t[am.toLowerCase().replace(/(.)/g, \"$1.\"), \"am\"],\n\t\t\t[pm.toLowerCase().replace(/(.)/g, \"$1.\"), \"pm\"]\n\t\t]) if (value.endsWith(word)) {\n\t\t\tmeridiem = kind;\n\t\t\tvalue = value.slice(0, -word.length).trim();\n\t\t\tbreak;\n\t\t}\n\t\tif (meridiem) break;\n\t}\n\tconst match = /^(\\d{1,2})(?:[:.](\\d{2}))?$/.exec(value) ?? /^(\\d{2})(\\d{2})$/.exec(value);\n\tif (!match) return null;\n\tlet hour = Number(match[1]);\n\tconst minute = Number(match[2] ?? 0);\n\tif (meridiem) {\n\t\tif (hour < 1 || hour > 12) return null;\n\t\thour = hour % 12 + (meridiem === \"pm\" ? 12 : 0);\n\t}\n\treturn isValidTime(hour, minute) ? timeOfDay(hour, minute) : null;\n}\n/** \"14:30\" (24-hour) or \"2:30 PM\" (hour12), in the locale's digits and words. */\nfunction formatTime(time, options = {}) {\n\tconst minute = String(time.minute).padStart(2, \"0\");\n\tif (!options.hour12) return formatNumber(`${String(time.hour).padStart(2, \"0\")}:${minute}`, options.locale);\n\tconst { am, pm } = getLocale(options.locale).time;\n\treturn `${formatNumber(`${time.hour % 12 === 0 ? 12 : time.hour % 12}:${minute}`, options.locale)} ${time.hour < 12 ? am : pm}`;\n}\n/**\n* The instant of a calendar day and time in a zone (Nepal by default), as an\n* ISO timestamp with that zone's offset: \"2026-10-18T14:30:00+05:45\".\n*/\nfunction toIsoDateTime(date, time, timeZone = getConfig().timeZone) {\n\tconst { year, month, day } = toCalendar(date, \"AD\");\n\tif (year < 0 || year > 9999) throw new NepDateRangeError(\"INVALID_ARGUMENT\", `AD year ${year} cannot be written in ISO form.`);\n\tconst wall = Date.UTC(year, month - 1, day, time.hour, time.minute);\n\tconst offset = offsetMinutes(wall - offsetMinutes(wall, timeZone) * 6e4, timeZone);\n\tconst sign = offset < 0 ? \"-\" : \"+\";\n\tconst abs = Math.abs(offset);\n\tconst pad = (value, length = 2) => String(value).padStart(length, \"0\");\n\treturn `${pad(year, 4)}-${pad(month)}-${pad(day)}T${pad(time.hour)}:${pad(time.minute)}:00${sign}${pad(Math.floor(abs / 60))}:${pad(abs % 60)}`;\n}\n/**\n* The day and time of an ISO timestamp in a zone (Nepal by default). A value\n* without an offset (\"2026-10-18T14:30\", as from <input type=\"datetime-local\">)\n* is read as a wall time already in that zone. Null for anything else.\n*/\nfunction fromIsoDateTime(value, timeZone = getConfig().timeZone) {\n\tconst zoned = fromIsoTimestamp(value, timeZone);\n\tif (zoned) {\n\t\tconst time = parseTime(zoned.time);\n\t\treturn time ? {\n\t\t\tdate: zoned.date,\n\t\t\ttime\n\t\t} : null;\n\t}\n\tconst local = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::\\d{2}(?:\\.\\d+)?)?$/.exec(value ?? \"\");\n\tif (!local) return null;\n\ttry {\n\t\treturn {\n\t\t\tdate: adDate(Number(local[1]), Number(local[2]), Number(local[3])),\n\t\t\ttime: timeOfDay(Number(local[4]), Number(local[5]))\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Minutes the zone is ahead of UTC at an instant. */\nfunction offsetMinutes(instant, timeZone) {\n\tlet parts;\n\ttry {\n\t\tparts = new Intl.DateTimeFormat(\"en-US\", {\n\t\t\ttimeZone,\n\t\t\thourCycle: \"h23\",\n\t\t\tyear: \"numeric\",\n\t\t\tmonth: \"numeric\",\n\t\t\tday: \"numeric\",\n\t\t\thour: \"numeric\",\n\t\t\tminute: \"numeric\"\n\t\t}).formatToParts(new Date(instant));\n\t} catch {\n\t\tthrow new NepDateRangeError(\"INVALID_ARGUMENT\", `\"${timeZone}\" is not a time zone.`);\n\t}\n\tconst part = (type) => Number(parts.find((item) => item.type === type)?.value ?? 0);\n\tconst wall = Date.UTC(part(\"year\"), part(\"month\") - 1, part(\"day\"), part(\"hour\"), part(\"minute\"));\n\treturn Math.round((wall - Math.floor(instant / 6e4) * 6e4) / 6e4);\n}\n//#endregion\nexport { BS_FISCAL_YEAR_START_MONTH, DATE_FORMATS, MAX_AD_YEAR, NepDateDataError, NepDateRangeError, adDate, adToBs, addDays, addMonths, addYears, bsDate, bsFirstYear, bsLastYear, bsToAd, clampDate, compareDates, compareTimes, configure, createDate, dayOfWeek, daysInMonth, differenceInDays, eachDayOfInterval, eachDayOfMonth, endOfMonth, endOfWeek, endOfYear, fiscalYear, fiscalYearRange, formatDate, formatFiscalYear, formatMessage, formatNumber, formatTime, fromEpoch, fromIsoDate, fromIsoDateTime, fromIsoTimestamp, fromJsDate, getBsData, getConfig, getLocale, hasLocale, isAdDate, isAdLeapYear, isAfter, isBefore, isBsDate, isCalendarDate, isConvertible, isInFiscalYear, isProjected, isSameDay, isSameMonth, isSameYear, isValidDate, isValidTime, isWeekend, isWithin, maxDate, minDate, monthNames, now, parseDate, parseDateStrict, parseFiscalYear, parseTime, patchBsYear, registerLocale, resetBsData, resetConfig, setBsData, startOfMonth, startOfWeek, startOfYear, timeOfDay, toAsciiDigits, toCalendar, toDevanagariDigits, toEpoch, toEpochDay, toIsoDate, toIsoDateTime, today, validateBsData, weekdayNames, weekdayOf };\n\n//# sourceMappingURL=index.js.map","import { addDays, addMonths, addYears, clampDate, compareDates, createDate, dayOfWeek, daysInMonth, endOfMonth, endOfWeek, endOfYear, fiscalYear, fiscalYearRange, formatDate, formatFiscalYear, formatNumber, fromEpoch, getConfig, getLocale, isAfter, isBefore, isSameDay, isSameMonth, isValidDate, isWithin, maxDate, minDate, monthNames, startOfMonth, startOfWeek, startOfYear, toCalendar, toEpoch, toEpochDay, today } from \"@nepdatejs/core\";\n//#region src/focus.ts\nconst FORWARD = /* @__PURE__ */ new Set([\n\t\"ArrowRight\",\n\t\"ArrowDown\",\n\t\"End\",\n\t\"PageDown\"\n]);\n/**\n* The day a key moves focus to. Never throws: a move past min/max or the end\n* of the BS table lands on the nearest allowed day (docs/plan CAL-009, CAL-010).\n*/\nfunction nextFocus(focused, key, limits, options) {\n\tconst months = options.shift ? 12 : 1;\n\tlet target;\n\ttry {\n\t\tswitch (key) {\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\ttarget = addDays(focused, -1);\n\t\t\t\tbreak;\n\t\t\tcase \"ArrowRight\":\n\t\t\t\ttarget = addDays(focused, 1);\n\t\t\t\tbreak;\n\t\t\tcase \"ArrowUp\":\n\t\t\t\ttarget = addDays(focused, -7);\n\t\t\t\tbreak;\n\t\t\tcase \"ArrowDown\":\n\t\t\t\ttarget = addDays(focused, 7);\n\t\t\t\tbreak;\n\t\t\tcase \"Home\":\n\t\t\t\ttarget = startOfWeek(focused, options.weekStartsOn);\n\t\t\t\tbreak;\n\t\t\tcase \"End\":\n\t\t\t\ttarget = endOfWeek(focused, options.weekStartsOn);\n\t\t\t\tbreak;\n\t\t\tcase \"PageUp\":\n\t\t\t\ttarget = addMonths(focused, -months);\n\t\t\t\tbreak;\n\t\t\tcase \"PageDown\": target = addMonths(focused, months);\n\t\t}\n\t} catch {\n\t\ttarget = FORWARD.has(key) ? limits.highDay : limits.lowDay;\n\t}\n\treturn clampDate(target, limits.lowDay, limits.highDay);\n}\n//#endregion\n//#region src/limits.ts\n/**\n* The intersection of min/max with the range core can convert. Only whole\n* months are offered: the AD side of the BS table starts and ends mid-month\n* (docs/plan CAL-013).\n*/\nfunction computeLimits(calendar, min, max) {\n\tconst tableLow = firstWholeMonthDay(calendar);\n\tconst tableHigh = lastWholeMonthDay(calendar);\n\tlet empty = false;\n\tlet lowDay = tableLow;\n\tif (min != null && isAfter(min, tableLow)) {\n\t\tif (isAfter(min, tableHigh)) empty = true;\n\t\telse lowDay = toCalendar(min, calendar);\n\t}\n\tlet highDay = tableHigh;\n\tif (max != null && isAfter(tableHigh, max)) {\n\t\tif (isAfter(tableLow, max)) empty = true;\n\t\telse highDay = toCalendar(max, calendar);\n\t}\n\tif (empty || isAfter(lowDay, highDay)) {\n\t\tempty = true;\n\t\thighDay = lowDay;\n\t}\n\treturn {\n\t\tcalendar,\n\t\tlowDay,\n\t\thighDay,\n\t\tlowMonth: startOfMonth(lowDay),\n\t\thighMonth: startOfMonth(highDay),\n\t\tempty\n\t};\n}\n/** Whether a day may be selected under these limits. */\nfunction isInLimits(date, limits) {\n\treturn !limits.empty && isWithin(date, limits.lowDay, limits.highDay);\n}\nfunction firstWholeMonthDay(calendar) {\n\tconst first = minDate(calendar);\n\treturn first.day === 1 ? first : startOfMonth(addMonths(first, 1));\n}\nfunction lastWholeMonthDay(calendar) {\n\tconst last = maxDate(calendar);\n\treturn last.day === daysInMonth(calendar, last.year, last.month) ? last : addDays(startOfMonth(last), -1);\n}\n//#endregion\n//#region src/grid.ts\nconst NO_EVENTS = Object.freeze([]);\n/** The rows of a month view. Pure: the same input always gives the same cells. */\nfunction buildMonthGrid(input) {\n\tconst { calendar, month, locale } = input;\n\tconst other = calendar === \"BS\" ? \"AD\" : \"BS\";\n\tconst first = startOfMonth(month);\n\tconst firstEpoch = toEpoch(first);\n\tconst length = daysInMonth(calendar, month.year, month.month);\n\tconst lead = (dayOfWeek(first) - input.weekStartsOn + 7) % 7;\n\tconst rows = input.fixedWeeks ? 6 : Math.ceil((lead + length) / 7);\n\tconst names = getLocale(locale).calendarNames;\n\tconst todayEpoch = toEpoch(input.today);\n\tconst focusEpoch = input.focusTarget ? toEpoch(input.focusTarget) : null;\n\tconst { singleEpoch, startEpoch, endEpoch, many } = selectionEpochs(input.selectionMode, input.selected);\n\tconst hoverEpoch = input.selectionMode === \"range\" && startEpoch !== null && endEpoch === null && input.rangeHover ? toEpoch(input.rangeHover) : null;\n\tconst previewLow = hoverEpoch === null || startEpoch === null ? null : Math.min(startEpoch, hoverEpoch);\n\tconst previewHigh = hoverEpoch === null || startEpoch === null ? null : Math.max(startEpoch, hoverEpoch);\n\tconst weeks = [];\n\tfor (let row = 0; row < rows; row++) {\n\t\tconst week = [];\n\t\tfor (let column = 0; column < 7; column++) {\n\t\t\tconst index = row * 7 + column;\n\t\t\tconst isOutside = index < lead || index >= lead + length;\n\t\t\tconst epoch = toEpochDay(firstEpoch - lead + index);\n\t\t\tconst date = isOutside && !input.showOutsideDays ? null : safeFromEpoch(epoch, calendar);\n\t\t\tif (!date) {\n\t\t\t\tweek.push(null);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst otherDate = input.showOtherCalendar ? safeFromEpoch(epoch, other) : null;\n\t\t\tconst weekday = dayOfWeek(date);\n\t\t\tconst isToday = epoch === todayEpoch;\n\t\t\tconst isRangeStart = startEpoch === epoch;\n\t\t\tconst isRangeEnd = endEpoch !== null && endEpoch === epoch && endEpoch !== startEpoch;\n\t\t\tconst isRangeMiddle = startEpoch !== null && endEpoch !== null && epoch > startEpoch && epoch < endEpoch;\n\t\t\tconst isSelected = singleEpoch === epoch || isRangeStart || isRangeEnd || many.has(epoch);\n\t\t\tconst isInRangePreview = previewLow !== null && previewHigh !== null && epoch >= previewLow && epoch <= previewHigh;\n\t\t\tconst isDisabled = !isInLimits(date, input.limits) || (input.isDateDisabled?.(date) ?? false);\n\t\t\tconst holiday = input.holiday?.(date) ?? null;\n\t\t\tconst holidayLabel = holiday?.label ?? null;\n\t\t\tconst state = isSelected ? input.selectionMode === \"range\" ? isRangeEnd ? \"range-end\" : endEpoch === null ? \"selected\" : \"range-start\" : \"selected\" : isRangeMiddle ? \"range-middle\" : isDisabled ? \"disabled\" : isOutside ? \"outside\" : isToday ? \"today\" : holiday ? \"holiday\" : \"default\";\n\t\t\tweek.push(Object.freeze({\n\t\t\t\tkey: `${date.calendar}-${formatDate(date, \"Y-m-d\", \"en\")}`,\n\t\t\t\tdate,\n\t\t\t\totherDate,\n\t\t\t\tepoch,\n\t\t\t\tweekday,\n\t\t\t\tlabel: formatNumber(date.day, locale),\n\t\t\t\tsubLabel: otherDate ? formatNumber(otherDate.day, locale) : null,\n\t\t\t\tariaLabel: formatDate(date, \"full\", locale) + (otherDate ? ` (${formatDate(otherDate, \"long\", locale)} ${names[otherDate.calendar]})` : \"\") + (holidayLabel ? `, ${holidayLabel}` : \"\"),\n\t\t\t\tisToday,\n\t\t\t\tisSelected,\n\t\t\t\tisRangeStart: input.selectionMode === \"range\" && isRangeStart,\n\t\t\t\tisRangeMiddle,\n\t\t\t\tisRangeEnd,\n\t\t\t\tisInRangePreview,\n\t\t\t\tisDisabled,\n\t\t\t\tisOutside,\n\t\t\t\tisWeekend: input.weekendDays.includes(weekday),\n\t\t\t\tisHoliday: holiday !== null,\n\t\t\t\tholidayLabel,\n\t\t\t\tevents: input.events?.(date) ?? NO_EVENTS,\n\t\t\t\tisFocusTarget: focusEpoch === epoch,\n\t\t\t\tstate\n\t\t\t}));\n\t\t}\n\t\tweeks.push(week);\n\t}\n\treturn weeks;\n}\n/** Weekday headers in display order. */\nfunction buildWeekdays(locale, weekStartsOn, weekendDays) {\n\tconst { weekdays } = getLocale(locale);\n\treturn Array.from({ length: 7 }, (_, offset) => {\n\t\tconst index = (weekStartsOn + offset) % 7;\n\t\treturn Object.freeze({\n\t\t\tindex,\n\t\t\tlabel: weekdays.short[index] ?? \"\",\n\t\t\tnarrowLabel: weekdays.narrow[index] ?? \"\",\n\t\t\tlongLabel: weekdays.long[index] ?? \"\",\n\t\t\tisWeekend: weekendDays.includes(index)\n\t\t});\n\t});\n}\nconst NONE = /* @__PURE__ */ new Set();\nfunction selectionEpochs(mode, selected) {\n\tconst none = {\n\t\tsingleEpoch: null,\n\t\tstartEpoch: null,\n\t\tendEpoch: null,\n\t\tmany: NONE\n\t};\n\tif (selected == null) return none;\n\tif (isDayList(selected)) return {\n\t\t...none,\n\t\tmany: new Set(selected.map((day) => toEpoch(day)))\n\t};\n\tif (\"calendar\" in selected) return mode === \"range\" ? {\n\t\t...none,\n\t\tstartEpoch: toEpoch(selected)\n\t} : {\n\t\t...none,\n\t\tsingleEpoch: toEpoch(selected)\n\t};\n\tif (mode !== \"range\") return {\n\t\t...none,\n\t\tsingleEpoch: selected.start ? toEpoch(selected.start) : null\n\t};\n\treturn {\n\t\t...none,\n\t\tstartEpoch: selected.start ? toEpoch(selected.start) : null,\n\t\tendEpoch: selected.end ? toEpoch(selected.end) : null\n\t};\n}\n/** Whether a selection is the multiple-mode list of days. */\nfunction isDayList(selection) {\n\treturn Array.isArray(selection);\n}\nfunction safeFromEpoch(epoch, calendar) {\n\ttry {\n\t\treturn fromEpoch(epoch, calendar);\n\t} catch {\n\t\treturn null;\n\t}\n}\n//#endregion\n//#region src/tiles.ts\n/** Twelve month tiles: \"Ashwin\" with \"Sep / Oct\" under it. */\nfunction buildMonthTiles(input) {\n\tconst { calendar, year, limits, locale } = input;\n\tconst other = calendar === \"BS\" ? \"AD\" : \"BS\";\n\tconst long = monthNames(calendar, locale, \"long\");\n\tconst otherShort = monthNames(other, locale, \"short\");\n\tconst selected = input.selected ? safeConvert(input.selected, calendar) : null;\n\tconst today = safeConvert(input.today, calendar);\n\treturn Array.from({ length: 12 }, (_, index) => {\n\t\tconst month = index + 1;\n\t\tconst valid = isValidDate(calendar, year, month, 1);\n\t\tlet subLabel = null;\n\t\tlet isDisabled = true;\n\t\tif (valid) {\n\t\t\tconst first = createDate(calendar, year, month, 1);\n\t\t\tconst last = endOfMonth(first);\n\t\t\tconst from = safeConvert(first, other);\n\t\t\tconst to = safeConvert(last, other);\n\t\t\tif (from && to) {\n\t\t\t\tconst a = otherShort[from.month - 1] ?? \"\";\n\t\t\t\tconst b = otherShort[to.month - 1] ?? \"\";\n\t\t\t\tsubLabel = a === b ? a : `${a} / ${b}`;\n\t\t\t}\n\t\t\tisDisabled = limits.empty || isBefore(last, limits.lowDay) || isAfter(first, limits.highDay);\n\t\t}\n\t\treturn Object.freeze({\n\t\t\tvalue: month,\n\t\t\tlabel: long[index] ?? \"\",\n\t\t\tsubLabel,\n\t\t\tisSelected: selected?.year === year && selected.month === month,\n\t\t\tisCurrent: today?.year === year && today.month === month,\n\t\t\tisDisabled\n\t\t});\n\t});\n}\n/** The first year of the page of twelve that contains `year`. */\nfunction yearPageStart(year) {\n\treturn Math.floor(year / 12) * 12;\n}\n/** Twelve year tiles: \"2083\" with \"2026/27\" under it. */\nfunction buildYearTiles(input) {\n\tconst { calendar, limits, locale } = input;\n\tconst other = calendar === \"BS\" ? \"AD\" : \"BS\";\n\tconst start = yearPageStart(input.year);\n\tconst selected = input.selected ? safeConvert(input.selected, calendar) : null;\n\tconst today = safeConvert(input.today, calendar);\n\treturn Array.from({ length: 12 }, (_, index) => {\n\t\tconst year = start + index;\n\t\tlet subLabel = null;\n\t\tif (isValidDate(calendar, year, 1, 1)) {\n\t\t\tconst first = createDate(calendar, year, 1, 1);\n\t\t\tconst from = safeConvert(startOfYear(first), other);\n\t\t\tconst to = safeConvert(endOfYear(first), other);\n\t\t\tif (from && to) subLabel = formatNumber(from.year === to.year ? `${from.year}` : `${from.year}/${String(to.year % 100).padStart(2, \"0\")}`, locale);\n\t\t}\n\t\treturn Object.freeze({\n\t\t\tvalue: year,\n\t\t\tlabel: formatNumber(year, locale),\n\t\t\tsubLabel,\n\t\t\tisSelected: selected?.year === year,\n\t\t\tisCurrent: today?.year === year,\n\t\t\tisDisabled: limits.empty || year < limits.lowDay.year || year > limits.highDay.year\n\t\t});\n\t});\n}\nfunction safeConvert(date, calendar) {\n\ttry {\n\t\treturn toCalendar(date, calendar);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** The fiscal year that starts in BS `startYear`, or null outside the BS table. */\nfunction safeFiscalYear(startYear) {\n\ttry {\n\t\treturn fiscalYearRange(startYear);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Whether a whole fiscal year lies inside the limits. */\nfunction isFiscalYearAllowed(startYear, limits) {\n\tconst fy = safeFiscalYear(startYear);\n\treturn fy !== null && !limits.empty && compareDates(fy.firstDay, limits.lowDay) >= 0 && compareDates(fy.lastDay, limits.highDay) <= 0;\n}\n/** Twelve fiscal-year tiles: \"2083/84\" with the AD years \"2026/27\" under it. */\nfunction buildFiscalYearTiles(input) {\n\tconst { limits, locale } = input;\n\tconst anchor = safeConvert(input.today, \"BS\");\n\tconst pageStart = yearPageStart(input.year);\n\tconst currentStart = anchor ? fiscalYear(anchor).startYear : null;\n\tconst range = input.selectedRange;\n\treturn Array.from({ length: 12 }, (_, index) => {\n\t\tconst startYear = pageStart + index;\n\t\tconst fy = safeFiscalYear(startYear);\n\t\tconst from = fy ? safeConvert(fy.firstDay, \"AD\") : null;\n\t\tconst to = fy ? safeConvert(fy.lastDay, \"AD\") : null;\n\t\tconst isSelected = fy !== null && range?.start != null && range.end != null && compareDates(range.start, fy.firstDay) === 0 && compareDates(range.end, fy.lastDay) === 0;\n\t\treturn Object.freeze({\n\t\t\tvalue: startYear,\n\t\t\tlabel: fy ? formatFiscalYear(fy, \"label\", locale) : formatNumber(`${startYear}/${String((startYear + 1) % 100).padStart(2, \"0\")}`, locale),\n\t\t\tsubLabel: from && to ? formatNumber(`${from.year}/${String(to.year % 100).padStart(2, \"0\")}`, locale) : null,\n\t\t\tisSelected,\n\t\t\tisCurrent: currentStart === startYear,\n\t\t\tisDisabled: !isFiscalYearAllowed(startYear, limits)\n\t\t});\n\t});\n}\n//#endregion\n//#region src/store.ts\n/**\n* A framework-free calendar: give it options, read `getState()`, call\n* `actions`, and `subscribe` to re-render. React, Web Components, React Native\n* and Angular adapters all wrap this same store (docs/plan 01-architecture).\n*\n* The selection and visible month live in the store so a range can be picked\n* with two clicks; passing `selected` or `visibleMonth` through setOptions\n* replaces them (controlled use).\n*/\nfunction createCalendar(initial = {}) {\n\tlet options = { ...initial };\n\tlet calendar = options.calendar ?? \"BS\";\n\tlet mode = options.selectionMode ?? \"single\";\n\tlet todayDate = toCalendar(options.today ?? today(\"AD\"), \"AD\");\n\tlet limits = computeLimits(calendar, options.min, options.max);\n\tlet selection = normalizeSelection(options.selected ?? null, mode, calendar);\n\tlet view = \"day\";\n\tlet rangeHover = null;\n\tlet holiday = makeHolidayResolver(options.holidays);\n\tlet visibleMonth = clampMonth(options.visibleMonth ?? options.defaultVisibleMonth ?? anchorOf(selection) ?? todayDate);\n\tlet focused = clampDay(anchorOf(selection) ?? todayDate);\n\tlet snapshot = build();\n\tconst listeners = /* @__PURE__ */ new Set();\n\tlet destroyed = false;\n\tfunction locale() {\n\t\treturn options.locale ?? getConfig().defaultLocale;\n\t}\n\tfunction weekStartsOn() {\n\t\treturn options.weekStartsOn ?? getConfig().weekStartsOn;\n\t}\n\tfunction weekendDays() {\n\t\treturn options.weekendDays ?? getConfig().weekendDays;\n\t}\n\t/** Day 1 of the month containing `date`, kept within the months that may be shown. */\n\tfunction clampMonth(date) {\n\t\tif (isBefore(date, limits.lowMonth)) return limits.lowMonth;\n\t\tif (isAfter(date, limits.highDay)) return limits.highMonth;\n\t\treturn startOfMonth(toCalendar(date, calendar));\n\t}\n\tfunction clampDay(date) {\n\t\tif (isBefore(date, limits.lowDay)) return limits.lowDay;\n\t\tif (isAfter(date, limits.highDay)) return limits.highDay;\n\t\treturn toCalendar(date, calendar);\n\t}\n\t/** The focused day if it is in the visible month, else the same day number there. */\n\tfunction focusTarget() {\n\t\tif (isSameMonth(visibleMonth, focused)) return focused;\n\t\tconst day = Math.min(toCalendar(focused, calendar).day, daysInMonth(calendar, visibleMonth.year, visibleMonth.month));\n\t\treturn createDate(calendar, visibleMonth.year, visibleMonth.month, day);\n\t}\n\tfunction isSelectable(date) {\n\t\treturn isInLimits(date, limits) && !(options.isDateDisabled?.(date) ?? false);\n\t}\n\tfunction build() {\n\t\tconst loc = locale();\n\t\tconst target = focusTarget();\n\t\tconst selectedDay = anchorOf(selection);\n\t\tconst year = visibleMonth.year;\n\t\tconst pageStart = yearPageStart(year);\n\t\tconst fiscalStart = fiscalStartOf(visibleMonth);\n\t\tconst fiscalPage = yearPageStart(fiscalStart);\n\t\tconst labels = getLocale(loc).labels;\n\t\tconst range = rangeOf(selection);\n\t\tconst tileInput = {\n\t\t\tcalendar,\n\t\t\tyear,\n\t\t\tlimits,\n\t\t\tlocale: loc,\n\t\t\tselected: selectedDay,\n\t\t\ttoday: todayDate\n\t\t};\n\t\treturn Object.freeze({\n\t\t\tcalendar,\n\t\t\tview,\n\t\t\tvisibleMonth,\n\t\t\tfocused: target,\n\t\t\ttitle: view === \"day\" ? formatDate(visibleMonth, \"F Y\", loc) : view === \"month\" ? formatNumber(year, loc) : view === \"year\" ? `${formatNumber(pageStart, loc)}–${formatNumber(pageStart + 11, loc)}` : `${labels.fiscalYear} ${formatNumber(`${fiscalPage}/${String((fiscalPage + 1) % 100).padStart(2, \"0\")}–${fiscalPage + 11}/${String((fiscalPage + 12) % 100).padStart(2, \"0\")}`, loc)}`,\n\t\t\tweekdays: buildWeekdays(loc, weekStartsOn(), weekendDays()),\n\t\t\tweeks: buildMonthGrid({\n\t\t\t\tcalendar,\n\t\t\t\tmonth: visibleMonth,\n\t\t\t\tlimits,\n\t\t\t\tlocale: loc,\n\t\t\t\ttoday: todayDate,\n\t\t\t\tselectionMode: mode,\n\t\t\t\tselected: selection,\n\t\t\t\trangeHover,\n\t\t\t\tfocusTarget: target,\n\t\t\t\tshowOtherCalendar: options.showOtherCalendar ?? true,\n\t\t\t\tshowOutsideDays: options.showOutsideDays ?? true,\n\t\t\t\tfixedWeeks: options.fixedWeeks ?? false,\n\t\t\t\tweekStartsOn: weekStartsOn(),\n\t\t\t\tweekendDays: weekendDays(),\n\t\t\t\tisDateDisabled: options.isDateDisabled,\n\t\t\t\tholiday,\n\t\t\t\tevents: options.events\n\t\t\t}),\n\t\t\tmonths: buildMonthTiles(tileInput),\n\t\t\tyears: buildYearTiles(tileInput),\n\t\t\tfiscalYears: buildFiscalYearTiles({\n\t\t\t\t...tileInput,\n\t\t\t\tyear: fiscalStart,\n\t\t\t\tselectedRange: range\n\t\t\t}),\n\t\t\tcanPrev: view === \"day\" ? isAfter(visibleMonth, limits.lowMonth) : view === \"month\" ? year > limits.lowMonth.year : view === \"year\" ? pageStart > limits.lowMonth.year : fiscalPage > fiscalStartOf(limits.lowDay),\n\t\t\tcanNext: view === \"day\" ? isBefore(visibleMonth, limits.highMonth) : view === \"month\" ? year < limits.highMonth.year : view === \"year\" ? pageStart + 11 < limits.highMonth.year : fiscalPage + 11 < fiscalStartOf(limits.highDay),\n\t\t\tselectionMode: mode,\n\t\t\tselected: selection,\n\t\t\trangeHover,\n\t\t\tminDate: limits.lowDay,\n\t\t\tmaxDate: limits.highDay\n\t\t});\n\t}\n\tfunction emit() {\n\t\tsnapshot = build();\n\t\tfor (const listener of [...listeners]) listener();\n\t}\n\t/** Apply a change made by an action, then rebuild and notify if anything moved. */\n\tfunction update(change) {\n\t\tif (destroyed) return;\n\t\tconst before = {\n\t\t\tmonth: visibleMonth,\n\t\t\tview,\n\t\t\tkey: stateKey()\n\t\t};\n\t\tchange();\n\t\tif (stateKey() === before.key) return;\n\t\temit();\n\t\tif (!isSameDay(before.month, visibleMonth)) options.onVisibleMonthChange?.(visibleMonth);\n\t\tif (before.view !== view) options.onViewChange?.(view);\n\t}\n\tfunction stateKey() {\n\t\tconst range = rangeOf(selection);\n\t\tconst single = selection && \"calendar\" in selection ? selection : null;\n\t\tconst days = isDayList(selection) ? selection.map((day) => toEpoch(day)).join(\",\") : \"\";\n\t\treturn [\n\t\t\tview,\n\t\t\ttoEpoch(visibleMonth),\n\t\t\ttoEpoch(focused),\n\t\t\tsingle ? toEpoch(single) : \"\",\n\t\t\trange?.start ? toEpoch(range.start) : \"\",\n\t\t\trange?.end ? toEpoch(range.end) : \"\",\n\t\t\trangeHover ? toEpoch(rangeHover) : \"\",\n\t\t\tdays\n\t\t].join(\"|\");\n\t}\n\t/** Move the visible month by a number of months, stopping at the limits. */\n\tfunction shiftMonths(months) {\n\t\tlet target;\n\t\ttry {\n\t\t\ttarget = addMonths(visibleMonth, months);\n\t\t} catch {\n\t\t\ttarget = months > 0 ? limits.highMonth : limits.lowMonth;\n\t\t}\n\t\tvisibleMonth = clampMonth(target);\n\t}\n\tconst actions = {\n\t\tnext() {\n\t\t\tupdate(() => {\n\t\t\t\tshiftMonths(view === \"day\" ? 1 : view === \"month\" ? 12 : 144);\n\t\t\t});\n\t\t},\n\t\tprev() {\n\t\t\tupdate(() => {\n\t\t\t\tshiftMonths(view === \"day\" ? -1 : view === \"month\" ? -12 : -144);\n\t\t\t});\n\t\t},\n\t\tgoTo(date) {\n\t\t\tupdate(() => {\n\t\t\t\tvisibleMonth = clampMonth(date);\n\t\t\t\tfocused = clampDay(date);\n\t\t\t});\n\t\t},\n\t\tgoToToday() {\n\t\t\tactions.goTo(todayDate);\n\t\t},\n\t\tsetView(next) {\n\t\t\tupdate(() => {\n\t\t\t\tview = next;\n\t\t\t});\n\t\t},\n\t\tchooseMonth(month) {\n\t\t\tupdate(() => {\n\t\t\t\tvisibleMonth = clampMonth(createDate(calendar, visibleMonth.year, month, 1));\n\t\t\t\tfocused = focusTarget();\n\t\t\t\tview = \"day\";\n\t\t\t});\n\t\t},\n\t\tchooseFiscalYear(startYear) {\n\t\t\tconst fy = safeFiscalYear(startYear);\n\t\t\tif (destroyed || !fy || !isFiscalYearAllowed(startYear, limits)) return false;\n\t\t\tconst first = toCalendar(fy.firstDay, calendar);\n\t\t\tconst last = toCalendar(fy.lastDay, calendar);\n\t\t\tconst range = mode === \"range\" ? Object.freeze({\n\t\t\t\tstart: first,\n\t\t\t\tend: last\n\t\t\t}) : null;\n\t\t\tupdate(() => {\n\t\t\t\tvisibleMonth = clampMonth(first);\n\t\t\t\tfocused = first;\n\t\t\t\tview = \"day\";\n\t\t\t\tif (range) {\n\t\t\t\t\tselection = range;\n\t\t\t\t\trangeHover = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (range) options.onSelect?.(range);\n\t\t\treturn true;\n\t\t},\n\t\tchooseYear(year) {\n\t\t\tupdate(() => {\n\t\t\t\tlet target;\n\t\t\t\ttry {\n\t\t\t\t\ttarget = addYears(visibleMonth, year - visibleMonth.year);\n\t\t\t\t} catch {\n\t\t\t\t\ttarget = year < visibleMonth.year ? limits.lowMonth : limits.highMonth;\n\t\t\t\t}\n\t\t\t\tvisibleMonth = clampMonth(target);\n\t\t\t\tview = \"month\";\n\t\t\t});\n\t\t},\n\t\tfocus(date) {\n\t\t\tupdate(() => {\n\t\t\t\tfocused = clampDay(date);\n\t\t\t\tvisibleMonth = clampMonth(focused);\n\t\t\t});\n\t\t},\n\t\tmoveFocus(key, modifiers = {}) {\n\t\t\tupdate(() => {\n\t\t\t\tfocused = nextFocus(focusTarget(), key, limits, {\n\t\t\t\t\tweekStartsOn: weekStartsOn(),\n\t\t\t\t\t...modifiers.shift === void 0 ? {} : { shift: modifiers.shift }\n\t\t\t\t});\n\t\t\t\tif (!isSameMonth(visibleMonth, focused)) visibleMonth = clampMonth(focused);\n\t\t\t});\n\t\t},\n\t\tselect(date) {\n\t\t\tif (destroyed || !isSelectable(date)) return false;\n\t\t\tconst day = toCalendar(date, calendar);\n\t\t\tlet result = day;\n\t\t\tupdate(() => {\n\t\t\t\tfocused = day;\n\t\t\t\tif (!isSameMonth(visibleMonth, day)) visibleMonth = clampMonth(day);\n\t\t\t\tif (mode === \"single\") selection = day;\n\t\t\t\telse if (mode === \"multiple\") {\n\t\t\t\t\tresult = toggleDay(isDayList(selection) ? selection : [], day);\n\t\t\t\t\tselection = result;\n\t\t\t\t} else {\n\t\t\t\t\tconst range = selection ?? {\n\t\t\t\t\t\tstart: null,\n\t\t\t\t\t\tend: null\n\t\t\t\t\t};\n\t\t\t\t\tconst next = range.start === null || range.end !== null ? {\n\t\t\t\t\t\tstart: day,\n\t\t\t\t\t\tend: null\n\t\t\t\t\t} : compareDates(day, range.start) < 0 ? {\n\t\t\t\t\t\tstart: day,\n\t\t\t\t\t\tend: range.start\n\t\t\t\t\t} : {\n\t\t\t\t\t\tstart: range.start,\n\t\t\t\t\t\tend: day\n\t\t\t\t\t};\n\t\t\t\t\tselection = Object.freeze(next);\n\t\t\t\t\trangeHover = null;\n\t\t\t\t\tresult = next;\n\t\t\t\t}\n\t\t\t});\n\t\t\toptions.onSelect?.(result);\n\t\t\treturn true;\n\t\t},\n\t\thover(date) {\n\t\t\tupdate(() => {\n\t\t\t\tconst range = mode === \"range\" ? selection : null;\n\t\t\t\trangeHover = date && range?.start && range.end === null && isInLimits(date, limits) ? toCalendar(date, calendar) : null;\n\t\t\t});\n\t\t}\n\t};\n\treturn {\n\t\tgetState: () => snapshot,\n\t\tsubscribe(listener) {\n\t\t\tlisteners.add(listener);\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener);\n\t\t\t};\n\t\t},\n\t\tsetOptions(changes) {\n\t\t\tif (destroyed) return;\n\t\t\toptions = {\n\t\t\t\t...options,\n\t\t\t\t...changes\n\t\t\t};\n\t\t\tcalendar = options.calendar ?? \"BS\";\n\t\t\tmode = options.selectionMode ?? \"single\";\n\t\t\ttodayDate = toCalendar(options.today ?? today(\"AD\"), \"AD\");\n\t\t\tlimits = computeLimits(calendar, options.min, options.max);\n\t\t\tholiday = makeHolidayResolver(options.holidays);\n\t\t\tconst reselect = \"selected\" in changes || \"selectionMode\" in changes;\n\t\t\tselection = normalizeSelection(\"selected\" in changes ? changes.selected ?? null : selection, mode, calendar);\n\t\t\tif (reselect) rangeHover = null;\n\t\t\tvisibleMonth = clampMonth(changes.visibleMonth ?? visibleMonth);\n\t\t\tfocused = clampDay(focused);\n\t\t\temit();\n\t\t},\n\t\tactions,\n\t\tdestroy() {\n\t\t\tdestroyed = true;\n\t\t\tlisteners.clear();\n\t\t}\n\t};\n}\n/** The selection in the shape the mode needs, with its dates in the calendar on screen. */\n/** The BS start year of the fiscal year a date falls in (or the nearest one at the table edges). */\nfunction fiscalStartOf(date) {\n\ttry {\n\t\treturn fiscalYear(date).startYear;\n\t} catch {\n\t\treturn date.year;\n\t}\n}\nfunction normalizeSelection(selected, mode, calendar) {\n\tconst inCalendar = (date) => {\n\t\tif (date === null) return null;\n\t\ttry {\n\t\t\treturn toCalendar(date, calendar);\n\t\t} catch {\n\t\t\treturn date;\n\t\t}\n\t};\n\tif (mode === \"multiple\") return sortDays((isDayList(selected) ? selected : selected === null ? [] : \"calendar\" in selected ? [selected] : [selected.start, selected.end].filter((day) => day !== null)).map((day) => inCalendar(day) ?? day));\n\tif (selected === null) return mode === \"range\" ? Object.freeze({\n\t\tstart: null,\n\t\tend: null\n\t}) : null;\n\tif (isDayList(selected)) {\n\t\tconst [first = null, second = null] = sortDays(selected);\n\t\treturn mode === \"range\" ? Object.freeze({\n\t\t\tstart: inCalendar(first),\n\t\t\tend: inCalendar(second)\n\t\t}) : inCalendar(first);\n\t}\n\tif (\"calendar\" in selected) return mode === \"range\" ? Object.freeze({\n\t\tstart: inCalendar(selected),\n\t\tend: null\n\t}) : inCalendar(selected);\n\treturn mode === \"range\" ? Object.freeze({\n\t\tstart: inCalendar(selected.start),\n\t\tend: inCalendar(selected.end)\n\t}) : inCalendar(selected.start);\n}\n/** The day the selection points at: the date, the range start, or the first chosen day. */\nfunction anchorOf(selection) {\n\tif (selection === null) return null;\n\tif (isDayList(selection)) return selection[0] ?? null;\n\treturn \"calendar\" in selection ? selection : selection.start;\n}\nfunction rangeOf(selection) {\n\treturn selection && !isDayList(selection) && !(\"calendar\" in selection) ? selection : null;\n}\n/** Add the day, or remove it when it is already chosen. */\nfunction toggleDay(days, day) {\n\tconst kept = days.filter((other) => !isSameDay(other, day));\n\treturn sortDays(kept.length === days.length ? [...kept, day] : kept);\n}\nfunction sortDays(days) {\n\treturn Object.freeze([...days].sort(compareDates));\n}\nfunction makeHolidayResolver(holidays) {\n\tif (holidays === void 0) return;\n\tif (typeof holidays === \"function\") return (date) => {\n\t\tconst info = holidays(date);\n\t\tif (info === true) return { label: null };\n\t\treturn info ? { label: info.label ?? null } : null;\n\t};\n\tconst byDay = /* @__PURE__ */ new Map();\n\tfor (const item of holidays) {\n\t\tconst date = \"calendar\" in item ? item : item.date;\n\t\tbyDay.set(toEpoch(date), \"calendar\" in item ? null : item.label ?? null);\n\t}\n\treturn (date) => {\n\t\tconst label = byDay.get(toEpoch(date));\n\t\treturn label === void 0 ? null : { label };\n\t};\n}\n//#endregion\nexport { buildMonthGrid, buildMonthTiles, buildWeekdays, buildYearTiles, computeLimits, createCalendar, isDayList, isInLimits, nextFocus, yearPageStart };\n\n//# sourceMappingURL=index.js.map","import {\n formatDate,\n formatMessage,\n fromIsoDate,\n getLocale,\n isWithin,\n parseDate,\n toCalendar,\n type AdDate,\n type CalendarDate,\n type CalendarSystem,\n type DateFormatPattern,\n type LocaleCode,\n} from '@nepdatejs/core';\nimport type { DateDetail, DateError } from './types';\n\n/** What a picker allows, in any calendar. */\nexport interface InputLimits {\n readonly min: CalendarDate;\n readonly max: CalendarDate;\n /** Whether the app set min/max (else they are the edges of the BS table). Picks the message. */\n readonly hasMin?: boolean;\n readonly hasMax?: boolean;\n readonly isDateDisabled?: ((date: CalendarDate) => boolean) | undefined;\n}\n\nexport type ParseResult =\n | { readonly kind: 'empty' }\n | { readonly kind: 'date'; readonly date: AdDate }\n | { readonly kind: 'error'; readonly error: DateError };\n\n/**\n * Read what the user typed: year first, ASCII or Devanagari digits, in the\n * calendar on screen. All date work is done by core (docs/plan D-005).\n */\nexport function parseInput(\n text: string,\n calendar: CalendarSystem,\n limits: InputLimits,\n locale: LocaleCode,\n format: DateFormatPattern = 'iso',\n): ParseResult {\n if (text.trim() === '') {\n return { kind: 'empty' };\n }\n const messages = getLocale(locale).messages;\n const date = parseDate(text, calendar);\n if (!date) {\n return {\n kind: 'error',\n error: { code: 'format', message: messages.invalidFormat[calendar] },\n };\n }\n const error = checkDate(date, calendar, limits, locale, format);\n\n return error\n ? { kind: 'error', error }\n : { kind: 'date', date: toCalendar(date, 'AD') };\n}\n\n/** Null when the day is allowed; otherwise a translated error. */\nexport function checkDate(\n date: CalendarDate,\n calendar: CalendarSystem,\n limits: InputLimits,\n locale: LocaleCode,\n format: DateFormatPattern = 'iso',\n): DateError | null {\n const messages = getLocale(locale).messages;\n if (!isWithin(date, limits.min, limits.max)) {\n const values = {\n min: formatInput(limits.min, calendar, format, locale),\n max: formatInput(limits.max, calendar, format, locale),\n };\n const template =\n limits.hasMin === limits.hasMax\n ? messages.outOfRange\n : limits.hasMin\n ? messages.onOrAfter\n : messages.onOrBefore;\n\n return { code: 'range', message: formatMessage(template, values) };\n }\n if (limits.isDateDisabled?.(date)) {\n return { code: 'disabled', message: messages.unavailable };\n }\n\n return null;\n}\n\n/** How the input shows a date: in the calendar on screen, with the locale's digits. */\nexport function formatInput(\n date: CalendarDate | null,\n calendar: CalendarSystem,\n format: DateFormatPattern,\n locale: LocaleCode,\n): string {\n return date ? formatDate(toCalendar(date, calendar), format, locale) : '';\n}\n\n/** \"10 October 2026 AD\": the same day in the other calendar. */\nexport function equivalentText(\n date: CalendarDate | null,\n calendar: CalendarSystem,\n locale: LocaleCode,\n): string | null {\n if (!date) {\n return null;\n }\n const other: CalendarSystem = calendar === 'BS' ? 'AD' : 'BS';\n\n return `${formatDate(toCalendar(date, other), 'long', locale)} ${getLocale(locale).calendarNames[other]}`;\n}\n\nexport function placeholderText(calendar: CalendarSystem, locale: LocaleCode): string {\n return `YYYY-MM-DD (${getLocale(locale).calendarNames[calendar]})`;\n}\n\n/** An AD \"YYYY-MM-DD\" string as a date; anything else is null. */\nexport function readIso(value: string | null | undefined): AdDate | null {\n return value ? fromIsoDate(value) : null;\n}\n\nexport function detailOf(date: CalendarDate | null): DateDetail | null {\n return date\n ? Object.freeze({ ad: toCalendar(date, 'AD'), bs: toCalendar(date, 'BS') })\n : null;\n}\n","import {\n getConfig,\n today,\n type CalendarDate,\n type DateFormatPattern,\n type LocaleCode,\n} from '@nepdatejs/core';\nimport {\n isDayList,\n type CalendarOptions,\n type CalendarSelection,\n type CalendarStore,\n type DateRange,\n} from '@nepdatejs/calendar';\nimport { readIso, type InputLimits } from './input';\nimport type { PickerBaseOptions } from './types';\n\n/** The panel calendar's options that come straight from the picker's options. */\nexport function panelOptions(\n options: PickerBaseOptions,\n calendar: CalendarOptions['calendar'],\n): CalendarOptions {\n return {\n calendar,\n locale: options.locale,\n min: readIso(options.min),\n max: readIso(options.max),\n isDateDisabled: options.isDateDisabled,\n holidays: options.holidays,\n events: options.events,\n showOtherCalendar: options.showOtherCalendar,\n weekStartsOn: options.weekStartsOn,\n weekendDays: options.weekendDays,\n today: options.today,\n };\n}\n\n/** What may be typed: the panel's effective range, so typing and clicking agree. */\nexport function inputLimits(\n options: PickerBaseOptions,\n panel: CalendarStore,\n): InputLimits {\n const { minDate, maxDate } = panel.getState();\n\n return {\n min: minDate,\n max: maxDate,\n hasMin: readIso(options.min) !== null,\n hasMax: readIso(options.max) !== null,\n isDateDisabled: options.isDateDisabled,\n };\n}\n\nexport function localeOf(options: PickerBaseOptions): LocaleCode {\n return options.locale ?? getConfig().defaultLocale;\n}\n\nexport function formatOf(options: PickerBaseOptions): DateFormatPattern {\n return options.displayFormat ?? 'iso';\n}\n\nexport function todayOf(options: PickerBaseOptions): CalendarDate {\n return options.today ?? today('AD');\n}\n\nexport function isRange(selection: CalendarSelection): selection is DateRange {\n return !isDayList(selection) && !('calendar' in selection);\n}\n\nexport function isSingleDay(selection: CalendarSelection): selection is CalendarDate {\n return !isDayList(selection) && 'calendar' in selection;\n}\n\n/**\n * Listener set plus batching: changes made inside `act` notify once at the end,\n * and callbacks queued with `after` run after listeners have seen the new state.\n */\nexport function createEmitter(rebuild: () => void): {\n subscribe(listener: () => void): () => void;\n act(change: () => void): void;\n after(callback: () => void): void;\n notify(): void;\n clear(): void;\n} {\n const listeners = new Set<() => void>();\n const queued: (() => void)[] = [];\n let depth = 0;\n\n function notify(): void {\n rebuild();\n for (const listener of [...listeners]) {\n listener();\n }\n }\n\n return {\n subscribe(listener) {\n listeners.add(listener);\n\n return () => {\n listeners.delete(listener);\n };\n },\n act(change) {\n depth++;\n try {\n change();\n } finally {\n depth--;\n }\n if (depth === 0) {\n notify();\n for (const callback of queued.splice(0)) {\n callback();\n }\n }\n },\n after(callback) {\n queued.push(callback);\n },\n notify() {\n if (depth === 0) {\n notify();\n }\n },\n clear() {\n listeners.clear();\n },\n };\n}\n","import {\n addDays,\n addMonths,\n endOfMonth,\n endOfWeek,\n endOfYear,\n fiscalYear,\n fiscalYearRange,\n getLocale,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendar,\n type AdDate,\n type CalendarDate,\n type CalendarSystem,\n type LocaleCode,\n type Weekday,\n} from '@nepdatejs/core';\n\n/** Built-in shortcuts for a single date. */\nexport type SinglePresetId = 'today' | 'yesterday' | 'tomorrow';\n\n/** Built-in shortcuts for a range. Weeks, months and years count in the calendar on screen. */\nexport type RangePresetId =\n | 'today'\n | 'yesterday'\n | 'thisWeek'\n | 'lastWeek'\n | 'last7Days'\n | 'last30Days'\n | 'thisMonth'\n | 'lastMonth'\n | 'thisYear'\n | 'thisFiscalYear'\n | 'lastFiscalYear';\n\n/** What a preset gets to work out its date: today (in the configured zone), the calendar on screen, the week start. */\nexport interface PresetContext {\n readonly today: AdDate;\n readonly calendar: CalendarSystem;\n readonly weekStartsOn: Weekday;\n}\n\nexport interface PresetRange {\n readonly start: CalendarDate;\n readonly end: CalendarDate;\n}\n\n/** An app-defined shortcut, e.g. { id: 'admission', label: 'Admission day', resolve: () => bsDate(2083, 1, 15) }. */\nexport interface CustomPreset<R> {\n readonly id: string;\n readonly label: string;\n readonly resolve: (context: PresetContext) => R;\n}\n\nexport type SinglePreset = SinglePresetId | CustomPreset<CalendarDate>;\nexport type RangePreset = RangePresetId | CustomPreset<PresetRange>;\n\n/** One shortcut as the panel shows it. */\nexport interface PresetState {\n readonly id: string;\n readonly label: string;\n /** The current value is exactly this preset's date or range. */\n readonly isActive: boolean;\n /** Outside min/max, too short/long, or outside the BS table. */\n readonly isDisabled: boolean;\n}\n\n/** The date a built-in single preset stands for. */\nexport function resolveSinglePreset(\n id: SinglePresetId,\n context: PresetContext,\n): CalendarDate {\n const today = toCalendar(context.today, context.calendar);\n switch (id) {\n case 'today':\n return today;\n case 'yesterday':\n return addDays(today, -1);\n case 'tomorrow':\n return addDays(today, 1);\n }\n}\n\n/** The range a built-in range preset stands for, in the calendar on screen. */\nexport function resolveRangePreset(\n id: RangePresetId,\n context: PresetContext,\n): PresetRange {\n const today = toCalendar(context.today, context.calendar);\n const week = context.weekStartsOn;\n switch (id) {\n case 'today':\n return { start: today, end: today };\n case 'yesterday': {\n const day = addDays(today, -1);\n return { start: day, end: day };\n }\n case 'thisWeek':\n return { start: startOfWeek(today, week), end: endOfWeek(today, week) };\n case 'lastWeek': {\n const day = addDays(today, -7);\n return { start: startOfWeek(day, week), end: endOfWeek(day, week) };\n }\n case 'last7Days':\n return { start: addDays(today, -6), end: today };\n case 'last30Days':\n return { start: addDays(today, -29), end: today };\n case 'thisMonth':\n return { start: startOfMonth(today), end: endOfMonth(today) };\n case 'lastMonth': {\n const month = addMonths(startOfMonth(today), -1);\n return { start: month, end: endOfMonth(month) };\n }\n case 'thisYear':\n return { start: startOfYear(today), end: endOfYear(today) };\n case 'thisFiscalYear': {\n const fy = fiscalYear(today);\n return { start: fy.firstDay, end: fy.lastDay };\n }\n case 'lastFiscalYear': {\n const fy = fiscalYearRange(fiscalYear(today).startYear - 1);\n return { start: fy.firstDay, end: fy.lastDay };\n }\n }\n}\n\n/** Shared by both pickers: label + resolver for a preset entry. */\nexport function describePreset<R, Id extends string>(\n preset: Id | CustomPreset<R>,\n locale: LocaleCode | undefined,\n resolveBuiltIn: (id: Id, context: PresetContext) => R,\n): { id: string; label: string; resolve: (context: PresetContext) => R } {\n if (typeof preset === 'string') {\n const labels = getLocale(locale).presets as Record<string, string>;\n\n return {\n id: preset,\n label: labels[preset] ?? preset,\n resolve: (context) => resolveBuiltIn(preset, context),\n };\n }\n\n return preset;\n}\n","import { maskDateText } from './mask';\nimport {\n getConfig,\n toCalendar,\n toIsoDate,\n type AdDate,\n type CalendarDate,\n type CalendarSystem,\n} from '@nepdatejs/core';\nimport { createCalendar } from '@nepdatejs/calendar';\nimport {\n createEmitter,\n formatOf,\n inputLimits,\n isSingleDay,\n localeOf,\n panelOptions,\n todayOf,\n} from './base';\nimport {\n describePreset,\n resolveSinglePreset,\n type PresetContext,\n type PresetState,\n} from './presets';\nimport {\n checkDate,\n detailOf,\n equivalentText,\n formatInput,\n parseInput,\n placeholderText,\n readIso,\n} from './input';\nimport type {\n DateError,\n DatePickerActions,\n DatePickerOptions,\n DatePickerState,\n DatePickerStore,\n} from './types';\n\n/**\n * A BS/AD date picker without UI: typed text ⇄ value, validation, the BS/AD\n * switch and open/close, plus the panel's calendar store. The value is always\n * an AD \"YYYY-MM-DD\" string (docs/plan D-003); all date work goes through core.\n *\n * Like the calendar, the picker keeps its own value; passing `value` through\n * setOptions replaces it (controlled use). Passing back the value the user just\n * typed leaves their text alone, so the cursor does not jump.\n */\nexport function createDatePicker(initial: DatePickerOptions = {}): DatePickerStore {\n let options: DatePickerOptions = { ...initial };\n let calendar: CalendarSystem = options.calendar ?? options.defaultCalendar ?? 'BS';\n let date: AdDate | null = readIso(options.value ?? options.defaultValue);\n let value = date ? toIsoDate(date) : '';\n let text = formatInput(date, calendar, formatOf(options), localeOf(options));\n let error: DateError | null = null;\n let open = false;\n let destroyed = false;\n\n const panel = createCalendar({\n ...panelOptions(options, calendar),\n selectionMode: 'single',\n selected: date,\n onSelect: (selection) => {\n if (isSingleDay(selection)) {\n pick(selection);\n }\n },\n });\n let snapshot = build();\n const emitter = createEmitter(() => {\n snapshot = build();\n });\n panel.subscribe(() => {\n emitter.notify();\n });\n\n function build(): DatePickerState {\n const locale = localeOf(options);\n\n return Object.freeze({\n value,\n date: detailOf(date),\n text,\n calendar,\n canSwitchCalendar: options.calendar === undefined,\n open: open || options.inline === true,\n inline: options.inline === true,\n error,\n equivalentText: error ? null : equivalentText(date, calendar, locale),\n placeholder: placeholderText(calendar, locale),\n presets: presetStates(),\n calendarState: panel.getState(),\n });\n }\n\n function presetContext(): PresetContext {\n return {\n today: toCalendar(todayOf(options), 'AD'),\n calendar,\n weekStartsOn: options.weekStartsOn ?? getConfig().weekStartsOn,\n };\n }\n\n /** Each shortcut's date, or null when it cannot be used now. */\n function resolvedPresets(): { id: string; label: string; date: CalendarDate | null }[] {\n const context = presetContext();\n const limits = inputLimits(options, panel);\n\n return (options.presets ?? []).map((preset) => {\n const entry = describePreset(preset, options.locale, resolveSinglePreset);\n const date = ((): CalendarDate | null => {\n try {\n const candidate = entry.resolve(context);\n return checkDate(candidate, calendar, limits, localeOf(options))\n ? null\n : candidate;\n } catch {\n return null; // e.g. outside the BS table\n }\n })();\n\n return { id: entry.id, label: entry.label, date };\n });\n }\n\n function presetStates(): PresetState[] {\n return resolvedPresets().map(({ id, label, date }) =>\n Object.freeze({\n id,\n label,\n isActive: date !== null && toIsoDate(date) === value,\n isDisabled: date === null,\n }),\n );\n }\n\n function syncPanel(showDate: boolean): void {\n panel.setOptions({\n ...panelOptions(options, calendar),\n selected: date,\n ...(showDate && date ? { visibleMonth: date } : {}),\n });\n }\n\n /** Change the value; queue onChange when it differs and the user caused it. */\n function setDate(next: AdDate | null, byUser: boolean): void {\n const nextValue = next ? toIsoDate(next) : '';\n const changed = nextValue !== value;\n date = next;\n value = nextValue;\n syncPanel(next !== null);\n if (changed && byUser) {\n const detail = detailOf(next);\n emitter.after(() => options.onChange?.(nextValue, detail));\n }\n }\n\n function format(next: AdDate | null): string {\n return formatInput(next, calendar, formatOf(options), localeOf(options));\n }\n\n function pick(selection: Parameters<DatePickerActions['select']>[0]): void {\n emitter.act(() => {\n const next = toCalendar(selection, 'AD');\n error = null;\n text = format(next);\n setDate(next, true);\n if (options.closeOnSelect ?? true) {\n open = false;\n }\n });\n }\n\n const actions: DatePickerActions = {\n type(next) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n text = options.mask === false ? next : maskDateText(next, text);\n const result = parseInput(\n text,\n calendar,\n inputLimits(options, panel),\n localeOf(options),\n formatOf(options),\n );\n error = result.kind === 'error' ? result.error : null;\n setDate(result.kind === 'date' ? result.date : null, true);\n });\n },\n blur() {\n emitter.act(() => {\n if (!error) {\n text = format(date);\n }\n });\n },\n clear() {\n emitter.act(() => {\n text = '';\n error = null;\n setDate(null, true);\n });\n },\n setValue(next) {\n emitter.act(() => {\n applyValue(next);\n });\n },\n open() {\n emitter.act(() => {\n open = true;\n panel.actions.goTo(date ?? todayOf(options));\n });\n },\n close() {\n emitter.act(() => {\n open = false;\n });\n },\n toggle() {\n if (open) {\n actions.close();\n } else {\n actions.open();\n }\n },\n switchCalendar(next) {\n if (options.calendar !== undefined || next === calendar || destroyed) {\n return;\n }\n emitter.act(() => {\n calendar = next;\n if (!error) {\n text = format(date);\n }\n syncPanel(date !== null);\n emitter.after(() => options.onCalendarChange?.(next));\n });\n },\n select(day) {\n let picked = false;\n if (!destroyed) {\n emitter.act(() => {\n picked = panel.actions.select(day);\n });\n }\n\n return picked;\n },\n selectToday() {\n return actions.select(todayOf(options));\n },\n reset() {\n emitter.act(() => {\n const next = readIso(options.defaultValue);\n error = null;\n text = format(next);\n setDate(next, true);\n });\n },\n applyPreset(id) {\n const preset = resolvedPresets().find((entry) => entry.id === id);\n if (destroyed || !preset?.date) {\n return false;\n }\n pick(preset.date);\n\n return true;\n },\n };\n\n /** An outside value: replaces the text only when it is a different value (echo guard). */\n function applyValue(next: string | undefined): void {\n const nextDate = readIso(next);\n if ((nextDate ? toIsoDate(nextDate) : '') === value) {\n return;\n }\n error = null;\n text = format(nextDate);\n setDate(nextDate, false);\n }\n\n return {\n getState: () => snapshot,\n subscribe: (listener) => emitter.subscribe(listener),\n setOptions(changes) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n const before = { calendar, locale: localeOf(options), format: formatOf(options) };\n options = { ...options, ...changes };\n if (options.calendar !== undefined) {\n calendar = options.calendar;\n }\n if ('value' in changes) {\n applyValue(changes.value);\n }\n const looksChanged =\n before.calendar !== calendar ||\n before.locale !== localeOf(options) ||\n before.format !== formatOf(options);\n if (looksChanged && !error) {\n text = format(date);\n }\n syncPanel(false);\n });\n },\n actions,\n calendar: panel,\n destroy() {\n destroyed = true;\n panel.destroy();\n emitter.clear();\n },\n };\n}\n","import { maskDateText } from './mask';\nimport {\n compareDates,\n differenceInDays,\n formatMessage,\n getConfig,\n getLocale,\n toCalendar,\n toIsoDate,\n type AdDate,\n type CalendarDate,\n type CalendarSystem,\n} from '@nepdatejs/core';\nimport { createCalendar } from '@nepdatejs/calendar';\nimport {\n createEmitter,\n formatOf,\n inputLimits,\n isRange,\n localeOf,\n panelOptions,\n todayOf,\n} from './base';\nimport {\n describePreset,\n resolveRangePreset,\n type PresetContext,\n type PresetRange,\n type PresetState,\n} from './presets';\nimport {\n checkDate,\n detailOf,\n equivalentText,\n formatInput,\n parseInput,\n placeholderText,\n readIso,\n} from './input';\nimport type {\n DateError,\n DateRangePickerActions,\n DateRangePickerOptions,\n DateRangePickerState,\n DateRangePickerStore,\n RangeField,\n RangeValue,\n} from './types';\n\ntype RangeError = DateError & { readonly field: RangeField | 'range' };\n\n/**\n * A BS/AD date range picker without UI: two typed fields (start, end), a panel\n * calendar in range mode, minDays/maxDays checks and the BS/AD switch. Values\n * are AD \"YYYY-MM-DD\" strings; an unfinished or invalid end is \"\".\n */\nexport function createDateRangePicker(\n initial: DateRangePickerOptions = {},\n): DateRangePickerStore {\n let options: DateRangePickerOptions = { ...initial };\n let calendar: CalendarSystem = options.calendar ?? options.defaultCalendar ?? 'BS';\n let start: AdDate | null = readIso(options.value?.start ?? options.defaultValue?.start);\n let end: AdDate | null = readIso(options.value?.end ?? options.defaultValue?.end);\n [start, end] = ordered(start, end);\n let value = valueOf(start, end);\n let startText = format(start);\n let endText = format(end);\n let error: RangeError | null = null;\n let open = false;\n let destroyed = false;\n\n const panel = createCalendar({\n ...panelOptions(options, calendar),\n selectionMode: 'range',\n selected: { start, end },\n onSelect: (selection) => {\n if (isRange(selection)) {\n pick(selection.start, selection.end);\n }\n },\n });\n let snapshot = build();\n const emitter = createEmitter(() => {\n snapshot = build();\n });\n panel.subscribe(() => {\n emitter.notify();\n });\n\n function format(date: CalendarDate | null): string {\n return formatInput(date, calendar, formatOf(options), localeOf(options));\n }\n\n function build(): DateRangePickerState {\n const locale = localeOf(options);\n\n return Object.freeze({\n value,\n date: Object.freeze({ start: detailOf(start), end: detailOf(end) }),\n startText,\n endText,\n calendar,\n canSwitchCalendar: options.calendar === undefined,\n open: open || options.inline === true,\n inline: options.inline === true,\n error,\n equivalentText: Object.freeze({\n start: error?.field === 'start' ? null : equivalentText(start, calendar, locale),\n end: error?.field === 'end' ? null : equivalentText(end, calendar, locale),\n }),\n placeholder: placeholderText(calendar, locale),\n presets: presetStates(),\n calendarState: panel.getState(),\n });\n }\n\n function presetContext(): PresetContext {\n return {\n today: toCalendar(todayOf(options), 'AD'),\n calendar,\n weekStartsOn: options.weekStartsOn ?? getConfig().weekStartsOn,\n };\n }\n\n /** Each shortcut's range, or null when it cannot be used now. */\n function resolvedPresets(): { id: string; label: string; range: PresetRange | null }[] {\n const context = presetContext();\n const limits = inputLimits(options, panel);\n const locale = localeOf(options);\n\n return (options.presets ?? []).map((preset) => {\n const entry = describePreset(preset, options.locale, resolveRangePreset);\n const range = ((): PresetRange | null => {\n try {\n const candidate = entry.resolve(context);\n const from = toCalendar(candidate.start, 'AD');\n const to = toCalendar(candidate.end, 'AD');\n const allowed =\n compareDates(from, to) <= 0 &&\n !checkDate(from, calendar, limits, locale) &&\n !checkDate(to, calendar, limits, locale) &&\n lengthError(from, to) === null;\n return allowed ? candidate : null;\n } catch {\n return null; // e.g. outside the BS table\n }\n })();\n\n return { id: entry.id, label: entry.label, range };\n });\n }\n\n function presetStates(): PresetState[] {\n return resolvedPresets().map(({ id, label, range }) =>\n Object.freeze({\n id,\n label,\n isActive:\n range !== null &&\n toIsoDate(range.start) === value.start &&\n toIsoDate(range.end) === value.end,\n isDisabled: range === null,\n }),\n );\n }\n\n function syncPanel(): void {\n panel.setOptions({\n ...panelOptions(options, calendar),\n selected: { start, end },\n ...(start ? { visibleMonth: start } : {}),\n });\n }\n\n /** Too short or too long, or null. Counts both ends. */\n function lengthError(from: AdDate, to: AdDate): RangeError | null {\n const days = differenceInDays(to, from) + 1;\n const messages = getLocale(localeOf(options)).messages;\n if (options.minDays !== undefined && days < options.minDays) {\n return {\n field: 'range',\n code: 'tooShort',\n message: formatMessage(messages.rangeTooShort, { min: String(options.minDays) }),\n };\n }\n if (options.maxDays !== undefined && days > options.maxDays) {\n return {\n field: 'range',\n code: 'tooLong',\n message: formatMessage(messages.rangeTooLong, { max: String(options.maxDays) }),\n };\n }\n\n return null;\n }\n\n /** Store the dates, keep the panel in step, and queue onChange when the value moved. */\n function commit(\n nextStart: AdDate | null,\n nextEnd: AdDate | null,\n byUser: boolean,\n ): void {\n start = nextStart;\n end = nextEnd;\n const next = valueOf(start, end);\n const changed = next.start !== value.start || next.end !== value.end;\n value = next;\n syncPanel();\n if (changed && byUser) {\n const detail = Object.freeze({ start: detailOf(start), end: detailOf(end) });\n emitter.after(() => options.onChange?.(next, detail));\n }\n }\n\n /** Put the ends in order, check the length, then commit. False when the length is not allowed. */\n function settle(nextStart: AdDate | null, nextEnd: AdDate | null): boolean {\n const [a, b] = ordered(nextStart, nextEnd);\n if (a !== nextStart) {\n [startText, endText] = [endText, startText];\n }\n const tooFar = a && b ? lengthError(a, b) : null;\n error = tooFar ?? error;\n commit(a, tooFar ? null : b, true);\n\n return tooFar === null;\n }\n\n function pick(from: CalendarDate | null, to: CalendarDate | null): void {\n emitter.act(() => {\n const a = from ? toCalendar(from, 'AD') : null;\n const b = to ? toCalendar(to, 'AD') : null;\n error = null;\n startText = format(a);\n endText = format(b);\n const allowed = settle(a, b);\n if (b && allowed && (options.closeOnSelect ?? true)) {\n open = false;\n }\n });\n }\n\n const actions: DateRangePickerActions = {\n type(field, text) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n if (options.mask !== false) {\n text = maskDateText(text, field === 'start' ? startText : endText);\n }\n if (field === 'start') {\n startText = text;\n } else {\n endText = text;\n }\n const result = parseInput(\n text,\n calendar,\n inputLimits(options, panel),\n localeOf(options),\n formatOf(options),\n );\n const date = result.kind === 'date' ? result.date : null;\n error = result.kind === 'error' ? { ...result.error, field } : null;\n const other = field === 'start' ? end : start;\n const otherError = other\n ? checkDate(other, calendar, inputLimits(options, panel), localeOf(options))\n : null;\n if (!error && otherError) {\n error = { ...otherError, field: field === 'start' ? 'end' : 'start' };\n }\n if (field === 'start') {\n settle(date, end);\n } else {\n settle(start, date);\n }\n });\n },\n blur(field) {\n emitter.act(() => {\n if (error?.field === field) {\n return;\n }\n if (field === 'start') {\n startText = format(start);\n } else if (end || error?.field !== 'range') {\n endText = format(end);\n }\n });\n },\n clear() {\n emitter.act(() => {\n startText = '';\n endText = '';\n error = null;\n commit(null, null, true);\n });\n },\n setValue(next) {\n emitter.act(() => {\n applyValue(next);\n });\n },\n open() {\n emitter.act(() => {\n open = true;\n panel.actions.goTo(start ?? todayOf(options));\n });\n },\n close() {\n emitter.act(() => {\n open = false;\n });\n },\n toggle() {\n if (open) {\n actions.close();\n } else {\n actions.open();\n }\n },\n switchCalendar(next) {\n if (options.calendar !== undefined || next === calendar || destroyed) {\n return;\n }\n emitter.act(() => {\n calendar = next;\n if (!error) {\n startText = format(start);\n endText = format(end);\n }\n syncPanel();\n emitter.after(() => options.onCalendarChange?.(next));\n });\n },\n select(day) {\n let picked = false;\n if (!destroyed) {\n emitter.act(() => {\n picked = panel.actions.select(day);\n });\n }\n\n return picked;\n },\n applyPreset(id) {\n const preset = resolvedPresets().find((entry) => entry.id === id);\n if (destroyed || !preset?.range) {\n return false;\n }\n pick(preset.range.start, preset.range.end);\n\n return true;\n },\n reset() {\n emitter.act(() => {\n const [a, b] = ordered(\n readIso(options.defaultValue?.start),\n readIso(options.defaultValue?.end),\n );\n error = null;\n startText = format(a);\n endText = format(b);\n commit(a, b, true);\n });\n },\n };\n\n /** An outside value: replaces the texts only when the value differs (echo guard). */\n function applyValue(next: RangeValue | undefined): void {\n const [a, b] = ordered(readIso(next?.start), readIso(next?.end));\n const incoming = valueOf(a, b);\n if (incoming.start === value.start && incoming.end === value.end) {\n return;\n }\n error = null;\n startText = format(a);\n endText = format(b);\n commit(a, b, false);\n }\n\n return {\n getState: () => snapshot,\n subscribe: (listener) => emitter.subscribe(listener),\n setOptions(changes) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n const before = { calendar, locale: localeOf(options), format: formatOf(options) };\n options = { ...options, ...changes };\n if (options.calendar !== undefined) {\n calendar = options.calendar;\n }\n if ('value' in changes) {\n applyValue(changes.value);\n }\n const looksChanged =\n before.calendar !== calendar ||\n before.locale !== localeOf(options) ||\n before.format !== formatOf(options);\n if (looksChanged && !error) {\n startText = format(start);\n endText = format(end);\n }\n syncPanel();\n });\n },\n actions,\n calendar: panel,\n destroy() {\n destroyed = true;\n panel.destroy();\n emitter.clear();\n },\n };\n}\n\nfunction ordered(a: AdDate | null, b: AdDate | null): [AdDate | null, AdDate | null] {\n return a && b && compareDates(b, a) < 0 ? [b, a] : [a, b];\n}\n\nfunction valueOf(start: AdDate | null, end: AdDate | null): RangeValue {\n return Object.freeze({\n start: start ? toIsoDate(start) : '',\n end: end ? toIsoDate(end) : '',\n });\n}\n","import {\n formatMessage,\n getLocale,\n toCalendar,\n toIsoDate,\n type AdDate,\n type CalendarSystem,\n} from '@nepdatejs/core';\nimport { createCalendar, isDayList } from '@nepdatejs/calendar';\nimport { createEmitter, inputLimits, localeOf, panelOptions } from './base';\nimport { formatInput, parseInput, placeholderText, readIso } from './input';\nimport { maskDateText } from './mask';\nimport type {\n DateDetail,\n DateError,\n MultiDatePickerActions,\n MultiDatePickerOptions,\n MultiDatePickerState,\n MultiDatePickerStore,\n} from './types';\n\nconst SEPARATOR = /[,\\s\\u060c]+/;\n\n/**\n * A picker for several separate days (PICK-001). The value is a sorted list of\n * AD \"YYYY-MM-DD\" strings; the input lists the days in the calendar on screen,\n * separated by \", \", and clicking a day in the panel adds or removes it. The\n * list is always written as YYYY-MM-DD so it can be typed back.\n */\nexport function createMultiDatePicker(\n initial: MultiDatePickerOptions = {},\n): MultiDatePickerStore {\n let options: MultiDatePickerOptions = { ...initial };\n let calendar: CalendarSystem = options.calendar ?? options.defaultCalendar ?? 'BS';\n let dates = readAll(options.value ?? options.defaultValue);\n let value = valuesOf(dates);\n let text = format(dates);\n let error: DateError | null = null;\n /** False while the typed text has a problem: then it is left as typed. */\n let textOk = true;\n let open = false;\n let destroyed = false;\n\n const panel = createCalendar({\n ...panelOptions(options, calendar),\n selectionMode: 'multiple',\n selected: dates,\n onSelect: (selection) => {\n if (isDayList(selection)) {\n pick(selection.map((day) => toCalendar(day, 'AD')));\n }\n },\n });\n let snapshot = build();\n const emitter = createEmitter(() => {\n snapshot = build();\n });\n panel.subscribe(() => {\n emitter.notify();\n });\n\n function build(): MultiDatePickerState {\n return Object.freeze({\n value,\n dates: detailsOf(dates),\n text,\n calendar,\n canSwitchCalendar: options.calendar === undefined,\n open: open || options.inline === true,\n inline: options.inline === true,\n error,\n placeholder: placeholderText(calendar, localeOf(options)),\n calendarState: panel.getState(),\n });\n }\n\n function format(list: readonly AdDate[]): string {\n return list\n .map((day) => formatInput(day, calendar, 'iso', localeOf(options)))\n .join(', ');\n }\n\n function tooMany(count: number): DateError | null {\n const max = options.maxDates;\n\n return max !== undefined && count > max\n ? {\n code: 'tooMany',\n message: formatMessage(getLocale(localeOf(options)).messages.tooManyDates, {\n max: String(max),\n }),\n }\n : null;\n }\n\n function syncPanel(): void {\n panel.setOptions({ ...panelOptions(options, calendar), selected: dates });\n }\n\n /** Change the value; queue onChange when it differs and the user caused it. */\n function setDates(next: readonly AdDate[], byUser: boolean): void {\n const sorted = unique(next);\n const nextValue = valuesOf(sorted);\n const changed = nextValue.join() !== value.join();\n dates = sorted;\n value = nextValue;\n syncPanel();\n if (changed && byUser) {\n const details = detailsOf(sorted);\n emitter.after(() => options.onChange?.(nextValue, details));\n }\n }\n\n function pick(next: readonly AdDate[]): void {\n emitter.act(() => {\n error = tooMany(next.length);\n if (error) {\n syncPanel(); // undo the calendar's toggle\n return;\n }\n text = format(unique(next));\n textOk = true;\n setDates(next, true);\n if (options.closeOnSelect === true) {\n open = false;\n }\n });\n }\n\n const actions: MultiDatePickerActions = {\n type(next) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n text = options.mask === false ? next : maskLast(next, text);\n const limits = inputLimits(options, panel);\n const parsed: AdDate[] = [];\n let firstError: DateError | null = null;\n for (const token of text.split(SEPARATOR)) {\n const result = parseInput(token, calendar, limits, localeOf(options));\n if (result.kind === 'date') {\n parsed.push(result.date);\n } else if (result.kind === 'error') {\n firstError ??= result.error;\n }\n }\n error = firstError ?? tooMany(unique(parsed).length);\n textOk = error === null;\n setDates(parsed, true);\n });\n },\n blur() {\n emitter.act(() => {\n if (textOk) {\n text = format(dates);\n }\n });\n },\n clear() {\n emitter.act(() => {\n text = '';\n error = null;\n textOk = true;\n setDates([], true);\n });\n },\n setValue(next) {\n emitter.act(() => {\n applyValue(next);\n });\n },\n open() {\n emitter.act(() => {\n open = true;\n const first = dates[0];\n if (first) {\n panel.actions.goTo(first);\n }\n });\n },\n close() {\n emitter.act(() => {\n open = false;\n });\n },\n toggle() {\n if (open) {\n actions.close();\n } else {\n actions.open();\n }\n },\n switchCalendar(next) {\n if (options.calendar !== undefined || next === calendar || destroyed) {\n return;\n }\n emitter.act(() => {\n calendar = next;\n if (textOk) {\n text = format(dates);\n }\n syncPanel();\n emitter.after(() => options.onCalendarChange?.(next));\n });\n },\n select(day) {\n if (destroyed) {\n return false;\n }\n const before = value;\n emitter.act(() => {\n panel.actions.select(day);\n });\n\n return value !== before;\n },\n remove(iso) {\n emitter.act(() => {\n error = null;\n const next = dates.filter((day) => toIsoDate(day) !== iso);\n text = format(next);\n textOk = true;\n setDates(next, true);\n });\n },\n reset() {\n emitter.act(() => {\n const next = readAll(options.defaultValue);\n error = null;\n text = format(next);\n textOk = true;\n setDates(next, true);\n });\n },\n };\n\n /** An outside value: replaces the text only when it is a different value (echo guard). */\n function applyValue(next: readonly string[] | undefined): void {\n const nextDates = readAll(next);\n if (valuesOf(nextDates).join() === value.join()) {\n return;\n }\n error = null;\n text = format(nextDates);\n textOk = true;\n setDates(nextDates, false);\n }\n\n return {\n getState: () => snapshot,\n subscribe: (listener) => emitter.subscribe(listener),\n setOptions(changes) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n const before = { calendar, locale: localeOf(options) };\n options = { ...options, ...changes };\n if (options.calendar !== undefined) {\n calendar = options.calendar;\n }\n if ('value' in changes) {\n applyValue(changes.value);\n }\n if (\n (before.calendar !== calendar || before.locale !== localeOf(options)) &&\n textOk\n ) {\n text = format(dates);\n }\n syncPanel();\n });\n },\n actions,\n calendar: panel,\n destroy() {\n destroyed = true;\n panel.destroy();\n emitter.clear();\n },\n };\n}\n\nfunction readAll(values: readonly string[] | undefined): AdDate[] {\n return unique((values ?? []).map(readIso).filter((day) => day !== null));\n}\n\nfunction unique(list: readonly AdDate[]): AdDate[] {\n const byValue = new Map(list.map((day) => [toIsoDate(day), day]));\n\n return [...byValue.entries()]\n .sort(([a], [b]) => (a < b ? -1 : 1))\n .map(([, day]) => day);\n}\n\nfunction valuesOf(list: readonly AdDate[]): readonly string[] {\n return Object.freeze(list.map((day) => toIsoDate(day)));\n}\n\nfunction detailsOf(list: readonly AdDate[]): readonly DateDetail[] {\n return Object.freeze(\n list.map((day) => Object.freeze({ ad: day, bs: toCalendar(day, 'BS') })),\n );\n}\n\n/** Mask only the day being typed: the text after the last separator. */\nfunction maskLast(next: string, previous: string): string {\n if (!next.startsWith(previous)) {\n return next;\n }\n const match = /^(.*[,\\s\\u060c])?([^,\\s\\u060c]*)$/.exec(next);\n const head = match?.[1] ?? '';\n const tail = match?.[2] ?? next;\n const previousTail = previous.length > head.length ? previous.slice(head.length) : '';\n\n return head + maskDateText(tail, previousTail);\n}\n","import {\n formatNumber,\n formatTime,\n fromIsoDateTime,\n getConfig,\n getLocale,\n now,\n parseTime,\n toIsoDate,\n toIsoDateTime,\n type AdDate,\n type BsDate,\n type CalendarDate,\n type CalendarSystem,\n type TimeOfDay,\n} from '@nepdatejs/core';\nimport type { CalendarState, CalendarStore } from '@nepdatejs/calendar';\nimport { createEmitter, localeOf } from './base';\nimport { createDatePicker } from './picker';\nimport type { PresetState, SinglePreset } from './presets';\nimport type { DateError, PickerBaseOptions } from './types';\n\nexport interface DateTimeDetail {\n readonly ad: AdDate;\n readonly bs: BsDate;\n readonly time: TimeOfDay;\n /** The same instant as the value. */\n readonly iso: string;\n}\n\nexport interface DateTimePickerOptions extends PickerBaseOptions {\n /** An ISO timestamp with offset (\"2026-10-18T14:30:00+05:45\"), a local \"YYYY-MM-DDTHH:MM\", or \"\". */\n readonly value?: string | undefined;\n readonly defaultValue?: string | undefined;\n readonly onChange?:\n ((value: string, detail: DateTimeDetail | null) => void) | undefined;\n /** The zone the date and time are read in, and whose offset the value carries. Default: core config (Nepal). */\n readonly timeZone?: string | undefined;\n /** Show 12-hour times (2:30 PM). Default false (14:30). */\n readonly hour12?: boolean | undefined;\n /** Minutes offered in the column: 1–30. Default 5. Any minute can still be typed. */\n readonly minuteStep?: number | undefined;\n /** The time used when a date is picked before any time. Default \"00:00\". */\n readonly defaultTime?: string | undefined;\n readonly presets?: readonly SinglePreset[] | undefined;\n}\n\n/** One hour or minute in the time columns (Figma \"Time Item\"). */\nexport interface TimeCell {\n readonly value: number;\n readonly label: string;\n readonly isSelected: boolean;\n}\n\nexport interface DateTimePickerState {\n /** ISO timestamp with the zone's offset, or \"\" until both date and time are valid. */\n readonly value: string;\n readonly detail: DateTimeDetail | null;\n readonly dateText: string;\n readonly timeText: string;\n readonly time: TimeOfDay | null;\n readonly calendar: CalendarSystem;\n readonly canSwitchCalendar: boolean;\n /** The panel is showing. Always true for an inline picker. */\n readonly open: boolean;\n /** The calendar sits in the page and never closes (option `inline`). */\n readonly inline: boolean;\n readonly error: (DateError & { readonly field: 'date' | 'time' }) | null;\n readonly equivalentText: string | null;\n readonly placeholder: string;\n readonly timePlaceholder: string;\n readonly hours: readonly TimeCell[];\n readonly minutes: readonly TimeCell[];\n readonly presets: readonly PresetState[];\n readonly calendarState: CalendarState;\n}\n\nexport interface DateTimePickerActions {\n typeDate(text: string): void;\n typeTime(text: string): void;\n blurDate(): void;\n blurTime(): void;\n /** Pick a day; the time stays (or becomes defaultTime). Returns false when disabled. */\n selectDate(date: CalendarDate): boolean;\n selectHour(hour: number): void;\n selectMinute(minute: number): void;\n /** Today and the current time in the zone. Returns false when today is not allowed. */\n selectNow(): boolean;\n applyPreset(id: string): boolean;\n open(): void;\n close(): void;\n toggle(): void;\n clear(): void;\n setValue(value: string): void;\n switchCalendar(calendar: CalendarSystem): void;\n reset(): void;\n}\n\nexport interface DateTimePickerStore {\n getState(): DateTimePickerState;\n subscribe(listener: () => void): () => void;\n setOptions(changes: Partial<DateTimePickerOptions>): void;\n readonly actions: DateTimePickerActions;\n readonly calendar: CalendarStore;\n destroy(): void;\n}\n\n/**\n * A BS/AD date and time picker without UI. The date half is a regular date\n * picker; the value is the instant as an ISO timestamp carrying the zone's\n * offset, so servers store one unambiguous moment.\n */\nexport function createDateTimePicker(\n initial: DateTimePickerOptions = {},\n): DateTimePickerStore {\n let options: DateTimePickerOptions = { ...initial };\n const start = fromIsoDateTime(options.value ?? options.defaultValue, zone());\n let time: TimeOfDay | null = start?.time ?? null;\n let timeText = time ? fmt(time) : '';\n let timeError: DateError | null = null;\n let value = '';\n let destroyed = false;\n\n const datePicker = createDatePicker({\n ...dateOptions(),\n defaultValue: start ? toIsoDay(start.date) : '',\n closeOnSelect: false,\n onChange: () => {\n emitter.act(() => {\n if (datePicker.getState().date && !time) {\n time = parseTime(options.defaultTime) ?? Object.freeze({ hour: 0, minute: 0 });\n timeText = fmt(time);\n timeError = null;\n }\n commit(true);\n });\n },\n });\n value = compose();\n let snapshot = build();\n const emitter = createEmitter(() => {\n snapshot = build();\n });\n datePicker.subscribe(() => {\n emitter.notify();\n });\n\n function zone(): string {\n return options.timeZone ?? getConfig().timeZone;\n }\n\n function fmt(t: TimeOfDay): string {\n return formatTime(t, { hour12: options.hour12 ?? false, locale: localeOf(options) });\n }\n\n function dateOptions(): PickerBaseOptions & {\n presets?: readonly SinglePreset[] | undefined;\n } {\n const {\n value: _value,\n defaultValue: _default,\n onChange: _onChange,\n timeZone: _zone,\n hour12: _hour12,\n minuteStep: _step,\n defaultTime: _defaultTime,\n ...rest\n } = options;\n\n return rest;\n }\n\n function compose(): string {\n const day = datePicker.getState().date;\n\n return day && time ? toIsoDateTime(day.ad, time, zone()) : '';\n }\n\n function detail(): DateTimeDetail | null {\n const day = datePicker.getState().date;\n\n return day && time && value\n ? Object.freeze({ ad: day.ad, bs: day.bs, time, iso: value })\n : null;\n }\n\n /** Recompute the value; queue onChange when it changed and the user caused it. */\n function commit(byUser: boolean): void {\n const next = compose();\n if (next === value) {\n return;\n }\n value = next;\n if (byUser) {\n const info = detail();\n emitter.after(() => options.onChange?.(next, info));\n }\n }\n\n function build(): DateTimePickerState {\n const inner = datePicker.getState();\n const locale = localeOf(options);\n const step = Math.min(30, Math.max(1, Math.floor(options.minuteStep ?? 5)));\n const { am, pm } = getLocale(locale).time;\n const hour12 = options.hour12 ?? false;\n\n return Object.freeze({\n value,\n detail: detail(),\n dateText: inner.text,\n timeText,\n time,\n calendar: inner.calendar,\n canSwitchCalendar: inner.canSwitchCalendar,\n open: inner.open,\n inline: inner.inline,\n error: inner.error\n ? { ...inner.error, field: 'date' as const }\n : timeError\n ? { ...timeError, field: 'time' as const }\n : null,\n equivalentText: inner.equivalentText,\n placeholder: inner.placeholder,\n timePlaceholder: hour12 ? `h:mm ${am}` : 'HH:MM',\n hours: Array.from({ length: 24 }, (_, hour) =>\n Object.freeze({\n value: hour,\n label: hour12\n ? `${formatNumber(hour % 12 === 0 ? 12 : hour % 12, locale)} ${hour < 12 ? am : pm}`\n : formatNumber(String(hour).padStart(2, '0'), locale),\n isSelected: time?.hour === hour,\n }),\n ),\n minutes: Array.from({ length: Math.ceil(60 / step) }, (_, index) =>\n Object.freeze({\n value: index * step,\n label: formatNumber(String(index * step).padStart(2, '0'), locale),\n isSelected: time?.minute === index * step,\n }),\n ),\n presets: inner.presets,\n calendarState: inner.calendarState,\n });\n }\n\n function setTime(next: TimeOfDay | null, text: string, byUser: boolean): void {\n time = next;\n timeText = text;\n timeError = null;\n commit(byUser);\n }\n\n const actions: DateTimePickerActions = {\n typeDate(text) {\n datePicker.actions.type(text);\n },\n blurDate() {\n datePicker.actions.blur();\n },\n typeTime(text) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n const parsed = parseTime(text);\n if (text.trim() === '' || parsed) {\n setTime(parsed, text, true);\n } else {\n time = null;\n timeText = text;\n timeError = {\n code: 'format',\n message: getLocale(localeOf(options)).messages.invalidTime,\n };\n commit(true);\n }\n });\n },\n blurTime() {\n emitter.act(() => {\n if (!timeError && time) {\n timeText = fmt(time);\n }\n });\n },\n selectDate(date) {\n return !destroyed && datePicker.actions.select(date);\n },\n selectHour(hour) {\n emitter.act(() => {\n const next = Object.freeze({ hour, minute: time?.minute ?? 0 });\n setTime(next, fmt(next), true);\n });\n },\n selectMinute(minute) {\n emitter.act(() => {\n const next = Object.freeze({ hour: time?.hour ?? 0, minute });\n setTime(next, fmt(next), true);\n });\n },\n selectNow() {\n if (destroyed) {\n return false;\n }\n const current = now(zone());\n let picked = false;\n emitter.act(() => {\n time = current.time;\n timeText = fmt(current.time);\n timeError = null;\n picked = datePicker.actions.select(current.date);\n commit(true);\n });\n\n return picked;\n },\n applyPreset(id) {\n return !destroyed && datePicker.actions.applyPreset(id);\n },\n open() {\n datePicker.actions.open();\n },\n close() {\n datePicker.actions.close();\n },\n toggle() {\n datePicker.actions.toggle();\n },\n clear() {\n emitter.act(() => {\n datePicker.actions.setValue('');\n setTime(null, '', true);\n });\n },\n setValue(next) {\n emitter.act(() => {\n applyValue(next);\n });\n },\n switchCalendar(calendar) {\n datePicker.actions.switchCalendar(calendar);\n },\n reset() {\n emitter.act(() => {\n const start = fromIsoDateTime(options.defaultValue, zone());\n datePicker.actions.setValue(start ? toIsoDay(start.date) : '');\n setTime(start?.time ?? null, start ? fmt(start.time) : '', true);\n });\n },\n };\n\n /** An outside value; ignored when it is the instant already shown (echo guard). */\n function applyValue(next: string | undefined): void {\n const parsed = fromIsoDateTime(next, zone());\n const incoming = parsed ? toIsoDateTime(parsed.date, parsed.time, zone()) : '';\n if (incoming === value) {\n return;\n }\n datePicker.actions.setValue(parsed ? toIsoDay(parsed.date) : '');\n time = parsed?.time ?? null;\n timeText = time ? fmt(time) : '';\n timeError = null;\n commit(false);\n }\n\n return {\n getState: () => snapshot,\n subscribe: (listener) => emitter.subscribe(listener),\n setOptions(changes) {\n if (destroyed) {\n return;\n }\n emitter.act(() => {\n options = { ...options, ...changes };\n datePicker.setOptions(dateOptions());\n if ('value' in changes) {\n applyValue(changes.value);\n }\n if (time && !timeError) {\n timeText = fmt(time);\n }\n commit(false);\n });\n },\n actions,\n calendar: datePicker.calendar,\n destroy() {\n destroyed = true;\n datePicker.destroy();\n emitter.clear();\n },\n };\n}\n\nfunction toIsoDay(date: CalendarDate): string {\n return toIsoDate(date);\n}\n"],"mappings":"A,4FAAA,IAAMC,EAAQ,WACRC,EAAkB,OAAO,IAAID,EAAM,OAAO,EAC1CE,EAAiB,OAAO,KAAKF,EAAM,MAAMA,EAAM,OAAOA,EAAM,IAAI,EAWtE,SAAgBG,EAAa,EAAc,EAAW,GAAY,CAChE,GAAIC,EAAK,QAAUC,EAAS,QAAU,CAACD,EAAK,WAAWC,CAAQ,EAC7D,OAAOD,EAET,GAAIC,EAAS,SAAS,GAAG,GAAK,UAAU,KAAKD,EAAK,MAAMC,EAAS,MAAM,CAAC,EAEtE,OAAOA,EAET,GAAIJ,EAAY,KAAKG,CAAI,EAAG,CAE1B,IAAIE,EAAMF,EAAK,MAAM,EAAG,CAAC,EASzB,OARIA,EAAK,QAAU,IACjB,GAAO,KAET,GAAOA,EAAK,MAAM,EAAG,CAAC,EAClBA,EAAK,QAAU,IACjB,GAAO,KAGFE,EAAMF,EAAK,MAAM,CAAC,CAC3B,CACA,IAAMG,EAAYL,EAAW,KAAKE,CAAI,EAMtC,OALIG,EAEK,GAAGA,EAAU,IAAM,GAAG,GAAGA,EAAU,IAAM,KAG3CH,CACT,CCxCA,IAAMI,EAAU,CACf,UAAW,KACX,WAAY,OACZ,gBAAiB,KACjB,MAAO,CACN,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,CACC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,CACD,CACD,EChyDA,IAAIC,EAAoB,cAAc,UAAW,CAChD,YAAY,EAAM,EAAS,CAC1B,MAAMC,CAAO,EACb,KAAK,KAAO,oBACZ,KAAK,KAAOC,CACb,CACD,EAcA,SAASC,EAAW,EAAO,CAC1B,GAAI,CAAC,OAAO,cAAcC,CAAK,EAAG,MAAM,IAAIJ,EAAkB,mBAAoB,GAAG,OAAOI,CAAK,EAAE,gCAAgC,EACnI,OAAOA,CACR,CAEA,SAASC,EAAU,EAAO,CACzB,QAASC,EAAQ,GAAK,EAAI,GAAK,CAChC,CAGA,IAAMC,EAAa,CAClB,UACA,SACA,OACA,UACA,SACA,SACA,SACA,UACA,QACA,OACA,SACA,SACD,EACMC,EAAa,CAClB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,UACD,EACMC,EAAK,CACV,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,EACA,SAAU,CACT,KAAM,CACL,SACA,SACA,UACA,YACA,WACA,SACA,UACD,EACA,MAAO,CACN,MACA,MACA,MACA,MACA,MACA,MACA,KACD,EACA,OAAQ,CACP,KACA,KACA,KACA,KACA,KACA,KACA,IACD,CACD,EACA,OAAQ,CACP,GAAI,CACH,KAAMD,EACN,MAAOA,EAAW,IAAK,GAASE,EAAK,MAAM,EAAG,CAAC,CAAC,CACjD,EACA,GAAI,CACH,KAAMH,EACN,MAAOA,EAAW,IAAK,GAASG,EAAK,MAAM,EAAG,CAAC,CAAC,CACjD,CACD,EACA,cAAe,CACd,GAAI,KACJ,GAAI,IACL,EACA,OAAQ,CACP,MAAO,QACP,MAAO,aACP,cAAe,iBACf,UAAW,aACX,aAAc,gBACd,SAAU,YACV,MAAO,QACP,KAAM,OACN,aAAc,gBACd,WAAY,gBACZ,SAAU,WACV,QAAS,YACT,WAAY,cACZ,KAAM,OACN,KAAM,OACN,OAAQ,SACR,IAAK,MACL,KAAM,MACP,EACA,KAAM,CACL,GAAI,KACJ,GAAI,IACL,EACA,QAAS,CACR,MAAO,QACP,UAAW,YACX,SAAU,WACV,SAAU,YACV,SAAU,YACV,UAAW,cACX,WAAY,eACZ,UAAW,aACX,UAAW,aACX,SAAU,YACV,eAAgB,mBAChB,eAAgB,kBACjB,EACA,SAAU,CACT,cAAe,CACd,GAAI,kCACJ,GAAI,gCACL,EACA,WAAY,qCACZ,UAAW,yBACX,WAAY,2BACZ,YAAa,8BACb,cAAe,8BACf,aAAc,6BACd,aAAc,8BACd,YAAa,wBACd,CACD,EAGMC,EAAW,CAChB,QACA,MACA,OACA,OACA,MACA,OACA,UACA,SACA,MACA,MACA,UACA,KACD,EACMC,EAAW,CAChB,QACA,YACA,QACA,SACA,KACA,MACA,QACA,QACA,aACA,UACA,WACA,UACD,EAGMC,kBAA0B,IAAI,IAAI,CAAC,CAAC,KAAMJ,CAAE,EAAG,CAAC,KAAM,CAC3D,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,EACA,SAAU,CACT,KAAM,CACL,SACA,SACA,WACA,SACA,UACA,WACA,QACD,EACA,MAAO,CACN,MACA,MACA,QACA,MACA,OACA,QACA,KACD,EACA,OAAQ,CACP,IACA,KACA,KACA,KACA,KACA,KACA,GACD,CACD,EACA,OAAQ,CACP,GAAI,CACH,KAAMG,EACN,MAAOA,CACR,EACA,GAAI,CACH,KAAMD,EACN,MAAOA,CACR,CACD,EACA,cAAe,CACd,GAAI,QACJ,GAAI,QACL,EACA,OAAQ,CACP,MAAO,KACP,MAAO,kBACP,cAAe,gBACf,UAAW,cACX,aAAc,eACd,SAAU,aACV,MAAO,QACP,KAAM,OACN,aAAc,oBACd,WAAY,kBACZ,SAAU,SACV,QAAS,YACT,WAAY,cACZ,KAAM,MACN,KAAM,QACN,OAAQ,QACR,IAAK,QACL,KAAM,KACP,EACA,KAAM,CACL,GAAI,YACJ,GAAI,SACL,EACA,QAAS,CACR,MAAO,KAC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"}