@aquera/nile-elements 2.0.19 → 2.0.20

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.
Files changed (87) hide show
  1. package/README.md +5 -0
  2. package/demo/index.js +0 -1
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +1254 -488
  6. package/dist/nile-badge/index.cjs.js +1 -1
  7. package/dist/nile-badge/index.esm.js +1 -1
  8. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  9. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  10. package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
  11. package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
  12. package/dist/nile-badge/nile-badge.css.esm.js +24 -3
  13. package/dist/nile-badge/nile-badge.esm.js +5 -3
  14. package/dist/nile-calendar/index.cjs.js +1 -1
  15. package/dist/nile-calendar/index.esm.js +1 -1
  16. package/dist/nile-calendar/nile-calendar.cjs.js +2 -1
  17. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  18. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  19. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  20. package/dist/nile-calendar/nile-calendar.css.esm.js +357 -2
  21. package/dist/nile-calendar/nile-calendar.esm.js +365 -41
  22. package/dist/nile-calendar/timezones.cjs.js +1 -1
  23. package/dist/nile-calendar/timezones.cjs.js.map +1 -1
  24. package/dist/nile-calendar/timezones.esm.js +1 -1
  25. package/dist/nile-date-time-picker/index.cjs.js +2 -0
  26. package/dist/nile-date-time-picker/index.cjs.js.map +1 -0
  27. package/dist/nile-date-time-picker/index.esm.js +1 -0
  28. package/dist/nile-date-time-picker/nile-date-time-picker.cjs.js +2 -0
  29. package/dist/nile-date-time-picker/nile-date-time-picker.cjs.js.map +1 -0
  30. package/dist/nile-date-time-picker/nile-date-time-picker.css.cjs.js +2 -0
  31. package/dist/nile-date-time-picker/nile-date-time-picker.css.cjs.js.map +1 -0
  32. package/dist/nile-date-time-picker/nile-date-time-picker.css.esm.js +13 -0
  33. package/dist/nile-date-time-picker/nile-date-time-picker.esm.js +53 -0
  34. package/dist/src/index.d.ts +1 -0
  35. package/dist/src/index.js +1 -0
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/nile-badge/nile-badge.css.js +24 -3
  38. package/dist/src/nile-badge/nile-badge.css.js.map +1 -1
  39. package/dist/src/nile-badge/nile-badge.d.ts +7 -4
  40. package/dist/src/nile-badge/nile-badge.js +22 -5
  41. package/dist/src/nile-badge/nile-badge.js.map +1 -1
  42. package/dist/src/nile-badge/nile-badge.test.js +88 -0
  43. package/dist/src/nile-badge/nile-badge.test.js.map +1 -1
  44. package/dist/src/nile-calendar/nile-calendar.css.js +355 -0
  45. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  46. package/dist/src/nile-calendar/nile-calendar.d.ts +175 -0
  47. package/dist/src/nile-calendar/nile-calendar.js +1726 -26
  48. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  49. package/dist/src/nile-calendar/nile-calendar.test.d.ts +1 -0
  50. package/dist/src/nile-calendar/nile-calendar.test.js +3580 -0
  51. package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
  52. package/dist/src/nile-calendar/timezones.d.ts +21 -0
  53. package/dist/src/nile-calendar/timezones.js +49 -0
  54. package/dist/src/nile-calendar/timezones.js.map +1 -1
  55. package/dist/src/nile-date-time-picker/index.d.ts +1 -0
  56. package/dist/src/nile-date-time-picker/index.js +2 -0
  57. package/dist/src/nile-date-time-picker/index.js.map +1 -0
  58. package/dist/src/nile-date-time-picker/nile-date-time-picker.css.d.ts +11 -0
  59. package/dist/src/nile-date-time-picker/nile-date-time-picker.css.js +49 -0
  60. package/dist/src/nile-date-time-picker/nile-date-time-picker.css.js.map +1 -0
  61. package/dist/src/nile-date-time-picker/nile-date-time-picker.d.ts +173 -0
  62. package/dist/src/nile-date-time-picker/nile-date-time-picker.js +1270 -0
  63. package/dist/src/nile-date-time-picker/nile-date-time-picker.js.map +1 -0
  64. package/dist/src/nile-date-time-picker/nile-date-time-picker.test.d.ts +143 -0
  65. package/dist/src/nile-date-time-picker/nile-date-time-picker.test.js +7277 -0
  66. package/dist/src/nile-date-time-picker/nile-date-time-picker.test.js.map +1 -0
  67. package/dist/src/version.js +1 -1
  68. package/dist/src/version.js.map +1 -1
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/dist/utilities/animation-registry.cjs.js +1 -1
  71. package/dist/utilities/animation-registry.cjs.js.map +1 -1
  72. package/dist/utilities/animation-registry.esm.js +1 -1
  73. package/package.json +3 -1
  74. package/scripts/coverage-report.mjs +96 -0
  75. package/src/index.ts +1 -0
  76. package/src/nile-badge/nile-badge.css.ts +24 -3
  77. package/src/nile-badge/nile-badge.test.ts +102 -0
  78. package/src/nile-badge/nile-badge.ts +28 -5
  79. package/src/nile-calendar/nile-calendar.css.ts +355 -0
  80. package/src/nile-calendar/nile-calendar.test.ts +3793 -0
  81. package/src/nile-calendar/nile-calendar.ts +1760 -28
  82. package/src/nile-calendar/timezones.ts +57 -0
  83. package/src/nile-date-time-picker/index.ts +1 -0
  84. package/src/nile-date-time-picker/nile-date-time-picker.css.ts +54 -0
  85. package/src/nile-date-time-picker/nile-date-time-picker.test.ts +7886 -0
  86. package/src/nile-date-time-picker/nile-date-time-picker.ts +1153 -0
  87. package/vscode-html-custom-data.json +161 -6
