@acorex/components 22.2.18 → 22.2.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.
- package/fesm2022/acorex-components-calendar.mjs +2 -2
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +27 -3
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +21 -2
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-data-table.d.ts +11 -0
- package/types/acorex-components-list.d.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-calendar.mjs","sources":["../../../../packages/components/calendar/src/lib/calendar.class.ts","../../../../packages/components/calendar/src/lib/calendar.component.ts","../../../../packages/components/calendar/src/lib/calendar.component.html","../../../../packages/components/calendar/src/lib/calendar-range.component.ts","../../../../packages/components/calendar/src/lib/calendar-range.component.html","../../../../packages/components/calendar/src/lib/calendar.module.ts","../../../../packages/components/calendar/src/acorex-components-calendar.ts"],"sourcesContent":["import { AXItemClickEvent, AXRange, AXRangeChangedEvent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCalendarService, AXDateTime, AXDateTimeRange, AXHolidayDate } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, inject } from '@angular/core';\n\nexport type AXCalendarViewType = 'year' | 'month' | 'day';\nexport type AXCalendarViewDepth = AXCalendarViewType;\n\n/**\n * Controls how month and year are chosen in the day view header.\n * - `classic`: tap year/month labels to open month/year picker panels.\n * - `select`: month/year dropdowns with prev/next arrows on the edges.\n */\nexport type AXCalendarNavigationLookType = 'classic' | 'select';\n\n/**\n * Controls how many years appear in the year selector.\n * - A number applies the same range to past and future years.\n * - An object sets past and future ranges separately.\n * `minValue` and `maxValue` take priority when set.\n */\nexport type AXCalendarYearRange = number | { past: number; future: number };\n\nexport function getCalendarYearBounds(options: {\n referenceYear: number;\n yearRange: AXCalendarYearRange;\n minValue?: Date;\n maxValue?: Date;\n getYear: (date: Date) => number;\n}): { minYear: number; maxYear: number } {\n const past = typeof options.yearRange === 'number' ? options.yearRange : options.yearRange.past;\n const future = typeof options.yearRange === 'number' ? options.yearRange : options.yearRange.future;\n\n return {\n minYear: options.minValue ? options.getYear(options.minValue) : options.referenceYear - past,\n maxYear: options.maxValue ? options.getYear(options.maxValue) : options.referenceYear + future,\n };\n}\n\nexport type AXCalendarDisabledDates = Date[] | ((date: Date) => boolean);\nexport type AXCalendarHolidayDates = Date[] | ((date: Date) => boolean);\nexport type AXCalendarDateRange = AXRange<Date>;\nexport type AXCalendarHolidaysLoader = (range: AXCalendarDateRange) => Promise<AXHolidayDate[]>;\nexport type AXCalendarCellCssClass = string | { [key: string]: boolean } | ((date: Date) => string);\n\nexport type AXDateTimePickerType = 'date' | 'time' | 'datetime';\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarNavigateEvent extends AXRangeChangedEvent<Date> {}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarSlotClick extends AXItemClickEvent<Date> {}\n\nexport interface AXCalendarViewSlot {\n date: AXDateTime;\n text: string;\n tooltip?: string;\n holiday?: boolean;\n holidayTitle?: string;\n holidayColor?: string;\n today: boolean;\n selected: boolean;\n disabled: boolean;\n cssClass: { [key: string]: boolean };\n}\nexport interface AXCalendarView {\n range: AXDateTimeRange;\n slots: AXCalendarViewSlot[];\n weekCount?: number;\n}\n\n@Injectable()\nexport class MXCalendarBaseComponent extends MXBaseComponent {\n protected localeService = inject(AXLocaleService);\n protected calendarService = inject(AXCalendarService);\n protected translateService = inject(AXTranslationService);\n\n @Input()\n interface: 'calendar' | 'picker' = 'calendar';\n\n /**\n * @deprecated\n * use dayCellTemplate, monthCellTemplate, yearCellTemplate instead\n */\n @Input()\n cellTemplate?: TemplateRef<unknown>;\n\n @Input()\n dayCellTemplate?: TemplateRef<unknown>;\n @Input()\n monthCellTemplate?: TemplateRef<unknown>;\n @Input()\n yearCellTemplate?: TemplateRef<unknown>;\n\n @Input()\n cellClass?: AXCalendarCellCssClass;\n\n @Input()\n showNavigation = true;\n\n @Input()\n count = 1;\n\n @Output()\n onSlotClick: EventEmitter<AXCalendarSlotClick> = new EventEmitter<AXCalendarSlotClick>();\n\n @Output()\n onNavigate: EventEmitter<AXCalendarNavigateEvent> = new EventEmitter<AXCalendarNavigateEvent>();\n\n @Output()\n activeViewChange: EventEmitter<AXCalendarViewType> = new EventEmitter<AXCalendarViewType>();\n\n private _activeView: AXCalendarViewType = 'day';\n @Input()\n public get activeView(): AXCalendarViewType {\n return this._activeView;\n }\n public set activeView(v: AXCalendarViewType) {\n this.setOption({\n name: 'activeView',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n @Output()\n public typeChange: EventEmitter<string> = new EventEmitter<string>();\n\n private _type: string;\n\n /**\n * @deprecated use calendar input instead\n */\n @Input()\n public get type(): string {\n return this._type;\n }\n public set type(v: string) {\n this.setOption({\n name: 'type',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n @Output()\n depthChange: EventEmitter<AXCalendarViewDepth> = new EventEmitter<AXCalendarViewDepth>();\n\n private _depth: AXCalendarViewDepth = 'day';\n @Input()\n public get depth(): AXCalendarViewDepth {\n return this._depth;\n }\n public set depth(v: AXCalendarViewDepth) {\n this.setOption({\n name: 'depth',\n value: v,\n beforeCallback: (o, n) => {\n this.activeView = v;\n return n;\n },\n afterCallback: () => {\n this.render();\n },\n });\n }\n\n @Output()\n minValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n private _minValue: Date;\n @Input()\n public get minValue(): Date {\n return this._minValue;\n }\n public set minValue(v: Date) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'minValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n } else {\n this.setOption({\n name: 'minValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n\n @Output()\n maxValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n private _maxValue: Date;\n @Input()\n public get maxValue(): Date {\n return this._maxValue;\n }\n public set maxValue(v: Date) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'maxValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n } else {\n this.setOption({\n name: 'maxValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n\n @Output()\n disabledDatesChange: EventEmitter<AXCalendarDisabledDates> = new EventEmitter<AXCalendarDisabledDates>();\n\n private _disabledDates: AXCalendarDisabledDates;\n @Input()\n public get disabledDates(): AXCalendarDisabledDates {\n return this._disabledDates;\n }\n public set disabledDates(v: AXCalendarDisabledDates) {\n this.setOption({ name: 'disabledDates', value: v });\n }\n\n @Output()\n holidayDatesChange: EventEmitter<AXCalendarHolidayDates> = new EventEmitter<AXCalendarHolidayDates>();\n\n private _holidayDates: AXCalendarHolidayDates;\n @Input()\n public get holidayDates(): AXCalendarHolidayDates {\n return this._holidayDates;\n }\n public set holidayDates(v: AXCalendarHolidayDates) {\n this.setOption({ name: 'holidayDates', value: v });\n }\n\n render(): void {}\n}\n\nexport const CALENDAR_INPUTS = ['depth', 'activeView', 'min', 'max', 'disabledDates', 'type', 'holidayDates'];\nexport const CALENDAR_OUTPUTS = [\n 'depthChange',\n 'typeChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n];\n","import {\n AXClickEvent,\n AXComponent,\n AXRippleDirective,\n AXValuableComponent,\n AXValueChangedEvent,\n MXComponentOptionChanged,\n MXInteractiveComponent,\n MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { AXDateTime, AXDateTimeModule, AXDateTimeRange, AXHolidayDate } from '@acorex/core/date-time';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n input,\n linkedSignal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXFormatModule, AXFormatService } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXCalendarDateRange,\n AXCalendarHolidaysLoader,\n AXCalendarNavigationLookType,\n AXCalendarView,\n AXCalendarViewSlot,\n AXCalendarViewType,\n AXCalendarYearRange,\n getCalendarYearBounds,\n MXCalendarBaseComponent,\n} from './calendar.class';\n\n/**\n * A calendar component that provides a customizable calendar view with various options for selection, navigation, and styling.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n 'count',\n 'name',\n 'id',\n ],\n outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'minValueChange',\n 'maxValueChange',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n 'countChange',\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarComponent },\n ],\n imports: [\n NgClass,\n NgTemplateOutlet,\n AXRippleDirective,\n AsyncPipe,\n AXTranslatorPipe,\n AXFormatModule,\n AXDateTimeModule,\n AXSelectBoxComponent,\n FormsModule,\n AXTooltipDirective,\n ],\n})\nexport class AXCalendarComponent extends classes(\n MXValueComponent<Date | null>,\n MXInteractiveComponent,\n MXCalendarBaseComponent,\n) {\n private formatService = inject(AXFormatService);\n\n weekend = input<number[]>([]);\n weekdays = input<number[]>([]);\n\n /**\n * Day view navigation style.\n * - `classic`: tap year/month labels to open month/year picker panels.\n * - `select`: month/year dropdowns with prev/next arrows on the edges.\n */\n look = input<AXCalendarNavigationLookType>('select');\n\n /**\n * Years shown in the year selector when `look` is `select`.\n * Use a number for equal past/future ranges, or `{ past, future }` for asymmetric ranges.\n * `minValue` and `maxValue` take priority when set.\n */\n yearRange = input<AXCalendarYearRange>(80);\n\n /**\n * Optional loader for holidays scoped to the visible calendar range.\n * Merged with holidays from `AX_DATETIME_HOLIDAYS_LOADER` via `AXCalendarService`.\n */\n holidays = input<AXCalendarHolidaysLoader>();\n\n protected readonly isRtl = this.localeService.isRtl;\n\n protected calendar = linkedSignal(() => this.localeService.activeProfile().calendar.system);\n\n /** Explicit `type` input wins over the locale profile calendar. */\n protected calendarSystem = computed(() => this.type || this.calendar());\n\n /** Week column order from the active locale profile (0 = Sun … 6 = Sat). */\n protected weekLayout = computed(() => {\n const custom = this.weekdays();\n if (custom.length) {\n return custom;\n }\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n return Array.from({ length: 7 }, (_, i) => (startsOn + i) % 7);\n });\n\n protected weekdayLabel(index: number): string {\n const labelLength = this.localeService.activeProfile().calendar.week.weekdayLabelLength ?? 2;\n const short = this.translateService.translateSync(`@acorex:dateTime.weekdays.short.${index}`);\n const shortChars = [...short];\n if (shortChars.length >= labelLength) {\n return shortChars.slice(0, labelLength).join('');\n }\n const long = this.translateService.translateSync(`@acorex:dateTime.weekdays.long.${index}`);\n return [...long.replace(/\\s/g, '')].slice(0, labelLength).join('');\n }\n\n public get displayRange(): AXDateTimeRange | null {\n if (!this.views.length || !this._viewStartDate) {\n return null;\n }\n\n if (this.activeView === 'day') {\n const lastMonth = this._viewStartDate.add('month', this.count - 1);\n return new AXDateTimeRange(this._viewStartDate.startOf('month'), lastMonth.endOf('month'));\n }\n\n return new AXDateTimeRange(this.views[0]?.range.startTime, this.views[this.views.length - 1]?.range.endTime);\n }\n\n /**\n * @ignore\n */\n protected _today = this.calendarService.create(new Date(), this.calendarSystem());\n\n /**\n * @ignore\n */\n private _viewStartDate!: AXDateTime;\n\n /**\n * @ignore\n */\n private _navUserInteraction = false;\n\n /**\n * @ignore\n */\n private _footPrint = {\n year: null,\n month: null,\n day: null,\n };\n\n /**\n * @ignore\n */\n protected views: AXCalendarView[] = [];\n\n /**\n * @ignore\n */\n protected _monthOptions: { id: number; text: string }[] = [];\n\n /**\n * @ignore\n */\n protected _yearOptions: { id: number; text: string }[] = [];\n\n /**\n * Full option objects for select-box bindings so labels render without async byKey lookups.\n * @ignore\n */\n protected _selectedMonthOption: { id: number; text: string } | null = null;\n\n /**\n * @ignore\n */\n protected _selectedYearOption: { id: number; text: string } | null = null;\n\n /**\n * @ignore\n */\n private oldValue = signal<Date | null>(null);\n\n private internalHoliday = signal<AXHolidayDate[]>([]);\n\n private _viewRangeKey = signal<string | null>(null);\n\n #holidayEffect = effect(() => {\n const func = this.holidays();\n const rangeKey = this._viewRangeKey();\n if (!func || !rangeKey || !this._viewStartDate) return;\n\n const displayRange =\n this.activeView === 'day'\n ? this._getDayGridRange(this._viewStartDate.startOf('month')).range\n : this._setDisplayRange(this._viewStartDate);\n const loadRange: AXCalendarDateRange = {\n from: displayRange.startTime.date,\n end: displayRange.endTime.date,\n };\n\n const result = func(loadRange);\n if (result instanceof Promise) {\n result.then((holidays) => {\n this.internalHoliday.set(holidays);\n this.render();\n });\n } else {\n this.internalHoliday.set(result as AXHolidayDate[]);\n this.render();\n }\n });\n\n /**\n * @ignore\n */\n private _initValues() {\n this._today = this.calendarService.create(new Date(), this.calendarSystem());\n }\n\n /**\n * Defers refresh so explicit `type` input can sync after locale profile changes.\n */\n private _scheduleRefresh() {\n queueMicrotask(() => this._refresh());\n }\n\n /**\n * @ignore\n */\n private _refresh() {\n this._initValues();\n this.navTo(this.value || this._today);\n }\n\n /**\n * @ignore\n */\n constructor() {\n const unsubscriber = inject(AXUnsubscriber);\n\n super();\n this.calendarService.onHolidaysChanged.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this.render();\n });\n this.calendarService.calendarChanges$.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this._scheduleRefresh();\n });\n\n this.localeService.profileChanged$.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this._scheduleRefresh();\n });\n\n this.typeChange.pipe(unsubscriber.takeUntilDestroy).subscribe((value) => {\n this.calendar.set(value);\n this._scheduleRefresh();\n });\n\n this.minValueChange.subscribe((e: Date) => {\n if (this._viewStartDate.isBefore(e)) {\n this._viewStartDate = this.calendarService.create(e, this.calendarSystem());\n this.render();\n }\n });\n }\n\n /**\n * @ignore\n */\n protected override ngOnInit() {\n super.ngOnInit();\n if (this.type) {\n this.calendar.set(this.type);\n }\n this._initValues();\n if (!this._viewStartDate) {\n if (this.value) {\n this.navTo(this.value);\n } else if (this.minValue) {\n const min = this.calendarService.create(this.minValue, this.calendarSystem());\n this.navTo(this._today.isBefore(min) ? this.minValue : this._today);\n } else {\n this.navTo(this._today);\n }\n }\n }\n\n /**\n * @ignore\n */\n override render() {\n if (!this._viewStartDate) return;\n this._viewRangeKey.set(`${this._viewStartDate.year}-${this._viewStartDate.monthOfYear}-${this.activeView}`);\n const applyCellClass = (slot: AXCalendarViewSlot, cellClass: any = this.cellClass) => {\n switch (typeof cellClass) {\n case 'string':\n cellClass.split(' ').forEach((c) => (slot.cssClass[c] = true));\n break;\n case 'object':\n Object.assign(slot.cssClass, cellClass);\n break;\n case 'function':\n applyCellClass(slot, cellClass(slot.date));\n break;\n }\n };\n this.views = [];\n for (let i = 0; i < this.count; i++) {\n switch (this.activeView) {\n case 'day':\n this.dayView(i, applyCellClass);\n break;\n case 'month':\n this.monthView(i, applyCellClass);\n break;\n case 'year':\n this.yearView(i, applyCellClass);\n break;\n }\n }\n this._updateSelectOptions();\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n private _updateSelectOptions() {\n if (!this._viewStartDate) return;\n\n const calendarName = this.calendarSystem();\n this._monthOptions = Array.from({ length: 12 }, (_, i) => ({\n id: i + 1,\n text: this.monthLabel(calendarName, i),\n }));\n\n const referenceYear = this._today.year;\n const { minYear, maxYear } = getCalendarYearBounds({\n referenceYear,\n yearRange: this.yearRange(),\n minValue: this.minValue,\n maxValue: this.maxValue,\n getYear: (date) => this.calendarService.create(date, this.calendarSystem()).year,\n });\n\n this._yearOptions = [];\n for (let year = minYear; year <= maxYear; year++) {\n this._yearOptions.push({ id: year, text: String(year) });\n }\n\n const monthId = this._viewStartDate.monthOfYear;\n const yearId = this._viewStartDate.year;\n this._selectedMonthOption = this._monthOptions.find((month) => month.id === monthId) ?? {\n id: monthId,\n text: this.monthLabel(calendarName, monthId - 1),\n };\n this._selectedYearOption = this._yearOptions.find((year) => year.id === yearId) ?? {\n id: yearId,\n text: String(yearId),\n };\n }\n\n private _createMonthDate(year: number, month: number, day: number): AXDateTime {\n const monthStart = this.calendarService.create({ year, month, day: 1 }, this.calendar());\n const safeDay = Math.min(day, monthStart.endOf('month').dayOfMonth);\n return this.calendarService.create({ year, month, day: safeDay }, this.calendar());\n }\n\n /**\n * @ignore\n */\n protected _handleMonthSelectChanged(e: AXValueChangedEvent) {\n if (!e.isUserInteraction || !this._viewStartDate) return;\n const month = this._getSelectBoxValue(e);\n if (month == null) return;\n this._navUserInteraction = true;\n this.navTo(this._createMonthDate(this._viewStartDate.year, month, this._viewStartDate.dayOfMonth));\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected _handleYearSelectChanged(e: AXValueChangedEvent) {\n if (!e.isUserInteraction || !this._viewStartDate) return;\n const year = this._getSelectBoxValue(e);\n if (year == null) return;\n this._navUserInteraction = true;\n this.navTo(this._viewStartDate.set('year', year));\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n private _getSelectBoxValue(e: AXValueChangedEvent): number | null {\n const val = e.value;\n if (Array.isArray(val)) return val[0]?.id ?? null;\n if (val && typeof val === 'object') return (val as { id: number }).id ?? null;\n return val != null ? Number(val) : null;\n }\n\n /**\n * Builds the day grid for a single month (no leading/trailing days from adjacent months).\n */\n private _getDayGridRange(current: AXDateTime): { range: AXDateTimeRange; weekCount: number } {\n const monthStart = current.startOf('month');\n const monthEnd = current.endOf('month');\n const daysInMonth = monthEnd.dayOfMonth;\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n const firstDayOffset = (monthStart.weekdayIndex - startsOn + 7) % 7;\n const weekCount = Math.ceil((firstDayOffset + daysInMonth) / 7);\n\n return {\n range: new AXDateTimeRange(monthStart, monthEnd),\n weekCount,\n };\n }\n\n /**\n * @ignore\n */\n private _setDisplayRange(current: AXDateTime): AXDateTimeRange {\n switch (this.activeView) {\n case 'year': {\n const y = current.startOf('year').year;\n const min = y - (y % 10);\n const max = min + 9;\n return new AXDateTimeRange(\n this.calendarService.create(\n {\n year: min,\n month: 1,\n day: 1,\n },\n this.calendarSystem(),\n ),\n this.calendarService.create(\n {\n year: max,\n month: 12,\n day: 28,\n },\n this.calendarSystem(),\n ),\n );\n }\n case 'month':\n return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));\n default:\n return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));\n }\n }\n\n /**\n * @ignore\n */\n private dayView(i: number, applyCellClass: any) {\n const monthAnchor = this._viewStartDate.startOf('month').add('month', i);\n const monthStart = monthAnchor;\n const { range, weekCount } = this._getDayGridRange(monthAnchor);\n const view: AXCalendarView = {\n range,\n slots: [],\n weekCount,\n };\n this.views.push(view);\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n const a = view.range.enumerate('day');\n view.slots = a.map((d) => {\n let selected = false;\n if (this.depth === 'day') {\n selected = this.value && d.equal(this.value, 'day');\n } else if (this.depth === 'month') {\n selected = this.value && d.equal(this.value, 'month');\n } else if (this.depth === 'year') {\n selected = this.value && d.equal(this.value, 'year');\n }\n const r: any = {};\n r.date = d;\n r.text = d.dayOfMonth;\n r.today = d.equal(this._today, 'day');\n r.selected = selected;\n const holidayInfo = this.getHoliday(d);\n r.holiday = this.isHoliday(d) || this.isWeekend(d);\n if (holidayInfo) {\n r.holidayTitle = holidayInfo.title;\n r.holidayColor = holidayInfo.color;\n r.tooltip = holidayInfo.title ?? '';\n }\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'day') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'day') == 1) ||\n this.isDisabled(d);\n //\n // const focused = d.dayOfMonth == this._footPrint.day && d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': true,\n };\n } else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-holiday': r.holiday,\n // 'ax-state-focused': focused,\n };\n if (d.compare(monthStart, 'day') === 0) {\n const columnStart = ((d.weekdayIndex - startsOn + 7) % 7) + 1;\n r.cssClass[`ax-column-start-${columnStart}`] = true;\n }\n if (holidayInfo?.cssClass) {\n holidayInfo.cssClass.split(' ').forEach((c) => {\n if (c) r.cssClass[c] = true;\n });\n }\n }\n if (this.cellClass) applyCellClass(r);\n\n return r;\n });\n }\n\n /**\n * @ignore\n */\n private monthView(i: number, applyCellClass: any) {\n const current = this._viewStartDate.add('year', i);\n const view: AXCalendarView = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('month');\n view.slots = a.map((d) => {\n const r: any = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date' as any, 'MMM');\n r.today = d.equal(this._today, 'month');\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'month') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'month') == 1);\n //\n r.selected = this.value && this.depth == 'month' && d.equal(this.value, 'month');\n //\n const focused = d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n } else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n\n /**\n * @ignore\n */\n private yearView(i: number, applyCellClass: any) {\n const current = this._viewStartDate.add('year', i * 10);\n const view: AXCalendarView = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('year');\n\n view.slots = a.map((d) => {\n const r: any = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date' as any, 'YYYY');\n r.today = d.equal(this._today, 'year');\n r.selected = this.value && this.depth == 'year' && d.equal(this.value, 'year');\n //\n const focused = d.year == this._footPrint.year;\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'year') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'year') == 1);\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n } else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePrevClick() {\n this._navUserInteraction = true;\n this.prev();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected _handleNextClick() {\n this._navUserInteraction = true;\n this.next();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected _handleSlotClick(e: MouseEvent, slot: AXCalendarViewSlot) {\n if (slot.disabled || this.disabled) return;\n //\n this.onSlotClick.emit({\n component: this,\n item: slot.date.date,\n isUserInteraction: true,\n nativeEvent: e,\n });\n //\n if (this.activeView == 'day') {\n this._setDate(slot.date.date);\n } else if (this.activeView == 'month' && this.depth == 'day') {\n this.activeView = 'day';\n this._footPrint.month = this.calendarService.create(slot.date.date, this.calendarSystem()).monthOfYear;\n this.navTo(slot.date);\n } else if (this.activeView == 'month' && this.depth == 'month') {\n this._setDate(slot.date.date);\n } else if (this.activeView == 'year' && (this.depth == 'day' || this.depth == 'month')) {\n this.activeView = 'month';\n this._footPrint.year = this.calendarService.create(slot.date.date, this.calendarSystem()).year;\n this.navTo(slot.date);\n } else if (this.activeView == 'year' && this.depth == 'year') {\n this._setDate(slot.date.date);\n }\n }\n\n /**\n * @ignore\n */\n protected _handleNavClick(e: AXClickEvent | any, view: AXCalendarViewType) {\n this._navUserInteraction = true;\n this.activeView = view;\n this._navUserInteraction = false;\n }\n\n /**\n * Toggles between different calendar views (day → month → year).\n */\n public toggleView() {\n if (this.activeView == 'day') this.activeView = 'month';\n else if (this.activeView == 'month') this.activeView = 'year';\n }\n\n /**\n * @ignore\n */\n protected override internalOptionChanged(e: MXComponentOptionChanged) {\n if (e.name == 'depth' || e.name == 'activeView' || e.name == 'disabledDates' || e.name == 'holidayDates') {\n this.render();\n }\n if (e.name == 'type') {\n if (e.value) {\n this.calendar.set(e.value);\n }\n this._refresh();\n }\n }\n\n /**\n * @ignore\n */\n protected override internalSetValue(value: Date): Date | null {\n if (!value || !this.calendarService.isValidDate(value)) {\n return null;\n }\n const v = this.calendarService.convert(value, this.calendarSystem());\n if (this.isDisabled(v)) {\n return null;\n }\n\n if (this.maxValue && this.calendarService.isValidDate(this.maxValue) && v.isAfter(this.maxValue)) {\n return this.maxValue;\n }\n\n if (this.minValue && this.calendarService.isValidDate(this.minValue) && v.isBefore(this.minValue)) {\n return this.minValue;\n }\n\n return v.date;\n }\n\n /**\n * @ignore\n */\n protected override internalValueChanged(value?: Date) {\n const val = this.calendarService.create(value, this.calendarSystem());\n let viewChanged = false;\n if (\n !this._viewStartDate ||\n val.compare(this.displayRange?.startTime, this.activeView) == -1 ||\n val.compare(this.displayRange?.endTime, this.activeView) == 1\n ) {\n this._viewStartDate = this.calendarService.create(value, this.calendarSystem());\n if (this.minValue && this._viewStartDate.isBefore(this.minValue)) {\n this._viewStartDate = this.calendarService.create(this.minValue, this.calendarSystem());\n }\n viewChanged = true;\n }\n this._footPrint.year = val.year;\n this._footPrint.month = val.monthOfYear;\n this._footPrint.day = val.dayOfMonth;\n\n const oldVal = this.oldValue() ? this.calendarService.create(this.oldValue(), this.calendarSystem()) : null;\n if (\n viewChanged ||\n !oldVal ||\n oldVal.monthOfYear !== val.monthOfYear ||\n oldVal.year !== val.year ||\n oldVal.dayOfMonth !== val.dayOfMonth\n ) {\n this.render();\n }\n this.oldValue.set(value);\n }\n\n /**\n * @ignore\n */\n protected _handleGoToday() {\n this._navUserInteraction = true;\n this._setDate(this._today.date);\n this.goToday();\n this._navUserInteraction = false;\n }\n\n /**\n * Navigates forward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: advances by count months\n * - month view: advances by count years\n * - year view: advances by 10 × count years\n *\n * @returns void\n */\n next() {\n this._navNextPrev(false);\n }\n\n /**\n * Navigates backward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: goes back by count months\n * - month view: goes back by count years\n * - year view: goes back by 10 × count years\n *\n * @returns void\n */\n prev() {\n this._navNextPrev(true);\n }\n\n /**\n * Sets focus to the currently selected calendar slot or the first available slot.\n *\n * @returns void\n */\n override focus() {\n const func = (s: string) => this.getHostElement().querySelector<HTMLDivElement>(s);\n const div = func('.ax-calendar-slots>div.ax-state-selected') || func('.ax-calendar-slots>div');\n div?.focus();\n }\n\n /**\n * @ignore\n */\n private _navNextPrev(prev: boolean) {\n const sign = prev ? -1 : 1;\n if (this.activeView == 'day') this.navTo(this._viewStartDate.add('month', sign * 1 * this.count));\n else if (this.activeView == 'month') this.navTo(this._viewStartDate.add('year', sign * 1 * this.count));\n else this.navTo(this._viewStartDate.add('year', sign * 10 * this.count));\n }\n\n /**\n * Navigates to the current date and emits the navigation event.\n *\n * @returns void\n */\n goToday() {\n this.navTo(this._today);\n }\n\n /**\n * Navigates to a specified date and updates the view.\n *\n * @param date The date to navigate to, which can be a Date object or an AXDateTime instance.\n * @returns void\n */\n navTo(date: Date | AXDateTime) {\n const val = this.calendarService.convert(date, this.calendarSystem());\n this._viewStartDate = val.startOf();\n this.render();\n //to make sure its rendred and displayRange is not null\n if (this.views.length > 0) {\n const vr = this.displayRange;\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: vr.startTime?.date,\n end: vr.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string {\n const _classes = {\n 'ax-state-disabled': this.disabled,\n 'ax-state-readonly': this.readonly,\n [`ax-look-${this.look()}`]: true,\n };\n return Object.entries(_classes)\n .filter((c) => c[1])\n .map((c) => c[0])\n .join(' ');\n }\n\n /**\n * @ignore\n */\n private _setDate(value: Date) {\n if (this.readonly || this.disabled) return;\n this.commitValue(this.calendarService.convert(value, this.calendarSystem()).startOf().date, true);\n }\n\n /**\n * @ignore\n */\n protected isDisabled(date: AXDateTime): boolean {\n if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {\n return this.disabledDates.some((d) => date.equal(d, 'day'));\n } else if (typeof this.disabledDates == 'function') {\n return this.disabledDates(date.date);\n }\n return false;\n }\n\n /**\n * @ignore\n */\n protected isHoliday(date: AXDateTime): boolean {\n const globalHolidays = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));\n const internalHolidays = this.internalHoliday().some((d) => date.equal(d.date, 'day'));\n let localHolidays = false;\n if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {\n localHolidays = this.holidayDates.some((d) => date.equal(d, 'day'));\n } else if (typeof this.holidayDates == 'function') {\n localHolidays = this.holidayDates(date.date);\n }\n return globalHolidays || internalHolidays || localHolidays;\n }\n\n /**\n * @ignore\n */\n protected getHoliday(date: AXDateTime): AXHolidayDate | undefined {\n const globalHoliday = this.calendarService.holidays.find((d) => date.equal(d.date, 'day'));\n const internalHoliday = this.internalHoliday().find((d) => date.equal(d.date, 'day'));\n return globalHoliday || internalHoliday;\n }\n\n /**\n * @ignore\n */\n protected isWeekend(date: AXDateTime): boolean {\n if (this.weekend().length) {\n return this.weekend().includes(date.weekdayIndex);\n }\n const weekend = this.calendarService.resolveCalendar(this.calendarSystem()).weekend;\n return weekend.includes(date.weekdayIndex);\n }\n\n /**\n * @ignore\n */\n @HostListener('keydown', ['$event'])\n _handleOnKeydownEvent(e: KeyboardEvent) {\n //TODO: complete keyboad navigation\n const ignore = () => {\n e.preventDefault();\n e.stopPropagation();\n };\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n if (e.ctrlKey) {\n const moveForward = this.isRtl() ? e.code === 'ArrowLeft' : e.code === 'ArrowRight';\n moveForward ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n } else if (e.code === 'ArrowUp' || e.code === 'ArrowDown') {\n if (e.ctrlKey) {\n e.code === 'ArrowUp' ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n }\n }\n\n /**\n * @ignore\n */\n protected getMonthName(date: AXDateTime, style: 'short' | 'long') {\n const system = this.calendarSystem();\n const monthIndex = this.calendarService.create(date.date, system).monthOfYear - 1;\n return this.monthLabel(system, monthIndex, style);\n }\n\n private monthLabel(system: string, monthIndex0: number, style: 'short' | 'long' = 'short'): string {\n const key = `dateTime.months.${system}.${style}.${monthIndex0}`;\n const translated = this.translateService.translateSync(key);\n if (translated && translated !== key && !translated.startsWith('dateTime.months.')) {\n return translated;\n }\n return this.fallbackMonthName(system, monthIndex0, style);\n }\n\n private fallbackMonthName(system: string, monthIndex0: number, style: 'short' | 'long'): string {\n try {\n const locale = this.localeService.activeProfile().localeInfo.code;\n const intlCalendar = system === 'solar-hijri' ? 'persian' : 'gregory';\n const date =\n system === 'solar-hijri'\n ? this.calendarService.create({ year: 1400, month: monthIndex0 + 1, day: 15 }, system).date\n : new Date(2000, monthIndex0, 15);\n return new Intl.DateTimeFormat(locale, {\n month: style,\n calendar: intlCalendar,\n }).format(date);\n } catch {\n return String(monthIndex0 + 1);\n }\n }\n}","<div class=\"ax-calendar-frame\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-body\">\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\n @switch (activeView) {\n @case ('year') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\" dir=\"ltr\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }} -\n {{ v.range.endTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon ax-next\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !yearCellTemplate }\">\n @for (slot of v.slots; track slot.date.date.getTime()) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (yearCellTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"yearCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { slot: slot } }\"\n >\n </ng-container>\n </div>\n } @else {\n <div>\n {{ slot.text }}\n </div>\n }\n </button>\n }\n </div>\n }\n @case ('month') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\" dir=\"ltr\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !monthCellTemplate }\">\n @for (slot of v.slots; track slot.date.date.getTime()) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (monthCellTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"monthCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { slot: slot } }\"\n >\n </ng-container>\n </div>\n } @else {\n <div\n [title]=\"slot.date | format: 'date' : { calendar: calendarSystem(), format: 'MMMM YYYY' } | async\"\n >\n {{ getMonthName(slot.date, 'short') }}\n </div>\n }\n </button>\n }\n </div>\n }\n @default {\n @if (showNavigation && look() === 'select' && last) {\n <div class=\"ax-calendar-view-header ax-calendar-day-nav\" dir=\"ltr\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <div class=\"ax-calendar-day-nav-center\">\n <ax-select-box\n class=\"ax-calendar-month-select ax-sm\"\n look=\"none\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_monthOptions\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_selectedMonthOption\"\n [isItemTruncated]=\"false\"\n dropdownWidth=\"50\"\n [maxVisibleItems]=\"12\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleMonthSelectChanged($event)\"\n (click)=\"$event.stopPropagation()\"\n ></ax-select-box>\n <ax-select-box\n class=\"ax-calendar-year-select ax-sm\"\n look=\"none\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_yearOptions\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_selectedYearOption\"\n [isItemTruncated]=\"false\"\n dropdownWidth=\"40\"\n [maxVisibleItems]=\"10\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleYearSelectChanged($event)\"\n (click)=\"$event.stopPropagation()\"\n ></ax-select-box>\n </div>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n @if (showNavigation && look() === 'classic' && last) {\n <div class=\"ax-calendar-view-header ax-calendar-day-nav\" dir=\"ltr\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <div class=\"ax-calendar-header-info ax-calendar-day-nav-center\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'month')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'MMMM' } | async }}\n </button>\n </div>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n <div class=\"ax-calendar-week\">\n @for (d of weekLayout(); track d) {\n <div>{{ weekdayLabel(d) }}</div>\n }\n </div>\n\n <div\n class=\"ax-calendar-slots ax-calendar-slots-day\"\n [ngClass]=\"{ 'ax-default': !dayCellTemplate }\"\n [style.--ax-calendar-day-rows]=\"v.weekCount ?? 5\"\n >\n @for (slot of v.slots; track slot.date.date.getTime()) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-has-holiday-color]=\"!!slot.holidayColor\"\n [style.--ax-calendar-holiday-color]=\"slot.holidayColor ?? null\"\n (click)=\"_handleSlotClick($event, slot)\"\n [disabled]=\"disabled\"\n [axRipple]\n [axTooltip]=\"slot.tooltip ?? ''\"\n [axTooltipDisabled]=\"!slot.tooltip\"\n [title]=\"\n !slot.tooltip\n ? (slot.date | format: 'date' : { calendar: calendarSystem(), format: 'long' } | async)\n : ''\n \"\n >\n @if (dayCellTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"dayCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { slot: slot } }\"\n >\n </ng-container>\n </div>\n } @else {\n <div class=\"ax-calendar-day-slot-content\">\n {{ slot.text }}\n </div>\n }\n </button>\n }\n </div>\n }\n }\n }\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n</div>\n","import {\n AXComponent,\n AXRange,\n AXValuableComponent,\n MXInteractiveComponent,\n MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXCalendarService, AXDateTime } from '@acorex/core/date-time';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { NgClass } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXCalendarHolidaysLoader,\n AXCalendarNavigationLookType,\n AXCalendarSlotClick,\n MXCalendarBaseComponent,\n} from './calendar.class';\nimport { AXCalendarComponent } from './calendar.component';\n\n@Component({\n selector: 'ax-calendar-range',\n templateUrl: 'calendar-range.component.html',\n styleUrls: ['calendar-range.component.css'],\n encapsulation: ViewEncapsulation.None,\n inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n ],\n outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarRangeComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarRangeComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarRangeComponent },\n ],\n host: {\n '[class.ax-state-disabled]': 'disabled',\n },\n imports: [AXCalendarComponent, NgClass],\n})\nexport class AXCalendarRangeComponent\n extends classes(MXValueComponent<AXRange<Date>>, MXInteractiveComponent, MXCalendarBaseComponent)\n implements AfterViewInit\n{\n private unsubscriber = inject(AXUnsubscriber);\n\n protected calendar = linkedSignal(() => this.localeService.activeProfile().calendar.system);\n\n /**\n * Day view navigation style passed through to embedded calendars.\n */\n look = input<AXCalendarNavigationLookType>('select');\n\n /**\n * Optional loader for holidays scoped to the visible calendar range.\n */\n holidays = input<AXCalendarHolidaysLoader>();\n\n /**\n * @ignore\n */\n private _calendarService: AXCalendarService = inject(AXCalendarService);\n\n @ViewChild('c1', { static: true })\n private _c1: AXCalendarComponent;\n\n @ViewChild('c2', { static: true })\n private _c2: AXCalendarComponent;\n\n _navText1 = '';\n _navText2 = '';\n\n /**\n * @ignore\n */\n private _navUserInteraction = false;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n this.defaultValue = { from: null, end: null };\n\n this.calendarService.calendarChanges$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this._refreshCalendars();\n });\n\n let previousCalendar = this.localeService.activeProfile().calendar.system;\n\n this.localeService.profileChanged$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n const nextCalendar = this.localeService.activeProfile().calendar.system;\n if (\n previousCalendar !== nextCalendar &&\n (this._calendarService.isValidDate(this.value?.from) || this._calendarService.isValidDate(this.value?.end))\n ) {\n this.commitValue({ from: null, end: null });\n }\n previousCalendar = nextCalendar;\n this._refreshCalendars();\n });\n\n this.typeChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe((value) => {\n this.calendar.set(value);\n this._refreshCalendars();\n });\n\n this.translateService.langChanges$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this._scheduleNavTextSync();\n });\n }\n\n /**\n * @ignore\n */\n private _refreshCalendars() {\n // Defer until embedded calendars finish their own locale/calendar refresh microtasks.\n queueMicrotask(() => {\n queueMicrotask(() => {\n this._ensureCalendarsReady();\n this._syncNav1();\n this.cdr.markForCheck();\n });\n });\n }\n\n /**\n * @ignore\n */\n private _scheduleNavTextSync() {\n queueMicrotask(() => {\n this._syncNavText();\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @ignore\n */\n private _ensureCalendarsReady() {\n const today = this._calendarService.now(this.calendar());\n\n if (!this._c1?.displayRange) {\n this._c1?.navTo(today);\n } else {\n this._c1?.render();\n }\n\n if (!this._c2?.displayRange) {\n const range = this._c1?.displayRange;\n if (!range) {\n return;\n }\n\n const monthStart = range.startTime.startOf('month');\n const view = this._c1.activeView;\n\n if (view === 'day') {\n this._c2?.navTo(monthStart.add('month', 1));\n } else if (view === 'month') {\n this._c2?.navTo(monthStart.add('year', 1));\n } else if (view === 'year') {\n this._c2?.navTo(range.endTime.add('year', 4));\n }\n }\n }\n\n /**\n * @ignore\n */\n protected override ngOnInit(): void {\n super.ngOnInit();\n if (this.type) {\n this.calendar.set(this.type);\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n queueMicrotask(() => {\n this._c1?.render();\n this._syncNav1();\n });\n }\n\n override internalValueChanged(value: any) {\n this._c1.render();\n this._syncNav1();\n }\n\n /**\n * @ignore\n */\n getCellClass = (date: AXDateTime) => {\n if (!this._calendarService.isValidDate(this.value.from)) {\n return null;\n }\n\n const calendar = this.calendar();\n const from = this._calendarService.create(this.value.from, calendar).startOf('day');\n const hasEnd = this._calendarService.isValidDate(this.value.end);\n const end = hasEnd ? this._calendarService.create(this.value.end, calendar).startOf('day') : null;\n const dateDay = date.startOf('day');\n const dateMs = dateDay.date.getTime();\n const fromMs = from.date.getTime();\n const endMs = end?.date.getTime();\n\n let rangeClass: string | null = null;\n if (dateMs === fromMs) {\n rangeClass = 'ax-range-start';\n } else if (endMs != null && dateMs === endMs) {\n rangeClass = 'ax-range-end';\n } else if (endMs != null && dateMs > fromMs && dateMs < endMs) {\n rangeClass = 'ax-range-between';\n }\n\n if (!rangeClass) {\n return null;\n }\n\n if (!hasEnd || !end) {\n return rangeClass;\n }\n\n const weekStart = this.localeService.activeProfile().calendar.week.startsOn;\n const weekEnd = (weekStart + 6) % 7;\n const classes = [rangeClass];\n\n if (rangeClass !== 'ax-range-start' && date.weekdayIndex !== weekStart) {\n classes.push('ax-range-continue-start');\n }\n\n if (rangeClass !== 'ax-range-end') {\n const nextDay = date.add('day', 1);\n const continuesToNextDay =\n date.weekdayIndex !== weekEnd && nextDay.compare(from, 'day') >= 0 && nextDay.compare(end, 'day') <= 0;\n\n if (continuesToNextDay) {\n classes.push('ax-range-continue-end');\n }\n }\n\n return classes.join(' ');\n };\n\n /**\n * @ignore\n */\n protected handleSlotClick(e: AXCalendarSlotClick) {\n this.onSlotClick.emit({\n component: this,\n item: e.item,\n isUserInteraction: true,\n nativeEvent: e,\n });\n\n if (this._c1.activeView !== this.depth) {\n if (e.component === this._c1) {\n this._syncNav1();\n }\n if (e.component === this._c2) {\n this._syncNav2(this._calendarService.create(e.item, this.calendar()));\n }\n this._c1.render();\n this._syncNav1();\n return;\n }\n\n const calendar = this.calendar();\n const clicked = this._calendarService.create(e.item, calendar).startOf('day');\n const hasFrom = this._calendarService.isValidDate(this.value?.from);\n const hasEnd = this._calendarService.isValidDate(this.value?.end);\n let next: AXRange<Date>;\n\n if (!hasFrom || hasEnd) {\n next = { from: clicked.date, end: null };\n } else {\n const fromDate = this._calendarService.create(this.value.from, calendar).startOf('day');\n const dayCompare = clicked.compare(fromDate, 'day');\n\n if (dayCompare < 0) {\n next = { from: clicked.date, end: null };\n } else {\n next = { from: fromDate.date, end: clicked.date };\n }\n }\n\n this.commitValue(next, true);\n this._c1.render();\n this._syncNav1();\n }\n\n /**\n * @ignore\n */\n protected handlePrevClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.prev();\n } else if (view == 'year') {\n this._c1.navTo(d1.add('year', -20));\n }\n this._syncNav1();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected handleNextClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.next();\n } else if (view == 'year') {\n this._c1.navTo(d1.add('year', 20));\n }\n this._syncNav1();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected handleNavClick() {\n this._c1.toggleView();\n }\n\n /**\n * @ignore\n */\n private _syncNavText() {\n const view = this._c1?.activeView;\n const d1 = this._c1?.displayRange?.startTime;\n const d2 = this._c2?.displayRange?.startTime;\n\n if (!view || !d1 || !d2) {\n return;\n }\n\n if (view === 'day') {\n this._navText1 = this._formatNavDate(d1);\n this._navText2 = this._formatNavDate(d2);\n } else if (view === 'month' || view === 'year') {\n this._navText1 = String(d1.year);\n this._navText2 = String(d2.year);\n }\n\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n private _formatNavDate(date: AXDateTime): string {\n const system = this.calendar();\n const monthIndex = date.monthOfYear - 1;\n const month = this._monthLabel(system, monthIndex, 'long');\n return `${month} ${date.year}`;\n }\n\n /**\n * @ignore\n */\n private _monthLabel(system: string, monthIndex0: number, style: 'short' | 'long' = 'short'): string {\n const key = `dateTime.months.${system}.${style}.${monthIndex0}`;\n const translated = this.translateService.translateSync(key);\n if (translated && translated !== key && !translated.startsWith('dateTime.months.')) {\n return translated;\n }\n return this._fallbackMonthName(system, monthIndex0, style);\n }\n\n /**\n * @ignore\n */\n private _fallbackMonthName(system: string, monthIndex0: number, style: 'short' | 'long'): string {\n try {\n const locale = this.localeService.activeProfile().localeInfo.code;\n const intlCalendar = system === 'solar-hijri' ? 'persian' : 'gregory';\n const date =\n system === 'solar-hijri'\n ? this._calendarService.create({ year: 1400, month: monthIndex0 + 1, day: 15 }, system).date\n : new Date(2000, monthIndex0, 15);\n return new Intl.DateTimeFormat(locale, {\n month: style,\n calendar: intlCalendar,\n }).format(date);\n } catch {\n return String(monthIndex0 + 1);\n }\n }\n\n /**\n * @ignore\n */\n protected handleNavigate() {\n this._syncNav1();\n\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: this._c1.displayRange.startTime?.date,\n end: this._c2.displayRange.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * @ignore\n */\n protected handleActiveViewChange1() {\n this._c2.activeView = this._c1.activeView;\n this._syncNav1();\n }\n\n /**\n * @ignore\n */\n protected handleActiveViewChange2() {\n if (this._c2.activeView != this._c1.activeView) {\n this._c1.activeView = this._c2.activeView;\n }\n }\n\n /**\n * @ignore\n */\n private _syncNav1() {\n const range = this._c1?.displayRange;\n if (!range) {\n return;\n }\n\n const view = (this._c2.activeView = this._c1.activeView);\n const monthStart = range.startTime.startOf('month');\n\n if (view === 'day') {\n this._c2.navTo(monthStart.add('month', 1));\n } else if (view === 'month') {\n this._c2.navTo(monthStart.add('year', 1));\n } else if (view === 'year') {\n this._c2.navTo(range.endTime.add('year', 4));\n }\n\n this._syncNavText();\n }\n\n /**\n * @ignore\n */\n protected handleCalendar2Navigate() {\n this._syncNavText();\n }\n\n /**\n * @ignore\n */\n private _syncNav2(e: AXDateTime) {\n const view = this._c2.activeView;\n if (view == 'month') {\n this._c1.navTo(e.add('month', -1));\n } else if (view == 'year') {\n this._c1.navTo(e.startOf('year'));\n }\n }\n}\n","<div class=\"ax-calendar-range-header\" dir=\"ltr\"> <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-button-icon pb-4\"\n (click)=\"handlePrevClick()\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <div class=\"ax-calendar-header-range-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-calendar-range-nav-label ax-calendar-range-nav-label--start\"\n (click)=\"handleNavClick()\"\n >\n {{ _navText1 }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-calendar-range-nav-label ax-calendar-range-nav-label--end\"\n (click)=\"handleNavClick()\"\n >\n {{ _navText2 }}\n </button>\n </div>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-button-icon pb-4\"\n (click)=\"handleNextClick()\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n</div>\n\n<div class=\"ax-calendar-range-body\">\n <div class=\"ax-calendar-range-panel ax-calendar-range-panel--start\">\n <ax-calendar\n #c1\n [showNavigation]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [cellClass]=\"getCellClass\"\n [type]=\"type\"\n [dayCellTemplate]=\"dayCellTemplate\"\n [monthCellTemplate]=\"monthCellTemplate\"\n [yearCellTemplate]=\"yearCellTemplate\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [depth]=\"depth\"\n [look]=\"look()\"\n [holidays]=\"holidays()\"\n [holidayDates]=\"holidayDates\"\n (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleNavigate()\"\n (activeViewChange)=\"handleActiveViewChange1()\"\n >\n </ax-calendar>\n </div>\n <div class=\"ax-calendar-range-panel ax-calendar-range-panel--end\">\n <ax-calendar\n #c2\n [showNavigation]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [cellClass]=\"getCellClass\"\n [type]=\"type\"\n [dayCellTemplate]=\"dayCellTemplate\"\n [monthCellTemplate]=\"monthCellTemplate\"\n [yearCellTemplate]=\"yearCellTemplate\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [depth]=\"depth\"\n [look]=\"look()\"\n [holidays]=\"holidays()\"\n [holidayDates]=\"holidayDates\"\n (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleCalendar2Navigate()\"\n (activeViewChange)=\"handleActiveViewChange2()\"\n >\n </ax-calendar>\n </div>\n</div>\n\n<ng-content select=\"ax-footer\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXCalendarRangeComponent } from './calendar-range.component';\nimport { AXCalendarComponent } from './calendar.component';\n\n@NgModule({\n imports: [AXCalendarComponent, AXCalendarRangeComponent],\n exports: [AXCalendarComponent, AXCalendarRangeComponent],\n})\nexport class AXCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-calendar.mjs","sources":["../../../../packages/components/calendar/src/lib/calendar.class.ts","../../../../packages/components/calendar/src/lib/calendar.component.ts","../../../../packages/components/calendar/src/lib/calendar.component.html","../../../../packages/components/calendar/src/lib/calendar-range.component.ts","../../../../packages/components/calendar/src/lib/calendar-range.component.html","../../../../packages/components/calendar/src/lib/calendar.module.ts","../../../../packages/components/calendar/src/acorex-components-calendar.ts"],"sourcesContent":["import { AXItemClickEvent, AXRange, AXRangeChangedEvent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCalendarService, AXDateTime, AXDateTimeRange, AXHolidayDate } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, inject } from '@angular/core';\n\nexport type AXCalendarViewType = 'year' | 'month' | 'day';\nexport type AXCalendarViewDepth = AXCalendarViewType;\n\n/**\n * Controls how month and year are chosen in the day view header.\n * - `classic`: tap year/month labels to open month/year picker panels.\n * - `select`: month/year dropdowns with prev/next arrows on the edges.\n */\nexport type AXCalendarNavigationLookType = 'classic' | 'select';\n\n/**\n * Controls how many years appear in the year selector.\n * - A number applies the same range to past and future years.\n * - An object sets past and future ranges separately.\n * `minValue` and `maxValue` take priority when set.\n */\nexport type AXCalendarYearRange = number | { past: number; future: number };\n\nexport function getCalendarYearBounds(options: {\n referenceYear: number;\n yearRange: AXCalendarYearRange;\n minValue?: Date;\n maxValue?: Date;\n getYear: (date: Date) => number;\n}): { minYear: number; maxYear: number } {\n const past = typeof options.yearRange === 'number' ? options.yearRange : options.yearRange.past;\n const future = typeof options.yearRange === 'number' ? options.yearRange : options.yearRange.future;\n\n return {\n minYear: options.minValue ? options.getYear(options.minValue) : options.referenceYear - past,\n maxYear: options.maxValue ? options.getYear(options.maxValue) : options.referenceYear + future,\n };\n}\n\nexport type AXCalendarDisabledDates = Date[] | ((date: Date) => boolean);\nexport type AXCalendarHolidayDates = Date[] | ((date: Date) => boolean);\nexport type AXCalendarDateRange = AXRange<Date>;\nexport type AXCalendarHolidaysLoader = (range: AXCalendarDateRange) => Promise<AXHolidayDate[]>;\nexport type AXCalendarCellCssClass = string | { [key: string]: boolean } | ((date: Date) => string);\n\nexport type AXDateTimePickerType = 'date' | 'time' | 'datetime';\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarNavigateEvent extends AXRangeChangedEvent<Date> {}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarSlotClick extends AXItemClickEvent<Date> {}\n\nexport interface AXCalendarViewSlot {\n date: AXDateTime;\n text: string;\n tooltip?: string;\n holiday?: boolean;\n holidayTitle?: string;\n holidayColor?: string;\n today: boolean;\n selected: boolean;\n disabled: boolean;\n cssClass: { [key: string]: boolean };\n}\nexport interface AXCalendarView {\n range: AXDateTimeRange;\n slots: AXCalendarViewSlot[];\n weekCount?: number;\n}\n\n@Injectable()\nexport class MXCalendarBaseComponent extends MXBaseComponent {\n protected localeService = inject(AXLocaleService);\n protected calendarService = inject(AXCalendarService);\n protected translateService = inject(AXTranslationService);\n\n @Input()\n interface: 'calendar' | 'picker' = 'calendar';\n\n /**\n * @deprecated\n * use dayCellTemplate, monthCellTemplate, yearCellTemplate instead\n */\n @Input()\n cellTemplate?: TemplateRef<unknown>;\n\n @Input()\n dayCellTemplate?: TemplateRef<unknown>;\n @Input()\n monthCellTemplate?: TemplateRef<unknown>;\n @Input()\n yearCellTemplate?: TemplateRef<unknown>;\n\n @Input()\n cellClass?: AXCalendarCellCssClass;\n\n @Input()\n showNavigation = true;\n\n @Input()\n count = 1;\n\n @Output()\n onSlotClick: EventEmitter<AXCalendarSlotClick> = new EventEmitter<AXCalendarSlotClick>();\n\n @Output()\n onNavigate: EventEmitter<AXCalendarNavigateEvent> = new EventEmitter<AXCalendarNavigateEvent>();\n\n @Output()\n activeViewChange: EventEmitter<AXCalendarViewType> = new EventEmitter<AXCalendarViewType>();\n\n private _activeView: AXCalendarViewType = 'day';\n @Input()\n public get activeView(): AXCalendarViewType {\n return this._activeView;\n }\n public set activeView(v: AXCalendarViewType) {\n this.setOption({\n name: 'activeView',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n @Output()\n public typeChange: EventEmitter<string> = new EventEmitter<string>();\n\n private _type: string;\n\n /**\n * @deprecated use calendar input instead\n */\n @Input()\n public get type(): string {\n return this._type;\n }\n public set type(v: string) {\n this.setOption({\n name: 'type',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n @Output()\n depthChange: EventEmitter<AXCalendarViewDepth> = new EventEmitter<AXCalendarViewDepth>();\n\n private _depth: AXCalendarViewDepth = 'day';\n @Input()\n public get depth(): AXCalendarViewDepth {\n return this._depth;\n }\n public set depth(v: AXCalendarViewDepth) {\n this.setOption({\n name: 'depth',\n value: v,\n beforeCallback: (o, n) => {\n this.activeView = v;\n return n;\n },\n afterCallback: () => {\n this.render();\n },\n });\n }\n\n @Output()\n minValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n private _minValue: Date;\n @Input()\n public get minValue(): Date {\n return this._minValue;\n }\n public set minValue(v: Date) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'minValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n } else {\n this.setOption({\n name: 'minValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n\n @Output()\n maxValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n private _maxValue: Date;\n @Input()\n public get maxValue(): Date {\n return this._maxValue;\n }\n public set maxValue(v: Date) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'maxValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n } else {\n this.setOption({\n name: 'maxValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n\n @Output()\n disabledDatesChange: EventEmitter<AXCalendarDisabledDates> = new EventEmitter<AXCalendarDisabledDates>();\n\n private _disabledDates: AXCalendarDisabledDates;\n @Input()\n public get disabledDates(): AXCalendarDisabledDates {\n return this._disabledDates;\n }\n public set disabledDates(v: AXCalendarDisabledDates) {\n this.setOption({ name: 'disabledDates', value: v });\n }\n\n @Output()\n holidayDatesChange: EventEmitter<AXCalendarHolidayDates> = new EventEmitter<AXCalendarHolidayDates>();\n\n private _holidayDates: AXCalendarHolidayDates;\n @Input()\n public get holidayDates(): AXCalendarHolidayDates {\n return this._holidayDates;\n }\n public set holidayDates(v: AXCalendarHolidayDates) {\n this.setOption({ name: 'holidayDates', value: v });\n }\n\n render(): void {}\n}\n\nexport const CALENDAR_INPUTS = ['depth', 'activeView', 'min', 'max', 'disabledDates', 'type', 'holidayDates'];\nexport const CALENDAR_OUTPUTS = [\n 'depthChange',\n 'typeChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n];\n","import {\n AXClickEvent,\n AXComponent,\n AXRippleDirective,\n AXValuableComponent,\n AXValueChangedEvent,\n MXComponentOptionChanged,\n MXInteractiveComponent,\n MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { AXDateTime, AXDateTimeModule, AXDateTimeRange, AXHolidayDate } from '@acorex/core/date-time';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n input,\n linkedSignal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXFormatModule, AXFormatService } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXCalendarDateRange,\n AXCalendarHolidaysLoader,\n AXCalendarNavigationLookType,\n AXCalendarView,\n AXCalendarViewSlot,\n AXCalendarViewType,\n AXCalendarYearRange,\n getCalendarYearBounds,\n MXCalendarBaseComponent,\n} from './calendar.class';\n\n/**\n * A calendar component that provides a customizable calendar view with various options for selection, navigation, and styling.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n 'count',\n 'name',\n 'id',\n ],\n outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'minValueChange',\n 'maxValueChange',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n 'countChange',\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarComponent },\n ],\n imports: [\n NgClass,\n NgTemplateOutlet,\n AXRippleDirective,\n AsyncPipe,\n AXTranslatorPipe,\n AXFormatModule,\n AXDateTimeModule,\n AXSelectBoxComponent,\n FormsModule,\n AXTooltipDirective,\n ],\n})\nexport class AXCalendarComponent extends classes(\n MXValueComponent<Date | null>,\n MXInteractiveComponent,\n MXCalendarBaseComponent,\n) {\n private formatService = inject(AXFormatService);\n\n weekend = input<number[]>([]);\n weekdays = input<number[]>([]);\n\n /**\n * Day view navigation style.\n * - `classic`: tap year/month labels to open month/year picker panels.\n * - `select`: month/year dropdowns with prev/next arrows on the edges.\n */\n look = input<AXCalendarNavigationLookType>('select');\n\n /**\n * Years shown in the year selector when `look` is `select`.\n * Use a number for equal past/future ranges, or `{ past, future }` for asymmetric ranges.\n * `minValue` and `maxValue` take priority when set.\n */\n yearRange = input<AXCalendarYearRange>(80);\n\n /**\n * Optional loader for holidays scoped to the visible calendar range.\n * Merged with holidays from `AX_DATETIME_HOLIDAYS_LOADER` via `AXCalendarService`.\n */\n holidays = input<AXCalendarHolidaysLoader>();\n\n protected readonly isRtl = this.localeService.isRtl;\n\n protected calendar = linkedSignal(() => this.localeService.activeProfile().calendar.system);\n\n /** Explicit `type` input wins over the locale profile calendar. */\n protected calendarSystem = computed(() => this.type || this.calendar());\n\n /** Week column order from the active locale profile (0 = Sun … 6 = Sat). */\n protected weekLayout = computed(() => {\n const custom = this.weekdays();\n if (custom.length) {\n return custom;\n }\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n return Array.from({ length: 7 }, (_, i) => (startsOn + i) % 7);\n });\n\n protected weekdayLabel(index: number): string {\n const labelLength = this.localeService.activeProfile().calendar.week.weekdayLabelLength ?? 2;\n const short = this.translateService.translateSync(`@acorex:dateTime.weekdays.short.${index}`);\n const shortChars = [...short];\n if (shortChars.length >= labelLength) {\n return shortChars.slice(0, labelLength).join('');\n }\n const long = this.translateService.translateSync(`@acorex:dateTime.weekdays.long.${index}`);\n return [...long.replace(/\\s/g, '')].slice(0, labelLength).join('');\n }\n\n public get displayRange(): AXDateTimeRange | null {\n if (!this.views.length || !this._viewStartDate) {\n return null;\n }\n\n if (this.activeView === 'day') {\n const lastMonth = this._viewStartDate.add('month', this.count - 1);\n return new AXDateTimeRange(this._viewStartDate.startOf('month'), lastMonth.endOf('month'));\n }\n\n return new AXDateTimeRange(this.views[0]?.range.startTime, this.views[this.views.length - 1]?.range.endTime);\n }\n\n /**\n * @ignore\n */\n protected _today = this.calendarService.create(new Date(), this.calendarSystem());\n\n /**\n * @ignore\n */\n private _viewStartDate!: AXDateTime;\n\n /**\n * @ignore\n */\n private _navUserInteraction = false;\n\n /**\n * @ignore\n */\n private _footPrint = {\n year: null,\n month: null,\n day: null,\n };\n\n /**\n * @ignore\n */\n protected views: AXCalendarView[] = [];\n\n /**\n * @ignore\n */\n protected _monthOptions: { id: number; text: string }[] = [];\n\n /**\n * @ignore\n */\n protected _yearOptions: { id: number; text: string }[] = [];\n\n /**\n * Full option objects for select-box bindings so labels render without async byKey lookups.\n * @ignore\n */\n protected _selectedMonthOption: { id: number; text: string } | null = null;\n\n /**\n * @ignore\n */\n protected _selectedYearOption: { id: number; text: string } | null = null;\n\n /**\n * @ignore\n */\n private oldValue = signal<Date | null>(null);\n\n private internalHoliday = signal<AXHolidayDate[]>([]);\n\n private _viewRangeKey = signal<string | null>(null);\n\n #holidayEffect = effect(() => {\n const func = this.holidays();\n const rangeKey = this._viewRangeKey();\n if (!func || !rangeKey || !this._viewStartDate) return;\n\n const displayRange =\n this.activeView === 'day'\n ? this._getDayGridRange(this._viewStartDate.startOf('month')).range\n : this._setDisplayRange(this._viewStartDate);\n const loadRange: AXCalendarDateRange = {\n from: displayRange.startTime.date,\n end: displayRange.endTime.date,\n };\n\n const result = func(loadRange);\n if (result instanceof Promise) {\n result.then((holidays) => {\n this.internalHoliday.set(holidays);\n this.render();\n });\n } else {\n this.internalHoliday.set(result as AXHolidayDate[]);\n this.render();\n }\n });\n\n /**\n * @ignore\n */\n private _initValues() {\n this._today = this.calendarService.create(new Date(), this.calendarSystem());\n }\n\n /**\n * Defers refresh so explicit `type` input can sync after locale profile changes.\n */\n private _scheduleRefresh() {\n queueMicrotask(() => this._refresh());\n }\n\n /**\n * @ignore\n */\n private _refresh() {\n this._initValues();\n this.navTo(this.value || this._today);\n }\n\n /**\n * @ignore\n */\n constructor() {\n const unsubscriber = inject(AXUnsubscriber);\n\n super();\n this.calendarService.onHolidaysChanged.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this.render();\n });\n this.calendarService.calendarChanges$.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this._scheduleRefresh();\n });\n\n this.localeService.profileChanged$.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this._scheduleRefresh();\n });\n\n this.typeChange.pipe(unsubscriber.takeUntilDestroy).subscribe((value) => {\n this.calendar.set(value);\n this._scheduleRefresh();\n });\n\n this.minValueChange.subscribe((e: Date) => {\n if (this._viewStartDate.isBefore(e)) {\n this._viewStartDate = this.calendarService.create(e, this.calendarSystem());\n this.render();\n }\n });\n }\n\n /**\n * @ignore\n */\n protected override ngOnInit() {\n super.ngOnInit();\n if (this.type) {\n this.calendar.set(this.type);\n }\n this._initValues();\n if (!this._viewStartDate) {\n if (this.value) {\n this.navTo(this.value);\n } else if (this.minValue) {\n const min = this.calendarService.create(this.minValue, this.calendarSystem());\n this.navTo(this._today.isBefore(min) ? this.minValue : this._today);\n } else {\n this.navTo(this._today);\n }\n }\n }\n\n /**\n * @ignore\n */\n override render() {\n if (!this._viewStartDate) return;\n this._viewRangeKey.set(`${this._viewStartDate.year}-${this._viewStartDate.monthOfYear}-${this.activeView}`);\n const applyCellClass = (slot: AXCalendarViewSlot, cellClass: any = this.cellClass) => {\n switch (typeof cellClass) {\n case 'string':\n cellClass.split(' ').forEach((c) => (slot.cssClass[c] = true));\n break;\n case 'object':\n Object.assign(slot.cssClass, cellClass);\n break;\n case 'function':\n applyCellClass(slot, cellClass(slot.date));\n break;\n }\n };\n this.views = [];\n for (let i = 0; i < this.count; i++) {\n switch (this.activeView) {\n case 'day':\n this.dayView(i, applyCellClass);\n break;\n case 'month':\n this.monthView(i, applyCellClass);\n break;\n case 'year':\n this.yearView(i, applyCellClass);\n break;\n }\n }\n this._updateSelectOptions();\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n private _updateSelectOptions() {\n if (!this._viewStartDate) return;\n\n const calendarName = this.calendarSystem();\n this._monthOptions = Array.from({ length: 12 }, (_, i) => ({\n id: i + 1,\n text: this.monthLabel(calendarName, i),\n }));\n\n const referenceYear = this._today.year;\n const { minYear, maxYear } = getCalendarYearBounds({\n referenceYear,\n yearRange: this.yearRange(),\n minValue: this.minValue,\n maxValue: this.maxValue,\n getYear: (date) => this.calendarService.create(date, this.calendarSystem()).year,\n });\n\n this._yearOptions = [];\n for (let year = minYear; year <= maxYear; year++) {\n this._yearOptions.push({ id: year, text: String(year) });\n }\n\n const monthId = this._viewStartDate.monthOfYear;\n const yearId = this._viewStartDate.year;\n this._selectedMonthOption = this._monthOptions.find((month) => month.id === monthId) ?? {\n id: monthId,\n text: this.monthLabel(calendarName, monthId - 1),\n };\n this._selectedYearOption = this._yearOptions.find((year) => year.id === yearId) ?? {\n id: yearId,\n text: String(yearId),\n };\n }\n\n private _createMonthDate(year: number, month: number, day: number): AXDateTime {\n const monthStart = this.calendarService.create({ year, month, day: 1 }, this.calendar());\n const safeDay = Math.min(day, monthStart.endOf('month').dayOfMonth);\n return this.calendarService.create({ year, month, day: safeDay }, this.calendar());\n }\n\n /**\n * @ignore\n */\n protected _handleMonthSelectChanged(e: AXValueChangedEvent) {\n if (!e.isUserInteraction || !this._viewStartDate) return;\n const month = this._getSelectBoxValue(e);\n if (month == null) return;\n this._navUserInteraction = true;\n this.navTo(this._createMonthDate(this._viewStartDate.year, month, this._viewStartDate.dayOfMonth));\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected _handleYearSelectChanged(e: AXValueChangedEvent) {\n if (!e.isUserInteraction || !this._viewStartDate) return;\n const year = this._getSelectBoxValue(e);\n if (year == null) return;\n this._navUserInteraction = true;\n this.navTo(this._viewStartDate.set('year', year));\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n private _getSelectBoxValue(e: AXValueChangedEvent): number | null {\n const val = e.value;\n if (Array.isArray(val)) return val[0]?.id ?? null;\n if (val && typeof val === 'object') return (val as { id: number }).id ?? null;\n return val != null ? Number(val) : null;\n }\n\n /**\n * Builds the day grid for a single month (no leading/trailing days from adjacent months).\n */\n private _getDayGridRange(current: AXDateTime): { range: AXDateTimeRange; weekCount: number } {\n const monthStart = current.startOf('month');\n const monthEnd = current.endOf('month');\n const daysInMonth = monthEnd.dayOfMonth;\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n const firstDayOffset = (monthStart.weekdayIndex - startsOn + 7) % 7;\n const weekCount = Math.ceil((firstDayOffset + daysInMonth) / 7);\n\n return {\n range: new AXDateTimeRange(monthStart, monthEnd),\n weekCount,\n };\n }\n\n /**\n * @ignore\n */\n private _setDisplayRange(current: AXDateTime): AXDateTimeRange {\n switch (this.activeView) {\n case 'year': {\n const y = current.startOf('year').year;\n const min = y - (y % 10);\n const max = min + 9;\n return new AXDateTimeRange(\n this.calendarService.create(\n {\n year: min,\n month: 1,\n day: 1,\n },\n this.calendarSystem(),\n ),\n this.calendarService.create(\n {\n year: max,\n month: 12,\n day: 28,\n },\n this.calendarSystem(),\n ),\n );\n }\n case 'month':\n return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));\n default:\n return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));\n }\n }\n\n /**\n * @ignore\n */\n private dayView(i: number, applyCellClass: any) {\n const monthAnchor = this._viewStartDate.startOf('month').add('month', i);\n const monthStart = monthAnchor;\n const { range, weekCount } = this._getDayGridRange(monthAnchor);\n const view: AXCalendarView = {\n range,\n slots: [],\n weekCount,\n };\n this.views.push(view);\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n const a = view.range.enumerate('day');\n view.slots = a.map((d) => {\n let selected = false;\n if (this.depth === 'day') {\n selected = this.value && d.equal(this.value, 'day');\n } else if (this.depth === 'month') {\n selected = this.value && d.equal(this.value, 'month');\n } else if (this.depth === 'year') {\n selected = this.value && d.equal(this.value, 'year');\n }\n const r: any = {};\n r.date = d;\n r.text = d.dayOfMonth;\n r.today = d.equal(this._today, 'day');\n r.selected = selected;\n const holidayInfo = this.getHoliday(d);\n r.holiday = this.isHoliday(d) || this.isWeekend(d);\n if (holidayInfo) {\n r.holidayTitle = holidayInfo.title;\n r.holidayColor = holidayInfo.color;\n r.tooltip = holidayInfo.title ?? '';\n }\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'day') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'day') == 1) ||\n this.isDisabled(d);\n //\n // const focused = d.dayOfMonth == this._footPrint.day && d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': true,\n };\n } else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-holiday': r.holiday,\n // 'ax-state-focused': focused,\n };\n if (d.compare(monthStart, 'day') === 0) {\n const columnStart = ((d.weekdayIndex - startsOn + 7) % 7) + 1;\n r.cssClass[`ax-column-start-${columnStart}`] = true;\n }\n if (holidayInfo?.cssClass) {\n holidayInfo.cssClass.split(' ').forEach((c) => {\n if (c) r.cssClass[c] = true;\n });\n }\n }\n if (this.cellClass) applyCellClass(r);\n\n return r;\n });\n }\n\n /**\n * @ignore\n */\n private monthView(i: number, applyCellClass: any) {\n const current = this._viewStartDate.add('year', i);\n const view: AXCalendarView = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('month');\n view.slots = a.map((d) => {\n const r: any = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date' as any, 'MMM');\n r.today = d.equal(this._today, 'month');\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'month') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'month') == 1);\n //\n r.selected = this.value && this.depth == 'month' && d.equal(this.value, 'month');\n //\n const focused = d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n } else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n\n /**\n * @ignore\n */\n private yearView(i: number, applyCellClass: any) {\n const current = this._viewStartDate.add('year', i * 10);\n const view: AXCalendarView = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('year');\n\n view.slots = a.map((d) => {\n const r: any = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date' as any, 'YYYY');\n r.today = d.equal(this._today, 'year');\n r.selected = this.value && this.depth == 'year' && d.equal(this.value, 'year');\n //\n const focused = d.year == this._footPrint.year;\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'year') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'year') == 1);\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n } else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePrevClick() {\n this._navUserInteraction = true;\n this.prev();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected _handleNextClick() {\n this._navUserInteraction = true;\n this.next();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected _handleSlotClick(e: MouseEvent, slot: AXCalendarViewSlot) {\n if (slot.disabled || this.disabled) return;\n //\n this.onSlotClick.emit({\n component: this,\n item: slot.date.date,\n isUserInteraction: true,\n nativeEvent: e,\n });\n //\n if (this.activeView == 'day') {\n this._setDate(slot.date.date);\n } else if (this.activeView == 'month' && this.depth == 'day') {\n this.activeView = 'day';\n this._footPrint.month = this.calendarService.create(slot.date.date, this.calendarSystem()).monthOfYear;\n this.navTo(slot.date);\n } else if (this.activeView == 'month' && this.depth == 'month') {\n this._setDate(slot.date.date);\n } else if (this.activeView == 'year' && (this.depth == 'day' || this.depth == 'month')) {\n this.activeView = 'month';\n this._footPrint.year = this.calendarService.create(slot.date.date, this.calendarSystem()).year;\n this.navTo(slot.date);\n } else if (this.activeView == 'year' && this.depth == 'year') {\n this._setDate(slot.date.date);\n }\n }\n\n /**\n * @ignore\n */\n protected _handleNavClick(e: AXClickEvent | any, view: AXCalendarViewType) {\n this._navUserInteraction = true;\n this.activeView = view;\n this._navUserInteraction = false;\n }\n\n /**\n * Toggles between different calendar views (day → month → year).\n */\n public toggleView() {\n if (this.activeView == 'day') this.activeView = 'month';\n else if (this.activeView == 'month') this.activeView = 'year';\n }\n\n /**\n * @ignore\n */\n protected override internalOptionChanged(e: MXComponentOptionChanged) {\n if (e.name == 'depth' || e.name == 'activeView' || e.name == 'disabledDates' || e.name == 'holidayDates') {\n this.render();\n }\n if (e.name == 'type') {\n if (e.value) {\n this.calendar.set(e.value);\n }\n this._refresh();\n }\n }\n\n /**\n * @ignore\n */\n protected override internalSetValue(value: Date): Date | null {\n if (!value || !this.calendarService.isValidDate(value)) {\n return null;\n }\n const v = this.calendarService.convert(value, this.calendarSystem());\n if (this.isDisabled(v)) {\n return null;\n }\n\n if (this.maxValue && this.calendarService.isValidDate(this.maxValue) && v.isAfter(this.maxValue)) {\n return this.maxValue;\n }\n\n if (this.minValue && this.calendarService.isValidDate(this.minValue) && v.isBefore(this.minValue)) {\n return this.minValue;\n }\n\n return v.date;\n }\n\n /**\n * @ignore\n */\n protected override internalValueChanged(value?: Date) {\n const val = this.calendarService.create(value, this.calendarSystem());\n let viewChanged = false;\n if (\n !this._viewStartDate ||\n val.compare(this.displayRange?.startTime, this.activeView) == -1 ||\n val.compare(this.displayRange?.endTime, this.activeView) == 1\n ) {\n this._viewStartDate = this.calendarService.create(value, this.calendarSystem());\n if (this.minValue && this._viewStartDate.isBefore(this.minValue)) {\n this._viewStartDate = this.calendarService.create(this.minValue, this.calendarSystem());\n }\n viewChanged = true;\n }\n this._footPrint.year = val.year;\n this._footPrint.month = val.monthOfYear;\n this._footPrint.day = val.dayOfMonth;\n\n const oldVal = this.oldValue() ? this.calendarService.create(this.oldValue(), this.calendarSystem()) : null;\n if (\n viewChanged ||\n !oldVal ||\n oldVal.monthOfYear !== val.monthOfYear ||\n oldVal.year !== val.year ||\n oldVal.dayOfMonth !== val.dayOfMonth\n ) {\n this.render();\n }\n this.oldValue.set(value);\n }\n\n /**\n * @ignore\n */\n protected _handleGoToday() {\n this._navUserInteraction = true;\n this._setDate(this._today.date);\n this.goToday();\n this._navUserInteraction = false;\n }\n\n /**\n * Navigates forward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: advances by count months\n * - month view: advances by count years\n * - year view: advances by 10 × count years\n *\n * @returns void\n */\n next() {\n this._navNextPrev(false);\n }\n\n /**\n * Navigates backward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: goes back by count months\n * - month view: goes back by count years\n * - year view: goes back by 10 × count years\n *\n * @returns void\n */\n prev() {\n this._navNextPrev(true);\n }\n\n /**\n * Sets focus to the currently selected calendar slot or the first available slot.\n *\n * @returns void\n */\n override focus() {\n const func = (s: string) => this.getHostElement().querySelector<HTMLDivElement>(s);\n const div = func('.ax-calendar-slots>div.ax-state-selected') || func('.ax-calendar-slots>div');\n div?.focus();\n }\n\n /**\n * @ignore\n */\n private _navNextPrev(prev: boolean) {\n const sign = prev ? -1 : 1;\n if (this.activeView == 'day') this.navTo(this._viewStartDate.add('month', sign * 1 * this.count));\n else if (this.activeView == 'month') this.navTo(this._viewStartDate.add('year', sign * 1 * this.count));\n else this.navTo(this._viewStartDate.add('year', sign * 10 * this.count));\n }\n\n /**\n * Navigates to the current date and emits the navigation event.\n *\n * @returns void\n */\n goToday() {\n this.navTo(this._today);\n }\n\n /**\n * Navigates to a specified date and updates the view.\n *\n * @param date The date to navigate to, which can be a Date object or an AXDateTime instance.\n * @returns void\n */\n navTo(date: Date | AXDateTime) {\n const val = this.calendarService.convert(date, this.calendarSystem());\n this._viewStartDate = val.startOf();\n this.render();\n //to make sure its rendred and displayRange is not null\n if (this.views.length > 0) {\n const vr = this.displayRange;\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: vr.startTime?.date,\n end: vr.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string {\n const _classes = {\n 'ax-state-disabled': this.disabled,\n 'ax-state-readonly': this.readonly,\n [`ax-look-${this.look()}`]: true,\n };\n return Object.entries(_classes)\n .filter((c) => c[1])\n .map((c) => c[0])\n .join(' ');\n }\n\n /**\n * @ignore\n */\n private _setDate(value: Date) {\n if (this.readonly || this.disabled) return;\n this.commitValue(this.calendarService.convert(value, this.calendarSystem()).startOf().date, true);\n }\n\n /**\n * @ignore\n */\n protected isDisabled(date: AXDateTime): boolean {\n if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {\n return this.disabledDates.some((d) => date.equal(d, 'day'));\n } else if (typeof this.disabledDates == 'function') {\n return this.disabledDates(date.date);\n }\n return false;\n }\n\n /**\n * @ignore\n */\n protected isHoliday(date: AXDateTime): boolean {\n const globalHolidays = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));\n const internalHolidays = this.internalHoliday().some((d) => date.equal(d.date, 'day'));\n let localHolidays = false;\n if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {\n localHolidays = this.holidayDates.some((d) => date.equal(d, 'day'));\n } else if (typeof this.holidayDates == 'function') {\n localHolidays = this.holidayDates(date.date);\n }\n return globalHolidays || internalHolidays || localHolidays;\n }\n\n /**\n * @ignore\n */\n protected getHoliday(date: AXDateTime): AXHolidayDate | undefined {\n const globalHoliday = this.calendarService.holidays.find((d) => date.equal(d.date, 'day'));\n const internalHoliday = this.internalHoliday().find((d) => date.equal(d.date, 'day'));\n return globalHoliday || internalHoliday;\n }\n\n /**\n * @ignore\n */\n protected isWeekend(date: AXDateTime): boolean {\n if (this.weekend().length) {\n return this.weekend().includes(date.weekdayIndex);\n }\n const weekend = this.calendarService.resolveCalendar(this.calendarSystem()).weekend;\n return weekend.includes(date.weekdayIndex);\n }\n\n /**\n * @ignore\n */\n @HostListener('keydown', ['$event'])\n _handleOnKeydownEvent(e: KeyboardEvent) {\n //TODO: complete keyboad navigation\n const ignore = () => {\n e.preventDefault();\n e.stopPropagation();\n };\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n if (e.ctrlKey) {\n const moveForward = this.isRtl() ? e.code === 'ArrowLeft' : e.code === 'ArrowRight';\n moveForward ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n } else if (e.code === 'ArrowUp' || e.code === 'ArrowDown') {\n if (e.ctrlKey) {\n e.code === 'ArrowUp' ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n }\n }\n\n /**\n * @ignore\n */\n protected getMonthName(date: AXDateTime, style: 'short' | 'long') {\n const system = this.calendarSystem();\n const monthIndex = this.calendarService.create(date.date, system).monthOfYear - 1;\n return this.monthLabel(system, monthIndex, style);\n }\n\n private monthLabel(system: string, monthIndex0: number, style: 'short' | 'long' = 'short'): string {\n const key = `dateTime.months.${system}.${style}.${monthIndex0}`;\n const translated = this.translateService.translateSync(key);\n if (translated && translated !== key && !translated.startsWith('dateTime.months.')) {\n return translated;\n }\n return this.fallbackMonthName(system, monthIndex0, style);\n }\n\n private fallbackMonthName(system: string, monthIndex0: number, style: 'short' | 'long'): string {\n try {\n const locale = this.localeService.activeProfile().localeInfo.code;\n const intlCalendar = system === 'solar-hijri' ? 'persian' : 'gregory';\n const date =\n system === 'solar-hijri'\n ? this.calendarService.create({ year: 1400, month: monthIndex0 + 1, day: 15 }, system).date\n : new Date(2000, monthIndex0, 15);\n return new Intl.DateTimeFormat(locale, {\n month: style,\n calendar: intlCalendar,\n }).format(date);\n } catch {\n return String(monthIndex0 + 1);\n }\n }\n}","<div class=\"ax-calendar-frame\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-body\">\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\n @switch (activeView) {\n @case ('year') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\" dir=\"ltr\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }} -\n {{ v.range.endTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon ax-next\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !yearCellTemplate }\">\n @for (slot of v.slots; track slot.date.date.getTime()) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (yearCellTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"yearCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { slot: slot } }\"\n >\n </ng-container>\n </div>\n } @else {\n <div>\n {{ slot.text }}\n </div>\n }\n </button>\n }\n </div>\n }\n @case ('month') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\" dir=\"ltr\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button-icon ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !monthCellTemplate }\">\n @for (slot of v.slots; track slot.date.date.getTime()) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (monthCellTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"monthCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { slot: slot } }\"\n >\n </ng-container>\n </div>\n } @else {\n <div\n [title]=\"slot.date | format: 'date' : { calendar: calendarSystem(), format: 'MMMM YYYY' } | async\"\n >\n {{ getMonthName(slot.date, 'short') }}\n </div>\n }\n </button>\n }\n </div>\n }\n @default {\n @if (showNavigation && look() === 'select' && last) {\n <div class=\"ax-calendar-view-header ax-calendar-day-nav\" dir=\"ltr\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <div class=\"ax-calendar-day-nav-center\">\n <ax-select-box\n class=\"ax-calendar-month-select ax-sm\"\n look=\"none\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_monthOptions\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_selectedMonthOption\"\n [isItemTruncated]=\"false\"\n dropdownWidth=\"50\"\n [maxVisibleItems]=\"12\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleMonthSelectChanged($event)\"\n (click)=\"$event.stopPropagation()\"\n ></ax-select-box>\n <ax-select-box\n class=\"ax-calendar-year-select ax-sm\"\n look=\"none\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [dataSource]=\"_yearOptions\"\n textField=\"text\"\n valueField=\"id\"\n [ngModel]=\"_selectedYearOption\"\n [isItemTruncated]=\"false\"\n dropdownWidth=\"40\"\n [maxVisibleItems]=\"10\"\n [itemHeight]=\"32\"\n (onValueChanged)=\"_handleYearSelectChanged($event)\"\n (click)=\"$event.stopPropagation()\"\n ></ax-select-box>\n </div>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n @if (showNavigation && look() === 'classic' && last) {\n <div class=\"ax-calendar-view-header ax-calendar-day-nav\" dir=\"ltr\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'@acorex:common.actions.prev' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <div class=\"ax-calendar-header-info ax-calendar-day-nav-center\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'YYYY' } | async }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'month')\"\n >\n {{ v.range.startTime | format: 'date' : { calendar: calendarSystem(), format: 'MMMM' } | async }}\n </button>\n </div>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\"\n (click)=\"_handleNextClick()\"\n [title]=\"'@acorex:common.actions.next' | translate | async\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n <div class=\"ax-calendar-week\">\n @for (d of weekLayout(); track d) {\n <div>{{ weekdayLabel(d) }}</div>\n }\n </div>\n\n <div\n class=\"ax-calendar-slots ax-calendar-slots-day\"\n [ngClass]=\"{ 'ax-default': !dayCellTemplate }\"\n [style.--ax-calendar-day-rows]=\"v.weekCount ?? 5\"\n >\n @for (slot of v.slots; track slot.date.date.getTime()) {\n <button\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [ngClass]=\"slot.cssClass\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-has-holiday-color]=\"!!slot.holidayColor\"\n [style.--ax-calendar-holiday-color]=\"slot.holidayColor ?? null\"\n (click)=\"_handleSlotClick($event, slot)\"\n [disabled]=\"disabled\"\n [axRipple]\n [axTooltip]=\"slot.tooltip ?? ''\"\n [axTooltipDisabled]=\"!slot.tooltip\"\n [title]=\"\n !slot.tooltip\n ? (slot.date | format: 'date' : { calendar: calendarSystem(), format: 'long' } | async)\n : ''\n \"\n >\n @if (dayCellTemplate) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"dayCellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { slot: slot } }\"\n >\n </ng-container>\n </div>\n } @else {\n <div class=\"ax-calendar-day-slot-content\">\n {{ slot.text }}\n </div>\n }\n </button>\n }\n </div>\n }\n }\n }\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n</div>\n","import {\n AXComponent,\n AXRange,\n AXValuableComponent,\n MXInteractiveComponent,\n MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXCalendarService, AXDateTime } from '@acorex/core/date-time';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n AfterViewInit,\n Component,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport {\n AXCalendarHolidaysLoader,\n AXCalendarNavigationLookType,\n AXCalendarSlotClick,\n MXCalendarBaseComponent,\n} from './calendar.class';\nimport { AXCalendarComponent } from './calendar.component';\n\n@Component({\n selector: 'ax-calendar-range',\n templateUrl: 'calendar-range.component.html',\n styleUrls: ['calendar-range.component.css'],\n encapsulation: ViewEncapsulation.None,\n inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n ],\n outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarRangeComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarRangeComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarRangeComponent },\n ],\n host: {\n '[class.ax-state-disabled]': 'disabled',\n },\n imports: [AXCalendarComponent],\n})\nexport class AXCalendarRangeComponent\n extends classes(MXValueComponent<AXRange<Date>>, MXInteractiveComponent, MXCalendarBaseComponent)\n implements AfterViewInit\n{\n private unsubscriber = inject(AXUnsubscriber);\n\n protected calendar = linkedSignal(() => this.localeService.activeProfile().calendar.system);\n\n /**\n * Day view navigation style passed through to embedded calendars.\n */\n look = input<AXCalendarNavigationLookType>('select');\n\n /**\n * Optional loader for holidays scoped to the visible calendar range.\n */\n holidays = input<AXCalendarHolidaysLoader>();\n\n /**\n * @ignore\n */\n private _calendarService: AXCalendarService = inject(AXCalendarService);\n\n @ViewChild('c1', { static: true })\n private _c1: AXCalendarComponent;\n\n @ViewChild('c2', { static: true })\n private _c2: AXCalendarComponent;\n\n _navText1 = '';\n _navText2 = '';\n\n /**\n * @ignore\n */\n private _navUserInteraction = false;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n this.defaultValue = { from: null, end: null };\n\n this.calendarService.calendarChanges$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this._refreshCalendars();\n });\n\n let previousCalendar = this.localeService.activeProfile().calendar.system;\n\n this.localeService.profileChanged$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n const nextCalendar = this.localeService.activeProfile().calendar.system;\n if (\n previousCalendar !== nextCalendar &&\n (this._calendarService.isValidDate(this.value?.from) || this._calendarService.isValidDate(this.value?.end))\n ) {\n this.commitValue({ from: null, end: null });\n }\n previousCalendar = nextCalendar;\n this._refreshCalendars();\n });\n\n this.typeChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe((value) => {\n this.calendar.set(value);\n this._refreshCalendars();\n });\n\n this.translateService.langChanges$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this._scheduleNavTextSync();\n });\n }\n\n /**\n * @ignore\n */\n private _refreshCalendars() {\n // Defer until embedded calendars finish their own locale/calendar refresh microtasks.\n queueMicrotask(() => {\n queueMicrotask(() => {\n this._ensureCalendarsReady();\n this._syncNav1();\n this.cdr.markForCheck();\n });\n });\n }\n\n /**\n * @ignore\n */\n private _scheduleNavTextSync() {\n queueMicrotask(() => {\n this._syncNavText();\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @ignore\n */\n private _ensureCalendarsReady() {\n const today = this._calendarService.now(this.calendar());\n\n if (!this._c1?.displayRange) {\n this._c1?.navTo(today);\n } else {\n this._c1?.render();\n }\n\n if (!this._c2?.displayRange) {\n const range = this._c1?.displayRange;\n if (!range) {\n return;\n }\n\n const monthStart = range.startTime.startOf('month');\n const view = this._c1.activeView;\n\n if (view === 'day') {\n this._c2?.navTo(monthStart.add('month', 1));\n } else if (view === 'month') {\n this._c2?.navTo(monthStart.add('year', 1));\n } else if (view === 'year') {\n this._c2?.navTo(range.endTime.add('year', 4));\n }\n }\n }\n\n /**\n * @ignore\n */\n protected override ngOnInit(): void {\n super.ngOnInit();\n if (this.type) {\n this.calendar.set(this.type);\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n queueMicrotask(() => {\n this._c1?.render();\n this._syncNav1();\n });\n }\n\n override internalValueChanged(value: any) {\n this._c1.render();\n this._syncNav1();\n }\n\n /**\n * @ignore\n */\n getCellClass = (date: AXDateTime) => {\n if (!this._calendarService.isValidDate(this.value.from)) {\n return null;\n }\n\n const calendar = this.calendar();\n const from = this._calendarService.create(this.value.from, calendar).startOf('day');\n const hasEnd = this._calendarService.isValidDate(this.value.end);\n const end = hasEnd ? this._calendarService.create(this.value.end, calendar).startOf('day') : null;\n const dateDay = date.startOf('day');\n const dateMs = dateDay.date.getTime();\n const fromMs = from.date.getTime();\n const endMs = end?.date.getTime();\n\n let rangeClass: string | null = null;\n if (dateMs === fromMs) {\n rangeClass = 'ax-range-start';\n } else if (endMs != null && dateMs === endMs) {\n rangeClass = 'ax-range-end';\n } else if (endMs != null && dateMs > fromMs && dateMs < endMs) {\n rangeClass = 'ax-range-between';\n }\n\n if (!rangeClass) {\n return null;\n }\n\n if (!hasEnd || !end) {\n return rangeClass;\n }\n\n const weekStart = this.localeService.activeProfile().calendar.week.startsOn;\n const weekEnd = (weekStart + 6) % 7;\n const classes = [rangeClass];\n\n if (rangeClass !== 'ax-range-start' && date.weekdayIndex !== weekStart) {\n classes.push('ax-range-continue-start');\n }\n\n if (rangeClass !== 'ax-range-end') {\n const nextDay = date.add('day', 1);\n const continuesToNextDay =\n date.weekdayIndex !== weekEnd && nextDay.compare(from, 'day') >= 0 && nextDay.compare(end, 'day') <= 0;\n\n if (continuesToNextDay) {\n classes.push('ax-range-continue-end');\n }\n }\n\n return classes.join(' ');\n };\n\n /**\n * @ignore\n */\n protected handleSlotClick(e: AXCalendarSlotClick) {\n this.onSlotClick.emit({\n component: this,\n item: e.item,\n isUserInteraction: true,\n nativeEvent: e,\n });\n\n if (this._c1.activeView !== this.depth) {\n if (e.component === this._c1) {\n this._syncNav1();\n }\n if (e.component === this._c2) {\n this._syncNav2(this._calendarService.create(e.item, this.calendar()));\n }\n this._c1.render();\n this._syncNav1();\n return;\n }\n\n const calendar = this.calendar();\n const clicked = this._calendarService.create(e.item, calendar).startOf('day');\n const hasFrom = this._calendarService.isValidDate(this.value?.from);\n const hasEnd = this._calendarService.isValidDate(this.value?.end);\n let next: AXRange<Date>;\n\n if (!hasFrom || hasEnd) {\n next = { from: clicked.date, end: null };\n } else {\n const fromDate = this._calendarService.create(this.value.from, calendar).startOf('day');\n const dayCompare = clicked.compare(fromDate, 'day');\n\n if (dayCompare < 0) {\n next = { from: clicked.date, end: null };\n } else {\n next = { from: fromDate.date, end: clicked.date };\n }\n }\n\n this.commitValue(next, true);\n this._c1.render();\n this._syncNav1();\n }\n\n /**\n * @ignore\n */\n protected handlePrevClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.prev();\n } else if (view == 'year') {\n this._c1.navTo(d1.add('year', -20));\n }\n this._syncNav1();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected handleNextClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.next();\n } else if (view == 'year') {\n this._c1.navTo(d1.add('year', 20));\n }\n this._syncNav1();\n this._navUserInteraction = false;\n }\n\n /**\n * @ignore\n */\n protected handleNavClick() {\n this._c1.toggleView();\n }\n\n /**\n * @ignore\n */\n private _syncNavText() {\n const view = this._c1?.activeView;\n const d1 = this._c1?.displayRange?.startTime;\n const d2 = this._c2?.displayRange?.startTime;\n\n if (!view || !d1 || !d2) {\n return;\n }\n\n if (view === 'day') {\n this._navText1 = this._formatNavDate(d1);\n this._navText2 = this._formatNavDate(d2);\n } else if (view === 'month' || view === 'year') {\n this._navText1 = String(d1.year);\n this._navText2 = String(d2.year);\n }\n\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n private _formatNavDate(date: AXDateTime): string {\n const system = this.calendar();\n const monthIndex = date.monthOfYear - 1;\n const month = this._monthLabel(system, monthIndex, 'long');\n return `${month} ${date.year}`;\n }\n\n /**\n * @ignore\n */\n private _monthLabel(system: string, monthIndex0: number, style: 'short' | 'long' = 'short'): string {\n const key = `dateTime.months.${system}.${style}.${monthIndex0}`;\n const translated = this.translateService.translateSync(key);\n if (translated && translated !== key && !translated.startsWith('dateTime.months.')) {\n return translated;\n }\n return this._fallbackMonthName(system, monthIndex0, style);\n }\n\n /**\n * @ignore\n */\n private _fallbackMonthName(system: string, monthIndex0: number, style: 'short' | 'long'): string {\n try {\n const locale = this.localeService.activeProfile().localeInfo.code;\n const intlCalendar = system === 'solar-hijri' ? 'persian' : 'gregory';\n const date =\n system === 'solar-hijri'\n ? this._calendarService.create({ year: 1400, month: monthIndex0 + 1, day: 15 }, system).date\n : new Date(2000, monthIndex0, 15);\n return new Intl.DateTimeFormat(locale, {\n month: style,\n calendar: intlCalendar,\n }).format(date);\n } catch {\n return String(monthIndex0 + 1);\n }\n }\n\n /**\n * @ignore\n */\n protected handleNavigate() {\n this._syncNav1();\n\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: this._c1.displayRange.startTime?.date,\n end: this._c2.displayRange.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * @ignore\n */\n protected handleActiveViewChange1() {\n this._c2.activeView = this._c1.activeView;\n this._syncNav1();\n }\n\n /**\n * @ignore\n */\n protected handleActiveViewChange2() {\n if (this._c2.activeView != this._c1.activeView) {\n this._c1.activeView = this._c2.activeView;\n }\n }\n\n /**\n * @ignore\n */\n private _syncNav1() {\n const range = this._c1?.displayRange;\n if (!range) {\n return;\n }\n\n const view = (this._c2.activeView = this._c1.activeView);\n const monthStart = range.startTime.startOf('month');\n\n if (view === 'day') {\n this._c2.navTo(monthStart.add('month', 1));\n } else if (view === 'month') {\n this._c2.navTo(monthStart.add('year', 1));\n } else if (view === 'year') {\n this._c2.navTo(range.endTime.add('year', 4));\n }\n\n this._syncNavText();\n }\n\n /**\n * @ignore\n */\n protected handleCalendar2Navigate() {\n this._syncNavText();\n }\n\n /**\n * @ignore\n */\n private _syncNav2(e: AXDateTime) {\n const view = this._c2.activeView;\n if (view == 'month') {\n this._c1.navTo(e.add('month', -1));\n } else if (view == 'year') {\n this._c1.navTo(e.startOf('year'));\n }\n }\n}\n","<div class=\"ax-calendar-range-header\" dir=\"ltr\"> <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-button-icon pb-4\"\n (click)=\"handlePrevClick()\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-left\"></i>\n </button>\n <div class=\"ax-calendar-header-range-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-calendar-range-nav-label ax-calendar-range-nav-label--start\"\n (click)=\"handleNavClick()\"\n >\n {{ _navText1 }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-calendar-range-nav-label ax-calendar-range-nav-label--end\"\n (click)=\"handleNavClick()\"\n >\n {{ _navText2 }}\n </button>\n </div>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"ax-general-button ax-button-icon pb-4\"\n (click)=\"handleNextClick()\"\n >\n <i class=\"ax-calendar-nav-arrow-icon ax-icon ax-icon-chevron-right\"></i>\n </button>\n</div>\n\n<div class=\"ax-calendar-range-body\">\n <div class=\"ax-calendar-range-panel ax-calendar-range-panel--start\">\n <ax-calendar\n #c1\n [showNavigation]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [cellClass]=\"getCellClass\"\n [type]=\"type\"\n [dayCellTemplate]=\"dayCellTemplate\"\n [monthCellTemplate]=\"monthCellTemplate\"\n [yearCellTemplate]=\"yearCellTemplate\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [depth]=\"depth\"\n [look]=\"look()\"\n [holidays]=\"holidays()\"\n [holidayDates]=\"holidayDates\"\n (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleNavigate()\"\n (activeViewChange)=\"handleActiveViewChange1()\"\n >\n </ax-calendar>\n </div>\n <div class=\"ax-calendar-range-panel ax-calendar-range-panel--end\">\n <ax-calendar\n #c2\n [showNavigation]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [cellClass]=\"getCellClass\"\n [type]=\"type\"\n [dayCellTemplate]=\"dayCellTemplate\"\n [monthCellTemplate]=\"monthCellTemplate\"\n [yearCellTemplate]=\"yearCellTemplate\"\n [minValue]=\"minValue\"\n [maxValue]=\"maxValue\"\n [depth]=\"depth\"\n [look]=\"look()\"\n [holidays]=\"holidays()\"\n [holidayDates]=\"holidayDates\"\n (onSlotClick)=\"handleSlotClick($event)\"\n (onNavigate)=\"handleCalendar2Navigate()\"\n (activeViewChange)=\"handleActiveViewChange2()\"\n >\n </ax-calendar>\n </div>\n</div>\n\n<ng-content select=\"ax-footer\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXCalendarRangeComponent } from './calendar-range.component';\nimport { AXCalendarComponent } from './calendar.component';\n\n@NgModule({\n imports: [AXCalendarComponent, AXCalendarRangeComponent],\n exports: [AXCalendarComponent, AXCalendarRangeComponent],\n})\nexport class AXCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAwBM,SAAU,qBAAqB,CAAC,OAMrC,EAAA;IACC,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI;IAC/F,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM;IAEnG,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI;QAC5F,OAAO,EAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,MAAM;KAC/F;AACH;AAUA;;;AAGG;AACG,MAAO,uBAAwB,SAAQ,mBAAyB,CAAA;AAAG;AAEzE;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,gBAAsB,CAAA;AAAG;AAqB5D,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAD5D,IAAA,WAAA,GAAA;;AAEY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAGzD,IAAA,CAAA,SAAS,GAA0B,UAAU;QAoB7C,IAAA,CAAA,cAAc,GAAG,IAAI;QAGrB,IAAA,CAAA,KAAK,GAAG,CAAC;AAGT,QAAA,IAAA,CAAA,WAAW,GAAsC,IAAI,YAAY,EAAuB;AAGxF,QAAA,IAAA,CAAA,UAAU,GAA0C,IAAI,YAAY,EAA2B;AAG/F,QAAA,IAAA,CAAA,gBAAgB,GAAqC,IAAI,YAAY,EAAsB;QAEnF,IAAA,CAAA,WAAW,GAAuB,KAAK;AAgBxC,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU;AAsBpE,QAAA,IAAA,CAAA,WAAW,GAAsC,IAAI,YAAY,EAAuB;QAEhF,IAAA,CAAA,MAAM,GAAwB,KAAK;AAoB3C,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ;AA6B7D,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ;AA6B7D,QAAA,IAAA,CAAA,mBAAmB,GAA0C,IAAI,YAAY,EAA2B;AAYxG,QAAA,IAAA,CAAA,kBAAkB,GAAyC,IAAI,YAAY,EAA0B;AAYtG,IAAA;AA7IC,IAAA,IACW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;IACA,IAAW,UAAU,CAAC,CAAqB,EAAA;QACzC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;AAOA;;AAEG;AACH,IAAA,IACW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;IACA,IAAW,IAAI,CAAC,CAAS,EAAA;QACvB,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;AAMA,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACpB;IACA,IAAW,KAAK,CAAC,CAAsB,EAAA;QACrC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AACvB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,OAAO,CAAC;YACV,CAAC;YACD,aAAa,EAAE,MAAK;gBAClB,IAAI,CAAC,MAAM,EAAE;YACf,CAAC;AACF,SAAA,CAAC;IACJ;AAMA,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAW,QAAQ,CAAC,CAAO,EAAA;QACzB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACjD,IAAI,CAAC,SAAS,CAAC;AACb,gBAAA,IAAI,EAAE,UAAU;gBAChB,KAAK;gBACL,aAAa,EAAE,MAAK;oBAClB,IAAI,CAAC,MAAM,EAAE;gBACf,CAAC;AACF,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,SAAS,CAAC;AACb,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,MAAK;oBAClB,IAAI,CAAC,MAAM,EAAE;gBACf,CAAC;AACF,aAAA,CAAC;QACJ;IACF;AAMA,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAW,QAAQ,CAAC,CAAO,EAAA;QACzB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACjD,IAAI,CAAC,SAAS,CAAC;AACb,gBAAA,IAAI,EAAE,UAAU;gBAChB,KAAK;gBACL,aAAa,EAAE,MAAK;oBAClB,IAAI,CAAC,MAAM,EAAE;gBACf,CAAC;AACF,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,SAAS,CAAC;AACb,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,MAAK;oBAClB,IAAI,CAAC,MAAM,EAAE;gBACf,CAAC;AACF,aAAA,CAAC;QACJ;IACF;AAMA,IAAA,IACW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC5B;IACA,IAAW,aAAa,CAAC,CAA0B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACrD;AAMA,IAAA,IACW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC3B;IACA,IAAW,YAAY,CAAC,CAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACpD;AAEA,IAAA,MAAM,KAAU;8GArLL,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;sBAME;;sBAOA;;sBAGA;;sBAEA;;sBAEA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAIA;;sBAcA;;sBAQA;;sBAcA;;sBAIA;;sBAkBA;;sBAIA;;sBAyBA;;sBAIA;;sBAyBA;;sBAIA;;sBAQA;;sBAIA;;AAWI,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc;AACrG,MAAM,gBAAgB,GAAG;IAC9B,aAAa;IACb,YAAY;IACZ,qBAAqB;IACrB,oBAAoB;IACpB,YAAY;;;AC/Nd;;;;AAIG;AAwEG,MAAO,mBAAoB,SAAQ,OAAO,EAC9C,gBAA6B,GAC7B,sBAAsB,EACtB,uBAAuB,CACxB,CAAA;AA2CW,IAAA,YAAY,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC;AAC5F,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA,gCAAA,EAAmC,KAAK,CAAA,CAAE,CAAC;AAC7F,QAAA,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,UAAU,CAAC,MAAM,IAAI,WAAW,EAAE;AACpC,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA,+BAAA,EAAkC,KAAK,CAAA,CAAE,CAAC;QAC3F,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACpE;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC7B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAClE,YAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5F;AAEA,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAC9G;AA6DA,IAAA,cAAc;AA0Bd;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IAC9E;AAEA;;AAEG;IACK,gBAAgB,GAAA;QACtB,cAAc,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACvC;AAEA;;AAEG;IACK,QAAQ,GAAA;QACd,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;IACvC;AAEA;;AAEG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAE3C,QAAA,KAAK,EAAE;AAnLD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;QAE/C,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,EAAE;oFAAC;QAC7B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAW,EAAE;qFAAC;AAE9B;;;;AAIG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAA+B,QAAQ;iFAAC;AAEpD;;;;AAIG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAsB,EAAE;sFAAC;AAE1C;;;AAGG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAA4B;AAEzB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;qFAAC;;AAGjF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;2FAAC;;AAG7D,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,OAAO,MAAM;YACf;AACA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;YAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;uFAAC;AA0BF;;AAEG;AACO,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAOjF;;AAEG;QACK,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAEnC;;AAEG;AACK,QAAA,IAAA,CAAA,UAAU,GAAG;AACnB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,GAAG,EAAE,IAAI;SACV;AAED;;AAEG;QACO,IAAA,CAAA,KAAK,GAAqB,EAAE;AAEtC;;AAEG;QACO,IAAA,CAAA,aAAa,GAAmC,EAAE;AAE5D;;AAEG;QACO,IAAA,CAAA,YAAY,GAAmC,EAAE;AAE3D;;;AAGG;QACO,IAAA,CAAA,oBAAoB,GAAwC,IAAI;AAE1E;;AAEG;QACO,IAAA,CAAA,mBAAmB,GAAwC,IAAI;AAEzE;;AAEG;QACK,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAc,IAAI;qFAAC;QAEpC,IAAA,CAAA,eAAe,GAAG,MAAM,CAAkB,EAAE;4FAAC;QAE7C,IAAA,CAAA,aAAa,GAAG,MAAM,CAAgB,IAAI;0FAAC;AAEnD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,MAAK;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;YACrC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE;AAEhD,YAAA,MAAM,YAAY,GAChB,IAAI,CAAC,UAAU,KAAK;AAClB,kBAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;kBAC5D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;AAChD,YAAA,MAAM,SAAS,GAAwB;AACrC,gBAAA,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI;AACjC,gBAAA,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI;aAC/B;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AACvB,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAClC,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,CAAC,CAAC;YACJ;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAyB,CAAC;gBACnD,IAAI,CAAC,MAAM,EAAE;YACf;QACF,CAAC;2FAAC;AA+BA,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;YACxF,IAAI,CAAC,MAAM,EAAE;AACf,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;YACvF,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;YACpF,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACtE,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAO,KAAI;YACxC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3E,IAAI,CAAC,MAAM,EAAE;YACf;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACgB,QAAQ,GAAA;QACzB,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B;QACA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB;AAAO,iBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC7E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YACrE;iBAAO;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB;QACF;IACF;AAEA;;AAEG;IACM,MAAM,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;QAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QAC3G,MAAM,cAAc,GAAG,CAAC,IAAwB,EAAE,YAAiB,IAAI,CAAC,SAAS,KAAI;YACnF,QAAQ,OAAO,SAAS;AACtB,gBAAA,KAAK,QAAQ;oBACX,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC9D;AACF,gBAAA,KAAK,QAAQ;oBACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;oBACvC;AACF,gBAAA,KAAK,UAAU;oBACb,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1C;;AAEN,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,QAAQ,IAAI,CAAC,UAAU;AACrB,gBAAA,KAAK,KAAK;AACR,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC;oBAC/B;AACF,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;oBACjC;AACF,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC;oBAChC;;QAEN;QACA,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA;;AAEG;IACK,oBAAoB,GAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AAE1B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE;QAC1C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;YACzD,EAAE,EAAE,CAAC,GAAG,CAAC;YACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACvC,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AACtC,QAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC;YACjD,aAAa;AACb,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI;AACjF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,KAAK,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW;AAC/C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI;QACvC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI;AACtF,YAAA,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI;AACjF,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;SACrB;IACH;AAEQ,IAAA,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAA;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;QACnE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpF;AAEA;;AAEG;AACO,IAAA,yBAAyB,CAAC,CAAsB,EAAA;QACxD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,IAAI,IAAI;YAAE;AACnB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;AACO,IAAA,wBAAwB,CAAC,CAAsB,EAAA;QACvD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI;YAAE;AAClB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;AACK,IAAA,kBAAkB,CAAC,CAAsB,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK;AACnB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI;AACjD,QAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAQ,GAAsB,CAAC,EAAE,IAAI,IAAI;AAC7E,QAAA,OAAO,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;IACzC;AAEA;;AAEG;AACK,IAAA,gBAAgB,CAAC,OAAmB,EAAA;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AACvC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC1E,QAAA,MAAM,cAAc,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC;AACnE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,WAAW,IAAI,CAAC,CAAC;QAE/D,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC;YAChD,SAAS;SACV;IACH;AAEA;;AAEG;AACK,IAAA,gBAAgB,CAAC,OAAmB,EAAA;AAC1C,QAAA,QAAQ,IAAI,CAAC,UAAU;YACrB,KAAK,MAAM,EAAE;gBACX,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI;gBACtC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,gBAAA,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;gBACnB,OAAO,IAAI,eAAe,CACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CACzB;AACE,oBAAA,IAAI,EAAE,GAAG;AACT,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,GAAG,EAAE,CAAC;iBACP,EACD,IAAI,CAAC,cAAc,EAAE,CACtB,EACD,IAAI,CAAC,eAAe,CAAC,MAAM,CACzB;AACE,oBAAA,IAAI,EAAE,GAAG;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,GAAG,EAAE,EAAE;AACR,iBAAA,EACD,IAAI,CAAC,cAAc,EAAE,CACtB,CACF;YACH;AACA,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAA;AACE,gBAAA,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;IAElF;AAEA;;AAEG;IACK,OAAO,CAAC,CAAS,EAAE,cAAmB,EAAA;AAC5C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,WAAW;AAC9B,QAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;AAC/D,QAAA,MAAM,IAAI,GAAmB;YAC3B,KAAK;AACL,YAAA,KAAK,EAAE,EAAE;YACT,SAAS;SACV;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;QAC1E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvB,IAAI,QAAQ,GAAG,KAAK;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;YACrD;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;AACjC,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;YACvD;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE;AAChC,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YACtD;YACA,MAAM,CAAC,GAAQ,EAAE;AACjB,YAAA,CAAC,CAAC,IAAI,GAAG,CAAC;AACV,YAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU;AACrB,YAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACrC,YAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAClD,IAAI,WAAW,EAAE;AACf,gBAAA,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK;AAClC,gBAAA,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK;gBAClC,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACrC;AACA,YAAA,CAAC,CAAC,QAAQ;AACR,gBAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACvD,qBAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACvD,oBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;;;;AAIpB,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,CAAC,CAAC,QAAQ,GAAG;AACX,oBAAA,mBAAmB,EAAE,IAAI;iBAC1B;YACH;iBAAO;gBACL,CAAC,CAAC,QAAQ,GAAG;oBACX,gBAAgB,EAAE,CAAC,CAAC,KAAK;oBACzB,mBAAmB,EAAE,CAAC,CAAC,QAAQ;oBAC/B,kBAAkB,EAAE,CAAC,CAAC,OAAO;;iBAE9B;gBACD,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AACtC,oBAAA,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7D,CAAC,CAAC,QAAQ,CAAC,CAAA,gBAAA,EAAmB,WAAW,CAAA,CAAE,CAAC,GAAG,IAAI;gBACrD;AACA,gBAAA,IAAI,WAAW,EAAE,QAAQ,EAAE;AACzB,oBAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC5C,wBAAA,IAAI,CAAC;AAAE,4BAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;AAC7B,oBAAA,CAAC,CAAC;gBACJ;YACF;YACA,IAAI,IAAI,CAAC,SAAS;gBAAE,cAAc,CAAC,CAAC,CAAC;AAErC,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,SAAS,CAAC,CAAS,EAAE,cAAmB,EAAA;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD,QAAA,MAAM,IAAI,GAAmB;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrC,YAAA,KAAK,EAAE,EAAE;SACV;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvB,MAAM,CAAC,GAAQ,EAAE;AACjB,YAAA,CAAC,CAAC,IAAI,GAAG,CAAC;AACV,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,MAAa,EAAE,KAAK,CAAC;AAC3D,YAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;;AAEvC,YAAA,CAAC,CAAC,QAAQ;AACR,gBAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,qBAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;YAE3D,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;;YAEhF,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI;;AAExF,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,CAAC,CAAC,QAAQ,GAAG;oBACX,mBAAmB,EAAE,CAAC,CAAC,QAAQ;iBAChC;YACH;iBAAO;gBACL,CAAC,CAAC,QAAQ,GAAG;oBACX,gBAAgB,EAAE,CAAC,CAAC,KAAK;oBACzB,mBAAmB,EAAE,CAAC,CAAC,QAAQ;AAC/B,oBAAA,kBAAkB,EAAE,OAAO;iBAC5B;YACH;YACA,cAAc,CAAC,CAAC,CAAC;AACjB,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,QAAQ,CAAC,CAAS,EAAE,cAAmB,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AACvD,QAAA,MAAM,IAAI,GAAmB;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrC,YAAA,KAAK,EAAE,EAAE;SACV;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAEtC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvB,MAAM,CAAC,GAAQ,EAAE;AACjB,YAAA,CAAC,CAAC,IAAI,GAAG,CAAC;AACV,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,MAAa,EAAE,MAAM,CAAC;AAC5D,YAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;YACtC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;;YAE9E,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI;;AAE9C,YAAA,CAAC,CAAC,QAAQ;AACR,gBAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACxD,qBAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;AAE1D,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,CAAC,CAAC,QAAQ,GAAG;oBACX,mBAAmB,EAAE,CAAC,CAAC,QAAQ;iBAChC;YACH;iBAAO;gBACL,CAAC,CAAC,QAAQ,GAAG;oBACX,gBAAgB,EAAE,CAAC,CAAC,KAAK;oBACzB,mBAAmB,EAAE,CAAC,CAAC,QAAQ;AAC/B,oBAAA,kBAAkB,EAAE,OAAO;iBAC5B;YACH;YACA,cAAc,CAAC,CAAC,CAAC;AACjB,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACO,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;IACO,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;IACO,gBAAgB,CAAC,CAAa,EAAE,IAAwB,EAAA;AAChE,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE;;AAEpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;;AAEF,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;AAC5D,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,WAAW;AACtG,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE;YAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;aAAO,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE;AACtF,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI;AAC9F,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE;YAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;IACF;AAEA;;AAEG;IACO,eAAe,CAAC,CAAqB,EAAE,IAAwB,EAAA;AACvE,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;AAClD,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;IAC/D;AAEA;;AAEG;AACgB,IAAA,qBAAqB,CAAC,CAA2B,EAAA;QAClE,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,eAAe,IAAI,CAAC,CAAC,IAAI,IAAI,cAAc,EAAE;YACxG,IAAI,CAAC,MAAM,EAAE;QACf;AACA,QAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5B;YACA,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;AAEA;;AAEG;AACgB,IAAA,gBAAgB,CAAC,KAAW,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AACtD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACpE,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACtB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAChG,OAAO,IAAI,CAAC,QAAQ;QACtB;QAEA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjG,OAAO,IAAI,CAAC,QAAQ;QACtB;QAEA,OAAO,CAAC,CAAC,IAAI;IACf;AAEA;;AAEG;AACgB,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAClD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QACrE,IAAI,WAAW,GAAG,KAAK;QACvB,IACE,CAAC,IAAI,CAAC,cAAc;AACpB,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChE,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAC7D;AACA,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/E,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;YACzF;YACA,WAAW,GAAG,IAAI;QACpB;QACA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU;AAEpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI;AAC3G,QAAA,IACE,WAAW;AACX,YAAA,CAAC,MAAM;AACP,YAAA,MAAM,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;AACtC,YAAA,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;AACxB,YAAA,MAAM,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,EACpC;YACA,IAAI,CAAC,MAAM,EAAE;QACf;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEA;;AAEG;IACO,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;;;;;;;;AASG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;AAEA;;;;;;;;;AASG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;AAEA;;;;AAIG;IACM,KAAK,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAiB,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,0CAA0C,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC;QAC9F,GAAG,EAAE,KAAK,EAAE;IACd;AAEA;;AAEG;AACK,IAAA,YAAY,CAAC,IAAa,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5F,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;YAClG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E;AAEA;;;;AAIG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB;AAEA;;;;;AAKG;AACH,IAAA,KAAK,CAAC,IAAuB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE;QACnC,IAAI,CAAC,MAAM,EAAE;;QAEb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,gBAAA,SAAS,EAAE,IAAI;gBACf,iBAAiB,EAAE,IAAI,CAAC,mBAAmB;AAC3C,gBAAA,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI;AACzB,gBAAA,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI;AACrB,gBAAA,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AACnC,aAAA,CAAC;QACJ;IACF;AAEA;;AAEG;AACH,IAAA,IACY,WAAW,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG;YACf,mBAAmB,EAAE,IAAI,CAAC,QAAQ;YAClC,mBAAmB,EAAE,IAAI,CAAC,QAAQ;YAClC,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;SACjC;AACD,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ;aAC3B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACf,IAAI,CAAC,GAAG,CAAC;IACd;AAEA;;AAEG;AACK,IAAA,QAAQ,CAAC,KAAW,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACnG;AAEA;;AAEG;AACO,IAAA,UAAU,CAAC,IAAgB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D;AAAO,aAAA,IAAI,OAAO,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE;YAClD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;AACO,IAAA,SAAS,CAAC,IAAgB,EAAA;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3F,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtF,IAAI,aAAa,GAAG,KAAK;AACzB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;YACrE,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrE;AAAO,aAAA,IAAI,OAAO,IAAI,CAAC,YAAY,IAAI,UAAU,EAAE;YACjD,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C;AACA,QAAA,OAAO,cAAc,IAAI,gBAAgB,IAAI,aAAa;IAC5D;AAEA;;AAEG;AACO,IAAA,UAAU,CAAC,IAAgB,EAAA;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1F,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrF,OAAO,aAAa,IAAI,eAAe;IACzC;AAEA;;AAEG;AACO,IAAA,SAAS,CAAC,IAAgB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;YACzB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;QACnD;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO;QACnF,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5C;AAEA;;AAEG;AAEH,IAAA,qBAAqB,CAAC,CAAgB,EAAA;;QAEpC,MAAM,MAAM,GAAG,MAAK;YAClB,CAAC,CAAC,cAAc,EAAE;YAClB,CAAC,CAAC,eAAe,EAAE;AACrB,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;AACrD,YAAA,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY;AACnF,gBAAA,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;gBACvC,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,KAAK,EAAE;gBACd,CAAC,EAAE,EAAE,CAAC;YACR;AACA,YAAA,MAAM,EAAE;QACV;AAAO,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;AACzD,YAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,gBAAA,CAAC,CAAC,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;gBAChD,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,KAAK,EAAE;gBACd,CAAC,EAAE,EAAE,CAAC;YACR;AACA,YAAA,MAAM,EAAE;QACV;IACF;AAEA;;AAEG;IACO,YAAY,CAAC,IAAgB,EAAE,KAAuB,EAAA;AAC9D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;AACpC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,WAAW,GAAG,CAAC;QACjF,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;IACnD;AAEQ,IAAA,UAAU,CAAC,MAAc,EAAE,WAAmB,EAAE,QAA0B,OAAO,EAAA;QACvF,MAAM,GAAG,GAAG,CAAA,gBAAA,EAAmB,MAAM,IAAI,KAAK,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3D,QAAA,IAAI,UAAU,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;AAClF,YAAA,OAAO,UAAU;QACnB;QACA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;IAC3D;AAEQ,IAAA,iBAAiB,CAAC,MAAc,EAAE,WAAmB,EAAE,KAAuB,EAAA;AACpF,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,IAAI;AACjE,YAAA,MAAM,YAAY,GAAG,MAAM,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS;AACrE,YAAA,MAAM,IAAI,GACR,MAAM,KAAK;kBACP,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;kBACrF,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;AACrC,YAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACrC,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,YAAY;AACvB,aAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACjB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QAChC;IACF;8GA/4BW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EA1BnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,mBAAmB;AACjC,aAAA;YACD,cAAc;AACd,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE;SAC3D,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5GH,mraAwSA,u9tBD1LI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,6FAGjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oBAAoB,0qBACpB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EANlB,SAAS,yCACT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvE/B,SAAS;+BACE,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EACvC;wBACN,KAAK;wBACL,UAAU;wBACV,OAAO;wBACP,MAAM;wBACN,UAAU;wBACV,OAAO;wBACP,YAAY;wBACZ,UAAU;wBACV,UAAU;wBACV,eAAe;wBACf,cAAc;wBACd,MAAM;wBACN,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,WAAW;wBACX,gBAAgB;wBAChB,OAAO;wBACP,MAAM;wBACN,IAAI;qBACL,EAAA,OAAA,EACQ;wBACP,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,QAAQ;wBACR,SAAS;wBACT,aAAa;wBACb,YAAY;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,YAAY;wBACZ,aAAa;wBACb,aAAa;qBACd,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA,mBAAqB;AACjC,yBAAA;wBACD,cAAc;AACd,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,qBAAqB,EAAE;qBAC3D,EAAA,OAAA,EACQ;wBACP,OAAO;wBACP,gBAAgB;wBAChB,iBAAiB;wBACjB,SAAS;wBACT,gBAAgB;wBAChB,cAAc;wBACd,gBAAgB;wBAChB,oBAAoB;wBACpB,WAAW;wBACX,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,mraAAA,EAAA,MAAA,EAAA,CAAA,+5tBAAA,CAAA,EAAA;;sBA8wBA,WAAW;uBAAC,OAAO;;sBAuEnB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEx3B/B,MAAO,wBACX,SAAQ,OAAO,EAAC,gBAA+B,GAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;AAoCjG;;AAEG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AArCD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAEnC,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;qFAAC;AAE3F;;AAEG;QACH,IAAA,CAAA,IAAI,GAAG,KAAK,CAA+B,QAAQ;iFAAC;AAEpD;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAA4B;AAE5C;;AAEG;AACK,QAAA,IAAA,CAAA,gBAAgB,GAAsB,MAAM,CAAC,iBAAiB,CAAC;QAQvE,IAAA,CAAA,SAAS,GAAG,EAAE;QACd,IAAA,CAAA,SAAS,GAAG,EAAE;AAEd;;AAEG;QACK,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAqHnC;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,IAAgB,KAAI;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACvD,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AACnF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChE,YAAA,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI;YACjG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YAEjC,IAAI,UAAU,GAAkB,IAAI;AACpC,YAAA,IAAI,MAAM,KAAK,MAAM,EAAE;gBACrB,UAAU,GAAG,gBAAgB;YAC/B;iBAAO,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC5C,UAAU,GAAG,cAAc;YAC7B;AAAO,iBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE;gBAC7D,UAAU,GAAG,kBAAkB;YACjC;YAEA,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;AACnB,gBAAA,OAAO,UAAU;YACnB;AAEA,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;YAC3E,MAAM,OAAO,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC;AACnC,YAAA,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC;YAE5B,IAAI,UAAU,KAAK,gBAAgB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AACtE,gBAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC;YACzC;AAEA,YAAA,IAAI,UAAU,KAAK,cAAc,EAAE;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC,gBAAA,MAAM,kBAAkB,GACtB,IAAI,CAAC,YAAY,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;gBAExG,IAAI,kBAAkB,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;gBACvC;YACF;AAEA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC;AAnKC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAE7C,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;YAC5F,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;AAEzE,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;AACzF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM;YACvE,IACE,gBAAgB,KAAK,YAAY;iBAChC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAC3G;AACA,gBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC7C;YACA,gBAAgB,GAAG,YAAY;YAC/B,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3E,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;YACzF,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,iBAAiB,GAAA;;QAEvB,cAAc,CAAC,MAAK;YAClB,cAAc,CAAC,MAAK;gBAClB,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,oBAAoB,GAAA;QAC1B,cAAc,CAAC,MAAK;YAClB,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,qBAAqB,GAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE;QACpB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY;YACpC,IAAI,CAAC,KAAK,EAAE;gBACV;YACF;YAEA,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AACnD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;AAEhC,YAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7C;AAAO,iBAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAC3B,gBAAA,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC5C;AAAO,iBAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AAC1B,gBAAA,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/C;QACF;IACF;AAEA;;AAEG;IACgB,QAAQ,GAAA;QACzB,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B;IACF;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACJ;AAES,IAAA,oBAAoB,CAAC,KAAU,EAAA;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,IAAI,CAAC,SAAS,EAAE;IAClB;AAyDA;;AAEG;AACO,IAAA,eAAe,CAAC,CAAsB,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;QAEF,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,EAAE;YACtC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE;YAClB;YACA,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,EAAE;AAC5B,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvE;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACjE,QAAA,IAAI,IAAmB;AAEvB,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE;AACtB,YAAA,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1C;aAAO;YACL,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YACvF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;AAEnD,YAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAClB,gBAAA,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;YAC1C;iBAAO;AACL,gBAAA,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE;YACnD;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA;;AAEG;IACO,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS;QAC1C,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACjB;AAAO,aAAA,IAAI,IAAI,IAAI,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACrC;QACA,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;IACO,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS;QAC1C,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACjB;AAAO,aAAA,IAAI,IAAI,IAAI,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpC;QACA,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;AAEA;;AAEG;IACO,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;IACvB;AAEA;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS;QAE5C,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C;aAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE;YAC9C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QAClC;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA;;AAEG;AACK,IAAA,cAAc,CAAC,IAAgB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC9B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;AAC1D,QAAA,OAAO,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE;IAChC;AAEA;;AAEG;AACK,IAAA,WAAW,CAAC,MAAc,EAAE,WAAmB,EAAE,QAA0B,OAAO,EAAA;QACxF,MAAM,GAAG,GAAG,CAAA,gBAAA,EAAmB,MAAM,IAAI,KAAK,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3D,QAAA,IAAI,UAAU,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;AAClF,YAAA,OAAO,UAAU;QACnB;QACA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;IAC5D;AAEA;;AAEG;AACK,IAAA,kBAAkB,CAAC,MAAc,EAAE,WAAmB,EAAE,KAAuB,EAAA;AACrF,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,IAAI;AACjE,YAAA,MAAM,YAAY,GAAG,MAAM,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS;AACrE,YAAA,MAAM,IAAI,GACR,MAAM,KAAK;kBACP,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;kBACtF,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;AACrC,YAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACrC,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,YAAY;AACvB,aAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACjB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QAChC;IACF;AAEA;;AAEG;IACO,cAAc,GAAA;QACtB,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE,IAAI,CAAC,mBAAmB;YAC3C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI;YAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI;AACxC,YAAA,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AACnC,SAAA,CAAC;IACJ;AAEA;;AAEG;IACO,uBAAuB,GAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;QACzC,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA;;AAEG;IACO,uBAAuB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;QAC3C;IACF;AAEA;;AAEG;IACK,SAAS,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY;QACpC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AAEA,QAAA,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACxD,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAEnD,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5C;AAAO,aAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3C;AAAO,aAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C;QAEA,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA;;AAEG;IACO,uBAAuB,GAAA;QAC/B,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA;;AAEG;AACK,IAAA,SAAS,CAAC,CAAa,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;AAChC,QAAA,IAAI,IAAI,IAAI,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC;AAAO,aAAA,IAAI,IAAI,IAAI,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC;IACF;8GA9aW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EAlBxB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,wBAAwB;AACtC,aAAA;YACD,cAAc;AACd,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;SAChE,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/EH,mvFAsFA,kidDHY,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAElB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAxDpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,aAAA,EAGd,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAC7B;wBACN,KAAK;wBACL,UAAU;wBACV,OAAO;wBACP,MAAM;wBACN,UAAU;wBACV,OAAO;wBACP,YAAY;wBACZ,UAAU;wBACV,UAAU;wBACV,eAAe;wBACf,cAAc;wBACd,MAAM;wBACN,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,WAAW;wBACX,gBAAgB;qBACjB,EAAA,OAAA,EACQ;wBACP,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,QAAQ;wBACR,SAAS;wBACT,aAAa;wBACb,YAAY;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,YAAY;wBACZ,aAAa;qBACd,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA,wBAA0B;AACtC,yBAAA;wBACD,cAAc;AACd,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,0BAA0B,EAAE;qBAChE,EAAA,IAAA,EACK;AACJ,wBAAA,2BAA2B,EAAE,UAAU;qBACxC,EAAA,OAAA,EACQ,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,mvFAAA,EAAA,MAAA,EAAA,CAAA,0+cAAA,CAAA,EAAA;;sBAyB7B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAGhC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEvGtB,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,mBAAmB,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7C,mBAAmB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;+GAE5C,gBAAgB,EAAA,OAAA,EAAA,CAHjB,mBAAmB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAG5C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;AACxD,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;AACzD,iBAAA;;;ACPD;;AAEG;;;;"}
|