@spartan-ng/brain 0.0.1-alpha.697 → 0.0.1-alpha.699
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.
|
@@ -1166,7 +1166,10 @@ class BrnCalendarRange {
|
|
|
1166
1166
|
if (!start || !end) {
|
|
1167
1167
|
return false;
|
|
1168
1168
|
}
|
|
1169
|
-
return this._dateAdapter.isAfter(date, start) &&
|
|
1169
|
+
return (this._dateAdapter.isAfter(date, start) &&
|
|
1170
|
+
this._dateAdapter.isBefore(date, end) &&
|
|
1171
|
+
!this._dateAdapter.isSameDay(date, start) &&
|
|
1172
|
+
!this._dateAdapter.isSameDay(date, end));
|
|
1170
1173
|
}
|
|
1171
1174
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnCalendarRange, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1172
1175
|
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.17", type: BrnCalendarRange, isStandalone: true, selector: "[brnCalendarRange]", inputs: { highlightDays: { classPropertyName: "highlightDays", publicName: "highlightDays", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dateDisabled: { classPropertyName: "dateDisabled", publicName: "dateDisabled", isSignal: true, isRequired: false, transformFunction: null }, weekStartsOn: { classPropertyName: "weekStartsOn", publicName: "weekStartsOn", isSignal: true, isRequired: false, transformFunction: null }, defaultFocusedDate: { classPropertyName: "defaultFocusedDate", publicName: "defaultFocusedDate", isSignal: true, isRequired: false, transformFunction: null }, startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange" }, providers: [provideBrnCalendar(BrnCalendarRange)], queries: [{ propertyName: "header", first: true, predicate: BrnCalendarHeader, descendants: true, isSignal: true }, { propertyName: "_cells", predicate: BrnCalendarCellButton, descendants: true, isSignal: true }], ngImport: i0 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-calendar.mjs","sources":["../../../../libs/brain/calendar/src/lib/brn-calendar.token.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell-button.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-header.ts","../../../../libs/brain/calendar/src/lib/i18n/calendar-i18n.ts","../../../../libs/brain/calendar/src/lib/brn-calendar.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-grid.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-month-select.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-next-button.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-previous-button.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-week.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-weekday.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-year-select.ts","../../../../libs/brain/calendar/src/lib/mode/brn-calendar-multiple.ts","../../../../libs/brain/calendar/src/lib/mode/brn-calendar-range.ts","../../../../libs/brain/calendar/src/index.ts","../../../../libs/brain/calendar/src/spartan-ng-brain-calendar.ts"],"sourcesContent":["import {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype Signal,\n\ttype Type,\n\ttype WritableSignal,\n} from '@angular/core';\nimport type { BrnCalendarHeader } from './brn-calendar-header';\n\nexport interface BrnCalendarBase<T> {\n\tisSelected: (date: T) => boolean;\n\tselectDate: (date: T) => void;\n\n\tconstrainDate: (date: T) => T;\n\tisDateDisabled: (date: T) => boolean;\n\tsetFocusedDate: (date: T) => void;\n\n\tisStartOfRange: (date: T) => boolean;\n\tisEndOfRange: (date: T) => boolean;\n\tisBetweenRange: (date: T) => boolean;\n\n\tdisabled: Signal<boolean>;\n\tfocusedDate: WritableSignal<T>;\n\theader: Signal<BrnCalendarHeader | undefined>;\n\tdays: Signal<T[]>;\n\thighlightDays: InputSignal<T[]>;\n}\n\nexport const BrnCalendarToken = new InjectionToken<BrnCalendarBase<unknown>>('BrnCalendarToken');\n\nexport function provideBrnCalendar<T>(instance: Type<BrnCalendarBase<T>>): ExistingProvider {\n\treturn { provide: BrnCalendarToken, useExisting: instance };\n}\n\n/**\n * Inject the calendar component.\n */\nexport function injectBrnCalendar<T>(): BrnCalendarBase<T> {\n\treturn inject(BrnCalendarToken) as BrnCalendarBase<T>;\n}\n","import { computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: 'button[brnCalendarCellButton]',\n\thost: {\n\t\trole: 'gridcell',\n\t\t'[tabindex]': 'focusable() ? 0 : -1',\n\t\ttype: 'button',\n\t\t'[attr.data-outside]': \"!selected() && outside() && (!end() && !start())? '' : null\",\n\t\t'[attr.data-today]': \"today() && !selected() ? '' : null\",\n\t\t'[attr.data-selected]': \"selected() ? '' : null\",\n\t\t'[attr.data-disabled]': \"disabled() ? '' : null\",\n\t\t'[attr.aria-selected]': \"selected() ? 'true' : null\",\n\t\t'[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n\t\t'[attr.data-range-start]': 'start() ? \"\" : null',\n\t\t'[attr.data-range-end]': 'end() ? \"\" : null',\n\t\t'[attr.data-highlighted]': 'highlighted() ? \"\" : null',\n\t\t'[attr.data-range-between]': 'betweenRange() ? \"\" : null',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': '_calendar.selectDate(date())',\n\t\t'(keydown.arrowLeft)': 'focusPrevious($event)',\n\t\t'(keydown.arrowRight)': 'focusNext($event)',\n\t\t'(keydown.arrowUp)': 'focusAbove($event)',\n\t\t'(keydown.arrowDown)': 'focusBelow($event)',\n\t\t'(keydown.home)': 'focusFirst($event)',\n\t\t'(keydown.end)': 'focusLast($event)',\n\t\t'(keydown.pageUp)': 'focusPreviousMonth($event)',\n\t\t'(keydown.pageDown)': 'focusNextMonth($event)',\n\t},\n})\nexport class BrnCalendarCellButton<T> {\n\t/** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the calendar component */\n\tprotected readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the element ref */\n\tprivate readonly _elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n\t/** The date this cell represents */\n\tpublic readonly date = input.required<T>();\n\n\t/** Whether this date is currently selected */\n\tpublic readonly selected = computed(() => this._calendar.isSelected(this.date()));\n\tpublic readonly start = computed(() => this._calendar.isStartOfRange(this.date()));\n\tpublic readonly end = computed(() => this._calendar.isEndOfRange(this.date()));\n\tpublic readonly betweenRange = computed(() => this._calendar.isBetweenRange(this.date()));\n\tpublic readonly highlighted = computed(() =>\n\t\tthis._calendar.highlightDays().some((d) => this._dateAdapter.isSameDay(this.date(), d)),\n\t);\n\n\t/** Whether this date is focusable */\n\tpublic readonly focusable = computed(() => this._dateAdapter.isSameDay(this._calendar.focusedDate(), this.date()));\n\n\tpublic readonly outside = computed(() => {\n\t\tconst focusedDate = this._calendar.focusedDate();\n\t\treturn !this._dateAdapter.isSameMonth(this.date(), focusedDate);\n\t});\n\n\t/** Whether this date is today */\n\tpublic readonly today = computed(() => this._dateAdapter.isSameDay(this.date(), this._dateAdapter.now()));\n\n\t/** Whether this date is disabled */\n\tpublic readonly disabled = computed(() => this._calendar.isDateDisabled(this.date()) || this._calendar.disabled());\n\n\t/**\n\t * Focus the previous cell.\n\t */\n\tprotected focusPrevious(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// in rtl, the arrow keys are reversed.\n\t\tconst targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? 1 : -1,\n\t\t});\n\n\t\tthis._calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the next cell.\n\t */\n\tprotected focusNext(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? -1 : 1,\n\t\t});\n\n\t\tthis._calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the above cell.\n\t */\n\tprotected focusAbove(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.subtract(this._calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the below cell.\n\t */\n\tprotected focusBelow(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.add(this._calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the first date of the month.\n\t */\n\tprotected focusFirst(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.startOfMonth(this._calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the last date of the month.\n\t */\n\tprotected focusLast(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.endOfMonth(this._calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the same date in the previous month.\n\t */\n\tprotected focusPreviousMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this._dateAdapter.getDate(this._calendar.focusedDate());\n\n\t\tlet previousMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n\t\tpreviousMonthTarget = this._dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(previousMonthTarget);\n\n\t\t// if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\tthis._calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis._calendar.setFocusedDate(this._dateAdapter.set(previousMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Focus the same date in the next month.\n\t */\n\tprotected focusNextMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this._dateAdapter.getDate(this._calendar.focusedDate());\n\n\t\tlet nextMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n\t\tnextMonthTarget = this._dateAdapter.add(nextMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(nextMonthTarget);\n\n\t\t// if we are on a date that does not exist in the next month, we should focus the last day of the month.\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\tthis._calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis._calendar.setFocusedDate(this._dateAdapter.set(nextMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Get the direction of the element.\n\t */\n\tprivate getDirection(): 'ltr' | 'rtl' {\n\t\treturn getComputedStyle(this._elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n\t}\n\n\tfocus(): void {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\nlet uniqueId = 0;\n\n@Directive({\n\tselector: '[brnCalendarHeader]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-live': 'polite',\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarHeader {\n\t/** The unique id for the header */\n\tpublic readonly id = input<string>(`brn-calendar-header-${++uniqueId}`);\n}\n","import { inject, Injectable, InjectionToken, type Provider, signal } from '@angular/core';\n\nexport type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type MonthLabels = [\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n];\n\nexport interface BrnCalendarI18n {\n\tformatWeekdayName: (index: number) => string;\n\tformatHeader: (month: number, year: number) => string;\n\tformatYear: (year: number) => string;\n\tformatMonth: (month: number) => string;\n\tlabelPrevious: () => string;\n\tlabelNext: () => string;\n\tlabelWeekday: (index: number) => string;\n\tmonths: () => [string, string, string, string, string, string, string, string, string, string, string, string];\n\tyears: (startYear?: number, endYear?: number) => number[];\n\tfirstDayOfWeek: () => Weekday;\n}\n\nexport const BrnCalendarI18nToken = new InjectionToken<BrnCalendarI18nService>('BrnCalendarI18nToken');\n\n/**\n * Provide the calendar i18n configuration.\n */\nexport function provideBrnCalendarI18n(configuration?: BrnCalendarI18n): Provider {\n\treturn {\n\t\tprovide: BrnCalendarI18nToken,\n\t\tuseFactory: () => {\n\t\t\tconst service = new BrnCalendarI18nService();\n\t\t\tservice.use(configuration ?? defaultCalendarI18n);\n\t\t\treturn service;\n\t\t},\n\t};\n}\n\nconst defaultCalendarI18n: BrnCalendarI18n = {\n\tformatWeekdayName: (index: number) => {\n\t\tconst weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\t\treturn weekdays[index];\n\t},\n\tmonths: () => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\tyears: (startYear = 1925, endYear = new Date().getFullYear() + 1) =>\n\t\tArray.from({ length: endYear - startYear + 1 }, (_, i) => startYear + i),\n\tformatHeader: (month: number, year: number) => {\n\t\treturn new Date(year, month).toLocaleDateString(undefined, {\n\t\t\tmonth: 'long',\n\t\t\tyear: 'numeric',\n\t\t});\n\t},\n\tformatMonth: (month: number) => {\n\t\treturn new Date(2000, month).toLocaleDateString(undefined, {\n\t\t\tmonth: 'short',\n\t\t});\n\t},\n\tformatYear: (year: number): string => {\n\t\treturn new Date(year, 0).toLocaleDateString(undefined, {\n\t\t\tyear: 'numeric',\n\t\t});\n\t},\n\tlabelPrevious: () => 'Go to the previous month',\n\tlabelNext: () => 'Go to the next month',\n\tlabelWeekday: (index: number) => {\n\t\tconst weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\t\treturn weekdays[index];\n\t},\n\tfirstDayOfWeek: () => 0,\n};\n\n/**\n * Inject the calendar i18n configuration.\n */\nexport function injectBrnCalendarI18n(): BrnCalendarI18nService {\n\treturn inject(BrnCalendarI18nToken, { optional: true }) ?? inject(BrnCalendarI18nService); // fallback\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BrnCalendarI18nService {\n\tprivate readonly _config = signal<BrnCalendarI18n>(defaultCalendarI18n);\n\n\tpublic readonly config = this._config.asReadonly();\n\n\tpublic use(config: Partial<BrnCalendarI18n>) {\n\t\tthis._config.set({ ...this.config(), ...config });\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButton } from './brn-calendar-cell-button';\nimport { BrnCalendarHeader } from './brn-calendar-header';\nimport { type BrnCalendarBase, provideBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n, type Weekday } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendar]',\n\tproviders: [provideBrnCalendar(BrnCalendar)],\n})\nexport class BrnCalendar<T> implements BrnCalendarBase<T> {\n\tprivate readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The days to highlight. */\n\tpublic readonly highlightDays = input<T[]>([]);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput | undefined>(undefined, {\n\t\ttransform: (v: unknown) => (v === undefined || v === null ? undefined : (numberAttribute(v) as Weekday)),\n\t});\n\n\tprotected readonly _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeader);\n\n\t/** Store the cells */\n\tprotected readonly _cells = contentChildren<BrnCalendarCellButton<T>>(BrnCalendarCellButton, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = linkedSignal(() =>\n\t\tthis.constrainDate(this.defaultFocusedDate() ?? this.date() ?? this._dateAdapter.now()),\n\t);\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this._weekStartsOn();\n\t\tconst month = this.focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this._dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this._dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this._dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this._dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tisSelected(date: T): boolean {\n\t\tconst selected = this.date() as T | undefined;\n\t\treturn selected !== undefined && this._dateAdapter.isSameDay(date, selected);\n\t}\n\n\tselectDate(date: T): void {\n\t\tif (this.isSelected(date)) {\n\t\t\tthis.date.set(undefined);\n\t\t} else {\n\t\t\tthis.date.set(date);\n\t\t}\n\t\tthis.focusedDate.set(date);\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\t/**\n\t * Determine if a date is the start of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisStartOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is the end of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisEndOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is between the start and end dates. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns True if the date is between the start and end dates, false otherwise.\n\t * @internal\n\t */\n\tisBetweenRange(_: T): boolean {\n\t\treturn false;\n\t}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnCalendarCell]',\n\thost: {\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarCell {}\n","import { Directive } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarGrid]',\n\thost: {\n\t\trole: 'grid',\n\t\t'[attr.aria-labelledby]': '_calendar.header()?.id()',\n\t},\n})\nexport class BrnCalendarGrid<T> {\n\t/** Access the calendar component */\n\tprotected readonly _calendar = injectBrnCalendar<T>();\n}\n","import { computed, Directive, effect, inject } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnSelect } from '@spartan-ng/brain/select';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: 'brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]',\n\thost: {\n\t\t'(valueChange)': 'monthSelected($event)',\n\t},\n})\nexport class BrnCalendarMonthSelect {\n\t/** Access the select */\n\tprivate readonly _select = inject(BrnSelect);\n\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\tprotected readonly _selectedMonth = computed(() => {\n\t\treturn this._i18n.config().months()[this._dateAdapter.getMonth(this._calendar.focusedDate())];\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._select.writeValue(this._selectedMonth());\n\t\t});\n\t}\n\n\t/** Focus selected month */\n\tprotected monthSelected(selectedMonth: string): void {\n\t\tconst month = this._i18n\n\t\t\t.config()\n\t\t\t.months()\n\t\t\t.findIndex((month) => month === selectedMonth);\n\t\tconst targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { month });\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarNextButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'data-slot': 'calendar-next-button',\n\t\t'[attr.aria-label]': '_i18n.config().labelNext()',\n\t\t'(click)': 'focusNextMonth()',\n\t},\n})\nexport class BrnCalendarNextButton {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Focus the next month */\n\tprotected focusNextMonth(): void {\n\t\tconst focusedDate = this._calendar.focusedDate();\n\t\tconst date = this._dateAdapter.getDate(focusedDate);\n\n\t\t// go to start of month first, then add 1 month to avoid day overflow\n\t\tlet nextMonthTarget = this._dateAdapter.startOfMonth(focusedDate);\n\t\tnextMonthTarget = this._dateAdapter.add(nextMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(nextMonthTarget);\n\n\t\t// if we are on a date that does not exist in the next month, clamp to the last day of the month.\n\t\tlet targetDate: typeof focusedDate;\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\ttargetDate = lastDay;\n\t\t} else {\n\t\t\ttargetDate = this._dateAdapter.set(nextMonthTarget, { day: date });\n\t\t}\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the constrained date.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarPreviousButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'data-slot': 'calendar-previous-button',\n\t\t'[attr.aria-label]': '_i18n.config().labelPrevious()',\n\t\t'(click)': 'focusPreviousMonth()',\n\t},\n})\nexport class BrnCalendarPreviousButton {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Focus the previous month */\n\tprotected focusPreviousMonth(): void {\n\t\tconst focusedDate = this._calendar.focusedDate();\n\t\tconst date = this._dateAdapter.getDate(focusedDate);\n\n\t\t// go to start of month first, then subtract 1 month to avoid day overflow\n\t\tlet previousMonthTarget = this._dateAdapter.startOfMonth(focusedDate);\n\t\tpreviousMonthTarget = this._dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(previousMonthTarget);\n\n\t\t// if we are on a date that does not exist in the previous month, clamp to the last day of the month.\n\t\tlet targetDate: typeof focusedDate;\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\ttargetDate = lastDay;\n\t\t} else {\n\t\t\ttargetDate = this._dateAdapter.set(previousMonthTarget, { day: date });\n\t\t}\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the constrained date.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDirective,\n\ttype EmbeddedViewRef,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tuntracked,\n} from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeek]',\n})\nexport class BrnCalendarWeek<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekContext<T>>>(TemplateRef);\n\n\t// get the weeks to display.\n\tprotected readonly _weeks = computed(() => {\n\t\tconst days = this._calendar.days();\n\t\tconst weeks = [];\n\n\t\tfor (let i = 0; i < days.length; i += 7) {\n\t\t\tweeks.push(days.slice(i, i + 7));\n\t\t}\n\n\t\treturn weeks;\n\t});\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekContext<T>>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeek<T>, ctx: unknown): ctx is BrnWeekContext<T> {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// this should use `afterRenderEffect` but it's not available in the current version\n\t\teffect(() => {\n\t\t\tconst weeks = this._weeks();\n\t\t\tuntracked(() => this._renderWeeks(weeks));\n\t\t});\n\t}\n\n\tprivate _renderWeeks(weeks: T[][]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each week\n\t\tfor (const week of weeks) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: week,\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekContext<T> {\n\t$implicit: T[];\n}\n","import {\n\tChangeDetectorRef,\n\tcomputed,\n\tDirective,\n\teffect,\n\ttype EmbeddedViewRef,\n\tinject,\n\ttype OnDestroy,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeekday]',\n})\nexport class BrnCalendarWeekday<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the date time adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekdayContext>>(TemplateRef);\n\n\t/** Get the days of the week to display in the header. */\n\tprotected readonly _weekdays = computed(() => this._calendar.days().slice(0, 7));\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekdayContext>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeekday<T>, ctx: unknown): ctx is BrnWeekdayContext {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// Create a new view for each day\n\t\teffect(() => {\n\t\t\t// Get the weekdays to display\n\t\t\tconst weekdays = this._weekdays();\n\t\t\t// Render the weekdays\n\t\t\tuntracked(() => this._renderWeekdays(weekdays));\n\t\t});\n\t}\n\n\tprivate _renderWeekdays(weekdays: T[]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each day\n\t\tfor (const day of weekdays) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: this._dateAdapter.getDay(day),\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekdayContext {\n\t$implicit: number;\n}\n","import { Directive, effect, inject } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnSelect } from '@spartan-ng/brain/select';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: 'brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]',\n\thost: {\n\t\t'(valueChange)': 'yearSelected($event)',\n\t},\n})\nexport class BrnCalendarYearSelect {\n\t/** Access the select */\n\tprivate readonly _select = inject(BrnSelect);\n\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._select.writeValue(this._dateAdapter.getYear(this._calendar.focusedDate()));\n\t\t});\n\t}\n\n\t/** Focus selected year */\n\tprotected yearSelected(year: number): void {\n\t\tconst targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { year });\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButton } from '../brn-calendar-cell-button';\nimport { BrnCalendarHeader } from '../brn-calendar-header';\nimport { type BrnCalendarBase, provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n, type Weekday } from '../i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarMulti]',\n\tproviders: [provideBrnCalendar(BrnCalendarMulti)],\n})\nexport class BrnCalendarMulti<T> implements BrnCalendarBase<T> {\n\tprivate readonly _i18n = injectBrnCalendarI18n();\n\n\t/**\n\t * Determine if a date is the start of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisStartOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is the end of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisEndOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is between the start and end dates. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns True if the date is between the start and end dates, false otherwise.\n\t * @internal\n\t */\n\tisBetweenRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t// /** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The days to highlight. */\n\tpublic readonly highlightDays = input<T[]>([]);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** The minimum selectable dates. */\n\tpublic readonly minSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** The maximum selectable dates. */\n\tpublic readonly maxSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T[]>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput | undefined>(undefined, {\n\t\ttransform: (v: unknown) => (v === undefined || v === null ? undefined : (numberAttribute(v) as Weekday)),\n\t});\n\n\tprotected readonly _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeader);\n\n\t/** Store the cells */\n\tprotected readonly _cells = contentChildren<BrnCalendarCellButton<T>>(BrnCalendarCellButton, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = linkedSignal(() =>\n\t\tthis.constrainDate(this.defaultFocusedDate() ?? this._dateAdapter.now()),\n\t);\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this._weekStartsOn();\n\t\tconst month = this.focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this._dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this._dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this._dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this._dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\tisSelected(date: T): boolean {\n\t\treturn this.date()?.some((d) => this._dateAdapter.isSameDay(d, date)) ?? false;\n\t}\n\n\tselectDate(date: T): void {\n\t\tconst selected = this.date() as T[] | undefined;\n\t\tif (this.isSelected(date)) {\n\t\t\tconst minSelection = this.minSelection();\n\t\t\tif (selected?.length === minSelection) {\n\t\t\t\t// min selection reached, do not allow to deselect\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.date.set(selected?.filter((d) => !this._dateAdapter.isSameDay(d, date)));\n\t\t} else {\n\t\t\tconst maxSelection = this.maxSelection();\n\t\t\tif (selected?.length === maxSelection) {\n\t\t\t\t// max selection reached, reset the selection to date\n\t\t\t\tthis.date.set([date]);\n\t\t\t} else {\n\t\t\t\t// add the date to the selection\n\t\t\t\tthis.date.set([...(selected ?? []), date]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// same as in brn-calendar.directive.ts\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButton } from '../brn-calendar-cell-button';\nimport { BrnCalendarHeader } from '../brn-calendar-header';\nimport { type BrnCalendarBase, provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n, type Weekday } from '../i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarRange]',\n\tproviders: [provideBrnCalendar(BrnCalendarRange)],\n})\nexport class BrnCalendarRange<T> implements BrnCalendarBase<T> {\n\tprivate readonly _i18n = injectBrnCalendarI18n();\n\t// /** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The days to highlight. */\n\tpublic readonly highlightDays = input<T[]>([]);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput | undefined>(undefined, {\n\t\ttransform: (v: unknown) => (v === undefined || v === null ? undefined : (numberAttribute(v) as Weekday)),\n\t});\n\n\tprotected readonly _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeader);\n\n\t/** Store the cells */\n\tprotected readonly _cells = contentChildren<BrnCalendarCellButton<T>>(BrnCalendarCellButton, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = linkedSignal(() =>\n\t\tthis.constrainDate(this.defaultFocusedDate() ?? this.startDate() ?? this._dateAdapter.now()),\n\t);\n\n\t/**\n\t * The selected start date\n\t */\n\tpublic readonly startDate = model<T>();\n\n\t/**\n\t * The selected end date\n\t */\n\tpublic readonly endDate = model<T>();\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this._weekStartsOn();\n\t\tconst month = this.focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this._dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this._dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this._dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this._dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\tisSelected(date: T): boolean {\n\t\tconst start = this.startDate();\n\t\tconst end = this.endDate();\n\n\t\tif (!start && !end) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isStartSelected = start ? this._dateAdapter.isSameDay(date, start) : false;\n\t\tconst isEndSelected = end ? this._dateAdapter.isSameDay(date, end) : false;\n\n\t\treturn isStartSelected || isEndSelected;\n\t}\n\n\tselectDate(date: T): void {\n\t\tconst start = this.startDate();\n\t\tconst end = this.endDate();\n\n\t\tif (!start && !end) {\n\t\t\tthis.startDate.set(date);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (start && !end) {\n\t\t\tif (this._dateAdapter.isAfter(date, start)) {\n\t\t\t\tthis.endDate.set(date);\n\t\t\t} else if (this._dateAdapter.isBefore(date, start)) {\n\t\t\t\tthis.startDate.set(date);\n\t\t\t\tthis.endDate.set(start);\n\t\t\t} else if (this._dateAdapter.isSameDay(date, start)) {\n\t\t\t\tthis.endDate.set(date);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// If both start and end are selected, reset selection\n\t\tthis.startDate.set(date);\n\n\t\tthis.endDate.set(undefined);\n\t}\n\n\t// same as in brn-calendar.directive.ts\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\t/**\n\t * Determine if a date is the start of a range.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisStartOfRange(date: T): boolean {\n\t\tconst start = this.startDate();\n\t\treturn start ? this._dateAdapter.isSameDay(date, start) : false;\n\t}\n\n\t/**\n\t * Determine if a date is the end of a range.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisEndOfRange(date: T): boolean {\n\t\tconst end = this.endDate();\n\t\treturn end ? this._dateAdapter.isSameDay(date, end) : false;\n\t}\n\n\t/**\n\t * Determine if a date is between the start and end dates.\n\t * @param date The date to check.\n\t * @returns True if the date is between the start and end dates, false otherwise.\n\t * @internal\n\t */\n\tisBetweenRange(date: T): boolean {\n\t\tconst start = this.startDate();\n\t\tconst end = this.endDate();\n\n\t\tif (!start || !end) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this._dateAdapter.isAfter(date, start) && this._dateAdapter.isBefore(date, end);\n\t}\n}\n","import { BrnCalendar } from './lib/brn-calendar';\nimport { BrnCalendarCell } from './lib/brn-calendar-cell';\nimport { BrnCalendarCellButton } from './lib/brn-calendar-cell-button';\nimport { BrnCalendarGrid } from './lib/brn-calendar-grid';\nimport { BrnCalendarHeader } from './lib/brn-calendar-header';\nimport { BrnCalendarMonthSelect } from './lib/brn-calendar-month-select';\nimport { BrnCalendarNextButton } from './lib/brn-calendar-next-button';\nimport { BrnCalendarPreviousButton } from './lib/brn-calendar-previous-button';\nimport { BrnCalendarWeek } from './lib/brn-calendar-week';\nimport { BrnCalendarWeekday } from './lib/brn-calendar-weekday';\nimport { BrnCalendarYearSelect } from './lib/brn-calendar-year-select';\nimport { BrnCalendarMulti } from './lib/mode/brn-calendar-multiple';\nimport { BrnCalendarRange } from './lib/mode/brn-calendar-range';\n\nexport * from './lib/brn-calendar';\nexport * from './lib/brn-calendar-cell';\nexport * from './lib/brn-calendar-cell-button';\nexport * from './lib/brn-calendar-grid';\nexport * from './lib/brn-calendar-header';\nexport * from './lib/brn-calendar-month-select';\nexport * from './lib/brn-calendar-next-button';\nexport * from './lib/brn-calendar-previous-button';\nexport * from './lib/brn-calendar-week';\nexport * from './lib/brn-calendar-weekday';\nexport * from './lib/brn-calendar-year-select';\nexport * from './lib/brn-calendar.token';\nexport * from './lib/i18n/calendar-i18n';\nexport * from './lib/mode/brn-calendar-multiple';\nexport * from './lib/mode/brn-calendar-range';\n\nexport const BrnCalendarImports = [\n\tBrnCalendarCellButton,\n\tBrnCalendarGrid,\n\tBrnCalendarHeader,\n\tBrnCalendarNextButton,\n\tBrnCalendarPreviousButton,\n\tBrnCalendarWeek,\n\tBrnCalendarWeekday,\n\tBrnCalendar,\n\tBrnCalendarCell,\n\tBrnCalendarMulti,\n\tBrnCalendarRange,\n\tBrnCalendarMonthSelect,\n\tBrnCalendarYearSelect,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MA8Ba,gBAAgB,GAAG,IAAI,cAAc,CAA2B,kBAAkB;AAEzF,SAAU,kBAAkB,CAAI,QAAkC,EAAA;IACvE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE;AAC5D;AAEA;;AAEG;SACa,iBAAiB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,gBAAgB,CAAuB;AACtD;;MCTa,qBAAqB,CAAA;;IAEd,YAAY,GAAG,iBAAiB,EAAK;;IAGrC,SAAS,GAAG,iBAAiB,EAAK;;AAGpC,IAAA,WAAW,GAAG,MAAM,CAAgC,UAAU,CAAC;;AAGhE,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAK;;AAG1B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,oDAAC;AACjE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iDAAC;AAClE,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,+CAAC;AAC9D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,wDAAC;AACzE,IAAA,WAAW,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,uDACvF;;IAGe,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElG,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAChD,QAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC;AAChE,KAAC,mDAAC;;IAGc,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGzF,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElH;;AAEG;AACO,IAAA,aAAa,CAAC,KAAY,EAAA;QACnC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAGvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE;AACtE,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC;;AAG1C;;AAEG;AACO,IAAA,SAAS,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE;AACtE,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5C,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC;;AAG1C;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;;AAGrG;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;;AAGhG;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;;AAG5F;;AAEG;AACO,IAAA,SAAS,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;;AAG1F;;AAEG;AACO,IAAA,kBAAkB,CAAC,KAAY,EAAA;QACxC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAEpE,QAAA,IAAI,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AACtF,QAAA,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEpF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC;;QAGjE,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC;;aAChC;YACN,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;;;AAI1F;;AAEG;AACO,IAAA,cAAc,CAAC,KAAY,EAAA;QACpC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAEpE,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAClF,QAAA,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC;;QAG7D,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC;;aAChC;YACN,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;;;AAItF;;AAEG;IACK,YAAY,GAAA;QACnB,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;;IAG5F,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;;2HAzJ3B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,6DAAA,EAAA,iBAAA,EAAA,oCAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA5BjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,YAAY,EAAE,sBAAsB;AACpC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,qBAAqB,EAAE,6DAA6D;AACpF,wBAAA,mBAAmB,EAAE,oCAAoC;AACzD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,yBAAyB,EAAE,qBAAqB;AAChD,wBAAA,uBAAuB,EAAE,mBAAmB;AAC5C,wBAAA,yBAAyB,EAAE,2BAA2B;AACtD,wBAAA,2BAA2B,EAAE,4BAA4B;AACzD,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,8BAA8B;AACzC,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,sBAAsB,EAAE,mBAAmB;AAC3C,wBAAA,mBAAmB,EAAE,oBAAoB;AACzC,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,gBAAgB,EAAE,oBAAoB;AACtC,wBAAA,eAAe,EAAE,mBAAmB;AACpC,wBAAA,kBAAkB,EAAE,4BAA4B;AAChD,wBAAA,oBAAoB,EAAE,wBAAwB;AAC9C,qBAAA;AACD,iBAAA;;;AC7BD,IAAI,QAAQ,GAAG,CAAC;MAUH,iBAAiB,CAAA;;IAEb,EAAE,GAAG,KAAK,CAAS,CAAA,oBAAA,EAAuB,EAAE,QAAQ,CAAA,CAAE,8CAAC;2HAF3D,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,IAAI,EAAE,cAAc;AACpB,qBAAA;AACD,iBAAA;;;MCqBY,oBAAoB,GAAG,IAAI,cAAc,CAAyB,sBAAsB;AAErG;;AAEG;AACG,SAAU,sBAAsB,CAAC,aAA+B,EAAA;IACrE,OAAO;AACN,QAAA,OAAO,EAAE,oBAAoB;QAC7B,UAAU,EAAE,MAAK;AAChB,YAAA,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE;AAC5C,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,mBAAmB,CAAC;AACjD,YAAA,OAAO,OAAO;SACd;KACD;AACF;AAEA,MAAM,mBAAmB,GAAoB;AAC5C,IAAA,iBAAiB,EAAE,CAAC,KAAa,KAAI;AACpC,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3D,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;KACtB;AACD,IAAA,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAClG,IAAA,KAAK,EAAE,CAAC,SAAS,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,KAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC;AACzE,IAAA,YAAY,EAAE,CAAC,KAAa,EAAE,IAAY,KAAI;QAC7C,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;AAC1D,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE,SAAS;AACf,SAAA,CAAC;KACF;AACD,IAAA,WAAW,EAAE,CAAC,KAAa,KAAI;QAC9B,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;AAC1D,YAAA,KAAK,EAAE,OAAO;AACd,SAAA,CAAC;KACF;AACD,IAAA,UAAU,EAAE,CAAC,IAAY,KAAY;QACpC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;AACtD,YAAA,IAAI,EAAE,SAAS;AACf,SAAA,CAAC;KACF;AACD,IAAA,aAAa,EAAE,MAAM,0BAA0B;AAC/C,IAAA,SAAS,EAAE,MAAM,sBAAsB;AACvC,IAAA,YAAY,EAAE,CAAC,KAAa,KAAI;AAC/B,QAAA,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;AAC/F,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;KACtB;AACD,IAAA,cAAc,EAAE,MAAM,CAAC;CACvB;AAED;;AAEG;SACa,qBAAqB,GAAA;AACpC,IAAA,OAAO,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAC3F;MAGa,sBAAsB,CAAA;AACjB,IAAA,OAAO,GAAG,MAAM,CAAkB,mBAAmB,mDAAC;AAEvD,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAE3C,IAAA,GAAG,CAAC,MAAgC,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;;2HANtC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,uBAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC9DrB,WAAW,CAAA;IACN,KAAK,GAAG,qBAAqB,EAAE;;IAG7B,YAAY,GAAG,iBAAiB,EAAK;;AAGvC,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAG7B,IAAA,aAAa,GAAG,KAAK,CAAM,EAAE,yDAAC;;IAG9B,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAC5D,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADmC;AAC9D,YAAA,SAAS,EAAE,gBAAgB;AAC3B,SAAA,CAAA,CAAA,CAAC;;IAGc,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGjB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,wDAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAmC,SAAS,gDAC/E,SAAS,EAAE,CAAC,CAAU,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,SAAS,GAAI,eAAe,CAAC,CAAC,CAAa,CAAC,EAAA,CAAA,GAAA,CADvB;YACjF,SAAS,EAAE,CAAC,CAAU,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,SAAS,GAAI,eAAe,CAAC,CAAC,CAAa,CAAC;AACxG,SAAA,CAAA,CAAA,CAAC;IAEiB,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG9F,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;AAG/B,IAAA,MAAM,GAAG,YAAY,CAAC,iBAAiB,kDAAC;;IAGrC,MAAM,GAAG,eAAe,CAA2B,qBAAqB,0CAC1F,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAD2E;AAC5F,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACa,IAAA,WAAW,GAAG,YAAY,CAAC,MAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvF;AAED;;;AAGG;AACa,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,MAAM,IAAI,GAAQ,EAAE;;QAGpB,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;;QAGjD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;AAC3D,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;QAG7D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC;;QAGzC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;AACxD,YAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;AAItD,QAAA,OAAO,QAAQ,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGxD,QAAA,OAAO,IAAI;AACZ,KAAC,gDAAC;;AAGF,IAAA,aAAa,CAAC,IAAO,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;;AAGtB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,YAAA,OAAO,IAAI;;;QAIZ,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,GAAG;;;QAIX,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,GAAG;;;AAIX,QAAA,OAAO,IAAI;;;AAIZ,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,IAAI;;QAGZ,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AAEtC,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAK;;AAGb,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAmB;AAC7C,QAAA,OAAO,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAG7E,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;;aAClB;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAI3B,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC9B;;AAGD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG1B,QAAA,eAAe,CACd;YACC,KAAK,EAAE,MAAK;;AAEX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;gBAEnF,IAAI,IAAI,EAAE;oBACT,IAAI,CAAC,KAAK,EAAE;;aAEb;SACD,EACD;YACC,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CACD;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAGrC;;;;;AAKG;AACH,IAAA,cAAc,CAAC,CAAI,EAAA;AAClB,QAAA,OAAO,KAAK;;AAGb;;;;;AAKG;AACH,IAAA,YAAY,CAAC,CAAI,EAAA;AAChB,QAAA,OAAO,KAAK;;AAGb;;;;;AAKG;AACH,IAAA,cAAc,CAAC,CAAI,EAAA;AAClB,QAAA,OAAO,KAAK;;2HAvND,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAFZ,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6CN,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAGe,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA9C/E,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE,CAAC,kBAAkB,CAAA,WAAA,CAAa,CAAC;AAC5C,iBAAA;w5BA4CsC,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGe,qBAAqB,CAAA,EAAA,EAAA,GAAE;AAC5F,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MClEW,eAAe,CAAA;2HAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,cAAc;AACpB,qBAAA;AACD,iBAAA;;;MCGY,eAAe,CAAA;;IAER,SAAS,GAAG,iBAAiB,EAAK;2HAFzC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,wBAAwB,EAAE,0BAA0B;AACpD,qBAAA;AACD,iBAAA;;;MCGY,sBAAsB,CAAA;;AAEjB,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;;IAG3B,SAAS,GAAG,iBAAiB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAE;;IAGhC,KAAK,GAAG,qBAAqB,EAAE;AAE/B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9F,KAAC,0DAAC;AAEF,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/C,SAAC,CAAC;;;AAIO,IAAA,aAAa,CAAC,aAAqB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;AACjB,aAAA,MAAM;AACN,aAAA,MAAM;aACN,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,aAAa,CAAC;AAC/C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;;2HA9B/B,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sEAAsE;AAChF,oBAAA,IAAI,EAAE;AACL,wBAAA,eAAe,EAAE,uBAAuB;AACxC,qBAAA;AACD,iBAAA;;;MCGY,qBAAqB,CAAA;;IAEhB,SAAS,GAAG,iBAAiB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAE;;IAGhC,KAAK,GAAG,qBAAqB,EAAE;;IAGxC,cAAc,GAAA;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;;QAGnD,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC;AACjE,QAAA,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC;;AAG7D,QAAA,IAAI,UAA8B;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9C,UAAU,GAAG,OAAO;;aACd;AACN,YAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;;QAInE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;QAE7D,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;;YAE5D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5C;;QAGD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;;2HAtC/B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,sBAAsB;AACnC,wBAAA,mBAAmB,EAAE,4BAA4B;AACjD,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,qBAAA;AACD,iBAAA;;;MCCY,yBAAyB,CAAA;;IAEpB,SAAS,GAAG,iBAAiB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAE;;IAGhC,KAAK,GAAG,qBAAqB,EAAE;;IAGxC,kBAAkB,GAAA;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;;QAGnD,IAAI,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC;AACrE,QAAA,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEpF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC;;AAGjE,QAAA,IAAI,UAA8B;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9C,UAAU,GAAG,OAAO;;aACd;AACN,YAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;;QAIvE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;QAE7D,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;;YAE5D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5C;;QAGD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;;2HAtC/B,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EAAE,0BAA0B;AACvC,wBAAA,mBAAmB,EAAE,gCAAgC;AACrD,wBAAA,SAAS,EAAE,sBAAsB;AACjC,qBAAA;AACD,iBAAA;;;MCIY,eAAe,CAAA;;IAEV,SAAS,GAAG,iBAAiB,EAAK;;AAGlC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAG5C,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,YAAY,GAAG,MAAM,CAAiC,WAAW,CAAC;;AAGhE,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAClC,MAAM,KAAK,GAAG,EAAE;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGjC,QAAA,OAAO,KAAK;AACb,KAAC,kDAAC;;IAGM,SAAS,GAAyC,EAAE;;;AAI5D,IAAA,OAAO,sBAAsB,CAAI,CAAqB,EAAE,GAAY,EAAA;AACnE,QAAA,OAAO,IAAI;;AAGZ,IAAA,WAAA,GAAA;;QAEC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;YAC3B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC;;AAGK,IAAA,YAAY,CAAC,KAAY,EAAA;;AAEhC,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;AAGlB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGnB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5E,gBAAA,SAAS,EAAE,IAAI;AACf,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG7B,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;IAGrC,WAAW,GAAA;;AAEV,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;;2HAhEP,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,iBAAA;;;MCEY,kBAAkB,CAAA;;IAEb,SAAS,GAAG,iBAAiB,EAAK;;IAGlC,YAAY,GAAG,iBAAiB,EAAK;;AAGrC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAG5C,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,YAAY,GAAG,MAAM,CAAiC,WAAW,CAAC;;IAGhE,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,qDAAC;;IAGxE,SAAS,GAAyC,EAAE;;;AAI5D,IAAA,OAAO,sBAAsB,CAAI,CAAwB,EAAE,GAAY,EAAA;AACtE,QAAA,OAAO,IAAI;;AAGZ,IAAA,WAAA,GAAA;;QAEC,MAAM,CAAC,MAAK;;AAEX,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;;YAEjC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAC,CAAC;;AAGK,IAAA,eAAe,CAAC,QAAa,EAAA;;AAEpC,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;AAGlB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGnB,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC5E,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG7B,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;IAGrC,WAAW,GAAA;;AAEV,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;;2HA5DP,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,iBAAA;;;MCLY,qBAAqB,CAAA;;AAEhB,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;;IAG3B,SAAS,GAAG,iBAAiB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAE;;IAGhC,KAAK,GAAG,qBAAqB,EAAE;AAElD,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACjF,SAAC,CAAC;;;AAIO,IAAA,YAAY,CAAC,IAAY,EAAA;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;;2HAtB/B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oEAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oEAAoE;AAC9E,oBAAA,IAAI,EAAE;AACL,wBAAA,eAAe,EAAE,sBAAsB;AACvC,qBAAA;AACD,iBAAA;;;MCeY,gBAAgB,CAAA;IACX,KAAK,GAAG,qBAAqB,EAAE;AAEhD;;;;;AAKG;AACH,IAAA,cAAc,CAAC,CAAI,EAAA;AAClB,QAAA,OAAO,KAAK;;AAGb;;;;;AAKG;AACH,IAAA,YAAY,CAAC,CAAI,EAAA;AAChB,QAAA,OAAO,KAAK;;AAGb;;;;;AAKG;AACH,IAAA,cAAc,CAAC,CAAI,EAAA;AAClB,QAAA,OAAO,KAAK;;;IAIM,YAAY,GAAG,iBAAiB,EAAK;;AAGvC,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAG7B,IAAA,aAAa,GAAG,KAAK,CAAM,EAAE,yDAAC;;IAG9B,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,YAAY,GAAG,KAAK,CAAsB,SAAS,gDAClE,SAAS,EAAE,eAAe,EAAA,CAAA,GAAA,CAD0C;AACpE,YAAA,SAAS,EAAE,eAAe;AAC1B,SAAA,CAAA,CAAA,CAAC;;IAGc,YAAY,GAAG,KAAK,CAAsB,SAAS,gDAClE,SAAS,EAAE,eAAe,EAAA,CAAA,GAAA,CAD0C;AACpE,YAAA,SAAS,EAAE,eAAe;AAC1B,SAAA,CAAA,CAAA,CAAC;;IAGc,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAC5D,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADmC;AAC9D,YAAA,SAAS,EAAE,gBAAgB;AAC3B,SAAA,CAAA,CAAA,CAAC;;IAGc,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;;IAGnB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,wDAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAmC,SAAS,gDAC/E,SAAS,EAAE,CAAC,CAAU,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,SAAS,GAAI,eAAe,CAAC,CAAC,CAAa,CAAC,EAAA,CAAA,GAAA,CADvB;YACjF,SAAS,EAAE,CAAC,CAAU,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,SAAS,GAAI,eAAe,CAAC,CAAC,CAAa,CAAC;AACxG,SAAA,CAAA,CAAA,CAAC;IAEiB,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG9F,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;AAG/B,IAAA,MAAM,GAAG,YAAY,CAAC,iBAAiB,kDAAC;;IAGrC,MAAM,GAAG,eAAe,CAA2B,qBAAqB,0CAC1F,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAD2E;AAC5F,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;IACa,WAAW,GAAG,YAAY,CAAC,MAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxE;AAED;;;AAGG;AACa,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,MAAM,IAAI,GAAQ,EAAE;;QAGpB,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;;QAGjD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;AAC3D,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;QAG7D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC;;QAGzC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;AACxD,YAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;AAItD,QAAA,OAAO,QAAQ,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGxD,QAAA,OAAO,IAAI;AACZ,KAAC,gDAAC;AAEF,IAAA,UAAU,CAAC,IAAO,EAAA;QACjB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK;;AAG/E,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAqB;AAC/C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,IAAI,QAAQ,EAAE,MAAM,KAAK,YAAY,EAAE;;gBAEtC;;YAGD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;aACvE;AACN,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,IAAI,QAAQ,EAAE,MAAM,KAAK,YAAY,EAAE;;gBAEtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;;iBACf;;AAEN,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;;;;;;AAO7C,IAAA,aAAa,CAAC,IAAO,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;;AAGtB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,YAAA,OAAO,IAAI;;;QAIZ,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,GAAG;;;QAIX,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,GAAG;;;AAIX,QAAA,OAAO,IAAI;;;AAIZ,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,IAAI;;QAGZ,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AAEtC,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAK;;;AAIb,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC9B;;AAGD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG1B,QAAA,eAAe,CACd;YACC,KAAK,EAAE,MAAK;;AAEX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;gBAEnF,IAAI,IAAI,EAAE;oBACT,IAAI,CAAC,KAAK,EAAE;;aAEb;SACD,EACD;YACC,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CACD;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;2HA9OzB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAqFX,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAGe,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAtF/E,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,kBAAkB,CAAA,gBAAA,CAAkB,CAAC;AACjD,iBAAA;wmCAoFsC,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGe,qBAAqB,CAAA,EAAA,EAAA,GAAE;AAC5F,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCxFW,gBAAgB,CAAA;IACX,KAAK,GAAG,qBAAqB,EAAE;;IAE7B,YAAY,GAAG,iBAAiB,EAAK;;AAGvC,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAG7B,IAAA,aAAa,GAAG,KAAK,CAAM,EAAE,yDAAC;;IAG9B,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAC5D,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADmC;AAC9D,YAAA,SAAS,EAAE,gBAAgB;AAC3B,SAAA,CAAA,CAAA,CAAC;;IAGc,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,wDAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAmC,SAAS,gDAC/E,SAAS,EAAE,CAAC,CAAU,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,SAAS,GAAI,eAAe,CAAC,CAAC,CAAa,CAAC,EAAA,CAAA,GAAA,CADvB;YACjF,SAAS,EAAE,CAAC,CAAU,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,SAAS,GAAI,eAAe,CAAC,CAAC,CAAa,CAAC;AACxG,SAAA,CAAA,CAAA,CAAC;IAEiB,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG9F,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;AAG/B,IAAA,MAAM,GAAG,YAAY,CAAC,iBAAiB,kDAAC;;IAGrC,MAAM,GAAG,eAAe,CAA2B,qBAAqB,0CAC1F,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAD2E;AAC5F,YAAA,WAAW,EAAE,IAAI;AACjB,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACa,IAAA,WAAW,GAAG,YAAY,CAAC,MAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5F;AAED;;AAEG;IACa,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;AAEtC;;AAEG;IACa,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;AAEpC;;;AAGG;AACa,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,MAAM,IAAI,GAAQ,EAAE;;QAGpB,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;;QAGjD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;AAC3D,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;QAG7D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC;;QAGzC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;AACxD,YAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;AAItD,QAAA,OAAO,QAAQ,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGxD,QAAA,OAAO,IAAI;AACZ,KAAC,gDAAC;AAEF,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AACnB,YAAA,OAAO,KAAK;;QAEb,MAAM,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK;QAChF,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK;QAE1E,OAAO,eAAe,IAAI,aAAa;;AAGxC,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAExB;;AAGD,QAAA,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;iBAChB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACnD,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;iBACjB,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;YAEvB;;;AAID,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;;;;AAK5B,IAAA,aAAa,CAAC,IAAO,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;;AAGtB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,YAAA,OAAO,IAAI;;;QAIZ,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,GAAG;;;QAIX,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,GAAG;;;AAIX,QAAA,OAAO,IAAI;;;AAIZ,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,IAAI;;QAGZ,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AAEtC,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAK;;;AAIb,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC9B;;AAGD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG1B,QAAA,eAAe,CACd;YACC,KAAK,EAAE,MAAK;;AAEX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;gBAEnF,IAAI,IAAI,EAAE;oBACT,IAAI,CAAC,KAAK,EAAE;;aAEb;SACD,EACD;YACC,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CACD;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAGrC;;;;;AAKG;AACH,IAAA,cAAc,CAAC,IAAO,EAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK;;AAGhE;;;;;AAKG;AACH,IAAA,YAAY,CAAC,IAAO,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK;;AAG5D;;;;;AAKG;AACH,IAAA,cAAc,CAAC,IAAO,EAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AACnB,YAAA,OAAO,KAAK;;QAGb,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;;2HAlQ3E,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAyCX,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAGe,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA1C/E,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,kBAAkB,CAAA,gBAAA,CAAkB,CAAC;AACjD,iBAAA;qxBAwCsC,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGe,qBAAqB,CAAA,EAAA,EAAA,GAAE;AAC5F,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACxCK,MAAM,kBAAkB,GAAG;IACjC,qBAAqB;IACrB,eAAe;IACf,iBAAiB;IACjB,qBAAqB;IACrB,yBAAyB;IACzB,eAAe;IACf,kBAAkB;IAClB,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,qBAAqB;;;AC3CtB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-calendar.mjs","sources":["../../../../libs/brain/calendar/src/lib/brn-calendar.token.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell-button.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-header.ts","../../../../libs/brain/calendar/src/lib/i18n/calendar-i18n.ts","../../../../libs/brain/calendar/src/lib/brn-calendar.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-grid.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-month-select.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-next-button.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-previous-button.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-week.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-weekday.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-year-select.ts","../../../../libs/brain/calendar/src/lib/mode/brn-calendar-multiple.ts","../../../../libs/brain/calendar/src/lib/mode/brn-calendar-range.ts","../../../../libs/brain/calendar/src/index.ts","../../../../libs/brain/calendar/src/spartan-ng-brain-calendar.ts"],"sourcesContent":["import {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype Signal,\n\ttype Type,\n\ttype WritableSignal,\n} from '@angular/core';\nimport type { BrnCalendarHeader } from './brn-calendar-header';\n\nexport interface BrnCalendarBase<T> {\n\tisSelected: (date: T) => boolean;\n\tselectDate: (date: T) => void;\n\n\tconstrainDate: (date: T) => T;\n\tisDateDisabled: (date: T) => boolean;\n\tsetFocusedDate: (date: T) => void;\n\n\tisStartOfRange: (date: T) => boolean;\n\tisEndOfRange: (date: T) => boolean;\n\tisBetweenRange: (date: T) => boolean;\n\n\tdisabled: Signal<boolean>;\n\tfocusedDate: WritableSignal<T>;\n\theader: Signal<BrnCalendarHeader | undefined>;\n\tdays: Signal<T[]>;\n\thighlightDays: InputSignal<T[]>;\n}\n\nexport const BrnCalendarToken = new InjectionToken<BrnCalendarBase<unknown>>('BrnCalendarToken');\n\nexport function provideBrnCalendar<T>(instance: Type<BrnCalendarBase<T>>): ExistingProvider {\n\treturn { provide: BrnCalendarToken, useExisting: instance };\n}\n\n/**\n * Inject the calendar component.\n */\nexport function injectBrnCalendar<T>(): BrnCalendarBase<T> {\n\treturn inject(BrnCalendarToken) as BrnCalendarBase<T>;\n}\n","import { computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: 'button[brnCalendarCellButton]',\n\thost: {\n\t\trole: 'gridcell',\n\t\t'[tabindex]': 'focusable() ? 0 : -1',\n\t\ttype: 'button',\n\t\t'[attr.data-outside]': \"!selected() && outside() && (!end() && !start())? '' : null\",\n\t\t'[attr.data-today]': \"today() && !selected() ? '' : null\",\n\t\t'[attr.data-selected]': \"selected() ? '' : null\",\n\t\t'[attr.data-disabled]': \"disabled() ? '' : null\",\n\t\t'[attr.aria-selected]': \"selected() ? 'true' : null\",\n\t\t'[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n\t\t'[attr.data-range-start]': 'start() ? \"\" : null',\n\t\t'[attr.data-range-end]': 'end() ? \"\" : null',\n\t\t'[attr.data-highlighted]': 'highlighted() ? \"\" : null',\n\t\t'[attr.data-range-between]': 'betweenRange() ? \"\" : null',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': '_calendar.selectDate(date())',\n\t\t'(keydown.arrowLeft)': 'focusPrevious($event)',\n\t\t'(keydown.arrowRight)': 'focusNext($event)',\n\t\t'(keydown.arrowUp)': 'focusAbove($event)',\n\t\t'(keydown.arrowDown)': 'focusBelow($event)',\n\t\t'(keydown.home)': 'focusFirst($event)',\n\t\t'(keydown.end)': 'focusLast($event)',\n\t\t'(keydown.pageUp)': 'focusPreviousMonth($event)',\n\t\t'(keydown.pageDown)': 'focusNextMonth($event)',\n\t},\n})\nexport class BrnCalendarCellButton<T> {\n\t/** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the calendar component */\n\tprotected readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the element ref */\n\tprivate readonly _elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n\t/** The date this cell represents */\n\tpublic readonly date = input.required<T>();\n\n\t/** Whether this date is currently selected */\n\tpublic readonly selected = computed(() => this._calendar.isSelected(this.date()));\n\tpublic readonly start = computed(() => this._calendar.isStartOfRange(this.date()));\n\tpublic readonly end = computed(() => this._calendar.isEndOfRange(this.date()));\n\tpublic readonly betweenRange = computed(() => this._calendar.isBetweenRange(this.date()));\n\tpublic readonly highlighted = computed(() =>\n\t\tthis._calendar.highlightDays().some((d) => this._dateAdapter.isSameDay(this.date(), d)),\n\t);\n\n\t/** Whether this date is focusable */\n\tpublic readonly focusable = computed(() => this._dateAdapter.isSameDay(this._calendar.focusedDate(), this.date()));\n\n\tpublic readonly outside = computed(() => {\n\t\tconst focusedDate = this._calendar.focusedDate();\n\t\treturn !this._dateAdapter.isSameMonth(this.date(), focusedDate);\n\t});\n\n\t/** Whether this date is today */\n\tpublic readonly today = computed(() => this._dateAdapter.isSameDay(this.date(), this._dateAdapter.now()));\n\n\t/** Whether this date is disabled */\n\tpublic readonly disabled = computed(() => this._calendar.isDateDisabled(this.date()) || this._calendar.disabled());\n\n\t/**\n\t * Focus the previous cell.\n\t */\n\tprotected focusPrevious(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// in rtl, the arrow keys are reversed.\n\t\tconst targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? 1 : -1,\n\t\t});\n\n\t\tthis._calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the next cell.\n\t */\n\tprotected focusNext(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? -1 : 1,\n\t\t});\n\n\t\tthis._calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the above cell.\n\t */\n\tprotected focusAbove(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.subtract(this._calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the below cell.\n\t */\n\tprotected focusBelow(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.add(this._calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the first date of the month.\n\t */\n\tprotected focusFirst(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.startOfMonth(this._calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the last date of the month.\n\t */\n\tprotected focusLast(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._calendar.setFocusedDate(this._dateAdapter.endOfMonth(this._calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the same date in the previous month.\n\t */\n\tprotected focusPreviousMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this._dateAdapter.getDate(this._calendar.focusedDate());\n\n\t\tlet previousMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n\t\tpreviousMonthTarget = this._dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(previousMonthTarget);\n\n\t\t// if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\tthis._calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis._calendar.setFocusedDate(this._dateAdapter.set(previousMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Focus the same date in the next month.\n\t */\n\tprotected focusNextMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this._dateAdapter.getDate(this._calendar.focusedDate());\n\n\t\tlet nextMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n\t\tnextMonthTarget = this._dateAdapter.add(nextMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(nextMonthTarget);\n\n\t\t// if we are on a date that does not exist in the next month, we should focus the last day of the month.\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\tthis._calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis._calendar.setFocusedDate(this._dateAdapter.set(nextMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Get the direction of the element.\n\t */\n\tprivate getDirection(): 'ltr' | 'rtl' {\n\t\treturn getComputedStyle(this._elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n\t}\n\n\tfocus(): void {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\nlet uniqueId = 0;\n\n@Directive({\n\tselector: '[brnCalendarHeader]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-live': 'polite',\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarHeader {\n\t/** The unique id for the header */\n\tpublic readonly id = input<string>(`brn-calendar-header-${++uniqueId}`);\n}\n","import { inject, Injectable, InjectionToken, type Provider, signal } from '@angular/core';\n\nexport type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type MonthLabels = [\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n\tstring,\n];\n\nexport interface BrnCalendarI18n {\n\tformatWeekdayName: (index: number) => string;\n\tformatHeader: (month: number, year: number) => string;\n\tformatYear: (year: number) => string;\n\tformatMonth: (month: number) => string;\n\tlabelPrevious: () => string;\n\tlabelNext: () => string;\n\tlabelWeekday: (index: number) => string;\n\tmonths: () => [string, string, string, string, string, string, string, string, string, string, string, string];\n\tyears: (startYear?: number, endYear?: number) => number[];\n\tfirstDayOfWeek: () => Weekday;\n}\n\nexport const BrnCalendarI18nToken = new InjectionToken<BrnCalendarI18nService>('BrnCalendarI18nToken');\n\n/**\n * Provide the calendar i18n configuration.\n */\nexport function provideBrnCalendarI18n(configuration?: BrnCalendarI18n): Provider {\n\treturn {\n\t\tprovide: BrnCalendarI18nToken,\n\t\tuseFactory: () => {\n\t\t\tconst service = new BrnCalendarI18nService();\n\t\t\tservice.use(configuration ?? defaultCalendarI18n);\n\t\t\treturn service;\n\t\t},\n\t};\n}\n\nconst defaultCalendarI18n: BrnCalendarI18n = {\n\tformatWeekdayName: (index: number) => {\n\t\tconst weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\t\treturn weekdays[index];\n\t},\n\tmonths: () => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\tyears: (startYear = 1925, endYear = new Date().getFullYear() + 1) =>\n\t\tArray.from({ length: endYear - startYear + 1 }, (_, i) => startYear + i),\n\tformatHeader: (month: number, year: number) => {\n\t\treturn new Date(year, month).toLocaleDateString(undefined, {\n\t\t\tmonth: 'long',\n\t\t\tyear: 'numeric',\n\t\t});\n\t},\n\tformatMonth: (month: number) => {\n\t\treturn new Date(2000, month).toLocaleDateString(undefined, {\n\t\t\tmonth: 'short',\n\t\t});\n\t},\n\tformatYear: (year: number): string => {\n\t\treturn new Date(year, 0).toLocaleDateString(undefined, {\n\t\t\tyear: 'numeric',\n\t\t});\n\t},\n\tlabelPrevious: () => 'Go to the previous month',\n\tlabelNext: () => 'Go to the next month',\n\tlabelWeekday: (index: number) => {\n\t\tconst weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\t\treturn weekdays[index];\n\t},\n\tfirstDayOfWeek: () => 0,\n};\n\n/**\n * Inject the calendar i18n configuration.\n */\nexport function injectBrnCalendarI18n(): BrnCalendarI18nService {\n\treturn inject(BrnCalendarI18nToken, { optional: true }) ?? inject(BrnCalendarI18nService); // fallback\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BrnCalendarI18nService {\n\tprivate readonly _config = signal<BrnCalendarI18n>(defaultCalendarI18n);\n\n\tpublic readonly config = this._config.asReadonly();\n\n\tpublic use(config: Partial<BrnCalendarI18n>) {\n\t\tthis._config.set({ ...this.config(), ...config });\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButton } from './brn-calendar-cell-button';\nimport { BrnCalendarHeader } from './brn-calendar-header';\nimport { type BrnCalendarBase, provideBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n, type Weekday } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendar]',\n\tproviders: [provideBrnCalendar(BrnCalendar)],\n})\nexport class BrnCalendar<T> implements BrnCalendarBase<T> {\n\tprivate readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The days to highlight. */\n\tpublic readonly highlightDays = input<T[]>([]);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput | undefined>(undefined, {\n\t\ttransform: (v: unknown) => (v === undefined || v === null ? undefined : (numberAttribute(v) as Weekday)),\n\t});\n\n\tprotected readonly _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeader);\n\n\t/** Store the cells */\n\tprotected readonly _cells = contentChildren<BrnCalendarCellButton<T>>(BrnCalendarCellButton, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = linkedSignal(() =>\n\t\tthis.constrainDate(this.defaultFocusedDate() ?? this.date() ?? this._dateAdapter.now()),\n\t);\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this._weekStartsOn();\n\t\tconst month = this.focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this._dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this._dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this._dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this._dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tisSelected(date: T): boolean {\n\t\tconst selected = this.date() as T | undefined;\n\t\treturn selected !== undefined && this._dateAdapter.isSameDay(date, selected);\n\t}\n\n\tselectDate(date: T): void {\n\t\tif (this.isSelected(date)) {\n\t\t\tthis.date.set(undefined);\n\t\t} else {\n\t\t\tthis.date.set(date);\n\t\t}\n\t\tthis.focusedDate.set(date);\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\t/**\n\t * Determine if a date is the start of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisStartOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is the end of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisEndOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is between the start and end dates. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns True if the date is between the start and end dates, false otherwise.\n\t * @internal\n\t */\n\tisBetweenRange(_: T): boolean {\n\t\treturn false;\n\t}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnCalendarCell]',\n\thost: {\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarCell {}\n","import { Directive } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarGrid]',\n\thost: {\n\t\trole: 'grid',\n\t\t'[attr.aria-labelledby]': '_calendar.header()?.id()',\n\t},\n})\nexport class BrnCalendarGrid<T> {\n\t/** Access the calendar component */\n\tprotected readonly _calendar = injectBrnCalendar<T>();\n}\n","import { computed, Directive, effect, inject } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnSelect } from '@spartan-ng/brain/select';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: 'brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]',\n\thost: {\n\t\t'(valueChange)': 'monthSelected($event)',\n\t},\n})\nexport class BrnCalendarMonthSelect {\n\t/** Access the select */\n\tprivate readonly _select = inject(BrnSelect);\n\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\tprotected readonly _selectedMonth = computed(() => {\n\t\treturn this._i18n.config().months()[this._dateAdapter.getMonth(this._calendar.focusedDate())];\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._select.writeValue(this._selectedMonth());\n\t\t});\n\t}\n\n\t/** Focus selected month */\n\tprotected monthSelected(selectedMonth: string): void {\n\t\tconst month = this._i18n\n\t\t\t.config()\n\t\t\t.months()\n\t\t\t.findIndex((month) => month === selectedMonth);\n\t\tconst targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { month });\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarNextButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'data-slot': 'calendar-next-button',\n\t\t'[attr.aria-label]': '_i18n.config().labelNext()',\n\t\t'(click)': 'focusNextMonth()',\n\t},\n})\nexport class BrnCalendarNextButton {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Focus the next month */\n\tprotected focusNextMonth(): void {\n\t\tconst focusedDate = this._calendar.focusedDate();\n\t\tconst date = this._dateAdapter.getDate(focusedDate);\n\n\t\t// go to start of month first, then add 1 month to avoid day overflow\n\t\tlet nextMonthTarget = this._dateAdapter.startOfMonth(focusedDate);\n\t\tnextMonthTarget = this._dateAdapter.add(nextMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(nextMonthTarget);\n\n\t\t// if we are on a date that does not exist in the next month, clamp to the last day of the month.\n\t\tlet targetDate: typeof focusedDate;\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\ttargetDate = lastDay;\n\t\t} else {\n\t\t\ttargetDate = this._dateAdapter.set(nextMonthTarget, { day: date });\n\t\t}\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the constrained date.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarPreviousButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'data-slot': 'calendar-previous-button',\n\t\t'[attr.aria-label]': '_i18n.config().labelPrevious()',\n\t\t'(click)': 'focusPreviousMonth()',\n\t},\n})\nexport class BrnCalendarPreviousButton {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\t/** Focus the previous month */\n\tprotected focusPreviousMonth(): void {\n\t\tconst focusedDate = this._calendar.focusedDate();\n\t\tconst date = this._dateAdapter.getDate(focusedDate);\n\n\t\t// go to start of month first, then subtract 1 month to avoid day overflow\n\t\tlet previousMonthTarget = this._dateAdapter.startOfMonth(focusedDate);\n\t\tpreviousMonthTarget = this._dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this._dateAdapter.endOfMonth(previousMonthTarget);\n\n\t\t// if we are on a date that does not exist in the previous month, clamp to the last day of the month.\n\t\tlet targetDate: typeof focusedDate;\n\t\tif (date > this._dateAdapter.getDate(lastDay)) {\n\t\t\ttargetDate = lastDay;\n\t\t} else {\n\t\t\ttargetDate = this._dateAdapter.set(previousMonthTarget, { day: date });\n\t\t}\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the constrained date.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDirective,\n\ttype EmbeddedViewRef,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tuntracked,\n} from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeek]',\n})\nexport class BrnCalendarWeek<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekContext<T>>>(TemplateRef);\n\n\t// get the weeks to display.\n\tprotected readonly _weeks = computed(() => {\n\t\tconst days = this._calendar.days();\n\t\tconst weeks = [];\n\n\t\tfor (let i = 0; i < days.length; i += 7) {\n\t\t\tweeks.push(days.slice(i, i + 7));\n\t\t}\n\n\t\treturn weeks;\n\t});\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekContext<T>>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeek<T>, ctx: unknown): ctx is BrnWeekContext<T> {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// this should use `afterRenderEffect` but it's not available in the current version\n\t\teffect(() => {\n\t\t\tconst weeks = this._weeks();\n\t\t\tuntracked(() => this._renderWeeks(weeks));\n\t\t});\n\t}\n\n\tprivate _renderWeeks(weeks: T[][]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each week\n\t\tfor (const week of weeks) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: week,\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekContext<T> {\n\t$implicit: T[];\n}\n","import {\n\tChangeDetectorRef,\n\tcomputed,\n\tDirective,\n\teffect,\n\ttype EmbeddedViewRef,\n\tinject,\n\ttype OnDestroy,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeekday]',\n})\nexport class BrnCalendarWeekday<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the date time adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekdayContext>>(TemplateRef);\n\n\t/** Get the days of the week to display in the header. */\n\tprotected readonly _weekdays = computed(() => this._calendar.days().slice(0, 7));\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekdayContext>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeekday<T>, ctx: unknown): ctx is BrnWeekdayContext {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// Create a new view for each day\n\t\teffect(() => {\n\t\t\t// Get the weekdays to display\n\t\t\tconst weekdays = this._weekdays();\n\t\t\t// Render the weekdays\n\t\t\tuntracked(() => this._renderWeekdays(weekdays));\n\t\t});\n\t}\n\n\tprivate _renderWeekdays(weekdays: T[]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each day\n\t\tfor (const day of weekdays) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: this._dateAdapter.getDay(day),\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekdayContext {\n\t$implicit: number;\n}\n","import { Directive, effect, inject } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnSelect } from '@spartan-ng/brain/select';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: 'brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]',\n\thost: {\n\t\t'(valueChange)': 'yearSelected($event)',\n\t},\n})\nexport class BrnCalendarYearSelect {\n\t/** Access the select */\n\tprivate readonly _select = inject(BrnSelect);\n\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly _i18n = injectBrnCalendarI18n();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._select.writeValue(this._dateAdapter.getYear(this._calendar.focusedDate()));\n\t\t});\n\t}\n\n\t/** Focus selected year */\n\tprotected yearSelected(year: number): void {\n\t\tconst targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { year });\n\t\tthis._calendar.focusedDate.set(targetDate);\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButton } from '../brn-calendar-cell-button';\nimport { BrnCalendarHeader } from '../brn-calendar-header';\nimport { type BrnCalendarBase, provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n, type Weekday } from '../i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarMulti]',\n\tproviders: [provideBrnCalendar(BrnCalendarMulti)],\n})\nexport class BrnCalendarMulti<T> implements BrnCalendarBase<T> {\n\tprivate readonly _i18n = injectBrnCalendarI18n();\n\n\t/**\n\t * Determine if a date is the start of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisStartOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is the end of a range. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisEndOfRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determine if a date is between the start and end dates. In a date picker, this is always false.\n\t * @param date The date to check.\n\t * @returns True if the date is between the start and end dates, false otherwise.\n\t * @internal\n\t */\n\tisBetweenRange(_: T): boolean {\n\t\treturn false;\n\t}\n\n\t// /** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The days to highlight. */\n\tpublic readonly highlightDays = input<T[]>([]);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** The minimum selectable dates. */\n\tpublic readonly minSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** The maximum selectable dates. */\n\tpublic readonly maxSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T[]>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput | undefined>(undefined, {\n\t\ttransform: (v: unknown) => (v === undefined || v === null ? undefined : (numberAttribute(v) as Weekday)),\n\t});\n\n\tprotected readonly _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeader);\n\n\t/** Store the cells */\n\tprotected readonly _cells = contentChildren<BrnCalendarCellButton<T>>(BrnCalendarCellButton, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = linkedSignal(() =>\n\t\tthis.constrainDate(this.defaultFocusedDate() ?? this._dateAdapter.now()),\n\t);\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this._weekStartsOn();\n\t\tconst month = this.focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this._dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this._dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this._dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this._dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\tisSelected(date: T): boolean {\n\t\treturn this.date()?.some((d) => this._dateAdapter.isSameDay(d, date)) ?? false;\n\t}\n\n\tselectDate(date: T): void {\n\t\tconst selected = this.date() as T[] | undefined;\n\t\tif (this.isSelected(date)) {\n\t\t\tconst minSelection = this.minSelection();\n\t\t\tif (selected?.length === minSelection) {\n\t\t\t\t// min selection reached, do not allow to deselect\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.date.set(selected?.filter((d) => !this._dateAdapter.isSameDay(d, date)));\n\t\t} else {\n\t\t\tconst maxSelection = this.maxSelection();\n\t\t\tif (selected?.length === maxSelection) {\n\t\t\t\t// max selection reached, reset the selection to date\n\t\t\t\tthis.date.set([date]);\n\t\t\t} else {\n\t\t\t\t// add the date to the selection\n\t\t\t\tthis.date.set([...(selected ?? []), date]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// same as in brn-calendar.directive.ts\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n}\n","import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButton } from '../brn-calendar-cell-button';\nimport { BrnCalendarHeader } from '../brn-calendar-header';\nimport { type BrnCalendarBase, provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n, type Weekday } from '../i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarRange]',\n\tproviders: [provideBrnCalendar(BrnCalendarRange)],\n})\nexport class BrnCalendarRange<T> implements BrnCalendarBase<T> {\n\tprivate readonly _i18n = injectBrnCalendarI18n();\n\t// /** Access the date adapter */\n\tprotected readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The days to highlight. */\n\tpublic readonly highlightDays = input<T[]>([]);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput | undefined>(undefined, {\n\t\ttransform: (v: unknown) => (v === undefined || v === null ? undefined : (numberAttribute(v) as Weekday)),\n\t});\n\n\tprotected readonly _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeader);\n\n\t/** Store the cells */\n\tprotected readonly _cells = contentChildren<BrnCalendarCellButton<T>>(BrnCalendarCellButton, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = linkedSignal(() =>\n\t\tthis.constrainDate(this.defaultFocusedDate() ?? this.startDate() ?? this._dateAdapter.now()),\n\t);\n\n\t/**\n\t * The selected start date\n\t */\n\tpublic readonly startDate = model<T>();\n\n\t/**\n\t * The selected end date\n\t */\n\tpublic readonly endDate = model<T>();\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this._weekStartsOn();\n\t\tconst month = this.focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this._dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this._dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this._dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this._dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\tisSelected(date: T): boolean {\n\t\tconst start = this.startDate();\n\t\tconst end = this.endDate();\n\n\t\tif (!start && !end) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isStartSelected = start ? this._dateAdapter.isSameDay(date, start) : false;\n\t\tconst isEndSelected = end ? this._dateAdapter.isSameDay(date, end) : false;\n\n\t\treturn isStartSelected || isEndSelected;\n\t}\n\n\tselectDate(date: T): void {\n\t\tconst start = this.startDate();\n\t\tconst end = this.endDate();\n\n\t\tif (!start && !end) {\n\t\t\tthis.startDate.set(date);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (start && !end) {\n\t\t\tif (this._dateAdapter.isAfter(date, start)) {\n\t\t\t\tthis.endDate.set(date);\n\t\t\t} else if (this._dateAdapter.isBefore(date, start)) {\n\t\t\t\tthis.startDate.set(date);\n\t\t\t\tthis.endDate.set(start);\n\t\t\t} else if (this._dateAdapter.isSameDay(date, start)) {\n\t\t\t\tthis.endDate.set(date);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// If both start and end are selected, reset selection\n\t\tthis.startDate.set(date);\n\n\t\tthis.endDate.set(undefined);\n\t}\n\n\t// same as in brn-calendar.directive.ts\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\t/**\n\t * Determine if a date is the start of a range.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisStartOfRange(date: T): boolean {\n\t\tconst start = this.startDate();\n\t\treturn start ? this._dateAdapter.isSameDay(date, start) : false;\n\t}\n\n\t/**\n\t * Determine if a date is the end of a range.\n\t * @param date The date to check.\n\t * @returns Always false.\n\t * @internal\n\t */\n\tisEndOfRange(date: T): boolean {\n\t\tconst end = this.endDate();\n\t\treturn end ? this._dateAdapter.isSameDay(date, end) : false;\n\t}\n\n\t/**\n\t * Determine if a date is between the start and end dates.\n\t * @param date The date to check.\n\t * @returns True if the date is between the start and end dates, false otherwise.\n\t * @internal\n\t */\n\tisBetweenRange(date: T): boolean {\n\t\tconst start = this.startDate();\n\t\tconst end = this.endDate();\n\n\t\tif (!start || !end) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (\n\t\t\tthis._dateAdapter.isAfter(date, start) &&\n\t\t\tthis._dateAdapter.isBefore(date, end) &&\n\t\t\t!this._dateAdapter.isSameDay(date, start) &&\n\t\t\t!this._dateAdapter.isSameDay(date, end)\n\t\t);\n\t}\n}\n","import { BrnCalendar } from './lib/brn-calendar';\nimport { BrnCalendarCell } from './lib/brn-calendar-cell';\nimport { BrnCalendarCellButton } from './lib/brn-calendar-cell-button';\nimport { BrnCalendarGrid } from './lib/brn-calendar-grid';\nimport { BrnCalendarHeader } from './lib/brn-calendar-header';\nimport { BrnCalendarMonthSelect } from './lib/brn-calendar-month-select';\nimport { BrnCalendarNextButton } from './lib/brn-calendar-next-button';\nimport { BrnCalendarPreviousButton } from './lib/brn-calendar-previous-button';\nimport { BrnCalendarWeek } from './lib/brn-calendar-week';\nimport { BrnCalendarWeekday } from './lib/brn-calendar-weekday';\nimport { BrnCalendarYearSelect } from './lib/brn-calendar-year-select';\nimport { BrnCalendarMulti } from './lib/mode/brn-calendar-multiple';\nimport { BrnCalendarRange } from './lib/mode/brn-calendar-range';\n\nexport * from './lib/brn-calendar';\nexport * from './lib/brn-calendar-cell';\nexport * from './lib/brn-calendar-cell-button';\nexport * from './lib/brn-calendar-grid';\nexport * from './lib/brn-calendar-header';\nexport * from './lib/brn-calendar-month-select';\nexport * from './lib/brn-calendar-next-button';\nexport * from './lib/brn-calendar-previous-button';\nexport * from './lib/brn-calendar-week';\nexport * from './lib/brn-calendar-weekday';\nexport * from './lib/brn-calendar-year-select';\nexport * from './lib/brn-calendar.token';\nexport * from './lib/i18n/calendar-i18n';\nexport * from './lib/mode/brn-calendar-multiple';\nexport * from './lib/mode/brn-calendar-range';\n\nexport const BrnCalendarImports = [\n\tBrnCalendarCellButton,\n\tBrnCalendarGrid,\n\tBrnCalendarHeader,\n\tBrnCalendarNextButton,\n\tBrnCalendarPreviousButton,\n\tBrnCalendarWeek,\n\tBrnCalendarWeekday,\n\tBrnCalendar,\n\tBrnCalendarCell,\n\tBrnCalendarMulti,\n\tBrnCalendarRange,\n\tBrnCalendarMonthSelect,\n\tBrnCalendarYearSelect,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -264,7 +264,7 @@ class BrnNavigationMenuLink {
|
|
|
264
264
|
this._navigationMenu.value.set(this._navigationMenuItem.id());
|
|
265
265
|
}
|
|
266
266
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnNavigationMenuLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
267
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.17", type: BrnNavigationMenuLink, isStandalone: true, selector: "a[brnNavigationMenuLink]", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "navigation-menu-link" }, listeners: { "click": "onClick()", "mouseenter": "activate()", "focus": "handleFocus()" }, properties: { "attr.data-active": "_isActive() ? \"\" : undefined", "attr.aria-current": "_isActive() ? \"page\" : undefined" } }, providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)], hostDirectives: [{ directive: i1.BrnButton, inputs: ["disabled", "disabled"] }], ngImport: i0 });
|
|
267
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.17", type: BrnNavigationMenuLink, isStandalone: true, selector: "a[brnNavigationMenuLink]", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "navigation-menu-link" }, listeners: { "click": "onClick()", "mouseenter": "activate()", "focus": "handleFocus()" }, properties: { "attr.data-active": "_isActive() ? \"true\" : undefined", "attr.aria-current": "_isActive() ? \"page\" : undefined" } }, providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)], hostDirectives: [{ directive: i1.BrnButton, inputs: ["disabled", "disabled"] }], ngImport: i0 });
|
|
268
268
|
}
|
|
269
269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnNavigationMenuLink, decorators: [{
|
|
270
270
|
type: Directive,
|
|
@@ -281,7 +281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
281
281
|
'(click)': 'onClick()',
|
|
282
282
|
'(mouseenter)': 'activate()',
|
|
283
283
|
'(focus)': 'handleFocus()',
|
|
284
|
-
'[attr.data-active]': '_isActive() ? "" : undefined',
|
|
284
|
+
'[attr.data-active]': '_isActive() ? "true" : undefined',
|
|
285
285
|
'[attr.aria-current]': '_isActive() ? "page" : undefined',
|
|
286
286
|
'data-slot': 'navigation-menu-link',
|
|
287
287
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { createHoverObservable, waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayShiftTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\tprivate readonly _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tconstructor() {\n\t\tthis._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n\t\t\tif (this._config.attachTo?.nativeElement) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._config.attachTo.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayShiftTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import type { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? \"\" : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\n\t\t// Only activate on hover if openOn is 'hover' or menu is already open\n\t\tconst openOn = this._navigationMenu.openOn();\n\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\tif (openOn === 'click' && !isMenuOpen) return;\n\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, delay, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': 'direction()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _anyTriggerHovered$ = new BehaviorSubject<boolean>(false);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * Controls whether the menu opens on hover or click.\n\t * When 'click', initial open requires a click, but hover still switches between items once open.\n\t */\n\tpublic readonly openOn = input<'hover' | 'click'>('hover');\n\n\t/** internal **/\n\tpublic readonly direction = this._dir.valueSignal;\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _isOpenDelayed = signal(true);\n\tpublic readonly isOpenDelayed = this._isOpenDelayed.asReadonly();\n\n\tprivate _skipDelayTimerRef: ReturnType<typeof setTimeout> | undefined;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this.direction())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this.direction() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst isOpen = this.value() !== undefined;\n\t\t\tconst hasSkipDelayDuration = this.skipDelayDuration() > 0;\n\n\t\t\tif (isOpen) {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tif (hasSkipDelayDuration) this._isOpenDelayed.set(false);\n\t\t\t} else {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tthis._skipDelayTimerRef = setTimeout(() => {\n\t\t\t\t\tthis._isOpenDelayed.set(true);\n\t\t\t\t}, this.skipDelayDuration());\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$, this._anyTriggerHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\tswitchMap(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\t\tconst shouldClose = !hovered && !contentHovered && !triggerHovered;\n\t\t\t\t\t// Add delay before closing in click mode to allow for sibling hover transitions\n\t\t\t\t\tif (shouldClose && this.openOn() === 'click') {\n\t\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const).pipe(delay(150));\n\t\t\t\t\t}\n\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const);\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered && !triggerHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Called by triggers to report their hover state for coordination.\n\t * @internal\n\t */\n\tpublic setTriggerHovered(hovered: boolean) {\n\t\tthis._anyTriggerHovered$.next(hovered);\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tclearTimeout(this._skipDelayTimerRef);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_contentId',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Report hover state to parent for coordination\n\t\ttap((e) => this._navigationMenu.setTriggerHovered(e.hover)),\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\t// Block hover-open when openOn='click' and no menu is currently open\n\t\tfilter((e) => {\n\t\t\tconst openOn = this._navigationMenu.openOn();\n\t\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\t\t// Allow if: openOn is 'hover', OR menu is already open, OR this is hover-out\n\t\t\treturn openOn === 'hover' || isMenuOpen || !e.hover;\n\t\t}),\n\t\t// Add stabilization delay for hover-out in click mode to prevent race conditions\n\t\tswitchMap((e) => {\n\t\t\tif (!e.hover && this._navigationMenu.openOn() === 'click') {\n\t\t\t\treturn of(e).pipe(delay(50));\n\t\t\t}\n\t\t\treturn of(e);\n\t\t}),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, direction: this._dir(), orientation: this._orientation() });\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: Event) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\tprotected onEscape(e: Event) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { createHoverObservable, waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayShiftTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\tprivate readonly _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tconstructor() {\n\t\tthis._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n\t\t\tif (this._config.attachTo?.nativeElement) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._config.attachTo.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayShiftTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import type { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? \"true\" : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\n\t\t// Only activate on hover if openOn is 'hover' or menu is already open\n\t\tconst openOn = this._navigationMenu.openOn();\n\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\tif (openOn === 'click' && !isMenuOpen) return;\n\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, delay, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': 'direction()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _anyTriggerHovered$ = new BehaviorSubject<boolean>(false);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * Controls whether the menu opens on hover or click.\n\t * When 'click', initial open requires a click, but hover still switches between items once open.\n\t */\n\tpublic readonly openOn = input<'hover' | 'click'>('hover');\n\n\t/** internal **/\n\tpublic readonly direction = this._dir.valueSignal;\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _isOpenDelayed = signal(true);\n\tpublic readonly isOpenDelayed = this._isOpenDelayed.asReadonly();\n\n\tprivate _skipDelayTimerRef: ReturnType<typeof setTimeout> | undefined;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this.direction())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this.direction() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst isOpen = this.value() !== undefined;\n\t\t\tconst hasSkipDelayDuration = this.skipDelayDuration() > 0;\n\n\t\t\tif (isOpen) {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tif (hasSkipDelayDuration) this._isOpenDelayed.set(false);\n\t\t\t} else {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tthis._skipDelayTimerRef = setTimeout(() => {\n\t\t\t\t\tthis._isOpenDelayed.set(true);\n\t\t\t\t}, this.skipDelayDuration());\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$, this._anyTriggerHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\tswitchMap(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\t\tconst shouldClose = !hovered && !contentHovered && !triggerHovered;\n\t\t\t\t\t// Add delay before closing in click mode to allow for sibling hover transitions\n\t\t\t\t\tif (shouldClose && this.openOn() === 'click') {\n\t\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const).pipe(delay(150));\n\t\t\t\t\t}\n\t\t\t\t\treturn of([hovered, contentHovered, triggerHovered] as const);\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered, triggerHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered && !triggerHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Called by triggers to report their hover state for coordination.\n\t * @internal\n\t */\n\tpublic setTriggerHovered(hovered: boolean) {\n\t\tthis._anyTriggerHovered$.next(hovered);\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tclearTimeout(this._skipDelayTimerRef);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_contentId',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Report hover state to parent for coordination\n\t\ttap((e) => this._navigationMenu.setTriggerHovered(e.hover)),\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\t// Block hover-open when openOn='click' and no menu is currently open\n\t\tfilter((e) => {\n\t\t\tconst openOn = this._navigationMenu.openOn();\n\t\t\tconst isMenuOpen = this._navigationMenu.value() !== undefined;\n\t\t\t// Allow if: openOn is 'hover', OR menu is already open, OR this is hover-out\n\t\t\treturn openOn === 'hover' || isMenuOpen || !e.hover;\n\t\t}),\n\t\t// Add stabilization delay for hover-out in click mode to prevent race conditions\n\t\tswitchMap((e) => {\n\t\t\tif (!e.hover && this._navigationMenu.openOn() === 'click') {\n\t\t\t\treturn of(e).pipe(delay(50));\n\t\t\t}\n\t\t\treturn of(e);\n\t\t}),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, direction: this._dir(), orientation: this._orientation() });\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: Event) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\tprotected onEscape(e: Event) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|