@spartan-ng/brain 0.0.1-alpha.583 → 0.0.1-alpha.585
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/avatar/index.d.ts +1 -3
- package/calendar/index.d.ts +15 -1
- package/fesm2022/spartan-ng-brain-avatar.mjs +2 -3
- package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-select.mjs +4 -4
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-calendar.mjs","sources":["../tmp-esm2022/calendar/lib/brn-calendar.token.js","../tmp-esm2022/calendar/lib/brn-calendar-cell-button.js","../tmp-esm2022/calendar/lib/brn-calendar-header.js","../tmp-esm2022/calendar/lib/i18n/calendar-i18n.js","../tmp-esm2022/calendar/lib/brn-calendar.js","../tmp-esm2022/calendar/lib/brn-calendar-cell.js","../tmp-esm2022/calendar/lib/brn-calendar-grid.js","../tmp-esm2022/calendar/lib/brn-calendar-month-select.js","../tmp-esm2022/calendar/lib/brn-calendar-next-button.js","../tmp-esm2022/calendar/lib/brn-calendar-previous-button.js","../tmp-esm2022/calendar/lib/brn-calendar-week.js","../tmp-esm2022/calendar/lib/brn-calendar-weekday.js","../tmp-esm2022/calendar/lib/brn-calendar-year-select.js","../tmp-esm2022/calendar/lib/mode/brn-calendar-multiple.js","../tmp-esm2022/calendar/lib/mode/brn-calendar-range.js","../tmp-esm2022/calendar/index.js","../tmp-esm2022/calendar/spartan-ng-brain-calendar.js"],"sourcesContent":["import { InjectionToken, inject, } from '@angular/core';\nexport const BrnCalendarToken = new InjectionToken('BrnCalendarToken');\nexport function provideBrnCalendar(instance) {\n return { provide: BrnCalendarToken, useExisting: instance };\n}\n/**\n * Inject the calendar component.\n */\nexport function injectBrnCalendar() {\n return inject(BrnCalendarToken);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sY0FBYyxFQUlkLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQXFCdkIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQTJCLGtCQUFrQixDQUFDLENBQUM7QUFFakcsTUFBTSxVQUFVLGtCQUFrQixDQUFJLFFBQWtDO0lBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUI7SUFDaEMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQXVCLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdHR5cGUgRXhpc3RpbmdQcm92aWRlcixcblx0SW5qZWN0aW9uVG9rZW4sXG5cdHR5cGUgU2lnbmFsLFxuXHR0eXBlIFR5cGUsXG5cdHR5cGUgV3JpdGFibGVTaWduYWwsXG5cdGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJybkNhbGVuZGFySGVhZGVyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXItaGVhZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRpc1NlbGVjdGVkOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0c2VsZWN0RGF0ZTogKGRhdGU6IFQpID0+IHZvaWQ7XG5cblx0Y29uc3RyYWluRGF0ZTogKGRhdGU6IFQpID0+IFQ7XG5cdGlzRGF0ZURpc2FibGVkOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0c2V0Rm9jdXNlZERhdGU6IChkYXRlOiBUKSA9PiB2b2lkO1xuXG5cdGlzU3RhcnRPZlJhbmdlOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0aXNFbmRPZlJhbmdlOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0aXNCZXR3ZWVuUmFuZ2U6IChkYXRlOiBUKSA9PiBib29sZWFuO1xuXG5cdGRpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj47XG5cdGZvY3VzZWREYXRlOiBXcml0YWJsZVNpZ25hbDxUPjtcblx0aGVhZGVyOiBTaWduYWw8QnJuQ2FsZW5kYXJIZWFkZXIgfCB1bmRlZmluZWQ+O1xuXHRkYXlzOiBTaWduYWw8VFtdPjtcbn1cblxuZXhwb3J0IGNvbnN0IEJybkNhbGVuZGFyVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnJuQ2FsZW5kYXJCYXNlPHVua25vd24+PignQnJuQ2FsZW5kYXJUb2tlbicpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJybkNhbGVuZGFyPFQ+KGluc3RhbmNlOiBUeXBlPEJybkNhbGVuZGFyQmFzZTxUPj4pOiBFeGlzdGluZ1Byb3ZpZGVyIHtcblx0cmV0dXJuIHsgcHJvdmlkZTogQnJuQ2FsZW5kYXJUb2tlbiwgdXNlRXhpc3Rpbmc6IGluc3RhbmNlIH07XG59XG5cbi8qKlxuICogSW5qZWN0IHRoZSBjYWxlbmRhciBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcm5DYWxlbmRhcjxUPigpOiBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRyZXR1cm4gaW5qZWN0KEJybkNhbGVuZGFyVG9rZW4pIGFzIEJybkNhbGVuZGFyQmFzZTxUPjtcbn1cbiJdfQ==","import { computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarCellButton {\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar component */\n _calendar = injectBrnCalendar();\n /** Access the element ref */\n _elementRef = inject(ElementRef);\n /** The date this cell represents */\n date = input.required();\n /** Whether this date is currently selected */\n selected = computed(() => this._calendar.isSelected(this.date()));\n start = computed(() => this._calendar.isStartOfRange(this.date()));\n end = computed(() => this._calendar.isEndOfRange(this.date()));\n betweenRange = computed(() => this._calendar.isBetweenRange(this.date()));\n /** Whether this date is focusable */\n focusable = computed(() => this._dateAdapter.isSameDay(this._calendar.focusedDate(), this.date()));\n outside = computed(() => {\n const focusedDate = this._calendar.focusedDate();\n return !this._dateAdapter.isSameMonth(this.date(), focusedDate);\n });\n /** Whether this date is today */\n today = computed(() => this._dateAdapter.isSameDay(this.date(), this._dateAdapter.now()));\n /** Whether this date is disabled */\n disabled = computed(() => this._calendar.isDateDisabled(this.date()) || this._calendar.disabled());\n /**\n * Focus the previous cell.\n */\n focusPrevious(event) {\n event.preventDefault();\n event.stopPropagation();\n // in rtl, the arrow keys are reversed.\n const targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n days: this.getDirection() === 'rtl' ? 1 : -1,\n });\n this._calendar.setFocusedDate(targetDate);\n }\n /**\n * Focus the next cell.\n */\n focusNext(event) {\n event.preventDefault();\n event.stopPropagation();\n const targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n days: this.getDirection() === 'rtl' ? -1 : 1,\n });\n this._calendar.setFocusedDate(targetDate);\n }\n /**\n * Focus the above cell.\n */\n focusAbove(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.subtract(this._calendar.focusedDate(), { days: 7 }));\n }\n /**\n * Focus the below cell.\n */\n focusBelow(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.add(this._calendar.focusedDate(), { days: 7 }));\n }\n /**\n * Focus the first date of the month.\n */\n focusFirst(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.startOfMonth(this._calendar.focusedDate()));\n }\n /**\n * Focus the last date of the month.\n */\n focusLast(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.endOfMonth(this._calendar.focusedDate()));\n }\n /**\n * Focus the same date in the previous month.\n */\n focusPreviousMonth(event) {\n event.preventDefault();\n event.stopPropagation();\n const date = this._dateAdapter.getDate(this._calendar.focusedDate());\n let previousMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n previousMonthTarget = this._dateAdapter.subtract(previousMonthTarget, { months: 1 });\n const lastDay = this._dateAdapter.endOfMonth(previousMonthTarget);\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this._dateAdapter.getDate(lastDay)) {\n this._calendar.setFocusedDate(lastDay);\n }\n else {\n this._calendar.setFocusedDate(this._dateAdapter.set(previousMonthTarget, { day: date }));\n }\n }\n /**\n * Focus the same date in the next month.\n */\n focusNextMonth(event) {\n event.preventDefault();\n event.stopPropagation();\n const date = this._dateAdapter.getDate(this._calendar.focusedDate());\n let nextMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n nextMonthTarget = this._dateAdapter.add(nextMonthTarget, { months: 1 });\n const lastDay = this._dateAdapter.endOfMonth(nextMonthTarget);\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this._dateAdapter.getDate(lastDay)) {\n this._calendar.setFocusedDate(lastDay);\n }\n else {\n this._calendar.setFocusedDate(this._dateAdapter.set(nextMonthTarget, { day: date }));\n }\n }\n /**\n * Get the direction of the element.\n */\n getDirection() {\n return getComputedStyle(this._elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n focus() {\n this._elementRef.nativeElement.focus();\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCellButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnCalendarCellButton, isStandalone: true, selector: \"button[brnCalendarCellButton]\", inputs: { date: { classPropertyName: \"date\", publicName: \"date\", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { \"role\": \"gridcell\", \"type\": \"button\" }, listeners: { \"click\": \"_calendar.selectDate(date())\", \"keydown.arrowLeft\": \"focusPrevious($event)\", \"keydown.arrowRight\": \"focusNext($event)\", \"keydown.arrowUp\": \"focusAbove($event)\", \"keydown.arrowDown\": \"focusBelow($event)\", \"keydown.home\": \"focusFirst($event)\", \"keydown.end\": \"focusLast($event)\", \"keydown.pageUp\": \"focusPreviousMonth($event)\", \"keydown.pageDown\": \"focusNextMonth($event)\" }, properties: { \"tabindex\": \"focusable() ? 0 : -1\", \"attr.data-outside\": \"!selected() && outside() && (!end() && !start())? '' : null\", \"attr.data-today\": \"today() && !selected() ? '' : null\", \"attr.data-selected\": \"selected() ? '' : null\", \"attr.data-disabled\": \"disabled() ? '' : null\", \"attr.aria-selected\": \"selected() ? 'true' : null\", \"attr.aria-disabled\": \"disabled() ? 'true' : null\", \"attr.data-range-start\": \"start() ? \\\"\\\" : null\", \"attr.data-range-end\": \"end() ? \\\"\\\" : null\", \"attr.data-range-between\": \"betweenRange() ? \\\"\\\" : null\", \"disabled\": \"disabled()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCellButton, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[brnCalendarCellButton]',\n host: {\n role: 'gridcell',\n '[tabindex]': 'focusable() ? 0 : -1',\n type: 'button',\n '[attr.data-outside]': \"!selected() && outside() && (!end() && !start())? '' : null\",\n '[attr.data-today]': \"today() && !selected() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.aria-selected]': \"selected() ? 'true' : null\",\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.data-range-start]': 'start() ? \"\" : null',\n '[attr.data-range-end]': 'end() ? \"\" : null',\n '[attr.data-range-between]': 'betweenRange() ? \"\" : null',\n '[disabled]': 'disabled()',\n '(click)': '_calendar.selectDate(date())',\n '(keydown.arrowLeft)': 'focusPrevious($event)',\n '(keydown.arrowRight)': 'focusNext($event)',\n '(keydown.arrowUp)': 'focusAbove($event)',\n '(keydown.arrowDown)': 'focusBelow($event)',\n '(keydown.home)': 'focusFirst($event)',\n '(keydown.end)': 'focusLast($event)',\n '(keydown.pageUp)': 'focusPreviousMonth($event)',\n '(keydown.pageDown)': 'focusNextMonth($event)',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWNlbGwtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUE2QnpELE1BQU0sT0FBTyxxQkFBcUI7SUFDakMsOEJBQThCO0lBQ1gsWUFBWSxHQUFHLGlCQUFpQixFQUFLLENBQUM7SUFFekQsb0NBQW9DO0lBQ2pCLFNBQVMsR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXRELDZCQUE2QjtJQUNaLFdBQVcsR0FBRyxNQUFNLENBQWdDLFVBQVUsQ0FBQyxDQUFDO0lBRWpGLG9DQUFvQztJQUNwQixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBSyxDQUFDO0lBRTNDLDhDQUE4QztJQUM5QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUYscUNBQXFDO0lBQ3JCLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5HLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztJQUVILGlDQUFpQztJQUNqQixLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUxRyxvQ0FBb0M7SUFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFbkg7O09BRUc7SUFDTyxhQUFhLENBQUMsS0FBWTtRQUNuQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLHVDQUF1QztRQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RFLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxTQUFTLENBQUMsS0FBWTtRQUMvQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDdEUsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNPLFVBQVUsQ0FBQyxLQUFZO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVEOztPQUVHO0lBQ08sVUFBVSxDQUFDLEtBQVk7UUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxVQUFVLENBQUMsS0FBWTtRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVMsQ0FBQyxLQUFZO1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVEOztPQUVHO0lBQ08sa0JBQWtCLENBQUMsS0FBWTtRQUN4QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVyRSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RixtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFbEUsNEdBQTRHO1FBQzVHLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNPLGNBQWMsQ0FBQyxLQUFZO1FBQ3BDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRixlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFOUQsd0dBQXdHO1FBQ3hHLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZO1FBQ25CLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RixDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7MEhBdkpXLHFCQUFxQjs4R0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQTNCakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxJQUFJLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLFlBQVksRUFBRSxzQkFBc0I7d0JBQ3BDLElBQUksRUFBRSxRQUFRO3dCQUNkLHFCQUFxQixFQUFFLDZEQUE2RDt3QkFDcEYsbUJBQW1CLEVBQUUsb0NBQW9DO3dCQUN6RCxzQkFBc0IsRUFBRSx3QkFBd0I7d0JBQ2hELHNCQUFzQixFQUFFLHdCQUF3Qjt3QkFDaEQsc0JBQXNCLEVBQUUsNEJBQTRCO3dCQUNwRCxzQkFBc0IsRUFBRSw0QkFBNEI7d0JBQ3BELHlCQUF5QixFQUFFLHFCQUFxQjt3QkFDaEQsdUJBQXVCLEVBQUUsbUJBQW1CO3dCQUM1QywyQkFBMkIsRUFBRSw0QkFBNEI7d0JBQ3pELFlBQVksRUFBRSxZQUFZO3dCQUMxQixTQUFTLEVBQUUsOEJBQThCO3dCQUN6QyxxQkFBcUIsRUFBRSx1QkFBdUI7d0JBQzlDLHNCQUFzQixFQUFFLG1CQUFtQjt3QkFDM0MsbUJBQW1CLEVBQUUsb0JBQW9CO3dCQUN6QyxxQkFBcUIsRUFBRSxvQkFBb0I7d0JBQzNDLGdCQUFnQixFQUFFLG9CQUFvQjt3QkFDdEMsZUFBZSxFQUFFLG1CQUFtQjt3QkFDcEMsa0JBQWtCLEVBQUUsNEJBQTRCO3dCQUNoRCxvQkFBb0IsRUFBRSx3QkFBd0I7cUJBQzlDO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXIgfSBmcm9tICcuL2Jybi1jYWxlbmRhci50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2J1dHRvblticm5DYWxlbmRhckNlbGxCdXR0b25dJyxcblx0aG9zdDoge1xuXHRcdHJvbGU6ICdncmlkY2VsbCcsXG5cdFx0J1t0YWJpbmRleF0nOiAnZm9jdXNhYmxlKCkgPyAwIDogLTEnLFxuXHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdCdbYXR0ci5kYXRhLW91dHNpZGVdJzogXCIhc2VsZWN0ZWQoKSAmJiBvdXRzaWRlKCkgJiYgKCFlbmQoKSAmJiAhc3RhcnQoKSk/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5kYXRhLXRvZGF5XSc6IFwidG9kYXkoKSAmJiAhc2VsZWN0ZWQoKSA/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5kYXRhLXNlbGVjdGVkXSc6IFwic2VsZWN0ZWQoKSA/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5kYXRhLWRpc2FibGVkXSc6IFwiZGlzYWJsZWQoKSA/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6IFwic2VsZWN0ZWQoKSA/ICd0cnVlJyA6IG51bGxcIixcblx0XHQnW2F0dHIuYXJpYS1kaXNhYmxlZF0nOiBcImRpc2FibGVkKCkgPyAndHJ1ZScgOiBudWxsXCIsXG5cdFx0J1thdHRyLmRhdGEtcmFuZ2Utc3RhcnRdJzogJ3N0YXJ0KCkgPyBcIlwiIDogbnVsbCcsXG5cdFx0J1thdHRyLmRhdGEtcmFuZ2UtZW5kXSc6ICdlbmQoKSA/IFwiXCIgOiBudWxsJyxcblx0XHQnW2F0dHIuZGF0YS1yYW5nZS1iZXR3ZWVuXSc6ICdiZXR3ZWVuUmFuZ2UoKSA/IFwiXCIgOiBudWxsJyxcblx0XHQnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcblx0XHQnKGNsaWNrKSc6ICdfY2FsZW5kYXIuc2VsZWN0RGF0ZShkYXRlKCkpJyxcblx0XHQnKGtleWRvd24uYXJyb3dMZWZ0KSc6ICdmb2N1c1ByZXZpb3VzKCRldmVudCknLFxuXHRcdCcoa2V5ZG93bi5hcnJvd1JpZ2h0KSc6ICdmb2N1c05leHQoJGV2ZW50KScsXG5cdFx0JyhrZXlkb3duLmFycm93VXApJzogJ2ZvY3VzQWJvdmUoJGV2ZW50KScsXG5cdFx0JyhrZXlkb3duLmFycm93RG93biknOiAnZm9jdXNCZWxvdygkZXZlbnQpJyxcblx0XHQnKGtleWRvd24uaG9tZSknOiAnZm9jdXNGaXJzdCgkZXZlbnQpJyxcblx0XHQnKGtleWRvd24uZW5kKSc6ICdmb2N1c0xhc3QoJGV2ZW50KScsXG5cdFx0JyhrZXlkb3duLnBhZ2VVcCknOiAnZm9jdXNQcmV2aW91c01vbnRoKCRldmVudCknLFxuXHRcdCcoa2V5ZG93bi5wYWdlRG93biknOiAnZm9jdXNOZXh0TW9udGgoJGV2ZW50KScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyQ2VsbEJ1dHRvbjxUPiB7XG5cdC8qKiBBY2Nlc3MgdGhlIGRhdGUgYWRhcHRlciAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGVBZGFwdGVyID0gaW5qZWN0RGF0ZUFkYXB0ZXI8VD4oKTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciBjb21wb25lbnQgKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyPFQ+KCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZWxlbWVudCByZWYgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cblx0LyoqIFRoZSBkYXRlIHRoaXMgY2VsbCByZXByZXNlbnRzICovXG5cdHB1YmxpYyByZWFkb25seSBkYXRlID0gaW5wdXQucmVxdWlyZWQ8VD4oKTtcblxuXHQvKiogV2hldGhlciB0aGlzIGRhdGUgaXMgY3VycmVudGx5IHNlbGVjdGVkICovXG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NhbGVuZGFyLmlzU2VsZWN0ZWQodGhpcy5kYXRlKCkpKTtcblx0cHVibGljIHJlYWRvbmx5IHN0YXJ0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY2FsZW5kYXIuaXNTdGFydE9mUmFuZ2UodGhpcy5kYXRlKCkpKTtcblx0cHVibGljIHJlYWRvbmx5IGVuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NhbGVuZGFyLmlzRW5kT2ZSYW5nZSh0aGlzLmRhdGUoKSkpO1xuXHRwdWJsaWMgcmVhZG9ubHkgYmV0d2VlblJhbmdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY2FsZW5kYXIuaXNCZXR3ZWVuUmFuZ2UodGhpcy5kYXRlKCkpKTtcblxuXHQvKiogV2hldGhlciB0aGlzIGRhdGUgaXMgZm9jdXNhYmxlICovXG5cdHB1YmxpYyByZWFkb25seSBmb2N1c2FibGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwgdGhpcy5kYXRlKCkpKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgb3V0c2lkZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBmb2N1c2VkRGF0ZSA9IHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCk7XG5cdFx0cmV0dXJuICF0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVNb250aCh0aGlzLmRhdGUoKSwgZm9jdXNlZERhdGUpO1xuXHR9KTtcblxuXHQvKiogV2hldGhlciB0aGlzIGRhdGUgaXMgdG9kYXkgKi9cblx0cHVibGljIHJlYWRvbmx5IHRvZGF5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lRGF5KHRoaXMuZGF0ZSgpLCB0aGlzLl9kYXRlQWRhcHRlci5ub3coKSkpO1xuXG5cdC8qKiBXaGV0aGVyIHRoaXMgZGF0ZSBpcyBkaXNhYmxlZCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jYWxlbmRhci5pc0RhdGVEaXNhYmxlZCh0aGlzLmRhdGUoKSkgfHwgdGhpcy5fY2FsZW5kYXIuZGlzYWJsZWQoKSk7XG5cblx0LyoqXG5cdCAqIEZvY3VzIHRoZSBwcmV2aW91cyBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzUHJldmlvdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdC8vIGluIHJ0bCwgdGhlIGFycm93IGtleXMgYXJlIHJldmVyc2VkLlxuXHRcdGNvbnN0IHRhcmdldERhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGQodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwge1xuXHRcdFx0ZGF5czogdGhpcy5nZXREaXJlY3Rpb24oKSA9PT0gJ3J0bCcgPyAxIDogLTEsXG5cdFx0fSk7XG5cblx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZSh0YXJnZXREYXRlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb2N1cyB0aGUgbmV4dCBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzTmV4dChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0Y29uc3QgdGFyZ2V0RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7XG5cdFx0XHRkYXlzOiB0aGlzLmdldERpcmVjdGlvbigpID09PSAncnRsJyA/IC0xIDogMSxcblx0XHR9KTtcblxuXHRcdHRoaXMuX2NhbGVuZGFyLnNldEZvY3VzZWREYXRlKHRhcmdldERhdGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvY3VzIHRoZSBhYm92ZSBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzQWJvdmUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZSh0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7IGRheXM6IDcgfSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvY3VzIHRoZSBiZWxvdyBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzQmVsb3coZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZSh0aGlzLl9kYXRlQWRhcHRlci5hZGQodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwgeyBkYXlzOiA3IH0pKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb2N1cyB0aGUgZmlyc3QgZGF0ZSBvZiB0aGUgbW9udGguXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNGaXJzdChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuX2NhbGVuZGFyLnNldEZvY3VzZWREYXRlKHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZNb250aCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpKSk7XG5cdH1cblxuXHQvKipcblx0ICogRm9jdXMgdGhlIGxhc3QgZGF0ZSBvZiB0aGUgbW9udGguXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNMYXN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5fY2FsZW5kYXIuc2V0Rm9jdXNlZERhdGUodGhpcy5fZGF0ZUFkYXB0ZXIuZW5kT2ZNb250aCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpKSk7XG5cdH1cblxuXHQvKipcblx0ICogRm9jdXMgdGhlIHNhbWUgZGF0ZSBpbiB0aGUgcHJldmlvdXMgbW9udGguXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNQcmV2aW91c01vbnRoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRjb25zdCBkYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpKTtcblxuXHRcdGxldCBwcmV2aW91c01vbnRoVGFyZ2V0ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpO1xuXHRcdHByZXZpb3VzTW9udGhUYXJnZXQgPSB0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdChwcmV2aW91c01vbnRoVGFyZ2V0LCB7IG1vbnRoczogMSB9KTtcblxuXHRcdGNvbnN0IGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZk1vbnRoKHByZXZpb3VzTW9udGhUYXJnZXQpO1xuXG5cdFx0Ly8gaWYgd2UgYXJlIG9uIGEgZGF0ZSB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBtb250aCwgd2Ugc2hvdWxkIGZvY3VzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0aWYgKGRhdGUgPiB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGxhc3REYXkpKSB7XG5cdFx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZShsYXN0RGF5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY2FsZW5kYXIuc2V0Rm9jdXNlZERhdGUodGhpcy5fZGF0ZUFkYXB0ZXIuc2V0KHByZXZpb3VzTW9udGhUYXJnZXQsIHsgZGF5OiBkYXRlIH0pKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9jdXMgdGhlIHNhbWUgZGF0ZSBpbiB0aGUgbmV4dCBtb250aC5cblx0ICovXG5cdHByb3RlY3RlZCBmb2N1c05leHRNb250aChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0Y29uc3QgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldERhdGUodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSk7XG5cblx0XHRsZXQgbmV4dE1vbnRoVGFyZ2V0ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpO1xuXHRcdG5leHRNb250aFRhcmdldCA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChuZXh0TW9udGhUYXJnZXQsIHsgbW9udGhzOiAxIH0pO1xuXG5cdFx0Y29uc3QgbGFzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mTW9udGgobmV4dE1vbnRoVGFyZ2V0KTtcblxuXHRcdC8vIGlmIHdlIGFyZSBvbiBhIGRhdGUgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbmV4dCBtb250aCwgd2Ugc2hvdWxkIGZvY3VzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0aWYgKGRhdGUgPiB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGxhc3REYXkpKSB7XG5cdFx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZShsYXN0RGF5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY2FsZW5kYXIuc2V0Rm9jdXNlZERhdGUodGhpcy5fZGF0ZUFkYXB0ZXIuc2V0KG5leHRNb250aFRhcmdldCwgeyBkYXk6IGRhdGUgfSkpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudC5cblx0ICovXG5cdHByaXZhdGUgZ2V0RGlyZWN0aW9uKCk6ICdsdHInIHwgJ3J0bCcge1xuXHRcdHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJyA/ICdydGwnIDogJ2x0cic7XG5cdH1cblxuXHRmb2N1cygpOiB2b2lkIHtcblx0XHR0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0fVxufVxuIl19","import { Directive, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nlet uniqueId = 0;\nexport class BrnCalendarHeader {\n /** The unique id for the header */\n id = input(`brn-calendar-header-${++uniqueId}`);\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnCalendarHeader, isStandalone: true, selector: \"[brnCalendarHeader]\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"aria-live\": \"polite\", \"role\": \"presentation\" }, properties: { \"id\": \"id()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarHeader, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarHeader]',\n host: {\n '[id]': 'id()',\n 'aria-live': 'polite',\n role: 'presentation',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9icm4tY2FsZW5kYXItaGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVqRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFVakIsTUFBTSxPQUFPLGlCQUFpQjtJQUM3QixtQ0FBbUM7SUFDbkIsRUFBRSxHQUFHLEtBQUssQ0FBUyx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDOzBIQUY1RCxpQkFBaUI7OEdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFSN0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixJQUFJLEVBQUU7d0JBQ0wsTUFBTSxFQUFFLE1BQU07d0JBQ2QsV0FBVyxFQUFFLFFBQVE7d0JBQ3JCLElBQUksRUFBRSxjQUFjO3FCQUNwQjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFySGVhZGVyXScsXG5cdGhvc3Q6IHtcblx0XHQnW2lkXSc6ICdpZCgpJyxcblx0XHQnYXJpYS1saXZlJzogJ3BvbGl0ZScsXG5cdFx0cm9sZTogJ3ByZXNlbnRhdGlvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFySGVhZGVyIHtcblx0LyoqIFRoZSB1bmlxdWUgaWQgZm9yIHRoZSBoZWFkZXIgKi9cblx0cHVibGljIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nPihgYnJuLWNhbGVuZGFyLWhlYWRlci0keysrdW5pcXVlSWR9YCk7XG59XG4iXX0=","import { inject, Injectable, InjectionToken, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const BrnCalendarI18nToken = new InjectionToken('BrnCalendarI18nToken');\n/**\n * Provide the calendar i18n configuration.\n */\nexport function provideBrnCalendarI18n(configuration) {\n return {\n provide: BrnCalendarI18nToken,\n useFactory: () => {\n const service = new BrnCalendarI18nService();\n service.use(configuration ?? defaultCalendarI18n);\n return service;\n },\n };\n}\nconst defaultCalendarI18n = {\n formatWeekdayName: (index) => {\n const weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n return weekdays[index];\n },\n months: () => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n years: (startYear = 1925, endYear = new Date().getFullYear() + 1) => Array.from({ length: endYear - startYear + 1 }, (_, i) => startYear + i),\n formatHeader: (month, year) => {\n return new Date(year, month).toLocaleDateString(undefined, {\n month: 'long',\n year: 'numeric',\n });\n },\n formatMonth: (month) => {\n return new Date(2000, month).toLocaleDateString(undefined, {\n month: 'short',\n });\n },\n formatYear: (year) => {\n return new Date(year, 0).toLocaleDateString(undefined, {\n year: 'numeric',\n });\n },\n labelPrevious: () => 'Go to the previous month',\n labelNext: () => 'Go to the next month',\n labelWeekday: (index) => {\n const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return weekdays[index];\n },\n firstDayOfWeek: () => 0,\n};\n/**\n * Inject the calendar i18n configuration.\n */\nexport function injectBrnCalendarI18n() {\n return inject(BrnCalendarI18nToken, { optional: true }) ?? inject(BrnCalendarI18nService); // fallback\n}\nexport class BrnCalendarI18nService {\n _config = signal(defaultCalendarI18n);\n config = this._config.asReadonly();\n use(config) {\n this._config.set({ ...this.config(), ...config });\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarI18nService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarI18nService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9pMThuL2NhbGVuZGFyLWkxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBaUIxRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsc0JBQXNCLENBQUMsQ0FBQztBQUV2Rzs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxhQUErQjtJQUNyRSxPQUFPO1FBQ04sT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sT0FBTyxDQUFDO1FBQ2hCLENBQUM7S0FDRCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sbUJBQW1CLEdBQW9CO0lBQzVDLGlCQUFpQixFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDbEcsS0FBSyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUNuRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLFlBQVksRUFBRSxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUM3QyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDMUQsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsU0FBUztTQUNmLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUM5QixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDMUQsS0FBSyxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsVUFBVSxFQUFFLENBQUMsSUFBWSxFQUFVLEVBQUU7UUFDcEMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFO1lBQ3RELElBQUksRUFBRSxTQUFTO1NBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQywwQkFBMEI7SUFDL0MsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLHNCQUFzQjtJQUN2QyxZQUFZLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztDQUN2QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxXQUFXO0FBQ3ZHLENBQUM7QUFHRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pCLE9BQU8sR0FBRyxNQUFNLENBQWtCLG1CQUFtQixDQUFDLENBQUM7SUFFeEQsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFNUMsR0FBRyxDQUFDLE1BQWdDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7MEhBUFcsc0JBQXNCOzhIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIHR5cGUgUHJvdmlkZXIsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBXZWVrZGF5ID0gMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcblxuZXhwb3J0IGludGVyZmFjZSBCcm5DYWxlbmRhckkxOG4ge1xuXHRmb3JtYXRXZWVrZGF5TmFtZTogKGluZGV4OiBudW1iZXIpID0+IHN0cmluZztcblx0Zm9ybWF0SGVhZGVyOiAobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSA9PiBzdHJpbmc7XG5cdGZvcm1hdFllYXI6ICh5ZWFyOiBudW1iZXIpID0+IHN0cmluZztcblx0Zm9ybWF0TW9udGg6IChtb250aDogbnVtYmVyKSA9PiBzdHJpbmc7XG5cdGxhYmVsUHJldmlvdXM6ICgpID0+IHN0cmluZztcblx0bGFiZWxOZXh0OiAoKSA9PiBzdHJpbmc7XG5cdGxhYmVsV2Vla2RheTogKGluZGV4OiBudW1iZXIpID0+IHN0cmluZztcblx0bW9udGhzOiAoKSA9PiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZ107XG5cdHllYXJzOiAoc3RhcnRZZWFyPzogbnVtYmVyLCBlbmRZZWFyPzogbnVtYmVyKSA9PiBudW1iZXJbXTtcblx0Zmlyc3REYXlPZldlZWs6ICgpID0+IFdlZWtkYXk7XG59XG5cbmV4cG9ydCBjb25zdCBCcm5DYWxlbmRhckkxOG5Ub2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCcm5DYWxlbmRhckkxOG5TZXJ2aWNlPignQnJuQ2FsZW5kYXJJMThuVG9rZW4nKTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBjYWxlbmRhciBpMThuIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQnJuQ2FsZW5kYXJJMThuKGNvbmZpZ3VyYXRpb24/OiBCcm5DYWxlbmRhckkxOG4pOiBQcm92aWRlciB7XG5cdHJldHVybiB7XG5cdFx0cHJvdmlkZTogQnJuQ2FsZW5kYXJJMThuVG9rZW4sXG5cdFx0dXNlRmFjdG9yeTogKCkgPT4ge1xuXHRcdFx0Y29uc3Qgc2VydmljZSA9IG5ldyBCcm5DYWxlbmRhckkxOG5TZXJ2aWNlKCk7XG5cdFx0XHRzZXJ2aWNlLnVzZShjb25maWd1cmF0aW9uID8/IGRlZmF1bHRDYWxlbmRhckkxOG4pO1xuXHRcdFx0cmV0dXJuIHNlcnZpY2U7XG5cdFx0fSxcblx0fTtcbn1cblxuY29uc3QgZGVmYXVsdENhbGVuZGFySTE4bjogQnJuQ2FsZW5kYXJJMThuID0ge1xuXHRmb3JtYXRXZWVrZGF5TmFtZTogKGluZGV4OiBudW1iZXIpID0+IHtcblx0XHRjb25zdCB3ZWVrZGF5cyA9IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXTtcblx0XHRyZXR1cm4gd2Vla2RheXNbaW5kZXhdO1xuXHR9LFxuXHRtb250aHM6ICgpID0+IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcblx0eWVhcnM6IChzdGFydFllYXIgPSAxOTI1LCBlbmRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMSkgPT5cblx0XHRBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbmRZZWFyIC0gc3RhcnRZZWFyICsgMSB9LCAoXywgaSkgPT4gc3RhcnRZZWFyICsgaSksXG5cdGZvcm1hdEhlYWRlcjogKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikgPT4ge1xuXHRcdHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCkudG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuXHRcdFx0bW9udGg6ICdsb25nJyxcblx0XHRcdHllYXI6ICdudW1lcmljJyxcblx0XHR9KTtcblx0fSxcblx0Zm9ybWF0TW9udGg6IChtb250aDogbnVtYmVyKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKDIwMDAsIG1vbnRoKS50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLCB7XG5cdFx0XHRtb250aDogJ3Nob3J0Jyxcblx0XHR9KTtcblx0fSxcblx0Zm9ybWF0WWVhcjogKHllYXI6IG51bWJlcik6IHN0cmluZyA9PiB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHllYXIsIDApLnRvTG9jYWxlRGF0ZVN0cmluZyh1bmRlZmluZWQsIHtcblx0XHRcdHllYXI6ICdudW1lcmljJyxcblx0XHR9KTtcblx0fSxcblx0bGFiZWxQcmV2aW91czogKCkgPT4gJ0dvIHRvIHRoZSBwcmV2aW91cyBtb250aCcsXG5cdGxhYmVsTmV4dDogKCkgPT4gJ0dvIHRvIHRoZSBuZXh0IG1vbnRoJyxcblx0bGFiZWxXZWVrZGF5OiAoaW5kZXg6IG51bWJlcikgPT4ge1xuXHRcdGNvbnN0IHdlZWtkYXlzID0gWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddO1xuXHRcdHJldHVybiB3ZWVrZGF5c1tpbmRleF07XG5cdH0sXG5cdGZpcnN0RGF5T2ZXZWVrOiAoKSA9PiAwLFxufTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIGNhbGVuZGFyIGkxOG4gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEJybkNhbGVuZGFySTE4bigpOiBCcm5DYWxlbmRhckkxOG5TZXJ2aWNlIHtcblx0cmV0dXJuIGluamVjdChCcm5DYWxlbmRhckkxOG5Ub2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBpbmplY3QoQnJuQ2FsZW5kYXJJMThuU2VydmljZSk7IC8vIGZhbGxiYWNrXG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJJMThuU2VydmljZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZyA9IHNpZ25hbDxCcm5DYWxlbmRhckkxOG4+KGRlZmF1bHRDYWxlbmRhckkxOG4pO1xuXG5cdHB1YmxpYyByZWFkb25seSBjb25maWcgPSB0aGlzLl9jb25maWcuYXNSZWFkb25seSgpO1xuXG5cdHB1YmxpYyB1c2UoY29uZmlnOiBQYXJ0aWFsPEJybkNhbGVuZGFySTE4bj4pIHtcblx0XHR0aGlzLl9jb25maWcuc2V0KHsgLi4udGhpcy5jb25maWcoKSwgLi4uY29uZmlnIH0pO1xuXHR9XG59XG4iXX0=","import { afterNextRender, booleanAttribute, ChangeDetectorRef, computed, contentChild, contentChildren, Directive, inject, Injector, input, linkedSignal, model, numberAttribute, } 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 { provideBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendar {\n _i18n = injectBrnCalendarI18n();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the injector */\n _injector = inject(Injector);\n /** The minimum date that can be selected.*/\n min = input();\n /** The maximum date that can be selected. */\n max = input();\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n /** The selected value. */\n date = model();\n /** Whether a specific date is disabled. */\n dateDisabled = input(() => false);\n /** The day the week starts on */\n weekStartsOn = input(undefined, {\n transform: (v) => (v === undefined || v === null ? undefined : numberAttribute(v)),\n });\n _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n /** The default focused date. */\n defaultFocusedDate = input();\n /** @internal Access the header */\n header = contentChild(BrnCalendarHeader);\n /** Store the cells */\n _cells = contentChildren(BrnCalendarCellButton, {\n descendants: true,\n });\n /**\n * The focused date.\n */\n focusedDate = linkedSignal(() => this.constrainDate(this.defaultFocusedDate() ?? this.date() ?? this._dateAdapter.now()));\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n days = computed(() => {\n const weekStartsOn = this._weekStartsOn();\n const month = this.focusedDate();\n const days = [];\n // Get the first and last day of the month.\n let firstDay = this._dateAdapter.startOfMonth(month);\n let lastDay = this._dateAdapter.endOfMonth(month);\n // we need to subtract until we get the to starting day before or on the start of the month.\n while (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n firstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n }\n const weekEndsOn = (weekStartsOn + 6) % 7;\n // we need to add until we get to the ending day after or on the end of the month.\n while (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n lastDay = this._dateAdapter.add(lastDay, { days: 1 });\n }\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this._dateAdapter.add(firstDay, { days: 1 });\n }\n return days;\n });\n /** @internal Constrain a date to the min and max boundaries */\n constrainDate(date) {\n const min = this.min();\n const max = this.max();\n // If there is no min or max, return the date.\n if (!min && !max) {\n return date;\n }\n // If there is a min and the date is before the min, return the min.\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return min;\n }\n // If there is a max and the date is after the max, return the max.\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return max;\n }\n // Return the date.\n return date;\n }\n /** @internal Determine if a date is disabled */\n isDateDisabled(date) {\n // if the calendar is disabled we can't select this date\n if (this.disabled()) {\n return true;\n }\n // if the date is outside the min and max range\n const min = this.min();\n const max = this.max();\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return true;\n }\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return true;\n }\n // if this specific date is disabled\n const disabledFn = this.dateDisabled();\n if (disabledFn(date)) {\n return true;\n }\n return false;\n }\n isSelected(date) {\n const selected = this.date();\n return selected !== undefined && this._dateAdapter.isSameDay(date, selected);\n }\n selectDate(date) {\n if (this.isSelected(date)) {\n this.date.set(undefined);\n }\n else {\n this.date.set(date);\n }\n this.focusedDate.set(date);\n }\n /** @internal Set the focused date */\n setFocusedDate(date) {\n // check if the date is disabled.\n if (this.isDateDisabled(date)) {\n return;\n }\n this.focusedDate.set(date);\n // wait until the cells have all updated\n afterNextRender({\n write: () => {\n // focus the cell with the target date.\n const cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n if (cell) {\n cell.focus();\n }\n },\n }, {\n injector: this._injector,\n });\n // we must update the view to ensure the focused cell is visible.\n this._changeDetector.detectChanges();\n }\n /**\n * Determine if a date is the start of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is the end of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is between the start and end dates. In a date picker, this is always false.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(_) {\n return false;\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnCalendar, isStandalone: true, selector: \"[brnCalendar]\", inputs: { 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 }, date: { classPropertyName: \"date\", publicName: \"date\", 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 } }, outputs: { date: \"dateChange\" }, providers: [provideBrnCalendar(BrnCalendar)], queries: [{ propertyName: \"header\", first: true, predicate: BrnCalendarHeader, descendants: true, isSignal: true }, { propertyName: \"_cells\", predicate: BrnCalendarCellButton, descendants: true, isSignal: true }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendar, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendar]',\n providers: [provideBrnCalendar(BrnCalendar)],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFlBQVksRUFDWixLQUFLLEVBQ0wsZUFBZSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7O0FBTTNFLE1BQU0sT0FBTyxXQUFXO0lBQ04sS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ1gsWUFBWSxHQUFHLGlCQUFpQixFQUFLLENBQUM7SUFFekQsaUNBQWlDO0lBQ2hCLGVBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU3RCwwQkFBMEI7SUFDVCxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLDRDQUE0QztJQUM1QixHQUFHLEdBQUcsS0FBSyxFQUFLLENBQUM7SUFFakMsNkNBQTZDO0lBQzdCLEdBQUcsR0FBRyxLQUFLLEVBQUssQ0FBQztJQUVqQyxnREFBZ0Q7SUFDaEMsUUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1FBQzlELFNB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bGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRjb21wdXRlZCxcblx0Y29udGVudENoaWxkLFxuXHRjb250ZW50Q2hpbGRyZW4sXG5cdERpcmVjdGl2ZSxcblx0aW5qZWN0LFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdGxpbmtlZFNpZ25hbCxcblx0bW9kZWwsXG5cdG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3REYXRlQWRhcHRlciB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckNlbGxCdXR0b24gfSBmcm9tICcuL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckhlYWRlciB9IGZyb20gJy4vYnJuLWNhbGVuZGFyLWhlYWRlcic7XG5pbXBvcnQgeyB0eXBlIEJybkNhbGVuZGFyQmFzZSwgcHJvdmlkZUJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXJJMThuLCB0eXBlIFdlZWtkYXkgfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5DYWxlbmRhcl0nLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlQnJuQ2FsZW5kYXIoQnJuQ2FsZW5kYXIpXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXI8VD4gaW1wbGVtZW50cyBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9pMThuID0gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgaW5qZWN0b3IgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdC8qKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiovXG5cdHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogRGV0ZXJtaW5lIGlmIHRoZSBkYXRlIHBpY2tlciBpcyBkaXNhYmxlZC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuXHRcdHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcblx0fSk7XG5cblx0LyoqIFRoZSBzZWxlY3RlZCB2YWx1ZS4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRhdGUgPSBtb2RlbDxUPigpO1xuXG5cdC8qKiBXaGV0aGVyIGEgc3BlY2lmaWMgZGF0ZSBpcyBkaXNhYmxlZC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRhdGVEaXNhYmxlZCA9IGlucHV0PChkYXRlOiBUKSA9PiBib29sZWFuPigoKSA9PiBmYWxzZSk7XG5cblx0LyoqIFRoZSBkYXkgdGhlIHdlZWsgc3RhcnRzIG9uICovXG5cdHB1YmxpYyByZWFkb25seSB3ZWVrU3RhcnRzT24gPSBpbnB1dDxXZWVrZGF5LCBOdW1iZXJJbnB1dCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG5cdFx0dHJhbnNmb3JtOiAodjogdW5rbm93bikgPT4gKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsID8gdW5kZWZpbmVkIDogKG51bWJlckF0dHJpYnV0ZSh2KSBhcyBXZWVrZGF5KSksXG5cdH0pO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBfd2Vla1N0YXJ0c09uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy53ZWVrU3RhcnRzT24oKSA/PyB0aGlzLl9pMThuLmNvbmZpZygpLmZpcnN0RGF5T2ZXZWVrKCkpO1xuXG5cdC8qKiBUaGUgZGVmYXVsdCBmb2N1c2VkIGRhdGUuICovXG5cdHB1YmxpYyByZWFkb25seSBkZWZhdWx0Rm9jdXNlZERhdGUgPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBAaW50ZXJuYWwgQWNjZXNzIHRoZSBoZWFkZXIgKi9cblx0cHVibGljIHJlYWRvbmx5IGhlYWRlciA9IGNvbnRlbnRDaGlsZChCcm5DYWxlbmRhckhlYWRlcik7XG5cblx0LyoqIFN0b3JlIHRoZSBjZWxscyAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2NlbGxzID0gY29udGVudENoaWxkcmVuPEJybkNhbGVuZGFyQ2VsbEJ1dHRvbjxUPj4oQnJuQ2FsZW5kYXJDZWxsQnV0dG9uLCB7XG5cdFx0ZGVzY2VuZGFudHM6IHRydWUsXG5cdH0pO1xuXG5cdC8qKlxuXHQgKiBUaGUgZm9jdXNlZCBkYXRlLlxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGZvY3VzZWREYXRlID0gbGlua2VkU2lnbmFsKCgpID0+XG5cdFx0dGhpcy5jb25zdHJhaW5EYXRlKHRoaXMuZGVmYXVsdEZvY3VzZWREYXRlKCkgPz8gdGhpcy5kYXRlKCkgPz8gdGhpcy5fZGF0ZUFkYXB0ZXIubm93KCkpLFxuXHQpO1xuXG5cdC8qKlxuXHQgKiBHZXQgYWxsIHRoZSBkYXlzIHRvIGRpc3BsYXksIHRoaXMgaXMgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGhcblx0ICogYW5kIHRoZSBkYXlzIG9mIHRoZSBwcmV2aW91cyBhbmQgbmV4dCBtb250aCB0byBmaWxsIHRoZSBncmlkLlxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGRheXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgd2Vla1N0YXJ0c09uID0gdGhpcy5fd2Vla1N0YXJ0c09uKCk7XG5cdFx0Y29uc3QgbW9udGggPSB0aGlzLmZvY3VzZWREYXRlKCk7XG5cdFx0Y29uc3QgZGF5czogVFtdID0gW107XG5cblx0XHQvLyBHZXQgdGhlIGZpcnN0IGFuZCBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0bGV0IGZpcnN0RGF5ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKG1vbnRoKTtcblx0XHRsZXQgbGFzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mTW9udGgobW9udGgpO1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBzdWJ0cmFjdCB1bnRpbCB3ZSBnZXQgdGhlIHRvIHN0YXJ0aW5nIGRheSBiZWZvcmUgb3Igb24gdGhlIHN0YXJ0IG9mIHRoZSBtb250aC5cblx0XHR3aGlsZSAodGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0RGF5KGZpcnN0RGF5KSAhPT0gd2Vla1N0YXJ0c09uKSB7XG5cdFx0XHRmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLnN1YnRyYWN0KGZpcnN0RGF5LCB7IGRheXM6IDEgfSk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgd2Vla0VuZHNPbiA9ICh3ZWVrU3RhcnRzT24gKyA2KSAlIDc7XG5cblx0XHQvLyB3ZSBuZWVkIHRvIGFkZCB1bnRpbCB3ZSBnZXQgdG8gdGhlIGVuZGluZyBkYXkgYWZ0ZXIgb3Igb24gdGhlIGVuZCBvZiB0aGUgbW9udGguXG5cdFx0d2hpbGUgKHRoaXMuX2RhdGVBZGFwdGVyLmdldERheShsYXN0RGF5KSAhPT0gd2Vla0VuZHNPbikge1xuXHRcdFx0bGFzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChsYXN0RGF5LCB7IGRheXM6IDEgfSk7XG5cdFx0fVxuXG5cdFx0Ly8gY29sbGVjdCBhbGwgdGhlIGRheXMgdG8gZGlzcGxheS5cblx0XHR3aGlsZSAoZmlyc3REYXkgPD0gbGFzdERheSkge1xuXHRcdFx0ZGF5cy5wdXNoKGZpcnN0RGF5KTtcblx0XHRcdGZpcnN0RGF5ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkKGZpcnN0RGF5LCB7IGRheXM6IDEgfSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRheXM7XG5cdH0pO1xuXG5cdC8qKiBAaW50ZXJuYWwgQ29uc3RyYWluIGEgZGF0ZSB0byB0aGUgbWluIGFuZCBtYXggYm91bmRhcmllcyAqL1xuXHRjb25zdHJhaW5EYXRlKGRhdGU6IFQpOiBUIHtcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBubyBtaW4gb3IgbWF4LCByZXR1cm4gdGhlIGRhdGUuXG5cdFx0aWYgKCFtaW4gJiYgIW1heCkge1xuXHRcdFx0cmV0dXJuIGRhdGU7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtaW4gYW5kIHRoZSBkYXRlIGlzIGJlZm9yZSB0aGUgbWluLCByZXR1cm4gdGhlIG1pbi5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiBtaW47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtYXggYW5kIHRoZSBkYXRlIGlzIGFmdGVyIHRoZSBtYXgsIHJldHVybiB0aGUgbWF4LlxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIG1heDtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGRhdGUuXG5cdFx0cmV0dXJuIGRhdGU7XG5cdH1cblxuXHQvKiogQGludGVybmFsIERldGVybWluZSBpZiBhIGRhdGUgaXMgZGlzYWJsZWQgKi9cblx0aXNEYXRlRGlzYWJsZWQoZGF0ZTogVCk6IGJvb2xlYW4ge1xuXHRcdC8vIGlmIHRoZSBjYWxlbmRhciBpcyBkaXNhYmxlZCB3ZSBjYW4ndCBzZWxlY3QgdGhpcyBkYXRlXG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhlIGRhdGUgaXMgb3V0c2lkZSB0aGUgbWluIGFuZCBtYXggcmFuZ2Vcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhpcyBzcGVjaWZpYyBkYXRlIGlzIGRpc2FibGVkXG5cdFx0Y29uc3QgZGlzYWJsZWRGbiA9IHRoaXMuZGF0ZURpc2FibGVkKCk7XG5cblx0XHRpZiAoZGlzYWJsZWRGbihkYXRlKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aXNTZWxlY3RlZChkYXRlOiBUKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmRhdGUoKSBhcyBUIHwgdW5kZWZpbmVkO1xuXHRcdHJldHVybiBzZWxlY3RlZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBzZWxlY3RlZCk7XG5cdH1cblxuXHRzZWxlY3REYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc1NlbGVjdGVkKGRhdGUpKSB7XG5cdFx0XHR0aGlzLmRhdGUuc2V0KHVuZGVmaW5lZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZGF0ZS5zZXQoZGF0ZSk7XG5cdFx0fVxuXHRcdHRoaXMuZm9jdXNlZERhdGUuc2V0KGRhdGUpO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCBTZXQgdGhlIGZvY3VzZWQgZGF0ZSAqL1xuXHRzZXRGb2N1c2VkRGF0ZShkYXRlOiBUKTogdm9pZCB7XG5cdFx0Ly8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgZGlzYWJsZWQuXG5cdFx0aWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmZvY3VzZWREYXRlLnNldChkYXRlKTtcblxuXHRcdC8vIHdhaXQgdW50aWwgdGhlIGNlbGxzIGhhdmUgYWxsIHVwZGF0ZWRcblx0XHRhZnRlck5leHRSZW5kZXIoXG5cdFx0XHR7XG5cdFx0XHRcdHdyaXRlOiAoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gZm9jdXMgdGhlIGNlbGwgd2l0aCB0aGUgdGFyZ2V0IGRhdGUuXG5cdFx0XHRcdFx0Y29uc3QgY2VsbCA9IHRoaXMuX2NlbGxzKCkuZmluZCgoYykgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lRGF5KGMuZGF0ZSgpLCBkYXRlKSk7XG5cblx0XHRcdFx0XHRpZiAoY2VsbCkge1xuXHRcdFx0XHRcdFx0Y2VsbC5mb2N1cygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGluamVjdG9yOiB0aGlzLl9pbmplY3Rvcixcblx0XHRcdH0sXG5cdFx0KTtcblxuXHRcdC8vIHdlIG11c3QgdXBkYXRlIHRoZSB2aWV3IHRvIGVuc3VyZSB0aGUgZm9jdXNlZCBjZWxsIGlzIHZpc2libGUuXG5cdFx0dGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgdGhlIHN0YXJ0IG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzU3RhcnRPZlJhbmdlKF86IFQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyB0aGUgZW5kIG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzRW5kT2ZSYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy4gSW4gYSBkYXRlIHBpY2tlciwgdGhpcyBpcyBhbHdheXMgZmFsc2UuXG5cdCAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkYXRlIGlzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMsIGZhbHNlIG90aGVyd2lzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc0JldHdlZW5SYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG4iXX0=","import { Directive } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarCell {\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCell, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarCell, isStandalone: true, selector: \"[brnCalendarCell]\", host: { attributes: { \"role\": \"presentation\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCell, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarCell]',\n host: {\n role: 'presentation',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWNlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLWNlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRMUMsTUFBTSxPQUFPLGVBQWU7MEhBQWYsZUFBZTs4R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQU4zQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLElBQUksRUFBRTt3QkFDTCxJQUFJLEVBQUUsY0FBYztxQkFDcEI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFyQ2VsbF0nLFxuXHRob3N0OiB7XG5cdFx0cm9sZTogJ3ByZXNlbnRhdGlvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyQ2VsbCB7fVxuIl19","import { Directive } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarGrid {\n /** Access the calendar component */\n _calendar = injectBrnCalendar();\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarGrid, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarGrid, isStandalone: true, selector: \"[brnCalendarGrid]\", host: { attributes: { \"role\": \"grid\" }, properties: { \"attr.aria-labelledby\": \"_calendar.header()?.id()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarGrid, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarGrid]',\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': '_calendar.header()?.id()',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFTekQsTUFBTSxPQUFPLGVBQWU7SUFDM0Isb0NBQW9DO0lBQ2pCLFNBQVMsR0FBRyxpQkFBaUIsRUFBSyxDQUFDOzBIQUYxQyxlQUFlOzhHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBUDNCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNMLElBQUksRUFBRSxNQUFNO3dCQUNaLHdCQUF3QixFQUFFLDBCQUEwQjtxQkFDcEQ7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuQ2FsZW5kYXJHcmlkXScsXG5cdGhvc3Q6IHtcblx0XHRyb2xlOiAnZ3JpZCcsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnX2NhbGVuZGFyLmhlYWRlcigpPy5pZCgpJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJHcmlkPFQ+IHtcblx0LyoqIEFjY2VzcyB0aGUgY2FsZW5kYXIgY29tcG9uZW50ICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfY2FsZW5kYXIgPSBpbmplY3RCcm5DYWxlbmRhcjxUPigpO1xufVxuIl19","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarMonthSelect {\n /** Access the select */\n _select = inject(BrnSelect);\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n _selectedMonth = computed(() => {\n return this._i18n.config().months()[this._dateAdapter.getMonth(this._calendar.focusedDate())];\n });\n constructor() {\n effect(() => {\n this._select.writeValue(this._selectedMonth());\n });\n }\n /** Focus selected month */\n monthSelected(selectedMonth) {\n const month = this._i18n\n .config()\n .months()\n .findIndex((month) => month === selectedMonth);\n const targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { month });\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMonthSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarMonthSelect, isStandalone: true, selector: \"brn-select[brnCalendarMonthSelect]\", host: { listeners: { \"valueChange\": \"monthSelected($event)\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMonthSelect, decorators: [{\n type: Directive,\n args: [{\n selector: 'brn-select[brnCalendarMonthSelect]',\n host: {\n '(valueChange)': 'monthSelected($event)',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLW1vbnRoLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9icm4tY2FsZW5kYXItbW9udGgtc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVE3RCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2xDLHdCQUF3QjtJQUNQLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0MsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ2IsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEQsK0JBQStCO0lBQ1osS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFaEMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUMsQ0FBQyxDQUFDO0lBRUg7UUFDQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsMkJBQTJCO0lBQ2pCLGFBQWEsQ0FBQyxhQUFxQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSzthQUN0QixNQUFNLEVBQUU7YUFDUixNQUFNLEVBQUU7YUFDUixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQzswSEEvQlcsc0JBQXNCOzhHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBTmxDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsSUFBSSxFQUFFO3dCQUNMLGVBQWUsRUFBRSx1QkFBdUI7cUJBQ3hDO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IEJyblNlbGVjdCB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL3NlbGVjdCc7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhciB9IGZyb20gJy4vYnJuLWNhbGVuZGFyLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFySTE4biB9IGZyb20gJy4vaTE4bi9jYWxlbmRhci1pMThuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnYnJuLXNlbGVjdFticm5DYWxlbmRhck1vbnRoU2VsZWN0XScsXG5cdGhvc3Q6IHtcblx0XHQnKHZhbHVlQ2hhbmdlKSc6ICdtb250aFNlbGVjdGVkKCRldmVudCknLFxuXHR9LFxufSlcbmV4cG9ydCBjbGFzcyBCcm5DYWxlbmRhck1vbnRoU2VsZWN0IHtcblx0LyoqIEFjY2VzcyB0aGUgc2VsZWN0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdCA9IGluamVjdChCcm5TZWxlY3QpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNhbGVuZGFyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NhbGVuZGFyID0gaW5qZWN0QnJuQ2FsZW5kYXIoKTtcblxuXHQvKiogQWNjZXNzIHRoZSBkYXRlIGFkYXB0ZXIgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNhbGVuZGFyIGkxOG4gKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9pMThuID0gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9zZWxlY3RlZE1vbnRoID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLl9pMThuLmNvbmZpZygpLm1vbnRocygpW3RoaXMuX2RhdGVBZGFwdGVyLmdldE1vbnRoKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpXTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkTW9udGgoKSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKiogRm9jdXMgc2VsZWN0ZWQgbW9udGggKi9cblx0cHJvdGVjdGVkIG1vbnRoU2VsZWN0ZWQoc2VsZWN0ZWRNb250aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbW9udGggPSB0aGlzLl9pMThuXG5cdFx0XHQuY29uZmlnKClcblx0XHRcdC5tb250aHMoKVxuXHRcdFx0LmZpbmRJbmRleCgobW9udGgpID0+IG1vbnRoID09PSBzZWxlY3RlZE1vbnRoKTtcblx0XHRjb25zdCB0YXJnZXREYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc2V0KHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCksIHsgbW9udGggfSk7XG5cdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHRhcmdldERhdGUpO1xuXHR9XG59XG4iXX0=","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarNextButton {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n /** Focus the previous month */\n focusPreviousMonth() {\n const targetDate = this._dateAdapter.add(this._calendar.focusedDate(), { months: 1 });\n // if the date is disabled, but there are available dates in the month, focus the last day of the month.\n const possibleDate = this._calendar.constrainDate(targetDate);\n if (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n // if this date is within the same month, then focus it\n this._calendar.focusedDate.set(possibleDate);\n return;\n }\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarNextButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarNextButton, isStandalone: true, selector: \"[brnCalendarNextButton]\", host: { attributes: { \"type\": \"button\" }, listeners: { \"click\": \"focusPreviousMonth()\" }, properties: { \"attr.aria-label\": \"_i18n.config().labelNext()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarNextButton, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarNextButton]',\n host: {\n type: 'button',\n '[attr.aria-label]': '_i18n.config().labelNext()',\n '(click)': 'focusPreviousMonth()',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLW5leHQtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci1uZXh0LWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVU3RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2pDLDBCQUEwQjtJQUNULFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRWpELDhCQUE4QjtJQUNiLFlBQVksR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRXBELCtCQUErQjtJQUNaLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBRW5ELCtCQUErQjtJQUNyQixrQkFBa0I7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLHdHQUF3RztRQUN4RyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdELHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0MsT0FBTztRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQzswSEF4QlcscUJBQXFCOzhHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBUmpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsSUFBSSxFQUFFO3dCQUNMLElBQUksRUFBRSxRQUFRO3dCQUNkLG1CQUFtQixFQUFFLDRCQUE0Qjt3QkFDakQsU0FBUyxFQUFFLHNCQUFzQjtxQkFDakM7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXJJMThuIH0gZnJvbSAnLi9pMThuL2NhbGVuZGFyLWkxOG4nO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuQ2FsZW5kYXJOZXh0QnV0dG9uXScsXG5cdGhvc3Q6IHtcblx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHQnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2kxOG4uY29uZmlnKCkubGFiZWxOZXh0KCknLFxuXHRcdCcoY2xpY2spJzogJ2ZvY3VzUHJldmlvdXNNb250aCgpJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJOZXh0QnV0dG9uIHtcblx0LyoqIEFjY2VzcyB0aGUgY2FsZW5kYXIgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfY2FsZW5kYXIgPSBpbmplY3RCcm5DYWxlbmRhcigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGRhdGUgYWRhcHRlciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kYXRlQWRhcHRlciA9IGluamVjdERhdGVBZGFwdGVyKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgY2FsZW5kYXIgaTE4biAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2kxOG4gPSBpbmplY3RCcm5DYWxlbmRhckkxOG4oKTtcblxuXHQvKiogRm9jdXMgdGhlIHByZXZpb3VzIG1vbnRoICovXG5cdHByb3RlY3RlZCBmb2N1c1ByZXZpb3VzTW9udGgoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFyZ2V0RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7IG1vbnRoczogMSB9KTtcblxuXHRcdC8vIGlmIHRoZSBkYXRlIGlzIGRpc2FibGVkLCBidXQgdGhlcmUgYXJlIGF2YWlsYWJsZSBkYXRlcyBpbiB0aGUgbW9udGgsIGZvY3VzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0Y29uc3QgcG9zc2libGVEYXRlID0gdGhpcy5fY2FsZW5kYXIuY29uc3RyYWluRGF0ZSh0YXJnZXREYXRlKTtcblxuXHRcdGlmICh0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVNb250aChwb3NzaWJsZURhdGUsIHRhcmdldERhdGUpKSB7XG5cdFx0XHQvLyBpZiB0aGlzIGRhdGUgaXMgd2l0aGluIHRoZSBzYW1lIG1vbnRoLCB0aGVuIGZvY3VzIGl0XG5cdFx0XHR0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZS5zZXQocG9zc2libGVEYXRlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZS5zZXQodGFyZ2V0RGF0ZSk7XG5cdH1cbn1cbiJdfQ==","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarPreviousButton {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n /** Focus the previous month */\n focusPreviousMonth() {\n const targetDate = this._dateAdapter.subtract(this._calendar.focusedDate(), { months: 1 });\n // if the date is disabled, but there are available dates in the month, focus the last day of the month.\n const possibleDate = this._calendar.constrainDate(targetDate);\n if (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n // if this date is within the same month, then focus it\n this._calendar.focusedDate.set(possibleDate);\n return;\n }\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarPreviousButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarPreviousButton, isStandalone: true, selector: \"[brnCalendarPreviousButton]\", host: { attributes: { \"type\": \"button\" }, listeners: { \"click\": \"focusPreviousMonth()\" }, properties: { \"attr.aria-label\": \"_i18n.config().labelPrevious()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarPreviousButton, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarPreviousButton]',\n host: {\n type: 'button',\n '[attr.aria-label]': '_i18n.config().labelPrevious()',\n '(click)': 'focusPreviousMonth()',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9icm4tY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBVTdELE1BQU0sT0FBTyx5QkFBeUI7SUFDckMsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ2IsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEQsK0JBQStCO0lBQ1osS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFbkQsK0JBQStCO0lBQ3JCLGtCQUFrQjtRQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0Ysd0dBQXdHO1FBQ3hHLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0QsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3QyxPQUFPO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDOzBIQXhCVyx5QkFBeUI7OEdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFSckMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxJQUFJLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsbUJBQW1CLEVBQUUsZ0NBQWdDO3dCQUNyRCxTQUFTLEVBQUUsc0JBQXNCO3FCQUNqQztpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXIgfSBmcm9tICcuL2Jybi1jYWxlbmRhci50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhckkxOG4gfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5DYWxlbmRhclByZXZpb3VzQnV0dG9uXScsXG5cdGhvc3Q6IHtcblx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHQnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2kxOG4uY29uZmlnKCkubGFiZWxQcmV2aW91cygpJyxcblx0XHQnKGNsaWNrKSc6ICdmb2N1c1ByZXZpb3VzTW9udGgoKScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyUHJldmlvdXNCdXR0b24ge1xuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2RhdGVBZGFwdGVyID0gaW5qZWN0RGF0ZUFkYXB0ZXIoKTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciBpMThuICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfaTE4biA9IGluamVjdEJybkNhbGVuZGFySTE4bigpO1xuXG5cdC8qKiBGb2N1cyB0aGUgcHJldmlvdXMgbW9udGggKi9cblx0cHJvdGVjdGVkIGZvY3VzUHJldmlvdXNNb250aCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YXJnZXREYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3VidHJhY3QodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwgeyBtb250aHM6IDEgfSk7XG5cblx0XHQvLyBpZiB0aGUgZGF0ZSBpcyBkaXNhYmxlZCwgYnV0IHRoZXJlIGFyZSBhdmFpbGFibGUgZGF0ZXMgaW4gdGhlIG1vbnRoLCBmb2N1cyB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuXHRcdGNvbnN0IHBvc3NpYmxlRGF0ZSA9IHRoaXMuX2NhbGVuZGFyLmNvbnN0cmFpbkRhdGUodGFyZ2V0RGF0ZSk7XG5cblx0XHRpZiAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lTW9udGgocG9zc2libGVEYXRlLCB0YXJnZXREYXRlKSkge1xuXHRcdFx0Ly8gaWYgdGhpcyBkYXRlIGlzIHdpdGhpbiB0aGUgc2FtZSBtb250aCwgdGhlbiBmb2N1cyBpdFxuXHRcdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHBvc3NpYmxlRGF0ZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHRhcmdldERhdGUpO1xuXHR9XG59XG4iXX0=","import { ChangeDetectorRef, Directive, TemplateRef, ViewContainerRef, computed, effect, inject, untracked, } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarWeek {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the view container ref */\n _viewContainerRef = inject(ViewContainerRef);\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the template ref */\n _templateRef = inject(TemplateRef);\n // get the weeks to display.\n _weeks = computed(() => {\n const days = this._calendar.days();\n const weeks = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n return weeks;\n });\n /** Store the view refs */\n _viewRefs = [];\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard(_, ctx) {\n return true;\n }\n constructor() {\n // this should use `afterRenderEffect` but it's not available in the current version\n effect(() => {\n const weeks = this._weeks();\n untracked(() => this._renderWeeks(weeks));\n });\n }\n _renderWeeks(weeks) {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n this._viewRefs = [];\n // Create a new view for each week\n for (const week of weeks) {\n const viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n $implicit: week,\n });\n this._viewRefs.push(viewRef);\n }\n this._changeDetector.detectChanges();\n }\n ngOnDestroy() {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeek, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarWeek, isStandalone: true, selector: \"[brnCalendarWeek]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeek, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarWeek]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXdlZWsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLXdlZWsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxlQUFlO0lBQzNCLDBCQUEwQjtJQUNULFNBQVMsR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXBELG9DQUFvQztJQUNuQixpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RCxpQ0FBaUM7SUFDaEIsZUFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdELDhCQUE4QjtJQUNiLFlBQVksR0FBRyxNQUFNLENBQWlDLFdBQVcsQ0FBQyxDQUFDO0lBRXBGLDRCQUE0QjtJQUNULE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0lBRUgsMEJBQTBCO0lBQ2xCLFNBQVMsR0FBeUMsRUFBRSxDQUFDO0lBRTdELDhFQUE4RTtJQUM5RSw4Q0FBOEM7SUFDOUMsTUFBTSxDQUFDLHNCQUFzQixDQUFJLENBQXFCLEVBQUUsR0FBWTtRQUNuRSxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDtRQUNDLG9GQUFvRjtRQUNwRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQVk7UUFDaEMsd0RBQXdEO1FBQ3hELEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEIsa0NBQWtDO1FBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzVFLFNBQVMsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVix3REFBd0Q7UUFDeEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDRixDQUFDOzBIQWxFVyxlQUFlOzhHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBSDNCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0RGlyZWN0aXZlLFxuXHR0eXBlIEVtYmVkZGVkVmlld1JlZixcblx0dHlwZSBPbkRlc3Ryb3ksXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhciB9IGZyb20gJy4vYnJuLWNhbGVuZGFyLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFyV2Vla10nLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5DYWxlbmRhcldlZWs8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyPFQ+KCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgdmlldyBjb250YWluZXIgcmVmICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgY2hhbmdlIGRldGVjdG9yICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKiogQWNjZXNzIHRoZSB0ZW1wbGF0ZSByZWYgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8QnJuV2Vla0NvbnRleHQ8VD4+PihUZW1wbGF0ZVJlZik7XG5cblx0Ly8gZ2V0IHRoZSB3ZWVrcyB0byBkaXNwbGF5LlxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3dlZWtzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGRheXMgPSB0aGlzLl9jYWxlbmRhci5kYXlzKCk7XG5cdFx0Y29uc3Qgd2Vla3MgPSBbXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF5cy5sZW5ndGg7IGkgKz0gNykge1xuXHRcdFx0d2Vla3MucHVzaChkYXlzLnNsaWNlKGksIGkgKyA3KSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHdlZWtzO1xuXHR9KTtcblxuXHQvKiogU3RvcmUgdGhlIHZpZXcgcmVmcyAqL1xuXHRwcml2YXRlIF92aWV3UmVmczogRW1iZWRkZWRWaWV3UmVmPEJybldlZWtDb250ZXh0PFQ+PltdID0gW107XG5cblx0Ly8gTWFrZSBzdXJlIHRoZSB0ZW1wbGF0ZSBjaGVja2VyIGtub3dzIHRoZSB0eXBlIG9mIHRoZSBjb250ZXh0IHdpdGggd2hpY2ggdGhlXG5cdC8vIHRlbXBsYXRlIG9mIHRoaXMgZGlyZWN0aXZlIHdpbGwgYmUgcmVuZGVyZWRcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXzogQnJuQ2FsZW5kYXJXZWVrPFQ+LCBjdHg6IHVua25vd24pOiBjdHggaXMgQnJuV2Vla0NvbnRleHQ8VD4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Ly8gdGhpcyBzaG91bGQgdXNlIGBhZnRlclJlbmRlckVmZmVjdGAgYnV0IGl0J3Mgbm90IGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCB2ZXJzaW9uXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHdlZWtzID0gdGhpcy5fd2Vla3MoKTtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB0aGlzLl9yZW5kZXJXZWVrcyh3ZWVrcykpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBfcmVuZGVyV2Vla3Mod2Vla3M6IFRbXVtdKTogdm9pZCB7XG5cdFx0Ly8gRGVzdHJveSBhbGwgdGhlIHZpZXdzIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBkZXN0cm95ZWRcblx0XHRmb3IgKGNvbnN0IHZpZXdSZWYgb2YgdGhpcy5fdmlld1JlZnMpIHtcblx0XHRcdHZpZXdSZWYuZGVzdHJveSgpO1xuXHRcdH1cblxuXHRcdHRoaXMuX3ZpZXdSZWZzID0gW107XG5cblx0XHQvLyBDcmVhdGUgYSBuZXcgdmlldyBmb3IgZWFjaCB3ZWVrXG5cdFx0Zm9yIChjb25zdCB3ZWVrIG9mIHdlZWtzKSB7XG5cdFx0XHRjb25zdCB2aWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYsIHtcblx0XHRcdFx0JGltcGxpY2l0OiB3ZWVrLFxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLl92aWV3UmVmcy5wdXNoKHZpZXdSZWYpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdC8vIERlc3Ryb3kgYWxsIHRoZSB2aWV3cyB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgZGVzdHJveWVkXG5cdFx0Zm9yIChjb25zdCB2aWV3UmVmIG9mIHRoaXMuX3ZpZXdSZWZzKSB7XG5cdFx0XHR2aWV3UmVmLmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cbn1cblxuaW50ZXJmYWNlIEJybldlZWtDb250ZXh0PFQ+IHtcblx0JGltcGxpY2l0OiBUW107XG59XG4iXX0=","import { ChangeDetectorRef, computed, Directive, effect, inject, TemplateRef, untracked, ViewContainerRef, } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarWeekday {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date time adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the view container ref */\n _viewContainerRef = inject(ViewContainerRef);\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the template ref */\n _templateRef = inject(TemplateRef);\n /** Get the days of the week to display in the header. */\n _weekdays = computed(() => this._calendar.days().slice(0, 7));\n /** Store the view refs */\n _viewRefs = [];\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard(_, ctx) {\n return true;\n }\n constructor() {\n // Create a new view for each day\n effect(() => {\n // Get the weekdays to display\n const weekdays = this._weekdays();\n // Render the weekdays\n untracked(() => this._renderWeekdays(weekdays));\n });\n }\n _renderWeekdays(weekdays) {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n this._viewRefs = [];\n // Create a new view for each day\n for (const day of weekdays) {\n const viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n $implicit: this._dateAdapter.getDay(day),\n });\n this._viewRefs.push(viewRef);\n }\n this._changeDetector.detectChanges();\n }\n ngOnDestroy() {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeekday, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarWeekday, isStandalone: true, selector: \"[brnCalendarWeekday]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeekday, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarWeekday]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXdlZWtkYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLXdlZWtkYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxrQkFBa0I7SUFDOUIsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFLLENBQUM7SUFFcEQsbUNBQW1DO0lBQ2xCLFlBQVksR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXZELG9DQUFvQztJQUNuQixpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RCxpQ0FBaUM7SUFDaEIsZUFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdELDhCQUE4QjtJQUNiLFlBQVksR0FBRyxNQUFNLENBQWlDLFdBQVcsQ0FBQyxDQUFDO0lBRXBGLHlEQUF5RDtJQUN0QyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpGLDBCQUEwQjtJQUNsQixTQUFTLEdBQXlDLEVBQUUsQ0FBQztJQUU3RCw4RUFBOEU7SUFDOUUsOENBQThDO0lBQzlDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBSSxDQUF3QixFQUFFLEdBQVk7UUFDdEUsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7UUFDQyxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLDhCQUE4QjtZQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsc0JBQXNCO1lBQ3RCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUFDLFFBQWE7UUFDcEMsd0RBQXdEO1FBQ3hELEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEIsaUNBQWlDO1FBQ2pDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzVFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVix3REFBd0Q7UUFDeEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDRixDQUFDOzBIQTlEVyxrQkFBa0I7OEdBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0JBQXNCO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRjb21wdXRlZCxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdHR5cGUgRW1iZWRkZWRWaWV3UmVmLFxuXHRpbmplY3QsXG5cdHR5cGUgT25EZXN0cm95LFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuQ2FsZW5kYXJXZWVrZGF5XScsXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyV2Vla2RheTxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cdC8qKiBBY2Nlc3MgdGhlIGNhbGVuZGFyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NhbGVuZGFyID0gaW5qZWN0QnJuQ2FsZW5kYXI8VD4oKTtcblxuXHQvKiogQWNjZXNzIHRoZSBkYXRlIHRpbWUgYWRhcHRlciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kYXRlQWRhcHRlciA9IGluamVjdERhdGVBZGFwdGVyPFQ+KCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgdmlldyBjb250YWluZXIgcmVmICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgY2hhbmdlIGRldGVjdG9yICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKiogQWNjZXNzIHRoZSB0ZW1wbGF0ZSByZWYgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8QnJuV2Vla2RheUNvbnRleHQ+PihUZW1wbGF0ZVJlZik7XG5cblx0LyoqIEdldCB0aGUgZGF5cyBvZiB0aGUgd2VlayB0byBkaXNwbGF5IGluIHRoZSBoZWFkZXIuICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfd2Vla2RheXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jYWxlbmRhci5kYXlzKCkuc2xpY2UoMCwgNykpO1xuXG5cdC8qKiBTdG9yZSB0aGUgdmlldyByZWZzICovXG5cdHByaXZhdGUgX3ZpZXdSZWZzOiBFbWJlZGRlZFZpZXdSZWY8QnJuV2Vla2RheUNvbnRleHQ+W10gPSBbXTtcblxuXHQvLyBNYWtlIHN1cmUgdGhlIHRlbXBsYXRlIGNoZWNrZXIga25vd3MgdGhlIHR5cGUgb2YgdGhlIGNvbnRleHQgd2l0aCB3aGljaCB0aGVcblx0Ly8gdGVtcGxhdGUgb2YgdGhpcyBkaXJlY3RpdmUgd2lsbCBiZSByZW5kZXJlZFxuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxUPihfOiBCcm5DYWxlbmRhcldlZWtkYXk8VD4sIGN0eDogdW5rbm93bik6IGN0eCBpcyBCcm5XZWVrZGF5Q29udGV4dCB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHQvLyBDcmVhdGUgYSBuZXcgdmlldyBmb3IgZWFjaCBkYXlcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Ly8gR2V0IHRoZSB3ZWVrZGF5cyB0byBkaXNwbGF5XG5cdFx0XHRjb25zdCB3ZWVrZGF5cyA9IHRoaXMuX3dlZWtkYXlzKCk7XG5cdFx0XHQvLyBSZW5kZXIgdGhlIHdlZWtkYXlzXG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4gdGhpcy5fcmVuZGVyV2Vla2RheXMod2Vla2RheXMpKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgX3JlbmRlcldlZWtkYXlzKHdlZWtkYXlzOiBUW10pOiB2b2lkIHtcblx0XHQvLyBEZXN0cm95IGFsbCB0aGUgdmlld3Mgd2hlbiB0aGUgZGlyZWN0aXZlIGlzIGRlc3Ryb3llZFxuXHRcdGZvciAoY29uc3Qgdmlld1JlZiBvZiB0aGlzLl92aWV3UmVmcykge1xuXHRcdFx0dmlld1JlZi5kZXN0cm95KCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fdmlld1JlZnMgPSBbXTtcblxuXHRcdC8vIENyZWF0ZSBhIG5ldyB2aWV3IGZvciBlYWNoIGRheVxuXHRcdGZvciAoY29uc3QgZGF5IG9mIHdlZWtkYXlzKSB7XG5cdFx0XHRjb25zdCB2aWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYsIHtcblx0XHRcdFx0JGltcGxpY2l0OiB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXkoZGF5KSxcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5fdmlld1JlZnMucHVzaCh2aWV3UmVmKTtcblx0XHR9XG5cblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHQvLyBEZXN0cm95IGFsbCB0aGUgdmlld3Mgd2hlbiB0aGUgZGlyZWN0aXZlIGlzIGRlc3Ryb3llZFxuXHRcdGZvciAoY29uc3Qgdmlld1JlZiBvZiB0aGlzLl92aWV3UmVmcykge1xuXHRcdFx0dmlld1JlZi5kZXN0cm95KCk7XG5cdFx0fVxuXHR9XG59XG5cbmludGVyZmFjZSBCcm5XZWVrZGF5Q29udGV4dCB7XG5cdCRpbXBsaWNpdDogbnVtYmVyO1xufVxuIl19","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarYearSelect {\n /** Access the select */\n _select = inject(BrnSelect);\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n constructor() {\n effect(() => {\n this._select.writeValue(this._dateAdapter.getYear(this._calendar.focusedDate()));\n });\n }\n /** Focus selected year */\n yearSelected(year) {\n const targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { year });\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarYearSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarYearSelect, isStandalone: true, selector: \"brn-select[brnCalendarYearSelect]\", host: { listeners: { \"valueChange\": \"yearSelected($event)\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarYearSelect, decorators: [{\n type: Directive,\n args: [{\n selector: 'brn-select[brnCalendarYearSelect]',\n host: {\n '(valueChange)': 'yearSelected($event)',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXllYXItc2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci15ZWFyLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVE3RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2pDLHdCQUF3QjtJQUNQLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0MsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ2IsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEQsK0JBQStCO0lBQ1osS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFbkQ7UUFDQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsMEJBQTBCO0lBQ2hCLFlBQVksQ0FBQyxJQUFZO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDOzBIQXZCVyxxQkFBcUI7OEdBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxJQUFJLEVBQUU7d0JBQ0wsZUFBZSxFQUFFLHNCQUFzQjtxQkFDdkM7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3REYXRlQWRhcHRlciB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBCcm5TZWxlY3QgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9zZWxlY3QnO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXIgfSBmcm9tICcuL2Jybi1jYWxlbmRhci50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhckkxOG4gfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2Jybi1zZWxlY3RbYnJuQ2FsZW5kYXJZZWFyU2VsZWN0XScsXG5cdGhvc3Q6IHtcblx0XHQnKHZhbHVlQ2hhbmdlKSc6ICd5ZWFyU2VsZWN0ZWQoJGV2ZW50KScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyWWVhclNlbGVjdCB7XG5cdC8qKiBBY2Nlc3MgdGhlIHNlbGVjdCAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3QgPSBpbmplY3QoQnJuU2VsZWN0KTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2RhdGVBZGFwdGVyID0gaW5qZWN0RGF0ZUFkYXB0ZXIoKTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciBpMThuICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfaTE4biA9IGluamVjdEJybkNhbGVuZGFySTE4bigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKiBGb2N1cyBzZWxlY3RlZCB5ZWFyICovXG5cdHByb3RlY3RlZCB5ZWFyU2VsZWN0ZWQoeWVhcjogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFyZ2V0RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLnNldCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7IHllYXIgfSk7XG5cdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHRhcmdldERhdGUpO1xuXHR9XG59XG4iXX0=","import { afterNextRender, booleanAttribute, ChangeDetectorRef, computed, contentChild, contentChildren, Directive, inject, Injector, input, linkedSignal, model, numberAttribute, } 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 { provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n } from '../i18n/calendar-i18n';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarMulti {\n _i18n = injectBrnCalendarI18n();\n /**\n * Determine if a date is the start of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is the end of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is between the start and end dates. In a date picker, this is always false.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(_) {\n return false;\n }\n // /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the injector */\n _injector = inject(Injector);\n /** The minimum date that can be selected.*/\n min = input();\n /** The maximum date that can be selected. */\n max = input();\n /** The minimum selectable dates. */\n minSelection = input(undefined, {\n transform: numberAttribute,\n });\n /** The maximum selectable dates. */\n maxSelection = input(undefined, {\n transform: numberAttribute,\n });\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n /** The selected value. */\n date = model();\n /** Whether a specific date is disabled. */\n dateDisabled = input(() => false);\n /** The day the week starts on */\n weekStartsOn = input(undefined, {\n transform: (v) => (v === undefined || v === null ? undefined : numberAttribute(v)),\n });\n _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n /** The default focused date. */\n defaultFocusedDate = input();\n /** @internal Access the header */\n header = contentChild(BrnCalendarHeader);\n /** Store the cells */\n _cells = contentChildren(BrnCalendarCellButton, {\n descendants: true,\n });\n /**\n * The focused date.\n */\n focusedDate = linkedSignal(() => this.constrainDate(this.defaultFocusedDate() ?? this._dateAdapter.now()));\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n days = computed(() => {\n const weekStartsOn = this._weekStartsOn();\n const month = this.focusedDate();\n const days = [];\n // Get the first and last day of the month.\n let firstDay = this._dateAdapter.startOfMonth(month);\n let lastDay = this._dateAdapter.endOfMonth(month);\n // we need to subtract until we get the to starting day before or on the start of the month.\n while (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n firstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n }\n const weekEndsOn = (weekStartsOn + 6) % 7;\n // we need to add until we get to the ending day after or on the end of the month.\n while (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n lastDay = this._dateAdapter.add(lastDay, { days: 1 });\n }\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this._dateAdapter.add(firstDay, { days: 1 });\n }\n return days;\n });\n isSelected(date) {\n return this.date()?.some((d) => this._dateAdapter.isSameDay(d, date)) ?? false;\n }\n selectDate(date) {\n const selected = this.date();\n if (this.isSelected(date)) {\n const minSelection = this.minSelection();\n if (selected?.length === minSelection) {\n // min selection reached, do not allow to deselect\n return;\n }\n this.date.set(selected?.filter((d) => !this._dateAdapter.isSameDay(d, date)));\n }\n else {\n const maxSelection = this.maxSelection();\n if (selected?.length === maxSelection) {\n // max selection reached, reset the selection to date\n this.date.set([date]);\n }\n else {\n // add the date to the selection\n this.date.set([...(selected ?? []), date]);\n }\n }\n }\n // same as in brn-calendar.directive.ts\n /** @internal Constrain a date to the min and max boundaries */\n constrainDate(date) {\n const min = this.min();\n const max = this.max();\n // If there is no min or max, return the date.\n if (!min && !max) {\n return date;\n }\n // If there is a min and the date is before the min, return the min.\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return min;\n }\n // If there is a max and the date is after the max, return the max.\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return max;\n }\n // Return the date.\n return date;\n }\n /** @internal Determine if a date is disabled */\n isDateDisabled(date) {\n // if the calendar is disabled we can't select this date\n if (this.disabled()) {\n return true;\n }\n // if the date is outside the min and max range\n const min = this.min();\n const max = this.max();\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return true;\n }\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return true;\n }\n // if this specific date is disabled\n const disabledFn = this.dateDisabled();\n if (disabledFn(date)) {\n return true;\n }\n return false;\n }\n /** @internal Set the focused date */\n setFocusedDate(date) {\n // check if the date is disabled.\n if (this.isDateDisabled(date)) {\n return;\n }\n this.focusedDate.set(date);\n // wait until the cells have all updated\n afterNextRender({\n write: () => {\n // focus the cell with the target date.\n const cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n if (cell) {\n cell.focus();\n }\n },\n }, {\n injector: this._injector,\n });\n // we must update the view to ensure the focused cell is visible.\n this._changeDetector.detectChanges();\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMulti, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnCalendarMulti, isStandalone: true, selector: \"[brnCalendarMulti]\", inputs: { min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, minSelection: { classPropertyName: \"minSelection\", publicName: \"minSelection\", isSignal: true, isRequired: false, transformFunction: null }, maxSelection: { classPropertyName: \"maxSelection\", publicName: \"maxSelection\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: \"date\", publicName: \"date\", 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 } }, outputs: { date: \"dateChange\" }, providers: [provideBrnCalendar(BrnCalendarMulti)], queries: [{ propertyName: \"header\", first: true, predicate: BrnCalendarHeader, descendants: true, isSignal: true }, { propertyName: \"_cells\", predicate: BrnCalendarCellButton, descendants: true, isSignal: true }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMulti, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarMulti]',\n providers: [provideBrnCalendar(BrnCalendarMulti)],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLW11bHRpcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL21vZGUvYnJuLWNhbGVuZGFyLW11bHRpcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLGdCQUFnQjtJQUNYLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBRWpEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLENBQUk7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsQ0FBSTtRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxDQUFJO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELGlDQUFpQztJQUNkLFlBQVksR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXpELGlDQUFpQztJQUNoQixlQUFlLEdBQUcsTUFB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Q0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0Isd0NBQXdDO1FBQ3hDLGVBQWUsQ0FDZDtZQUNDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsdUNBQXVDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFcEYsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQztZQUNGLENBQUM7U0FDRCxFQUNEO1lBQ0MsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3hCLENBQ0QsQ0FBQztRQUVGLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7MEhBNU9XLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLDJ4Q0FGakIsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLDhEQWtGWCxpQkFBaUIsNEVBR2UscUJBQXFCOzsyRkFuRi9FLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixTQUFTLEVBQUUsQ0FBQyxrQkFBa0Isa0JBQWtCLENBQUM7aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdGNvbnRlbnRDaGlsZHJlbixcblx0RGlyZWN0aXZlLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0bGlua2VkU2lnbmFsLFxuXHRtb2RlbCxcblx0bnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IEJybkNhbGVuZGFyQ2VsbEJ1dHRvbiB9IGZyb20gJy4uL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckhlYWRlciB9IGZyb20gJy4uL2Jybi1jYWxlbmRhci1oZWFkZXInO1xuaW1wb3J0IHsgdHlwZSBCcm5DYWxlbmRhckJhc2UsIHByb3ZpZGVCcm5DYWxlbmRhciB9IGZyb20gJy4uL2Jybi1jYWxlbmRhci50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhckkxOG4sIHR5cGUgV2Vla2RheSB9IGZyb20gJy4uL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5DYWxlbmRhck11bHRpXScsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVCcm5DYWxlbmRhcihCcm5DYWxlbmRhck11bHRpKV0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyTXVsdGk8VD4gaW1wbGVtZW50cyBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9pMThuID0gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk7XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgdGhlIHN0YXJ0IG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzU3RhcnRPZlJhbmdlKF86IFQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyB0aGUgZW5kIG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzRW5kT2ZSYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy4gSW4gYSBkYXRlIHBpY2tlciwgdGhpcyBpcyBhbHdheXMgZmFsc2UuXG5cdCAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkYXRlIGlzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMsIGZhbHNlIG90aGVyd2lzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc0JldHdlZW5SYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gLyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgaW5qZWN0b3IgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdC8qKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiovXG5cdHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlcy4gICovXG5cdHB1YmxpYyByZWFkb25seSBtaW5TZWxlY3Rpb24gPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0Pih1bmRlZmluZWQsIHtcblx0XHR0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSxcblx0fSk7XG5cblx0LyoqIFRoZSBtYXhpbXVtIHNlbGVjdGFibGUgZGF0ZXMuICAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4U2VsZWN0aW9uID0gaW5wdXQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4odW5kZWZpbmVkLCB7XG5cdFx0dHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUsXG5cdH0pO1xuXG5cdC8qKiBEZXRlcm1pbmUgaWYgdGhlIGRhdGUgcGlja2VyIGlzIGRpc2FibGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7XG5cdFx0dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuXHR9KTtcblxuXHQvKiogVGhlIHNlbGVjdGVkIHZhbHVlLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGF0ZSA9IG1vZGVsPFRbXT4oKTtcblxuXHQvKiogV2hldGhlciBhIHNwZWNpZmljIGRhdGUgaXMgZGlzYWJsZWQuICovXG5cdHB1YmxpYyByZWFkb25seSBkYXRlRGlzYWJsZWQgPSBpbnB1dDwoZGF0ZTogVCkgPT4gYm9vbGVhbj4oKCkgPT4gZmFsc2UpO1xuXG5cdC8qKiBUaGUgZGF5IHRoZSB3ZWVrIHN0YXJ0cyBvbiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgd2Vla1N0YXJ0c09uID0gaW5wdXQ8V2Vla2RheSwgTnVtYmVySW5wdXQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge1xuXHRcdHRyYW5zZm9ybTogKHY6IHVua25vd24pID0+ICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IChudW1iZXJBdHRyaWJ1dGUodikgYXMgV2Vla2RheSkpLFxuXHR9KTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3dlZWtTdGFydHNPbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMud2Vla1N0YXJ0c09uKCkgPz8gdGhpcy5faTE4bi5jb25maWcoKS5maXJzdERheU9mV2VlaygpKTtcblxuXHQvKiogVGhlIGRlZmF1bHQgZm9jdXNlZCBkYXRlLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEZvY3VzZWREYXRlID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogQGludGVybmFsIEFjY2VzcyB0aGUgaGVhZGVyICovXG5cdHB1YmxpYyByZWFkb25seSBoZWFkZXIgPSBjb250ZW50Q2hpbGQoQnJuQ2FsZW5kYXJIZWFkZXIpO1xuXG5cdC8qKiBTdG9yZSB0aGUgY2VsbHMgKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9jZWxscyA9IGNvbnRlbnRDaGlsZHJlbjxCcm5DYWxlbmRhckNlbGxCdXR0b248VD4+KEJybkNhbGVuZGFyQ2VsbEJ1dHRvbiwge1xuXHRcdGRlc2NlbmRhbnRzOiB0cnVlLFxuXHR9KTtcblxuXHQvKipcblx0ICogVGhlIGZvY3VzZWQgZGF0ZS5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBmb2N1c2VkRGF0ZSA9IGxpbmtlZFNpZ25hbCgoKSA9PlxuXHRcdHRoaXMuY29uc3RyYWluRGF0ZSh0aGlzLmRlZmF1bHRGb2N1c2VkRGF0ZSgpID8/IHRoaXMuX2RhdGVBZGFwdGVyLm5vdygpKSxcblx0KTtcblxuXHQvKipcblx0ICogR2V0IGFsbCB0aGUgZGF5cyB0byBkaXNwbGF5LCB0aGlzIGlzIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoXG5cdCAqIGFuZCB0aGUgZGF5cyBvZiB0aGUgcHJldmlvdXMgYW5kIG5leHQgbW9udGggdG8gZmlsbCB0aGUgZ3JpZC5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdlZWtTdGFydHNPbiA9IHRoaXMuX3dlZWtTdGFydHNPbigpO1xuXHRcdGNvbnN0IG1vbnRoID0gdGhpcy5mb2N1c2VkRGF0ZSgpO1xuXHRcdGNvbnN0IGRheXM6IFRbXSA9IFtdO1xuXG5cdFx0Ly8gR2V0IHRoZSBmaXJzdCBhbmQgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuXHRcdGxldCBmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZNb250aChtb250aCk7XG5cdFx0bGV0IGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZk1vbnRoKG1vbnRoKTtcblxuXHRcdC8vIHdlIG5lZWQgdG8gc3VidHJhY3QgdW50aWwgd2UgZ2V0IHRoZSB0byBzdGFydGluZyBkYXkgYmVmb3JlIG9yIG9uIHRoZSBzdGFydCBvZiB0aGUgbW9udGguXG5cdFx0d2hpbGUgKHRoaXMuX2RhdGVBZGFwdGVyLmdldERheShmaXJzdERheSkgIT09IHdlZWtTdGFydHNPbikge1xuXHRcdFx0Zmlyc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IHdlZWtFbmRzT24gPSAod2Vla1N0YXJ0c09uICsgNikgJSA3O1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBhZGQgdW50aWwgd2UgZ2V0IHRvIHRoZSBlbmRpbmcgZGF5IGFmdGVyIG9yIG9uIHRoZSBlbmQgb2YgdGhlIG1vbnRoLlxuXHRcdHdoaWxlICh0aGlzLl9kYXRlQWRhcHRlci5nZXREYXkobGFzdERheSkgIT09IHdlZWtFbmRzT24pIHtcblx0XHRcdGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGQobGFzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdC8vIGNvbGxlY3QgYWxsIHRoZSBkYXlzIHRvIGRpc3BsYXkuXG5cdFx0d2hpbGUgKGZpcnN0RGF5IDw9IGxhc3REYXkpIHtcblx0XHRcdGRheXMucHVzaChmaXJzdERheSk7XG5cdFx0XHRmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXlzO1xuXHR9KTtcblxuXHRpc1NlbGVjdGVkKGRhdGU6IFQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRlKCk/LnNvbWUoKGQpID0+IHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkLCBkYXRlKSkgPz8gZmFsc2U7XG5cdH1cblxuXHRzZWxlY3REYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMuZGF0ZSgpIGFzIFRbXSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pc1NlbGVjdGVkKGRhdGUpKSB7XG5cdFx0XHRjb25zdCBtaW5TZWxlY3Rpb24gPSB0aGlzLm1pblNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKHNlbGVjdGVkPy5sZW5ndGggPT09IG1pblNlbGVjdGlvbikge1xuXHRcdFx0XHQvLyBtaW4gc2VsZWN0aW9uIHJlYWNoZWQsIGRvIG5vdCBhbGxvdyB0byBkZXNlbGVjdFxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZGF0ZS5zZXQoc2VsZWN0ZWQ/LmZpbHRlcigoZCkgPT4gIXRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkLCBkYXRlKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBtYXhTZWxlY3Rpb24gPSB0aGlzLm1heFNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKHNlbGVjdGVkPy5sZW5ndGggPT09IG1heFNlbGVjdGlvbikge1xuXHRcdFx0XHQvLyBtYXggc2VsZWN0aW9uIHJlYWNoZWQsIHJlc2V0IHRoZSBzZWxlY3Rpb24gdG8gZGF0ZVxuXHRcdFx0XHR0aGlzLmRhdGUuc2V0KFtkYXRlXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBhZGQgdGhlIGRhdGUgdG8gdGhlIHNlbGVjdGlvblxuXHRcdFx0XHR0aGlzLmRhdGUuc2V0KFsuLi4oc2VsZWN0ZWQgPz8gW10pLCBkYXRlXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gc2FtZSBhcyBpbiBicm4tY2FsZW5kYXIuZGlyZWN0aXZlLnRzXG5cdC8qKiBAaW50ZXJuYWwgQ29uc3RyYWluIGEgZGF0ZSB0byB0aGUgbWluIGFuZCBtYXggYm91bmRhcmllcyAqL1xuXHRjb25zdHJhaW5EYXRlKGRhdGU6IFQpOiBUIHtcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBubyBtaW4gb3IgbWF4LCByZXR1cm4gdGhlIGRhdGUuXG5cdFx0aWYgKCFtaW4gJiYgIW1heCkge1xuXHRcdFx0cmV0dXJuIGRhdGU7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtaW4gYW5kIHRoZSBkYXRlIGlzIGJlZm9yZSB0aGUgbWluLCByZXR1cm4gdGhlIG1pbi5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiBtaW47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtYXggYW5kIHRoZSBkYXRlIGlzIGFmdGVyIHRoZSBtYXgsIHJldHVybiB0aGUgbWF4LlxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIG1heDtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGRhdGUuXG5cdFx0cmV0dXJuIGRhdGU7XG5cdH1cblxuXHQvKiogQGludGVybmFsIERldGVybWluZSBpZiBhIGRhdGUgaXMgZGlzYWJsZWQgKi9cblx0aXNEYXRlRGlzYWJsZWQoZGF0ZTogVCk6IGJvb2xlYW4ge1xuXHRcdC8vIGlmIHRoZSBjYWxlbmRhciBpcyBkaXNhYmxlZCB3ZSBjYW4ndCBzZWxlY3QgdGhpcyBkYXRlXG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhlIGRhdGUgaXMgb3V0c2lkZSB0aGUgbWluIGFuZCBtYXggcmFuZ2Vcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhpcyBzcGVjaWZpYyBkYXRlIGlzIGRpc2FibGVkXG5cdFx0Y29uc3QgZGlzYWJsZWRGbiA9IHRoaXMuZGF0ZURpc2FibGVkKCk7XG5cblx0XHRpZiAoZGlzYWJsZWRGbihkYXRlKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCBTZXQgdGhlIGZvY3VzZWQgZGF0ZSAqL1xuXHRzZXRGb2N1c2VkRGF0ZShkYXRlOiBUKTogdm9pZCB7XG5cdFx0Ly8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgZGlzYWJsZWQuXG5cdFx0aWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmZvY3VzZWREYXRlLnNldChkYXRlKTtcblxuXHRcdC8vIHdhaXQgdW50aWwgdGhlIGNlbGxzIGhhdmUgYWxsIHVwZGF0ZWRcblx0XHRhZnRlck5leHRSZW5kZXIoXG5cdFx0XHR7XG5cdFx0XHRcdHdyaXRlOiAoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gZm9jdXMgdGhlIGNlbGwgd2l0aCB0aGUgdGFyZ2V0IGRhdGUuXG5cdFx0XHRcdFx0Y29uc3QgY2VsbCA9IHRoaXMuX2NlbGxzKCkuZmluZCgoYykgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lRGF5KGMuZGF0ZSgpLCBkYXRlKSk7XG5cblx0XHRcdFx0XHRpZiAoY2VsbCkge1xuXHRcdFx0XHRcdFx0Y2VsbC5mb2N1cygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGluamVjdG9yOiB0aGlzLl9pbmplY3Rvcixcblx0XHRcdH0sXG5cdFx0KTtcblxuXHRcdC8vIHdlIG11c3QgdXBkYXRlIHRoZSB2aWV3IHRvIGVuc3VyZSB0aGUgZm9jdXNlZCBjZWxsIGlzIHZpc2libGUuXG5cdFx0dGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG59XG4iXX0=","import { afterNextRender, booleanAttribute, ChangeDetectorRef, computed, contentChild, contentChildren, Directive, inject, Injector, input, linkedSignal, model, numberAttribute, } 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 { provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n } from '../i18n/calendar-i18n';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarRange {\n _i18n = injectBrnCalendarI18n();\n // /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the injector */\n _injector = inject(Injector);\n /** The minimum date that can be selected.*/\n min = input();\n /** The maximum date that can be selected. */\n max = input();\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n /** Whether a specific date is disabled. */\n dateDisabled = input(() => false);\n /** The day the week starts on */\n weekStartsOn = input(undefined, {\n transform: (v) => (v === undefined || v === null ? undefined : numberAttribute(v)),\n });\n _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n /** The default focused date. */\n defaultFocusedDate = input();\n /** @internal Access the header */\n header = contentChild(BrnCalendarHeader);\n /** Store the cells */\n _cells = contentChildren(BrnCalendarCellButton, {\n descendants: true,\n });\n /**\n * The focused date.\n */\n focusedDate = linkedSignal(() => this.constrainDate(this.defaultFocusedDate() ?? this.startDate() ?? this._dateAdapter.now()));\n /**\n * The selected start date\n */\n startDate = model();\n /**\n * The selected end date\n */\n endDate = model();\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n days = computed(() => {\n const weekStartsOn = this._weekStartsOn();\n const month = this.focusedDate();\n const days = [];\n // Get the first and last day of the month.\n let firstDay = this._dateAdapter.startOfMonth(month);\n let lastDay = this._dateAdapter.endOfMonth(month);\n // we need to subtract until we get the to starting day before or on the start of the month.\n while (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n firstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n }\n const weekEndsOn = (weekStartsOn + 6) % 7;\n // we need to add until we get to the ending day after or on the end of the month.\n while (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n lastDay = this._dateAdapter.add(lastDay, { days: 1 });\n }\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this._dateAdapter.add(firstDay, { days: 1 });\n }\n return days;\n });\n isSelected(date) {\n const start = this.startDate();\n const end = this.endDate();\n if (!start && !end) {\n return false;\n }\n const isStartSelected = start ? this._dateAdapter.isSameDay(date, start) : false;\n const isEndSelected = end ? this._dateAdapter.isSameDay(date, end) : false;\n return isStartSelected || isEndSelected;\n }\n selectDate(date) {\n const start = this.startDate();\n const end = this.endDate();\n if (!start && !end) {\n this.startDate.set(date);\n return;\n }\n if (start && !end) {\n if (this._dateAdapter.isAfter(date, start)) {\n this.endDate.set(date);\n }\n else if (this._dateAdapter.isBefore(date, start)) {\n this.startDate.set(date);\n this.endDate.set(start);\n }\n else if (this._dateAdapter.isSameDay(date, start)) {\n this.endDate.set(date);\n }\n return;\n }\n // If both start and end are selected, reset selection\n this.startDate.set(date);\n this.endDate.set(undefined);\n }\n // same as in brn-calendar.directive.ts\n /** @internal Constrain a date to the min and max boundaries */\n constrainDate(date) {\n const min = this.min();\n const max = this.max();\n // If there is no min or max, return the date.\n if (!min && !max) {\n return date;\n }\n // If there is a min and the date is before the min, return the min.\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return min;\n }\n // If there is a max and the date is after the max, return the max.\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return max;\n }\n // Return the date.\n return date;\n }\n /** @internal Determine if a date is disabled */\n isDateDisabled(date) {\n // if the calendar is disabled we can't select this date\n if (this.disabled()) {\n return true;\n }\n // if the date is outside the min and max range\n const min = this.min();\n const max = this.max();\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return true;\n }\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return true;\n }\n // if this specific date is disabled\n const disabledFn = this.dateDisabled();\n if (disabledFn(date)) {\n return true;\n }\n return false;\n }\n /** @internal Set the focused date */\n setFocusedDate(date) {\n // check if the date is disabled.\n if (this.isDateDisabled(date)) {\n return;\n }\n this.focusedDate.set(date);\n // wait until the cells have all updated\n afterNextRender({\n write: () => {\n // focus the cell with the target date.\n const cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n if (cell) {\n cell.focus();\n }\n },\n }, {\n injector: this._injector,\n });\n // we must update the view to ensure the focused cell is visible.\n this._changeDetector.detectChanges();\n }\n /**\n * Determine if a date is the start of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(date) {\n const start = this.startDate();\n return start ? this._dateAdapter.isSameDay(date, start) : false;\n }\n /**\n * Determine if a date is the end of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(date) {\n const end = this.endDate();\n return end ? this._dateAdapter.isSameDay(date, end) : false;\n }\n /**\n * Determine if a date is between the start and end dates.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(date) {\n const start = this.startDate();\n const end = this.endDate();\n if (!start || !end) {\n return false;\n }\n return this._dateAdapter.isAfter(date, start) && this._dateAdapter.isBefore(date, end);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarRange, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnCalendarRange, isStandalone: true, selector: \"[brnCalendarRange]\", inputs: { 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 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarRange, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarRange]',\n providers: [provideBrnCalendar(BrnCalendarRange)],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXJhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL21vZGUvYnJuLWNhbGVuZGFyLXJhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLGdCQUFnQjtJQUNYLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pELGlDQUFpQztJQUNkLFlBQVksR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXpELGlDQUFpQztJQUNoQixlQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFN0QsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5Qyw0Q0FBNEM7SUFDNUIsR0FBRyxHQUFHLEtBQUssRUFBSyxDQUFDO0lBRWpDLDZDQUE2QztJQUM3QixHQUFHLEdBQUcsS0FBSyxFQUFLLENBQUM7SUFFakMsZ0RBQWdEO0lBQ2hDLFFBQVEsR0FBRyxLQUFLLENB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LEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsSUFBTztRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEYsQ0FBQzswSEFoUVcsZ0JBQWdCOzhHQUFoQixnQkFBZ0Isa3JDQUZqQixDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUMsOERBc0NYLGlCQUFpQiw0RUFHZSxxQkFBcUI7OzJGQXZDL0UsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixrQkFBa0IsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRib29sZWFuQXR0cmlidXRlLFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0Y29udGVudENoaWxkcmVuLFxuXHREaXJlY3RpdmUsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRsaW5rZWRTaWduYWwsXG5cdG1vZGVsLFxuXHRudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJDZWxsQnV0dG9uIH0gZnJvbSAnLi4vYnJuLWNhbGVuZGFyLWNlbGwtYnV0dG9uJztcbmltcG9ydCB7IEJybkNhbGVuZGFySGVhZGVyIH0gZnJvbSAnLi4vYnJuLWNhbGVuZGFyLWhlYWRlcic7XG5pbXBvcnQgeyB0eXBlIEJybkNhbGVuZGFyQmFzZSwgcHJvdmlkZUJybkNhbGVuZGFyIH0gZnJvbSAnLi4vYnJuLWNhbGVuZGFyLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFySTE4biwgdHlwZSBXZWVrZGF5IH0gZnJvbSAnLi4vaTE4bi9jYWxlbmRhci1pMThuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFyUmFuZ2VdJyxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZUJybkNhbGVuZGFyKEJybkNhbGVuZGFyUmFuZ2UpXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJSYW5nZTxUPiBpbXBsZW1lbnRzIEJybkNhbGVuZGFyQmFzZTxUPiB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2kxOG4gPSBpbmplY3RCcm5DYWxlbmRhckkxOG4oKTtcblx0Ly8gLyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgaW5qZWN0b3IgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdC8qKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiovXG5cdHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogRGV0ZXJtaW5lIGlmIHRoZSBkYXRlIHBpY2tlciBpcyBkaXNhYmxlZC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuXHRcdHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcblx0fSk7XG5cblx0LyoqIFdoZXRoZXIgYSBzcGVjaWZpYyBkYXRlIGlzIGRpc2FibGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGF0ZURpc2FibGVkID0gaW5wdXQ8KGRhdGU6IFQpID0+IGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcblxuXHQvKiogVGhlIGRheSB0aGUgd2VlayBzdGFydHMgb24gKi9cblx0cHVibGljIHJlYWRvbmx5IHdlZWtTdGFydHNPbiA9IGlucHV0PFdlZWtkYXksIE51bWJlcklucHV0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHtcblx0XHR0cmFuc2Zvcm06ICh2OiB1bmtub3duKSA9PiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgPyB1bmRlZmluZWQgOiAobnVtYmVyQXR0cmlidXRlKHYpIGFzIFdlZWtkYXkpKSxcblx0fSk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF93ZWVrU3RhcnRzT24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLndlZWtTdGFydHNPbigpID8/IHRoaXMuX2kxOG4uY29uZmlnKCkuZmlyc3REYXlPZldlZWsoKSk7XG5cblx0LyoqIFRoZSBkZWZhdWx0IGZvY3VzZWQgZGF0ZS4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRlZmF1bHRGb2N1c2VkRGF0ZSA9IGlucHV0PFQ+KCk7XG5cblx0LyoqIEBpbnRlcm5hbCBBY2Nlc3MgdGhlIGhlYWRlciAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgaGVhZGVyID0gY29udGVudENoaWxkKEJybkNhbGVuZGFySGVhZGVyKTtcblxuXHQvKiogU3RvcmUgdGhlIGNlbGxzICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfY2VsbHMgPSBjb250ZW50Q2hpbGRyZW48QnJuQ2FsZW5kYXJDZWxsQnV0dG9uPFQ+PihCcm5DYWxlbmRhckNlbGxCdXR0b24sIHtcblx0XHRkZXNjZW5kYW50czogdHJ1ZSxcblx0fSk7XG5cblx0LyoqXG5cdCAqIFRoZSBmb2N1c2VkIGRhdGUuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZm9jdXNlZERhdGUgPSBsaW5rZWRTaWduYWwoKCkgPT5cblx0XHR0aGlzLmNvbnN0cmFpbkRhdGUodGhpcy5kZWZhdWx0Rm9jdXNlZERhdGUoKSA/PyB0aGlzLnN0YXJ0RGF0ZSgpID8/IHRoaXMuX2RhdGVBZGFwdGVyLm5vdygpKSxcblx0KTtcblxuXHQvKipcblx0ICogVGhlIHNlbGVjdGVkIHN0YXJ0IGRhdGVcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBzdGFydERhdGUgPSBtb2RlbDxUPigpO1xuXG5cdC8qKlxuXHQgKiBUaGUgc2VsZWN0ZWQgZW5kIGRhdGVcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBlbmREYXRlID0gbW9kZWw8VD4oKTtcblxuXHQvKipcblx0ICogR2V0IGFsbCB0aGUgZGF5cyB0byBkaXNwbGF5LCB0aGlzIGlzIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoXG5cdCAqIGFuZCB0aGUgZGF5cyBvZiB0aGUgcHJldmlvdXMgYW5kIG5leHQgbW9udGggdG8gZmlsbCB0aGUgZ3JpZC5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdlZWtTdGFydHNPbiA9IHRoaXMuX3dlZWtTdGFydHNPbigpO1xuXHRcdGNvbnN0IG1vbnRoID0gdGhpcy5mb2N1c2VkRGF0ZSgpO1xuXHRcdGNvbnN0IGRheXM6IFRbXSA9IFtdO1xuXG5cdFx0Ly8gR2V0IHRoZSBmaXJzdCBhbmQgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuXHRcdGxldCBmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZNb250aChtb250aCk7XG5cdFx0bGV0IGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZk1vbnRoKG1vbnRoKTtcblxuXHRcdC8vIHdlIG5lZWQgdG8gc3VidHJhY3QgdW50aWwgd2UgZ2V0IHRoZSB0byBzdGFydGluZyBkYXkgYmVmb3JlIG9yIG9uIHRoZSBzdGFydCBvZiB0aGUgbW9udGguXG5cdFx0d2hpbGUgKHRoaXMuX2RhdGVBZGFwdGVyLmdldERheShmaXJzdERheSkgIT09IHdlZWtTdGFydHNPbikge1xuXHRcdFx0Zmlyc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IHdlZWtFbmRzT24gPSAod2Vla1N0YXJ0c09uICsgNikgJSA3O1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBhZGQgdW50aWwgd2UgZ2V0IHRvIHRoZSBlbmRpbmcgZGF5IGFmdGVyIG9yIG9uIHRoZSBlbmQgb2YgdGhlIG1vbnRoLlxuXHRcdHdoaWxlICh0aGlzLl9kYXRlQWRhcHRlci5nZXREYXkobGFzdERheSkgIT09IHdlZWtFbmRzT24pIHtcblx0XHRcdGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGQobGFzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdC8vIGNvbGxlY3QgYWxsIHRoZSBkYXlzIHRvIGRpc3BsYXkuXG5cdFx0d2hpbGUgKGZpcnN0RGF5IDw9IGxhc3REYXkpIHtcblx0XHRcdGRheXMucHVzaChmaXJzdERheSk7XG5cdFx0XHRmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXlzO1xuXHR9KTtcblxuXHRpc1NlbGVjdGVkKGRhdGU6IFQpOiBib29sZWFuIHtcblx0XHRjb25zdCBzdGFydCA9IHRoaXMuc3RhcnREYXRlKCk7XG5cdFx0Y29uc3QgZW5kID0gdGhpcy5lbmREYXRlKCk7XG5cblx0XHRpZiAoIXN0YXJ0ICYmICFlbmQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgaXNTdGFydFNlbGVjdGVkID0gc3RhcnQgPyB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkoZGF0ZSwgc3RhcnQpIDogZmFsc2U7XG5cdFx0Y29uc3QgaXNFbmRTZWxlY3RlZCA9IGVuZCA/IHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBlbmQpIDogZmFsc2U7XG5cblx0XHRyZXR1cm4gaXNTdGFydFNlbGVjdGVkIHx8IGlzRW5kU2VsZWN0ZWQ7XG5cdH1cblxuXHRzZWxlY3REYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHRjb25zdCBzdGFydCA9IHRoaXMuc3RhcnREYXRlKCk7XG5cdFx0Y29uc3QgZW5kID0gdGhpcy5lbmREYXRlKCk7XG5cblx0XHRpZiAoIXN0YXJ0ICYmICFlbmQpIHtcblx0XHRcdHRoaXMuc3RhcnREYXRlLnNldChkYXRlKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChzdGFydCAmJiAhZW5kKSB7XG5cdFx0XHRpZiAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCBzdGFydCkpIHtcblx0XHRcdFx0dGhpcy5lbmREYXRlLnNldChkYXRlKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgc3RhcnQpKSB7XG5cdFx0XHRcdHRoaXMuc3RhcnREYXRlLnNldChkYXRlKTtcblx0XHRcdFx0dGhpcy5lbmREYXRlLnNldChzdGFydCk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBzdGFydCkpIHtcblx0XHRcdFx0dGhpcy5lbmREYXRlLnNldChkYXRlKTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJZiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHNlbGVjdGVkLCByZXNldCBzZWxlY3Rpb25cblx0XHR0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSk7XG5cblx0XHR0aGlzLmVuZERhdGUuc2V0KHVuZGVmaW5lZCk7XG5cdH1cblxuXHQvLyBzYW1lIGFzIGluIGJybi1jYWxlbmRhci5kaXJlY3RpdmUudHNcblx0LyoqIEBpbnRlcm5hbCBDb25zdHJhaW4gYSBkYXRlIHRvIHRoZSBtaW4gYW5kIG1heCBib3VuZGFyaWVzICovXG5cdGNvbnN0cmFpbkRhdGUoZGF0ZTogVCk6IFQge1xuXHRcdGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XG5cdFx0Y29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcblxuXHRcdC8vIElmIHRoZXJlIGlzIG5vIG1pbiBvciBtYXgsIHJldHVybiB0aGUgZGF0ZS5cblx0XHRpZiAoIW1pbiAmJiAhbWF4KSB7XG5cdFx0XHRyZXR1cm4gZGF0ZTtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBhIG1pbiBhbmQgdGhlIGRhdGUgaXMgYmVmb3JlIHRoZSBtaW4sIHJldHVybiB0aGUgbWluLlxuXHRcdGlmIChtaW4gJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZkRheShtaW4pKSkge1xuXHRcdFx0cmV0dXJuIG1pbjtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBhIG1heCBhbmQgdGhlIGRhdGUgaXMgYWZ0ZXIgdGhlIG1heCwgcmV0dXJuIHRoZSBtYXguXG5cdFx0aWYgKG1heCAmJiB0aGlzLl9kYXRlQWRhcHRlci5pc0FmdGVyKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mRGF5KG1heCkpKSB7XG5cdFx0XHRyZXR1cm4gbWF4O1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgZGF0ZS5cblx0XHRyZXR1cm4gZGF0ZTtcblx0fVxuXG5cdC8qKiBAaW50ZXJuYWwgRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyBkaXNhYmxlZCAqL1xuXHRpc0RhdGVEaXNhYmxlZChkYXRlOiBUKTogYm9vbGVhbiB7XG5cdFx0Ly8gaWYgdGhlIGNhbGVuZGFyIGlzIGRpc2FibGVkIHdlIGNhbid0IHNlbGVjdCB0aGlzIGRhdGVcblx0XHRpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBpZiB0aGUgZGF0ZSBpcyBvdXRzaWRlIHRoZSBtaW4gYW5kIG1heCByYW5nZVxuXHRcdGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XG5cdFx0Y29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcblxuXHRcdGlmIChtaW4gJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZkRheShtaW4pKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKG1heCAmJiB0aGlzLl9kYXRlQWRhcHRlci5pc0FmdGVyKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mRGF5KG1heCkpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBpZiB0aGlzIHNwZWNpZmljIGRhdGUgaXMgZGlzYWJsZWRcblx0XHRjb25zdCBkaXNhYmxlZEZuID0gdGhpcy5kYXRlRGlzYWJsZWQoKTtcblxuXHRcdGlmIChkaXNhYmxlZEZuKGRhdGUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKiogQGludGVybmFsIFNldCB0aGUgZm9jdXNlZCBkYXRlICovXG5cdHNldEZvY3VzZWREYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHQvLyBjaGVjayBpZiB0aGUgZGF0ZSBpcyBkaXNhYmxlZC5cblx0XHRpZiAodGhpcy5pc0RhdGVEaXNhYmxlZChkYXRlKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuZm9jdXNlZERhdGUuc2V0KGRhdGUpO1xuXG5cdFx0Ly8gd2FpdCB1bnRpbCB0aGUgY2VsbHMgaGF2ZSBhbGwgdXBkYXRlZFxuXHRcdGFmdGVyTmV4dFJlbmRlcihcblx0XHRcdHtcblx0XHRcdFx0d3JpdGU6ICgpID0+IHtcblx0XHRcdFx0XHQvLyBmb2N1cyB0aGUgY2VsbCB3aXRoIHRoZSB0YXJnZXQgZGF0ZS5cblx0XHRcdFx0XHRjb25zdCBjZWxsID0gdGhpcy5fY2VsbHMoKS5maW5kKChjKSA9PiB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkoYy5kYXRlKCksIGRhdGUpKTtcblxuXHRcdFx0XHRcdGlmIChjZWxsKSB7XG5cdFx0XHRcdFx0XHRjZWxsLmZvY3VzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0aW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuXHRcdFx0fSxcblx0XHQpO1xuXG5cdFx0Ly8gd2UgbXVzdCB1cGRhdGUgdGhlIHZpZXcgdG8gZW5zdXJlIHRoZSBmb2N1c2VkIGNlbGwgaXMgdmlzaWJsZS5cblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyB0aGUgc3RhcnQgb2YgYSByYW5nZS5cblx0ICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIEFsd2F5cyBmYWxzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc1N0YXJ0T2ZSYW5nZShkYXRlOiBUKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0RGF0ZSgpO1xuXHRcdHJldHVybiBzdGFydCA/IHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBzdGFydCkgOiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmUgaWYgYSBkYXRlIGlzIHRoZSBlbmQgb2YgYSByYW5nZS5cblx0ICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIEFsd2F5cyBmYWxzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc0VuZE9mUmFuZ2UoZGF0ZTogVCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGVuZCA9IHRoaXMuZW5kRGF0ZSgpO1xuXHRcdHJldHVybiBlbmQgPyB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkoZGF0ZSwgZW5kKSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy5cblx0ICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcywgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzQmV0d2VlblJhbmdlKGRhdGU6IFQpOiBib29sZWFuIHtcblx0XHRjb25zdCBzdGFydCA9IHRoaXMuc3RhcnREYXRlKCk7XG5cdFx0Y29uc3QgZW5kID0gdGhpcy5lbmREYXRlKCk7XG5cblx0XHRpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCBzdGFydCkgJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgZW5kKTtcblx0fVxufVxuIl19","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';\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';\nexport const BrnCalendarImports = [\n BrnCalendarCellButton,\n BrnCalendarGrid,\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeek,\n BrnCalendarWeekday,\n BrnCalendar,\n BrnCalendarCell,\n BrnCalendarMulti,\n BrnCalendarRange,\n BrnCalendarMonthSelect,\n BrnCalendarYearSelect,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIscUJBQXFCO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJybkNhbGVuZGFyIH0gZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyJztcbmltcG9ydCB7IEJybkNhbGVuZGFyQ2VsbCB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsJztcbmltcG9ydCB7IEJybkNhbGVuZGFyQ2VsbEJ1dHRvbiB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckdyaWQgfSBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItZ3JpZCc7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckhlYWRlciB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1oZWFkZXInO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJNb250aFNlbGVjdCB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1tb250aC1zZWxlY3QnO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJOZXh0QnV0dG9uIH0gZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLW5leHQtYnV0dG9uJztcbmltcG9ydCB7IEJybkNhbGVuZGFyUHJldmlvdXNCdXR0b24gfSBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uJztcbmltcG9ydCB7IEJybkNhbGVuZGFyV2VlayB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci13ZWVrJztcbmltcG9ydCB7IEJybkNhbGVuZGFyV2Vla2RheSB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci13ZWVrZGF5JztcbmltcG9ydCB7IEJybkNhbGVuZGFyWWVhclNlbGVjdCB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci15ZWFyLXNlbGVjdCc7XG5pbXBvcnQgeyBCcm5DYWxlbmRhck11bHRpIH0gZnJvbSAnLi9saWIvbW9kZS9icm4tY2FsZW5kYXItbXVsdGlwbGUnO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJSYW5nZSB9IGZyb20gJy4vbGliL21vZGUvYnJuLWNhbGVuZGFyLXJhbmdlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItZ3JpZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1tb250aC1zZWxlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLW5leHQtYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1wcmV2aW91cy1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLXdlZWsnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLXdlZWtkYXknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLXllYXItc2VsZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pMThuL2NhbGVuZGFyLWkxOG4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZS9icm4tY2FsZW5kYXItbXVsdGlwbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZS9icm4tY2FsZW5kYXItcmFuZ2UnO1xuXG5leHBvcnQgY29uc3QgQnJuQ2FsZW5kYXJJbXBvcnRzID0gW1xuXHRCcm5DYWxlbmRhckNlbGxCdXR0b24sXG5cdEJybkNhbGVuZGFyR3JpZCxcblx0QnJuQ2FsZW5kYXJIZWFkZXIsXG5cdEJybkNhbGVuZGFyTmV4dEJ1dHRvbixcblx0QnJuQ2FsZW5kYXJQcmV2aW91c0J1dHRvbixcblx0QnJuQ2FsZW5kYXJXZWVrLFxuXHRCcm5DYWxlbmRhcldlZWtkYXksXG5cdEJybkNhbGVuZGFyLFxuXHRCcm5DYWxlbmRhckNlbGwsXG5cdEJybkNhbGVuZGFyTXVsdGksXG5cdEJybkNhbGVuZGFyUmFuZ2UsXG5cdEJybkNhbGVuZGFyTW9udGhTZWxlY3QsXG5cdEJybkNhbGVuZGFyWWVhclNlbGVjdCxcbl0gYXMgY29uc3Q7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL3NwYXJ0YW4tbmctYnJhaW4tY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-calendar.mjs","sources":["../tmp-esm2022/calendar/lib/brn-calendar.token.js","../tmp-esm2022/calendar/lib/brn-calendar-cell-button.js","../tmp-esm2022/calendar/lib/brn-calendar-header.js","../tmp-esm2022/calendar/lib/i18n/calendar-i18n.js","../tmp-esm2022/calendar/lib/brn-calendar.js","../tmp-esm2022/calendar/lib/brn-calendar-cell.js","../tmp-esm2022/calendar/lib/brn-calendar-grid.js","../tmp-esm2022/calendar/lib/brn-calendar-month-select.js","../tmp-esm2022/calendar/lib/brn-calendar-next-button.js","../tmp-esm2022/calendar/lib/brn-calendar-previous-button.js","../tmp-esm2022/calendar/lib/brn-calendar-week.js","../tmp-esm2022/calendar/lib/brn-calendar-weekday.js","../tmp-esm2022/calendar/lib/brn-calendar-year-select.js","../tmp-esm2022/calendar/lib/mode/brn-calendar-multiple.js","../tmp-esm2022/calendar/lib/mode/brn-calendar-range.js","../tmp-esm2022/calendar/index.js","../tmp-esm2022/calendar/spartan-ng-brain-calendar.js"],"sourcesContent":["import { InjectionToken, inject, } from '@angular/core';\nexport const BrnCalendarToken = new InjectionToken('BrnCalendarToken');\nexport function provideBrnCalendar(instance) {\n return { provide: BrnCalendarToken, useExisting: instance };\n}\n/**\n * Inject the calendar component.\n */\nexport function injectBrnCalendar() {\n return inject(BrnCalendarToken);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sY0FBYyxFQUlkLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQXFCdkIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQTJCLGtCQUFrQixDQUFDLENBQUM7QUFFakcsTUFBTSxVQUFVLGtCQUFrQixDQUFJLFFBQWtDO0lBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUI7SUFDaEMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQXVCLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdHR5cGUgRXhpc3RpbmdQcm92aWRlcixcblx0SW5qZWN0aW9uVG9rZW4sXG5cdHR5cGUgU2lnbmFsLFxuXHR0eXBlIFR5cGUsXG5cdHR5cGUgV3JpdGFibGVTaWduYWwsXG5cdGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJybkNhbGVuZGFySGVhZGVyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXItaGVhZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRpc1NlbGVjdGVkOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0c2VsZWN0RGF0ZTogKGRhdGU6IFQpID0+IHZvaWQ7XG5cblx0Y29uc3RyYWluRGF0ZTogKGRhdGU6IFQpID0+IFQ7XG5cdGlzRGF0ZURpc2FibGVkOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0c2V0Rm9jdXNlZERhdGU6IChkYXRlOiBUKSA9PiB2b2lkO1xuXG5cdGlzU3RhcnRPZlJhbmdlOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0aXNFbmRPZlJhbmdlOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcblx0aXNCZXR3ZWVuUmFuZ2U6IChkYXRlOiBUKSA9PiBib29sZWFuO1xuXG5cdGRpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj47XG5cdGZvY3VzZWREYXRlOiBXcml0YWJsZVNpZ25hbDxUPjtcblx0aGVhZGVyOiBTaWduYWw8QnJuQ2FsZW5kYXJIZWFkZXIgfCB1bmRlZmluZWQ+O1xuXHRkYXlzOiBTaWduYWw8VFtdPjtcbn1cblxuZXhwb3J0IGNvbnN0IEJybkNhbGVuZGFyVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnJuQ2FsZW5kYXJCYXNlPHVua25vd24+PignQnJuQ2FsZW5kYXJUb2tlbicpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJybkNhbGVuZGFyPFQ+KGluc3RhbmNlOiBUeXBlPEJybkNhbGVuZGFyQmFzZTxUPj4pOiBFeGlzdGluZ1Byb3ZpZGVyIHtcblx0cmV0dXJuIHsgcHJvdmlkZTogQnJuQ2FsZW5kYXJUb2tlbiwgdXNlRXhpc3Rpbmc6IGluc3RhbmNlIH07XG59XG5cbi8qKlxuICogSW5qZWN0IHRoZSBjYWxlbmRhciBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcm5DYWxlbmRhcjxUPigpOiBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRyZXR1cm4gaW5qZWN0KEJybkNhbGVuZGFyVG9rZW4pIGFzIEJybkNhbGVuZGFyQmFzZTxUPjtcbn1cbiJdfQ==","import { computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarCellButton {\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar component */\n _calendar = injectBrnCalendar();\n /** Access the element ref */\n _elementRef = inject(ElementRef);\n /** The date this cell represents */\n date = input.required();\n /** Whether this date is currently selected */\n selected = computed(() => this._calendar.isSelected(this.date()));\n start = computed(() => this._calendar.isStartOfRange(this.date()));\n end = computed(() => this._calendar.isEndOfRange(this.date()));\n betweenRange = computed(() => this._calendar.isBetweenRange(this.date()));\n /** Whether this date is focusable */\n focusable = computed(() => this._dateAdapter.isSameDay(this._calendar.focusedDate(), this.date()));\n outside = computed(() => {\n const focusedDate = this._calendar.focusedDate();\n return !this._dateAdapter.isSameMonth(this.date(), focusedDate);\n });\n /** Whether this date is today */\n today = computed(() => this._dateAdapter.isSameDay(this.date(), this._dateAdapter.now()));\n /** Whether this date is disabled */\n disabled = computed(() => this._calendar.isDateDisabled(this.date()) || this._calendar.disabled());\n /**\n * Focus the previous cell.\n */\n focusPrevious(event) {\n event.preventDefault();\n event.stopPropagation();\n // in rtl, the arrow keys are reversed.\n const targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n days: this.getDirection() === 'rtl' ? 1 : -1,\n });\n this._calendar.setFocusedDate(targetDate);\n }\n /**\n * Focus the next cell.\n */\n focusNext(event) {\n event.preventDefault();\n event.stopPropagation();\n const targetDate = this._dateAdapter.add(this._calendar.focusedDate(), {\n days: this.getDirection() === 'rtl' ? -1 : 1,\n });\n this._calendar.setFocusedDate(targetDate);\n }\n /**\n * Focus the above cell.\n */\n focusAbove(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.subtract(this._calendar.focusedDate(), { days: 7 }));\n }\n /**\n * Focus the below cell.\n */\n focusBelow(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.add(this._calendar.focusedDate(), { days: 7 }));\n }\n /**\n * Focus the first date of the month.\n */\n focusFirst(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.startOfMonth(this._calendar.focusedDate()));\n }\n /**\n * Focus the last date of the month.\n */\n focusLast(event) {\n event.preventDefault();\n event.stopPropagation();\n this._calendar.setFocusedDate(this._dateAdapter.endOfMonth(this._calendar.focusedDate()));\n }\n /**\n * Focus the same date in the previous month.\n */\n focusPreviousMonth(event) {\n event.preventDefault();\n event.stopPropagation();\n const date = this._dateAdapter.getDate(this._calendar.focusedDate());\n let previousMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n previousMonthTarget = this._dateAdapter.subtract(previousMonthTarget, { months: 1 });\n const lastDay = this._dateAdapter.endOfMonth(previousMonthTarget);\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this._dateAdapter.getDate(lastDay)) {\n this._calendar.setFocusedDate(lastDay);\n }\n else {\n this._calendar.setFocusedDate(this._dateAdapter.set(previousMonthTarget, { day: date }));\n }\n }\n /**\n * Focus the same date in the next month.\n */\n focusNextMonth(event) {\n event.preventDefault();\n event.stopPropagation();\n const date = this._dateAdapter.getDate(this._calendar.focusedDate());\n let nextMonthTarget = this._dateAdapter.startOfMonth(this._calendar.focusedDate());\n nextMonthTarget = this._dateAdapter.add(nextMonthTarget, { months: 1 });\n const lastDay = this._dateAdapter.endOfMonth(nextMonthTarget);\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this._dateAdapter.getDate(lastDay)) {\n this._calendar.setFocusedDate(lastDay);\n }\n else {\n this._calendar.setFocusedDate(this._dateAdapter.set(nextMonthTarget, { day: date }));\n }\n }\n /**\n * Get the direction of the element.\n */\n getDirection() {\n return getComputedStyle(this._elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n focus() {\n this._elementRef.nativeElement.focus();\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCellButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnCalendarCellButton, isStandalone: true, selector: \"button[brnCalendarCellButton]\", inputs: { date: { classPropertyName: \"date\", publicName: \"date\", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { \"role\": \"gridcell\", \"type\": \"button\" }, listeners: { \"click\": \"_calendar.selectDate(date())\", \"keydown.arrowLeft\": \"focusPrevious($event)\", \"keydown.arrowRight\": \"focusNext($event)\", \"keydown.arrowUp\": \"focusAbove($event)\", \"keydown.arrowDown\": \"focusBelow($event)\", \"keydown.home\": \"focusFirst($event)\", \"keydown.end\": \"focusLast($event)\", \"keydown.pageUp\": \"focusPreviousMonth($event)\", \"keydown.pageDown\": \"focusNextMonth($event)\" }, properties: { \"tabindex\": \"focusable() ? 0 : -1\", \"attr.data-outside\": \"!selected() && outside() && (!end() && !start())? '' : null\", \"attr.data-today\": \"today() && !selected() ? '' : null\", \"attr.data-selected\": \"selected() ? '' : null\", \"attr.data-disabled\": \"disabled() ? '' : null\", \"attr.aria-selected\": \"selected() ? 'true' : null\", \"attr.aria-disabled\": \"disabled() ? 'true' : null\", \"attr.data-range-start\": \"start() ? \\\"\\\" : null\", \"attr.data-range-end\": \"end() ? \\\"\\\" : null\", \"attr.data-range-between\": \"betweenRange() ? \\\"\\\" : null\", \"disabled\": \"disabled()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCellButton, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[brnCalendarCellButton]',\n host: {\n role: 'gridcell',\n '[tabindex]': 'focusable() ? 0 : -1',\n type: 'button',\n '[attr.data-outside]': \"!selected() && outside() && (!end() && !start())? '' : null\",\n '[attr.data-today]': \"today() && !selected() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.aria-selected]': \"selected() ? 'true' : null\",\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.data-range-start]': 'start() ? \"\" : null',\n '[attr.data-range-end]': 'end() ? \"\" : null',\n '[attr.data-range-between]': 'betweenRange() ? \"\" : null',\n '[disabled]': 'disabled()',\n '(click)': '_calendar.selectDate(date())',\n '(keydown.arrowLeft)': 'focusPrevious($event)',\n '(keydown.arrowRight)': 'focusNext($event)',\n '(keydown.arrowUp)': 'focusAbove($event)',\n '(keydown.arrowDown)': 'focusBelow($event)',\n '(keydown.home)': 'focusFirst($event)',\n '(keydown.end)': 'focusLast($event)',\n '(keydown.pageUp)': 'focusPreviousMonth($event)',\n '(keydown.pageDown)': 'focusNextMonth($event)',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWNlbGwtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUE2QnpELE1BQU0sT0FBTyxxQkFBcUI7SUFDakMsOEJBQThCO0lBQ1gsWUFBWSxHQUFHLGlCQUFpQixFQUFLLENBQUM7SUFFekQsb0NBQW9DO0lBQ2pCLFNBQVMsR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXRELDZCQUE2QjtJQUNaLFdBQVcsR0FBRyxNQUFNLENBQWdDLFVBQVUsQ0FBQyxDQUFDO0lBRWpGLG9DQUFvQztJQUNwQixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBSyxDQUFDO0lBRTNDLDhDQUE4QztJQUM5QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FB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O3dCQUMxQixTQUFTLEVBQUUsOEJBQThCO3dCQUN6QyxxQkFBcUIsRUFBRSx1QkFBdUI7d0JBQzlDLHNCQUFzQixFQUFFLG1CQUFtQjt3QkFDM0MsbUJBQW1CLEVBQUUsb0JBQW9CO3dCQUN6QyxxQkFBcUIsRUFBRSxvQkFBb0I7d0JBQzNDLGdCQUFnQixFQUFFLG9CQUFvQjt3QkFDdEMsZUFBZSxFQUFFLG1CQUFtQjt3QkFDcEMsa0JBQWtCLEVBQUUsNEJBQTRCO3dCQUNoRCxvQkFBb0IsRUFBRSx3QkFBd0I7cUJBQzlDO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXIgfSBmcm9tICcuL2Jybi1jYWxlbmRhci50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2J1dHRvblticm5DYWxlbmRhckNlbGxCdXR0b25dJyxcblx0aG9zdDoge1xuXHRcdHJvbGU6ICdncmlkY2VsbCcsXG5cdFx0J1t0YWJpbmRleF0nOiAnZm9jdXNhYmxlKCkgPyAwIDogLTEnLFxuXHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdCdbYXR0ci5kYXRhLW91dHNpZGVdJzogXCIhc2VsZWN0ZWQoKSAmJiBvdXRzaWRlKCkgJiYgKCFlbmQoKSAmJiAhc3RhcnQoKSk/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5kYXRhLXRvZGF5XSc6IFwidG9kYXkoKSAmJiAhc2VsZWN0ZWQoKSA/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5kYXRhLXNlbGVjdGVkXSc6IFwic2VsZWN0ZWQoKSA/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5kYXRhLWRpc2FibGVkXSc6IFwiZGlzYWJsZWQoKSA/ICcnIDogbnVsbFwiLFxuXHRcdCdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6IFwic2VsZWN0ZWQoKSA/ICd0cnVlJyA6IG51bGxcIixcblx0XHQnW2F0dHIuYXJpYS1kaXNhYmxlZF0nOiBcImRpc2FibGVkKCkgPyAndHJ1ZScgOiBudWxsXCIsXG5cdFx0J1thdHRyLmRhdGEtcmFuZ2Utc3RhcnRdJzogJ3N0YXJ0KCkgPyBcIlwiIDogbnVsbCcsXG5cdFx0J1thdHRyLmRhdGEtcmFuZ2UtZW5kXSc6ICdlbmQoKSA/IFwiXCIgOiBudWxsJyxcblx0XHQnW2F0dHIuZGF0YS1yYW5nZS1iZXR3ZWVuXSc6ICdiZXR3ZWVuUmFuZ2UoKSA/IFwiXCIgOiBudWxsJyxcblx0XHQnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcblx0XHQnKGNsaWNrKSc6ICdfY2FsZW5kYXIuc2VsZWN0RGF0ZShkYXRlKCkpJyxcblx0XHQnKGtleWRvd24uYXJyb3dMZWZ0KSc6ICdmb2N1c1ByZXZpb3VzKCRldmVudCknLFxuXHRcdCcoa2V5ZG93bi5hcnJvd1JpZ2h0KSc6ICdmb2N1c05leHQoJGV2ZW50KScsXG5cdFx0JyhrZXlkb3duLmFycm93VXApJzogJ2ZvY3VzQWJvdmUoJGV2ZW50KScsXG5cdFx0JyhrZXlkb3duLmFycm93RG93biknOiAnZm9jdXNCZWxvdygkZXZlbnQpJyxcblx0XHQnKGtleWRvd24uaG9tZSknOiAnZm9jdXNGaXJzdCgkZXZlbnQpJyxcblx0XHQnKGtleWRvd24uZW5kKSc6ICdmb2N1c0xhc3QoJGV2ZW50KScsXG5cdFx0JyhrZXlkb3duLnBhZ2VVcCknOiAnZm9jdXNQcmV2aW91c01vbnRoKCRldmVudCknLFxuXHRcdCcoa2V5ZG93bi5wYWdlRG93biknOiAnZm9jdXNOZXh0TW9udGgoJGV2ZW50KScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyQ2VsbEJ1dHRvbjxUPiB7XG5cdC8qKiBBY2Nlc3MgdGhlIGRhdGUgYWRhcHRlciAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGVBZGFwdGVyID0gaW5qZWN0RGF0ZUFkYXB0ZXI8VD4oKTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciBjb21wb25lbnQgKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyPFQ+KCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZWxlbWVudCByZWYgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cblx0LyoqIFRoZSBkYXRlIHRoaXMgY2VsbCByZXByZXNlbnRzICovXG5cdHB1YmxpYyByZWFkb25seSBkYXRlID0gaW5wdXQucmVxdWlyZWQ8VD4oKTtcblxuXHQvKiogV2hldGhlciB0aGlzIGRhdGUgaXMgY3VycmVudGx5IHNlbGVjdGVkICovXG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NhbGVuZGFyLmlzU2VsZWN0ZWQodGhpcy5kYXRlKCkpKTtcblx0cHVibGljIHJlYWRvbmx5IHN0YXJ0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY2FsZW5kYXIuaXNTdGFydE9mUmFuZ2UodGhpcy5kYXRlKCkpKTtcblx0cHVibGljIHJlYWRvbmx5IGVuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NhbGVuZGFyLmlzRW5kT2ZSYW5nZSh0aGlzLmRhdGUoKSkpO1xuXHRwdWJsaWMgcmVhZG9ubHkgYmV0d2VlblJhbmdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY2FsZW5kYXIuaXNCZXR3ZWVuUmFuZ2UodGhpcy5kYXRlKCkpKTtcblxuXHQvKiogV2hldGhlciB0aGlzIGRhdGUgaXMgZm9jdXNhYmxlICovXG5cdHB1YmxpYyByZWFkb25seSBmb2N1c2FibGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwgdGhpcy5kYXRlKCkpKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgb3V0c2lkZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBmb2N1c2VkRGF0ZSA9IHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCk7XG5cdFx0cmV0dXJuICF0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVNb250aCh0aGlzLmRhdGUoKSwgZm9jdXNlZERhdGUpO1xuXHR9KTtcblxuXHQvKiogV2hldGhlciB0aGlzIGRhdGUgaXMgdG9kYXkgKi9cblx0cHVibGljIHJlYWRvbmx5IHRvZGF5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lRGF5KHRoaXMuZGF0ZSgpLCB0aGlzLl9kYXRlQWRhcHRlci5ub3coKSkpO1xuXG5cdC8qKiBXaGV0aGVyIHRoaXMgZGF0ZSBpcyBkaXNhYmxlZCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jYWxlbmRhci5pc0RhdGVEaXNhYmxlZCh0aGlzLmRhdGUoKSkgfHwgdGhpcy5fY2FsZW5kYXIuZGlzYWJsZWQoKSk7XG5cblx0LyoqXG5cdCAqIEZvY3VzIHRoZSBwcmV2aW91cyBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzUHJldmlvdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdC8vIGluIHJ0bCwgdGhlIGFycm93IGtleXMgYXJlIHJldmVyc2VkLlxuXHRcdGNvbnN0IHRhcmdldERhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGQodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwge1xuXHRcdFx0ZGF5czogdGhpcy5nZXREaXJlY3Rpb24oKSA9PT0gJ3J0bCcgPyAxIDogLTEsXG5cdFx0fSk7XG5cblx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZSh0YXJnZXREYXRlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb2N1cyB0aGUgbmV4dCBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzTmV4dChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0Y29uc3QgdGFyZ2V0RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7XG5cdFx0XHRkYXlzOiB0aGlzLmdldERpcmVjdGlvbigpID09PSAncnRsJyA/IC0xIDogMSxcblx0XHR9KTtcblxuXHRcdHRoaXMuX2NhbGVuZGFyLnNldEZvY3VzZWREYXRlKHRhcmdldERhdGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvY3VzIHRoZSBhYm92ZSBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzQWJvdmUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZSh0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7IGRheXM6IDcgfSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvY3VzIHRoZSBiZWxvdyBjZWxsLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzQmVsb3coZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZSh0aGlzLl9kYXRlQWRhcHRlci5hZGQodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwgeyBkYXlzOiA3IH0pKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb2N1cyB0aGUgZmlyc3QgZGF0ZSBvZiB0aGUgbW9udGguXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNGaXJzdChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuX2NhbGVuZGFyLnNldEZvY3VzZWREYXRlKHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZNb250aCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpKSk7XG5cdH1cblxuXHQvKipcblx0ICogRm9jdXMgdGhlIGxhc3QgZGF0ZSBvZiB0aGUgbW9udGguXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNMYXN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5fY2FsZW5kYXIuc2V0Rm9jdXNlZERhdGUodGhpcy5fZGF0ZUFkYXB0ZXIuZW5kT2ZNb250aCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpKSk7XG5cdH1cblxuXHQvKipcblx0ICogRm9jdXMgdGhlIHNhbWUgZGF0ZSBpbiB0aGUgcHJldmlvdXMgbW9udGguXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNQcmV2aW91c01vbnRoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRjb25zdCBkYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpKTtcblxuXHRcdGxldCBwcmV2aW91c01vbnRoVGFyZ2V0ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpO1xuXHRcdHByZXZpb3VzTW9udGhUYXJnZXQgPSB0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdChwcmV2aW91c01vbnRoVGFyZ2V0LCB7IG1vbnRoczogMSB9KTtcblxuXHRcdGNvbnN0IGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZk1vbnRoKHByZXZpb3VzTW9udGhUYXJnZXQpO1xuXG5cdFx0Ly8gaWYgd2UgYXJlIG9uIGEgZGF0ZSB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBtb250aCwgd2Ugc2hvdWxkIGZvY3VzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0aWYgKGRhdGUgPiB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGxhc3REYXkpKSB7XG5cdFx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZShsYXN0RGF5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY2FsZW5kYXIuc2V0Rm9jdXNlZERhdGUodGhpcy5fZGF0ZUFkYXB0ZXIuc2V0KHByZXZpb3VzTW9udGhUYXJnZXQsIHsgZGF5OiBkYXRlIH0pKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRm9jdXMgdGhlIHNhbWUgZGF0ZSBpbiB0aGUgbmV4dCBtb250aC5cblx0ICovXG5cdHByb3RlY3RlZCBmb2N1c05leHRNb250aChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0Y29uc3QgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldERhdGUodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSk7XG5cblx0XHRsZXQgbmV4dE1vbnRoVGFyZ2V0ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpO1xuXHRcdG5leHRNb250aFRhcmdldCA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChuZXh0TW9udGhUYXJnZXQsIHsgbW9udGhzOiAxIH0pO1xuXG5cdFx0Y29uc3QgbGFzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mTW9udGgobmV4dE1vbnRoVGFyZ2V0KTtcblxuXHRcdC8vIGlmIHdlIGFyZSBvbiBhIGRhdGUgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbmV4dCBtb250aCwgd2Ugc2hvdWxkIGZvY3VzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0aWYgKGRhdGUgPiB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGxhc3REYXkpKSB7XG5cdFx0XHR0aGlzLl9jYWxlbmRhci5zZXRGb2N1c2VkRGF0ZShsYXN0RGF5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY2FsZW5kYXIuc2V0Rm9jdXNlZERhdGUodGhpcy5fZGF0ZUFkYXB0ZXIuc2V0KG5leHRNb250aFRhcmdldCwgeyBkYXk6IGRhdGUgfSkpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudC5cblx0ICovXG5cdHByaXZhdGUgZ2V0RGlyZWN0aW9uKCk6ICdsdHInIHwgJ3J0bCcge1xuXHRcdHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJyA/ICdydGwnIDogJ2x0cic7XG5cdH1cblxuXHRmb2N1cygpOiB2b2lkIHtcblx0XHR0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0fVxufVxuIl19","import { Directive, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nlet uniqueId = 0;\nexport class BrnCalendarHeader {\n /** The unique id for the header */\n id = input(`brn-calendar-header-${++uniqueId}`);\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnCalendarHeader, isStandalone: true, selector: \"[brnCalendarHeader]\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"aria-live\": \"polite\", \"role\": \"presentation\" }, properties: { \"id\": \"id()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarHeader, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarHeader]',\n host: {\n '[id]': 'id()',\n 'aria-live': 'polite',\n role: 'presentation',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9icm4tY2FsZW5kYXItaGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVqRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFVakIsTUFBTSxPQUFPLGlCQUFpQjtJQUM3QixtQ0FBbUM7SUFDbkIsRUFBRSxHQUFHLEtBQUssQ0FBUyx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDOzBIQUY1RCxpQkFBaUI7OEdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFSN0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixJQUFJLEVBQUU7d0JBQ0wsTUFBTSxFQUFFLE1BQU07d0JBQ2QsV0FBVyxFQUFFLFFBQVE7d0JBQ3JCLElBQUksRUFBRSxjQUFjO3FCQUNwQjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFySGVhZGVyXScsXG5cdGhvc3Q6IHtcblx0XHQnW2lkXSc6ICdpZCgpJyxcblx0XHQnYXJpYS1saXZlJzogJ3BvbGl0ZScsXG5cdFx0cm9sZTogJ3ByZXNlbnRhdGlvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFySGVhZGVyIHtcblx0LyoqIFRoZSB1bmlxdWUgaWQgZm9yIHRoZSBoZWFkZXIgKi9cblx0cHVibGljIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nPihgYnJuLWNhbGVuZGFyLWhlYWRlci0keysrdW5pcXVlSWR9YCk7XG59XG4iXX0=","import { inject, Injectable, InjectionToken, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const BrnCalendarI18nToken = new InjectionToken('BrnCalendarI18nToken');\n/**\n * Provide the calendar i18n configuration.\n */\nexport function provideBrnCalendarI18n(configuration) {\n return {\n provide: BrnCalendarI18nToken,\n useFactory: () => {\n const service = new BrnCalendarI18nService();\n service.use(configuration ?? defaultCalendarI18n);\n return service;\n },\n };\n}\nconst defaultCalendarI18n = {\n formatWeekdayName: (index) => {\n const weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n return weekdays[index];\n },\n months: () => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n years: (startYear = 1925, endYear = new Date().getFullYear() + 1) => Array.from({ length: endYear - startYear + 1 }, (_, i) => startYear + i),\n formatHeader: (month, year) => {\n return new Date(year, month).toLocaleDateString(undefined, {\n month: 'long',\n year: 'numeric',\n });\n },\n formatMonth: (month) => {\n return new Date(2000, month).toLocaleDateString(undefined, {\n month: 'short',\n });\n },\n formatYear: (year) => {\n return new Date(year, 0).toLocaleDateString(undefined, {\n year: 'numeric',\n });\n },\n labelPrevious: () => 'Go to the previous month',\n labelNext: () => 'Go to the next month',\n labelWeekday: (index) => {\n const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return weekdays[index];\n },\n firstDayOfWeek: () => 0,\n};\n/**\n * Inject the calendar i18n configuration.\n */\nexport function injectBrnCalendarI18n() {\n return inject(BrnCalendarI18nToken, { optional: true }) ?? inject(BrnCalendarI18nService); // fallback\n}\nexport class BrnCalendarI18nService {\n _config = signal(defaultCalendarI18n);\n config = this._config.asReadonly();\n use(config) {\n this._config.set({ ...this.config(), ...config });\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarI18nService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarI18nService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9pMThuL2NhbGVuZGFyLWkxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZ0MxRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsc0JBQXNCLENBQUMsQ0FBQztBQUV2Rzs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxhQUErQjtJQUNyRSxPQUFPO1FBQ04sT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sT0FBTyxDQUFDO1FBQ2hCLENBQUM7S0FDRCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sbUJBQW1CLEdBQW9CO0lBQzVDLGlCQUFpQixFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDbEcsS0FBSyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUNuRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLFlBQVksRUFBRSxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUM3QyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDMUQsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsU0FBUztTQUNmLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUM5QixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDMUQsS0FBSyxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsVUFBVSxFQUFFLENBQUMsSUFBWSxFQUFVLEVBQUU7UUFDcEMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFO1lBQ3RELElBQUksRUFBRSxTQUFTO1NBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQywwQkFBMEI7SUFDL0MsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLHNCQUFzQjtJQUN2QyxZQUFZLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztDQUN2QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxXQUFXO0FBQ3ZHLENBQUM7QUFHRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pCLE9BQU8sR0FBRyxNQUFNLENBQWtCLG1CQUFtQixDQUFDLENBQUM7SUFFeEQsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFNUMsR0FBRyxDQUFDLE1BQWdDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7MEhBUFcsc0JBQXNCOzhIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIHR5cGUgUHJvdmlkZXIsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBXZWVrZGF5ID0gMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcblxuZXhwb3J0IHR5cGUgTW9udGhMYWJlbHMgPSBbXG5cdHN0cmluZyxcblx0c3RyaW5nLFxuXHRzdHJpbmcsXG5cdHN0cmluZyxcblx0c3RyaW5nLFxuXHRzdHJpbmcsXG5cdHN0cmluZyxcblx0c3RyaW5nLFxuXHRzdHJpbmcsXG5cdHN0cmluZyxcblx0c3RyaW5nLFxuXHRzdHJpbmcsXG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJybkNhbGVuZGFySTE4biB7XG5cdGZvcm1hdFdlZWtkYXlOYW1lOiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nO1xuXHRmb3JtYXRIZWFkZXI6IChtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIpID0+IHN0cmluZztcblx0Zm9ybWF0WWVhcjogKHllYXI6IG51bWJlcikgPT4gc3RyaW5nO1xuXHRmb3JtYXRNb250aDogKG1vbnRoOiBudW1iZXIpID0+IHN0cmluZztcblx0bGFiZWxQcmV2aW91czogKCkgPT4gc3RyaW5nO1xuXHRsYWJlbE5leHQ6ICgpID0+IHN0cmluZztcblx0bGFiZWxXZWVrZGF5OiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nO1xuXHRtb250aHM6ICgpID0+IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nXTtcblx0eWVhcnM6IChzdGFydFllYXI/OiBudW1iZXIsIGVuZFllYXI/OiBudW1iZXIpID0+IG51bWJlcltdO1xuXHRmaXJzdERheU9mV2VlazogKCkgPT4gV2Vla2RheTtcbn1cblxuZXhwb3J0IGNvbnN0IEJybkNhbGVuZGFySTE4blRva2VuID0gbmV3IEluamVjdGlvblRva2VuPEJybkNhbGVuZGFySTE4blNlcnZpY2U+KCdCcm5DYWxlbmRhckkxOG5Ub2tlbicpO1xuXG4vKipcbiAqIFByb3ZpZGUgdGhlIGNhbGVuZGFyIGkxOG4gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCcm5DYWxlbmRhckkxOG4oY29uZmlndXJhdGlvbj86IEJybkNhbGVuZGFySTE4bik6IFByb3ZpZGVyIHtcblx0cmV0dXJuIHtcblx0XHRwcm92aWRlOiBCcm5DYWxlbmRhckkxOG5Ub2tlbixcblx0XHR1c2VGYWN0b3J5OiAoKSA9PiB7XG5cdFx0XHRjb25zdCBzZXJ2aWNlID0gbmV3IEJybkNhbGVuZGFySTE4blNlcnZpY2UoKTtcblx0XHRcdHNlcnZpY2UudXNlKGNvbmZpZ3VyYXRpb24gPz8gZGVmYXVsdENhbGVuZGFySTE4bik7XG5cdFx0XHRyZXR1cm4gc2VydmljZTtcblx0XHR9LFxuXHR9O1xufVxuXG5jb25zdCBkZWZhdWx0Q2FsZW5kYXJJMThuOiBCcm5DYWxlbmRhckkxOG4gPSB7XG5cdGZvcm1hdFdlZWtkYXlOYW1lOiAoaW5kZXg6IG51bWJlcikgPT4ge1xuXHRcdGNvbnN0IHdlZWtkYXlzID0gWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddO1xuXHRcdHJldHVybiB3ZWVrZGF5c1tpbmRleF07XG5cdH0sXG5cdG1vbnRoczogKCkgPT4gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuXHR5ZWFyczogKHN0YXJ0WWVhciA9IDE5MjUsIGVuZFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxKSA9PlxuXHRcdEFycmF5LmZyb20oeyBsZW5ndGg6IGVuZFllYXIgLSBzdGFydFllYXIgKyAxIH0sIChfLCBpKSA9PiBzdGFydFllYXIgKyBpKSxcblx0Zm9ybWF0SGVhZGVyOiAobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoKS50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLCB7XG5cdFx0XHRtb250aDogJ2xvbmcnLFxuXHRcdFx0eWVhcjogJ251bWVyaWMnLFxuXHRcdH0pO1xuXHR9LFxuXHRmb3JtYXRNb250aDogKG1vbnRoOiBudW1iZXIpID0+IHtcblx0XHRyZXR1cm4gbmV3IERhdGUoMjAwMCwgbW9udGgpLnRvTG9jYWxlRGF0ZVN0cmluZyh1bmRlZmluZWQsIHtcblx0XHRcdG1vbnRoOiAnc2hvcnQnLFxuXHRcdH0pO1xuXHR9LFxuXHRmb3JtYXRZZWFyOiAoeWVhcjogbnVtYmVyKTogc3RyaW5nID0+IHtcblx0XHRyZXR1cm4gbmV3IERhdGUoeWVhciwgMCkudG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuXHRcdFx0eWVhcjogJ251bWVyaWMnLFxuXHRcdH0pO1xuXHR9LFxuXHRsYWJlbFByZXZpb3VzOiAoKSA9PiAnR28gdG8gdGhlIHByZXZpb3VzIG1vbnRoJyxcblx0bGFiZWxOZXh0OiAoKSA9PiAnR28gdG8gdGhlIG5leHQgbW9udGgnLFxuXHRsYWJlbFdlZWtkYXk6IChpbmRleDogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3Qgd2Vla2RheXMgPSBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J107XG5cdFx0cmV0dXJuIHdlZWtkYXlzW2luZGV4XTtcblx0fSxcblx0Zmlyc3REYXlPZldlZWs6ICgpID0+IDAsXG59O1xuXG4vKipcbiAqIEluamVjdCB0aGUgY2FsZW5kYXIgaTE4biBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk6IEJybkNhbGVuZGFySTE4blNlcnZpY2Uge1xuXHRyZXR1cm4gaW5qZWN0KEJybkNhbGVuZGFySTE4blRva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IGluamVjdChCcm5DYWxlbmRhckkxOG5TZXJ2aWNlKTsgLy8gZmFsbGJhY2tcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBCcm5DYWxlbmRhckkxOG5TZXJ2aWNlIHtcblx0cHJpdmF0ZSByZWFkb25seSBfY29uZmlnID0gc2lnbmFsPEJybkNhbGVuZGFySTE4bj4oZGVmYXVsdENhbGVuZGFySTE4bik7XG5cblx0cHVibGljIHJlYWRvbmx5IGNvbmZpZyA9IHRoaXMuX2NvbmZpZy5hc1JlYWRvbmx5KCk7XG5cblx0cHVibGljIHVzZShjb25maWc6IFBhcnRpYWw8QnJuQ2FsZW5kYXJJMThuPikge1xuXHRcdHRoaXMuX2NvbmZpZy5zZXQoeyAuLi50aGlzLmNvbmZpZygpLCAuLi5jb25maWcgfSk7XG5cdH1cbn1cbiJdfQ==","import { afterNextRender, booleanAttribute, ChangeDetectorRef, computed, contentChild, contentChildren, Directive, inject, Injector, input, linkedSignal, model, numberAttribute, } 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 { provideBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendar {\n _i18n = injectBrnCalendarI18n();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the injector */\n _injector = inject(Injector);\n /** The minimum date that can be selected.*/\n min = input();\n /** The maximum date that can be selected. */\n max = input();\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n /** The selected value. */\n date = model();\n /** Whether a specific date is disabled. */\n dateDisabled = input(() => false);\n /** The day the week starts on */\n weekStartsOn = input(undefined, {\n transform: (v) => (v === undefined || v === null ? undefined : numberAttribute(v)),\n });\n _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n /** The default focused date. */\n defaultFocusedDate = input();\n /** @internal Access the header */\n header = contentChild(BrnCalendarHeader);\n /** Store the cells */\n _cells = contentChildren(BrnCalendarCellButton, {\n descendants: true,\n });\n /**\n * The focused date.\n */\n focusedDate = linkedSignal(() => this.constrainDate(this.defaultFocusedDate() ?? this.date() ?? this._dateAdapter.now()));\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n days = computed(() => {\n const weekStartsOn = this._weekStartsOn();\n const month = this.focusedDate();\n const days = [];\n // Get the first and last day of the month.\n let firstDay = this._dateAdapter.startOfMonth(month);\n let lastDay = this._dateAdapter.endOfMonth(month);\n // we need to subtract until we get the to starting day before or on the start of the month.\n while (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n firstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n }\n const weekEndsOn = (weekStartsOn + 6) % 7;\n // we need to add until we get to the ending day after or on the end of the month.\n while (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n lastDay = this._dateAdapter.add(lastDay, { days: 1 });\n }\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this._dateAdapter.add(firstDay, { days: 1 });\n }\n return days;\n });\n /** @internal Constrain a date to the min and max boundaries */\n constrainDate(date) {\n const min = this.min();\n const max = this.max();\n // If there is no min or max, return the date.\n if (!min && !max) {\n return date;\n }\n // If there is a min and the date is before the min, return the min.\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return min;\n }\n // If there is a max and the date is after the max, return the max.\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return max;\n }\n // Return the date.\n return date;\n }\n /** @internal Determine if a date is disabled */\n isDateDisabled(date) {\n // if the calendar is disabled we can't select this date\n if (this.disabled()) {\n return true;\n }\n // if the date is outside the min and max range\n const min = this.min();\n const max = this.max();\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return true;\n }\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return true;\n }\n // if this specific date is disabled\n const disabledFn = this.dateDisabled();\n if (disabledFn(date)) {\n return true;\n }\n return false;\n }\n isSelected(date) {\n const selected = this.date();\n return selected !== undefined && this._dateAdapter.isSameDay(date, selected);\n }\n selectDate(date) {\n if (this.isSelected(date)) {\n this.date.set(undefined);\n }\n else {\n this.date.set(date);\n }\n this.focusedDate.set(date);\n }\n /** @internal Set the focused date */\n setFocusedDate(date) {\n // check if the date is disabled.\n if (this.isDateDisabled(date)) {\n return;\n }\n this.focusedDate.set(date);\n // wait until the cells have all updated\n afterNextRender({\n write: () => {\n // focus the cell with the target date.\n const cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n if (cell) {\n cell.focus();\n }\n },\n }, {\n injector: this._injector,\n });\n // we must update the view to ensure the focused cell is visible.\n this._changeDetector.detectChanges();\n }\n /**\n * Determine if a date is the start of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is the end of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is between the start and end dates. In a date picker, this is always false.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(_) {\n return false;\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnCalendar, isStandalone: true, selector: \"[brnCalendar]\", inputs: { 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 }, date: { classPropertyName: \"date\", publicName: \"date\", 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 } }, outputs: { date: \"dateChange\" }, providers: [provideBrnCalendar(BrnCalendar)], queries: [{ propertyName: \"header\", first: true, predicate: BrnCalendarHeader, descendants: true, isSignal: true }, { propertyName: \"_cells\", predicate: BrnCalendarCellButton, descendants: true, isSignal: true }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendar, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendar]',\n providers: [provideBrnCalendar(BrnCalendar)],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFlBQVksRUFDWixLQUFLLEVBQ0wsZUFBZSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7O0FBTTNFLE1BQU0sT0FBTyxXQUFXO0lBQ04sS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ1gsWUFBWSxHQUFHLGlCQUFpQixFQUFLLENBQUM7SUFFekQsaUNBQWlDO0lBQ2hCLGVBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU3RCwwQkFBMEI7SUFDVCxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLDRDQUE0QztJQUM1QixHQUFHLEdBQUcsS0FBSyxFQUFLLENBQUM7SUFFakMsNkNBQTZDO0lBQzdCLEdBQUcsR0FBRyxLQUFLLEVBQUssQ0FBQztJQUVqQyxnREFBZ0Q7SUFDaEMsUUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1FBQzlELFNB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bGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRjb21wdXRlZCxcblx0Y29udGVudENoaWxkLFxuXHRjb250ZW50Q2hpbGRyZW4sXG5cdERpcmVjdGl2ZSxcblx0aW5qZWN0LFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdGxpbmtlZFNpZ25hbCxcblx0bW9kZWwsXG5cdG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3REYXRlQWRhcHRlciB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckNlbGxCdXR0b24gfSBmcm9tICcuL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckhlYWRlciB9IGZyb20gJy4vYnJuLWNhbGVuZGFyLWhlYWRlcic7XG5pbXBvcnQgeyB0eXBlIEJybkNhbGVuZGFyQmFzZSwgcHJvdmlkZUJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXJJMThuLCB0eXBlIFdlZWtkYXkgfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5DYWxlbmRhcl0nLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlQnJuQ2FsZW5kYXIoQnJuQ2FsZW5kYXIpXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXI8VD4gaW1wbGVtZW50cyBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9pMThuID0gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgaW5qZWN0b3IgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdC8qKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiovXG5cdHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogRGV0ZXJtaW5lIGlmIHRoZSBkYXRlIHBpY2tlciBpcyBkaXNhYmxlZC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuXHRcdHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcblx0fSk7XG5cblx0LyoqIFRoZSBzZWxlY3RlZCB2YWx1ZS4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRhdGUgPSBtb2RlbDxUPigpO1xuXG5cdC8qKiBXaGV0aGVyIGEgc3BlY2lmaWMgZGF0ZSBpcyBkaXNhYmxlZC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRhdGVEaXNhYmxlZCA9IGlucHV0PChkYXRlOiBUKSA9PiBib29sZWFuPigoKSA9PiBmYWxzZSk7XG5cblx0LyoqIFRoZSBkYXkgdGhlIHdlZWsgc3RhcnRzIG9uICovXG5cdHB1YmxpYyByZWFkb25seSB3ZWVrU3RhcnRzT24gPSBpbnB1dDxXZWVrZGF5LCBOdW1iZXJJbnB1dCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG5cdFx0dHJhbnNmb3JtOiAodjogdW5rbm93bikgPT4gKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsID8gdW5kZWZpbmVkIDogKG51bWJlckF0dHJpYnV0ZSh2KSBhcyBXZWVrZGF5KSksXG5cdH0pO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBfd2Vla1N0YXJ0c09uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy53ZWVrU3RhcnRzT24oKSA/PyB0aGlzLl9pMThuLmNvbmZpZygpLmZpcnN0RGF5T2ZXZWVrKCkpO1xuXG5cdC8qKiBUaGUgZGVmYXVsdCBmb2N1c2VkIGRhdGUuICovXG5cdHB1YmxpYyByZWFkb25seSBkZWZhdWx0Rm9jdXNlZERhdGUgPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBAaW50ZXJuYWwgQWNjZXNzIHRoZSBoZWFkZXIgKi9cblx0cHVibGljIHJlYWRvbmx5IGhlYWRlciA9IGNvbnRlbnRDaGlsZChCcm5DYWxlbmRhckhlYWRlcik7XG5cblx0LyoqIFN0b3JlIHRoZSBjZWxscyAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2NlbGxzID0gY29udGVudENoaWxkcmVuPEJybkNhbGVuZGFyQ2VsbEJ1dHRvbjxUPj4oQnJuQ2FsZW5kYXJDZWxsQnV0dG9uLCB7XG5cdFx0ZGVzY2VuZGFudHM6IHRydWUsXG5cdH0pO1xuXG5cdC8qKlxuXHQgKiBUaGUgZm9jdXNlZCBkYXRlLlxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGZvY3VzZWREYXRlID0gbGlua2VkU2lnbmFsKCgpID0+XG5cdFx0dGhpcy5jb25zdHJhaW5EYXRlKHRoaXMuZGVmYXVsdEZvY3VzZWREYXRlKCkgPz8gdGhpcy5kYXRlKCkgPz8gdGhpcy5fZGF0ZUFkYXB0ZXIubm93KCkpLFxuXHQpO1xuXG5cdC8qKlxuXHQgKiBHZXQgYWxsIHRoZSBkYXlzIHRvIGRpc3BsYXksIHRoaXMgaXMgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGhcblx0ICogYW5kIHRoZSBkYXlzIG9mIHRoZSBwcmV2aW91cyBhbmQgbmV4dCBtb250aCB0byBmaWxsIHRoZSBncmlkLlxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGRheXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgd2Vla1N0YXJ0c09uID0gdGhpcy5fd2Vla1N0YXJ0c09uKCk7XG5cdFx0Y29uc3QgbW9udGggPSB0aGlzLmZvY3VzZWREYXRlKCk7XG5cdFx0Y29uc3QgZGF5czogVFtdID0gW107XG5cblx0XHQvLyBHZXQgdGhlIGZpcnN0IGFuZCBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0bGV0IGZpcnN0RGF5ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKG1vbnRoKTtcblx0XHRsZXQgbGFzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mTW9udGgobW9udGgpO1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBzdWJ0cmFjdCB1bnRpbCB3ZSBnZXQgdGhlIHRvIHN0YXJ0aW5nIGRheSBiZWZvcmUgb3Igb24gdGhlIHN0YXJ0IG9mIHRoZSBtb250aC5cblx0XHR3aGlsZSAodGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0RGF5KGZpcnN0RGF5KSAhPT0gd2Vla1N0YXJ0c09uKSB7XG5cdFx0XHRmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLnN1YnRyYWN0KGZpcnN0RGF5LCB7IGRheXM6IDEgfSk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgd2Vla0VuZHNPbiA9ICh3ZWVrU3RhcnRzT24gKyA2KSAlIDc7XG5cblx0XHQvLyB3ZSBuZWVkIHRvIGFkZCB1bnRpbCB3ZSBnZXQgdG8gdGhlIGVuZGluZyBkYXkgYWZ0ZXIgb3Igb24gdGhlIGVuZCBvZiB0aGUgbW9udGguXG5cdFx0d2hpbGUgKHRoaXMuX2RhdGVBZGFwdGVyLmdldERheShsYXN0RGF5KSAhPT0gd2Vla0VuZHNPbikge1xuXHRcdFx0bGFzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChsYXN0RGF5LCB7IGRheXM6IDEgfSk7XG5cdFx0fVxuXG5cdFx0Ly8gY29sbGVjdCBhbGwgdGhlIGRheXMgdG8gZGlzcGxheS5cblx0XHR3aGlsZSAoZmlyc3REYXkgPD0gbGFzdERheSkge1xuXHRcdFx0ZGF5cy5wdXNoKGZpcnN0RGF5KTtcblx0XHRcdGZpcnN0RGF5ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkKGZpcnN0RGF5LCB7IGRheXM6IDEgfSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRheXM7XG5cdH0pO1xuXG5cdC8qKiBAaW50ZXJuYWwgQ29uc3RyYWluIGEgZGF0ZSB0byB0aGUgbWluIGFuZCBtYXggYm91bmRhcmllcyAqL1xuXHRjb25zdHJhaW5EYXRlKGRhdGU6IFQpOiBUIHtcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBubyBtaW4gb3IgbWF4LCByZXR1cm4gdGhlIGRhdGUuXG5cdFx0aWYgKCFtaW4gJiYgIW1heCkge1xuXHRcdFx0cmV0dXJuIGRhdGU7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtaW4gYW5kIHRoZSBkYXRlIGlzIGJlZm9yZSB0aGUgbWluLCByZXR1cm4gdGhlIG1pbi5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiBtaW47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtYXggYW5kIHRoZSBkYXRlIGlzIGFmdGVyIHRoZSBtYXgsIHJldHVybiB0aGUgbWF4LlxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIG1heDtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGRhdGUuXG5cdFx0cmV0dXJuIGRhdGU7XG5cdH1cblxuXHQvKiogQGludGVybmFsIERldGVybWluZSBpZiBhIGRhdGUgaXMgZGlzYWJsZWQgKi9cblx0aXNEYXRlRGlzYWJsZWQoZGF0ZTogVCk6IGJvb2xlYW4ge1xuXHRcdC8vIGlmIHRoZSBjYWxlbmRhciBpcyBkaXNhYmxlZCB3ZSBjYW4ndCBzZWxlY3QgdGhpcyBkYXRlXG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhlIGRhdGUgaXMgb3V0c2lkZSB0aGUgbWluIGFuZCBtYXggcmFuZ2Vcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhpcyBzcGVjaWZpYyBkYXRlIGlzIGRpc2FibGVkXG5cdFx0Y29uc3QgZGlzYWJsZWRGbiA9IHRoaXMuZGF0ZURpc2FibGVkKCk7XG5cblx0XHRpZiAoZGlzYWJsZWRGbihkYXRlKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aXNTZWxlY3RlZChkYXRlOiBUKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmRhdGUoKSBhcyBUIHwgdW5kZWZpbmVkO1xuXHRcdHJldHVybiBzZWxlY3RlZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBzZWxlY3RlZCk7XG5cdH1cblxuXHRzZWxlY3REYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc1NlbGVjdGVkKGRhdGUpKSB7XG5cdFx0XHR0aGlzLmRhdGUuc2V0KHVuZGVmaW5lZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZGF0ZS5zZXQoZGF0ZSk7XG5cdFx0fVxuXHRcdHRoaXMuZm9jdXNlZERhdGUuc2V0KGRhdGUpO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCBTZXQgdGhlIGZvY3VzZWQgZGF0ZSAqL1xuXHRzZXRGb2N1c2VkRGF0ZShkYXRlOiBUKTogdm9pZCB7XG5cdFx0Ly8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgZGlzYWJsZWQuXG5cdFx0aWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmZvY3VzZWREYXRlLnNldChkYXRlKTtcblxuXHRcdC8vIHdhaXQgdW50aWwgdGhlIGNlbGxzIGhhdmUgYWxsIHVwZGF0ZWRcblx0XHRhZnRlck5leHRSZW5kZXIoXG5cdFx0XHR7XG5cdFx0XHRcdHdyaXRlOiAoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gZm9jdXMgdGhlIGNlbGwgd2l0aCB0aGUgdGFyZ2V0IGRhdGUuXG5cdFx0XHRcdFx0Y29uc3QgY2VsbCA9IHRoaXMuX2NlbGxzKCkuZmluZCgoYykgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lRGF5KGMuZGF0ZSgpLCBkYXRlKSk7XG5cblx0XHRcdFx0XHRpZiAoY2VsbCkge1xuXHRcdFx0XHRcdFx0Y2VsbC5mb2N1cygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGluamVjdG9yOiB0aGlzLl9pbmplY3Rvcixcblx0XHRcdH0sXG5cdFx0KTtcblxuXHRcdC8vIHdlIG11c3QgdXBkYXRlIHRoZSB2aWV3IHRvIGVuc3VyZSB0aGUgZm9jdXNlZCBjZWxsIGlzIHZpc2libGUuXG5cdFx0dGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgdGhlIHN0YXJ0IG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzU3RhcnRPZlJhbmdlKF86IFQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyB0aGUgZW5kIG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzRW5kT2ZSYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy4gSW4gYSBkYXRlIHBpY2tlciwgdGhpcyBpcyBhbHdheXMgZmFsc2UuXG5cdCAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkYXRlIGlzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMsIGZhbHNlIG90aGVyd2lzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc0JldHdlZW5SYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG4iXX0=","import { Directive } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarCell {\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCell, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarCell, isStandalone: true, selector: \"[brnCalendarCell]\", host: { attributes: { \"role\": \"presentation\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarCell, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarCell]',\n host: {\n role: 'presentation',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWNlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLWNlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRMUMsTUFBTSxPQUFPLGVBQWU7MEhBQWYsZUFBZTs4R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQU4zQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLElBQUksRUFBRTt3QkFDTCxJQUFJLEVBQUUsY0FBYztxQkFDcEI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFyQ2VsbF0nLFxuXHRob3N0OiB7XG5cdFx0cm9sZTogJ3ByZXNlbnRhdGlvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyQ2VsbCB7fVxuIl19","import { Directive } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarGrid {\n /** Access the calendar component */\n _calendar = injectBrnCalendar();\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarGrid, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarGrid, isStandalone: true, selector: \"[brnCalendarGrid]\", host: { attributes: { \"role\": \"grid\" }, properties: { \"attr.aria-labelledby\": \"_calendar.header()?.id()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarGrid, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarGrid]',\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': '_calendar.header()?.id()',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLWdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFTekQsTUFBTSxPQUFPLGVBQWU7SUFDM0Isb0NBQW9DO0lBQ2pCLFNBQVMsR0FBRyxpQkFBaUIsRUFBSyxDQUFDOzBIQUYxQyxlQUFlOzhHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBUDNCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNMLElBQUksRUFBRSxNQUFNO3dCQUNaLHdCQUF3QixFQUFFLDBCQUEwQjtxQkFDcEQ7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuQ2FsZW5kYXJHcmlkXScsXG5cdGhvc3Q6IHtcblx0XHRyb2xlOiAnZ3JpZCcsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnX2NhbGVuZGFyLmhlYWRlcigpPy5pZCgpJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJHcmlkPFQ+IHtcblx0LyoqIEFjY2VzcyB0aGUgY2FsZW5kYXIgY29tcG9uZW50ICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfY2FsZW5kYXIgPSBpbmplY3RCcm5DYWxlbmRhcjxUPigpO1xufVxuIl19","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarMonthSelect {\n /** Access the select */\n _select = inject(BrnSelect);\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n _selectedMonth = computed(() => {\n return this._i18n.config().months()[this._dateAdapter.getMonth(this._calendar.focusedDate())];\n });\n constructor() {\n effect(() => {\n this._select.writeValue(this._selectedMonth());\n });\n }\n /** Focus selected month */\n monthSelected(selectedMonth) {\n const month = this._i18n\n .config()\n .months()\n .findIndex((month) => month === selectedMonth);\n const targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { month });\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMonthSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarMonthSelect, isStandalone: true, selector: \"brn-select[brnCalendarMonthSelect]\", host: { listeners: { \"valueChange\": \"monthSelected($event)\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMonthSelect, decorators: [{\n type: Directive,\n args: [{\n selector: 'brn-select[brnCalendarMonthSelect]',\n host: {\n '(valueChange)': 'monthSelected($event)',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLW1vbnRoLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9icm4tY2FsZW5kYXItbW9udGgtc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVE3RCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2xDLHdCQUF3QjtJQUNQLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0MsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ2IsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEQsK0JBQStCO0lBQ1osS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFaEMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUMsQ0FBQyxDQUFDO0lBRUg7UUFDQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsMkJBQTJCO0lBQ2pCLGFBQWEsQ0FBQyxhQUFxQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSzthQUN0QixNQUFNLEVBQUU7YUFDUixNQUFNLEVBQUU7YUFDUixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQzswSEEvQlcsc0JBQXNCOzhHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBTmxDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsSUFBSSxFQUFFO3dCQUNMLGVBQWUsRUFBRSx1QkFBdUI7cUJBQ3hDO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IEJyblNlbGVjdCB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL3NlbGVjdCc7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhciB9IGZyb20gJy4vYnJuLWNhbGVuZGFyLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFySTE4biB9IGZyb20gJy4vaTE4bi9jYWxlbmRhci1pMThuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnYnJuLXNlbGVjdFticm5DYWxlbmRhck1vbnRoU2VsZWN0XScsXG5cdGhvc3Q6IHtcblx0XHQnKHZhbHVlQ2hhbmdlKSc6ICdtb250aFNlbGVjdGVkKCRldmVudCknLFxuXHR9LFxufSlcbmV4cG9ydCBjbGFzcyBCcm5DYWxlbmRhck1vbnRoU2VsZWN0IHtcblx0LyoqIEFjY2VzcyB0aGUgc2VsZWN0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdCA9IGluamVjdChCcm5TZWxlY3QpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNhbGVuZGFyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NhbGVuZGFyID0gaW5qZWN0QnJuQ2FsZW5kYXIoKTtcblxuXHQvKiogQWNjZXNzIHRoZSBkYXRlIGFkYXB0ZXIgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNhbGVuZGFyIGkxOG4gKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9pMThuID0gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9zZWxlY3RlZE1vbnRoID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLl9pMThuLmNvbmZpZygpLm1vbnRocygpW3RoaXMuX2RhdGVBZGFwdGVyLmdldE1vbnRoKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpXTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkTW9udGgoKSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKiogRm9jdXMgc2VsZWN0ZWQgbW9udGggKi9cblx0cHJvdGVjdGVkIG1vbnRoU2VsZWN0ZWQoc2VsZWN0ZWRNb250aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbW9udGggPSB0aGlzLl9pMThuXG5cdFx0XHQuY29uZmlnKClcblx0XHRcdC5tb250aHMoKVxuXHRcdFx0LmZpbmRJbmRleCgobW9udGgpID0+IG1vbnRoID09PSBzZWxlY3RlZE1vbnRoKTtcblx0XHRjb25zdCB0YXJnZXREYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc2V0KHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCksIHsgbW9udGggfSk7XG5cdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHRhcmdldERhdGUpO1xuXHR9XG59XG4iXX0=","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarNextButton {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n /** Focus the previous month */\n focusPreviousMonth() {\n const targetDate = this._dateAdapter.add(this._calendar.focusedDate(), { months: 1 });\n // if the date is disabled, but there are available dates in the month, focus the last day of the month.\n const possibleDate = this._calendar.constrainDate(targetDate);\n if (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n // if this date is within the same month, then focus it\n this._calendar.focusedDate.set(possibleDate);\n return;\n }\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarNextButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarNextButton, isStandalone: true, selector: \"[brnCalendarNextButton]\", host: { attributes: { \"type\": \"button\" }, listeners: { \"click\": \"focusPreviousMonth()\" }, properties: { \"attr.aria-label\": \"_i18n.config().labelNext()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarNextButton, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarNextButton]',\n host: {\n type: 'button',\n '[attr.aria-label]': '_i18n.config().labelNext()',\n '(click)': 'focusPreviousMonth()',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLW5leHQtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci1uZXh0LWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVU3RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2pDLDBCQUEwQjtJQUNULFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRWpELDhCQUE4QjtJQUNiLFlBQVksR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRXBELCtCQUErQjtJQUNaLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBRW5ELCtCQUErQjtJQUNyQixrQkFBa0I7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLHdHQUF3RztRQUN4RyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdELHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0MsT0FBTztRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQzswSEF4QlcscUJBQXFCOzhHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBUmpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsSUFBSSxFQUFFO3dCQUNMLElBQUksRUFBRSxRQUFRO3dCQUNkLG1CQUFtQixFQUFFLDRCQUE0Qjt3QkFDakQsU0FBUyxFQUFFLHNCQUFzQjtxQkFDakM7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXJJMThuIH0gZnJvbSAnLi9pMThuL2NhbGVuZGFyLWkxOG4nO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuQ2FsZW5kYXJOZXh0QnV0dG9uXScsXG5cdGhvc3Q6IHtcblx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHQnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2kxOG4uY29uZmlnKCkubGFiZWxOZXh0KCknLFxuXHRcdCcoY2xpY2spJzogJ2ZvY3VzUHJldmlvdXNNb250aCgpJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJOZXh0QnV0dG9uIHtcblx0LyoqIEFjY2VzcyB0aGUgY2FsZW5kYXIgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfY2FsZW5kYXIgPSBpbmplY3RCcm5DYWxlbmRhcigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGRhdGUgYWRhcHRlciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kYXRlQWRhcHRlciA9IGluamVjdERhdGVBZGFwdGVyKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgY2FsZW5kYXIgaTE4biAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2kxOG4gPSBpbmplY3RCcm5DYWxlbmRhckkxOG4oKTtcblxuXHQvKiogRm9jdXMgdGhlIHByZXZpb3VzIG1vbnRoICovXG5cdHByb3RlY3RlZCBmb2N1c1ByZXZpb3VzTW9udGgoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFyZ2V0RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7IG1vbnRoczogMSB9KTtcblxuXHRcdC8vIGlmIHRoZSBkYXRlIGlzIGRpc2FibGVkLCBidXQgdGhlcmUgYXJlIGF2YWlsYWJsZSBkYXRlcyBpbiB0aGUgbW9udGgsIGZvY3VzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG5cdFx0Y29uc3QgcG9zc2libGVEYXRlID0gdGhpcy5fY2FsZW5kYXIuY29uc3RyYWluRGF0ZSh0YXJnZXREYXRlKTtcblxuXHRcdGlmICh0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVNb250aChwb3NzaWJsZURhdGUsIHRhcmdldERhdGUpKSB7XG5cdFx0XHQvLyBpZiB0aGlzIGRhdGUgaXMgd2l0aGluIHRoZSBzYW1lIG1vbnRoLCB0aGVuIGZvY3VzIGl0XG5cdFx0XHR0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZS5zZXQocG9zc2libGVEYXRlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZS5zZXQodGFyZ2V0RGF0ZSk7XG5cdH1cbn1cbiJdfQ==","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarPreviousButton {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n /** Focus the previous month */\n focusPreviousMonth() {\n const targetDate = this._dateAdapter.subtract(this._calendar.focusedDate(), { months: 1 });\n // if the date is disabled, but there are available dates in the month, focus the last day of the month.\n const possibleDate = this._calendar.constrainDate(targetDate);\n if (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n // if this date is within the same month, then focus it\n this._calendar.focusedDate.set(possibleDate);\n return;\n }\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarPreviousButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarPreviousButton, isStandalone: true, selector: \"[brnCalendarPreviousButton]\", host: { attributes: { \"type\": \"button\" }, listeners: { \"click\": \"focusPreviousMonth()\" }, properties: { \"attr.aria-label\": \"_i18n.config().labelPrevious()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarPreviousButton, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarPreviousButton]',\n host: {\n type: 'button',\n '[attr.aria-label]': '_i18n.config().labelPrevious()',\n '(click)': 'focusPreviousMonth()',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL2xpYi9icm4tY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBVTdELE1BQU0sT0FBTyx5QkFBeUI7SUFDckMsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ2IsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEQsK0JBQStCO0lBQ1osS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFbkQsK0JBQStCO0lBQ3JCLGtCQUFrQjtRQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0Ysd0dBQXdHO1FBQ3hHLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0QsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3QyxPQUFPO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDOzBIQXhCVyx5QkFBeUI7OEdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFSckMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxJQUFJLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsbUJBQW1CLEVBQUUsZ0NBQWdDO3dCQUNyRCxTQUFTLEVBQUUsc0JBQXNCO3FCQUNqQztpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXIgfSBmcm9tICcuL2Jybi1jYWxlbmRhci50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhckkxOG4gfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5DYWxlbmRhclByZXZpb3VzQnV0dG9uXScsXG5cdGhvc3Q6IHtcblx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHQnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2kxOG4uY29uZmlnKCkubGFiZWxQcmV2aW91cygpJyxcblx0XHQnKGNsaWNrKSc6ICdmb2N1c1ByZXZpb3VzTW9udGgoKScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyUHJldmlvdXNCdXR0b24ge1xuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2RhdGVBZGFwdGVyID0gaW5qZWN0RGF0ZUFkYXB0ZXIoKTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciBpMThuICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfaTE4biA9IGluamVjdEJybkNhbGVuZGFySTE4bigpO1xuXG5cdC8qKiBGb2N1cyB0aGUgcHJldmlvdXMgbW9udGggKi9cblx0cHJvdGVjdGVkIGZvY3VzUHJldmlvdXNNb250aCgpOiB2b2lkIHtcblx0XHRjb25zdCB0YXJnZXREYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuc3VidHJhY3QodGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUoKSwgeyBtb250aHM6IDEgfSk7XG5cblx0XHQvLyBpZiB0aGUgZGF0ZSBpcyBkaXNhYmxlZCwgYnV0IHRoZXJlIGFyZSBhdmFpbGFibGUgZGF0ZXMgaW4gdGhlIG1vbnRoLCBmb2N1cyB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuXHRcdGNvbnN0IHBvc3NpYmxlRGF0ZSA9IHRoaXMuX2NhbGVuZGFyLmNvbnN0cmFpbkRhdGUodGFyZ2V0RGF0ZSk7XG5cblx0XHRpZiAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lTW9udGgocG9zc2libGVEYXRlLCB0YXJnZXREYXRlKSkge1xuXHRcdFx0Ly8gaWYgdGhpcyBkYXRlIGlzIHdpdGhpbiB0aGUgc2FtZSBtb250aCwgdGhlbiBmb2N1cyBpdFxuXHRcdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHBvc3NpYmxlRGF0ZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHRhcmdldERhdGUpO1xuXHR9XG59XG4iXX0=","import { ChangeDetectorRef, Directive, TemplateRef, ViewContainerRef, computed, effect, inject, untracked, } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarWeek {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the view container ref */\n _viewContainerRef = inject(ViewContainerRef);\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the template ref */\n _templateRef = inject(TemplateRef);\n // get the weeks to display.\n _weeks = computed(() => {\n const days = this._calendar.days();\n const weeks = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n return weeks;\n });\n /** Store the view refs */\n _viewRefs = [];\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard(_, ctx) {\n return true;\n }\n constructor() {\n // this should use `afterRenderEffect` but it's not available in the current version\n effect(() => {\n const weeks = this._weeks();\n untracked(() => this._renderWeeks(weeks));\n });\n }\n _renderWeeks(weeks) {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n this._viewRefs = [];\n // Create a new view for each week\n for (const week of weeks) {\n const viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n $implicit: week,\n });\n this._viewRefs.push(viewRef);\n }\n this._changeDetector.detectChanges();\n }\n ngOnDestroy() {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeek, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarWeek, isStandalone: true, selector: \"[brnCalendarWeek]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeek, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarWeek]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXdlZWsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLXdlZWsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxlQUFlO0lBQzNCLDBCQUEwQjtJQUNULFNBQVMsR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXBELG9DQUFvQztJQUNuQixpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RCxpQ0FBaUM7SUFDaEIsZUFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdELDhCQUE4QjtJQUNiLFlBQVksR0FBRyxNQUFNLENBQWlDLFdBQVcsQ0FBQyxDQUFDO0lBRXBGLDRCQUE0QjtJQUNULE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0lBRUgsMEJBQTBCO0lBQ2xCLFNBQVMsR0FBeUMsRUFBRSxDQUFDO0lBRTdELDhFQUE4RTtJQUM5RSw4Q0FBOEM7SUFDOUMsTUFBTSxDQUFDLHNCQUFzQixDQUFJLENBQXFCLEVBQUUsR0FBWTtRQUNuRSxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDtRQUNDLG9GQUFvRjtRQUNwRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQVk7UUFDaEMsd0RBQXdEO1FBQ3hELEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEIsa0NBQWtDO1FBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzVFLFNBQVMsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVix3REFBd0Q7UUFDeEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDRixDQUFDOzBIQWxFVyxlQUFlOzhHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBSDNCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0RGlyZWN0aXZlLFxuXHR0eXBlIEVtYmVkZGVkVmlld1JlZixcblx0dHlwZSBPbkRlc3Ryb3ksXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhciB9IGZyb20gJy4vYnJuLWNhbGVuZGFyLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFyV2Vla10nLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5DYWxlbmRhcldlZWs8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyPFQ+KCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgdmlldyBjb250YWluZXIgcmVmICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgY2hhbmdlIGRldGVjdG9yICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKiogQWNjZXNzIHRoZSB0ZW1wbGF0ZSByZWYgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8QnJuV2Vla0NvbnRleHQ8VD4+PihUZW1wbGF0ZVJlZik7XG5cblx0Ly8gZ2V0IHRoZSB3ZWVrcyB0byBkaXNwbGF5LlxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3dlZWtzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGRheXMgPSB0aGlzLl9jYWxlbmRhci5kYXlzKCk7XG5cdFx0Y29uc3Qgd2Vla3MgPSBbXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF5cy5sZW5ndGg7IGkgKz0gNykge1xuXHRcdFx0d2Vla3MucHVzaChkYXlzLnNsaWNlKGksIGkgKyA3KSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHdlZWtzO1xuXHR9KTtcblxuXHQvKiogU3RvcmUgdGhlIHZpZXcgcmVmcyAqL1xuXHRwcml2YXRlIF92aWV3UmVmczogRW1iZWRkZWRWaWV3UmVmPEJybldlZWtDb250ZXh0PFQ+PltdID0gW107XG5cblx0Ly8gTWFrZSBzdXJlIHRoZSB0ZW1wbGF0ZSBjaGVja2VyIGtub3dzIHRoZSB0eXBlIG9mIHRoZSBjb250ZXh0IHdpdGggd2hpY2ggdGhlXG5cdC8vIHRlbXBsYXRlIG9mIHRoaXMgZGlyZWN0aXZlIHdpbGwgYmUgcmVuZGVyZWRcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXzogQnJuQ2FsZW5kYXJXZWVrPFQ+LCBjdHg6IHVua25vd24pOiBjdHggaXMgQnJuV2Vla0NvbnRleHQ8VD4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Ly8gdGhpcyBzaG91bGQgdXNlIGBhZnRlclJlbmRlckVmZmVjdGAgYnV0IGl0J3Mgbm90IGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCB2ZXJzaW9uXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHdlZWtzID0gdGhpcy5fd2Vla3MoKTtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB0aGlzLl9yZW5kZXJXZWVrcyh3ZWVrcykpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBfcmVuZGVyV2Vla3Mod2Vla3M6IFRbXVtdKTogdm9pZCB7XG5cdFx0Ly8gRGVzdHJveSBhbGwgdGhlIHZpZXdzIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBkZXN0cm95ZWRcblx0XHRmb3IgKGNvbnN0IHZpZXdSZWYgb2YgdGhpcy5fdmlld1JlZnMpIHtcblx0XHRcdHZpZXdSZWYuZGVzdHJveSgpO1xuXHRcdH1cblxuXHRcdHRoaXMuX3ZpZXdSZWZzID0gW107XG5cblx0XHQvLyBDcmVhdGUgYSBuZXcgdmlldyBmb3IgZWFjaCB3ZWVrXG5cdFx0Zm9yIChjb25zdCB3ZWVrIG9mIHdlZWtzKSB7XG5cdFx0XHRjb25zdCB2aWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYsIHtcblx0XHRcdFx0JGltcGxpY2l0OiB3ZWVrLFxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLl92aWV3UmVmcy5wdXNoKHZpZXdSZWYpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdC8vIERlc3Ryb3kgYWxsIHRoZSB2aWV3cyB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgZGVzdHJveWVkXG5cdFx0Zm9yIChjb25zdCB2aWV3UmVmIG9mIHRoaXMuX3ZpZXdSZWZzKSB7XG5cdFx0XHR2aWV3UmVmLmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cbn1cblxuaW50ZXJmYWNlIEJybldlZWtDb250ZXh0PFQ+IHtcblx0JGltcGxpY2l0OiBUW107XG59XG4iXX0=","import { ChangeDetectorRef, computed, Directive, effect, inject, TemplateRef, untracked, ViewContainerRef, } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarWeekday {\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date time adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the view container ref */\n _viewContainerRef = inject(ViewContainerRef);\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the template ref */\n _templateRef = inject(TemplateRef);\n /** Get the days of the week to display in the header. */\n _weekdays = computed(() => this._calendar.days().slice(0, 7));\n /** Store the view refs */\n _viewRefs = [];\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard(_, ctx) {\n return true;\n }\n constructor() {\n // Create a new view for each day\n effect(() => {\n // Get the weekdays to display\n const weekdays = this._weekdays();\n // Render the weekdays\n untracked(() => this._renderWeekdays(weekdays));\n });\n }\n _renderWeekdays(weekdays) {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n this._viewRefs = [];\n // Create a new view for each day\n for (const day of weekdays) {\n const viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n $implicit: this._dateAdapter.getDay(day),\n });\n this._viewRefs.push(viewRef);\n }\n this._changeDetector.detectChanges();\n }\n ngOnDestroy() {\n // Destroy all the views when the directive is destroyed\n for (const viewRef of this._viewRefs) {\n viewRef.destroy();\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeekday, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarWeekday, isStandalone: true, selector: \"[brnCalendarWeekday]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarWeekday, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarWeekday]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXdlZWtkYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9saWIvYnJuLWNhbGVuZGFyLXdlZWtkYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxrQkFBa0I7SUFDOUIsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFLLENBQUM7SUFFcEQsbUNBQW1DO0lBQ2xCLFlBQVksR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXZELG9DQUFvQztJQUNuQixpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RCxpQ0FBaUM7SUFDaEIsZUFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdELDhCQUE4QjtJQUNiLFlBQVksR0FBRyxNQUFNLENBQWlDLFdBQVcsQ0FBQyxDQUFDO0lBRXBGLHlEQUF5RDtJQUN0QyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpGLDBCQUEwQjtJQUNsQixTQUFTLEdBQXlDLEVBQUUsQ0FBQztJQUU3RCw4RUFBOEU7SUFDOUUsOENBQThDO0lBQzlDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBSSxDQUF3QixFQUFFLEdBQVk7UUFDdEUsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7UUFDQyxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLDhCQUE4QjtZQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsc0JBQXNCO1lBQ3RCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUFDLFFBQWE7UUFDcEMsd0RBQXdEO1FBQ3hELEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEIsaUNBQWlDO1FBQ2pDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzVFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVix3REFBd0Q7UUFDeEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDRixDQUFDOzBIQTlEVyxrQkFBa0I7OEdBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0JBQXNCO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRjb21wdXRlZCxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdHR5cGUgRW1iZWRkZWRWaWV3UmVmLFxuXHRpbmplY3QsXG5cdHR5cGUgT25EZXN0cm95LFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFyIH0gZnJvbSAnLi9icm4tY2FsZW5kYXIudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuQ2FsZW5kYXJXZWVrZGF5XScsXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyV2Vla2RheTxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cdC8qKiBBY2Nlc3MgdGhlIGNhbGVuZGFyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NhbGVuZGFyID0gaW5qZWN0QnJuQ2FsZW5kYXI8VD4oKTtcblxuXHQvKiogQWNjZXNzIHRoZSBkYXRlIHRpbWUgYWRhcHRlciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kYXRlQWRhcHRlciA9IGluamVjdERhdGVBZGFwdGVyPFQ+KCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgdmlldyBjb250YWluZXIgcmVmICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgY2hhbmdlIGRldGVjdG9yICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKiogQWNjZXNzIHRoZSB0ZW1wbGF0ZSByZWYgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8QnJuV2Vla2RheUNvbnRleHQ+PihUZW1wbGF0ZVJlZik7XG5cblx0LyoqIEdldCB0aGUgZGF5cyBvZiB0aGUgd2VlayB0byBkaXNwbGF5IGluIHRoZSBoZWFkZXIuICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfd2Vla2RheXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jYWxlbmRhci5kYXlzKCkuc2xpY2UoMCwgNykpO1xuXG5cdC8qKiBTdG9yZSB0aGUgdmlldyByZWZzICovXG5cdHByaXZhdGUgX3ZpZXdSZWZzOiBFbWJlZGRlZFZpZXdSZWY8QnJuV2Vla2RheUNvbnRleHQ+W10gPSBbXTtcblxuXHQvLyBNYWtlIHN1cmUgdGhlIHRlbXBsYXRlIGNoZWNrZXIga25vd3MgdGhlIHR5cGUgb2YgdGhlIGNvbnRleHQgd2l0aCB3aGljaCB0aGVcblx0Ly8gdGVtcGxhdGUgb2YgdGhpcyBkaXJlY3RpdmUgd2lsbCBiZSByZW5kZXJlZFxuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxUPihfOiBCcm5DYWxlbmRhcldlZWtkYXk8VD4sIGN0eDogdW5rbm93bik6IGN0eCBpcyBCcm5XZWVrZGF5Q29udGV4dCB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHQvLyBDcmVhdGUgYSBuZXcgdmlldyBmb3IgZWFjaCBkYXlcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Ly8gR2V0IHRoZSB3ZWVrZGF5cyB0byBkaXNwbGF5XG5cdFx0XHRjb25zdCB3ZWVrZGF5cyA9IHRoaXMuX3dlZWtkYXlzKCk7XG5cdFx0XHQvLyBSZW5kZXIgdGhlIHdlZWtkYXlzXG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4gdGhpcy5fcmVuZGVyV2Vla2RheXMod2Vla2RheXMpKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgX3JlbmRlcldlZWtkYXlzKHdlZWtkYXlzOiBUW10pOiB2b2lkIHtcblx0XHQvLyBEZXN0cm95IGFsbCB0aGUgdmlld3Mgd2hlbiB0aGUgZGlyZWN0aXZlIGlzIGRlc3Ryb3llZFxuXHRcdGZvciAoY29uc3Qgdmlld1JlZiBvZiB0aGlzLl92aWV3UmVmcykge1xuXHRcdFx0dmlld1JlZi5kZXN0cm95KCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fdmlld1JlZnMgPSBbXTtcblxuXHRcdC8vIENyZWF0ZSBhIG5ldyB2aWV3IGZvciBlYWNoIGRheVxuXHRcdGZvciAoY29uc3QgZGF5IG9mIHdlZWtkYXlzKSB7XG5cdFx0XHRjb25zdCB2aWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYsIHtcblx0XHRcdFx0JGltcGxpY2l0OiB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXkoZGF5KSxcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5fdmlld1JlZnMucHVzaCh2aWV3UmVmKTtcblx0XHR9XG5cblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHQvLyBEZXN0cm95IGFsbCB0aGUgdmlld3Mgd2hlbiB0aGUgZGlyZWN0aXZlIGlzIGRlc3Ryb3llZFxuXHRcdGZvciAoY29uc3Qgdmlld1JlZiBvZiB0aGlzLl92aWV3UmVmcykge1xuXHRcdFx0dmlld1JlZi5kZXN0cm95KCk7XG5cdFx0fVxuXHR9XG59XG5cbmludGVyZmFjZSBCcm5XZWVrZGF5Q29udGV4dCB7XG5cdCRpbXBsaWNpdDogbnVtYmVyO1xufVxuIl19","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';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarYearSelect {\n /** Access the select */\n _select = inject(BrnSelect);\n /** Access the calendar */\n _calendar = injectBrnCalendar();\n /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the calendar i18n */\n _i18n = injectBrnCalendarI18n();\n constructor() {\n effect(() => {\n this._select.writeValue(this._dateAdapter.getYear(this._calendar.focusedDate()));\n });\n }\n /** Focus selected year */\n yearSelected(year) {\n const targetDate = this._dateAdapter.set(this._calendar.focusedDate(), { year });\n this._calendar.focusedDate.set(targetDate);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarYearSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnCalendarYearSelect, isStandalone: true, selector: \"brn-select[brnCalendarYearSelect]\", host: { listeners: { \"valueChange\": \"yearSelected($event)\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarYearSelect, decorators: [{\n type: Directive,\n args: [{\n selector: 'brn-select[brnCalendarYearSelect]',\n host: {\n '(valueChange)': 'yearSelected($event)',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXllYXItc2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL2Jybi1jYWxlbmRhci15ZWFyLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVE3RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2pDLHdCQUF3QjtJQUNQLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0MsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFakQsOEJBQThCO0lBQ2IsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEQsK0JBQStCO0lBQ1osS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFFbkQ7UUFDQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsMEJBQTBCO0lBQ2hCLFlBQVksQ0FBQyxJQUFZO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDOzBIQXZCVyxxQkFBcUI7OEdBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxJQUFJLEVBQUU7d0JBQ0wsZUFBZSxFQUFFLHNCQUFzQjtxQkFDdkM7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3REYXRlQWRhcHRlciB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBCcm5TZWxlY3QgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9zZWxlY3QnO1xuaW1wb3J0IHsgaW5qZWN0QnJuQ2FsZW5kYXIgfSBmcm9tICcuL2Jybi1jYWxlbmRhci50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhckkxOG4gfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2Jybi1zZWxlY3RbYnJuQ2FsZW5kYXJZZWFyU2VsZWN0XScsXG5cdGhvc3Q6IHtcblx0XHQnKHZhbHVlQ2hhbmdlKSc6ICd5ZWFyU2VsZWN0ZWQoJGV2ZW50KScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyWWVhclNlbGVjdCB7XG5cdC8qKiBBY2Nlc3MgdGhlIHNlbGVjdCAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3QgPSBpbmplY3QoQnJuU2VsZWN0KTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jYWxlbmRhciA9IGluamVjdEJybkNhbGVuZGFyKCk7XG5cblx0LyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByaXZhdGUgcmVhZG9ubHkgX2RhdGVBZGFwdGVyID0gaW5qZWN0RGF0ZUFkYXB0ZXIoKTtcblxuXHQvKiogQWNjZXNzIHRoZSBjYWxlbmRhciBpMThuICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfaTE4biA9IGluamVjdEJybkNhbGVuZGFySTE4bigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuX2NhbGVuZGFyLmZvY3VzZWREYXRlKCkpKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKiBGb2N1cyBzZWxlY3RlZCB5ZWFyICovXG5cdHByb3RlY3RlZCB5ZWFyU2VsZWN0ZWQoeWVhcjogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFyZ2V0RGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLnNldCh0aGlzLl9jYWxlbmRhci5mb2N1c2VkRGF0ZSgpLCB7IHllYXIgfSk7XG5cdFx0dGhpcy5fY2FsZW5kYXIuZm9jdXNlZERhdGUuc2V0KHRhcmdldERhdGUpO1xuXHR9XG59XG4iXX0=","import { afterNextRender, booleanAttribute, ChangeDetectorRef, computed, contentChild, contentChildren, Directive, inject, Injector, input, linkedSignal, model, numberAttribute, } 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 { provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n } from '../i18n/calendar-i18n';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarMulti {\n _i18n = injectBrnCalendarI18n();\n /**\n * Determine if a date is the start of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is the end of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(_) {\n return false;\n }\n /**\n * Determine if a date is between the start and end dates. In a date picker, this is always false.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(_) {\n return false;\n }\n // /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the injector */\n _injector = inject(Injector);\n /** The minimum date that can be selected.*/\n min = input();\n /** The maximum date that can be selected. */\n max = input();\n /** The minimum selectable dates. */\n minSelection = input(undefined, {\n transform: numberAttribute,\n });\n /** The maximum selectable dates. */\n maxSelection = input(undefined, {\n transform: numberAttribute,\n });\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n /** The selected value. */\n date = model();\n /** Whether a specific date is disabled. */\n dateDisabled = input(() => false);\n /** The day the week starts on */\n weekStartsOn = input(undefined, {\n transform: (v) => (v === undefined || v === null ? undefined : numberAttribute(v)),\n });\n _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n /** The default focused date. */\n defaultFocusedDate = input();\n /** @internal Access the header */\n header = contentChild(BrnCalendarHeader);\n /** Store the cells */\n _cells = contentChildren(BrnCalendarCellButton, {\n descendants: true,\n });\n /**\n * The focused date.\n */\n focusedDate = linkedSignal(() => this.constrainDate(this.defaultFocusedDate() ?? this._dateAdapter.now()));\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n days = computed(() => {\n const weekStartsOn = this._weekStartsOn();\n const month = this.focusedDate();\n const days = [];\n // Get the first and last day of the month.\n let firstDay = this._dateAdapter.startOfMonth(month);\n let lastDay = this._dateAdapter.endOfMonth(month);\n // we need to subtract until we get the to starting day before or on the start of the month.\n while (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n firstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n }\n const weekEndsOn = (weekStartsOn + 6) % 7;\n // we need to add until we get to the ending day after or on the end of the month.\n while (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n lastDay = this._dateAdapter.add(lastDay, { days: 1 });\n }\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this._dateAdapter.add(firstDay, { days: 1 });\n }\n return days;\n });\n isSelected(date) {\n return this.date()?.some((d) => this._dateAdapter.isSameDay(d, date)) ?? false;\n }\n selectDate(date) {\n const selected = this.date();\n if (this.isSelected(date)) {\n const minSelection = this.minSelection();\n if (selected?.length === minSelection) {\n // min selection reached, do not allow to deselect\n return;\n }\n this.date.set(selected?.filter((d) => !this._dateAdapter.isSameDay(d, date)));\n }\n else {\n const maxSelection = this.maxSelection();\n if (selected?.length === maxSelection) {\n // max selection reached, reset the selection to date\n this.date.set([date]);\n }\n else {\n // add the date to the selection\n this.date.set([...(selected ?? []), date]);\n }\n }\n }\n // same as in brn-calendar.directive.ts\n /** @internal Constrain a date to the min and max boundaries */\n constrainDate(date) {\n const min = this.min();\n const max = this.max();\n // If there is no min or max, return the date.\n if (!min && !max) {\n return date;\n }\n // If there is a min and the date is before the min, return the min.\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return min;\n }\n // If there is a max and the date is after the max, return the max.\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return max;\n }\n // Return the date.\n return date;\n }\n /** @internal Determine if a date is disabled */\n isDateDisabled(date) {\n // if the calendar is disabled we can't select this date\n if (this.disabled()) {\n return true;\n }\n // if the date is outside the min and max range\n const min = this.min();\n const max = this.max();\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return true;\n }\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return true;\n }\n // if this specific date is disabled\n const disabledFn = this.dateDisabled();\n if (disabledFn(date)) {\n return true;\n }\n return false;\n }\n /** @internal Set the focused date */\n setFocusedDate(date) {\n // check if the date is disabled.\n if (this.isDateDisabled(date)) {\n return;\n }\n this.focusedDate.set(date);\n // wait until the cells have all updated\n afterNextRender({\n write: () => {\n // focus the cell with the target date.\n const cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n if (cell) {\n cell.focus();\n }\n },\n }, {\n injector: this._injector,\n });\n // we must update the view to ensure the focused cell is visible.\n this._changeDetector.detectChanges();\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMulti, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnCalendarMulti, isStandalone: true, selector: \"[brnCalendarMulti]\", inputs: { min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, minSelection: { classPropertyName: \"minSelection\", publicName: \"minSelection\", isSignal: true, isRequired: false, transformFunction: null }, maxSelection: { classPropertyName: \"maxSelection\", publicName: \"maxSelection\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: \"date\", publicName: \"date\", 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 } }, outputs: { date: \"dateChange\" }, providers: [provideBrnCalendar(BrnCalendarMulti)], queries: [{ propertyName: \"header\", first: true, predicate: BrnCalendarHeader, descendants: true, isSignal: true }, { propertyName: \"_cells\", predicate: BrnCalendarCellButton, descendants: true, isSignal: true }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarMulti, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarMulti]',\n providers: [provideBrnCalendar(BrnCalendarMulti)],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLW11bHRpcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL21vZGUvYnJuLWNhbGVuZGFyLW11bHRpcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLGdCQUFnQjtJQUNYLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBRWpEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLENBQUk7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsQ0FBSTtRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxDQUFJO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELGlDQUFpQztJQUNkLFlBQVksR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXpELGlDQUFpQztJQUNoQixlQUFlLEdBQUcsTUFB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Q0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0Isd0NBQXdDO1FBQ3hDLGVBQWUsQ0FDZDtZQUNDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsdUNBQXVDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFcEYsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQztZQUNGLENBQUM7U0FDRCxFQUNEO1lBQ0MsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3hCLENBQ0QsQ0FBQztRQUVGLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7MEhBNU9XLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLDJ4Q0FGakIsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLDhEQWtGWCxpQkFBaUIsNEVBR2UscUJBQXFCOzsyRkFuRi9FLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixTQUFTLEVBQUUsQ0FBQyxrQkFBa0Isa0JBQWtCLENBQUM7aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdGNvbnRlbnRDaGlsZHJlbixcblx0RGlyZWN0aXZlLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0bGlua2VkU2lnbmFsLFxuXHRtb2RlbCxcblx0bnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZGF0ZS10aW1lJztcbmltcG9ydCB7IEJybkNhbGVuZGFyQ2VsbEJ1dHRvbiB9IGZyb20gJy4uL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckhlYWRlciB9IGZyb20gJy4uL2Jybi1jYWxlbmRhci1oZWFkZXInO1xuaW1wb3J0IHsgdHlwZSBCcm5DYWxlbmRhckJhc2UsIHByb3ZpZGVCcm5DYWxlbmRhciB9IGZyb20gJy4uL2Jybi1jYWxlbmRhci50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5DYWxlbmRhckkxOG4sIHR5cGUgV2Vla2RheSB9IGZyb20gJy4uL2kxOG4vY2FsZW5kYXItaTE4bic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5DYWxlbmRhck11bHRpXScsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVCcm5DYWxlbmRhcihCcm5DYWxlbmRhck11bHRpKV0sXG59KVxuZXhwb3J0IGNsYXNzIEJybkNhbGVuZGFyTXVsdGk8VD4gaW1wbGVtZW50cyBCcm5DYWxlbmRhckJhc2U8VD4ge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9pMThuID0gaW5qZWN0QnJuQ2FsZW5kYXJJMThuKCk7XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgdGhlIHN0YXJ0IG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzU3RhcnRPZlJhbmdlKF86IFQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyB0aGUgZW5kIG9mIGEgcmFuZ2UuIEluIGEgZGF0ZSBwaWNrZXIsIHRoaXMgaXMgYWx3YXlzIGZhbHNlLlxuXHQgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMgQWx3YXlzIGZhbHNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzRW5kT2ZSYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy4gSW4gYSBkYXRlIHBpY2tlciwgdGhpcyBpcyBhbHdheXMgZmFsc2UuXG5cdCAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkYXRlIGlzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMsIGZhbHNlIG90aGVyd2lzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc0JldHdlZW5SYW5nZShfOiBUKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gLyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgaW5qZWN0b3IgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdC8qKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiovXG5cdHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlcy4gICovXG5cdHB1YmxpYyByZWFkb25seSBtaW5TZWxlY3Rpb24gPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0Pih1bmRlZmluZWQsIHtcblx0XHR0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSxcblx0fSk7XG5cblx0LyoqIFRoZSBtYXhpbXVtIHNlbGVjdGFibGUgZGF0ZXMuICAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4U2VsZWN0aW9uID0gaW5wdXQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4odW5kZWZpbmVkLCB7XG5cdFx0dHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUsXG5cdH0pO1xuXG5cdC8qKiBEZXRlcm1pbmUgaWYgdGhlIGRhdGUgcGlja2VyIGlzIGRpc2FibGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7XG5cdFx0dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuXHR9KTtcblxuXHQvKiogVGhlIHNlbGVjdGVkIHZhbHVlLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGF0ZSA9IG1vZGVsPFRbXT4oKTtcblxuXHQvKiogV2hldGhlciBhIHNwZWNpZmljIGRhdGUgaXMgZGlzYWJsZWQuICovXG5cdHB1YmxpYyByZWFkb25seSBkYXRlRGlzYWJsZWQgPSBpbnB1dDwoZGF0ZTogVCkgPT4gYm9vbGVhbj4oKCkgPT4gZmFsc2UpO1xuXG5cdC8qKiBUaGUgZGF5IHRoZSB3ZWVrIHN0YXJ0cyBvbiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgd2Vla1N0YXJ0c09uID0gaW5wdXQ8V2Vla2RheSwgTnVtYmVySW5wdXQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge1xuXHRcdHRyYW5zZm9ybTogKHY6IHVua25vd24pID0+ICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IChudW1iZXJBdHRyaWJ1dGUodikgYXMgV2Vla2RheSkpLFxuXHR9KTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3dlZWtTdGFydHNPbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMud2Vla1N0YXJ0c09uKCkgPz8gdGhpcy5faTE4bi5jb25maWcoKS5maXJzdERheU9mV2VlaygpKTtcblxuXHQvKiogVGhlIGRlZmF1bHQgZm9jdXNlZCBkYXRlLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEZvY3VzZWREYXRlID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogQGludGVybmFsIEFjY2VzcyB0aGUgaGVhZGVyICovXG5cdHB1YmxpYyByZWFkb25seSBoZWFkZXIgPSBjb250ZW50Q2hpbGQoQnJuQ2FsZW5kYXJIZWFkZXIpO1xuXG5cdC8qKiBTdG9yZSB0aGUgY2VsbHMgKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9jZWxscyA9IGNvbnRlbnRDaGlsZHJlbjxCcm5DYWxlbmRhckNlbGxCdXR0b248VD4+KEJybkNhbGVuZGFyQ2VsbEJ1dHRvbiwge1xuXHRcdGRlc2NlbmRhbnRzOiB0cnVlLFxuXHR9KTtcblxuXHQvKipcblx0ICogVGhlIGZvY3VzZWQgZGF0ZS5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBmb2N1c2VkRGF0ZSA9IGxpbmtlZFNpZ25hbCgoKSA9PlxuXHRcdHRoaXMuY29uc3RyYWluRGF0ZSh0aGlzLmRlZmF1bHRGb2N1c2VkRGF0ZSgpID8/IHRoaXMuX2RhdGVBZGFwdGVyLm5vdygpKSxcblx0KTtcblxuXHQvKipcblx0ICogR2V0IGFsbCB0aGUgZGF5cyB0byBkaXNwbGF5LCB0aGlzIGlzIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoXG5cdCAqIGFuZCB0aGUgZGF5cyBvZiB0aGUgcHJldmlvdXMgYW5kIG5leHQgbW9udGggdG8gZmlsbCB0aGUgZ3JpZC5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdlZWtTdGFydHNPbiA9IHRoaXMuX3dlZWtTdGFydHNPbigpO1xuXHRcdGNvbnN0IG1vbnRoID0gdGhpcy5mb2N1c2VkRGF0ZSgpO1xuXHRcdGNvbnN0IGRheXM6IFRbXSA9IFtdO1xuXG5cdFx0Ly8gR2V0IHRoZSBmaXJzdCBhbmQgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuXHRcdGxldCBmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZNb250aChtb250aCk7XG5cdFx0bGV0IGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZk1vbnRoKG1vbnRoKTtcblxuXHRcdC8vIHdlIG5lZWQgdG8gc3VidHJhY3QgdW50aWwgd2UgZ2V0IHRoZSB0byBzdGFydGluZyBkYXkgYmVmb3JlIG9yIG9uIHRoZSBzdGFydCBvZiB0aGUgbW9udGguXG5cdFx0d2hpbGUgKHRoaXMuX2RhdGVBZGFwdGVyLmdldERheShmaXJzdERheSkgIT09IHdlZWtTdGFydHNPbikge1xuXHRcdFx0Zmlyc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IHdlZWtFbmRzT24gPSAod2Vla1N0YXJ0c09uICsgNikgJSA3O1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBhZGQgdW50aWwgd2UgZ2V0IHRvIHRoZSBlbmRpbmcgZGF5IGFmdGVyIG9yIG9uIHRoZSBlbmQgb2YgdGhlIG1vbnRoLlxuXHRcdHdoaWxlICh0aGlzLl9kYXRlQWRhcHRlci5nZXREYXkobGFzdERheSkgIT09IHdlZWtFbmRzT24pIHtcblx0XHRcdGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGQobGFzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdC8vIGNvbGxlY3QgYWxsIHRoZSBkYXlzIHRvIGRpc3BsYXkuXG5cdFx0d2hpbGUgKGZpcnN0RGF5IDw9IGxhc3REYXkpIHtcblx0XHRcdGRheXMucHVzaChmaXJzdERheSk7XG5cdFx0XHRmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXlzO1xuXHR9KTtcblxuXHRpc1NlbGVjdGVkKGRhdGU6IFQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRlKCk/LnNvbWUoKGQpID0+IHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkLCBkYXRlKSkgPz8gZmFsc2U7XG5cdH1cblxuXHRzZWxlY3REYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMuZGF0ZSgpIGFzIFRbXSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pc1NlbGVjdGVkKGRhdGUpKSB7XG5cdFx0XHRjb25zdCBtaW5TZWxlY3Rpb24gPSB0aGlzLm1pblNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKHNlbGVjdGVkPy5sZW5ndGggPT09IG1pblNlbGVjdGlvbikge1xuXHRcdFx0XHQvLyBtaW4gc2VsZWN0aW9uIHJlYWNoZWQsIGRvIG5vdCBhbGxvdyB0byBkZXNlbGVjdFxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZGF0ZS5zZXQoc2VsZWN0ZWQ/LmZpbHRlcigoZCkgPT4gIXRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkLCBkYXRlKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBtYXhTZWxlY3Rpb24gPSB0aGlzLm1heFNlbGVjdGlvbigpO1xuXHRcdFx0aWYgKHNlbGVjdGVkPy5sZW5ndGggPT09IG1heFNlbGVjdGlvbikge1xuXHRcdFx0XHQvLyBtYXggc2VsZWN0aW9uIHJlYWNoZWQsIHJlc2V0IHRoZSBzZWxlY3Rpb24gdG8gZGF0ZVxuXHRcdFx0XHR0aGlzLmRhdGUuc2V0KFtkYXRlXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBhZGQgdGhlIGRhdGUgdG8gdGhlIHNlbGVjdGlvblxuXHRcdFx0XHR0aGlzLmRhdGUuc2V0KFsuLi4oc2VsZWN0ZWQgPz8gW10pLCBkYXRlXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gc2FtZSBhcyBpbiBicm4tY2FsZW5kYXIuZGlyZWN0aXZlLnRzXG5cdC8qKiBAaW50ZXJuYWwgQ29uc3RyYWluIGEgZGF0ZSB0byB0aGUgbWluIGFuZCBtYXggYm91bmRhcmllcyAqL1xuXHRjb25zdHJhaW5EYXRlKGRhdGU6IFQpOiBUIHtcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBubyBtaW4gb3IgbWF4LCByZXR1cm4gdGhlIGRhdGUuXG5cdFx0aWYgKCFtaW4gJiYgIW1heCkge1xuXHRcdFx0cmV0dXJuIGRhdGU7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtaW4gYW5kIHRoZSBkYXRlIGlzIGJlZm9yZSB0aGUgbWluLCByZXR1cm4gdGhlIG1pbi5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiBtaW47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYSBtYXggYW5kIHRoZSBkYXRlIGlzIGFmdGVyIHRoZSBtYXgsIHJldHVybiB0aGUgbWF4LlxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIG1heDtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGRhdGUuXG5cdFx0cmV0dXJuIGRhdGU7XG5cdH1cblxuXHQvKiogQGludGVybmFsIERldGVybWluZSBpZiBhIGRhdGUgaXMgZGlzYWJsZWQgKi9cblx0aXNEYXRlRGlzYWJsZWQoZGF0ZTogVCk6IGJvb2xlYW4ge1xuXHRcdC8vIGlmIHRoZSBjYWxlbmRhciBpcyBkaXNhYmxlZCB3ZSBjYW4ndCBzZWxlY3QgdGhpcyBkYXRlXG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhlIGRhdGUgaXMgb3V0c2lkZSB0aGUgbWluIGFuZCBtYXggcmFuZ2Vcblx0XHRjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuXHRcdGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG5cblx0XHRpZiAobWluICYmIHRoaXMuX2RhdGVBZGFwdGVyLmlzQmVmb3JlKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZEYXkobWluKSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChtYXggJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZkRheShtYXgpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gaWYgdGhpcyBzcGVjaWZpYyBkYXRlIGlzIGRpc2FibGVkXG5cdFx0Y29uc3QgZGlzYWJsZWRGbiA9IHRoaXMuZGF0ZURpc2FibGVkKCk7XG5cblx0XHRpZiAoZGlzYWJsZWRGbihkYXRlKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCBTZXQgdGhlIGZvY3VzZWQgZGF0ZSAqL1xuXHRzZXRGb2N1c2VkRGF0ZShkYXRlOiBUKTogdm9pZCB7XG5cdFx0Ly8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgZGlzYWJsZWQuXG5cdFx0aWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmZvY3VzZWREYXRlLnNldChkYXRlKTtcblxuXHRcdC8vIHdhaXQgdW50aWwgdGhlIGNlbGxzIGhhdmUgYWxsIHVwZGF0ZWRcblx0XHRhZnRlck5leHRSZW5kZXIoXG5cdFx0XHR7XG5cdFx0XHRcdHdyaXRlOiAoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gZm9jdXMgdGhlIGNlbGwgd2l0aCB0aGUgdGFyZ2V0IGRhdGUuXG5cdFx0XHRcdFx0Y29uc3QgY2VsbCA9IHRoaXMuX2NlbGxzKCkuZmluZCgoYykgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNTYW1lRGF5KGMuZGF0ZSgpLCBkYXRlKSk7XG5cblx0XHRcdFx0XHRpZiAoY2VsbCkge1xuXHRcdFx0XHRcdFx0Y2VsbC5mb2N1cygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGluamVjdG9yOiB0aGlzLl9pbmplY3Rvcixcblx0XHRcdH0sXG5cdFx0KTtcblxuXHRcdC8vIHdlIG11c3QgdXBkYXRlIHRoZSB2aWV3IHRvIGVuc3VyZSB0aGUgZm9jdXNlZCBjZWxsIGlzIHZpc2libGUuXG5cdFx0dGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG59XG4iXX0=","import { afterNextRender, booleanAttribute, ChangeDetectorRef, computed, contentChild, contentChildren, Directive, inject, Injector, input, linkedSignal, model, numberAttribute, } 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 { provideBrnCalendar } from '../brn-calendar.token';\nimport { injectBrnCalendarI18n } from '../i18n/calendar-i18n';\nimport * as i0 from \"@angular/core\";\nexport class BrnCalendarRange {\n _i18n = injectBrnCalendarI18n();\n // /** Access the date adapter */\n _dateAdapter = injectDateAdapter();\n /** Access the change detector */\n _changeDetector = inject(ChangeDetectorRef);\n /** Access the injector */\n _injector = inject(Injector);\n /** The minimum date that can be selected.*/\n min = input();\n /** The maximum date that can be selected. */\n max = input();\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n /** Whether a specific date is disabled. */\n dateDisabled = input(() => false);\n /** The day the week starts on */\n weekStartsOn = input(undefined, {\n transform: (v) => (v === undefined || v === null ? undefined : numberAttribute(v)),\n });\n _weekStartsOn = computed(() => this.weekStartsOn() ?? this._i18n.config().firstDayOfWeek());\n /** The default focused date. */\n defaultFocusedDate = input();\n /** @internal Access the header */\n header = contentChild(BrnCalendarHeader);\n /** Store the cells */\n _cells = contentChildren(BrnCalendarCellButton, {\n descendants: true,\n });\n /**\n * The focused date.\n */\n focusedDate = linkedSignal(() => this.constrainDate(this.defaultFocusedDate() ?? this.startDate() ?? this._dateAdapter.now()));\n /**\n * The selected start date\n */\n startDate = model();\n /**\n * The selected end date\n */\n endDate = model();\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n days = computed(() => {\n const weekStartsOn = this._weekStartsOn();\n const month = this.focusedDate();\n const days = [];\n // Get the first and last day of the month.\n let firstDay = this._dateAdapter.startOfMonth(month);\n let lastDay = this._dateAdapter.endOfMonth(month);\n // we need to subtract until we get the to starting day before or on the start of the month.\n while (this._dateAdapter.getDay(firstDay) !== weekStartsOn) {\n firstDay = this._dateAdapter.subtract(firstDay, { days: 1 });\n }\n const weekEndsOn = (weekStartsOn + 6) % 7;\n // we need to add until we get to the ending day after or on the end of the month.\n while (this._dateAdapter.getDay(lastDay) !== weekEndsOn) {\n lastDay = this._dateAdapter.add(lastDay, { days: 1 });\n }\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this._dateAdapter.add(firstDay, { days: 1 });\n }\n return days;\n });\n isSelected(date) {\n const start = this.startDate();\n const end = this.endDate();\n if (!start && !end) {\n return false;\n }\n const isStartSelected = start ? this._dateAdapter.isSameDay(date, start) : false;\n const isEndSelected = end ? this._dateAdapter.isSameDay(date, end) : false;\n return isStartSelected || isEndSelected;\n }\n selectDate(date) {\n const start = this.startDate();\n const end = this.endDate();\n if (!start && !end) {\n this.startDate.set(date);\n return;\n }\n if (start && !end) {\n if (this._dateAdapter.isAfter(date, start)) {\n this.endDate.set(date);\n }\n else if (this._dateAdapter.isBefore(date, start)) {\n this.startDate.set(date);\n this.endDate.set(start);\n }\n else if (this._dateAdapter.isSameDay(date, start)) {\n this.endDate.set(date);\n }\n return;\n }\n // If both start and end are selected, reset selection\n this.startDate.set(date);\n this.endDate.set(undefined);\n }\n // same as in brn-calendar.directive.ts\n /** @internal Constrain a date to the min and max boundaries */\n constrainDate(date) {\n const min = this.min();\n const max = this.max();\n // If there is no min or max, return the date.\n if (!min && !max) {\n return date;\n }\n // If there is a min and the date is before the min, return the min.\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return min;\n }\n // If there is a max and the date is after the max, return the max.\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return max;\n }\n // Return the date.\n return date;\n }\n /** @internal Determine if a date is disabled */\n isDateDisabled(date) {\n // if the calendar is disabled we can't select this date\n if (this.disabled()) {\n return true;\n }\n // if the date is outside the min and max range\n const min = this.min();\n const max = this.max();\n if (min && this._dateAdapter.isBefore(date, this._dateAdapter.startOfDay(min))) {\n return true;\n }\n if (max && this._dateAdapter.isAfter(date, this._dateAdapter.endOfDay(max))) {\n return true;\n }\n // if this specific date is disabled\n const disabledFn = this.dateDisabled();\n if (disabledFn(date)) {\n return true;\n }\n return false;\n }\n /** @internal Set the focused date */\n setFocusedDate(date) {\n // check if the date is disabled.\n if (this.isDateDisabled(date)) {\n return;\n }\n this.focusedDate.set(date);\n // wait until the cells have all updated\n afterNextRender({\n write: () => {\n // focus the cell with the target date.\n const cell = this._cells().find((c) => this._dateAdapter.isSameDay(c.date(), date));\n if (cell) {\n cell.focus();\n }\n },\n }, {\n injector: this._injector,\n });\n // we must update the view to ensure the focused cell is visible.\n this._changeDetector.detectChanges();\n }\n /**\n * Determine if a date is the start of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(date) {\n const start = this.startDate();\n return start ? this._dateAdapter.isSameDay(date, start) : false;\n }\n /**\n * Determine if a date is the end of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(date) {\n const end = this.endDate();\n return end ? this._dateAdapter.isSameDay(date, end) : false;\n }\n /**\n * Determine if a date is between the start and end dates.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(date) {\n const start = this.startDate();\n const end = this.endDate();\n if (!start || !end) {\n return false;\n }\n return this._dateAdapter.isAfter(date, start) && this._dateAdapter.isBefore(date, end);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarRange, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnCalendarRange, isStandalone: true, selector: \"[brnCalendarRange]\", inputs: { 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 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnCalendarRange, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnCalendarRange]',\n providers: [provideBrnCalendar(BrnCalendarRange)],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNhbGVuZGFyLXJhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9jYWxlbmRhci9zcmMvbGliL21vZGUvYnJuLWNhbGVuZGFyLXJhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLGdCQUFnQjtJQUNYLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pELGlDQUFpQztJQUNkLFlBQVksR0FBRyxpQkFBaUIsRUFBSyxDQUFDO0lBRXpELGlDQUFpQztJQUNoQixlQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFN0QsMEJBQTBCO0lBQ1QsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5Qyw0Q0FBNEM7SUFDNUIsR0FBRyxHQUFHLEtBQUssRUFBSyxDQUFDO0lBRWpDLDZDQUE2QztJQUM3QixHQUFHLEdBQUcsS0FBSyxFQUFLLENBQUM7SUFFakMsZ0RBQWdEO0lBQ2hDLFFBQVEsR0FBRyxLQUFLLENB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LEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsSUFBTztRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEYsQ0FBQzswSEFoUVcsZ0JBQWdCOzhHQUFoQixnQkFBZ0Isa3JDQUZqQixDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUMsOERBc0NYLGlCQUFpQiw0RUFHZSxxQkFBcUI7OzJGQXZDL0UsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixrQkFBa0IsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRib29sZWFuQXR0cmlidXRlLFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0Y29udGVudENoaWxkcmVuLFxuXHREaXJlY3RpdmUsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRsaW5rZWRTaWduYWwsXG5cdG1vZGVsLFxuXHRudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJDZWxsQnV0dG9uIH0gZnJvbSAnLi4vYnJuLWNhbGVuZGFyLWNlbGwtYnV0dG9uJztcbmltcG9ydCB7IEJybkNhbGVuZGFySGVhZGVyIH0gZnJvbSAnLi4vYnJuLWNhbGVuZGFyLWhlYWRlcic7XG5pbXBvcnQgeyB0eXBlIEJybkNhbGVuZGFyQmFzZSwgcHJvdmlkZUJybkNhbGVuZGFyIH0gZnJvbSAnLi4vYnJuLWNhbGVuZGFyLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybkNhbGVuZGFySTE4biwgdHlwZSBXZWVrZGF5IH0gZnJvbSAnLi4vaTE4bi9jYWxlbmRhci1pMThuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2JybkNhbGVuZGFyUmFuZ2VdJyxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZUJybkNhbGVuZGFyKEJybkNhbGVuZGFyUmFuZ2UpXSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuQ2FsZW5kYXJSYW5nZTxUPiBpbXBsZW1lbnRzIEJybkNhbGVuZGFyQmFzZTxUPiB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2kxOG4gPSBpbmplY3RCcm5DYWxlbmRhckkxOG4oKTtcblx0Ly8gLyoqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG5cdC8qKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqIEFjY2VzcyB0aGUgaW5qZWN0b3IgKi9cblx0cHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdC8qKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiovXG5cdHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxUPigpO1xuXG5cdC8qKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8VD4oKTtcblxuXHQvKiogRGV0ZXJtaW5lIGlmIHRoZSBkYXRlIHBpY2tlciBpcyBkaXNhYmxlZC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuXHRcdHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcblx0fSk7XG5cblx0LyoqIFdoZXRoZXIgYSBzcGVjaWZpYyBkYXRlIGlzIGRpc2FibGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGF0ZURpc2FibGVkID0gaW5wdXQ8KGRhdGU6IFQpID0+IGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcblxuXHQvKiogVGhlIGRheSB0aGUgd2VlayBzdGFydHMgb24gKi9cblx0cHVibGljIHJlYWRvbmx5IHdlZWtTdGFydHNPbiA9IGlucHV0PFdlZWtkYXksIE51bWJlcklucHV0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHtcblx0XHR0cmFuc2Zvcm06ICh2OiB1bmtub3duKSA9PiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgPyB1bmRlZmluZWQgOiAobnVtYmVyQXR0cmlidXRlKHYpIGFzIFdlZWtkYXkpKSxcblx0fSk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF93ZWVrU3RhcnRzT24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLndlZWtTdGFydHNPbigpID8/IHRoaXMuX2kxOG4uY29uZmlnKCkuZmlyc3REYXlPZldlZWsoKSk7XG5cblx0LyoqIFRoZSBkZWZhdWx0IGZvY3VzZWQgZGF0ZS4gKi9cblx0cHVibGljIHJlYWRvbmx5IGRlZmF1bHRGb2N1c2VkRGF0ZSA9IGlucHV0PFQ+KCk7XG5cblx0LyoqIEBpbnRlcm5hbCBBY2Nlc3MgdGhlIGhlYWRlciAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgaGVhZGVyID0gY29udGVudENoaWxkKEJybkNhbGVuZGFySGVhZGVyKTtcblxuXHQvKiogU3RvcmUgdGhlIGNlbGxzICovXG5cdHByb3RlY3RlZCByZWFkb25seSBfY2VsbHMgPSBjb250ZW50Q2hpbGRyZW48QnJuQ2FsZW5kYXJDZWxsQnV0dG9uPFQ+PihCcm5DYWxlbmRhckNlbGxCdXR0b24sIHtcblx0XHRkZXNjZW5kYW50czogdHJ1ZSxcblx0fSk7XG5cblx0LyoqXG5cdCAqIFRoZSBmb2N1c2VkIGRhdGUuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZm9jdXNlZERhdGUgPSBsaW5rZWRTaWduYWwoKCkgPT5cblx0XHR0aGlzLmNvbnN0cmFpbkRhdGUodGhpcy5kZWZhdWx0Rm9jdXNlZERhdGUoKSA/PyB0aGlzLnN0YXJ0RGF0ZSgpID8/IHRoaXMuX2RhdGVBZGFwdGVyLm5vdygpKSxcblx0KTtcblxuXHQvKipcblx0ICogVGhlIHNlbGVjdGVkIHN0YXJ0IGRhdGVcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBzdGFydERhdGUgPSBtb2RlbDxUPigpO1xuXG5cdC8qKlxuXHQgKiBUaGUgc2VsZWN0ZWQgZW5kIGRhdGVcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBlbmREYXRlID0gbW9kZWw8VD4oKTtcblxuXHQvKipcblx0ICogR2V0IGFsbCB0aGUgZGF5cyB0byBkaXNwbGF5LCB0aGlzIGlzIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoXG5cdCAqIGFuZCB0aGUgZGF5cyBvZiB0aGUgcHJldmlvdXMgYW5kIG5leHQgbW9udGggdG8gZmlsbCB0aGUgZ3JpZC5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdlZWtTdGFydHNPbiA9IHRoaXMuX3dlZWtTdGFydHNPbigpO1xuXHRcdGNvbnN0IG1vbnRoID0gdGhpcy5mb2N1c2VkRGF0ZSgpO1xuXHRcdGNvbnN0IGRheXM6IFRbXSA9IFtdO1xuXG5cdFx0Ly8gR2V0IHRoZSBmaXJzdCBhbmQgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuXHRcdGxldCBmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLnN0YXJ0T2ZNb250aChtb250aCk7XG5cdFx0bGV0IGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5lbmRPZk1vbnRoKG1vbnRoKTtcblxuXHRcdC8vIHdlIG5lZWQgdG8gc3VidHJhY3QgdW50aWwgd2UgZ2V0IHRoZSB0byBzdGFydGluZyBkYXkgYmVmb3JlIG9yIG9uIHRoZSBzdGFydCBvZiB0aGUgbW9udGguXG5cdFx0d2hpbGUgKHRoaXMuX2RhdGVBZGFwdGVyLmdldERheShmaXJzdERheSkgIT09IHdlZWtTdGFydHNPbikge1xuXHRcdFx0Zmlyc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5zdWJ0cmFjdChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IHdlZWtFbmRzT24gPSAod2Vla1N0YXJ0c09uICsgNikgJSA3O1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBhZGQgdW50aWwgd2UgZ2V0IHRvIHRoZSBlbmRpbmcgZGF5IGFmdGVyIG9yIG9uIHRoZSBlbmQgb2YgdGhlIG1vbnRoLlxuXHRcdHdoaWxlICh0aGlzLl9kYXRlQWRhcHRlci5nZXREYXkobGFzdERheSkgIT09IHdlZWtFbmRzT24pIHtcblx0XHRcdGxhc3REYXkgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGQobGFzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdC8vIGNvbGxlY3QgYWxsIHRoZSBkYXlzIHRvIGRpc3BsYXkuXG5cdFx0d2hpbGUgKGZpcnN0RGF5IDw9IGxhc3REYXkpIHtcblx0XHRcdGRheXMucHVzaChmaXJzdERheSk7XG5cdFx0XHRmaXJzdERheSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXlzO1xuXHR9KTtcblxuXHRpc1NlbGVjdGVkKGRhdGU6IFQpOiBib29sZWFuIHtcblx0XHRjb25zdCBzdGFydCA9IHRoaXMuc3RhcnREYXRlKCk7XG5cdFx0Y29uc3QgZW5kID0gdGhpcy5lbmREYXRlKCk7XG5cblx0XHRpZiAoIXN0YXJ0ICYmICFlbmQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgaXNTdGFydFNlbGVjdGVkID0gc3RhcnQgPyB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkoZGF0ZSwgc3RhcnQpIDogZmFsc2U7XG5cdFx0Y29uc3QgaXNFbmRTZWxlY3RlZCA9IGVuZCA/IHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBlbmQpIDogZmFsc2U7XG5cblx0XHRyZXR1cm4gaXNTdGFydFNlbGVjdGVkIHx8IGlzRW5kU2VsZWN0ZWQ7XG5cdH1cblxuXHRzZWxlY3REYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHRjb25zdCBzdGFydCA9IHRoaXMuc3RhcnREYXRlKCk7XG5cdFx0Y29uc3QgZW5kID0gdGhpcy5lbmREYXRlKCk7XG5cblx0XHRpZiAoIXN0YXJ0ICYmICFlbmQpIHtcblx0XHRcdHRoaXMuc3RhcnREYXRlLnNldChkYXRlKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChzdGFydCAmJiAhZW5kKSB7XG5cdFx0XHRpZiAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCBzdGFydCkpIHtcblx0XHRcdFx0dGhpcy5lbmREYXRlLnNldChkYXRlKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgc3RhcnQpKSB7XG5cdFx0XHRcdHRoaXMuc3RhcnREYXRlLnNldChkYXRlKTtcblx0XHRcdFx0dGhpcy5lbmREYXRlLnNldChzdGFydCk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBzdGFydCkpIHtcblx0XHRcdFx0dGhpcy5lbmREYXRlLnNldChkYXRlKTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJZiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHNlbGVjdGVkLCByZXNldCBzZWxlY3Rpb25cblx0XHR0aGlzLnN0YXJ0RGF0ZS5zZXQoZGF0ZSk7XG5cblx0XHR0aGlzLmVuZERhdGUuc2V0KHVuZGVmaW5lZCk7XG5cdH1cblxuXHQvLyBzYW1lIGFzIGluIGJybi1jYWxlbmRhci5kaXJlY3RpdmUudHNcblx0LyoqIEBpbnRlcm5hbCBDb25zdHJhaW4gYSBkYXRlIHRvIHRoZSBtaW4gYW5kIG1heCBib3VuZGFyaWVzICovXG5cdGNvbnN0cmFpbkRhdGUoZGF0ZTogVCk6IFQge1xuXHRcdGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XG5cdFx0Y29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcblxuXHRcdC8vIElmIHRoZXJlIGlzIG5vIG1pbiBvciBtYXgsIHJldHVybiB0aGUgZGF0ZS5cblx0XHRpZiAoIW1pbiAmJiAhbWF4KSB7XG5cdFx0XHRyZXR1cm4gZGF0ZTtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBhIG1pbiBhbmQgdGhlIGRhdGUgaXMgYmVmb3JlIHRoZSBtaW4sIHJldHVybiB0aGUgbWluLlxuXHRcdGlmIChtaW4gJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZkRheShtaW4pKSkge1xuXHRcdFx0cmV0dXJuIG1pbjtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBpcyBhIG1heCBhbmQgdGhlIGRhdGUgaXMgYWZ0ZXIgdGhlIG1heCwgcmV0dXJuIHRoZSBtYXguXG5cdFx0aWYgKG1heCAmJiB0aGlzLl9kYXRlQWRhcHRlci5pc0FmdGVyKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mRGF5KG1heCkpKSB7XG5cdFx0XHRyZXR1cm4gbWF4O1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgZGF0ZS5cblx0XHRyZXR1cm4gZGF0ZTtcblx0fVxuXG5cdC8qKiBAaW50ZXJuYWwgRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyBkaXNhYmxlZCAqL1xuXHRpc0RhdGVEaXNhYmxlZChkYXRlOiBUKTogYm9vbGVhbiB7XG5cdFx0Ly8gaWYgdGhlIGNhbGVuZGFyIGlzIGRpc2FibGVkIHdlIGNhbid0IHNlbGVjdCB0aGlzIGRhdGVcblx0XHRpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBpZiB0aGUgZGF0ZSBpcyBvdXRzaWRlIHRoZSBtaW4gYW5kIG1heCByYW5nZVxuXHRcdGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XG5cdFx0Y29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcblxuXHRcdGlmIChtaW4gJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgdGhpcy5fZGF0ZUFkYXB0ZXIuc3RhcnRPZkRheShtaW4pKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKG1heCAmJiB0aGlzLl9kYXRlQWRhcHRlci5pc0FmdGVyKGRhdGUsIHRoaXMuX2RhdGVBZGFwdGVyLmVuZE9mRGF5KG1heCkpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBpZiB0aGlzIHNwZWNpZmljIGRhdGUgaXMgZGlzYWJsZWRcblx0XHRjb25zdCBkaXNhYmxlZEZuID0gdGhpcy5kYXRlRGlzYWJsZWQoKTtcblxuXHRcdGlmIChkaXNhYmxlZEZuKGRhdGUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKiogQGludGVybmFsIFNldCB0aGUgZm9jdXNlZCBkYXRlICovXG5cdHNldEZvY3VzZWREYXRlKGRhdGU6IFQpOiB2b2lkIHtcblx0XHQvLyBjaGVjayBpZiB0aGUgZGF0ZSBpcyBkaXNhYmxlZC5cblx0XHRpZiAodGhpcy5pc0RhdGVEaXNhYmxlZChkYXRlKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuZm9jdXNlZERhdGUuc2V0KGRhdGUpO1xuXG5cdFx0Ly8gd2FpdCB1bnRpbCB0aGUgY2VsbHMgaGF2ZSBhbGwgdXBkYXRlZFxuXHRcdGFmdGVyTmV4dFJlbmRlcihcblx0XHRcdHtcblx0XHRcdFx0d3JpdGU6ICgpID0+IHtcblx0XHRcdFx0XHQvLyBmb2N1cyB0aGUgY2VsbCB3aXRoIHRoZSB0YXJnZXQgZGF0ZS5cblx0XHRcdFx0XHRjb25zdCBjZWxsID0gdGhpcy5fY2VsbHMoKS5maW5kKChjKSA9PiB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkoYy5kYXRlKCksIGRhdGUpKTtcblxuXHRcdFx0XHRcdGlmIChjZWxsKSB7XG5cdFx0XHRcdFx0XHRjZWxsLmZvY3VzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0aW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuXHRcdFx0fSxcblx0XHQpO1xuXG5cdFx0Ly8gd2UgbXVzdCB1cGRhdGUgdGhlIHZpZXcgdG8gZW5zdXJlIHRoZSBmb2N1c2VkIGNlbGwgaXMgdmlzaWJsZS5cblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyB0aGUgc3RhcnQgb2YgYSByYW5nZS5cblx0ICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIEFsd2F5cyBmYWxzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc1N0YXJ0T2ZSYW5nZShkYXRlOiBUKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0RGF0ZSgpO1xuXHRcdHJldHVybiBzdGFydCA/IHRoaXMuX2RhdGVBZGFwdGVyLmlzU2FtZURheShkYXRlLCBzdGFydCkgOiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmUgaWYgYSBkYXRlIGlzIHRoZSBlbmQgb2YgYSByYW5nZS5cblx0ICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIEFsd2F5cyBmYWxzZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRpc0VuZE9mUmFuZ2UoZGF0ZTogVCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGVuZCA9IHRoaXMuZW5kRGF0ZSgpO1xuXHRcdHJldHVybiBlbmQgPyB0aGlzLl9kYXRlQWRhcHRlci5pc1NhbWVEYXkoZGF0ZSwgZW5kKSA6IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy5cblx0ICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGRhdGUgaXMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcywgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGlzQmV0d2VlblJhbmdlKGRhdGU6IFQpOiBib29sZWFuIHtcblx0XHRjb25zdCBzdGFydCA9IHRoaXMuc3RhcnREYXRlKCk7XG5cdFx0Y29uc3QgZW5kID0gdGhpcy5lbmREYXRlKCk7XG5cblx0XHRpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5fZGF0ZUFkYXB0ZXIuaXNBZnRlcihkYXRlLCBzdGFydCkgJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNCZWZvcmUoZGF0ZSwgZW5kKTtcblx0fVxufVxuIl19","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';\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';\nexport const BrnCalendarImports = [\n BrnCalendarCellButton,\n BrnCalendarGrid,\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeek,\n BrnCalendarWeekday,\n BrnCalendar,\n BrnCalendarCell,\n BrnCalendarMulti,\n BrnCalendarRange,\n BrnCalendarMonthSelect,\n BrnCalendarYearSelect,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NhbGVuZGFyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIscUJBQXFCO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJybkNhbGVuZGFyIH0gZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyJztcbmltcG9ydCB7IEJybkNhbGVuZGFyQ2VsbCB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsJztcbmltcG9ydCB7IEJybkNhbGVuZGFyQ2VsbEJ1dHRvbiB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckdyaWQgfSBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItZ3JpZCc7XG5pbXBvcnQgeyBCcm5DYWxlbmRhckhlYWRlciB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1oZWFkZXInO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJNb250aFNlbGVjdCB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1tb250aC1zZWxlY3QnO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJOZXh0QnV0dG9uIH0gZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLW5leHQtYnV0dG9uJztcbmltcG9ydCB7IEJybkNhbGVuZGFyUHJldmlvdXNCdXR0b24gfSBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uJztcbmltcG9ydCB7IEJybkNhbGVuZGFyV2VlayB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci13ZWVrJztcbmltcG9ydCB7IEJybkNhbGVuZGFyV2Vla2RheSB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci13ZWVrZGF5JztcbmltcG9ydCB7IEJybkNhbGVuZGFyWWVhclNlbGVjdCB9IGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci15ZWFyLXNlbGVjdCc7XG5pbXBvcnQgeyBCcm5DYWxlbmRhck11bHRpIH0gZnJvbSAnLi9saWIvbW9kZS9icm4tY2FsZW5kYXItbXVsdGlwbGUnO1xuaW1wb3J0IHsgQnJuQ2FsZW5kYXJSYW5nZSB9IGZyb20gJy4vbGliL21vZGUvYnJuLWNhbGVuZGFyLXJhbmdlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1jZWxsLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItZ3JpZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tY2FsZW5kYXItaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1tb250aC1zZWxlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLW5leHQtYnV0dG9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci1wcmV2aW91cy1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLXdlZWsnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLXdlZWtkYXknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWNhbGVuZGFyLXllYXItc2VsZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jYWxlbmRhci50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pMThuL2NhbGVuZGFyLWkxOG4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZS9icm4tY2FsZW5kYXItbXVsdGlwbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZS9icm4tY2FsZW5kYXItcmFuZ2UnO1xuXG5leHBvcnQgY29uc3QgQnJuQ2FsZW5kYXJJbXBvcnRzID0gW1xuXHRCcm5DYWxlbmRhckNlbGxCdXR0b24sXG5cdEJybkNhbGVuZGFyR3JpZCxcblx0QnJuQ2FsZW5kYXJIZWFkZXIsXG5cdEJybkNhbGVuZGFyTmV4dEJ1dHRvbixcblx0QnJuQ2FsZW5kYXJQcmV2aW91c0J1dHRvbixcblx0QnJuQ2FsZW5kYXJXZWVrLFxuXHRCcm5DYWxlbmRhcldlZWtkYXksXG5cdEJybkNhbGVuZGFyLFxuXHRCcm5DYWxlbmRhckNlbGwsXG5cdEJybkNhbGVuZGFyTXVsdGksXG5cdEJybkNhbGVuZGFyUmFuZ2UsXG5cdEJybkNhbGVuZGFyTW9udGhTZWxlY3QsXG5cdEJybkNhbGVuZGFyWWVhclNlbGVjdCxcbl0gYXMgY29uc3Q7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2FsZW5kYXIvc3JjL3NwYXJ0YW4tbmctYnJhaW4tY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|