@@ -1 +1 @@
1
- {"version":3,"file":"nile-calendar.cjs.js","sources":["../../../src/nile-calendar/nile-calendar.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n html,\n CSSResultArray,\n TemplateResult,\n nothing\n} from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { styles } from './nile-calendar.css';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport { ClearMode } from './nile-calendar.enum';\nimport type { PropertyValueMap } from 'lit';\ntype NileCalendarDateRange={ startDate: string, endDate: string }\ntype TimeUnits= 'minutes'|'hours'|'days'|'weeks'|'months';\n/**\n * Nile icon component.\n *\n * @tag nile-calendar\n *\n */\n@customElement('nile-calendar')\nexport class NileCalendar extends NileElement {\n /**\n * The styles for NileCalendar\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n\n\n @property({ type: String, attribute: 'value' }) valueAttribute: | string | null = null;\n\n @property({ type: String, attribute:true, reflect:true }) allowedDates: string = JSON.stringify({});\n\n @property({ type: Boolean, reflect: true }) range = false;\n\n @property({ type: Boolean, attribute: true, reflect:true }) hideTypes = false;\n\n @property({ type: Boolean, reflect: true }) doubleClickUnselect = false;\n\n @property({ type: Boolean, reflect: true }) allowClear = false;\n\n @property({ type: String, reflect: true }) type :'absolute' | 'relative' = 'absolute';\n\n @property({ type: String }) selectedUnit: TimeUnits;\n\n @property({ type: Number }) selectedValue: number;\n\n @property({ type: Array, attribute: 'hide-duration-fields' }) hideDurationFields: String[] = [];\n \n @property({ type: Boolean}) showManualInputs :boolean=false;\n\n @property({ type: Number , attribute: true, reflect: true }) startYear: number;\n\n @property({ type: Number , attribute: true, reflect: true }) endYear: number;\n\n @property({ type: Boolean, attribute:true, reflect: true}) showMonthDropdown = false;\n \n @property({ type: Boolean, attribute:true, reflect: true}) showYearDropdown = false;\n\n @property({ type: String, reflect: true, attribute: true}) dateFormat: string = 'MM/DD/YYYY';\n\n\n @state() startDate: Date | null = null;\n\n @state() endDate: Date | null = null;\n\n @state() isSelectingStart = true;\n\n @state() hideInput: Boolean = false;\n\n @state() value: Date | null;\n\n @state() currentMonth: number = new Date().getMonth();\n\n @state() currentYear: number = new Date().getFullYear();\n\n @state() allowedDatesLocal: NileCalendarDateRange | any = null;\n\n @property({ type: Boolean, attribute: true, reflect: true }) disabled = false;\n connectedCallback() {\n super.connectedCallback();\n this.initializeValue();\n this.emit('nile-init');\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.emit('nile-destroy');\n }\n\n protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has('valueAttribute')) {\n if(!this.valueAttribute){\n this.value=null;\n this.startDate=null;\n this.endDate=null;\n this.isSelectingStart=true;\n }\n const date = new Date(this.valueAttribute || '');\n if (!isNaN(date.getTime())) {\n const offset = date.getTimezoneOffset();\n this.value = new Date(date.getTime() - offset * 60 * 1000);\n this.currentMonth = this.value.getMonth();\n this.currentYear = this.value.getFullYear();\n }\n this.initializeValue();\n }\n }\n\n private get monthNames() {\n return Array.from({ length: 12 }, (_, i) =>\n new Date(0, i).toLocaleString('default', { month: 'long' })\n );\n }\n\n private get yearOptions(): number[] {\n const fallbackStart = 2000;\n const fallbackEnd = 2050;\n \n const start = this.startYear ?? fallbackStart;\n const end = this.endYear ?? fallbackEnd;\n \n if (start > end) return [];\n \n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n \n private onMonthSelected(monthIndex: number) {\n this.currentMonth = monthIndex;\n this.emit('nile-month-change', { month: monthIndex });\n }\n\n private onYearSelected(year: number) {\n this.currentYear = year;\n this.emit('nile-year-change', { year });\n }\n\n @watch('allowedDates')\n checkValidAllowedDate() {\n let newDateRange: NileCalendarDateRange | null;\n try {\n newDateRange=JSON.parse(this.allowedDates);\n } catch (error) {\n newDateRange=null;\n }\n if (!newDateRange || Object.keys(newDateRange).length == 0) {\n this.allowedDatesLocal=null;\n return;\n }\n this.hideInput=true;\n const startDate = this.getUTCDate(newDateRange.startDate)\n const endDate = this.getUTCDate(newDateRange.endDate)\n\n if (startDate > endDate) {\n console.error('StartDate must be greater than endDate');\n }\n else\n {\n this.allowedDatesLocal=newDateRange;\n }\n }\n\n private isPrevDisabled(): boolean {\n return (\n this.currentMonth === 0 &&\n this.startYear !== undefined &&\n this.currentYear <= this.startYear\n );\n }\n \n private isNextDisabled(): boolean {\n return (\n this.currentMonth === 11 &&\n this.endYear !== undefined &&\n this.currentYear >= this.endYear\n );\n }\n\n private formatDate(date: Date | null): string {\n if (!date) return '';\n \n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n \n let formatted = this.dateFormat;\n formatted = formatted.replace(/YYYY/g, String(yyyy));\n formatted = formatted.replace(/MM/g, mm);\n formatted = formatted.replace(/DD/g, dd);\n formatted = formatted.replace(/YY/g, String(yyyy).slice(-2));\n \n return formatted;\n }\n \n\n private parseDate(input: string, existingDate?: Date | null): Date | null {\n if (!input || !this.dateFormat) return null;\n const formatPattern = this.dateFormat\n .replace(/YYYY/, '(?<year>\\\\d{4})')\n .replace(/YY/, '(?<year>\\\\d{2})')\n .replace(/MM/, '(?<month>\\\\d{1,2})')\n .replace(/DD/, '(?<day>\\\\d{1,2})');\n \n const regex = new RegExp(`^${formatPattern}$`);\n const match = input.match(regex);\n if (!match || !match.groups) return null;\n \n const year = match.groups.year.length === 2 ? Number(`20${match.groups.year}`) : Number(match.groups.year);\n const month = Number(match.groups.month) - 1; \n const day = Number(match.groups.day);\n \n const date = new Date(year, month, day);\n if (existingDate) {\n date.setHours(\n existingDate.getHours(),\n existingDate.getMinutes(),\n existingDate.getSeconds(),\n );\n } else {\n date.setHours(0, 0, 0);\n }\n return date;\n }\n\nprivate handleStartDateInput(event: CustomEvent): void {\n event.stopPropagation();\n const newDate = this.parseDate(event.detail.value, this.startDate);\n if (newDate) {\n newDate.setHours(0, 0, 0);\n this.startDate = newDate;\n this.currentMonth = newDate.getMonth();\n this.currentYear = newDate.getFullYear();\n this.requestUpdate();\n }\n }\nprivate handleEndDateInput(event: CustomEvent): void {\n event.stopPropagation();\n const newDate = this.parseDate(event.detail.value, this.endDate);\n if (newDate) {\n newDate.setHours(23, 59, 59);\n this.endDate = newDate;\n this.currentMonth = newDate.getMonth();\n this.currentYear = newDate.getFullYear();\n this.requestUpdate();\n }\n }\n\n \n\n /**\n * Render method\n */\n render(): TemplateResult {\n return html`\n <div\n class=${classMap({\n base:true,\n base__range:this.range,\n })}\n part=\"calendar-container\"\n >\n <div class=${classMap({\n \"calendar-config\":true,\n \"hidden\": !this.range || (this.range && this.hideTypes)\n })}>\n <div class=\"calendar-switcher\" part=\"calendar-switcher\">\n <nile-tab-group centered @nile-tab-show=\"${this.onTypeChange}\" value=\"${this.type}\">\n <nile-tab slot=\"nav\" panel=\"absolute\" tabindex=\"${this.disabled ? '-1' : '0'}\">Absolute</nile-tab>\n <nile-tab slot=\"nav\" panel=\"relative\" tabindex=\"${this.disabled ? '-1' : '0'}\">Relative</nile-tab>\n </nile-tab-group>\n </div>\n </div>\n \n ${this.type == 'relative' ? this.renderRelativeCalendar():''}\n ${this.type == 'absolute' ? this.renderAbsoluteCalendar():''}\n\n ${!this.range?'':html`\n <div class=\"button-container\" part=\"button-container\">\n ${this.allowClear?\n html`\n <nile-button \n class=\"clear-button\"\n variant=\"secondary\"\n role=\"button\"\n ?disabled=\"${ !this.startDate || !this.endDate || this.disabled }\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.clearDate();}}\"\n @click=\"${this.clearDate}\"\n\n > Reset</nile-button>`:nothing\n }\n <nile-button \n class=\"apply-button\" \n ?disabled=\"${ !this.startDate || !this.endDate || this.disabled }\" \n @click=\"${this.confimRange}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.confimRange();}}\"\n > Apply</nile-button>\n </div>\n `}\n </div>\n `;\n }\n\n /**\n * @returns HTML content for absolute calendar\n */\n renderAbsoluteCalendar(){\n return html`\n <div class=\"calendar-wrapper\" part=\"calendar-wrapper\">\n <div class=\"calendar-container\" >\n ${this.renderMonth(\n this.currentYear,\n this.currentMonth,\n this.getDaysArray(this.currentYear, this.currentMonth)\n )}\n </div>\n </div>\n ${this.range ? html`\n <div class=\"calender-input ${this.showManualInputs ? '' : 'hidden'}\" >\n <div class=\"from\">\n <div class=\"from-date\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n label=\"From\"\n class=\"manual-input date-input\"\n placeholder=\"${this.dateFormat}\"\n value=\"${this.formatDate(this.startDate)}\"\n @nile-change=\"${this.handleStartDateInput}\"\n ></nile-input>\n </div>\n\n <div class=\"from-time\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n class=\"manual-input time-input\"\n placeholder=\"HH:MM:SS\"\n value=\"${this.formatTime(this.startDate)}\"\n @nile-change=\"${this.handleStartTimeInput}\"\n ></nile-input>\n </div>\n</div>\n\n\n <div class=\"from\">\n <div class=\"from-date\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n label=\"To\"\n class=\"manual-input date-input\"\n placeholder=\"${this.dateFormat}\"\n value=\"${this.formatDate(this.endDate)}\"\n @nile-change=\"${this.handleEndDateInput}\"\n ></nile-input>\n </div>\n <div class=\"from-time\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n class=\"manual-input time-input\"\n placeholder=\"HH:MM:SS\"\n value=\"${this.formatTime(this.endDate)}\"\n @nile-change=\"${this.handleEndTimeInput}\"\n ></nile-input>\n </div>\n </div>\n </div>\n `:''}\n `\n }\n\n /**\n * @returns HTML content for relative calendar\n */\n renderRelativeCalendar() {\n return html`\n <div class=\"units-wrapper\">\n <div class=\"unit-container\">\n \n ${this.hideDurationFields?.includes('minutes') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Minutes</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('minutes', [1, 5, 15, 30, 45])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('hours') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Hours</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('hours', [1, 2, 3, 6, 8, 12])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('days') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Days</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('days', [1, 2, 3, 4, 5, 6])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('weeks') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Weeks</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('weeks', [1, 2, 4, 6])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('months') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Months</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('months', [3, 6, 12, 15])}\n </div>\n </div>\n `}\n </div>\n </div>\n \n ${this.range ? html`\n <div>\n <div class=\"unit-input-container\">\n <nile-input \n class=\"manual-input duration-input\" \n ?disabled=\"${this.disabled}\"\n label=\"Duration\"\n inputmode=\"numeric\"\n type=\"number\"\n value=\"${this.selectedValue}\" \n @nile-change=\"${this.handleDurationChange}\"\n placeholder=\"Enter Value\"\n ></nile-input>\n \n <nile-select \n class=\"manual-input time-input\" \n ?disabled=\"${this.disabled}\"\n label=\"Unit of time\" \n value=\"${this.selectedUnit}\"\n @nile-change=\"${this.handleUnitChange}\"\n >\n <nile-option value=\"minutes\" class=\"${this.hideDurationFields?.includes('minutes') ? 'hidden' : ''}\">Minutes</nile-option>\n <nile-option value=\"hours\" class=\"${this.hideDurationFields?.includes('hours') ? 'hidden' : ''}\">Hours</nile-option>\n <nile-option value=\"days\" class=\"${this.hideDurationFields?.includes('days') ? 'hidden' : ''}\">Days</nile-option>\n <nile-option value=\"weeks\" class=\"${this.hideDurationFields?.includes('weeks') ? 'hidden' : ''}\">Weeks</nile-option>\n <nile-option value=\"months\" class=\"${this.hideDurationFields?.includes('months') ? 'hidden' : ''}\">Months</nile-option>\n </nile-select>\n </div>\n </div>\n ` : ''}\n `;\n }\n \n \n /**\n * \n * @param unit \n * @param values \n * @returns html for the option\n */\n renderTimeValues(unit: TimeUnits, values: any[]) {\n return values.map(\n value =>\n html`\n <div\n class=\"duration__value ${this.selectedUnit === unit && this.selectedValue === value ? 'duration__value--selected':''}\"\n @click=${(e: any) => this.handleTimeValueClick(unit, value, e)}\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.handleTimeValueClick(unit, value, e);}}\"\n >${value}\n </div>`\n );\n }\n\n /**\n * \n * @param year \n * @param month \n * @param daysArray \n * @returns HTML for rendered month\n */\n private renderMonth(\n year: number,\n month: number,\n daysArray: number[]\n ): TemplateResult {\n const firstDay = new Date(year, month, 1).getDay();\n const lastDay = new Date(year, month + 1, 0).getDay();\n const prevMonthDays = this.getDaysArray(\n month === 0 ? year - 1 : year,\n month === 0 ? 11 : month - 1\n );\n const nextMonthDays = this.getDaysArray(\n month === 11 ? year + 1 : year,\n month === 11 ? 0 : month + 1\n );\n const fillerDaysBefore = prevMonthDays.slice(\n prevMonthDays.length - firstDay\n );\n const fillerDaysAfter = nextMonthDays.slice(0, 6 - lastDay);\n const allDays = [...fillerDaysBefore, ...daysArray, ...fillerDaysAfter];\n\n const isSelectedDate = (\n day: number,\n month: number,\n year: number,\n isCurrentMonth: boolean\n ) => {\n if (!isCurrentMonth) return '';\n\n if (!this.range && this.value) {\n const isSelected =\n day === this.value.getDate() &&\n month === this.value.getMonth() &&\n year === this.value.getFullYear();\n if (isSelected) return 'selected-date';\n }\n\n const isStartDate =\n this.startDate &&\n day === this.startDate.getDate() &&\n month === this.startDate.getMonth() &&\n year === this.startDate.getFullYear();\n const isEndDate =\n this.endDate &&\n day === this.endDate.getDate() &&\n month === this.endDate.getMonth() &&\n year === this.endDate.getFullYear();\n\n return isStartDate ? 'range-start' : isEndDate ? 'range-end' : '';\n };\n\n const isInRange = (\n day: number,\n month: number,\n year: number,\n isCurrentMonth: boolean\n ) => {\n if (!isCurrentMonth) return false;\n if (this.startDate && this.endDate) {\n const date = new Date(year, month, day);\n return date >= this.startDate && date <= this.endDate;\n }\n return false;\n };\n\n const isCurrentDate = (day: number, month: number, year: number) => {\n const today = new Date();\n return (\n day === today.getDate() &&\n month + 1 === today.getMonth() + 1 &&\n year === today.getFullYear()\n );\n };\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n return html`\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <nile-icon\n class=\"calendar-header__month-navigation\"\n name=\"var(--nile-icon-arrow-left, var(--ng-icon-chevron-left))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'}\n role=\"button\"\n tabindex=\"${this.disabled || this.isPrevDisabled() ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.prevMonth();}}\"\n @click=\"${this.prevMonth}\"\n >\n </nile-icon>\n <div class=\"calendar-header__center\">\n\n${this.showMonthDropdown || this.showYearDropdown ? html`\n ${this.showMonthDropdown ? html`\n <nile-dropdown ?disabled=\"${this.disabled}\" class=\"month-dropdown\">\n <span\n slot=\"trigger\"\n class=\"calendar-header__trigger month-trigger\"\n role=\"button\"\n part=\"trigger\"\n >\n ${new Date(year, month).toLocaleString('default', { month: 'long' })}\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'} class=\"calendar-header__caret\"></nile-icon>\n </span>\n <nile-menu>\n <div class=\"month-scroll-wrapper\">\n ${this.monthNames.map((m, idx) => html`\n <nile-menu-item\n class=\"month-menu-item\"\n ?selected=\"${idx === month}\"\n @click=\"${() => this.onMonthSelected(idx)}\"\n >\n ${m}\n </nile-menu-item>\n `)}\n </div>\n </nile-menu>\n </nile-dropdown>\n ` : html`\n <span\n >${new Date(year, month).toLocaleString('default', { month: 'long' })}</span\n >\n `}\n ${this.showYearDropdown ? html`\n <nile-dropdown ?disabled=\"${this.disabled}\" class=\"year-dropdown\">\n <span\n slot=\"trigger\"\n class=\"calendar-header__trigger\"\n role=\"button\"\n part=\"trigger\"\n >\n ${year}\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'} class=\"calendar-header__caret\"></nile-icon>\n </span>\n <nile-menu>\n <div class=\"year-scroll-wrapper\">\n ${this.yearOptions.map(\n y => html`\n <nile-menu-item\n class=\"year-menu-item\"\n ?selected=\"${y === year}\"\n @click=\"${() => this.onYearSelected(y)}\"\n >\n ${y}\n </nile-menu-item>\n `\n )}\n </div>\n </nile-menu>\n </nile-dropdown>\n ` : html`\n <span>${year}</span>\n `}\n` : html`\n <span\n >${new Date(year, month).toLocaleString('default', {\n month: 'long',\n })}\n ${year}</span\n >\n`}\n</div>\n\n <nile-icon\n class=\"calendar-header__month-navigation\"\n name=\"var(--nile-icon-arrow-right, var(--ng-icon-chevron-right))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'}\n role=\"button\"\n tabindex=\"${this.disabled || this.isNextDisabled() ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.nextMonth();}}\"\n @click=\"${this.nextMonth}\"\n \n >\n </nile-icon>\n </div>\n \n <div class=\"days_container\">\n ${dayNames.map(day => html`<div class=\"day_name\">${day}</div>`)}\n ${allDays.map((day, index) => {\n const isCurrentMonth =\n index >= fillerDaysBefore.length &&\n index < fillerDaysBefore.length + daysArray.length;\n const datePlacement:''|'selected-date'|'range-start'|'range-end' = isSelectedDate(day, month, year, isCurrentMonth)\n const classMapObj:any={\n 'day_date' : true,\n 'not-allowed' : !this.isAllowedDate(day, month, year),\n 'in-range' : isInRange(day, month, year, isCurrentMonth) ,\n 'filler' : !isCurrentMonth,\n }\n if(datePlacement) classMapObj[datePlacement]=true\n \n return html` \n <div\n part=\"calendar-day-${day}\"\n class=${classMap(classMapObj)}\n tabindex=\"${isCurrentMonth && this.isAllowedDate(day, month, year) && !this.disabled ? '0' : '-1'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.selectDate(day, month, year);}}\"\n @click=\"${() => { if (isCurrentMonth) this.selectDate(day, month, year)}}\"\n >\n <span style=\"position:relative;\">\n ${day}\n ${isCurrentDate(day, month, year) && isCurrentMonth?html`<div class=\"current__date__dot\" part=\"current-date-dot\"></div>`:nothing}\n </span>\n </div>`;\n })}\n </div>\n </div>\n `;\n }\n\n /**\n * Function to validate if date is not in allowedDates range\n * @param day \n * @param month \n * @param year \n * @returns \n */\n isAllowedDate(day: number, month: number, year: number) {\n if (!this.allowedDatesLocal) {\n return true;\n }\n const dateToCheck = new Date(Date.UTC(year, month, day));\n const startDate = this.getUTCDate(this.allowedDatesLocal.startDate)\n const endDate = this.getUTCDate(this.allowedDatesLocal.endDate)\n endDate.setUTCHours(23, 59, 59, 999);\n const isWithinRange = dateToCheck >= startDate && dateToCheck <= endDate;\n return isWithinRange;\n }\n\n clearDate(mode?: ClearMode) {\n const clearType =\n mode ??\n (this.range\n ? this.type === 'relative'\n ? ClearMode.Relative\n : ClearMode.Range\n : ClearMode.Single);\n \n if (clearType === ClearMode.Single) {\n this.value = null;\n } else {\n this.valueAttribute = '';\n this.startDate = null;\n this.endDate = null;\n this.selectedUnit = undefined!;\n this.selectedValue = undefined!;\n }\n \n this.requestUpdate();\n this.emit('nile-clear');\n } \n\n \n\n /**\n * @function handle_date-click/select\n * @param day \n * @param month \n * @param year \n */\n selectDate(day: number, month: number, year: number): void {\n if (this.disabled) return;\n const selectedDate = new Date(year, month, day);\n\n if (this.range) {\n if (this.startDate && this.endDate) {\n this.startDate = null;\n this.endDate = null;\n }\n\n if (this.isSelectingStart) {\n this.startDate = selectedDate;\n if (this.endDate && selectedDate > this.endDate) {\n this.endDate = null;\n }\n this.isSelectingStart = false;\n } else {\n this.isSelectingStart = true;\n\n if (this.startDate && selectedDate < this.startDate) {\n this.startDate = selectedDate;\n this.endDate = null;\n this.isSelectingStart = false;\n } else {\n const endDate = selectedDate;\n endDate.setHours(23, 59, 59, 999);\n this.endDate = endDate;\n }\n }\n } else {\n if(String(this.value)==String(selectedDate) && this.doubleClickUnselect){\n this.clearDate()\n return\n }\n this.value = selectedDate;\n this.emitChangedData({ value: this.value });\n }\n }\n\n /**\n * Function to be called on initialization to set all other properties\n */\n initializeValue() {\n if (this.range) {\n try {\n const rangeValue = JSON.parse(this.valueAttribute || '');\n this.startDate = new Date(rangeValue.startDate);\n this.endDate = new Date(rangeValue.endDate);\n\n // Convert to local time\n this.startDate = new Date(this.startDate.getTime());\n this.endDate = new Date(this.endDate.getTime());\n\n this.value = null;\n } catch (e) {\n // console.error('Invalid range value');\n }\n } else {\n if (this.valueAttribute) {\n let date: Date = new Date(this.valueAttribute);\n\n date = new Date(date.getTime() - date.getTimezoneOffset() * 60000);\n\n if (!isNaN(date.getTime())) {\n this.value = date;\n this.currentMonth = this.value.getMonth();\n this.currentYear = this.value.getFullYear();\n }\n }\n }\n }\n\n /**\n * Function to handle relative date selection\n */\n handleDurationChange(event: CustomEvent) {\n event.stopPropagation()\n event.detail.value = event.detail.value.replace(/e/gi, \"\");\n const duration=Number(event.detail.value);\n if(!duration) {\n return\n };\n this.selectedValue = duration\n if (this.selectedUnit && this.selectedValue) {\n this.handleTimeValueClick(this.selectedUnit, this.selectedValue, event);\n }\n }\n\n handleUnitChange(event: CustomEvent) {\n event.stopPropagation()\n this.selectedUnit = event.detail.value;\n if (this.selectedUnit && this.selectedValue) {\n this.handleTimeValueClick(this.selectedUnit, this.selectedValue, event);\n }\n }\n\n handleTimeValueClick(unit: TimeUnits, value: number, event: any) {\n this.createRelativePeriod(unit, value)\n this.selectedUnit = unit;\n this.selectedValue = value;\n }\n\n createRelativePeriod(unit: String, value: number) {\n const endTime = new Date();\n const startTime = new Date();\n\n switch (unit) {\n case 'minutes':\n startTime.setMinutes(startTime.getMinutes() - value);\n break;\n case 'hours':\n startTime.setHours(startTime.getHours() - value);\n break;\n case 'days':\n startTime.setDate(startTime.getDate() - value);\n break;\n case 'weeks':\n startTime.setDate(startTime.getDate() - 7 * value); // Subtract weeks as days\n break;\n case 'months':\n startTime.setMonth(startTime.getMonth() - value);\n break;\n }\n\n this.startDate = new Date(startTime.getTime());\n this.endDate = new Date(endTime.getTime());\n\n return {\n startDate: this.startDate,\n endDate: this.endDate,\n };\n }\n \n /**\n * Function to handle start time selecion\n */\n private handleStartTimeInput(event: CustomEvent): void {\n event.stopPropagation()\n if (!this.startDate) {\n this.startDate = null;\n return;\n }\n const time = this.parseTime(event.detail.value, this.startDate);\n if (time) {\n this.startDate = time;\n } else {\n this.startDate.setHours(0, 0, 0);\n }\n this.requestUpdate();\n }\n \n /**\n * Function to handle end time selecion\n */\n private handleEndTimeInput(event: CustomEvent): void {\n event.stopPropagation()\n if (!this.endDate) {\n this.endDate = null;\n return;\n }\n const time = this.parseTime(event.detail.value, this.endDate);\n if (time) {\n this.endDate = time;\n } else {\n this.endDate.setHours(0, 0, 0);\n }\n this.requestUpdate();\n }\n\n // Parse time string to a Date object\n private parseTime(input: string, date: Date): Date | null {\n if (!this.isValidTimeInput(input)) {\n return null;\n }\n const [hour, minute, second] = input.split(':').map(Number);\n const newDate = new Date(date.getTime());\n newDate.setHours(hour, minute, second);\n return newDate;\n }\n\n // Validate time in HH:MM:SS format\n private isValidTimeInput(input: string): boolean {\n const regex = /^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;\n return regex.test(input);\n }\n\n private formatTime(date: Date | null): string {\n if (!date) return '';\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${hours}:${minutes}:${seconds}`;\n }\n\n private nextMonth(): void {\n if (this.disabled) return;\n if (this.currentMonth === 11) {\n const newYear = this.currentYear + 1;\n if(this.endYear !== undefined && newYear > this.endYear) return;\n this.currentMonth = 0;\n this.currentYear = newYear;\n } else {\n this.currentMonth++;\n }\n }\n\n private prevMonth(): void {\n if (this.disabled) return;\n if (this.currentMonth === 0) {\n const newYear = this.currentYear - 1;\n if(this.startYear !== undefined && newYear < this.startYear) return;\n this.currentMonth = 11;\n this.currentYear = newYear;\n } else {\n this.currentMonth--;\n }\n }\n\n private confimRange() {\n if (!(this.startDate && this.endDate)) return;\n this.emitChangedData( {\n startDate: this.startDate,\n endDate: this.endDate,\n });\n }\n\n onTypeChange(event: CustomEvent) {\n if (this.disabled) return;\n this.type = event.detail.value;\n this.emit('nile-type-change', { value: this.type })\n }\n getUTCDate(dateStr:any){\n return new Date(\n Date.UTC(\n dateStr.slice(0, 4),\n dateStr.slice(5, 7) - 1,\n dateStr.slice(8, 10)\n )\n )\n }\n\n emitChangedData(data:{startDate:Date,endDate:Date}|{value:any}|null){\n this.emit('nile-changed',data); // deprecated. Use nile-change instead\n this.emit('nile-change',data)\n }\n\n private getDaysArray(year: number, month: number): number[] {\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n return Array.from({ length: daysInMonth }, (_, i) => i + 1);\n }\n}\n\nexport default NileCalendar;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-calendar': NileCalendar;\n }\n}"],"names":["NileCalendar","c","constructor","this","valueAttribute","allowedDates","JSON","stringify","range","hideTypes","doubleClickUnselect","allowClear","type","hideDurationFields","showManualInputs","showMonthDropdown","showYearDropdown","dateFormat","startDate","endDate","isSelectingStart","hideInput","currentMonth","Date","getMonth","currentYear","getFullYear","allowedDatesLocal","disabled","_this","_inherits","_o","_createClass","key","value","connectedCallback","super","initializeValue","emit","disconnectedCallback","updated","changedProperties","has","date","isNaN","getTime","offset","getTimezoneOffset","get","monthNames","Array","from","length","_","i","toLocaleString","month","_this$startYear","_this$endYear","start","startYear","end","endYear","onMonthSelected","monthIndex","onYearSelected","year","t","checkValidAllowedDate","newDateRange","parse","error","Object","keys","getUTCDate","console","isPrevDisabled","undefined","isNextDisabled","formatDate","yyyy","mm","String","padStart","dd","getDate","formatted","replace","slice","parseDate","input","existingDate","formatPattern","regex","RegExp","match","groups","Number","concat","day","setHours","getHours","getMinutes","getSeconds","handleStartDateInput","event","stopPropagation","newDate","detail","requestUpdate","handleEndDateInput","render","html","_templateObject","_taggedTemplateLiteral","classMap","base","base__range","hidden","onTypeChange","renderRelativeCalendar","renderAbsoluteCalendar","_templateObject2","_templateObject3","e","clearDate","nothing","confimRange","_templateObject4","renderMonth","getDaysArray","_templateObject5","formatTime","handleStartTimeInput","handleEndTimeInput","_this$hideDurationFie","_this$hideDurationFie2","_this$hideDurationFie3","_this$hideDurationFie4","_this$hideDurationFie5","_this$hideDurationFie6","_this$hideDurationFie7","_this$hideDurationFie8","_this$hideDurationFie9","_this$hideDurationFie10","_templateObject6","includes","_templateObject7","renderTimeValues","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","selectedValue","handleDurationChange","selectedUnit","handleUnitChange","unit","values","map","_templateObject13","handleTimeValueClick","daysArray","firstDay","getDay","lastDay","prevMonthDays","nextMonthDays","fillerDaysBefore","fillerDaysAfter","allDays","isSelectedDate","isCurrentMonth","isStartDate","isEndDate","isInRange","_templateObject14","prevMonth","_templateObject15","_templateObject16","m","idx","_templateObject17","_templateObject18","_templateObject19","yearOptions","y","_templateObject20","_templateObject21","_templateObject22","nextMonth","_templateObject23","index","datePlacement","classMapObj","day_date","isAllowedDate","filler","_templateObject24","selectDate","today","_templateObject25","dateToCheck","UTC","setUTCHours","mode","ClearMode","Relative","Range","Single","selectedDate","emitChangedData","rangeValue","duration","createRelativePeriod","endTime","startTime","setMinutes","setDate","setMonth","time","parseTime","isValidTimeInput","_t$split$map","split","hour","minute","second","test","newYear","dateStr","data","daysInMonth","__decorate","styles","NileElement","property","attribute","prototype","reflect","Boolean","state","watch","customElement"],"mappings":"q7MA8BaA,CAAAA,uBAAAA,EAAAA,EAAN,SAAAC,EAAA,CAAAC,KAAAA,KAAAA,CAAAA,eAAAA,MAAAA,CAAAA,qCAW2CC,KAAAA,CAAcC,cAAoB,CAAA,IAAA,CAExBD,KAAAA,CAAAE,YAAAA,CAAuBC,IAAKC,CAAAA,SAAAA,CAAU,CAAE,CAAA,CAAA,CAEtDJ,KAAAA,CAAKK,KAAAA,CAAAA,CAAG,CAEQL,CAAAA,KAAAA,CAASM,SAAG,CAAA,CAAA,CAAA,CAE5BN,KAAAA,CAAmBO,mBAAAA,CAAAA,CAAG,EAEtBP,KAAAA,CAAUQ,UAAAA,CAAAA,CAAG,CAEdR,CAAAA,KAAAA,CAAIS,IAA4B,CAAA,UAAA,CAMbT,KAAAA,CAAkBU,kBAAAA,CAAa,GAEjEV,KAAAA,CAAgBW,gBAAAA,CAAAA,CAAU,CAMKX,CAAAA,KAAAA,CAAiBY,iBAAG,CAAA,CAAA,CAAA,CAEpBZ,KAAAA,CAAgBa,gBAAAA,CAAAA,CAAG,EAEnBb,KAAAA,CAAUc,UAAAA,CAAW,YAGvEd,CAAAA,KAAAA,CAASe,SAAgB,CAAA,IAAA,CAEzBf,KAAAA,CAAOgB,OAAAA,CAAgB,IAEvBhB,CAAAA,KAAAA,CAAgBiB,gBAAG,CAAA,CAAA,CAAA,CAEnBjB,KAAAA,CAASkB,SAAAA,CAAAA,CAAY,CAIrBlB,CAAAA,KAAAA,CAAAmB,aAAuB,GAAIC,CAAAA,IAAAA,CAAAA,CAAAA,CAAOC,QAElCrB,CAAAA,CAAAA,CAAAA,KAAAA,CAAAsB,WAAsB,CAAA,GAAIF,CAAAA,IAAOG,CAAAA,CAAAA,CAAAA,WAAAA,CAAAA,CAAAA,CAEjCvB,KAAAA,CAAiBwB,iBAAgC,CAAA,IAAA,CAEGxB,KAAAA,CAAQyB,QAAAA,CAAAA,CAAG,CAm5BzE,QAAAC,KAAA,EA18BQC,SAAA,CAAA7B,CAAA,CAAA8B,EAAA,SAAAC,YAAA,CAAA/B,CAAA,GAAAgC,GAAA,qBAAAC,KAAA,CAwDP,SAAAC,iBAAAA,CAAAA,CACEC,CAAAA,aAAAA,CAAAA,CAAAA,iCACAjC,IAAAA,CAAKkC,eACLlC,CAAAA,CAAAA,CAAAA,IAAAA,CAAKmC,IAAK,CAAA,WAAA,CACX,EAED,GAAAL,GAAA,wBAAAC,KAAA,UAAAK,oBAAAA,CAAAA,CACEH,CAAAA,aAAAA,CAAAA,CAAAA,oCACAjC,IAAKmC,CAAAA,IAAAA,CAAK,cACX,CAAA,EAES,GAAAL,GAAA,WAAAC,KAAA,UAAAM,OAAAA,CAAQC,CAEhB,CAAA,CAAA,GADAL,aAAAA,CAAAA,CAAAA,oBAAcK,CAAAA,GACVA,CAAkBC,CAAAA,GAAAA,CAAI,gBAAmB,CAAA,CAAA,CACvCvC,IAAKC,CAAAA,cAAAA,GACPD,KAAK+B,KAAM,CAAA,IAAA,CACX/B,IAAKe,CAAAA,SAAAA,CAAU,IACff,CAAAA,IAAAA,CAAKgB,OAAQ,CAAA,IAAA,CACbhB,IAAKiB,CAAAA,gBAAAA,CAAAA,CAAiB,CAExB,CAAA,CAAA,GAAMuB,CAAAA,EAAO,CAAA,GAAIpB,CAAAA,IAAKpB,CAAAA,IAAAA,CAAKC,gBAAkB,EAC7C,CAAA,CAAA,GAAA,CAAKwC,KAAMD,CAAAA,EAAAA,CAAKE,OAAY,CAAA,CAAA,CAAA,CAAA,CAC1B,GAAMC,CAAAA,EAAAA,CAASH,EAAKI,CAAAA,iBAAAA,CAAAA,CAAAA,CACpB5C,IAAK+B,CAAAA,KAAAA,CAAQ,GAAIX,CAAAA,IAAAA,CAAKoB,EAAKE,CAAAA,OAAAA,CAAAA,CAAAA,CAAqB,GAATC,EAAc,CAAA,GAAA,CAAA,CACrD3C,IAAKmB,CAAAA,YAAAA,CAAenB,IAAK+B,CAAAA,KAAAA,CAAMV,QAC/BrB,CAAAA,CAAAA,CAAAA,IAAAA,CAAKsB,WAActB,CAAAA,IAAAA,CAAK+B,KAAMR,CAAAA,WAAAA,CAAAA,CAC/B,EACDvB,IAAAA,CAAKkC,eACN,CAAA,CAAA,EACF,CAED,GAAAJ,GAAA,cAAAe,GAAA,UAAAA,IAAA,CAAYC,CACV,MAAOC,CAAAA,KAAAA,CAAMC,IAAK,CAAA,CAAEC,MAAQ,CAAA,EAAA,CAAA,CAAM,SAACC,CAAGC,CAAAA,CAAAA,QACpC,IAAI/B,CAAAA,IAAAA,CAAK,CAAG+B,CAAAA,CAAAA,CAAAA,CAAGC,cAAe,CAAA,SAAA,CAAW,CAAEC,KAAO,CAAA,MAAA,CAAA,CAAA,EAAA,CAErD,EAED,GAAAvB,GAAA,eAAAe,GAAA,UAAAA,IAAA,CACE,KAAAS,eAAA,CAAAC,aAAA,CAAA,GAGMC,CAAAA,CAAQxD,EAAAA,eAAAA,CAAAA,IAAAA,CAAKyD,SAHG,UAAAH,eAAA,UAAAA,eAAA,CAAA,GAAA,CAIhBI,CAAM1D,EAAAA,aAAAA,CAAAA,IAAAA,CAAK2D,OAHG,UAAAJ,aAAA,UAAAA,aAAA,CAAA,IAAA,CAKpB,MAAIC,CAAAA,CAAAA,CAAQE,EAAY,EAEjBX,CAAAA,KAAAA,CAAMC,IAAK,CAAA,CAAEC,MAAQS,CAAAA,CAAAA,CAAMF,CAAQ,CAAA,CAAA,CAAA,CAAK,SAACN,CAAGC,CAAAA,CAAAA,QAAMK,CAAAA,CAAQL,CAAAA,CAAAA,EAAAA,CAClE,EAEO,GAAArB,GAAA,mBAAAC,KAAA,UAAA6B,eAAAA,CAAgBC,CAAAA,CAAAA,CACtB7D,KAAKmB,YAAe0C,CAAAA,CAAAA,CACpB7D,IAAKmC,CAAAA,IAAAA,CAAK,mBAAqB,CAAA,CAAEkB,KAAOQ,CAAAA,CAAAA,CAAAA,CACzC,EAEO,GAAA/B,GAAA,kBAAAC,KAAA,UAAA+B,cAAAA,CAAeC,CAAAA,CAAAA,CACrB/D,IAAKsB,CAAAA,WAAAA,CAAcyC,CACnB/D,CAAAA,IAAAA,CAAKmC,KAAK,kBAAoB,CAAA,CAAE4B,IACjC,CAAAC,CAAA,CAAA,CAAA,EAGD,GAAAlC,GAAA,yBAAAC,KAAA,UAAAkC,qBAAAA,CAAAA,CAAAA,CACE,GAAIC,CAAAA,CAAAA,CACJ,IACEA,CAAa/D,CAAAA,IAAAA,CAAKgE,KAAMnE,CAAAA,IAAAA,CAAKE,YAC9B,CAAA,EAAC,MAAOkE,CAAAA,CAAAA,CACPF,EAAa,IACd,EACD,GAAKA,CAAAA,CAAAA,EAAoD,CAApCG,EAAAA,MAAAA,CAAOC,IAAKJ,CAAAA,CAAAA,CAAAA,CAAcjB,MAE7C,CAAA,MAAA,MADAjD,IAAKwB,CAAAA,iBAAAA,CAAkB,IAGzBxB,CAAAA,CAAAA,IAAAA,CAAKkB,SAAU,CAAA,CAAA,CAAA,CACGlB,KAAKuE,UAAWL,CAAAA,CAAAA,CAAanD,SAC/Bf,CAAAA,CAAAA,IAAAA,CAAKuE,UAAWL,CAAAA,CAAAA,CAAalD,OAG3CwD,CAAAA,CAAAA,OAAAA,CAAQJ,KAAM,CAAA,wCAAA,CAAA,CAIdpE,IAAKwB,CAAAA,iBAAAA,CAAkB0C,CAE1B,EAEO,GAAApC,GAAA,kBAAAC,KAAA,UAAA0C,cAAAA,CAAAA,CAAAA,CACN,MACwB,EAAtBzE,GAAAA,IAAAA,CAAKmB,YACcuD,EAAAA,IAAAA,EAAAA,GAAnB1E,IAAKyD,CAAAA,SAAAA,EACLzD,IAAKsB,CAAAA,WAAAA,EAAetB,IAAKyD,CAAAA,SAE5B,EAEO,GAAA3B,GAAA,kBAAAC,KAAA,UAAA4C,cAAAA,CAAAA,CACN,CAAA,MACwB,GAAtB3E,GAAAA,IAAAA,CAAKmB,kBACYuD,EAAjB1E,GAAAA,IAAAA,CAAK2D,OACL3D,EAAAA,IAAAA,CAAKsB,WAAetB,EAAAA,IAAAA,CAAK2D,OAE5B,EAEO,GAAA7B,GAAA,cAAAC,KAAA,UAAA6C,UAAAA,CAAWpC,CAAAA,CAAAA,CACjB,GAAKA,CAAAA,CAAAA,CAAM,MAAO,EAAA,CAElB,GAAMqC,CAAAA,CAAAA,CAAOrC,EAAKjB,WACZuD,CAAAA,CAAAA,CAAAA,CAAAA,CAAKC,MAAOvC,CAAAA,CAAAA,CAAKnB,QAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG2D,QAAS,CAAA,CAAA,CAAG,GAC7CC,CAAAA,CAAAA,CAAAA,CAAKF,MAAOvC,CAAAA,CAAAA,CAAK0C,OAAWF,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAS,CAAG,CAAA,GAAA,CAAA,CAE9C,GAAIG,CAAAA,CAAYnF,CAAAA,IAAAA,CAAKc,UAMrB,CAAA,MALAqE,CAAAA,CAAYA,CAAAA,CAAAA,CAAUC,OAAQ,CAAA,OAAA,CAASL,OAAOF,CAC9CM,CAAAA,CAAAA,CAAAA,CAAAA,CAAYA,CAAUC,CAAAA,OAAAA,CAAQ,KAAON,CAAAA,CAAAA,CAAAA,CACrCK,CAAYA,CAAAA,CAAAA,CAAUC,QAAQ,KAAOH,CAAAA,CAAAA,CAAAA,CACrCE,CAAYA,CAAAA,CAAAA,CAAUC,OAAQ,CAAA,KAAA,CAAOL,MAAOF,CAAAA,CAAAA,CAAAA,CAAMQ,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAElDF,CACR,EAGO,GAAArD,GAAA,aAAAC,KAAA,UAAAuD,SAAAA,CAAUC,CAAeC,CAAAA,CAAAA,CAAAA,CAC/B,IAAKD,CAAUvF,EAAAA,CAAAA,IAAAA,CAAKc,UAAY,CAAA,MAAO,KACvC,CAAA,GAAM2E,CAAAA,CAAgBzF,CAAAA,IAAAA,CAAKc,WACxBsE,OAAQ,CAAA,MAAA,CAAQ,iBAChBA,CAAAA,CAAAA,OAAAA,CAAQ,IAAM,CAAA,iBAAA,CAAA,CACdA,OAAQ,CAAA,IAAA,CAAM,sBACdA,OAAQ,CAAA,IAAA,CAAM,kBAEXM,CAAAA,CAAAA,CAAAA,CAAQ,GAAIC,CAAAA,MAAAA,KAAAA,MAAAA,CAAWF,CAAAA,KAAAA,CAAAA,CACvBG,CAAQL,CAAAA,CAAAA,CAAMK,KAAMF,CAAAA,CAAAA,CAAAA,CAC1B,GAAKE,CAAAA,CAAAA,EAAAA,CAAUA,CAAMC,CAAAA,MAAAA,CAAQ,MAAO,KAEpC,CAAA,GAAM9B,CAAAA,CAAoC,CAAA,CAAA,GAA7B6B,CAAMC,CAAAA,MAAAA,CAAO9B,IAAKd,CAAAA,MAAAA,CAAe6C,MAAO,MAAAC,MAAA,CAAKH,CAAMC,CAAAA,MAAAA,CAAO9B,IAAU+B,CAAAA,CAAAA,CAAAA,MAAAA,CAAOF,CAAMC,CAAAA,MAAAA,CAAO9B,MAC/FV,CAAQyC,CAAAA,MAAAA,CAAOF,CAAMC,CAAAA,MAAAA,CAAOxC,KAAS,CAAA,CAAA,CAAA,CACrC2C,CAAMF,CAAAA,MAAAA,CAAOF,CAAMC,CAAAA,MAAAA,CAAOG,GAE1BxD,CAAAA,CAAAA,CAAAA,CAAO,GAAIpB,CAAAA,IAAAA,CAAK2C,CAAMV,CAAAA,CAAAA,CAAO2C,GAUnC,MATIR,CAAAA,CAAAA,CACFhD,CAAKyD,CAAAA,QAAAA,CACHT,CAAaU,CAAAA,QAAAA,CAAAA,CAAAA,CACbV,CAAaW,CAAAA,UAAAA,CAAAA,CAAAA,CACbX,EAAaY,UAGf5D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKyD,QAAS,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAEfzD,CACR,EAEK,GAAAV,GAAA,wBAAAC,KAAA,UAAAsE,oBAAAA,CAAqBC,CAAAA,CAAAA,CAC3BA,CAAMC,CAAAA,eAAAA,CAAAA,CAAAA,CACN,GAAMC,CAAAA,CAAAA,CAAUxG,IAAKsF,CAAAA,SAAAA,CAAUgB,CAAMG,CAAAA,MAAAA,CAAO1E,KAAO/B,CAAAA,IAAAA,CAAKe,SACpDyF,CAAAA,CAAAA,CAAAA,GACAA,CAAQP,CAAAA,QAAAA,CAAS,EAAG,CAAG,CAAA,CAAA,CAAA,CACvBjG,IAAKe,CAAAA,SAAAA,CAAYyF,CACjBxG,CAAAA,IAAAA,CAAKmB,YAAeqF,CAAAA,CAAAA,CAAQnF,WAC5BrB,IAAKsB,CAAAA,WAAAA,CAAckF,CAAQjF,CAAAA,WAAAA,CAAAA,CAAAA,CAC3BvB,IAAK0G,CAAAA,aAAAA,CAAAA,CAAAA,CAER,EACK,GAAA5E,GAAA,sBAAAC,KAAA,UAAA4E,kBAAAA,CAAmBL,CACzBA,CAAAA,CAAAA,CAAAA,CAAMC,eACN,CAAA,CAAA,CAAA,GAAMC,CAAAA,CAAUxG,CAAAA,IAAAA,CAAKsF,SAAUgB,CAAAA,CAAAA,CAAMG,MAAO1E,CAAAA,KAAAA,CAAO/B,IAAKgB,CAAAA,OAAAA,CAAAA,CAClDwF,CACFA,GAAAA,CAAAA,CAAQP,QAAS,CAAA,EAAA,CAAI,GAAI,EACzBjG,CAAAA,CAAAA,IAAAA,CAAKgB,OAAUwF,CAAAA,CAAAA,CACfxG,IAAKmB,CAAAA,YAAAA,CAAeqF,CAAQnF,CAAAA,QAAAA,CAAAA,CAAAA,CAC5BrB,KAAKsB,WAAckF,CAAAA,CAAAA,CAAQjF,WAC3BvB,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0G,aAER,CAAA,CAAA,CAAA,EAOD,GAAA5E,GAAA,UAAAC,KAAA,UAAA6E,MAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACE,MAAOC,CAAAA,CAAI,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA,+jBAECC,CAAAA,CAAS,CACfC,IAAAA,CAAAA,CAAK,CACLC,CAAAA,WAAAA,CAAYlH,IAAKK,CAAAA,KAAAA,CAAAA,CAAAA,CAIN2G,CAAS,CAAA,CACpB,mBAAkB,CAClBG,CAAAA,MAAAA,CAAAA,CAAWnH,KAAKK,KAAUL,EAAAA,IAAAA,CAAKK,OAASL,IAAKM,CAAAA,SAAAA,CAAAA,CAAAA,CAGAN,IAAAA,CAAKoH,aAAwBpH,IAAKS,CAAAA,IAAAA,CACzBT,IAAAA,CAAKyB,SAAW,IAAO,CAAA,GAAA,CACvBzB,IAAAA,CAAKyB,SAAW,IAAO,CAAA,GAAA,CAKhE,UAAbzB,EAAAA,IAAAA,CAAKS,IAAqBT,CAAAA,IAAAA,CAAKqH,sBAAyB,CAAA,CAAA,CAAA,EAAA,CAC3C,UAAbrH,EAAAA,IAAAA,CAAKS,IAAqBT,CAAAA,IAAAA,CAAKsH,sBAAyB,CAAA,CAAA,CAAA,EAAA,CAEvDtH,IAAAA,CAAKK,MAASwG,CAAI,CAAAU,gBAAA,GAAAA,gBAAA,CAAAR,sBAAA,wSAEjB/G,IAAAA,CAAKQ,WACLqG,CAAI,CAAAW,gBAAA,GAAAA,gBAAA,CAAAT,sBAAA,sQAKW/G,IAAKe,CAAAA,SAAAA,EAAAA,CAAcf,IAAKgB,CAAAA,OAAAA,EAAWhB,IAAKyB,CAAAA,QAAAA,CAC1CgG,SAAAA,CAAAA,CAAAA,CAAoC,UAAVA,CAAE3F,CAAAA,GAAAA,EAA6B,MAAV2F,CAAE3F,CAAAA,GAAAA,EAAa9B,OAAK0H,SAAW,CAAA,CAAA,EAAA,CACjF1H,IAAK0H,CAAAA,SAAAA,EAEQC,CAAAA,EAIV3H,IAAKe,CAAAA,SAAAA,EAAAA,CAAcf,IAAKgB,CAAAA,OAAAA,EAAWhB,IAAKyB,CAAAA,QAAAA,CAC7CzB,IAAK4H,CAAAA,WAAAA,CACFH,SAAAA,CAAAA,CAAAA,CAAoC,UAAVA,CAAE3F,CAAAA,GAAAA,EAA6B,MAAV2F,CAAE3F,CAAAA,GAAAA,EAAa9B,OAAK4H,WAAa,CAAA,CAAA,EAAA,EAlBjF,EAAA,EAwBnB,CAKD,GAAA9F,GAAA,0BAAAC,KAAA,UAAAuF,sBAAAA,CAAAA,CACE,CAAA,MAAOT,CAAAA,CAAI,CAAAgB,gBAAA,GAAAA,gBAAA,CAAAd,sBAAA,yKAGL/G,IAAK8H,CAAAA,WAAAA,CACL9H,KAAKsB,WACLtB,CAAAA,IAAAA,CAAKmB,aACLnB,IAAK+H,CAAAA,YAAAA,CAAa/H,IAAKsB,CAAAA,WAAAA,CAAatB,IAAKmB,CAAAA,YAAAA,CAAAA,CAAAA,CAI7CnB,IAAAA,CAAKK,MAAQwG,CAAI,CAAAmB,gBAAA,GAAAA,gBAAA,CAAAjB,sBAAA,slCACU/G,IAAAA,CAAKW,iBAAoB,EAAK,CAAA,QAAA,CAI5CX,IAAKyB,CAAAA,QAAAA,CAGHzB,IAAKc,CAAAA,UAAAA,CACXd,IAAAA,CAAK4E,WAAW5E,IAAKe,CAAAA,SAAAA,CAAAA,CACdf,IAAKqG,CAAAA,oBAAAA,CAMRrG,IAAKyB,CAAAA,QAAAA,CAGTzB,IAAAA,CAAKiI,WAAWjI,IAAKe,CAAAA,SAAAA,CAAAA,CACdf,IAAKkI,CAAAA,oBAAAA,CASRlI,IAAKyB,CAAAA,QAAAA,CAGDzB,IAAKc,CAAAA,UAAAA,CACXd,IAAAA,CAAK4E,WAAW5E,IAAKgB,CAAAA,OAAAA,CAAAA,CACdhB,IAAK2G,CAAAA,kBAAAA,CAKV3G,IAAKyB,CAAAA,QAAAA,CAGPzB,IAAAA,CAAKiI,WAAWjI,IAAKgB,CAAAA,OAAAA,CAAAA,CACdhB,IAAKmI,CAAAA,kBAAAA,EAKvB,EAAA,EAEH,CAKD,GAAArG,GAAA,0BAAAC,KAAA,UAAAsF,sBAAAA,CAAAA,CACE,KAAAe,qBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,uBAAA,CAAA,MAAOhC,CAAAA,CAAI,CAAAiC,gBAAA,GAAAA,gBAAA,CAAA/B,sBAAA,uOAIH/G,CAAAA,qBAAAA,KAAAA,CAAKU,kBAAoBqI,UAAAA,qBAAAA,WAAzB/I,qBAAAA,CAAyB+I,QAAAA,CAAS,SAAa,CAAA,CAAA,EAAA,CAAKlC,CAAI,CAAAmC,gBAAA,GAAAA,gBAAA,CAAAjC,sBAAA,uNAIpD/G,IAAAA,CAAKiJ,iBAAiB,SAAW,CAAA,CAAC,CAAG,CAAA,CAAA,CAAG,GAAI,EAAI,CAAA,EAAA,CAAA,CAAA,EAKpDjJ,CAAAA,sBAAAA,KAAAA,CAAKU,kBAAoBqI,UAAAA,sBAAAA,WAAzB/I,sBAAAA,CAAyB+I,QAAAA,CAAS,OAAW,CAAA,CAAA,EAAA,CAAKlC,CAAI,CAAAqC,gBAAA,GAAAA,gBAAA,CAAAnC,sBAAA,qNAIlD/G,IAAAA,CAAKiJ,iBAAiB,OAAS,CAAA,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,EAAA,CAAA,CAAA,EAKnDjJ,CAAAA,sBAAAA,KAAAA,CAAKU,kBAAoBqI,UAAAA,sBAAAA,WAAzB/I,sBAAAA,CAAyB+I,QAAAA,CAAS,MAAU,CAAA,CAAA,EAAA,CAAKlC,CAAI,CAAAsC,gBAAA,GAAAA,gBAAA,CAAApC,sBAAA,oNAIjD/G,IAAAA,CAAKiJ,iBAAiB,MAAQ,CAAA,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CAAA,EAKlDjJ,CAAAA,sBAAAA,KAAAA,CAAKU,kBAAoBqI,UAAAA,sBAAAA,WAAzB/I,sBAAAA,CAAyB+I,QAAAA,CAAS,OAAW,CAAA,CAAA,EAAA,CAAKlC,CAAI,CAAAuC,iBAAA,GAAAA,iBAAA,CAAArC,sBAAA,qNAIlD/G,IAAAA,CAAKiJ,gBAAiB,CAAA,OAAA,CAAS,CAAC,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CAAA,EAK7CjJ,CAAAA,sBAAAA,KAAAA,CAAKU,kBAAoBqI,UAAAA,sBAAAA,WAAzB/I,sBAAAA,CAAyB+I,QAAAA,CAAS,QAAY,CAAA,CAAA,EAAA,CAAKlC,CAAI,CAAAwC,iBAAA,GAAAA,iBAAA,CAAAtC,sBAAA,sNAInD/G,IAAAA,CAAKiJ,gBAAiB,CAAA,QAAA,CAAU,CAAC,CAAA,CAAG,EAAG,EAAI,CAAA,EAAA,CAAA,CAAA,EAOnDjJ,IAAAA,CAAKK,MAAQwG,CAAI,CAAAyC,iBAAA,GAAAA,iBAAA,CAAAvC,sBAAA,2iCAKA/G,IAAKyB,CAAAA,QAAAA,CAITzB,IAAKuJ,CAAAA,aAAAA,CACEvJ,IAAKwJ,CAAAA,oBAAAA,CAMRxJ,IAAKyB,CAAAA,QAAAA,CAETzB,IAAKyJ,CAAAA,YAAAA,CACEzJ,IAAK0J,CAAAA,gBAAAA,CAEiB1J,CAAAA,sBAAAA,KAAKU,CAAAA,kBAAAA,UAAAA,sBAAAA,WAALV,sBAAAA,CAAyB+I,QAAS,CAAA,SAAA,CAAA,CAAa,QAAW,CAAA,EAAA,CAC5D/I,CAAAA,sBAAAA,KAAKU,CAAAA,kBAAAA,UAAAA,sBAAAA,WAALV,sBAAAA,CAAyB+I,QAAS,CAAA,OAAA,CAAA,CAAW,QAAW,CAAA,EAAA,CACzD/I,CAAAA,sBAAAA,KAAKU,CAAAA,kBAAAA,UAAAA,sBAAAA,WAALV,sBAAAA,CAAyB+I,QAAS,CAAA,MAAA,CAAA,CAAU,QAAW,CAAA,EAAA,CACtD/I,CAAAA,sBAAAA,KAAKU,CAAAA,kBAAAA,UAAAA,sBAAAA,WAALV,sBAAAA,CAAyB+I,QAAS,CAAA,OAAA,CAAA,CAAW,QAAW,CAAA,EAAA,CACvD/I,CAAAA,uBAAAA,KAAKU,CAAAA,kBAAAA,UAAAA,uBAAAA,WAALV,uBAAAA,CAAyB+I,QAAS,CAAA,QAAA,CAAA,CAAY,QAAW,CAAA,EAAA,EAIhG,EAAA,EAEP,CASD,GAAAjH,GAAA,oBAAAC,KAAA,UAAAkH,gBAAAA,CAAiBU,CAAiBC,CAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MAChC,MAAOA,CAAAA,CAAOC,CAAAA,GAAAA,CACZ9H,SAAAA,SACE8E,CAAAA,CAAI,CAAAiD,iBAAA,GAAAA,iBAAA,CAAA/C,sBAAA,2JAEyB/G,MAAAA,CAAKyJ,YAAiBE,GAAAA,CAAAA,EAAQ3J,MAAKuJ,CAAAA,aAAAA,GAAkBxH,EAAQ,2BAA4B,CAAA,EAAA,CACxG0F,SAAAA,CAAWzH,QAAAA,CAAAA,MAAAA,CAAK+J,oBAAqBJ,CAAAA,CAAAA,CAAM5H,CAAO0F,CAAAA,CAAAA,CAAAA,GAC/CA,SAAAA,CAAoC,CAAA,CAAA,OAAA,GAAVA,CAAE3F,CAAAA,GAAAA,EAA6B,GAAV2F,GAAAA,CAAAA,CAAE3F,KAAa9B,MAAK+J,CAAAA,oBAAAA,CAAqBJ,CAAM5H,CAAAA,CAAAA,CAAO0F,CAAE,CAAA,EAAA,CACnH1F,CAAAA,GAGV,CAAA,EASO,GAAAD,GAAA,eAAAC,KAAA,UAAA+F,WAAAA,CACN/D,CAAAA,CACAV,CACA2G,CAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MAEA,GAAMC,CAAAA,CAAW,CAAA,GAAI7I,CAAAA,IAAK2C,CAAAA,CAAAA,CAAMV,EAAO,CAAG6G,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CACpCC,EAAU,GAAI/I,CAAAA,IAAAA,CAAK2C,EAAMV,CAAQ,CAAA,CAAA,CAAG,CAAG6G,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CACvCE,EAAgBpK,IAAK+H,CAAAA,YAAAA,CACf,IAAV1E,CAAcU,CAAAA,CAAAA,CAAO,EAAIA,CACf,CAAA,CAAA,GAAVV,CAAc,CAAA,EAAA,CAAKA,EAAQ,CAEvBgH,CAAAA,CAAAA,CAAAA,CAAgBrK,KAAK+H,YACf,CAAA,EAAA,GAAV1E,EAAeU,CAAO,CAAA,CAAA,CAAIA,CAChB,CAAA,EAAA,GAAVV,EAAe,CAAIA,CAAAA,CAAAA,CAAQ,CAEvBiH,CAAAA,CAAAA,CAAAA,CAAmBF,EAAc/E,KACrC+E,CAAAA,CAAAA,CAAcnH,MAASgH,CAAAA,CAAAA,CAAAA,CAEnBM,GAAkBF,CAAchF,CAAAA,KAAAA,CAAM,EAAG,CAAI8E,CAAAA,CAAAA,CAAAA,CAC7CK,+BAAcF,CAAAA,EAAAA,kBAAAA,CAAqBN,CAAcO,EAAAA,kBAAAA,CAAAA,EAAAA,EAAAA,CAEjDE,EAAiB,QAAjBA,CAAAA,EACJzE,CAAAA,CACA3C,EACAU,CACA2G,CAAAA,CAAAA,CAAAA,CAEA,IAAKA,CAAgB,CAAA,MAAO,EAE5B,CAAA,GAAA,CAAK1K,OAAKK,KAASL,EAAAA,MAAAA,CAAK+B,MAAO,CAK7B,GAHEiE,IAAQhG,MAAK+B,CAAAA,KAAAA,CAAMmD,OACnB7B,CAAAA,CAAAA,EAAAA,CAAAA,GAAUrD,OAAK+B,KAAMV,CAAAA,QAAAA,CAAAA,CAAAA,EACrB0C,CAAS/D,GAAAA,MAAAA,CAAK+B,MAAMR,WACN,CAAA,CAAA,CAAA,MAAO,eACxB,EAED,GAAMoJ,CAAAA,CACJ3K,CAAAA,MAAAA,CAAKe,WACLiF,CAAQhG,GAAAA,MAAAA,CAAKe,UAAUmE,OACvB7B,CAAAA,CAAAA,EAAAA,CAAAA,GAAUrD,MAAKe,CAAAA,SAAAA,CAAUM,YACzB0C,CAAS/D,GAAAA,MAAAA,CAAKe,UAAUQ,WACpBqJ,CAAAA,CAAAA,CAAAA,CAAAA,CACJ5K,OAAKgB,OACLgF,EAAAA,CAAAA,GAAQhG,MAAKgB,CAAAA,OAAAA,CAAQkE,WACrB7B,CAAUrD,GAAAA,MAAAA,CAAKgB,QAAQK,QACvB0C,CAAAA,CAAAA,EAAAA,CAAAA,GAAS/D,OAAKgB,OAAQO,CAAAA,WAAAA,CAAAA,CAAAA,CAExB,MAAOoJ,CAAAA,CAAAA,CAAc,cAAgBC,CAAY,CAAA,WAAA,CAAc,EAAE,EAG7DC,CAAAA,CAAAA,CAAY,QAAZA,CAAAA,CAAAA,CACJ7E,CACA3C,CAAAA,CAAAA,CACAU,CACA2G,CAAAA,CAAAA,CAAAA,CAEA,IAAKA,CAAgB,CAAA,MAAA,CAAO,EAC5B,GAAI1K,MAAAA,CAAKe,WAAaf,MAAKgB,CAAAA,OAAAA,CAAS,CAClC,GAAMwB,CAAAA,GAAO,GAAIpB,CAAAA,IAAAA,CAAK2C,EAAMV,CAAO2C,CAAAA,CAAAA,CAAAA,CACnC,MAAOxD,CAAAA,EAAQxC,EAAAA,MAAAA,CAAKe,SAAayB,EAAAA,EAAAA,EAAQxC,OAAKgB,OAC/C,EACD,OAAO,CAAK,EAAA,CAYd,MAAO6F,CAAAA,CAAI,CAAAiE,iBAAA,GAAAA,iBAAA,CAAA/D,sBAAA,kmCAOK/G,IAAAA,CAAKyB,SAAW,2DAA8D,CAAA,8DAAA,CAE1EzB,IAAKyB,CAAAA,QAAAA,EAAYzB,IAAKyE,CAAAA,cAAAA,CAAAA,CAAAA,CAAmB,IAAO,CAAA,GAAA,CAC/CgD,SAAAA,CAAAA,CAAAA,CAAoC,UAAVA,CAAE3F,CAAAA,GAAAA,EAA6B,MAAV2F,CAAE3F,CAAAA,GAAAA,EAAa9B,OAAK+K,SAAW,CAAA,CAAA,EAAA,CACjF/K,IAAK+K,CAAAA,SAAAA,CAKzB/K,IAAKY,CAAAA,iBAAAA,EAAqBZ,IAAKa,CAAAA,gBAAAA,CAAmBgG,CAAI,CAAAmE,iBAAA,GAAAA,iBAAA,CAAAjE,sBAAA,wBACpD/G,IAAAA,CAAKY,kBAAoBiG,CAAI,CAAAoE,iBAAA,GAAAA,iBAAA,CAAAlE,sBAAA,kfACD/G,IAAKyB,CAAAA,QAAAA,CAO3B,GAAIL,CAAAA,KAAK2C,CAAMV,CAAAA,CAAAA,CAAAA,CAAOD,cAAe,CAAA,SAAA,CAAW,CAAEC,KAAO,CAAA,MAAA,CAAA,CAAA,CACnBrD,IAAAA,CAAKyB,SAAW,2DAA8D,CAAA,8DAAA,CAIlHzB,IAAAA,CAAK8C,UAAW+G,CAAAA,GAAAA,CAAI,SAACqB,CAAAA,CAAGC,SAAQtE,CAAAA,CAAI,CAAAuE,iBAAA,GAAAA,iBAAA,CAAArE,sBAAA,0NAGrBoE,CAAQ9H,GAAAA,CAAAA,CACX,iBAAMrD,CAAAA,OAAK4D,eAAgBuH,CAAAA,CAAAA,CAAAA,GAEnCD,CAAAA,MAMVrE,CAAI,CAAAwE,iBAAA,GAAAA,iBAAA,CAAAtE,sBAAA,gDAED,GAAI3F,CAAAA,KAAK2C,CAAMV,CAAAA,CAAAA,CAAAA,CAAOD,cAAe,CAAA,SAAA,CAAW,CAAEC,KAAO,CAAA,MAAA,CAAA,CAAA,EAG9DrD,IAAAA,CAAKa,iBAAmBgG,CAAI,CAAAyE,iBAAA,GAAAA,iBAAA,CAAAvE,sBAAA,keACA/G,IAAKyB,CAAAA,QAAAA,CAO3BsC,CAAAA,CACsC/D,IAAAA,CAAKyB,SAAW,2DAA8D,CAAA,8DAAA,CAIlHzB,IAAKuL,CAAAA,WAAAA,CAAY1B,GACjB2B,CAAAA,SAAAA,CAAAA,QAAK3E,CAAAA,CAAI,CAAA4E,iBAAA,GAAAA,iBAAA,CAAA1E,sBAAA,yOAGQyE,CAAMzH,GAAAA,CAAAA,CACT,iBAAM/D,CAAAA,OAAK8D,cAAe0H,CAAAA,CAAAA,CAAAA,GAElCA,CAAAA,MAOZ3E,CAAI,CAAA6E,iBAAA,GAAAA,iBAAA,CAAA3E,sBAAA,kCACEhD,CAAAA,GAER8C,CAAI,CAAA8E,iBAAA,GAAAA,iBAAA,CAAA5E,sBAAA,iDAED,GAAI3F,CAAAA,KAAK2C,CAAMV,CAAAA,CAAAA,CAAAA,CAAOD,cAAe,CAAA,SAAA,CAAW,CACjDC,KAAO,CAAA,MAAA,CAAA,CAAA,CAEPU,CAAAA,EASc/D,IAAAA,CAAKyB,SAAW,2DAA8D,CAAA,8DAAA,CAE1EzB,IAAKyB,CAAAA,QAAAA,EAAYzB,IAAK2E,CAAAA,cAAAA,CAAAA,CAAAA,CAAmB,IAAO,CAAA,GAAA,CAC/C8C,SAAAA,CAAAA,CAAAA,CAAoC,UAAVA,CAAE3F,CAAAA,GAAAA,EAA6B,MAAV2F,CAAE3F,CAAAA,GAAAA,EAAa9B,OAAK4L,SAAW,CAAA,CAAA,EAAA,CACjF5L,IAAK4L,CAAAA,SAAAA,CAhGN,CAAC,KAAA,CAAO,KAAO,CAAA,KAAA,CAAO,KAAO,CAAA,KAAA,CAAO,MAAO,KAuG7C/B,CAAAA,CAAAA,GAAAA,CAAI7D,SAAAA,CAAOa,QAAAA,CAAAA,CAAI,CAAAgF,iBAAA,GAAAA,iBAAA,CAAA9E,sBAAA,yCAAyBf,CAAAA,GAAAA,CAAAA,CAC/CwE,CAAAA,CAAQX,IAAI,SAAC7D,CAAAA,CAAK8F,GAClB,GAAMpB,CAAAA,CAAAA,CACJoB,GAASxB,CAAiBrH,CAAAA,MAAAA,EAC1B6I,EAAQxB,CAAiBrH,CAAAA,MAAAA,CAAS+G,EAAU/G,MACxC8I,CAAAA,CAAAA,CAA6DtB,EAAezE,CAAK3C,CAAAA,CAAAA,CAAOU,EAAM2G,CAC9FsB,CAAAA,CAAAA,GAAAA,CAAgB,CACpBC,QAAa,CAAA,CAAA,CAAA,CACb,eAAiBjM,MAAKkM,CAAAA,aAAAA,CAAclG,EAAK3C,CAAOU,CAAAA,CAAAA,CAAAA,CAChD,WAAa8G,CAAU7E,CAAAA,CAAAA,CAAK3C,EAAOU,CAAM2G,CAAAA,CAAAA,CAAAA,CACzCyB,QAAYzB,CAId,CAAA,CAAA,MAFGqB,CAAAA,IAAeC,GAAYD,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,GAEtClF,CAAI,CAAAuF,iBAAA,GAAAA,iBAAA,CAAArF,sBAAA,iVAEYf,CAAAA,CACbgB,CAASgF,CAAAA,GAAAA,CAAAA,CACNtB,CAAAA,EAAkB1K,OAAKkM,aAAclG,CAAAA,CAAAA,CAAK3C,EAAOU,CAAU/D,CAAAA,EAAAA,CAAAA,MAAAA,CAAKyB,SAAW,GAAM,CAAA,IAAA,CAC/EgG,SAAAA,CAAoC,CAAA,CAAA,OAAA,GAAVA,CAAE3F,CAAAA,GAAAA,EAA6B,GAAV2F,GAAAA,CAAAA,CAAE3F,KAAa9B,MAAKqM,CAAAA,UAAAA,CAAWrG,CAAK3C,CAAAA,CAAAA,CAAOU,CAAK,CAAA,EAAA,CAClG,UAAA,CAAY2G,CAAgB1K,EAAAA,MAAAA,CAAKqM,UAAWrG,CAAAA,CAAAA,CAAK3C,EAAOU,CAAK,CAAA,EAAA,CAGnEiC,CAAAA,CAtISA,SAAAA,CAAAA,CAAa3C,CAAeU,CAAAA,CAAAA,CAAAA,CACjD,GAAMuI,CAAAA,CAAAA,CAAQ,GAAIlL,CAAAA,IAAAA,CAAAA,CAAAA,CAClB,MACE4E,CAAAA,CAAAA,GAAQsG,CAAMpH,CAAAA,OAAAA,CAAAA,CAAAA,EACd7B,CAAQ,CAAA,CAAA,GAAMiJ,EAAMjL,QAAa,CAAA,CAAA,CAAA,CAAA,EACjC0C,CAASuI,GAAAA,CAAAA,CAAM/K,WACf,CAAA,CAAA,EAAA,CAiIwByE,CAAAA,CAAK3C,CAAOU,CAAAA,CAAAA,CAAAA,EAAS2G,CAAe7D,CAAAA,CAAI,CAAA0F,iBAAA,GAAAA,iBAAA,CAAAxF,sBAAA,2EAAiEY,CAAAA,CAEtH,EAAA,CAAA,EAKhB,CASD,GAAA7F,GAAA,iBAAAC,KAAA,UAAAmK,aAAAA,CAAclG,CAAAA,CAAa3C,CAAeU,CAAAA,CAAAA,CAAAA,CACxC,GAAK/D,CAAAA,IAAAA,CAAKwB,iBACR,CAAA,MAAA,CAAO,CAET,CAAA,GAAMgL,CAAAA,CAAc,CAAA,GAAIpL,CAAAA,IAAKA,CAAAA,IAAAA,CAAKqL,GAAI1I,CAAAA,CAAAA,CAAMV,CAAO2C,CAAAA,CAAAA,CAAAA,CAAAA,CAC7CjF,CAAYf,CAAAA,IAAAA,CAAKuE,UAAWvE,CAAAA,IAAAA,CAAKwB,iBAAkBT,CAAAA,SAAAA,CAAAA,CACnDC,CAAUhB,CAAAA,IAAAA,CAAKuE,UAAWvE,CAAAA,IAAAA,CAAKwB,kBAAkBR,OACvDA,CAAAA,CAAAA,CAAAA,CAAQ0L,WAAY,CAAA,EAAA,CAAI,EAAI,CAAA,EAAA,CAAI,GAEhC,CAAA,CAAA,MADsBF,CAAAA,CAAezL,EAAAA,CAAAA,EAAayL,CAAexL,EAAAA,CAElE,EAED,GAAAc,GAAA,aAAAC,KAAA,UAAA2F,SAAAA,CAAUiF,CAAAA,CAAAA,CAAAA,CAENA,CACC3M,SADD2M,CACC3M,UADD2M,CACC3M,CAAAA,IAAAA,CAAKK,KACY,CAAA,UAAA,GAAdL,IAAKS,CAAAA,IAAAA,CACHmM,CAAUC,CAAAA,QAAAA,CACVD,CAAUE,CAAAA,KAAAA,CACZF,CAAUG,CAAAA,MAAAA,IAEEH,CAAUG,CAAAA,MAAAA,CAC1B/M,KAAK+B,KAAQ,CAAA,IAAA,EAEb/B,IAAKC,CAAAA,cAAAA,CAAiB,EACtBD,CAAAA,IAAAA,CAAKe,SAAY,CAAA,IAAA,CACjBf,IAAKgB,CAAAA,OAAAA,CAAU,IACfhB,CAAAA,IAAAA,CAAKyJ,YAAe/E,CAAAA,IAAAA,EAAAA,CACpB1E,IAAKuJ,CAAAA,aAAAA,CAAAA,IAAgB7E,EAGvB1E,CAAAA,CAAAA,IAAAA,CAAK0G,aACL1G,CAAAA,CAAAA,CAAAA,IAAAA,CAAKmC,IAAK,CAAA,YAAA,CACX,EAUD,GAAAL,GAAA,cAAAC,KAAA,UAAAsK,UAAAA,CAAWrG,CAAAA,CAAa3C,CAAeU,CAAAA,CAAAA,CAAAA,CACrC,GAAI/D,IAAAA,CAAKyB,SAAU,OACnB,GAAMuL,CAAAA,CAAe,CAAA,GAAI5L,CAAAA,IAAK2C,CAAAA,CAAAA,CAAMV,CAAO2C,CAAAA,CAAAA,CAAAA,CAE3C,GAAIhG,IAAAA,CAAKK,KAMP,EAAA,GALIL,IAAKe,CAAAA,SAAAA,EAAaf,IAAKgB,CAAAA,OAAAA,GACzBhB,IAAKe,CAAAA,SAAAA,CAAY,IACjBf,CAAAA,IAAAA,CAAKgB,OAAU,CAAA,IAAA,CAAA,CAGbhB,IAAKiB,CAAAA,gBAAAA,CACPjB,IAAKe,CAAAA,SAAAA,CAAYiM,CACbhN,CAAAA,IAAAA,CAAKgB,OAAWgM,EAAAA,CAAAA,CAAehN,KAAKgB,OACtChB,GAAAA,IAAAA,CAAKgB,OAAU,CAAA,IAAA,CAAA,CAEjBhB,IAAKiB,CAAAA,gBAAAA,CAAAA,CAAmB,CAIxB,CAAA,IAAA,IAFAjB,IAAKiB,CAAAA,gBAAAA,CAAAA,CAAmB,CAEpBjB,CAAAA,IAAAA,CAAKe,SAAaiM,EAAAA,CAAAA,CAAehN,IAAKe,CAAAA,SAAAA,CACxCf,IAAKe,CAAAA,SAAAA,CAAYiM,CACjBhN,CAAAA,IAAAA,CAAKgB,OAAU,CAAA,IAAA,CACfhB,IAAKiB,CAAAA,gBAAAA,CAAAA,CAAmB,CACnB,CAAA,IAAA,CACL,GAAMD,CAAAA,GAAAA,CAAUgM,CAChBhM,CAAAA,GAAAA,CAAQiF,SAAS,EAAI,CAAA,EAAA,CAAI,EAAI,CAAA,GAAA,CAAA,CAC7BjG,IAAKgB,CAAAA,OAAAA,CAAUA,GAChB,EAAA,KAEE,CACL,GAAG+D,MAAO/E,CAAAA,IAAAA,CAAK+B,KAAQgD,CAAAA,EAAAA,MAAAA,CAAOiI,CAAiBhN,CAAAA,EAAAA,IAAAA,CAAKO,mBAElD,CAAA,MAAA,KADAP,KAAK0H,CAAAA,SAAAA,CAAAA,CAAAA,CAGP1H,IAAK+B,CAAAA,KAAAA,CAAQiL,CACbhN,CAAAA,IAAAA,CAAKiN,eAAgB,CAAA,CAAElL,KAAO/B,CAAAA,IAAAA,CAAK+B,KACpC,CAAA,CAAA,EACF,CAKD,GAAAD,GAAA,mBAAAC,KAAA,UAAAG,eAAAA,CAAAA,CAAAA,CACE,GAAIlC,IAAAA,CAAKK,KACP,CAAA,GAAA,CACE,GAAM6M,CAAAA,GAAAA,CAAa/M,IAAKgE,CAAAA,KAAAA,CAAMnE,IAAKC,CAAAA,cAAAA,EAAkB,EACrDD,CAAAA,CAAAA,IAAAA,CAAKe,SAAY,CAAA,GAAIK,CAAAA,IAAK8L,CAAAA,GAAAA,CAAWnM,SACrCf,CAAAA,CAAAA,IAAAA,CAAKgB,OAAU,CAAA,GAAII,CAAAA,IAAK8L,CAAAA,GAAAA,CAAWlM,OAGnChB,CAAAA,CAAAA,IAAAA,CAAKe,SAAY,CAAA,GAAIK,CAAAA,IAAKpB,CAAAA,IAAAA,CAAKe,SAAU2B,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CACzC1C,IAAKgB,CAAAA,OAAAA,CAAU,GAAII,CAAAA,IAAAA,CAAKpB,IAAKgB,CAAAA,OAAAA,CAAQ0B,OAErC1C,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAK+B,KAAQ,CAAA,IACd,EAAC,MAAO0F,CAER,CAAA,CAAA,CAAA,IAED,IAAIzH,IAAAA,CAAKC,cAAgB,CAAA,CACvB,GAAIuC,CAAAA,GAAAA,CAAa,GAAIpB,CAAAA,IAAAA,CAAKpB,IAAKC,CAAAA,cAAAA,CAAAA,CAE/BuC,GAAO,CAAA,GAAIpB,CAAAA,IAAKoB,CAAAA,GAAAA,CAAKE,OAAuC,CAAA,CAAA,CAAA,GAAA,CAA3BF,IAAKI,iBAEjCH,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAMD,GAAKE,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,GACd1C,IAAK+B,CAAAA,KAAAA,CAAQS,GACbxC,CAAAA,IAAAA,CAAKmB,YAAenB,CAAAA,IAAAA,CAAK+B,KAAMV,CAAAA,QAAAA,CAAAA,CAAAA,CAC/BrB,IAAKsB,CAAAA,WAAAA,CAActB,IAAK+B,CAAAA,KAAAA,CAAMR,WAEjC,CAAA,CAAA,CAAA,EAEJ,CAKD,GAAAO,GAAA,wBAAAC,KAAA,UAAAyH,oBAAAA,CAAqBlD,CAAAA,CAAAA,CACnBA,CAAMC,CAAAA,eAAAA,CAAAA,CAAAA,CACND,CAAMG,CAAAA,MAAAA,CAAO1E,KAAQuE,CAAAA,CAAAA,CAAMG,MAAO1E,CAAAA,KAAAA,CAAMqD,QAAQ,KAAO,CAAA,EAAA,CAAA,CACvD,GAAM+H,CAAAA,CAAAA,CAASrH,MAAOQ,CAAAA,CAAAA,CAAMG,MAAO1E,CAAAA,KAAAA,CAAAA,CAC/BoL,CAGJnN,GAAAA,IAAAA,CAAKuJ,aAAgB4D,CAAAA,CAAAA,CACjBnN,IAAKyJ,CAAAA,YAAAA,EAAgBzJ,IAAKuJ,CAAAA,aAAAA,EAC5BvJ,IAAK+J,CAAAA,oBAAAA,CAAqB/J,IAAKyJ,CAAAA,YAAAA,CAAczJ,IAAKuJ,CAAAA,aAAAA,CAAejD,CAEpE,CAAA,CAAA,EAED,GAAAxE,GAAA,oBAAAC,KAAA,UAAA2H,gBAAAA,CAAiBpD,CACfA,CAAAA,CAAAA,CAAAA,CAAMC,eACNvG,CAAAA,CAAAA,CAAAA,IAAAA,CAAKyJ,aAAenD,CAAMG,CAAAA,MAAAA,CAAO1E,KAC7B/B,CAAAA,IAAAA,CAAKyJ,YAAgBzJ,EAAAA,IAAAA,CAAKuJ,aAC5BvJ,EAAAA,IAAAA,CAAK+J,oBAAqB/J,CAAAA,IAAAA,CAAKyJ,YAAczJ,CAAAA,IAAAA,CAAKuJ,aAAejD,CAAAA,CAAAA,CAEpE,EAED,GAAAxE,GAAA,wBAAAC,KAAA,UAAAgI,oBAAAA,CAAqBJ,CAAAA,CAAiB5H,CAAeuE,CAAAA,CAAAA,CAAAA,CACnDtG,IAAKoN,CAAAA,oBAAAA,CAAqBzD,CAAM5H,CAAAA,CAAAA,CAAAA,CAChC/B,IAAKyJ,CAAAA,YAAAA,CAAeE,CACpB3J,CAAAA,IAAAA,CAAKuJ,aAAgBxH,CAAAA,CACtB,EAED,GAAAD,GAAA,wBAAAC,KAAA,UAAAqL,oBAAAA,CAAqBzD,CAAc5H,CAAAA,CAAAA,CAAAA,CACjC,GAAMsL,CAAAA,CAAAA,CAAU,GAAIjM,CAAAA,IAAAA,CAAAA,CAAAA,CACdkM,CAAY,CAAA,GAAIlM,CAAAA,IAEtB,CAAA,CAAA,CAAA,OAAQuI,CACN,EAAA,IAAK,SACH2D,CAAAA,CAAAA,CAAUC,UAAWD,CAAAA,CAAAA,CAAUnH,UAAepE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC9C,MACF,IAAK,OACHuL,CAAAA,CAAAA,CAAUrH,QAASqH,CAAAA,CAAAA,CAAUpH,QAAanE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC1C,MACF,IAAK,OACHuL,CAAUE,CAAAA,OAAAA,CAAQF,CAAUpI,CAAAA,OAAAA,CAAAA,CAAAA,CAAYnD,CACxC,CAAA,CAAA,MACF,IAAK,OAAA,CACHuL,CAAUE,CAAAA,OAAAA,CAAQF,CAAUpI,CAAAA,OAAAA,CAAAA,CAAAA,CAAY,CAAInD,CAAAA,CAAAA,CAAAA,CAC5C,MACF,IAAK,QACHuL,CAAAA,CAAAA,CAAUG,QAASH,CAAAA,CAAAA,CAAUjM,QAAaU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAO9C,MAHA/B,KAAAA,CAAKe,SAAY,CAAA,GAAIK,CAAAA,IAAKkM,CAAAA,CAAAA,CAAU5K,OACpC1C,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgB,QAAU,GAAII,CAAAA,IAAAA,CAAKiM,CAAQ3K,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAEzB,CACL3B,SAAAA,CAAWf,IAAKe,CAAAA,SAAAA,CAChBC,OAAShB,CAAAA,IAAAA,CAAKgB,OAEjB,CAAA,EAKO,GAAAc,GAAA,wBAAAC,KAAA,UAAAmG,oBAAAA,CAAqB5B,CAE3B,CAAA,CAAA,GADAA,CAAMC,CAAAA,eAAAA,CAAAA,CAAAA,CAAAA,CACDvG,IAAKe,CAAAA,SAAAA,CAER,MADAf,MAAAA,IAAAA,CAAKe,SAAY,CAAA,IAAA,CAAA,CAGnB,GAAM2M,CAAAA,CAAAA,CAAO1N,IAAK2N,CAAAA,SAAAA,CAAUrH,CAAMG,CAAAA,MAAAA,CAAO1E,MAAO/B,IAAKe,CAAAA,SAAAA,CAAAA,CACjD2M,CACF1N,CAAAA,IAAAA,CAAKe,SAAY2M,CAAAA,CAAAA,CAEjB1N,IAAKe,CAAAA,SAAAA,CAAUkF,QAAS,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAEhCjG,IAAK0G,CAAAA,aAAAA,CAAAA,CACN,EAKO,GAAA5E,GAAA,sBAAAC,KAAA,UAAAoG,kBAAAA,CAAmB7B,CAAAA,CAAAA,CAEzB,GADAA,CAAAA,CAAMC,eACDvG,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgB,OAER,CAAA,MAAA,MADAhB,IAAKgB,CAAAA,OAAAA,CAAU,IAGjB,CAAA,CAAA,GAAM0M,CAAAA,CAAO1N,CAAAA,IAAAA,CAAK2N,SAAUrH,CAAAA,CAAAA,CAAMG,MAAO1E,CAAAA,KAAAA,CAAO/B,IAAKgB,CAAAA,OAAAA,CAAAA,CACjD0M,CACF1N,CAAAA,IAAAA,CAAKgB,OAAU0M,CAAAA,CAAAA,CAEf1N,IAAKgB,CAAAA,OAAAA,CAAQiF,QAAS,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAE9BjG,IAAK0G,CAAAA,aAAAA,CAAAA,CACN,EAGO,GAAA5E,GAAA,aAAAC,KAAA,UAAA4L,SAAAA,CAAUpI,CAAAA,CAAe/C,CAC/B,CAAA,CAAA,GAAA,CAAKxC,IAAK4N,CAAAA,gBAAAA,CAAiBrI,CACzB,CAAA,CAAA,MAAO,KAET,CAAA,IAAAsI,YAAA,CAA+BtI,CAAMuI,CAAAA,KAAAA,CAAM,GAAKjE,CAAAA,CAAAA,GAAAA,CAAI/D,MAC9CU,CAAAA,CAAAA,aAAAA,CAAAA,cAAAA,CAAAA,YAAAA,IADCuH,CAAMC,CAAAA,aAAAA,IAAAA,CAAAA,CAAAA,aAAAA,IAAQC,mBACfzH,CAAAA,CAAU,GAAIpF,CAAAA,IAAAA,CAAKoB,CAAKE,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAE9B,MADA8D,CAAAA,CAAAA,CAAQP,QAAS8H,CAAAA,CAAAA,CAAMC,CAAQC,CAAAA,CAAAA,CAAAA,CACxBzH,CACR,EAGO,GAAA1E,GAAA,oBAAAC,KAAA,UAAA6L,gBAAAA,CAAiBrI,CAEvB,CAAA,CAAA,MADc,+CACD2I,CAAAA,IAAAA,CAAK3I,CACnB,CAAA,EAEO,GAAAzD,GAAA,cAAAC,KAAA,UAAAkG,UAAAA,CAAWzF,CACjB,CAAA,CAAA,GAAA,CAAKA,EAAM,MAAO,EAAA,CAIlB,SAAAuD,MAAA,CAHchB,MAAOvC,CAAAA,CAAAA,CAAK0D,QAAYlB,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAS,CAAG,CAAA,GAAA,CAAA,MAAAe,MAAA,CAClChB,MAAOvC,CAAAA,CAAAA,CAAK2D,UAAcnB,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAS,CAAG,CAAA,GAAA,CAAA,MAAAe,MAAA,CACtChB,MAAOvC,CAAAA,CAAAA,CAAK4D,UAAcpB,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAS,CAAG,CAAA,GAAA,CAAA,EAEvD,CAEO,GAAAlD,GAAA,aAAAC,KAAA,UAAA6J,SAAAA,CAAAA,CACN,CAAA,GAAA,CAAI5L,IAAKyB,CAAAA,QAAAA,CACT,GAA0B,EAAA,GAAtBzB,KAAKmB,YAAqB,CAAA,CAC5B,GAAMgN,CAAAA,GAAAA,CAAUnO,IAAKsB,CAAAA,WAAAA,CAAc,CACnC,CAAA,GAAA,IAAoBoD,EAAjB1E,GAAAA,IAAAA,CAAK2D,OAAyBwK,EAAAA,GAAAA,CAAUnO,IAAK2D,CAAAA,OAAAA,CAAS,OACzD3D,IAAAA,CAAKmB,YAAe,CAAA,CAAA,CACpBnB,IAAKsB,CAAAA,WAAAA,CAAc6M,GACpB,EAAA,IACCnO,KAAKmB,CAAAA,YAAAA,EAER,EAEO,GAAAW,GAAA,aAAAC,KAAA,UAAAgJ,SAAAA,CAAAA,CACN,CAAA,GAAA,CAAI/K,IAAKyB,CAAAA,QAAAA,CACT,GAA0B,CAAtBzB,GAAAA,IAAAA,CAAKmB,YAAoB,CAAA,CAC3B,GAAMgN,CAAAA,GAAAA,CAAUnO,IAAKsB,CAAAA,WAAAA,CAAc,CACnC,CAAA,GAAA,IAAsBoD,EAAnB1E,GAAAA,IAAAA,CAAKyD,SAA2B0K,EAAAA,GAAAA,CAAUnO,IAAKyD,CAAAA,SAAAA,CAAW,OAC7DzD,IAAAA,CAAKmB,YAAe,CAAA,EAAA,CACpBnB,IAAKsB,CAAAA,WAAAA,CAAc6M,GACpB,EAAA,IACCnO,KAAKmB,CAAAA,YAAAA,EAER,EAEO,GAAAW,GAAA,eAAAC,KAAA,UAAA6F,WAAAA,CAAAA,CACA5H,CAAAA,IAAAA,CAAKe,WAAaf,IAAKgB,CAAAA,OAAAA,EAC7BhB,IAAKiN,CAAAA,eAAAA,CAAiB,CACpBlM,SAAAA,CAAWf,IAAKe,CAAAA,SAAAA,CAChBC,OAAShB,CAAAA,IAAAA,CAAKgB,OAEjB,CAAA,CAAA,EAED,GAAAc,GAAA,gBAAAC,KAAA,UAAAqF,YAAAA,CAAad,CACPtG,CAAAA,CAAAA,IAAAA,CAAKyB,QACTzB,GAAAA,IAAAA,CAAKS,IAAO6F,CAAAA,CAAAA,CAAMG,MAAO1E,CAAAA,KAAAA,CACzB/B,IAAKmC,CAAAA,IAAAA,CAAK,kBAAoB,CAAA,CAAEJ,KAAO/B,CAAAA,IAAAA,CAAKS,IAC7C,CAAA,CAAA,CAAA,EACD,GAAAqB,GAAA,cAAAC,KAAA,UAAAwC,UAAAA,CAAW6J,CAAAA,CAAAA,CACV,MAAQ,IAAIhN,CAAAA,IACTA,CAAAA,IAAAA,CAAKqL,GACH2B,CAAAA,CAAAA,CAAQ/I,KAAM,CAAA,CAAA,CAAG,CACjB+I,CAAAA,CAAAA,CAAAA,CAAQ/I,KAAM,CAAA,CAAA,CAAG,CAAK,CAAA,CAAA,CAAA,CACtB+I,CAAQ/I,CAAAA,KAAAA,CAAM,CAAG,CAAA,EAAA,CAAA,CAAA,CAGtB,EAED,GAAAvD,GAAA,mBAAAC,KAAA,UAAAkL,eAAAA,CAAgBoB,CAAAA,CAAAA,CACdrO,IAAKmC,CAAAA,IAAAA,CAAK,cAAekM,CAAAA,CAAAA,CAAAA,CACzBrO,IAAKmC,CAAAA,IAAAA,CAAK,cAAckM,CACzB,CAAA,EAEO,GAAAvM,GAAA,gBAAAC,KAAA,UAAAgG,YAAAA,CAAahE,CAAcV,CAAAA,CAAAA,CAAAA,CACjC,GAAMiL,CAAAA,CAAAA,CAAc,GAAIlN,CAAAA,IAAAA,CAAK2C,CAAMV,CAAAA,CAAAA,CAAQ,CAAG,CAAA,CAAA,CAAA,CAAG6B,OACjD,CAAA,CAAA,CAAA,MAAOnC,CAAAA,KAAMC,CAAAA,IAAAA,CAAK,CAAEC,MAAAA,CAAQqL,CAAe,CAAA,CAAA,SAACpL,CAAGC,CAAAA,CAAAA,QAAMA,CAAAA,CAAI,CAAA,CAAA,EAAA,CAC1D,EAn8B+CoL,KAAAA,GAAAA,UAAAA,GAAAA,CANzC,SAAA1L,IAAA,CAAW2L,CAChB,MAAO,CAACA,CAAAA,CACT,EAsDD,MA7DgCC,CAAAA,GAWgBF,CAAAA,CAAA,CAA/CG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMsE,MAAQ4J,CAAAA,SAAAA,CAAW,OAAkD9O,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,gBAAA,CAAA,IAAA,EAE7BL,CAAAA,CAAAA,CAAAA,CAAA,CAAzDG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMsE,MAAQ4J,CAAAA,SAAAA,CAAAA,CAAU,CAAME,CAAAA,OAAAA,CAAAA,CAAQ,CAAkDhP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,cAAA,CAAA,IAAA,EAExDL,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMqO,OAASD,CAAAA,OAAAA,CAAAA,CAAS,CAAsBhP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,UAAA,OAAA,CAAA,IAAA,EAAA,CAAA,CAEEL,CAAA,CAAA,CAA3DG,CAAS,CAAA,CAAEjO,IAAMqO,CAAAA,OAAAA,CAASH,SAAW,CAAA,CAAA,CAAA,CAAME,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0BhP,CAAA+O,CAAAA,SAAAA,CAAA,WAAA,CAAA,IAAA,EAAA,CAAA,CAElCL,CAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEjO,IAAMqO,CAAAA,OAAAA,CAASD,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoChP,CAAA+O,CAAAA,SAAAA,CAAA,qBAAA,CAAA,IAAA,EAAA,CAAA,CAE5BL,CAAA,CAAA,CAA3CG,EAAS,CAAEjO,IAAAA,CAAMqO,OAASD,CAAAA,OAAAA,CAAAA,CAAS,CAA2BhP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,YAAA,CAAA,IAAA,EAEpBL,CAAAA,CAAAA,CAAAA,CAAA,CAA1CG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMsE,MAAQ8J,CAAAA,OAAAA,CAAAA,CAAS,CAAmDhP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,MAAA,CAAA,IAAA,EAE1DL,CAAAA,CAAAA,CAAAA,CAAA,CAA3BG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMsE,MAAkClF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,cAAA,CAAA,IAAA,IAExBL,CAAA,CAAA,CAA3BG,CAAS,CAAA,CAAEjO,IAAMqF,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAgCjG,CAAA+O,CAAAA,SAAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAEYL,CAAA,CAAA,CAA7DG,CAAS,CAAA,CAAEjO,IAAMsC,CAAAA,KAAAA,CAAO4L,SAAW,CAAA,sBAAA,CAAA,CAAA,CAAA,CAA4D9O,CAAA+O,CAAAA,SAAAA,CAAA,oBAAA,CAAA,IAAA,EAAA,CAAA,CAEpEL,CAAA,CAAA,CAA3BG,CAAS,CAAA,CAAEjO,IAAMqO,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAA0CjP,CAAA+O,CAAAA,SAAAA,CAAA,kBAAA,CAAA,IAAA,EAAA,CAAA,CAECL,CAAA,CAAA,CAA5DG,CAAS,CAAA,CAAEjO,IAAMqF,CAAAA,MAAAA,CAAS6I,SAAW,CAAA,CAAA,CAAA,CAAME,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0BhP,CAAA+O,CAAAA,SAAAA,CAAA,WAAA,CAAA,IAAA,EAAA,CAAA,CAElBL,CAAA,CAAA,CAA5DG,CAAS,CAAA,CAAEjO,IAAMqF,CAAAA,MAAAA,CAAS6I,SAAW,CAAA,CAAA,CAAA,CAAME,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwBhP,CAAA+O,CAAAA,SAAAA,CAAA,SAAA,CAAA,IAAA,EAAA,CAAA,CAElBL,CAAA,CAAA,CAA1DG,EAAS,CAAEjO,IAAAA,CAAMqO,OAASH,CAAAA,SAAAA,CAAAA,CAAU,CAAME,CAAAA,OAAAA,CAAAA,CAAS,CAAiChP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,mBAAA,CAAA,IAAA,EAE1BL,CAAAA,CAAAA,CAAAA,CAAA,CAA1DG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMqO,OAASH,CAAAA,SAAAA,CAAAA,CAAU,CAAME,CAAAA,OAAAA,CAAAA,CAAS,CAAgChP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,kBAAA,CAAA,IAAA,EAEzBL,CAAAA,CAAAA,CAAAA,CAAA,CAA1DG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMsE,OAAQ8J,OAAS,CAAA,CAAA,CAAA,CAAMF,SAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyC9O,CAAA+O,CAAAA,SAAAA,CAAA,YAAA,CAAA,IAAA,EAAA,CAAA,CAGpFL,CAAA,CAAA,CAARQ,CAAsClP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,WAAA,CAAA,IAAA,EAE9BL,CAAAA,CAAAA,CAAAA,CAAA,CAARQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAoClP,CAAA+O,CAAAA,SAAAA,CAAA,SAAA,CAAA,IAAA,EAAA,CAAA,CAE5BL,CAAA,CAAA,CAARQ,CAAgClP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,kBAAA,CAAA,IAAA,EAExBL,CAAAA,CAAAA,CAAAA,CAAA,CAARQ,CAAmClP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,WAAA,CAAA,IAAA,EAE3BL,CAAAA,CAAAA,CAAAA,CAAA,CAARQ,CAAAA,CAAAA,CAAAA,CAAAA,CAA2BlP,CAAA+O,CAAAA,SAAAA,CAAA,OAAA,CAAA,IAAA,EAAA,CAAA,CAEnBL,CAAA,CAAA,CAARQ,CAAqDlP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,cAAA,CAAA,IAAA,EAE7CL,CAAAA,CAAAA,CAAAA,CAAA,CAARQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAuDlP,CAAA+O,CAAAA,SAAAA,CAAA,aAAA,CAAA,IAAA,EAAA,CAAA,CAE/CL,CAAA,CAAA,CAARQ,CAA8DlP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,mBAAA,CAAA,IAAA,EAEFL,CAAAA,CAAAA,CAAAA,CAAA,CAA5DG,CAAAA,CAAS,CAAEjO,IAAAA,CAAMqO,OAASH,CAAAA,SAAAA,CAAAA,CAAW,CAAME,CAAAA,OAAAA,CAAAA,CAAS,CAAyBhP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,UAAA,CAAA,IAAA,EA6D9EL,CAAAA,CAAAA,CAAAA,CAAA,CADCS,CAAAA,CAAM,cAuBNnP,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+O,SAAA,CAAA,uBAAA,CAAA,IA/IU/O,CAAAA,CAAAA,OAAAA,KAAAA,CAAAA,CAAY0O,CAAA,CAAA,CADxBU,CAAc,CAAA,eAAA,CAAA,CAAA,CACFpP"}
1
+ {"version":3,"file":"nile-calendar.cjs.js","sources":["../../../src/nile-calendar/nile-calendar.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n html,\n CSSResultArray,\n TemplateResult,\n nothing\n} from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { styles } from './nile-calendar.css';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport { ClearMode } from './nile-calendar.enum';\nimport { TIMEZONES, isValidTimezone, isClockTime, utcFromFields, localDateFromFields, formatYear4, DEFAULT_START_YEAR, DEFAULT_END_YEAR } from './timezones';\nimport { setAnimation } from '../utilities/animation-registry';\nimport type { PropertyValueMap } from 'lit';\ntype NileCalendarDateRange={ startDate: string, endDate: string }\ntype TimeUnits= 'minutes'|'hours'|'days'|'weeks'|'months';\n\n/** A wall clock — digits on a clock face. Local time*/\nexport type CalendarWallClock = {\n year: number;\n /** 1–12 (January = 1), NOT the 0–11 month of JavaScript `Date`; subtract 1 before `new Date(...)`. */\n month: number;\n day: number;\n hours: number; minutes: number; seconds: number; ms: number;\n};\n\n/* one exact moment on the timeline Eg: 2026-03-01T10:00:00Z, …+05:30 */\nconst INSTANT_VALUE_RE =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?(?:\\.\\d{1,3})?(?:Z|[+-]\\d{2}:?\\d{2})$/;\n/** an instant plus the zone it was picked in. Eg: 2026-03-01T10:00:00.000[GMT+05:30 Asia/Kolkata] */\nconst BRACKETED_VALUE_RE =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{3}))?\\[GMT([+-])(\\d{2}):(\\d{2})\\s+([^\\]]+)\\]$/;\nexport function instantFromValueString(raw: string | null | undefined): number | null {\n if (typeof raw !== 'string') return null;\n const trimmed = raw.trim();\n if (!INSTANT_VALUE_RE.test(trimmed)) return null;\n const ms = new Date(trimmed).getTime();\n return isNaN(ms) ? null : ms;\n}\n/** digits on a clock face, 2026-03-01T10:00:00 */\nconst OFFSETLESS_VALUE_RE =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.(\\d{1,3}))?$/;\n/** Digits as written, with no zone conversion. */\nexport function wallClockFromOffsetLess(\n raw: string | null | undefined\n): CalendarWallClock | null {\n if (typeof raw !== 'string') return null;\n const m = OFFSETLESS_VALUE_RE.exec(raw.trim());\n if (!m) return null;\n const year = Number(m[1]);\n const month0 = Number(m[2]) - 1;\n const day = Number(m[3]);\n if (month0 < 0 || month0 > 11 || day < 1) return null;\n if (!isClockTime(Number(m[4]), Number(m[5]), Number(m[6] ?? 0), Number(m[7] ?? 0))) return null;\n const lastDay = new Date(utcFromFields(year, month0 + 1, 0)).getUTCDate();\n const t = utcFromFields(\n year, month0, Math.min(day, lastDay),\n Number(m[4]), Number(m[5]), Number(m[6] ?? 0), Number(m[7] ?? 0)\n );\n if (isNaN(t)) return null;\n const u = new Date(t);\n return {\n year: u.getUTCFullYear(),\n month: u.getUTCMonth() + 1,\n day: u.getUTCDate(),\n hours: u.getUTCHours(),\n minutes: u.getUTCMinutes(),\n seconds: u.getUTCSeconds(),\n ms: u.getUTCMilliseconds(),\n };\n}\n\nexport function wallClockInZone(epochMs: number, zone: string): CalendarWallClock {\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZone: zone,\n hourCycle: 'h23',\n year: 'numeric', month: '2-digit', day: '2-digit',\n hour: '2-digit', minute: '2-digit', second: '2-digit',\n });\n const parts: Record<string, number> = {};\n for (const part of formatter.formatToParts(new Date(epochMs))) {\n if (part.type !== 'literal') parts[part.type] = Number(part.value);\n }\n return {\n year: parts.year,\n month: parts.month,\n day: parts.day,\n hours: parts.hour === 24 ? 0 : parts.hour,\n minutes: parts.minute,\n seconds: parts.second,\n ms: ((epochMs % 1000) + 1000) % 1000,\n };\n}\n\nexport function instantFromBracketedValue(\n raw: string | null | undefined\n): { epochMs: number; timezone: string } | null {\n if (typeof raw !== 'string') return null;\n const m = BRACKETED_VALUE_RE.exec(raw.trim());\n if (!m) return null;\n const [, y, mo, d, h, mi, s, ms, sign, oh, om, rawZone] = m;\n const zone = rawZone.trim();\n if (!isValidTimezone(zone)) return null;\n\n const wall = {\n year: Number(y), month: Number(mo), day: Number(d),\n hours: Number(h), minutes: Number(mi), seconds: Number(s), ms: Number(ms ?? 0),\n };\n // ISO end-of-day: exactly 24:00:00(.000) is the next day's 00:00:00; any other hour 24 or above is not a time\n const endOfDay = wall.hours === 24;\n if (wall.hours > 24 || (endOfDay && (wall.minutes !== 0 || wall.seconds !== 0 || wall.ms !== 0))) return null;\n const offsetMs =\n (sign === '-' ? -1 : 1) * (Number(oh) * 3600000 + Number(om) * 60000);\n const wallMs = utcFromFields(wall.year, wall.month - 1, wall.day, wall.hours, wall.minutes, wall.seconds, wall.ms);\n const candidate = wallMs - offsetMs;\n\n const readBack = wallClockInZone(candidate, zone);\n // the digits the zone must read back: the written ones, or the rolled-over next day for 24:00:00\n const expected = endOfDay ? wallClockInZone(wallMs, 'UTC') : wall;\n const digitsAgree =\n readBack.year === expected.year && readBack.month === expected.month &&\n readBack.day === expected.day && readBack.hours === expected.hours &&\n readBack.minutes === expected.minutes && readBack.seconds === expected.seconds &&\n readBack.ms === expected.ms;\n if (!digitsAgree) return null;\n return { epochMs: candidate, timezone: zone };\n}\n/**\n * Nile icon component.\n *\n * @tag nile-calendar\n *\n * @csspart calendar-container - The outer container.\n * @csspart calendar-switcher - The Absolute / Relative tab switcher.\n * @csspart button-container - The default variant's button row.\n * @csspart calendar-wrapper - Wraps the month grid.\n * @csspart trigger - The month and year dropdown triggers.\n * @csspart calendar-day-N - A day cell, where N is the day of the month.\n * @csspart current-date-dot - The marker on today's date.\n *\n * Parts that exist only in `variant=\"date-time-picker\"`:\n * @csspart calendar-config - The row holding the type switcher.\n * @csspart calendar - One month's header and grid.\n * @csspart calendar-header - The month header row.\n * @csspart calendar-header-prev - The previous-month icon.\n * @csspart calendar-header-next - The next-month icon.\n * @csspart calendar-header-center - The month and year area.\n * @csspart days-container - The grid of day cells.\n * @csspart day-name - A weekday label (Sun, Mon, ...).\n * @csspart calendar-day-label - The number inside a day cell.\n * @csspart tp-chevron - The expand / collapse control.\n * @csspart tp-scroll-area - The scrolling area under the grid.\n * @csspart tp-scroll-content - The content inside the scrolling area.\n * @csspart tp-time-fields - The row of time inputs.\n * @csspart tp-time-field - One time input (hours, minutes, seconds, milliseconds).\n * @csspart tp-stepper - The up/down stepper inside a time input.\n * @csspart tp-stepper-btn - Either stepper button.\n * @csspart tp-stepper-btn-up - The increase button.\n * @csspart tp-stepper-btn-down - The decrease button.\n * @csspart tp-timezone - The timezone section.\n * @csspart tp-timezone-header - The timezone label row.\n * @csspart tp-timezone-label - The \"Timezone\" label.\n * @csspart tp-timezone-local-link - The \"Use local timezone\" link.\n * @csspart tp-timezone-select - The timezone select.\n * @csspart tp-footer - The footer.\n * @csspart tp-footer-actions - The Reset and Apply group.\n * @csspart tp-set-to-now-button - The \"Set to now\" button.\n * @csspart clear-button - The Reset button.\n * @csspart apply-button - The Apply button.\n */\n@customElement('nile-calendar')\nexport class NileCalendar extends NileElement {\n /**\n * The styles for NileCalendar\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n\n\n @property({ type: String, attribute: 'value' }) valueAttribute: | string | null = null;\n\n @property({ type: String, attribute:true, reflect:true }) allowedDates: string = JSON.stringify({});\n\n @property({ type: Boolean, reflect: true }) range = false;\n\n @property({ type: Boolean, attribute: true, reflect:true }) hideTypes = false;\n\n @property({ type: Boolean, attribute: true, reflect: true }) showTypes = false;\n\n @property({ type: Boolean, reflect: true }) doubleClickUnselect = false;\n\n @property({ type: Boolean, reflect: true }) allowClear = false;\n\n @property({ type: String, reflect: true }) type :'absolute' | 'relative' = 'absolute';\n\n @property({ type: String }) selectedUnit: TimeUnits;\n\n @property({ type: Number }) selectedValue: number;\n\n @property({ type: Array, attribute: 'hide-duration-fields' }) hideDurationFields: String[] = [];\n \n @property({ type: Boolean}) showManualInputs :boolean=false;\n\n @property({ type: Number , attribute: true, reflect: true }) startYear: number;\n\n @property({ type: Number , attribute: true, reflect: true }) endYear: number;\n\n @property({ type: Boolean, attribute:true, reflect: true}) showMonthDropdown = false;\n \n @property({ type: Boolean, attribute:true, reflect: true}) showYearDropdown = false;\n\n @property({ type: String, reflect: true, attribute: true}) dateFormat: string = 'MM/DD/YYYY';\n\n @property({ type: Boolean, reflect: true }) structuredInput = false;\n\n @state() startDate: Date | null = null;\n\n @state() endDate: Date | null = null;\n\n @state() isSelectingStart = true;\n\n @state() hideInput: Boolean = false;\n\n @state() value: Date | null;\n\n @state() currentMonth: number = new Date().getMonth();\n\n @state() currentYear: number = new Date().getFullYear();\n\n @state() allowedDatesLocal: NileCalendarDateRange | any = null;\n\n @property({ type: Boolean, attribute: true, reflect: true }) disabled = false;\n\n @property({ type: String, attribute: true }) variant: 'default' | 'date-time-picker' = 'default';\n\n @property({ type: String, attribute: true }) timezone: string = 'UTC';\n\n /** the timezone the consumer configured; Reset restores this (internal changes never overwrite it) */\n private configuredTimezone = 'UTC';\n\n /** the zone the component itself is assigning, so updated() can tell it from a consumer change */\n private internalTimezone: string | null = null;\n\n private setTimezoneInternally(tz: string): void {\n if (tz !== this.timezone) this.internalTimezone = tz;\n this.timezone = tz;\n }\n\n @property({ type: Array, attribute: 'hide-time-fields' }) hideTimeFields: string[] = [];\n\n /** every field shown, minus the keys in hideTimeFields (a non-array value counts as an empty list) */\n private get resolvedTimeFields(): Record<string, boolean> {\n const merged: Record<string, boolean> = {\n hours: true,\n minutes: true,\n seconds: true,\n milliseconds: true,\n timezone: true,\n };\n const hidden = Array.isArray(this.hideTimeFields) ? this.hideTimeFields : [];\n for (const key of hidden) merged[key] = false;\n return merged;\n }\n\n private get tpFewFieldsNoTz(): boolean {\n const f = this.resolvedTimeFields;\n if (f.timezone !== false) return false;\n const timeCount = ['hours', 'minutes', 'seconds', 'milliseconds'].filter(\n k => f[k] !== false\n ).length;\n return timeCount <= 2;\n }\n\n @state() expanded = false;\n @state() tpLockedHeight: string | null = null;\n @state() tpHours: number | null = null;\n @state() tpMinutes: number | null = null;\n @state() tpSeconds: number | null = null;\n @state() tpMilliseconds: number | null = null;\n @state() tpFocusedTimeField: string | null = null;\n /** the day the keyboard last moved to; owns the grid's single tab stop (roving tabindex) */\n @state() tpFocusDate: { year: number; month: number; day: number } | null = null;\n @state() tpEditingText = '';\n\n private seedInstant: number | null = null;\n\n private seedFieldsKey: string | null = null;\n\n private seedZone: string | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n // before initializeValue: a zoned/bracketed value seeds the zone internally and must not become the configured one\n if (!this.hasUpdated) this.configuredTimezone = this.timezone;\n this.initializeValue();\n // firstUpdated runs once; a re-attach (DOM move) must restore the structuredInput listeners disconnectedCallback removed (no-op unless structuredInput)\n if (this.hasUpdated) this.bindStructuredInput();\n // disconnectedCallback dropped the observer; an already-rendered picker panel needs it back (updated() won't run on a bare re-attach)\n if (this.hasUpdated && this.variant === 'date-time-picker') this.observeCollapsedBase();\n this.emit('nile-init');\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.releasePanelObserver();\n this.unbindStructuredInput();\n this.emit('nile-destroy');\n }\n\n protected firstUpdated(): void {\n this.bindStructuredInput();\n }\n\n protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has('timezone')) {\n if (this.timezone !== this.internalTimezone) this.configuredTimezone = this.timezone;\n this.internalTimezone = null;\n }\n if (\n changedProperties.has('timezone') &&\n !changedProperties.has('valueAttribute') &&\n this.seedInstant !== null\n ) {\n if (this.seedZone !== null) {\n if (this.timezone !== this.seedZone) this.clearInstantSeed();\n } else if (this.seedFieldsKey === this.instantSeedFieldsKey()) {\n if (isValidTimezone(this.timezone)) {\n this.seedFromInstant(this.seedInstant, this.timezone);\n } else {\n this.clearInstantSeed();\n this.initializeValue();\n }\n } else {\n this.clearInstantSeed();\n }\n }\n if (\n changedProperties.has('structuredInput') ||\n changedProperties.has('variant') ||\n changedProperties.has('range') ||\n changedProperties.has('showManualInputs') ||\n changedProperties.has('type') ||\n changedProperties.has('dateFormat')\n ) {\n this.bindStructuredInput();\n }\n if (changedProperties.has('valueAttribute')) {\n if(!this.valueAttribute){\n this.value=null;\n this.startDate=null;\n this.endDate=null;\n this.isSelectingStart=true;\n if (this.variant === 'date-time-picker') this.resetTimeUnits();\n }\n const date = this.dateFromValueString(this.valueAttribute || '');\n if (!isNaN(date.getTime())) {\n this.value = date;\n this.currentMonth = this.value.getMonth();\n this.currentYear = this.value.getFullYear();\n }\n this.initializeValue();\n }\n if (this.variant === 'date-time-picker') {\n this.applyMonthYearDropdownAnimation();\n this.captureCollapsedHeight();\n } else {\n this.releasePanelObserver(); // the default variant has no picker panel to watch (a variant switch removed it)\n }\n }\n\n private tpResizeObserver?: ResizeObserver;\n\n /** the `.base--date-time-picker` element the observer currently watches */\n private tpObservedBase: HTMLElement | null = null;\n\n private releasePanelObserver(): void {\n this.tpResizeObserver?.disconnect();\n this.tpResizeObserver = undefined;\n this.tpObservedBase = null;\n }\n\n /** (re)points the observer at the rendered panel; a no-op while it already watches that element */\n private observeCollapsedBase(): HTMLElement | null {\n const base = this.shadowRoot?.querySelector(\n '.base--date-time-picker'\n ) as HTMLElement | null;\n if (!base) {\n this.releasePanelObserver();\n return null;\n }\n if (this.tpObservedBase !== base) {\n this.tpResizeObserver?.disconnect();\n this.tpResizeObserver = new ResizeObserver(() => this.measurePanel(base));\n this.tpResizeObserver.observe(base);\n this.tpObservedBase = base;\n }\n return base;\n }\n\n private captureCollapsedHeight(): void {\n const base = this.observeCollapsedBase();\n if (base) this.measurePanel(base);\n }\n\n private measurePanel(base: HTMLElement): void {\n if (this.expanded) return;\n const h = `${base.offsetHeight}px`;\n if (h !== this.tpLockedHeight) this.tpLockedHeight = h;\n }\n\n private applyMonthYearDropdownAnimation(): void {\n const apply = (root: ShadowRoot | null | undefined) => {\n root?.querySelectorAll('.month-dropdown, .year-dropdown').forEach(dd => {\n setAnimation(dd, 'dropdown.show', {\n keyframes: [\n { opacity: 0, scale: 0.9, translate: '0 -14px' },\n { opacity: 1, scale: 1, translate: '0 0' },\n ],\n options: { duration: 280, easing: 'cubic-bezier(0.16, 1, 0.3, 1)' },\n });\n setAnimation(dd, 'dropdown.hide', {\n keyframes: [\n { opacity: 1, scale: 1, translate: '0 0' },\n { opacity: 0, scale: 0.9, translate: '0 -14px' },\n ],\n options: { duration: 160, easing: 'ease' },\n });\n });\n };\n\n apply(this.shadowRoot);\n\n const inner = this.shadowRoot?.querySelector(\n '.tp-inner-calendar'\n ) as (HTMLElement & { updateComplete?: Promise<unknown>; shadowRoot: ShadowRoot | null }) | null;\n if (inner) {\n const innerApply = () => apply(inner.shadowRoot);\n if (inner.updateComplete) inner.updateComplete.then(innerApply);\n else innerApply();\n }\n }\n\n private get monthNames() {\n return Array.from({ length: 12 }, (_, i) =>\n new Date(0, i).toLocaleString('default', { month: 'long' })\n );\n }\n\n private get yearOptions(): number[] {\n const start = this.startYear ?? DEFAULT_START_YEAR;\n const end = this.endYear ?? DEFAULT_END_YEAR;\n \n if (start > end) return [];\n \n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n \n private onMonthSelected(monthIndex: number) {\n this.currentMonth = monthIndex;\n this.emit('nile-month-change', { month: monthIndex });\n }\n\n private onYearSelected(year: number) {\n this.currentYear = year;\n this.emit('nile-year-change', { year });\n }\n\n /** brings the currently-selected month/year option into view when a dropdown opens */\n private scrollSelectedIntoView(selector: string) {\n const selected = this.shadowRoot?.querySelector(selector) as HTMLElement | null;\n if (!selected) return;\n const container = selected.closest(\n '.month-scroll-wrapper, .year-scroll-wrapper'\n ) as HTMLElement | null;\n if (!container) {\n selected.scrollIntoView({ block: 'center' });\n return;\n }\n const target =\n container.scrollTop +\n (selected.getBoundingClientRect().top -\n container.getBoundingClientRect().top) -\n (container.clientHeight - selected.clientHeight) / 2;\n const prefersReducedMotion = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n ).matches;\n if (prefersReducedMotion) {\n container.scrollTop = target;\n return;\n }\n this.smoothScrollTo(container, target, 450);\n }\n\n private smoothScrollTo(el: HTMLElement, to: number, duration: number) {\n const start = el.scrollTop;\n const change = to - start;\n if (change === 0) return;\n const startTime = performance.now();\n const ease = (t: number) =>\n t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;\n const step = (now: number) => {\n const t = Math.min(1, (now - startTime) / duration);\n el.scrollTop = start + change * ease(t);\n if (t < 1) requestAnimationFrame(step);\n };\n requestAnimationFrame(step);\n }\n\n @watch('allowedDates')\n checkValidAllowedDate() {\n let newDateRange: NileCalendarDateRange | null;\n try {\n newDateRange=JSON.parse(this.allowedDates);\n } catch (error) {\n newDateRange=null;\n }\n if (!newDateRange || Object.keys(newDateRange).length == 0) {\n this.allowedDatesLocal=null;\n return;\n }\n this.hideInput=true;\n const startDate = this.getUTCDate(newDateRange.startDate)\n const endDate = this.getUTCDate(newDateRange.endDate)\n\n if (startDate > endDate) {\n console.error('StartDate must be greater than endDate');\n }\n else\n {\n this.allowedDatesLocal=newDateRange;\n }\n }\n\n /**\n * The year range month navigation enforces. An explicit `startYear` / `endYear` always wins; the date-time-picker\n * variant falls back to the dropdown's 2000-2050 for an unset side, while the default calendar leaves it open as published.\n */\n private get minYear(): number | undefined {\n return this.variant === 'date-time-picker' ? this.startYear ?? DEFAULT_START_YEAR : this.startYear;\n }\n\n private get maxYear(): number | undefined {\n return this.variant === 'date-time-picker' ? this.endYear ?? DEFAULT_END_YEAR : this.endYear;\n }\n\n private isPrevDisabled(): boolean {\n return (\n this.currentMonth === 0 &&\n this.minYear !== undefined &&\n this.currentYear <= this.minYear\n );\n }\n \n private isNextDisabled(): boolean {\n return (\n this.currentMonth === 11 &&\n this.maxYear !== undefined &&\n this.currentYear >= this.maxYear\n );\n }\n\n private formatDate(date: Date | null): string {\n if (!date) return '';\n \n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n \n let formatted = this.dateFormat;\n // the date-time-picker variant pads years 0-99 to four digits; the default calendar prints the year as published\n formatted = formatted.replace(/YYYY/g, this.variant === 'date-time-picker' ? formatYear4(yyyy) : String(yyyy));\n formatted = formatted.replace(/MM/g, mm);\n formatted = formatted.replace(/DD/g, dd);\n formatted = formatted.replace(/YY/g, String(yyyy).slice(-2));\n \n return formatted;\n }\n \n\n private parseDate(input: string, existingDate?: Date | null): Date | null {\n if (!input || !this.dateFormat) return null;\n const formatPattern = this.dateFormat\n .replace(/YYYY/, '(?<year>\\\\d{4})')\n .replace(/YY/, '(?<year>\\\\d{2})')\n .replace(/MM/, '(?<month>\\\\d{1,2})')\n .replace(/DD/, '(?<day>\\\\d{1,2})');\n \n const regex = new RegExp(`^${formatPattern}$`);\n const match = input.match(regex);\n if (!match || !match.groups) return null;\n \n const dtp = this.variant === 'date-time-picker';\n const typedYear = match.groups.year;\n let year = typedYear.length === 2 ? Number(`20${typedYear}`) : Number(typedYear);\n // date-time-picker only: an existing bound keeps its century while the visible two digits are unchanged; with no existing bound a typed YY is 2000-2099 (the default calendar reads it as published)\n if (dtp && typedYear.length === 2 && existingDate && Math.abs(existingDate.getFullYear()) % 100 === Number(typedYear)) {\n year = existingDate.getFullYear();\n }\n const month = Number(match.groups.month) - 1; \n const day = Number(match.groups.day);\n \n // new Date(y, ...) remaps years 0-99 to 1900-1999 as published; only the variant keeps the literal year\n const date = dtp ? localDateFromFields(year, month, day) : new Date(year, month, day);\n if (existingDate) {\n date.setHours(\n existingDate.getHours(),\n existingDate.getMinutes(),\n existingDate.getSeconds(),\n );\n } else {\n date.setHours(0, 0, 0);\n }\n return date;\n }\n\nprivate handleStartDateInput(event: CustomEvent): void {\n event.stopPropagation();\n const newDate = this.parseDate(event.detail.value, this.startDate);\n if (newDate) {\n newDate.setHours(0, 0, 0);\n this.startDate = newDate;\n this.currentMonth = newDate.getMonth();\n this.currentYear = newDate.getFullYear();\n this.requestUpdate();\n }\n }\nprivate handleEndDateInput(event: CustomEvent): void {\n event.stopPropagation();\n const newDate = this.parseDate(event.detail.value, this.endDate);\n if (newDate) {\n newDate.setHours(23, 59, 59);\n this.endDate = newDate;\n this.currentMonth = newDate.getMonth();\n this.currentYear = newDate.getFullYear();\n this.requestUpdate();\n }\n }\n\n \n private maskValuesMap = new WeakMap<HTMLInputElement, string[]>();\n\n private boundMaskInputs: Element[] = [];\n\n private unbindStructuredInput(): void {\n for (const inp of this.boundMaskInputs) {\n inp.removeEventListener('keydown', this.onMaskKeydown as EventListener, true);\n inp.removeEventListener('focusout', this.onMaskBlur as EventListener);\n }\n this.boundMaskInputs = [];\n }\n\n private bindStructuredInput(): void {\n this.unbindStructuredInput();\n if (!this.structuredInput) return;\n const inputs = this.shadowRoot?.querySelectorAll('.calender-input nile-input');\n inputs?.forEach(inp => {\n inp.addEventListener('keydown', this.onMaskKeydown as EventListener, true);\n inp.addEventListener('focusout', this.onMaskBlur as EventListener);\n this.boundMaskInputs.push(inp);\n });\n }\n\n private dateMaskSegments(): Array<{ kind: string; len: number; min: number; max: number; after: string }> {\n const spec = (token: string): { kind: string; len: number; min: number; max: number } => {\n switch (token) {\n case 'YYYY': return { kind: 'year', len: 4, min: 0, max: 9999 };\n case 'YY': return { kind: 'year', len: 2, min: 0, max: 99 };\n case 'MM': return { kind: 'month', len: 2, min: 1, max: 12 };\n default: return { kind: 'day', len: 2, min: 1, max: 31 }; // DD\n }\n };\n const fmt = this.dateFormat || 'MM/DD/YYYY';\n const re = /YYYY|YY|MM|DD/g;\n const found: Array<{ token: string; index: number }> = [];\n let m: RegExpExecArray | null;\n while ((m = re.exec(fmt)) !== null) found.push({ token: m[0], index: m.index });\n return found.map((f, i) => {\n const sep = fmt.slice(\n f.index + f.token.length,\n i + 1 < found.length ? found[i + 1].index : fmt.length\n );\n return { ...spec(f.token), after: i < found.length - 1 ? sep : '' };\n });\n }\n\n private timeMaskSegments(): Array<{ kind: string; len: number; min: number; max: number; after: string }> {\n return [\n { kind: 'hour', len: 2, min: 0, max: 23, after: ':' },\n { kind: 'minute', len: 2, min: 0, max: 59, after: ':' },\n { kind: 'second', len: 2, min: 0, max: 59, after: '' },\n ];\n }\n\n private buildMaskLayout(\n segs: Array<{ kind: string; len: number; min: number; max: number; after: string }>\n ) {\n const tokens: Array<{ slot: number } | { lit: string }> = [];\n const slots: Array<{ kind: string; min: number; max: number; len: number; segStart: number }> = [];\n for (const seg of segs) {\n const segStart = slots.length;\n for (let k = 0; k < seg.len; k++) {\n tokens.push({ slot: slots.length });\n slots.push({ kind: seg.kind, min: seg.min, max: seg.max, len: seg.len, segStart });\n }\n for (const ch of seg.after) tokens.push({ lit: ch });\n }\n return { tokens, slots, length: tokens.length };\n }\n\n private maskLayoutFor(kind: 'date' | 'time') {\n return this.buildMaskLayout(kind === 'time' ? this.timeMaskSegments() : this.dateMaskSegments());\n }\n\n private computeMaskDisplay(values: string[], layout: ReturnType<typeof this.buildMaskLayout>) {\n let lastFilled = -1;\n values.forEach((v, i) => { if (v !== '') lastFilled = i; });\n let s = '';\n const slotPos = new Array(layout.slots.length).fill(-1);\n for (const t of layout.tokens) {\n if ('slot' in t) {\n if (t.slot > lastFilled) break; // stop at the trailing empties\n slotPos[t.slot] = s.length;\n if (values[t.slot]) s += values[t.slot];\n } else {\n s += t.lit;\n }\n }\n return { display: lastFilled === -1 ? '' : s, slotPos, lastFilled };\n }\n\n private initMaskValues(text: string, layout: ReturnType<typeof this.buildMaskLayout>): string[] {\n const digits = (text || '').replace(/\\D/g, '').slice(0, layout.slots.length);\n return layout.slots.map((_s, i) => digits[i] ?? '');\n }\n\n /** clamp a filled segment into range (year is left unclamped) */\n private clampMaskSegment(\n values: string[],\n layout: ReturnType<typeof this.buildMaskLayout>,\n slotIndex: number\n ): void {\n const seg = layout.slots[slotIndex];\n if (seg.kind === 'year') return;\n const segSlots: number[] = [];\n layout.slots.forEach((s, i) => { if (s.segStart === seg.segStart) segSlots.push(i); });\n const chars = segSlots.map(i => values[i]);\n if (chars.some(c => c === '')) return; // segment not full yet\n const joined = chars.join('');\n const n = Number(joined);\n let corrected: string | null = null;\n if (n > seg.max) corrected = String(Number(joined[0])).padStart(seg.len, '0');\n else if (n < seg.min) corrected = String(seg.min).padStart(seg.len, '0');\n if (corrected !== null) segSlots.forEach((s, k) => { values[s] = corrected![k]; });\n }\n\n private maskValuesFor(\n native: HTMLInputElement,\n layout: ReturnType<typeof this.buildMaskLayout>\n ): string[] {\n let values = this.maskValuesMap.get(native);\n if (!values || values.length !== layout.slots.length) {\n values = this.initMaskValues(native.value, layout);\n } else if (this.computeMaskDisplay(values, layout).display !== native.value) {\n values = this.initMaskValues(native.value, layout);\n }\n this.maskValuesMap.set(native, values);\n return values;\n }\n\n private onMaskKeydown = (e: KeyboardEvent): void => {\n if (this.disabled || e.ctrlKey || e.metaKey || e.altKey) return;\n const nav = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End',\n 'Tab', 'Enter', 'Shift', 'Control', 'Meta', 'Alt', 'CapsLock'];\n if (nav.includes(e.key)) return;\n\n const nileInput = e.currentTarget as (HTMLElement & { input?: HTMLInputElement; value?: string }) | null;\n const native = nileInput?.input;\n if (!nileInput || !native) return;\n\n const kind: 'date' | 'time' = nileInput.classList.contains('time-input') ? 'time' : 'date';\n const layout = this.maskLayoutFor(kind);\n const values = this.maskValuesFor(native, layout);\n const { slotPos } = this.computeMaskDisplay(values, layout);\n const selStart = native.selectionStart ?? 0;\n const selEnd = native.selectionEnd ?? selStart;\n\n const writeMask = (display: string, caret: number) => {\n native.value = display;\n nileInput.value = display;\n try { native.setSelectionRange(caret, caret); } catch { /* noop */ }\n };\n const caretAfter = (target: number) => {\n const after = this.computeMaskDisplay(values, layout);\n const np = after.slotPos[target + 1];\n if (np !== undefined && np !== -1) return np;\n return after.display.length;\n };\n\n if (e.key >= '0' && e.key <= '9') {\n e.preventDefault();\n let target = slotPos.findIndex(p => p !== -1 && p >= selStart);\n if (target === -1) target = values.findIndex(v => v === ''); // append at the first gap\n if (target === -1) return; // every slot full and caret past the end\n values[target] = e.key;\n this.clampMaskSegment(values, layout, target);\n writeMask(this.computeMaskDisplay(values, layout).display, caretAfter(target));\n return;\n }\n\n if (e.key === 'Backspace') {\n e.preventDefault();\n if (selStart !== selEnd) {\n for (let i = 0; i < values.length; i++) {\n if (slotPos[i] !== -1 && slotPos[i] >= selStart && slotPos[i] < selEnd) values[i] = '';\n }\n writeMask(this.computeMaskDisplay(values, layout).display, selStart);\n return;\n }\n let target = -1;\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== '' && slotPos[i] !== -1 && slotPos[i] < selStart) target = i;\n }\n if (target === -1) return;\n values[target] = '';\n const after = this.computeMaskDisplay(values, layout);\n writeMask(after.display, after.slotPos[target] !== -1 ? after.slotPos[target] : Math.max(0, selStart - 1));\n return;\n }\n\n if (e.key === 'Delete') {\n e.preventDefault();\n let target = -1;\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== '' && slotPos[i] !== -1 && slotPos[i] >= selStart) { target = i; break; }\n }\n if (target === -1) return;\n values[target] = '';\n const after = this.computeMaskDisplay(values, layout);\n writeMask(after.display, after.slotPos[target] !== -1 ? after.slotPos[target] : selStart);\n return;\n }\n\n if (e.key.length === 1) e.preventDefault(); // block any other printable key\n };\n\n private onMaskBlur = (e: FocusEvent): void => {\n const nileInput = e.currentTarget as (HTMLElement & { input?: HTMLInputElement; value?: string; emit?: Function }) | null;\n const native = nileInput?.input;\n if (!nileInput || !native) return;\n\n const kind: 'date' | 'time' = nileInput.classList.contains('time-input') ? 'time' : 'date';\n const layout = this.maskLayoutFor(kind);\n const values = this.maskValuesFor(native, layout);\n\n if (!values.some(v => v !== '')) {\n native.value = '';\n nileInput.value = '';\n nileInput.emit?.('nile-change', { value: '' });\n return;\n }\n\n // left-pad any partially-typed segment, then clamp each into range\n const segStarts = [...new Set(layout.slots.map(s => s.segStart))];\n for (const start of segStarts) {\n const idxs = layout.slots.map((s, i) => (s.segStart === start ? i : -1)).filter(i => i !== -1);\n const digits = idxs.map(i => values[i]).filter(c => c !== '');\n if (digits.length > 0 && digits.length < idxs.length) {\n const padded = digits.join('').padStart(idxs.length, '0');\n idxs.forEach((i, k) => { values[i] = padded[k]; });\n }\n }\n segStarts.forEach(start => this.clampMaskSegment(values, layout, start));\n\n const { display } = this.computeMaskDisplay(values, layout);\n native.value = display;\n nileInput.value = display;\n nileInput.emit?.('nile-change', { value: display });\n };\n\n /**\n * Render method\n */\n render(): TemplateResult {\n if (this.variant === 'date-time-picker') {\n return this.renderDateTimePicker();\n }\n return html`\n <div\n class=${classMap({\n base:true,\n base__range:this.range,\n })}\n part=\"calendar-container\"\n >\n <div class=${classMap({\n \"calendar-config\":true,\n \"hidden\": !this.range || (this.range && this.hideTypes)\n })}>\n <div class=\"calendar-switcher\" part=\"calendar-switcher\">\n <nile-tab-group centered @nile-tab-show=\"${this.onTypeChange}\" value=\"${this.type}\">\n <nile-tab slot=\"nav\" panel=\"absolute\" tabindex=\"${this.disabled ? '-1' : '0'}\">Absolute</nile-tab>\n <nile-tab slot=\"nav\" panel=\"relative\" tabindex=\"${this.disabled ? '-1' : '0'}\">Relative</nile-tab>\n </nile-tab-group>\n </div>\n </div>\n \n ${this.type == 'relative' ? this.renderRelativeCalendar():''}\n ${this.type == 'absolute' ? this.renderAbsoluteCalendar():''}\n\n ${!this.range?'':html`\n <div class=\"button-container\" part=\"button-container\">\n ${this.allowClear?\n html`\n <nile-button \n class=\"clear-button\"\n variant=\"secondary\"\n role=\"button\"\n ?disabled=\"${ !this.startDate || !this.endDate || this.disabled }\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.clearDate();}}\"\n @click=\"${this.clearDate}\"\n\n > Reset</nile-button>`:nothing\n }\n <nile-button \n class=\"apply-button\" \n ?disabled=\"${ !this.startDate || !this.endDate || this.disabled }\" \n @click=\"${this.confimRange}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.confimRange();}}\"\n > Apply</nile-button>\n </div>\n `}\n </div>\n `;\n }\n\n /**\n * @returns HTML content for absolute calendar\n */\n renderAbsoluteCalendar(){\n return html`\n <div class=\"calendar-wrapper\" part=\"calendar-wrapper\">\n <div class=\"calendar-container\" >\n ${this.renderMonth(\n this.currentYear,\n this.currentMonth,\n this.getDaysArray(this.currentYear, this.currentMonth)\n )}\n </div>\n </div>\n ${this.range ? html`\n <div class=\"calender-input ${this.showManualInputs ? '' : 'hidden'}\" >\n <div class=\"from\">\n <div class=\"from-date\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n label=\"From\"\n class=\"manual-input date-input\"\n placeholder=\"${this.dateFormat}\"\n value=\"${this.formatDate(this.startDate)}\"\n @nile-change=\"${this.handleStartDateInput}\"\n ></nile-input>\n </div>\n\n <div class=\"from-time\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n class=\"manual-input time-input\"\n placeholder=\"HH:MM:SS\"\n value=\"${this.formatTime(this.startDate)}\"\n @nile-change=\"${this.handleStartTimeInput}\"\n ></nile-input>\n </div>\n</div>\n\n\n <div class=\"from\">\n <div class=\"from-date\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n label=\"To\"\n class=\"manual-input date-input\"\n placeholder=\"${this.dateFormat}\"\n value=\"${this.formatDate(this.endDate)}\"\n @nile-change=\"${this.handleEndDateInput}\"\n ></nile-input>\n </div>\n <div class=\"from-time\">\n <nile-input\n ?disabled=\"${this.disabled}\"\n class=\"manual-input time-input\"\n placeholder=\"HH:MM:SS\"\n value=\"${this.formatTime(this.endDate)}\"\n @nile-change=\"${this.handleEndTimeInput}\"\n ></nile-input>\n </div>\n </div>\n </div>\n `:''}\n `\n }\n\n /**\n * @returns HTML content for relative calendar\n */\n renderRelativeCalendar() {\n return html`\n <div class=\"units-wrapper\">\n <div class=\"unit-container\">\n \n ${this.hideDurationFields?.includes('minutes') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Minutes</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('minutes', [1, 5, 15, 30, 45])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('hours') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Hours</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('hours', [1, 2, 3, 6, 8, 12])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('days') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Days</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('days', [1, 2, 3, 4, 5, 6])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('weeks') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Weeks</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('weeks', [1, 2, 4, 6])}\n </div>\n </div>\n `}\n \n ${this.hideDurationFields?.includes('months') ? '' : html`\n <div class=\"unit-group\">\n <div class=\"duration-name\">Months</div>\n <div class=\"duration-units\">\n ${this.renderTimeValues('months', [3, 6, 12, 15])}\n </div>\n </div>\n `}\n </div>\n </div>\n \n ${this.variant === 'date-time-picker' ? html`\n <div>\n <div class=\"unit-input-container\">\n <nile-input\n class=\"manual-input duration-input\"\n ?disabled=\"${this.disabled}\"\n label=\"Duration\"\n inputmode=\"numeric\"\n type=\"text\"\n value=\"${this.selectedValue}\"\n @nile-input=\"${this.handleDurationChange}\"\n @nile-change=\"${this.handleDurationChange}\"\n placeholder=\"Enter Value\"\n ></nile-input>\n\n <nile-select\n class=\"manual-input time-input\"\n ?disabled=\"${this.disabled}\"\n label=\"Unit of time\"\n value=\"${this.selectedUnit}\"\n @nile-change=\"${this.handleUnitChange}\"\n >\n ${this.hideDurationFields?.includes('minutes') ? '' : html`<nile-option value=\"minutes\">Minutes</nile-option>`}\n ${this.hideDurationFields?.includes('hours') ? '' : html`<nile-option value=\"hours\">Hours</nile-option>`}\n ${this.hideDurationFields?.includes('days') ? '' : html`<nile-option value=\"days\">Days</nile-option>`}\n ${this.hideDurationFields?.includes('weeks') ? '' : html`<nile-option value=\"weeks\">Weeks</nile-option>`}\n ${this.hideDurationFields?.includes('months') ? '' : html`<nile-option value=\"months\">Months</nile-option>`}\n </nile-select>\n </div>\n </div>\n ` : this.range ? html`\n <div>\n <div class=\"unit-input-container\">\n <nile-input \n class=\"manual-input duration-input\" \n ?disabled=\"${this.disabled}\"\n label=\"Duration\"\n inputmode=\"numeric\"\n type=\"number\"\n value=\"${this.selectedValue}\" \n @nile-change=\"${this.handleDurationChange}\"\n placeholder=\"Enter Value\"\n ></nile-input>\n \n <nile-select \n class=\"manual-input time-input\" \n ?disabled=\"${this.disabled}\"\n label=\"Unit of time\" \n value=\"${this.selectedUnit}\"\n @nile-change=\"${this.handleUnitChange}\"\n >\n <nile-option value=\"minutes\" class=\"${this.hideDurationFields?.includes('minutes') ? 'hidden' : ''}\">Minutes</nile-option>\n <nile-option value=\"hours\" class=\"${this.hideDurationFields?.includes('hours') ? 'hidden' : ''}\">Hours</nile-option>\n <nile-option value=\"days\" class=\"${this.hideDurationFields?.includes('days') ? 'hidden' : ''}\">Days</nile-option>\n <nile-option value=\"weeks\" class=\"${this.hideDurationFields?.includes('weeks') ? 'hidden' : ''}\">Weeks</nile-option>\n <nile-option value=\"months\" class=\"${this.hideDurationFields?.includes('months') ? 'hidden' : ''}\">Months</nile-option>\n </nile-select>\n </div>\n </div>\n ` : ''}\n `;\n }\n \n \n /**\n * \n * @param unit \n * @param values \n * @returns html for the option\n */\n renderTimeValues(unit: TimeUnits, values: any[]) {\n return values.map(\n value =>\n html`\n <div\n class=\"duration__value ${this.selectedUnit === unit && this.selectedValue === value ? 'duration__value--selected':''}\"\n @click=${(e: any) => this.handleTimeValueClick(unit, value, e)}\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.handleTimeValueClick(unit, value, e);}}\"\n >${value}\n </div>`\n );\n }\n\n /**\n * \n * @param year \n * @param month \n * @param daysArray \n * @returns HTML for rendered month\n */\n private renderMonth(\n year: number,\n month: number,\n daysArray: number[]\n ): TemplateResult {\n const firstDay = new Date(year, month, 1).getDay();\n const lastDay = new Date(year, month + 1, 0).getDay();\n const prevMonthDays = this.getDaysArray(\n month === 0 ? year - 1 : year,\n month === 0 ? 11 : month - 1\n );\n const nextMonthDays = this.getDaysArray(\n month === 11 ? year + 1 : year,\n month === 11 ? 0 : month + 1\n );\n const fillerDaysBefore = prevMonthDays.slice(\n prevMonthDays.length - firstDay\n );\n const fillerDaysAfter = nextMonthDays.slice(0, 6 - lastDay);\n const allDays = [...fillerDaysBefore, ...daysArray, ...fillerDaysAfter];\n\n const isSelectedDate = (\n day: number,\n month: number,\n year: number,\n isCurrentMonth: boolean\n ) => {\n if (!isCurrentMonth) return '';\n\n if (!this.range && this.value) {\n const isSelected =\n day === this.value.getDate() &&\n month === this.value.getMonth() &&\n year === this.value.getFullYear();\n if (isSelected) return 'selected-date';\n }\n\n const isStartDate =\n this.startDate &&\n day === this.startDate.getDate() &&\n month === this.startDate.getMonth() &&\n year === this.startDate.getFullYear();\n const isEndDate =\n this.endDate &&\n day === this.endDate.getDate() &&\n month === this.endDate.getMonth() &&\n year === this.endDate.getFullYear();\n\n return isStartDate ? 'range-start' : isEndDate ? 'range-end' : '';\n };\n\n const isInRange = (\n day: number,\n month: number,\n year: number,\n isCurrentMonth: boolean\n ) => {\n if (!isCurrentMonth) return false;\n if (this.startDate && this.endDate) {\n const date = new Date(year, month, day);\n return date >= this.startDate && date <= this.endDate;\n }\n return false;\n };\n\n const isCurrentDate = (day: number, month: number, year: number) => {\n const today = new Date();\n return (\n day === today.getDate() &&\n month + 1 === today.getMonth() + 1 &&\n year === today.getFullYear()\n );\n };\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n return html`\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <nile-icon\n class=\"calendar-header__month-navigation\"\n name=\"var(--nile-icon-arrow-left, var(--ng-icon-chevron-left))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'}\n role=\"button\"\n tabindex=\"${this.disabled || this.isPrevDisabled() ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.prevMonth();}}\"\n @click=\"${this.prevMonth}\"\n >\n </nile-icon>\n <div class=\"calendar-header__center\">\n\n${this.showMonthDropdown || this.showYearDropdown ? html`\n ${this.showMonthDropdown ? html`\n <nile-dropdown ?disabled=\"${this.disabled}\" class=\"month-dropdown\">\n <span\n slot=\"trigger\"\n class=\"calendar-header__trigger month-trigger\"\n role=\"button\"\n part=\"trigger\"\n >\n ${new Date(year, month).toLocaleString('default', { month: 'long' })}\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'} class=\"calendar-header__caret\"></nile-icon>\n </span>\n <nile-menu>\n <div class=\"month-scroll-wrapper\">\n ${this.monthNames.map((m, idx) => html`\n <nile-menu-item\n class=\"month-menu-item\"\n ?selected=\"${idx === month}\"\n @click=\"${() => this.onMonthSelected(idx)}\"\n >\n ${m}\n </nile-menu-item>\n `)}\n </div>\n </nile-menu>\n </nile-dropdown>\n ` : html`\n <span\n >${new Date(year, month).toLocaleString('default', { month: 'long' })}</span\n >\n `}\n ${this.showYearDropdown ? html`\n <nile-dropdown ?disabled=\"${this.disabled}\" class=\"year-dropdown\">\n <span\n slot=\"trigger\"\n class=\"calendar-header__trigger\"\n role=\"button\"\n part=\"trigger\"\n >\n ${year}\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'} class=\"calendar-header__caret\"></nile-icon>\n </span>\n <nile-menu>\n <div class=\"year-scroll-wrapper\">\n ${this.yearOptions.map(\n y => html`\n <nile-menu-item\n class=\"year-menu-item\"\n ?selected=\"${y === year}\"\n @click=\"${() => this.onYearSelected(y)}\"\n >\n ${y}\n </nile-menu-item>\n `\n )}\n </div>\n </nile-menu>\n </nile-dropdown>\n ` : html`\n <span>${year}</span>\n `}\n` : html`\n <span\n >${new Date(year, month).toLocaleString('default', {\n month: 'long',\n })}\n ${year}</span\n >\n`}\n</div>\n\n <nile-icon\n class=\"calendar-header__month-navigation\"\n name=\"var(--nile-icon-arrow-right, var(--ng-icon-chevron-right))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-fg-primary-900))'}\n role=\"button\"\n tabindex=\"${this.disabled || this.isNextDisabled() ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.nextMonth();}}\"\n @click=\"${this.nextMonth}\"\n \n >\n </nile-icon>\n </div>\n \n <div class=\"days_container\">\n ${dayNames.map(day => html`<div class=\"day_name\">${day}</div>`)}\n ${allDays.map((day, index) => {\n const isCurrentMonth =\n index >= fillerDaysBefore.length &&\n index < fillerDaysBefore.length + daysArray.length;\n const datePlacement:''|'selected-date'|'range-start'|'range-end' = isSelectedDate(day, month, year, isCurrentMonth)\n const classMapObj:any={\n 'day_date' : true,\n 'not-allowed' : !this.isAllowedDate(day, month, year),\n 'in-range' : isInRange(day, month, year, isCurrentMonth) ,\n 'filler' : !isCurrentMonth,\n }\n if(datePlacement) classMapObj[datePlacement]=true\n \n return html` \n <div\n part=\"calendar-day-${day}\"\n class=${classMap(classMapObj)}\n tabindex=\"${isCurrentMonth && this.isAllowedDate(day, month, year) && !this.disabled ? '0' : '-1'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.selectDate(day, month, year);}}\"\n @click=\"${() => { if (isCurrentMonth) this.selectDate(day, month, year)}}\"\n >\n <span style=\"position:relative;\">\n ${day}\n ${isCurrentDate(day, month, year) && isCurrentMonth?html`<div class=\"current__date__dot\" part=\"current-date-dot\"></div>`:nothing}\n </span>\n </div>`;\n })}\n </div>\n </div>\n `;\n }\n\n /**\n * Function to validate if date is not in allowedDates range\n * @param day \n * @param month \n * @param year \n * @returns \n */\n isAllowedDate(day: number, month: number, year: number) {\n if (!this.allowedDatesLocal) {\n return true;\n }\n // Date.UTC remaps years 0-99 to 1900-1999 as published; only the date-time-picker variant keeps the literal year\n const dateToCheck = new Date(this.variant === 'date-time-picker' ? utcFromFields(year, month, day) : Date.UTC(year, month, day));\n const startDate = this.getUTCDate(this.allowedDatesLocal.startDate)\n const endDate = this.getUTCDate(this.allowedDatesLocal.endDate)\n endDate.setUTCHours(23, 59, 59, 999);\n const isWithinRange = dateToCheck >= startDate && dateToCheck <= endDate;\n return isWithinRange;\n }\n\n private dayCellLabel(day: number, month: number, year: number): string {\n return localDateFromFields(year, month, day, 12).toLocaleDateString('default', {\n weekday: 'long', day: 'numeric', month: 'long', year: 'numeric',\n });\n }\n\n clearDate(mode?: ClearMode) {\n const clearType =\n mode ??\n (this.range\n ? this.type === 'relative'\n ? ClearMode.Relative\n : ClearMode.Range\n : ClearMode.Single);\n \n this.clearInstantSeed();\n if (clearType === ClearMode.Single) {\n this.value = null;\n } else {\n this.valueAttribute = '';\n this.startDate = null;\n this.endDate = null;\n this.selectedUnit = undefined!;\n this.selectedValue = undefined!;\n }\n \n this.requestUpdate();\n this.emit('nile-clear');\n } \n\n \n\n /**\n * @function handle_date-click/select\n * @param day \n * @param month \n * @param year \n */\n selectDate(day: number, month: number, year: number): void {\n if (this.disabled) return;\n // new Date(y, ...) remaps years 0-99 to 1900-1999 as published; only the date-time-picker variant keeps the literal year\n const selectedDate = this.variant === 'date-time-picker' ? localDateFromFields(year, month, day) : new Date(year, month, day);\n\n if (this.range) {\n if (this.startDate && this.endDate) {\n this.startDate = null;\n this.endDate = null;\n }\n\n if (this.isSelectingStart) {\n this.startDate = selectedDate;\n if (this.endDate && selectedDate > this.endDate) {\n this.endDate = null;\n }\n this.isSelectingStart = false;\n } else {\n this.isSelectingStart = true;\n\n if (this.startDate && selectedDate < this.startDate) {\n this.startDate = selectedDate;\n this.endDate = null;\n this.isSelectingStart = false;\n } else {\n const endDate = selectedDate;\n endDate.setHours(23, 59, 59, 999);\n this.endDate = endDate;\n }\n }\n } else {\n if(String(this.value)==String(selectedDate) && this.doubleClickUnselect){\n this.clearDate()\n return\n }\n this.value = selectedDate;\n this.emitChangedData({ value: this.value });\n }\n }\n\n /**\n * Function to be called on initialization to set all other properties\n */\n initializeValue() {\n this.clearInstantSeed();\n if (this.range) {\n try {\n const rangeValue = JSON.parse(this.valueAttribute || '');\n this.startDate = this.rangeBoundFromValue(rangeValue.startDate, false);\n this.endDate = this.rangeBoundFromValue(rangeValue.endDate, true);\n\n // Convert to local time\n this.startDate = new Date(this.startDate.getTime());\n this.endDate = new Date(this.endDate.getTime());\n\n // date-time-picker variant only: open on the seeded range's start month (the default variant keeps its month)\n if (this.variant === 'date-time-picker' && this.startDate && !isNaN(this.startDate.getTime())) {\n this.currentMonth = this.startDate.getMonth();\n this.currentYear = this.startDate.getFullYear();\n }\n\n this.value = null;\n } catch (e) {\n // console.error('Invalid range value');\n }\n } else {\n if (this.variant === 'date-time-picker' && this.trySeedFromInstantValue()) {\n return;\n }\n const zoned =\n this.variant === 'date-time-picker'\n ? this.parseZonedValue(this.valueAttribute)\n : null;\n if (zoned) {\n this.setTimezoneInternally(zoned.timezone);\n const w = zoned.wall;\n this.value = localDateFromFields(w.year, w.month - 1, w.day, 12, 0, 0, 0);\n this.currentMonth = w.month - 1;\n this.currentYear = w.year;\n this.tpHours = w.hours;\n this.tpMinutes = w.minutes;\n this.tpSeconds = w.seconds;\n this.tpMilliseconds = w.ms;\n return;\n }\n if (this.variant === 'date-time-picker') {\n const wall = wallClockFromOffsetLess(this.valueAttribute);\n if (wall) {\n this.value = localDateFromFields(wall.year, wall.month - 1, wall.day, 12, 0, 0, 0);\n this.currentMonth = wall.month - 1;\n this.currentYear = wall.year;\n this.tpHours = wall.hours;\n this.tpMinutes = wall.minutes;\n this.tpSeconds = wall.seconds;\n this.tpMilliseconds = wall.ms;\n return;\n }\n }\n if (this.variant === 'date-time-picker') {\n const preset = this.parsePresetValue(this.valueAttribute);\n if (preset) {\n this.value = preset;\n this.currentMonth = preset.getMonth();\n this.currentYear = preset.getFullYear();\n // seed the time-picker spinners from the preset value's wall-clock time\n this.tpHours = preset.getHours();\n this.tpMinutes = preset.getMinutes();\n this.tpSeconds = preset.getSeconds();\n this.tpMilliseconds = preset.getMilliseconds();\n } else if (this.valueAttribute) {\n // an unparseable value must not leave the previous selection showing (the empty-value path above already clears it)\n this.value = null;\n this.resetTimeUnits();\n }\n return;\n }\n if (this.valueAttribute) {\n const date = this.dateFromValueString(this.valueAttribute);\n\n if (!isNaN(date.getTime())) {\n this.value = date;\n this.currentMonth = this.value.getMonth();\n this.currentYear = this.value.getFullYear();\n }\n }\n }\n }\n\n /** Forget any retained instant, in every category. */\n private clearInstantSeed(): void {\n this.seedInstant = null;\n this.seedFieldsKey = null;\n this.seedZone = null;\n }\n\n private instantSeedFieldsKey(): string | null {\n const v = this.value;\n if (!v) return null;\n return (\n `${v.getFullYear()}-${v.getMonth()}-${v.getDate()}|` +\n `${this.tpHours}:${this.tpMinutes}:${this.tpSeconds}.${this.tpMilliseconds}`\n );\n }\n\n private seedFromInstant(epochMs: number, zone: string): void {\n const w = wallClockInZone(epochMs, zone);\n this.value = localDateFromFields(w.year, w.month - 1, w.day, 12, 0, 0, 0);\n this.currentMonth = w.month - 1;\n this.currentYear = w.year;\n this.tpHours = w.hours;\n this.tpMinutes = w.minutes;\n this.tpSeconds = w.seconds;\n this.tpMilliseconds = w.ms;\n this.seedInstant = epochMs;\n this.seedFieldsKey = this.instantSeedFieldsKey();\n }\n\n private trySeedFromInstantValue(): boolean {\n const epochMs = instantFromValueString(this.valueAttribute);\n if (epochMs !== null) {\n if (!isValidTimezone(this.timezone)) return false;\n this.seedFromInstant(epochMs, this.timezone);\n this.seedZone = null;\n return true;\n }\n const bracketed = instantFromBracketedValue(this.valueAttribute);\n if (bracketed) {\n this.setTimezoneInternally(bracketed.timezone);\n this.seedFromInstant(bracketed.epochMs, bracketed.timezone);\n this.seedZone = bracketed.timezone;\n return true;\n }\n return false;\n }\n\n /**\n * Seeds `value` from a string with the published conversion: `new Date(raw)` shifted by the host offset. Every variant\n * keeps it, because the default calendar must behave exactly as the published component; the date-time-picker variant\n * re-derives its value from its own parsers in `initializeValue`.\n */\n private dateFromValueString(raw: string): Date {\n const parsed = new Date(raw);\n return new Date(parsed.getTime() - parsed.getTimezoneOffset() * 60000);\n }\n\n /**\n * One bound of a `range` value. In the date-time-picker variant `YYYY-MM-DD` is a calendar day, not a UTC instant: it\n * lands on that local day, at 00:00:00.000 for the start and 23:59:59.999 for the end (what clicking the day produces).\n * Every other string, and every bound of the default calendar, goes through `new Date(raw)` exactly as published.\n */\n private rangeBoundFromValue(raw: unknown, isEnd: boolean): Date {\n if (this.variant === 'date-time-picker' && typeof raw === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(raw)) {\n const day = this.parsePresetValue(raw);\n if (day) {\n if (isEnd) day.setHours(23, 59, 59, 999);\n return day;\n }\n }\n return new Date(raw as string);\n }\n\n private parsePresetValue(raw: string | null): Date | null {\n if (!raw) return null;\n const dateOnly = /^\\d{4}-\\d{2}-\\d{2}$/.exec(raw);\n if (dateOnly) {\n const year = Number(raw.slice(0, 4));\n const month = Number(raw.slice(5, 7)) - 1;\n const day = Number(raw.slice(8, 10));\n if (month < 0 || month > 11 || day < 1) return null;\n const lastDay = localDateFromFields(year, month + 1, 0).getDate();\n const date = localDateFromFields(year, month, Math.min(day, lastDay));\n return isNaN(date.getTime()) ? null : date;\n }\n // only an instant with an unusable zone or an undocumented string gets here; the documented formats are parsed before this\n const date = new Date(raw);\n return isNaN(date.getTime()) ? null : date;\n }\n\n private parseZonedValue(\n raw: string | null\n ): { wall: CalendarWallClock; timezone: string } | null {\n if (!raw) return null;\n const m =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{3}))?\\[GMT[+-]\\d{2}:\\d{2}\\s+([^\\]]+)\\]$/.exec(\n raw.trim()\n );\n if (!m) return null;\n const [, y, mo, d, h, mi, s, ms, rawZone] = m;\n const month0 = Number(mo) - 1;\n const hours = Number(h);\n const minutes = Number(mi);\n const seconds = Number(s);\n if (month0 < 0 || month0 > 11 || hours > 23 || minutes > 59 || seconds > 59) {\n return null;\n }\n const day = Number(d);\n if (day < 1) return null;\n // clamp instead of letting an out-of-range day roll into the next month\n const lastDay = localDateFromFields(Number(y), month0 + 1, 0).getDate();\n const wall: CalendarWallClock = {\n year: Number(y),\n month: month0 + 1,\n day: Math.min(day, lastDay),\n hours,\n minutes,\n seconds,\n ms: Number(ms ?? 0),\n };\n const zone = rawZone.trim();\n const timezone = isValidTimezone(zone) ? zone : 'UTC';\n return { wall, timezone };\n }\n\n /**\n * Function to handle relative date selection\n */\n handleDurationChange(event: CustomEvent) {\n event.stopPropagation()\n if (this.variant === 'date-time-picker') {\n const input = event.target as (HTMLElement & { value: string }) | null;\n const cleaned = String(event.detail?.value ?? input?.value ?? '').replace(/\\D/g, '');\n if (input && input.value !== cleaned) input.value = cleaned;\n const duration = Number(cleaned);\n if (!duration) {\n\n this.selectedValue = undefined!;\n this.startDate = null;\n this.endDate = null;\n this.requestUpdate();\n return;\n }\n this.selectedValue = duration;\n if (this.selectedUnit && this.selectedValue) {\n this.handleTimeValueClick(this.selectedUnit, this.selectedValue, event);\n }\n return;\n }\n event.detail.value = event.detail.value.replace(/e/gi, \"\");\n const duration=Number(event.detail.value);\n if(!duration) {\n return\n };\n this.selectedValue = duration\n if (this.selectedUnit && this.selectedValue) {\n this.handleTimeValueClick(this.selectedUnit, this.selectedValue, event);\n }\n }\n\n handleUnitChange(event: CustomEvent) {\n event.stopPropagation()\n this.selectedUnit = event.detail.value;\n if (this.selectedUnit && this.selectedValue) {\n this.handleTimeValueClick(this.selectedUnit, this.selectedValue, event);\n }\n }\n\n handleTimeValueClick(unit: TimeUnits, value: number, event: any) {\n this.createRelativePeriod(unit, value)\n this.selectedUnit = unit;\n this.selectedValue = value;\n }\n\n createRelativePeriod(unit: String, value: number) {\n const endTime = new Date();\n const startTime = new Date();\n // only the date-time-picker variant uses exact elapsed time, month-end clamping and the too-large-duration guard; the\n // default calendar keeps the published wall-clock arithmetic (and its behaviour for an overflowing duration)\n const dtp = this.variant === 'date-time-picker';\n\n switch (unit) {\n case 'minutes':\n // elapsed duration: wall-clock arithmetic (setMinutes) is off by an hour across a host DST change\n if (dtp) startTime.setTime(endTime.getTime() - value * 60000);\n else startTime.setMinutes(startTime.getMinutes() - value);\n break;\n case 'hours':\n if (dtp) startTime.setTime(endTime.getTime() - value * 3600000);\n else startTime.setHours(startTime.getHours() - value);\n break;\n case 'days':\n startTime.setDate(startTime.getDate() - value);\n break;\n case 'weeks':\n startTime.setDate(startTime.getDate() - 7 * value); // Subtract weeks as days\n break;\n case 'months':\n if (dtp) {\n // clamp to the target month's last day: setMonth alone rolls 31 Mar - 1 month into 3 Mar\n const day = startTime.getDate();\n startTime.setDate(1);\n startTime.setMonth(startTime.getMonth() - value);\n const lastDay = localDateFromFields(startTime.getFullYear(), startTime.getMonth() + 1, 0).getDate();\n startTime.setDate(Math.min(day, lastDay));\n } else {\n startTime.setMonth(startTime.getMonth() - value);\n }\n break;\n }\n\n // a duration too large for a Date leaves an Invalid Date; storing it would keep Apply enabled and make consumers throw (RangeError) when they format it, so in the variant it is no selection\n if (dtp && (isNaN(startTime.getTime()) || isNaN(endTime.getTime()))) {\n this.startDate = null;\n this.endDate = null;\n return { startDate: null, endDate: null };\n }\n\n this.startDate = new Date(startTime.getTime());\n this.endDate = new Date(endTime.getTime());\n\n return {\n startDate: this.startDate,\n endDate: this.endDate,\n };\n }\n \n /**\n * Function to handle start time selecion\n */\n private handleStartTimeInput(event: CustomEvent): void {\n event.stopPropagation()\n if (!this.startDate) {\n this.startDate = null;\n return;\n }\n const time = this.parseTime(event.detail.value, this.startDate);\n if (time) {\n this.startDate = time;\n } else {\n this.startDate.setHours(0, 0, 0);\n }\n this.requestUpdate();\n }\n \n /**\n * Function to handle end time selecion\n */\n private handleEndTimeInput(event: CustomEvent): void {\n event.stopPropagation()\n if (!this.endDate) {\n this.endDate = null;\n return;\n }\n const time = this.parseTime(event.detail.value, this.endDate);\n if (time) {\n this.endDate = time;\n } else {\n this.endDate.setHours(0, 0, 0);\n }\n this.requestUpdate();\n }\n\n // Parse time string to a Date object\n private parseTime(input: string, date: Date): Date | null {\n if (!this.isValidTimeInput(input)) {\n return null;\n }\n const [hour, minute, second] = input.split(':').map(Number);\n const newDate = new Date(date.getTime());\n newDate.setHours(hour, minute, second);\n return newDate;\n }\n\n // Validate time in HH:MM:SS format\n private isValidTimeInput(input: string): boolean {\n const regex = /^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;\n return regex.test(input);\n }\n\n private formatTime(date: Date | null): string {\n if (!date) return '';\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${hours}:${minutes}:${seconds}`;\n }\n\n private nextMonth(): void {\n if (this.disabled) return;\n if (this.currentMonth === 11) {\n const newYear = this.currentYear + 1;\n if(this.maxYear !== undefined && newYear > this.maxYear) return;\n this.currentMonth = 0;\n this.currentYear = newYear;\n } else {\n this.currentMonth++;\n }\n }\n\n private prevMonth(): void {\n if (this.disabled) return;\n if (this.currentMonth === 0) {\n const newYear = this.currentYear - 1;\n if(this.minYear !== undefined && newYear < this.minYear) return;\n this.currentMonth = 11;\n this.currentYear = newYear;\n } else {\n this.currentMonth--;\n }\n }\n\n private confimRange() {\n if (!(this.startDate && this.endDate)) return;\n this.emitChangedData( {\n startDate: this.startDate,\n endDate: this.endDate,\n });\n }\n\n onTypeChange(event: CustomEvent) {\n if (this.disabled) return;\n this.type = event.detail.value;\n if (this.variant === 'date-time-picker' && this.type !== 'absolute') this.expanded = false;\n this.emit('nile-type-change', { value: this.type })\n }\n getUTCDate(dateStr:any){\n // Date.UTC remaps years 0-99 to 1900-1999 as published; only the date-time-picker variant keeps the literal year\n if (this.variant === 'date-time-picker') {\n return new Date(\n utcFromFields(\n Number(dateStr.slice(0, 4)),\n Number(dateStr.slice(5, 7)) - 1,\n Number(dateStr.slice(8, 10))\n )\n )\n }\n return new Date(\n Date.UTC(\n dateStr.slice(0, 4),\n dateStr.slice(5, 7) - 1,\n dateStr.slice(8, 10)\n )\n )\n }\n\n emitChangedData(data:{startDate:Date,endDate:Date}|{value:any}|null){\n this.emit('nile-changed',data); // deprecated. Use nile-change instead\n this.emit('nile-change',data)\n }\n\n private getDaysArray(year: number, month: number): number[] {\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n return Array.from({ length: daysInMonth }, (_, i) => i + 1);\n }\n\n private renderDateTimePicker(): TemplateResult {\n // the collapsed height is held while the month grid is expanded (the measured value reaches the stylesheet as a custom property)\n const heightLocked = this.type === 'absolute' && this.expanded && !!this.tpLockedHeight;\n return html`\n <div\n class=${classMap({\n base: true,\n 'base--date-time-picker': true,\n 'base--tp-expanded': this.expanded,\n 'base--tp-fewfields': this.tpFewFieldsNoTz,\n 'base--tp-height-locked': heightLocked,\n })}\n style=${heightLocked ? `--nile-calendar-tp-locked-height:${this.tpLockedHeight}` : nothing}\n part=\"calendar-container\"\n >\n <div class=${classMap({\n 'calendar-config': true,\n hidden: !this.showTypes,\n })} part=\"calendar-config\">\n <div class=\"calendar-switcher\" part=\"calendar-switcher\">\n <nile-tab-group centered @nile-tab-show=\"${this.onTypeChange}\" value=\"${this.type}\">\n <nile-tab slot=\"nav\" panel=\"absolute\" tabindex=\"${this.disabled ? '-1' : '0'}\">Absolute</nile-tab>\n <nile-tab slot=\"nav\" panel=\"relative\" tabindex=\"${this.disabled ? '-1' : '0'}\">Relative</nile-tab>\n </nile-tab-group>\n </div>\n </div>\n\n ${this.type === 'relative' ? this.renderRelativeCalendar() : this.renderDateTimePickerAbsolute()}\n\n <div\n class=${classMap({\n 'tp-footer': true,\n 'tp-footer--relative': this.type === 'relative',\n })}\n part=\"tp-footer\"\n >\n ${this.type === 'absolute' ? html`\n <nile-button\n id=\"tp-set-to-now\"\n class=\"tp-set-to-now-button\"\n part=\"tp-set-to-now-button\"\n variant=\"secondary\"\n ?disabled=\"${this.disabled}\"\n @click=\"${this.handleSetToNow}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.handleSetToNow();}}\"\n >Set to now <nile-glyph name=\"ng-clock\" size=\"16\" method=\"stroke\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : nothing}></nile-glyph></nile-button>\n <nile-lite-tooltip\n for=\"tp-set-to-now\"\n content=\"Sets the time to the current time\"\n size=\"small\"\n ></nile-lite-tooltip>\n ` : nothing}\n <div class=\"tp-footer-actions\" part=\"tp-footer-actions\">\n <nile-button\n class=\"clear-button\"\n part=\"clear-button\"\n variant=\"secondary\"\n ?disabled=\"${this.disabled || !this.hasSelection()}\"\n @click=\"${this.handleReset}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.handleReset();}}\"\n >Reset</nile-button>\n <nile-button\n class=\"apply-button\"\n part=\"apply-button\"\n ?disabled=\"${this.disabled || !this.hasSelection()}\"\n @click=\"${this.handleApply}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.handleApply();}}\"\n >Apply</nile-button>\n </div>\n </div>\n </div>\n `;\n }\n\n private renderDateTimePickerAbsolute(): TemplateResult {\n return html`\n <div class=\"calendar-wrapper\" part=\"calendar-wrapper\">\n <div class=\"calendar-container\">\n ${this.expanded\n ? this.renderExpandedCalendar()\n : this.renderCollapsedMonth(this.currentYear, this.currentMonth)}\n </div>\n </div>\n\n <div\n class=${classMap({\n 'tp-chevron': true,\n 'tp-chevron--expanded': this.expanded,\n })}\n part=\"tp-chevron\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-expanded=\"${this.expanded}\"\n aria-label=\"${this.expanded ? 'Collapse calendar' : 'Expand calendar'}\"\n @click=\"${this.toggleExpanded}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.toggleExpanded();}}\"\n >\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-text-primary-900))'}></nile-icon>\n </div>\n\n <div class=\"tp-scroll-area\" part=\"tp-scroll-area\">\n <div class=\"tp-scroll-content\" part=\"tp-scroll-content\">\n ${this.renderTimeFields()}\n ${this.resolvedTimeFields.timezone ? this.renderTimezone() : ''}\n </div>\n </div>\n `;\n }\n\n private renderExpandedCalendar(): TemplateResult {\n return this.renderVariantMonth(\n this.currentYear,\n this.currentMonth,\n this.getFullMonthDays(this.currentYear, this.currentMonth)\n );\n }\n\n private renderCollapsedMonth(year: number, month: number): TemplateResult {\n return this.renderVariantMonth(\n year,\n month,\n this.getCollapsedWindowDays(year, month)\n );\n }\n\n private renderVariantMonth(\n year: number,\n month: number,\n cells: Array<{ day: number; month: number; year: number; inMonth: boolean }>\n ): TemplateResult {\n const isSelectedDate = (\n day: number,\n month: number,\n year: number,\n isCurrentMonth: boolean\n ) => {\n if (!isCurrentMonth) return '';\n if (this.value) {\n const isSelected =\n day === this.value.getDate() &&\n month === this.value.getMonth() &&\n year === this.value.getFullYear();\n if (isSelected) return 'selected-date';\n }\n return '';\n };\n\n const isCurrentDate = (day: number, month: number, year: number) => {\n const today = new Date();\n return (\n day === today.getDate() &&\n month + 1 === today.getMonth() + 1 &&\n year === today.getFullYear()\n );\n };\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n // roving tabindex: one reachable day (the keyboard's last day, else the selection, else today, else the first allowed day)\n const key = (c: { day: number; month: number; year: number }) => `${c.year}-${c.month}-${c.day}`;\n const reachable = cells.filter(c => c.inMonth && this.isAllowedDate(c.day, c.month, c.year));\n const wanted = [\n this.tpFocusDate && this.tpFocusDate,\n this.value && { year: this.value.getFullYear(), month: this.value.getMonth(), day: this.value.getDate() },\n (() => { const t = new Date(); return { year: t.getFullYear(), month: t.getMonth(), day: t.getDate() }; })(),\n ];\n let tabStop: string | null = null;\n for (const w of wanted) {\n if (w && reachable.some(c => key(c) === key(w))) { tabStop = key(w); break; }\n }\n if (tabStop === null && reachable.length) tabStop = key(reachable[0]);\n return html`\n <div class=\"calendar\" part=\"calendar\">\n <div class=\"calendar-header\" part=\"calendar-header\">\n <nile-icon\n class=\"calendar-header__month-navigation\"\n part=\"calendar-header-prev\"\n name=\"var(--nile-icon-arrow-left, var(--ng-icon-chevron-left))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-text-primary-900))'}\n role=\"button\"\n aria-label=\"Previous month\"\n aria-disabled=\"${this.disabled || this.isPrevDisabled()}\"\n tabindex=\"${this.disabled || this.isPrevDisabled() ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.prevMonth();}}\"\n @click=\"${this.prevMonth}\"\n >\n </nile-icon>\n <div class=\"calendar-header__center\" part=\"calendar-header-center\">\n\n${this.showMonthDropdown || this.showYearDropdown ? html`\n ${this.showMonthDropdown ? html`\n <nile-dropdown ?disabled=\"${this.disabled}\" class=\"month-dropdown\"\n @nile-after-show=\"${() => this.scrollSelectedIntoView('.month-menu-item[selected]')}\">\n <span\n slot=\"trigger\"\n class=\"calendar-header__trigger month-trigger\"\n role=\"button\"\n part=\"trigger\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n }}\"\n >\n ${new Date(year, month).toLocaleString('default', { month: 'long' })}\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-text-primary-900))'} class=\"calendar-header__caret\"></nile-icon>\n </span>\n <nile-menu>\n <div class=\"month-scroll-wrapper\">\n ${this.monthNames.map((m, idx) => html`\n <nile-menu-item\n class=\"month-menu-item\"\n ?selected=\"${idx === month}\"\n @click=\"${() => this.onMonthSelected(idx)}\"\n >\n ${m}\n </nile-menu-item>\n `)}\n </div>\n </nile-menu>\n </nile-dropdown>\n ` : html`\n <span\n >${new Date(year, month).toLocaleString('default', { month: 'long' })}</span\n >\n `}\n ${this.showYearDropdown ? html`\n <nile-dropdown ?disabled=\"${this.disabled}\" class=\"year-dropdown\"\n @nile-after-show=\"${() => this.scrollSelectedIntoView('.year-menu-item[selected]')}\">\n <span\n slot=\"trigger\"\n class=\"calendar-header__trigger\"\n role=\"button\"\n part=\"trigger\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n }}\"\n >\n ${year}\n <nile-icon name=\"arrowdropdown\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-text-primary-900))'} class=\"calendar-header__caret\"></nile-icon>\n </span>\n <nile-menu>\n <div class=\"year-scroll-wrapper\">\n ${this.yearOptions.map(\n y => html`\n <nile-menu-item\n class=\"year-menu-item\"\n ?selected=\"${y === year}\"\n @click=\"${() => this.onYearSelected(y)}\"\n >\n ${y}\n </nile-menu-item>\n `\n )}\n </div>\n </nile-menu>\n </nile-dropdown>\n ` : html`\n <span>${year}</span>\n `}\n` : html`\n <span\n >${new Date(year, month).toLocaleString('default', {\n month: 'long',\n })}\n ${year}</span\n >\n`}\n</div>\n\n <nile-icon\n class=\"calendar-header__month-navigation\"\n part=\"calendar-header-next\"\n name=\"var(--nile-icon-arrow-right, var(--ng-icon-chevron-right))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : 'var(--nile-colors-dark-900, var(--ng-colors-text-primary-900))'}\n role=\"button\"\n aria-label=\"Next month\"\n aria-disabled=\"${this.disabled || this.isNextDisabled()}\"\n tabindex=\"${this.disabled || this.isNextDisabled() ? '-1' : '0'}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') this.nextMonth();}}\"\n @click=\"${this.nextMonth}\"\n >\n </nile-icon>\n </div>\n\n <div class=\"days_container\" part=\"days-container\">\n ${dayNames.map(day => html`<div class=\"day_name\" part=\"day-name\">${day}</div>`)}\n ${cells.map(cell => {\n const isCurrentMonth = cell.inMonth;\n const datePlacement:''|'selected-date' = isSelectedDate(cell.day, cell.month, cell.year, isCurrentMonth)\n const classMapObj:any={\n 'day_date' : true,\n 'not-allowed' : !this.isAllowedDate(cell.day, cell.month, cell.year),\n 'filler' : !isCurrentMonth,\n }\n if(datePlacement) classMapObj[datePlacement]=true\n\n const cellAllowed = this.isAllowedDate(cell.day, cell.month, cell.year);\n const cellToday = isCurrentDate(cell.day, cell.month, cell.year) && isCurrentMonth;\n\n return html`\n <div\n part=\"calendar-day-${cell.day}\"\n class=${classMap(classMapObj)}\n role=${isCurrentMonth ? 'button' : nothing}\n aria-hidden=${isCurrentMonth ? nothing : 'true'}\n aria-label=${isCurrentMonth ? this.dayCellLabel(cell.day, cell.month, cell.year) : nothing}\n aria-disabled=${isCurrentMonth && (!cellAllowed || this.disabled) ? 'true' : nothing}\n aria-pressed=${isCurrentMonth ? String(!!datePlacement) : nothing}\n aria-current=${cellToday ? 'date' : nothing}\n data-tp-date=\"${isCurrentMonth ? key(cell) : nothing}\"\n tabindex=\"${isCurrentMonth && !this.disabled && key(cell) === tabStop ? '0' : '-1'}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (!isCurrentMonth) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault(); // Space on a role=button div would otherwise scroll the page\n this.tpFocusDate = { year: cell.year, month: cell.month, day: cell.day };\n this.tpSelectDate(cell.day, cell.month, cell.year);\n return;\n }\n this.handleDayNavigationKey(e, cell);\n }}\"\n @click=\"${() => { if (isCurrentMonth) { this.tpFocusDate = { year: cell.year, month: cell.month, day: cell.day }; this.tpSelectDate(cell.day, cell.month, cell.year); } }}\"\n >\n <span class=\"day-label\" part=\"calendar-day-label\">\n ${cell.day}\n ${isCurrentDate(cell.day, cell.month, cell.year) && isCurrentMonth?html`<div class=\"current__date__dot\" part=\"current-date-dot\"></div>`:nothing}\n </span>\n </div>`;\n })}\n </div>\n </div>\n `;\n }\n\n private getCollapsedWindowDays(\n year: number,\n month: number\n ): Array<{ day: number; month: number; year: number; inMonth: boolean }> {\n const today = new Date();\n const isCurrentMonth =\n today.getFullYear() === year && today.getMonth() === month;\n const selectionInMonth =\n this.value instanceof Date &&\n this.value.getFullYear() === year &&\n this.value.getMonth() === month;\n const centerOn = (dayOfMonth: number) => {\n const anchor = localDateFromFields(year, month, dayOfMonth);\n const s = new Date(anchor);\n s.setDate(anchor.getDate() - anchor.getDay() - 7);\n return s;\n };\n const start = selectionInMonth\n ? centerOn(this.value!.getDate())\n : isCurrentMonth\n ? centerOn(today.getDate())\n : (() => {\n const first = localDateFromFields(year, month, 1);\n const s = new Date(first);\n s.setDate(1 - first.getDay());\n return s;\n })();\n return Array.from({ length: 21 }, (_, i) => {\n const d = new Date(start);\n d.setDate(start.getDate() + i);\n return {\n day: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n inMonth: d.getMonth() === month && d.getFullYear() === year,\n };\n });\n }\n\n private getFullMonthDays(\n year: number,\n month: number\n ): Array<{ day: number; month: number; year: number; inMonth: boolean }> {\n const first = localDateFromFields(year, month, 1);\n const leading = first.getDay();\n const daysInMonth = localDateFromFields(year, month + 1, 0).getDate();\n const totalCells = Math.ceil((leading + daysInMonth) / 7) * 7;\n const start = localDateFromFields(year, month, 1 - leading);\n return Array.from({ length: totalCells }, (_, i) => {\n const d = new Date(start);\n d.setDate(start.getDate() + i);\n return {\n day: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n inMonth: d.getMonth() === month && d.getFullYear() === year,\n };\n });\n }\n\n /**\n * Arrow keys move by a day / week, Home and End to the week's first and last day, PageUp and PageDown by a month\n * (Shift: a year). The target is clamped to the month's length and to the year range; a day that the collapsed\n * three-week window does not show expands the calendar to reveal it.\n */\n private handleDayNavigationKey(e: KeyboardEvent, cell: { day: number; month: number; year: number }): void {\n if (this.disabled || e.ctrlKey || e.metaKey || e.altKey) return;\n const from = localDateFromFields(cell.year, cell.month, cell.day);\n let target: Date | null = null;\n switch (e.key) {\n case 'ArrowLeft': target = localDateFromFields(cell.year, cell.month, cell.day - 1); break;\n case 'ArrowRight': target = localDateFromFields(cell.year, cell.month, cell.day + 1); break;\n case 'ArrowUp': target = localDateFromFields(cell.year, cell.month, cell.day - 7); break;\n case 'ArrowDown': target = localDateFromFields(cell.year, cell.month, cell.day + 7); break;\n case 'Home': target = localDateFromFields(cell.year, cell.month, cell.day - from.getDay()); break;\n case 'End': target = localDateFromFields(cell.year, cell.month, cell.day + (6 - from.getDay())); break;\n case 'PageUp':\n case 'PageDown': {\n const step = (e.key === 'PageUp' ? -1 : 1) * (e.shiftKey ? 12 : 1);\n const month = cell.month + step;\n const last = localDateFromFields(cell.year, month + 1, 0).getDate();\n target = localDateFromFields(cell.year, month, Math.min(cell.day, last));\n break;\n }\n default: return;\n }\n e.preventDefault();\n this.moveDayFocus(target);\n }\n\n private moveDayFocus(target: Date): void {\n const year = target.getFullYear();\n const month = target.getMonth();\n const lo = this.minYear;\n const hi = this.maxYear;\n if ((lo !== undefined && year < lo) || (hi !== undefined && year > hi)) return;\n this.tpFocusDate = { year, month, day: target.getDate() };\n this.currentYear = year;\n this.currentMonth = month;\n const sel = `[data-tp-date=\"${year}-${month}-${target.getDate()}\"]`;\n const focusCell = () => this.shadowRoot?.querySelector<HTMLElement>(sel)?.focus();\n this.updateComplete.then(() => {\n if (this.shadowRoot?.querySelector(sel)) { focusCell(); return; }\n // not in the collapsed window: reveal the whole month\n this.expanded = true;\n this.updateComplete.then(focusCell).catch(() => { /* focus is best-effort */ });\n }).catch(() => { /* focus is best-effort */ });\n }\n\n private tpSelectDate(day: number, month: number, year: number): void {\n if (this.disabled) return;\n if (!this.isAllowedDate(day, month, year)) return;\n const selectedDate = localDateFromFields(year, month, day);\n // compare the calendar day only: seeded values are stored at noon, a clicked day at midnight\n const sameDay = !!this.value &&\n this.value.getFullYear() === year &&\n this.value.getMonth() === month &&\n this.value.getDate() === day;\n if (sameDay && this.doubleClickUnselect) {\n this.handleReset();\n return;\n }\n if (!sameDay) {\n this.resetTimeUnits();\n }\n this.value = selectedDate;\n }\n\n private resetTimeUnits(): void {\n this.tpHours = null;\n this.tpMinutes = null;\n this.tpSeconds = null;\n this.tpMilliseconds = null;\n this.tpEditingText = '';\n }\n\n private renderTimeFields(): TemplateResult {\n const fields = this.resolvedTimeFields;\n return html`\n <div class=${classMap({\n 'tp-time-fields': true,\n 'tp-time-fields--stacked': this.tpFewFieldsNoTz,\n })} part=\"tp-time-fields\">\n ${fields.hours ? this.renderTimeField('Hours (24H)', 'HH', 23, this.tpHours, v => { this.tpHours = v; }) : ''}\n ${fields.minutes ? this.renderTimeField('Minutes', 'MM', 59, this.tpMinutes, v => { this.tpMinutes = v; }) : ''}\n ${fields.seconds ? this.renderTimeField('Seconds', 'SS', 59, this.tpSeconds, v => { this.tpSeconds = v; }) : ''}\n ${fields.milliseconds ? this.renderTimeField('Milliseconds', 'MS', 999, this.tpMilliseconds, v => { this.tpMilliseconds = v; }) : ''}\n </div>\n `;\n }\n\n private renderTimeField(\n label: string,\n placeholder: string,\n max: number,\n value: number | null,\n setter: (v: number | null) => void\n ): TemplateResult {\n const maxDigits = String(max).length;\n const normalize = (raw: string): { text: string; value: number | null } => {\n let digits = (raw || '').replace(/\\D/g, '');\n while (digits.length > maxDigits && digits[0] === '0') digits = digits.slice(1);\n if (digits.length > maxDigits) digits = digits.slice(0, maxDigits);\n if (digits === '') return { text: '', value: null };\n const num = Number(digits);\n if (num > max) {\n const first = Number(digits[0]);\n return { text: String(first).padStart(maxDigits, '0'), value: first };\n }\n return { text: digits, value: num };\n };\n const apply = (e: CustomEvent) => {\n e.stopPropagation();\n const input = e.target as any;\n const { text, value: next } = normalize(input.value);\n setter(next);\n this.tpEditingText = text;\n if (input.value !== text) input.value = text;\n };\n const step = (delta: 1 | -1, focusEl?: HTMLElement | null) => {\n if (this.disabled) return;\n // A stepper click keeps DOM focus on whichever field was focused before, so move it here — the\n // shared editing text must be attributed to the right input.\n if (focusEl) {\n const input = focusEl.closest('nile-input') as any;\n // `nile-input.focus()` dereferences its inner <input>, which does not exist until the input has rendered\n // (a calendar in a closed, not-yet-attached panel never renders it). Nothing to focus then; still step.\n if (input?.input) input.focus();\n }\n const span = max + 1;\n const next =\n value === null\n ? (delta === 1 ? 0 : max)\n : ((value + delta) % span + span) % span;\n setter(next);\n this.tpFocusedTimeField = label;\n this.tpEditingText = String(next).padStart(maxDigits, '0');\n };\n const focused = this.tpFocusedTimeField === label;\n const displayValue = focused\n ? this.tpEditingText\n : value !== null || this.value\n ? String(value ?? 0).padStart(maxDigits, '0')\n : '';\n return html`\n <nile-input\n class=\"tp-time-field\"\n part=\"tp-time-field\"\n type=\"text\"\n inputmode=\"numeric\"\n label=\"${label}\"\n placeholder=\"${placeholder}\"\n ?disabled=\"${this.disabled}\"\n value=\"${displayValue}\"\n @nile-change=\"${apply}\"\n @nile-input=\"${apply}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'ArrowUp') { e.preventDefault(); step(1); }\n else if (e.key === 'ArrowDown') { e.preventDefault(); step(-1); }\n }}\"\n @nile-focus=\"${(e: CustomEvent) => {\n e.stopPropagation();\n this.tpFocusedTimeField = label;\n this.tpEditingText = '';\n }}\"\n @nile-blur=\"${(e: CustomEvent) => { e.stopPropagation(); if (this.tpFocusedTimeField === label) this.tpFocusedTimeField = null; }}\"\n >\n <div\n slot=\"suffix\"\n class=\"tp-stepper\"\n part=\"tp-stepper\"\n @mousedown=\"${(e: MouseEvent) => e.preventDefault()}\"\n >\n <div\n class=\"tp-stepper-btn tp-stepper-btn--up\"\n part=\"tp-stepper-btn tp-stepper-btn-up\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-label=\"Increase ${label}\"\n @click=\"${(e: MouseEvent) => step(1, e.currentTarget as HTMLElement)}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') step(1, e.currentTarget as HTMLElement);}}\"\n >\n <nile-icon name=\"arrowdropdown\" size=\"16\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : nothing}></nile-icon>\n </div>\n <div\n class=\"tp-stepper-btn\"\n part=\"tp-stepper-btn tp-stepper-btn-down\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-label=\"Decrease ${label}\"\n @click=\"${(e: MouseEvent) => step(-1, e.currentTarget as HTMLElement)}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') step(-1, e.currentTarget as HTMLElement);}}\"\n >\n <nile-icon name=\"arrowdropdown\" size=\"16\" color=${this.disabled ? 'var(--nile-colors-dark-500, var(--ng-colors-fg-disabled))' : nothing}></nile-icon>\n </div>\n </div>\n </nile-input>\n `;\n }\n\n private get timezoneOptions(): string[] {\n const zones: string[] =\n typeof (Intl as any).supportedValuesOf === 'function'\n ? (Intl as any).supportedValuesOf('timeZone')\n : TIMEZONES;\n return zones.includes('UTC') ? zones : ['UTC', ...zones];\n }\n\n private renderTimezone(): TemplateResult {\n return html`\n <div class=\"tp-timezone\" part=\"tp-timezone\">\n <div class=\"tp-timezone-header\" part=\"tp-timezone-header\">\n <span class=\"tp-timezone-label\" part=\"tp-timezone-label\">Timezone</span>\n <span\n class=\"tp-timezone-local-link\"\n part=\"tp-timezone-local-link\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n @click=\"${this.handleUseLocalTimezone}\"\n @keydown=\"${(e: KeyboardEvent) => {if (e.key === 'Enter' || e.key === ' ') {e.preventDefault(); this.handleUseLocalTimezone();}}}\"\n >Use local timezone</span>\n </div>\n <nile-select\n class=\"tp-timezone-select\"\n part=\"tp-timezone-select\"\n hoist\n placement=\"top\"\n ?disabled=\"${this.disabled}\"\n searchEnabled\n placeholder=\"Select timezone\"\n .value=\"${this.timezone}\"\n @nile-change=\"${this.handleTimezoneChange}\"\n >\n ${this.timezoneOptions.map(\n tz => html`<nile-option value=\"${tz}\">${tz}</nile-option>`\n )}\n </nile-select>\n </div>\n `;\n }\n\n private handleTimezoneChange(event: CustomEvent): void {\n event.stopPropagation();\n const selected =\n (event.detail && (event.detail.value ?? event.detail)) ||\n (event.target as { value?: unknown } | null)?.value;\n if (typeof selected === 'string' && selected) {\n this.setTimezoneInternally(selected);\n }\n }\n\n private handleUseLocalTimezone(): void {\n if (this.disabled) return;\n const local = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (local) {\n this.setTimezoneInternally(local);\n }\n }\n\n private toggleExpanded(): void {\n if (this.disabled) return;\n this.expanded = !this.expanded;\n }\n\n\n private composeLocalTimezoneValue(): Date | null {\n if (!this.value) return null;\n if (\n this.seedInstant !== null &&\n this.seedFieldsKey === this.instantSeedFieldsKey() &&\n (this.seedZone === null || this.seedZone === this.timezone)\n ) {\n return new Date(this.seedInstant);\n }\n return this.wallClockToInstant(\n this.value.getFullYear(),\n this.value.getMonth(),\n this.value.getDate(),\n this.tpHours ?? 0,\n this.tpMinutes ?? 0,\n this.tpSeconds ?? 0,\n this.tpMilliseconds ?? 0\n );\n }\n\n private composeValueISO(epochMs: number): string {\n const zone = this.timezone || 'UTC';\n const p = (n: number, len = 2) => String(n).padStart(len, '0');\n\n const ms = ((epochMs % 1000) + 1000) % 1000;\n\n let y: number, mo: number, d: number, h: number, mi: number, s: number;\n let offMs: number;\n try {\n const dtf = new Intl.DateTimeFormat('en-US', {\n timeZone: zone,\n hourCycle: 'h23',\n year: 'numeric', month: '2-digit', day: '2-digit',\n hour: '2-digit', minute: '2-digit', second: '2-digit',\n });\n const map: Record<string, number> = {};\n for (const part of dtf.formatToParts(new Date(epochMs))) {\n if (part.type !== 'literal') map[part.type] = Number(part.value);\n }\n y = map.year; mo = map.month; d = map.day;\n h = map.hour; mi = map.minute; s = map.second;\n offMs = this.zoneOffsetMs(epochMs - ms);\n } catch {\n const local = new Date(epochMs);\n y = local.getFullYear(); mo = local.getMonth() + 1; d = local.getDate();\n h = local.getHours(); mi = local.getMinutes(); s = local.getSeconds();\n offMs = 0;\n }\n\n // the bracket only carries HH:mm; historical sub-minute offsets (LMT) round\n offMs = Math.round(offMs / 60000) * 60000;\n const sign = offMs >= 0 ? '+' : '-';\n const abs = Math.abs(offMs);\n const off = `${sign}${p(Math.floor(abs / 3600000))}:${p(Math.floor((abs % 3600000) / 60000))}`;\n\n return (\n `${p(y, 4)}-${p(mo)}-${p(d)}T${p(h)}:${p(mi)}:${p(s)}.${p(ms, 3)}` +\n `[GMT${off} ${zone}]`\n );\n }\n\n private wallClockToInstant(\n y: number, monthIndex: number, day: number,\n h: number, m: number, s: number, ms: number\n ): Date {\n const guess = utcFromFields(y, monthIndex, day, h, m, s, 0);\n try {\n const offset1 = this.zoneOffsetMs(guess);\n let instant = guess - offset1;\n const offset2 = this.zoneOffsetMs(instant);\n if (offset2 !== offset1) instant = guess - offset2;\n return new Date(instant + ms);\n } catch {\n const composed = new Date(this.value!.getTime());\n composed.setHours(h, m, s, ms);\n return composed;\n }\n }\n\n private zoneOffsetMs(utcMs: number): number {\n const dtf = new Intl.DateTimeFormat('en-US', {\n timeZone: this.timezone,\n hourCycle: 'h23',\n year: 'numeric', month: '2-digit', day: '2-digit',\n hour: '2-digit', minute: '2-digit', second: '2-digit',\n });\n const map: Record<string, number> = {};\n for (const p of dtf.formatToParts(new Date(utcMs))) {\n if (p.type !== 'literal') map[p.type] = Number(p.value);\n }\n const asUTC = utcFromFields(\n map.year, map.month - 1, map.day, map.hour, map.minute, map.second\n );\n return asUTC - utcMs;\n }\n\n private hasSelection(): boolean {\n if (this.type === 'relative') {\n return Boolean(this.startDate && this.endDate);\n }\n return Boolean(this.value);\n }\n\n private handleSetToNow(): void {\n if (this.disabled) return;\n const now = new Date();\n this.tpHours = now.getHours();\n this.tpMinutes = now.getMinutes();\n this.tpSeconds = now.getSeconds();\n this.tpMilliseconds = now.getMilliseconds();\n this.value = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n this.currentMonth = now.getMonth();\n this.currentYear = now.getFullYear();\n const local = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (local) {\n this.setTimezoneInternally(local);\n }\n }\n\n private handleApply(): void {\n if (this.disabled || !this.hasSelection()) return;\n if (this.type === 'relative') {\n this.emitDateTimePickerChange({\n startDate: this.startDate!,\n endDate: this.endDate!,\n timezone: 'UTC',\n });\n return;\n }\n const localTimezoneValue = this.composeLocalTimezoneValue();\n const unixEpoch = localTimezoneValue ? localTimezoneValue.getTime() : null;\n this.emitDateTimePickerChange({\n value: unixEpoch === null ? null : this.composeValueISO(unixEpoch),\n localTimezoneValue,\n unixEpoch,\n timezone: this.timezone,\n });\n }\n\n private handleReset(): void {\n if (this.disabled) return;\n this.clearInstantSeed();\n this.value = null;\n this.startDate = null;\n this.endDate = null;\n this.selectedUnit = undefined!;\n this.selectedValue = undefined!;\n this.resetTimeUnits();\n this.setTimezoneInternally(this.configuredTimezone);\n this.requestUpdate();\n this.emit('nile-clear');\n }\n\n private emitDateTimePickerChange(\n data:\n | { startDate: Date; endDate: Date; timezone: string }\n | { value: string | null; localTimezoneValue: Date | null; unixEpoch: number | null; timezone: string }\n | null\n ) {\n this.emit('nile-change', data);\n }\n}\n\nexport default NileCalendar;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-calendar': NileCalendar;\n }\n}"],"names":["instantFromValueString","raw","trimmed","trim","INSTANT_VALUE_RE","test","ms","Date","getTime","isNaN","wallClockFromOffsetLess","_e$","_e$2","_e$3","_e$4","m","OFFSETLESS_VALUE_RE","exec","year","Number","month0","day","isClockTime","lastDay","utcFromFields","getUTCDate","t","Math","min","u","getUTCFullYear","month","getUTCMonth","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","getUTCMilliseconds","wallClockInZone","epochMs","zone","formatter","Intl","DateTimeFormat","timeZone","hourCycle","hour","minute","second","parts","_iterator","_createForOfIteratorHelper","formatToParts","_step","s","n","done","part","type","value","err","e","f","_export","a","BRACKETED_VALUE_RE","NileCalendar","_h","S","this","valueAttribute","allowedDates","JSON","stringify","range","hideTypes","showTypes","doubleClickUnselect","allowClear","hideDurationFields","showManualInputs","showMonthDropdown","showYearDropdown","dateFormat","structuredInput","startDate","endDate","isSelectingStart","hideInput","currentMonth","getMonth","currentYear","getFullYear","allowedDatesLocal","disabled","variant","timezone","configuredTimezone","internalTimezone","hideTimeFields","expanded","tpLockedHeight","tpHours","tpMinutes","tpSeconds","tpMilliseconds","tpFocusedTimeField","tpFocusDate","tpEditingText","seedInstant","seedFieldsKey","seedZone","tpObservedBase","maskValuesMap","WeakMap","boundMaskInputs","onMaskKeydown","ctrlKey","metaKey","altKey","includes","key","nileInput","currentTarget","native","input","kind","classList","contains","layout","maskLayoutFor","values","maskValuesFor","slotPos","computeMaskDisplay","selStart","selectionStart","_i$selectionStart","selEnd","selectionEnd","writeMask","display","caret","setSelectionRange","_unused","caretAfter","target","after","np","undefined","length","preventDefault","findIndex","p","v","clampMaskSegment","i","max","onMaskBlur","some","_e$emit","emit","segStarts","_toConsumableArray","Set","slots","map","segStart","_iterator2","_step2","_loop","start","idxs","filter","digits","c","padded","join","padStart","forEach","k","_this$computeMaskDisp2","_this","_inherits","_createClass","setTimezoneInternally","tz","get","merged","milliseconds","hidden","Array","isArray","_iterator3","_step3","tpFewFieldsNoTz","resolvedTimeFields","connectedCallback","super","hasUpdated","initializeValue","bindStructuredInput","observeCollapsedBase","disconnectedCallback","releasePanelObserver","unbindStructuredInput","firstUpdated","updated","changedProperties","has","clearInstantSeed","instantSeedFieldsKey","isValidTimezone","seedFromInstant","resetTimeUnits","date","dateFromValueString","applyMonthYearDropdownAnimation","captureCollapsedHeight","tpResizeObserver","disconnect","base","shadowRoot","querySelector","ResizeObserver","measurePanel","observe","h","offsetHeight","apply","root","querySelectorAll","dd","setAnimation","keyframes","opacity","scale","translate","options","duration","easing","inner","innerApply","updateComplete","then","from","_","toLocaleString","_this$startYear","_this$endYear","startYear","DEFAULT_START_YEAR","end","endYear","DEFAULT_END_YEAR","onMonthSelected","monthIndex","onYearSelected","scrollSelectedIntoView","selector","selected","container","closest","scrollIntoView","block","scrollTop","getBoundingClientRect","top","clientHeight","window","matchMedia","matches","smoothScrollTo","el","to","change","startTime","performance","now","step","pow","requestAnimationFrame","checkValidAllowedDate","newDateRange","parse","error","Object","keys","console","minYear","maxYear","isPrevDisabled","isNextDisabled","formatDate","yyyy","mm","String","getDate","formatted","replace","formatYear4","slice","parseDate","existingDate","formatPattern","regex","RegExp","concat","match","groups","dtp","typedYear","abs","localDateFromFields","setHours","getHours","getMinutes","getSeconds","handleStartDateInput","event","stopPropagation","newDate","detail","requestUpdate","handleEndDateInput","_iterator4","inp","_step4","removeEventListener","inputs","addEventListener","push","dateMaskSegments","spec","token","len","fmt","re","found","index","sep","_objectSpread","timeMaskSegments","buildMaskLayout","segs","tokens","_iterator5","_step5","seg","slot","_iterator6","_step6","ch","lit","lastFilled","fill","_iterator7","_step7","initMaskValues","text","_s","_i$e","slotIndex","segSlots","chars","joined","corrected","set","render","renderDateTimePicker","html","_templateObject","_taggedTemplateLiteral","classMap","base__range","onTypeChange","renderRelativeCalendar","renderAbsoluteCalendar","_templateObject2","_templateObject3","clearDate","nothing","confimRange","_templateObject4","renderMonth","getDaysArray","_templateObject5","formatTime","handleStartTimeInput","handleEndTimeInput","_this$hideDurationFie","_this$hideDurationFie2","_this$hideDurationFie3","_this$hideDurationFie4","_this$hideDurationFie5","_this$hideDurationFie6","_this$hideDurationFie7","_this$hideDurationFie8","_this$hideDurationFie9","_this$hideDurationFie10","_this$hideDurationFie11","_this$hideDurationFie12","_this$hideDurationFie13","_this$hideDurationFie14","_this$hideDurationFie15","_templateObject6","_templateObject7","renderTimeValues","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","selectedValue","handleDurationChange","selectedUnit","handleUnitChange","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","_templateObject18","unit","_templateObject19","handleTimeValueClick","daysArray","firstDay","getDay","prevMonthDays","nextMonthDays","fillerDaysBefore","fillerDaysAfter","allDays","isSelectedDate","isCurrentMonth","isStartDate","isEndDate","isInRange","_templateObject20","prevMonth","_templateObject21","_templateObject22","monthNames","idx","_templateObject23","_templateObject24","_templateObject25","yearOptions","y","_templateObject26","_templateObject27","_templateObject28","nextMonth","_templateObject29","datePlacement","classMapObj","day_date","isAllowedDate","filler","_templateObject30","selectDate","today","_templateObject31","dateToCheck","UTC","setUTCHours","dayCellLabel","toLocaleDateString","weekday","mode","clearType","ClearMode","Relative","Range","Single","selectedDate","emitChangedData","rangeValue","rangeBoundFromValue","trySeedFromInstantValue","zoned","parseZonedValue","w","wall","preset","parsePresetValue","getMilliseconds","bracketed","_e6","_slicedToArray","mo","d","mi","sign","oh","om","rawZone","endOfDay","offsetMs","wallMs","candidate","readBack","expected","instantFromBracketedValue","parsed","getTimezoneOffset","isEnd","_e8","_ref","_t$detail$value","_t$detail","cleaned","createRelativePeriod","endTime","setTime","setMinutes","setDate","setMonth","time","parseTime","isValidTimeInput","_t$split$map","split","newYear","dateStr","data","daysInMonth","heightLocked","_templateObject32","renderDateTimePickerAbsolute","_templateObject33","handleSetToNow","hasSelection","handleReset","handleApply","_this8","_templateObject34","renderExpandedCalendar","renderCollapsedMonth","toggleExpanded","renderTimeFields","renderTimezone","renderVariantMonth","getFullMonthDays","getCollapsedWindowDays","cells","_this9","isCurrentDate","reachable","inMonth","wanted","tabStop","_loop2","_i9","_d","_templateObject35","_templateObject36","_templateObject37","click","_templateObject38","_templateObject39","_templateObject40","_templateObject41","_templateObject42","_templateObject43","_templateObject44","cell","cellAllowed","cellToday","_templateObject45","tpSelectDate","handleDayNavigationKey","_templateObject46","centerOn","dayOfMonth","anchor","first","leading","totalCells","ceil","shiftKey","last","moveDayFocus","lo","hi","sel","focusCell","_this10$shadowRoot","focus","catch","sameDay","_this11","fields","_templateObject47","renderTimeField","label","placeholder","setter","maxDigits","num","next","_ref2","delta","focusEl","span","displayValue","_templateObject48","zones","supportedValuesOf","TIMEZONES","_this13","_templateObject49","handleUseLocalTimezone","handleTimezoneChange","timezoneOptions","_templateObject50","local","resolvedOptions","composeLocalTimezoneValue","_this$tpHours","_this$tpMinutes","_this$tpSeconds","_this$tpMilliseconds","wallClockToInstant","composeValueISO","offMs","dtf","_iterator8","_step8","zoneOffsetMs","_unused2","round","off","floor","guess","offset1","instant","offset2","_unused3","composed","utcMs","_iterator9","_step9","Boolean","emitDateTimePickerChange","localTimezoneValue","unixEpoch","styles","NileElement","__decorate","property","attribute","prototype","reflect","state","watch","customElement"],"mappings":"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"}