@i-cell/ids-angular 0.2.21 → 0.2.23

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.
@@ -3,7 +3,7 @@ import { InjectionToken, OnChanges, SimpleChanges } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import * as _i_cell_ids_angular_datepicker from '@i-cell/ids-angular/datepicker';
5
5
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
6
- import { DirectiveBaseWithDefaults } from '@i-cell/ids-angular/core';
6
+ import { DirectiveBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';
7
7
  import { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';
8
8
 
9
9
  declare const IdsDatepickerView: {
@@ -104,8 +104,9 @@ declare class IdsDatepickerTriggerComponent {
104
104
  protected _intl: IdsDatepickerIntl;
105
105
  datepicker: _angular_core.InputSignal<IdsDatepickerDirective>;
106
106
  ariaLabel: _angular_core.InputSignal<string | null>;
107
+ size: _angular_core.InputSignal<IdsSizeType>;
107
108
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IdsDatepickerTriggerComponent, never>;
108
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<IdsDatepickerTriggerComponent, "ids-datepicker-trigger", never, { "datepicker": { "alias": "for"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, ["[slot='icon']"], true, never>;
109
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IdsDatepickerTriggerComponent, "ids-datepicker-trigger", never, { "datepicker": { "alias": "for"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["[slot='icon']"], true, never>;
109
110
  }
110
111
 
111
112
  export { IDS_DATEPICKER_DEFAULT_CONFIG, IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY, IDS_DATE_FORMATTER, IDS_DATE_PARSER, IdsDatepickerDirective, IdsDatepickerIntl, IdsDatepickerTriggerComponent, IdsDatepickerView };
@@ -81,16 +81,17 @@ class IdsDatepickerTriggerComponent {
81
81
  this._intl = inject(IdsDatepickerIntl);
82
82
  this.datepicker = input.required(...(ngDevMode ? [{ debugName: "datepicker", alias: 'for' }] : [{ alias: 'for' }]));
83
83
  this.ariaLabel = input(null, ...(ngDevMode ? [{ debugName: "ariaLabel", alias: 'aria-label' }] : [{ alias: 'aria-label' }]));
84
+ this.size = input('dense', ...(ngDevMode ? [{ debugName: "size" }] : []));
84
85
  }
85
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsDatepickerTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
86
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.7", type: IdsDatepickerTriggerComponent, isStandalone: true, selector: "ids-datepicker-trigger", inputs: { datepicker: { classPropertyName: "datepicker", publicName: "for", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button\n type=\"button\"\n idsIconButton\n allowCustomContent\n aria-haspopup=\"true\"\n [size]=\"'dense'\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ng-content select=\"[slot='icon']\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n </ng-content>\n</button>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton], a[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled", "allowCustomContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.7", type: IdsDatepickerTriggerComponent, isStandalone: true, selector: "ids-datepicker-trigger", inputs: { datepicker: { classPropertyName: "datepicker", publicName: "for", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button\n type=\"button\"\n idsIconButton\n allowCustomContent\n aria-haspopup=\"true\"\n [size]=\"size()\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ng-content select=\"[slot='icon']\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n </ng-content>\n</button>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton], a[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled", "allowCustomContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
87
88
  }
88
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsDatepickerTriggerComponent, decorators: [{
89
90
  type: Component,
90
91
  args: [{ selector: 'ids-datepicker-trigger', imports: [
91
92
  IdsIconComponent,
92
93
  IdsIconButtonComponent,
93
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n idsIconButton\n allowCustomContent\n aria-haspopup=\"true\"\n [size]=\"'dense'\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ng-content select=\"[slot='icon']\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n </ng-content>\n</button>\n" }]
94
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n idsIconButton\n allowCustomContent\n aria-haspopup=\"true\"\n [size]=\"size()\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ng-content select=\"[slot='icon']\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n </ng-content>\n</button>\n" }]
94
95
  }] });
95
96
 
96
97
  const IDS_DATEPICKER_DEFAULT_CONFIG = new InjectionToken('IDS_DATEPICKER_DEFAULT_CONFIG', {
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-datepicker.mjs","sources":["../../../projects/widgets/datepicker/tokens/datepicker-view.ts","../../../projects/widgets/datepicker/tokens/date-formatter.ts","../../../projects/widgets/datepicker/tokens/date-parser.ts","../../../projects/widgets/datepicker/datepicker-intl.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.html","../../../projects/widgets/datepicker/datepicker-defaults.ts","../../../projects/widgets/datepicker/calendar/calendar-page.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.html","../../../projects/widgets/datepicker/month-selector/month-selector.component.ts","../../../projects/widgets/datepicker/month-selector/month-selector.component.html","../../../projects/widgets/datepicker/year-selector/year-selector.component.ts","../../../projects/widgets/datepicker/year-selector/year-selector.component.html","../../../projects/widgets/datepicker/calendar/calendar.component.ts","../../../projects/widgets/datepicker/calendar/calendar.component.html","../../../projects/widgets/datepicker/datepicker-positions.ts","../../../projects/widgets/datepicker/datepicker.directive.ts","../../../projects/widgets/datepicker/i-cell-ids-angular-datepicker.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IdsDatepickerView = {\n DAY: 'day',\n MONTH: 'month',\n YEAR: 'year',\n} as const;\n\nexport type IdsDatepickerViewType = (typeof IdsDatepickerView)[keyof typeof IdsDatepickerView];\n","import { InjectionToken } from '@angular/core';\nimport { formatDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateFormatterFn = (date: Date) => string;\n\nexport const IDS_DATE_FORMATTER = new InjectionToken<IdsDateFormatterFn>('idsDateFormatter', {\n providedIn: 'root',\n factory: (): IdsDateFormatterFn => formatDate,\n});\n","import { InjectionToken } from '@angular/core';\nimport { parseDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateParserFn = (value: string, utc?: boolean) => Date | null;\n\nexport const IDS_DATE_PARSER = new InjectionToken<IdsDateParserFn>('idsDateParser', {\n providedIn: 'root',\n factory: (): IdsDateParserFn => parseDate,\n});\n","import { Injectable } from '@angular/core';\nimport { isValidDate } from '@i-cell/ids-angular/core';\nimport { Subject } from 'rxjs';\n\nconst dayAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long', day: 'numeric' });\nconst monthLabelFormat = new Intl.DateTimeFormat('en-GB', { month: 'short' });\nconst monthAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst daySelectorHeaderLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst weekdayLabelFormat = new Intl.DateTimeFormat('en-GB', { weekday: 'narrow' });\n\n@Injectable({ providedIn: 'root' })\nexport class IdsDatepickerIntl {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public triggerButtonLabel = 'Open calendar';\n\n public prevMonthLabel = 'Previous month';\n public nextMonthLabel = 'Next month';\n\n public prevYearLabel = 'Previous year';\n public nextYearLabel = 'Next year';\n\n public prevYearsPageLabel = 'Previous 24 years';\n public nextYearsPageLabel = 'Next 24 years';\n\n public switchToDaySelectorLabel = 'Choose date';\n public switchToYearSelectorLabel = 'Choose year and month';\n\n public getDayAriaLabel(date: Date): string | null {\n return this._formatDate(date, dayAriaLabelFormat);\n }\n\n public getMonthLabel(date: Date): string | null {\n return this._formatDate(date, monthLabelFormat);\n }\n\n public getMonthAriaLabel(date: Date): string | null {\n return this._formatDate(date, monthAriaLabelFormat);\n }\n\n public getDaySelectorHeaderLabel(date: Date): string | null {\n return this._formatDate(date, daySelectorHeaderLabelFormat);\n }\n\n public getWeekdayHeaderLabel(date: Date): string | null {\n return this._formatDate(date, weekdayLabelFormat);\n }\n\n protected _formatDate(date: unknown, dateFormat: Intl.DateTimeFormat): string | null {\n return isValidDate(date) ? dateFormat.format(date) : null;\n }\n}\n","import { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDatepickerDirective } from '../datepicker.directive';\n\nimport { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-datepicker-trigger',\n imports: [\n IdsIconComponent,\n IdsIconButtonComponent,\n ],\n templateUrl: './datepicker-trigger.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsDatepickerTriggerComponent {\n protected _parent = inject(IdsFormFieldComponent);\n protected _intl = inject(IdsDatepickerIntl);\n\n public datepicker = input.required<IdsDatepickerDirective>({ alias: 'for' });\n public ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n}\n","<button\n type=\"button\"\n idsIconButton\n allowCustomContent\n aria-haspopup=\"true\"\n [size]=\"'dense'\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ng-content select=\"[slot='icon']\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n </ng-content>\n</button>\n","import { IdsDatepickerView, IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsDatepickerDefaultConfig {\n view?: IdsDatepickerViewType,\n}\n\nexport const IDS_DATEPICKER_DEFAULT_CONFIG = new InjectionToken<IdsDatepickerDefaultConfig>(\n 'IDS_DATEPICKER_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY(): Required<IdsDatepickerDefaultConfig> {\n return {\n view: IdsDatepickerView.DAY,\n };\n}\n\n","import { IdsDatepickerIntl } from '../datepicker-intl';\n\nimport { afterNextRender, AfterViewInit, ChangeDetectorRef, Directive, ElementRef, inject, Injector, input, model, output, Signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\n@Directive()\nexport abstract class IdsCalendarPage implements AfterViewInit {\n private readonly _calendarButtonSelector = '.ids-calendar-button-focused';\n public abstract headerLabel: Signal<string>;\n\n protected _element = inject(ElementRef);\n private _injector = inject(Injector);\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public focusedDate = model.required<Date>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n\n public abstract hasPreviousPage(): boolean;\n public abstract gotoPreviousPage(): void;\n public abstract hasNextPage(): boolean;\n public abstract gotoNextPage(): void;\n\n protected readonly _today = new Date();\n\n constructor() {\n toObservable(this.focusedDate).pipe(takeUntilDestroyed()).subscribe(() => this._moveFocusToCurrent());\n this._intl.changes.pipe(takeUntilDestroyed()).subscribe(() => this._cdRef.markForCheck());\n }\n\n public ngAfterViewInit(): void {\n this._moveFocusToCurrent();\n }\n\n private _moveFocusToCurrent(): void {\n afterNextRender(() => {\n const focusedDayButton = this._element.nativeElement.querySelector(this._calendarButtonSelector) as HTMLButtonElement;\n if (focusedDayButton) {\n focusedDayButton.focus();\n }\n }, { injector: this._injector });\n }\n}\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addDays, addMonths, addYears, clampDate, compareDates, endOfMonth, endOfWeek, equalDates, getDatesBetween, isValidDate, startOfMonth, startOfWeek } from '@i-cell/ids-angular/core';\n\nconst firstDayOfWeekOffset = 1;\nconst daysPerWeek = 7;\n\n@Component({\n selector: 'ids-day-selector',\n imports: [],\n templateUrl: './day-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsDaySelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-day-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsDaySelectorComponent extends IdsCalendarPage {\n public override headerLabel = computed<string>(() => (this._intl.getDaySelectorHeaderLabel(this._currentMonth()) ?? ''));\n\n protected _currentMonth = computed<Date>(() => startOfMonth(this.focusedDate()));\n protected _previousMonth = computed<Date>(() => addMonths(this._currentMonth(), -1));\n protected _nextMonth = computed<Date>(() => addMonths(this._currentMonth(), 1));\n\n protected _gridStartDate = computed(() => startOfWeek(this._currentMonth(), firstDayOfWeekOffset));\n protected _gridEndDate = computed(() => endOfWeek(endOfMonth(this._currentMonth()), firstDayOfWeekOffset));\n protected _days = computed(() => getDatesBetween(this._gridStartDate(), this._gridEndDate()));\n\n protected _weekdayLabels = computed<string[]>(() =>\n this._days().slice(0, daysPerWeek).map((date: Date) => this._intl.getWeekdayHeaderLabel(date) ?? ''));\n\n public override hasPreviousPage(): boolean {\n const dayOnPrevPage = addDays(this._gridStartDate(), -1);\n const min = this.min() ?? dayOnPrevPage;\n\n return compareDates(dayOnPrevPage, min) > -1;\n }\n\n public override gotoPreviousPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth(), 0));\n }\n\n public override hasNextPage(): boolean {\n const dayOnNextPage = addDays(this._gridEndDate(), 1);\n const max = this.max() ?? dayOnNextPage;\n\n return compareDates(dayOnNextPage, max) < 1;\n }\n\n public override gotoNextPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));\n }\n\n protected _selectDate(event: MouseEvent, date: Date): void {\n event.stopPropagation();\n event.preventDefault();\n this.selected.emit(date);\n }\n\n protected _isDateInCurrentMonth(date: Date): boolean {\n return date.getMonth() === this._currentMonth().getMonth();\n }\n\n protected _isDateFocused(date: Date): boolean {\n return equalDates(date, this.focusedDate());\n }\n\n protected _isDateSelected(date: Date): boolean {\n return equalDates(date, this.value());\n }\n\n protected _isDateDisabled(date: Date): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && compareDates(date, min) === -1) || (isValidDate(max) && compareDates(date, max) === 1);\n }\n\n protected _isDateToday(date: Date): boolean {\n return equalDates(date, this._today);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n\n focusedDate = addDays(focusedDate, -daysPerWeek);\n break;\n case 'ArrowDown':\n\n focusedDate = addDays(focusedDate, daysPerWeek);\n break;\n case 'ArrowLeft':\n focusedDate = addDays(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addDays(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = startOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'End':\n focusedDate = endOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'PageUp':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, -1) : addMonths(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, 1) : addMonths(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _hasShiftModifierKey(event: KeyboardEvent): boolean {\n return event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey;\n }\n}\n","<div class=\"ids-day-selector__days-grid ids-calendar-grid\">\n @for (label of _weekdayLabels(); track $index) {\n <div class=\"ids-calendar-cell\">\n <span class=\"ids-day-selector__header--label ids-calendar-weekday-label\">{{ label }}</span>\n </div>\n }\n @for (day of _days(); track $index) {\n @let dayLabel = day.getDate();\n @let isSelected = _isDateSelected(day);\n @let isFocused = _isDateFocused(day);\n @let isToday = _isDateToday(day);\n @let isDisabled = _isDateDisabled(day) || !_isDateInCurrentMonth(day);\n @let tabIndex = isFocused ? 0 : -1;\n @let ariaLabel = _intl.getDayAriaLabel(day);\n <div class=\"ids-calendar-cell\" [class.ids-calendar-cell-selected]=\"isSelected\">\n <button\n type=\"button\"\n class=\"ids-day-selector__day-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isToday\"\n [tabIndex]=\"tabIndex\"\n [class.ids-calendar-button-today]=\"isToday\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectDate($event, day)\"\n >{{ dayLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { addMonths, addYears, clampDate, compareDates, createNormalizedDate, endOfMonth, isValidDate, startOfMonth } from '@i-cell/ids-angular/core';\nimport { map, startWith } from 'rxjs';\n\nconst monthsPerRow = 4;\nconst lastMonth = 11;\n\n@Component({\n selector: 'ids-month-selector',\n imports: [],\n templateUrl: './month-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsMonthSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-month-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsMonthSelectorComponent extends IdsCalendarPage {\n protected _focusedYear = computed<number>(() => this.focusedDate().getFullYear());\n\n protected _monthLabels = toSignal(this._intl.changes.pipe(startWith(null), map(() => {\n const currentYear = new Date().getFullYear();\n const monthLabels = Array.from({ length: 12 })\n .map((nil, month) => this._intl.getMonthLabel(createNormalizedDate(currentYear, month, 1)) ?? '');\n return monthLabels;\n })));\n\n public override headerLabel = computed<string>(() => String(this._focusedYear()));\n\n public override hasPreviousPage(): boolean {\n const min = this.min();\n\n if (!isValidDate(min)) {\n return true;\n }\n\n const startOfYear = createNormalizedDate(this._focusedYear(), 0, 1);\n\n return compareDates(min, startOfYear) === -1;\n }\n\n public override gotoPreviousPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() - 1, lastMonth, 1));\n }\n\n public override hasNextPage(): boolean {\n const max = this.max();\n\n if (!isValidDate(max)) {\n return true;\n }\n\n // eslint-disable-next-line no-magic-numbers\n const endOfYear = createNormalizedDate(this._focusedYear(), 11, 31);\n\n return compareDates(max, endOfYear) === 1;\n }\n\n public override gotoNextPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() + 1, 0, 1));\n }\n\n protected _selectMonth(event: MouseEvent, month: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(currentFocusedDate.getFullYear(), month, currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isMonthFocused(month: number): boolean {\n return month === this.focusedDate().getMonth();\n }\n\n protected _isMonthSelected(month: number): boolean {\n const selectedYear = this.value()?.getFullYear();\n const selectedMonth = this.value()?.getMonth();\n\n return this._focusedYear() === selectedYear && month === selectedMonth;\n }\n\n protected _isCurrentMonth(month: number): boolean {\n return this._focusedYear() === this._today.getFullYear() && month === this._today.getMonth();\n }\n\n protected _isMonthDisabled(month: number): boolean {\n const min = this.min();\n const max = this.max();\n const monthAsDate = new Date(this._focusedYear(), month, 1);\n\n return (isValidDate(min) && compareDates(endOfMonth(monthAsDate), startOfMonth(min)) === -1) ||\n (isValidDate(max) && compareDates(monthAsDate, endOfMonth(max)) === 1);\n }\n\n protected _getMonthAsDate(month: number): Date {\n return createNormalizedDate(this._focusedYear(), month, 1);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addMonths(focusedDate, -monthsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addMonths(focusedDate, monthsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addMonths(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addMonths(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(focusedDate.getFullYear(), 0, focusedDate.getDate());\n break;\n case 'End':\n // eslint-disable-next-line no-magic-numbers\n focusedDate = new Date(focusedDate.getFullYear(), 11, focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n}\n","<div class=\"ids-month-selector__months-grid ids-calendar-grid\">\n @for (monthLabel of _monthLabels(); track $index; let month = $index) {\n @let isSelected = _isMonthSelected(month);\n @let isFocused = _isMonthFocused(month);\n @let isCurrentMonth = _isCurrentMonth(month);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isMonthDisabled(month);\n @let ariaLabel = _intl.getMonthAriaLabel(_getMonthAsDate(month));\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-month-selector__month-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentMonth\"\n [tabIndex]=\"tabIndex\"\n [class.ids-month-selector__month-button--current-month]=\"isCurrentMonth\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectMonth($event, month)\"\n >{{ monthLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addYears, clampDate, createNormalizedDate, isValidDate, positiveModulus } from '@i-cell/ids-angular/core';\n\nconst yearsPerRow = 4;\nconst yearsPerPage = 24;\n\n@Component({\n selector: 'ids-year-selector',\n imports: [],\n templateUrl: './year-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsYearSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-year-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsYearSelectorComponent extends IdsCalendarPage {\n private _firstYearOnPage = computed(() => {\n const focusedYear = this.focusedDate().getFullYear();\n const firstYearOffset = this._getFirstYearOffset(focusedYear, this.min()?.getFullYear(), this.max()?.getFullYear());\n const firstYearOnPage = focusedYear - firstYearOffset;\n\n return firstYearOnPage;\n });\n\n protected _years = computed(() => {\n const firstYearOnPage = this._firstYearOnPage();\n const years = Array.from({ length: yearsPerPage }).map((_nil, index) => firstYearOnPage + index);\n\n return years;\n });\n\n public override headerLabel = computed<string>(() => `${this._years()[0]} - ${this._years().at(-1)}`);\n\n public override hasPreviousPage(): boolean {\n const min = Number.isFinite(this.min()?.getFullYear()) ? this.min()!.getFullYear() : Number.POSITIVE_INFINITY;\n const firstYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() : Number.NEGATIVE_INFINITY;\n\n return firstYearOnPage > min;\n }\n\n public override gotoPreviousPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(createNormalizedDate(firstYearOnPage - 1, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n public override hasNextPage(): boolean {\n const max = Number.isFinite(this.max()?.getFullYear()) ? this.max()!.getFullYear() : Number.NEGATIVE_INFINITY;\n const lastYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() + yearsPerPage - 1 : Number.POSITIVE_INFINITY;\n\n return lastYearOnPage < max;\n }\n\n public override gotoNextPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(\n createNormalizedDate(firstYearOnPage + yearsPerPage, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n protected _selectYear(event: MouseEvent, year: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(year, currentFocusedDate.getMonth(), currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isYearFocused(year: number): boolean {\n return year === this.focusedDate().getFullYear();\n }\n\n protected _isYearSelected(year: number): boolean {\n return year === this.value()?.getFullYear();\n }\n\n protected _isCurrentYear(year: number): boolean {\n return year === new Date().getFullYear();\n }\n\n protected _isYearDisabled(year: number): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && year < min.getFullYear()) || (isValidDate(max) && year > max.getFullYear());\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addYears(focusedDate, -yearsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addYears(focusedDate, yearsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addYears(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(this._years()[0], focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'End':\n focusedDate = new Date(this._years().at(-1)!, focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -yearsPerPage);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, yearsPerPage);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _getFirstYearOffset(focusedYear: number, minYear?: number, maxYear: number = (yearsPerPage - 1)): number {\n // If we have a max year we calculate an offset so that the max year will be the last in the years list\n // Otherwise if we have a min year we calculate an offset so that the min year will be the first in the years list\n const minMaxOffset = maxYear - yearsPerPage + 1 || minYear || 0;\n return positiveModulus(focusedYear - minMaxOffset, yearsPerPage);\n }\n}\n","<div class=\"ids-year-selector__years-grid ids-calendar-grid\">\n @for (year of _years(); track $index) {\n @let isSelected = _isYearSelected(year);\n @let isFocused = _isYearFocused(year);\n @let isCurrentYear = _isCurrentYear(year);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isYearDisabled(year);\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-year-selector__year-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentYear\"\n [tabIndex]=\"tabIndex\"\n [class.ids-year-selector__year-button--current-year]=\"isCurrentYear\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectYear($event, year)\"\n >{{ year }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from './calendar-page';\n\nimport { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDaySelectorComponent } from '../day-selector/day-selector.component';\nimport { IdsMonthSelectorComponent } from '../month-selector/month-selector.component';\nimport { IdsDatepickerView, IdsDatepickerViewType } from '../tokens/datepicker-view';\nimport { IdsYearSelectorComponent } from '../year-selector/year-selector.component';\n\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, linkedSignal, OnInit, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IdsButtonComponent } from '@i-cell/ids-angular/button';\nimport { clampDate, ComponentBaseWithDefaults, IdsSize, IdsSizeType, isValidDate, startOfMonth, startOfYear } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-calendar',\n imports: [\n IdsButtonComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsDaySelectorComponent,\n IdsMonthSelectorComponent,\n IdsYearSelectorComponent,\n ],\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkTrapFocus],\n host: {\n 'class': 'ids-calendar-surface',\n },\n})\nexport class IdsCalendarComponent extends ComponentBaseWithDefaults<object> implements OnInit {\n protected readonly _defaultConfig = {};\n protected override get _hostName(): string {\n return 'calendar';\n }\n\n private _cdRef = inject(ChangeDetectorRef);\n private _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public size = input.required<IdsSizeType>();\n public view = input.required<IdsDatepickerViewType>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _calendarPage = viewChild(IdsCalendarPage);\n\n protected _view = linkedSignal(() => this.view());\n\n protected _hostClasses = computed(() => this._getHostClasses([this.size()]));\n\n protected _headerButtonSize = computed(() => (this.size() === IdsSize.DENSE ? IdsSize.COMPACT : this.size()));\n protected _headerLabel = computed<string>(() => this._calendarPage()?.headerLabel() ?? '');\n\n protected _prevPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.prevMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.prevYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.prevYearsPageLabel;\n }\n });\n\n protected _nextPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.nextMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.nextYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.nextYearsPageLabel;\n }\n });\n\n protected _switchViewLabel = computed<string>(() => (\n this._view() === IdsDatepickerView.DAY ? this._intl.switchToYearSelectorLabel : this._intl.switchToDaySelectorLabel\n ));\n\n protected _focusedDate: Date = new Date();\n\n public ngOnInit(): void {\n this._intl.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._cdRef.markForCheck());\n this._setFocusedDate(this.value());\n }\n\n protected _selectYear(selectedYear: Date): void {\n this._setFocusedDate(selectedYear);\n this.yearSelected.emit(startOfYear(selectedYear));\n this._view.set(IdsDatepickerView.MONTH);\n }\n\n protected _selectMonth(selectedMonth: Date): void {\n this._setFocusedDate(selectedMonth);\n this.monthSelected.emit(startOfMonth(selectedMonth));\n this._view.set(IdsDatepickerView.DAY);\n }\n\n protected _selectDate(date: Date): void {\n this.selected.emit(date);\n }\n\n protected _hasPrevPage(): boolean {\n return this._calendarPage()?.hasPreviousPage() ?? true;\n }\n\n protected _gotoPrevPage(): void {\n this._calendarPage()!.gotoPreviousPage();\n }\n\n protected _hasNextPage(): boolean {\n return this._calendarPage()?.hasNextPage() ?? true;\n }\n\n protected _gotoNextPage(): void {\n this._calendarPage()!.gotoNextPage();\n }\n\n protected _switchView(): void {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n this._view.set(IdsDatepickerView.YEAR);\n break;\n case IdsDatepickerView.YEAR:\n case IdsDatepickerView.MONTH:\n this._view.set(IdsDatepickerView.DAY);\n break;\n }\n }\n\n private _setFocusedDate(date: Date | null): void {\n const safeValue = isValidDate(date) ? date : new Date();\n this._focusedDate = clampDate(safeValue, this.min(), this.max());\n this._cdRef.markForCheck();\n }\n}\n","<div class=\"ids-calendar__header\">\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasPrevPage()\"\n [attr.aria-label]=\"_prevPageLabel()\"\n (click)=\"_gotoPrevPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-left\" [sizeCollection]=\"'big'\" />\n </button>\n <button\n type=\"button\"\n idsButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'text'\"\n [attr.aria-label]=\"_switchViewLabel()\"\n [attr.aria-description]=\"_headerLabel()\"\n (click)=\"_switchView()\"\n >\n {{ _headerLabel() }}\n <ids-icon icon-trailing aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-down\" />\n </button>\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasNextPage()\"\n [attr.aria-label]=\"_nextPageLabel()\"\n (click)=\"_gotoNextPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-right\" />\n </button>\n</div>\n@switch (_view()) {\n @case ('day') {\n <ids-day-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectDate($event)\" />\n }\n @case ('month') {\n <ids-month-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectMonth($event)\" />\n }\n @case ('year') {\n <ids-year-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectYear($event)\" />\n }\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const datepickerConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n];\n","import { IdsCalendarComponent } from './calendar/calendar.component';\nimport { IDS_DATEPICKER_DEFAULT_CONFIG, IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY, IdsDatepickerDefaultConfig } from './datepicker-defaults';\nimport { datepickerConnectedPositions } from './datepicker-positions';\nimport { IDS_DATE_FORMATTER } from './tokens/date-formatter';\nimport { IDS_DATE_PARSER } from './tokens/date-parser';\nimport { IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { afterNextRender, booleanAttribute, ComponentRef, Directive, effect, ElementRef, forwardRef, inject, Injector, input, OnChanges, output, signal, SimpleChanges, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport { compareDates, deserializeDate, DirectiveBaseWithDefaults, equalDates, getValidDateOrNull, isValidDate } from '@i-cell/ids-angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { filter, merge, Observable, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: 'input[idsDatepicker]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n ],\n host: {\n '(input)': '_handleInput($event.target.value)',\n '(blur)': '_handleBlur()',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'idsDatepicker',\n})\nexport class IdsDatepickerDirective extends DirectiveBaseWithDefaults<IdsDatepickerDefaultConfig>\n implements OnChanges, ControlValueAccessor, Validator {\n\n protected override _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DATEPICKER_DEFAULT_CONFIG);\n protected override _hostClasses = signal('');\n\n private _viewContainerRef = inject(ViewContainerRef);\n private _elementRef = inject(ElementRef);\n private _parent = inject(IdsFormFieldComponent);\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n\n public formatter = input(inject(IDS_DATE_FORMATTER));\n public parser = input(inject(IDS_DATE_PARSER));\n\n public view = input<IdsDatepickerViewType>(this._defaultConfig.view);\n public minDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n public maxDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n\n private _inputChanges = effect(() => {\n const min = this.minDate();\n const max = this.maxDate();\n const view = this.view();\n const size = this._parent.size();\n const calendar = this._componentRef?.instance;\n\n if (!calendar) {\n return;\n }\n\n if (!equalDates(min, calendar.min())) {\n this._componentRef?.setInput('min', min);\n }\n if (!equalDates(max, calendar.max())) {\n this._componentRef?.setInput('max', max);\n }\n if (view !== calendar.view()) {\n this._componentRef?.setInput('view', view);\n }\n if (size !== calendar.size()) {\n this._componentRef?.setInput('size', size);\n }\n });\n\n public openedInput = input<boolean, unknown>(false, { transform: booleanAttribute, alias: 'opened' });\n private _opened = signal(this.openedInput() ?? false);\n public opened = this._opened.asReadonly();\n\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _onValidatorChange: () => void = () => {};\n\n private _overlayRef: OverlayRef | null = null;\n private _componentRef: ComponentRef<IdsCalendarComponent> | null = null;\n private _scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n private _overlayCloseSub = Subscription.EMPTY;\n\n public get value(): Date | null {\n return deserializeDate(this._parent.controlDir()?.value);\n }\n\n private _isValid = signal(false);\n\n private _dateFormatValidator: ValidatorFn = (): ValidationErrors | null => (this._isValid() ? null : { idsDateFormat: true });\n\n private _minValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const min = this.minDate();\n return !min || !current || compareDates(min, current) <= 0 ? null : { 'idsDateMin': { min, current } };\n };\n\n private _maxValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const max = this.maxDate();\n return !max || !current || compareDates(max, current) >= 0 ? null : { 'idsDateMax': { max, current } };\n };\n\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n private _validator = Validators.compose([this._dateFormatValidator, this._minValidator, this._maxValidator]) as ValidatorFn;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('opened' in changes) {\n if (this.openedInput()) {\n this.open();\n } else {\n this.close();\n }\n }\n if (('minDate' in changes && !changes['minDate'].firstChange) || ('maxDate' in changes && !changes['maxDate'].firstChange)) {\n this._onValidatorChange();\n }\n }\n\n // #region Value accessor implementation\n public writeValue(obj: unknown): void {\n this._isValid.set(this._isValidValue(deserializeDate(obj)));\n this._setInputValue(obj);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n // #endregion\n\n // #region Validator implementation\n public validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n public registerOnValidatorChange?(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n // #endregion\n\n public open(): void {\n if (this.opened() || this._parent.disabled()) {\n return;\n }\n\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n\n this._overlayCloseSub = this._onOverlayClose(this._overlayRef).subscribe((event) => {\n event?.preventDefault();\n this.close();\n });\n this._onPageNavigationKeydown(this._overlayRef).subscribe((event) => event?.preventDefault());\n\n this._componentRef = this._overlayRef.attach(new ComponentPortal(IdsCalendarComponent, this._viewContainerRef));\n this._componentRef.setInput('value', this.value);\n this._componentRef.setInput('min', this.minDate());\n this._componentRef.setInput('max', this.maxDate());\n this._componentRef.setInput('view', this.view());\n this._componentRef.setInput('size', this._parent.size());\n\n this._componentRef.instance.selected.subscribe((selectedDate: Date) => {\n this._onChange(selectedDate);\n this._setInputValue(this.value);\n this._isValid.set(this._isValidValue(this.value));\n this._parent.controlDir()?.control?.updateValueAndValidity();\n this.close();\n });\n this._componentRef.instance.monthSelected.subscribe((selectedMonth: Date) => this.monthSelected.emit(selectedMonth));\n this._componentRef.instance.yearSelected.subscribe((selectedYear: Date) => this.yearSelected.emit(selectedYear));\n\n this._opened.set(true);\n }\n\n public close(): void {\n if (!this._opened()) {\n return;\n }\n\n this._overlayCloseSub.unsubscribe();\n this._overlayCloseSub = Subscription.EMPTY;\n\n this._disposeOverlay();\n\n this._opened.set(false);\n\n afterNextRender(() => this._elementRef.nativeElement.focus(), { injector: this._injector });\n }\n\n protected _handleInput(value: string): void {\n const parsed = this.parser()(value);\n this._isValid.set(this._isValidValue(parsed));\n\n const date = getValidDateOrNull(parsed);\n const valueChanged = !equalDates(date, this.value);\n\n if (!date || valueChanged) {\n this._onChange(date);\n }\n }\n\n protected _handleBlur(): void {\n this._onTouched();\n }\n\n protected _handleKeydown(event: KeyboardEvent): void {\n if (event.code === 'ArrowDown' && event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {\n this.open();\n }\n }\n\n private _isValidValue(value: unknown): boolean {\n return !value || isValidDate(value);\n }\n\n private _setInputValue(value: unknown): void {\n this._elementRef.nativeElement.value = isValidDate(value) ? this.formatter()(value) : '';\n }\n\n private _getOverlayConfig(): OverlayConfig {\n const overlayViewportMargin = 8;\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._parent.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(overlayViewportMargin)\n .withLockedPosition()\n .withPositions(datepickerConnectedPositions);\n\n return {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: [],\n direction: 'ltr',\n scrollStrategy: this._scrollStrategy,\n panelClass: 'ids-datepicker-panel',\n };\n }\n\n private _disposeOverlay(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n this._componentRef = null;\n }\n }\n\n private _onOverlayClose(overlayRef: OverlayRef): Observable<MouseEvent | KeyboardEvent | void> {\n return merge(\n overlayRef.backdropClick(),\n overlayRef.detachments(),\n overlayRef.keydownEvents().pipe(filter((event) => event.code === 'Escape' && !hasModifierKey(event))),\n );\n }\n\n private _onPageNavigationKeydown(overlayRef: OverlayRef): Observable<KeyboardEvent> {\n return overlayRef.keydownEvents().pipe(filter((event) => [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n ].includes(event.code)));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;AACO,MAAM,iBAAiB,GAAG;AAC/B,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;;;MCCD,kBAAkB,GAAG,IAAI,cAAc,CAAqB,kBAAkB,EAAE;AAC3F,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAA0B,UAAU;AAC9C,CAAA;;MCHY,eAAe,GAAG,IAAI,cAAc,CAAkB,eAAe,EAAE;AAClF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAuB,SAAS;AAC1C,CAAA;;ACJD,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC/G,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7E,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjG,MAAM,4BAA4B,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACzG,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;MAGrE,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAA,CAAA,OAAO,GAAkB,IAAI,OAAO,EAAQ;QAErD,IAAA,CAAA,kBAAkB,GAAG,eAAe;QAEpC,IAAA,CAAA,cAAc,GAAG,gBAAgB;QACjC,IAAA,CAAA,cAAc,GAAG,YAAY;QAE7B,IAAA,CAAA,aAAa,GAAG,eAAe;QAC/B,IAAA,CAAA,aAAa,GAAG,WAAW;QAE3B,IAAA,CAAA,kBAAkB,GAAG,mBAAmB;QACxC,IAAA,CAAA,kBAAkB,GAAG,eAAe;QAEpC,IAAA,CAAA,wBAAwB,GAAG,aAAa;QACxC,IAAA,CAAA,yBAAyB,GAAG,uBAAuB;AAyB3D,IAAA;AAvBQ,IAAA,eAAe,CAAC,IAAU,EAAA;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnD;AAEO,IAAA,aAAa,CAAC,IAAU,EAAA;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACjD;AAEO,IAAA,iBAAiB,CAAC,IAAU,EAAA;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACrD;AAEO,IAAA,yBAAyB,CAAC,IAAU,EAAA;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC7D;AAEO,IAAA,qBAAqB,CAAC,IAAU,EAAA;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnD;IAEU,WAAW,CAAC,IAAa,EAAE,UAA+B,EAAA;AAClE,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;IAC3D;8GAvCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCQrB,6BAA6B,CAAA;AAV1C,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEpC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,6CAA2B,KAAK,EAAE,KAAK,EAAA,CAAA,GAAA,CAAd,EAAE,KAAK,EAAE,KAAK,EAAE,GAAC;AACrE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,6CAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;AACvE,IAAA;8GANY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB1C,2iBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLI,gBAAgB,0IAChB,sBAAsB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMb,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB;wBACP,gBAAgB;wBAChB,sBAAsB;AACvB,qBAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2iBAAA,EAAA;;;MERpC,6BAA6B,GAAG,IAAI,cAAc,CAC7D,+BAA+B,EAC/B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,qCAAqC;AAC/C,CAAA;SAGa,qCAAqC,GAAA;IACnD,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,GAAG;KAC5B;AACH;;MCdsB,eAAe,CAAA;AAuBnC,IAAA,WAAA,GAAA;QAtBiB,IAAA,CAAA,uBAAuB,GAAG,8BAA8B;AAG/D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEpC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAc,IAAI,iDAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAQ;AACpC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAc,IAAI,+CAAC;AAC9B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAc,IAAI,+CAAC;QAE9B,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAQ;AAOb,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,IAAI,EAAE;QAGpC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC3F;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,mBAAmB,GAAA;QACzB,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAsB;YACrH,IAAI,gBAAgB,EAAE;gBACpB,gBAAgB,CAAC,KAAK,EAAE;YAC1B;QACF,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClC;8GAvCoB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACAD,MAAM,oBAAoB,GAAG,CAAC;AAC9B,MAAM,WAAW,GAAG,CAAC;AAmBf,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAjB5D,IAAA,WAAA,GAAA;;QAkBkB,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAS,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9G,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAO,MAAM,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,yDAAC;AACtE,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,0DAAC;AAC1E,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAO,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,sDAAC;AAErE,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,oBAAoB,CAAC,0DAAC;AACxF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,oBAAoB,CAAC,wDAAC;AAChG,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,iDAAC;AAEnF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAW,MAC5C,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAU,KAAK,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,0DAAC;AA6FxG,IAAA;IA3FiB,eAAe,GAAA;AAC7B,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,aAAa;QAEvC,OAAO,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C;IAEgB,gBAAgB,GAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9E;IAEgB,WAAW,GAAA;QACzB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,aAAa;QAEvC,OAAO,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC;IAC7C;IAEgB,YAAY,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF;IAEU,WAAW,CAAC,KAAiB,EAAE,IAAU,EAAA;QACjD,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;AAEU,IAAA,qBAAqB,CAAC,IAAU,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE;IAC5D;AAEU,IAAA,cAAc,CAAC,IAAU,EAAA;QACjC,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7C;AAEU,IAAA,eAAe,CAAC,IAAU,EAAA;QAClC,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACvC;AAEU,IAAA,eAAe,CAAC,IAAU,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACpH;AAEU,IAAA,YAAY,CAAC,IAAU,EAAA;QAC/B,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IACtC;AAEQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAEpC,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,SAAS;gBAEZ,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;gBAChD;AACF,YAAA,KAAK,WAAW;AAEd,gBAAA,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC;gBAC/C;AACF,YAAA,KAAK,WAAW;gBACd,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACtC;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrC;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,oBAAoB,CAAC;gBAC5D;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,oBAAoB,CAAC;gBAC1D;AACF,YAAA,KAAK,QAAQ;gBACX,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACxG;AACF,YAAA,KAAK,UAAU;gBACb,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtG;;QAGJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE;AAEQ,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC/C,QAAA,OAAO,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO;IAC5E;8GAxGW,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAXvB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,uBAAuB;AACrC,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBH,+yCA+BA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDNa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,EAAE,EAAA,aAAA,EAEI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAA,uBAAyB;AACrC,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,WAAW,EAAE,wBAAwB;AACtC,qBAAA,EAAA,QAAA,EAAA,+yCAAA,EAAA;;;AEhBH,MAAM,YAAY,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE;AAmBd,MAAO,yBAA0B,SAAQ,eAAe,CAAA;AAjB9D,IAAA,WAAA,GAAA;;AAkBY,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,wDAAC;AAEvE,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAK;YAClF,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;iBAC1C,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnG,YAAA,OAAO,WAAW;QACpB,CAAC,CAAC,CAAC,CAAC;AAEY,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAS,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,uDAAC;AA0GlF,IAAA;IAxGiB,eAAe,GAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnE,OAAO,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9C;IAEgB,gBAAgB,GAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACnF;IAEgB,WAAW,GAAA;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAEnE,OAAO,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3C;IAEgB,YAAY,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E;IAEU,YAAY,CAAC,KAAiB,EAAE,KAAa,EAAA;QACrD,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7C,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAEnH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxE;AAEU,IAAA,eAAe,CAAC,KAAa,EAAA;QACrC,OAAO,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAChD;AAEU,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE;QAE9C,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY,IAAI,KAAK,KAAK,aAAa;IACxE;AAEU,IAAA,eAAe,CAAC,KAAa,EAAA;QACrC,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC9F;AAEU,IAAA,gBAAgB,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3D,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACzF,aAAC,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1E;AAEU,IAAA,eAAe,CAAC,KAAa,EAAA;QACrC,OAAO,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D;AAEQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAEpC,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,SAAS;gBACZ,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC;gBACnD;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC;gBAClD;AACF,YAAA,KAAK,WAAW;gBACd,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACxC;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvC;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,WAAW,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC3E;AACF,YAAA,KAAK,KAAK;;AAER,gBAAA,WAAW,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC5E;AACF,YAAA,KAAK,QAAQ;gBACX,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACvC;AACF,YAAA,KAAK,UAAU;AACb,gBAAA,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtC;;QAGJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE;8GAnHW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAXzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,yBAAyB;AACvC,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBH,ymCAyBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDEa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,EAAE,EAAA,aAAA,EAEI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAA,yBAA2B;AACvC,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC7B,wBAAA,WAAW,EAAE,wBAAwB;AACtC,qBAAA,EAAA,QAAA,EAAA,ymCAAA,EAAA;;;AEpBH,MAAM,WAAW,GAAG,CAAC;AACrB,MAAM,YAAY,GAAG,EAAE;AAmBjB,MAAO,wBAAyB,SAAQ,eAAe,CAAA;AAjB7D,IAAA,WAAA,GAAA;;AAkBU,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;YACpD,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;AACnH,YAAA,MAAM,eAAe,GAAG,WAAW,GAAG,eAAe;AAErD,YAAA,OAAO,eAAe;AACxB,QAAA,CAAC,4DAAC;AAEQ,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE;YAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,eAAe,GAAG,KAAK,CAAC;AAEhG,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,kDAAC;QAEc,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAS,MAAM,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAiGtG,IAAA;IA/FiB,eAAe,GAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,iBAAiB;QAC7G,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,MAAM,CAAC,iBAAiB;QAErH,OAAO,eAAe,GAAG,GAAG;IAC9B;IAEgB,gBAAgB,GAAA;AAC9B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC/C,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE;QAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,eAAe,GAAG,CAAC,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9H;IAEgB,WAAW,GAAA;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,iBAAiB;AAC7G,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,iBAAiB;QAEvI,OAAO,cAAc,GAAG,GAAG;IAC7B;IAEgB,YAAY,GAAA;AAC1B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC/C,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE;QAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,oBAAoB,CAAC,eAAe,GAAG,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;IACtH;IAEU,WAAW,CAAC,KAAiB,EAAE,IAAY,EAAA;QACnD,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7C,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAE/G,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxE;AAEU,IAAA,cAAc,CAAC,IAAY,EAAA;QACnC,OAAO,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;IAClD;AAEU,IAAA,eAAe,CAAC,IAAY,EAAA;QACpC,OAAO,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE;IAC7C;AAEU,IAAA,cAAc,CAAC,IAAY,EAAA;QACnC,OAAO,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAC1C;AAEU,IAAA,eAAe,CAAC,IAAY,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACzG;AAEQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAEpC,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,SAAS;gBACZ,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;gBACjD;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;gBAChD;AACF,YAAA,KAAK,WAAW;gBACd,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACvC;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtC;AACF,YAAA,KAAK,MAAM;gBACT,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;gBACvF;AACF,YAAA,KAAK,KAAK;gBACR,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC5F;AACF,YAAA,KAAK,QAAQ;gBACX,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC;gBAClD;AACF,YAAA,KAAK,UAAU;AACb,gBAAA,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;gBACjD;;QAGJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE;IAEQ,mBAAmB,CAAC,WAAmB,EAAE,OAAgB,EAAE,WAAmB,YAAY,GAAG,CAAC,CAAC,EAAA;;;QAGrG,MAAM,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC;QAC/D,OAAO,eAAe,CAAC,WAAW,GAAG,YAAY,EAAE,YAAY,CAAC;IAClE;8GAhHW,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAXxB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,wBAAwB;AACtC,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBH,+7BAuBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDEa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAjBpC,SAAS;+BACE,mBAAmB,EAAA,OAAA,EACpB,EAAE,EAAA,aAAA,EAEI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAA,wBAA0B;AACtC,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,OAAO,EAAE,mBAAmB;AAC5B,wBAAA,WAAW,EAAE,wBAAwB;AACtC,qBAAA,EAAA,QAAA,EAAA,+7BAAA,EAAA;;;AEWG,MAAO,oBAAqB,SAAQ,yBAAiC,CAAA;AAlB3E,IAAA,WAAA,GAAA;;QAmBqB,IAAA,CAAA,cAAc,GAAG,EAAE;AAK9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAc,IAAI,iDAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAe;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAyB;AAC9C,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAc,IAAI,+CAAC;AAC9B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAc,IAAI,+CAAC;QAE9B,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAQ;QACzB,IAAA,CAAA,aAAa,GAAG,MAAM,EAAQ;QAC9B,IAAA,CAAA,YAAY,GAAG,MAAM,EAAQ;AAE5B,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,eAAe,yDAAC;QAExC,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAEvC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,wDAAC;AAElE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,6DAAC;AACnG,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,wDAAC;AAEhF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAS,MAAK;AAC/C,YAAA,QAAQ,IAAI,CAAC,KAAK,EAAE;gBAClB,KAAK,iBAAiB,CAAC,GAAG;AACxB,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc;gBAClC,KAAK,iBAAiB,CAAC,KAAK;AAC1B,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa;gBACjC,KAAK,iBAAiB,CAAC,IAAI;AACzB,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB;;AAE1C,QAAA,CAAC,0DAAC;AAEQ,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAS,MAAK;AAC/C,YAAA,QAAQ,IAAI,CAAC,KAAK,EAAE;gBAClB,KAAK,iBAAiB,CAAC,GAAG;AACxB,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc;gBAClC,KAAK,iBAAiB,CAAC,KAAK;AAC1B,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa;gBACjC,KAAK,iBAAiB,CAAC,IAAI;AACzB,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB;;AAE1C,QAAA,CAAC,0DAAC;AAEQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAS,OAC5C,IAAI,CAAC,KAAK,EAAE,KAAK,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CACpH,4DAAC;AAEQ,QAAA,IAAA,CAAA,YAAY,GAAS,IAAI,IAAI,EAAE;AAwD1C,IAAA;AA5GC,IAAA,IAAuB,SAAS,GAAA;AAC9B,QAAA,OAAO,UAAU;IACnB;IAoDO,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpC;AAEU,IAAA,WAAW,CAAC,YAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACzC;AAEU,IAAA,YAAY,CAAC,aAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC;IACvC;AAEU,IAAA,WAAW,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;IAEU,YAAY,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,eAAe,EAAE,IAAI,IAAI;IACxD;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,EAAG,CAAC,gBAAgB,EAAE;IAC1C;IAEU,YAAY,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI;IACpD;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,EAAG,CAAC,YAAY,EAAE;IACtC;IAEU,WAAW,GAAA;AACnB,QAAA,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,iBAAiB,CAAC,GAAG;gBACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACtC;YACF,KAAK,iBAAiB,CAAC,IAAI;YAC3B,KAAK,iBAAiB,CAAC,KAAK;gBAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBACrC;;IAEN;AAEQ,IAAA,eAAe,CAAC,IAAiB,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE;AACvD,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;IAC5B;8GA7GW,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmBG,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrDnD,2rDAkDA,4CD/BI,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,yBAAyB,+DACzB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAUf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EACf;wBACP,kBAAkB;wBAClB,gBAAgB;wBAChB,sBAAsB;wBACtB,uBAAuB;wBACvB,yBAAyB;wBACzB,wBAAwB;qBACzB,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,YAAY,CAAC,EAAA,IAAA,EACxB;AACJ,wBAAA,OAAO,EAAE,sBAAsB;AAChC,qBAAA,EAAA,QAAA,EAAA,2rDAAA,EAAA;;;AE9BI,MAAM,4BAA4B,GAAwB;AAC/D,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,+BAA+B;AAC5C,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,+BAA+B;AAC5C,KAAA;CACF;;ACbD,MAAM,aAAa,GAAG,qCAAqC,EAAE;AAuBvD,MAAO,sBAAuB,SAAQ,yBAAqD,CAAA;AArBjG,IAAA,WAAA,GAAA;;QAwBqB,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,6BAA6B,CAAC;AACrF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE,wDAAC;AAEpC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE7B,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,qDAAC;QAC7C,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,kDAAC;QAEvC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAwB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC7D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAI,SAAS,EAAE,CAAC,KAAc,KAAK,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAA,CAAA,GAAA,CAA3E,EAAE,SAAS,EAAE,CAAC,KAAc,KAAK,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAC;AACpG,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAI,SAAS,EAAE,CAAC,KAAc,KAAK,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAA,CAAA,GAAA,CAA3E,EAAE,SAAS,EAAE,CAAC,KAAc,KAAK,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAC;AAEnG,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,MAAK;AAClC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;YAE7C,IAAI,CAAC,QAAQ,EAAE;gBACb;YACF;YAEA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE;gBACpC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;YAC1C;YACA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE;gBACpC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;YAC1C;AACA,YAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;YAC5C;AACA,YAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;YAC5C;AACF,QAAA,CAAC,yDAAC;QAEK,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,KAAK,+CAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAA9C,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA,CAAA,CAAC;QAC7F,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QAElC,IAAA,CAAA,aAAa,GAAG,MAAM,EAAQ;QAC9B,IAAA,CAAA,YAAY,GAAG,MAAM,EAAQ;AAE5B,QAAA,IAAA,CAAA,SAAS,GAA6B,MAAK,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,kBAAkB,GAAe,MAAK,EAAE,CAAC;QAEzC,IAAA,CAAA,WAAW,GAAsB,IAAI;QACrC,IAAA,CAAA,aAAa,GAA8C,IAAI;QAC/D,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAE7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,KAAK;AAMrC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;QAExB,IAAA,CAAA,oBAAoB,GAAgB,OAAgC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAErH,IAAA,CAAA,aAAa,GAAgB,MAA8B;YACjE,MAAM,OAAO,GAAG,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;AACxG,QAAA,CAAC;QAEO,IAAA,CAAA,aAAa,GAAgB,MAA8B;YACjE,MAAM,OAAO,GAAG,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;AACxG,QAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAgB;AAqK5H,IAAA;AA1LC,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC;IAC1D;AAqBO,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,IAAI,CAAC,IAAI,EAAE;YACb;iBAAO;gBACL,IAAI,CAAC,KAAK,EAAE;YACd;QACF;AACA,QAAA,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,MAAM,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,EAAE;YAC1H,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;;AAGO,IAAA,UAAU,CAAC,GAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;IAC1B;AAEO,IAAA,gBAAgB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;;;AAIO,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACjC;AAEO,IAAA,yBAAyB,CAAE,EAAc,EAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;;IAGO,IAAI,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;YAC5C;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEjE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACjF,KAAK,EAAE,cAAc,EAAE;YACvB,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,cAAc,EAAE,CAAC;AAE7F,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/G,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,YAAkB,KAAI;AACpE,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE;YAC5D,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,aAAmB,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,YAAkB,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEhH,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,KAAK;QAE1C,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAEvB,eAAe,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7F;AAEU,IAAA,YAAY,CAAC,KAAa,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAE7C,QAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACvC,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAElD,QAAA,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtB;IACF;IAEU,WAAW,GAAA;QACnB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEU,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACrG,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEQ,IAAA,aAAa,CAAC,KAAc,EAAA;AAClC,QAAA,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC;IACrC;AAEQ,IAAA,cAAc,CAAC,KAAc,EAAA;QACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IAC1F;IAEQ,iBAAiB,GAAA;QACvB,MAAM,qBAAqB,GAAG,CAAC;AAC/B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;AACR,aAAA,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;aAC5D,qBAAqB,CAAC,yBAAyB;aAC/C,sBAAsB,CAAC,KAAK;aAC5B,kBAAkB,CAAC,qBAAqB;AACxC,aAAA,kBAAkB;aAClB,aAAa,CAAC,4BAA4B,CAAC;QAE9C,OAAO;YACL,gBAAgB;AAChB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,IAAI,CAAC,eAAe;AACpC,YAAA,UAAU,EAAE,sBAAsB;SACnC;IACH;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;IACF;AAEQ,IAAA,eAAe,CAAC,UAAsB,EAAA;AAC5C,QAAA,OAAO,KAAK,CACV,UAAU,CAAC,aAAa,EAAE,EAC1B,UAAU,CAAC,WAAW,EAAE,EACxB,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CACtG;IACH;AAEQ,IAAA,wBAAwB,CAAC,UAAsB,EAAA;AACrD,QAAA,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;YACvD,SAAS;YACT,WAAW;YACX,WAAW;YACX,YAAY;YACZ,QAAQ;YACR,UAAU;SACX,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1B;8GAtPW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAnBtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAQU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,mCAAmC;AAC9C,wBAAA,QAAQ,EAAE,eAAe;AACzB,wBAAA,WAAW,EAAE,wBAAwB;AACtC,qBAAA;AACD,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;;;ACtCD;;AAEG;;;;"}
1
+ {"version":3,"file":"i-cell-ids-angular-datepicker.mjs","sources":["../../../projects/widgets/datepicker/tokens/datepicker-view.ts","../../../projects/widgets/datepicker/tokens/date-formatter.ts","../../../projects/widgets/datepicker/tokens/date-parser.ts","../../../projects/widgets/datepicker/datepicker-intl.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.html","../../../projects/widgets/datepicker/datepicker-defaults.ts","../../../projects/widgets/datepicker/calendar/calendar-page.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.html","../../../projects/widgets/datepicker/month-selector/month-selector.component.ts","../../../projects/widgets/datepicker/month-selector/month-selector.component.html","../../../projects/widgets/datepicker/year-selector/year-selector.component.ts","../../../projects/widgets/datepicker/year-selector/year-selector.component.html","../../../projects/widgets/datepicker/calendar/calendar.component.ts","../../../projects/widgets/datepicker/calendar/calendar.component.html","../../../projects/widgets/datepicker/datepicker-positions.ts","../../../projects/widgets/datepicker/datepicker.directive.ts","../../../projects/widgets/datepicker/i-cell-ids-angular-datepicker.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IdsDatepickerView = {\n DAY: 'day',\n MONTH: 'month',\n YEAR: 'year',\n} as const;\n\nexport type IdsDatepickerViewType = (typeof IdsDatepickerView)[keyof typeof IdsDatepickerView];\n","import { InjectionToken } from '@angular/core';\nimport { formatDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateFormatterFn = (date: Date) => string;\n\nexport const IDS_DATE_FORMATTER = new InjectionToken<IdsDateFormatterFn>('idsDateFormatter', {\n providedIn: 'root',\n factory: (): IdsDateFormatterFn => formatDate,\n});\n","import { InjectionToken } from '@angular/core';\nimport { parseDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateParserFn = (value: string, utc?: boolean) => Date | null;\n\nexport const IDS_DATE_PARSER = new InjectionToken<IdsDateParserFn>('idsDateParser', {\n providedIn: 'root',\n factory: (): IdsDateParserFn => parseDate,\n});\n","import { Injectable } from '@angular/core';\nimport { isValidDate } from '@i-cell/ids-angular/core';\nimport { Subject } from 'rxjs';\n\nconst dayAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long', day: 'numeric' });\nconst monthLabelFormat = new Intl.DateTimeFormat('en-GB', { month: 'short' });\nconst monthAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst daySelectorHeaderLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst weekdayLabelFormat = new Intl.DateTimeFormat('en-GB', { weekday: 'narrow' });\n\n@Injectable({ providedIn: 'root' })\nexport class IdsDatepickerIntl {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public triggerButtonLabel = 'Open calendar';\n\n public prevMonthLabel = 'Previous month';\n public nextMonthLabel = 'Next month';\n\n public prevYearLabel = 'Previous year';\n public nextYearLabel = 'Next year';\n\n public prevYearsPageLabel = 'Previous 24 years';\n public nextYearsPageLabel = 'Next 24 years';\n\n public switchToDaySelectorLabel = 'Choose date';\n public switchToYearSelectorLabel = 'Choose year and month';\n\n public getDayAriaLabel(date: Date): string | null {\n return this._formatDate(date, dayAriaLabelFormat);\n }\n\n public getMonthLabel(date: Date): string | null {\n return this._formatDate(date, monthLabelFormat);\n }\n\n public getMonthAriaLabel(date: Date): string | null {\n return this._formatDate(date, monthAriaLabelFormat);\n }\n\n public getDaySelectorHeaderLabel(date: Date): string | null {\n return this._formatDate(date, daySelectorHeaderLabelFormat);\n }\n\n public getWeekdayHeaderLabel(date: Date): string | null {\n return this._formatDate(date, weekdayLabelFormat);\n }\n\n protected _formatDate(date: unknown, dateFormat: Intl.DateTimeFormat): string | null {\n return isValidDate(date) ? dateFormat.format(date) : null;\n }\n}\n","import { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDatepickerDirective } from '../datepicker.directive';\n\nimport { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-datepicker-trigger',\n imports: [\n IdsIconComponent,\n IdsIconButtonComponent,\n ],\n templateUrl: './datepicker-trigger.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsDatepickerTriggerComponent {\n protected _parent = inject(IdsFormFieldComponent);\n protected _intl = inject(IdsDatepickerIntl);\n\n public datepicker = input.required<IdsDatepickerDirective>({ alias: 'for' });\n public ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n public size = input<IdsSizeType>('dense');\n}\n","<button\n type=\"button\"\n idsIconButton\n allowCustomContent\n aria-haspopup=\"true\"\n [size]=\"size()\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ng-content select=\"[slot='icon']\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n </ng-content>\n</button>\n","import { IdsDatepickerView, IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsDatepickerDefaultConfig {\n view?: IdsDatepickerViewType,\n}\n\nexport const IDS_DATEPICKER_DEFAULT_CONFIG = new InjectionToken<IdsDatepickerDefaultConfig>(\n 'IDS_DATEPICKER_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY(): Required<IdsDatepickerDefaultConfig> {\n return {\n view: IdsDatepickerView.DAY,\n };\n}\n\n","import { IdsDatepickerIntl } from '../datepicker-intl';\n\nimport { afterNextRender, AfterViewInit, ChangeDetectorRef, Directive, ElementRef, inject, Injector, input, model, output, Signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\n@Directive()\nexport abstract class IdsCalendarPage implements AfterViewInit {\n private readonly _calendarButtonSelector = '.ids-calendar-button-focused';\n public abstract headerLabel: Signal<string>;\n\n protected _element = inject(ElementRef);\n private _injector = inject(Injector);\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public focusedDate = model.required<Date>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n\n public abstract hasPreviousPage(): boolean;\n public abstract gotoPreviousPage(): void;\n public abstract hasNextPage(): boolean;\n public abstract gotoNextPage(): void;\n\n protected readonly _today = new Date();\n\n constructor() {\n toObservable(this.focusedDate).pipe(takeUntilDestroyed()).subscribe(() => this._moveFocusToCurrent());\n this._intl.changes.pipe(takeUntilDestroyed()).subscribe(() => this._cdRef.markForCheck());\n }\n\n public ngAfterViewInit(): void {\n this._moveFocusToCurrent();\n }\n\n private _moveFocusToCurrent(): void {\n afterNextRender(() => {\n const focusedDayButton = this._element.nativeElement.querySelector(this._calendarButtonSelector) as HTMLButtonElement;\n if (focusedDayButton) {\n focusedDayButton.focus();\n }\n }, { injector: this._injector });\n }\n}\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addDays, addMonths, addYears, clampDate, compareDates, endOfMonth, endOfWeek, equalDates, getDatesBetween, isValidDate, startOfMonth, startOfWeek } from '@i-cell/ids-angular/core';\n\nconst firstDayOfWeekOffset = 1;\nconst daysPerWeek = 7;\n\n@Component({\n selector: 'ids-day-selector',\n imports: [],\n templateUrl: './day-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsDaySelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-day-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsDaySelectorComponent extends IdsCalendarPage {\n public override headerLabel = computed<string>(() => (this._intl.getDaySelectorHeaderLabel(this._currentMonth()) ?? ''));\n\n protected _currentMonth = computed<Date>(() => startOfMonth(this.focusedDate()));\n protected _previousMonth = computed<Date>(() => addMonths(this._currentMonth(), -1));\n protected _nextMonth = computed<Date>(() => addMonths(this._currentMonth(), 1));\n\n protected _gridStartDate = computed(() => startOfWeek(this._currentMonth(), firstDayOfWeekOffset));\n protected _gridEndDate = computed(() => endOfWeek(endOfMonth(this._currentMonth()), firstDayOfWeekOffset));\n protected _days = computed(() => getDatesBetween(this._gridStartDate(), this._gridEndDate()));\n\n protected _weekdayLabels = computed<string[]>(() =>\n this._days().slice(0, daysPerWeek).map((date: Date) => this._intl.getWeekdayHeaderLabel(date) ?? ''));\n\n public override hasPreviousPage(): boolean {\n const dayOnPrevPage = addDays(this._gridStartDate(), -1);\n const min = this.min() ?? dayOnPrevPage;\n\n return compareDates(dayOnPrevPage, min) > -1;\n }\n\n public override gotoPreviousPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth(), 0));\n }\n\n public override hasNextPage(): boolean {\n const dayOnNextPage = addDays(this._gridEndDate(), 1);\n const max = this.max() ?? dayOnNextPage;\n\n return compareDates(dayOnNextPage, max) < 1;\n }\n\n public override gotoNextPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));\n }\n\n protected _selectDate(event: MouseEvent, date: Date): void {\n event.stopPropagation();\n event.preventDefault();\n this.selected.emit(date);\n }\n\n protected _isDateInCurrentMonth(date: Date): boolean {\n return date.getMonth() === this._currentMonth().getMonth();\n }\n\n protected _isDateFocused(date: Date): boolean {\n return equalDates(date, this.focusedDate());\n }\n\n protected _isDateSelected(date: Date): boolean {\n return equalDates(date, this.value());\n }\n\n protected _isDateDisabled(date: Date): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && compareDates(date, min) === -1) || (isValidDate(max) && compareDates(date, max) === 1);\n }\n\n protected _isDateToday(date: Date): boolean {\n return equalDates(date, this._today);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n\n focusedDate = addDays(focusedDate, -daysPerWeek);\n break;\n case 'ArrowDown':\n\n focusedDate = addDays(focusedDate, daysPerWeek);\n break;\n case 'ArrowLeft':\n focusedDate = addDays(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addDays(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = startOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'End':\n focusedDate = endOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'PageUp':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, -1) : addMonths(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, 1) : addMonths(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _hasShiftModifierKey(event: KeyboardEvent): boolean {\n return event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey;\n }\n}\n","<div class=\"ids-day-selector__days-grid ids-calendar-grid\">\n @for (label of _weekdayLabels(); track $index) {\n <div class=\"ids-calendar-cell\">\n <span class=\"ids-day-selector__header--label ids-calendar-weekday-label\">{{ label }}</span>\n </div>\n }\n @for (day of _days(); track $index) {\n @let dayLabel = day.getDate();\n @let isSelected = _isDateSelected(day);\n @let isFocused = _isDateFocused(day);\n @let isToday = _isDateToday(day);\n @let isDisabled = _isDateDisabled(day) || !_isDateInCurrentMonth(day);\n @let tabIndex = isFocused ? 0 : -1;\n @let ariaLabel = _intl.getDayAriaLabel(day);\n <div class=\"ids-calendar-cell\" [class.ids-calendar-cell-selected]=\"isSelected\">\n <button\n type=\"button\"\n class=\"ids-day-selector__day-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isToday\"\n [tabIndex]=\"tabIndex\"\n [class.ids-calendar-button-today]=\"isToday\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectDate($event, day)\"\n >{{ dayLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { addMonths, addYears, clampDate, compareDates, createNormalizedDate, endOfMonth, isValidDate, startOfMonth } from '@i-cell/ids-angular/core';\nimport { map, startWith } from 'rxjs';\n\nconst monthsPerRow = 4;\nconst lastMonth = 11;\n\n@Component({\n selector: 'ids-month-selector',\n imports: [],\n templateUrl: './month-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsMonthSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-month-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsMonthSelectorComponent extends IdsCalendarPage {\n protected _focusedYear = computed<number>(() => this.focusedDate().getFullYear());\n\n protected _monthLabels = toSignal(this._intl.changes.pipe(startWith(null), map(() => {\n const currentYear = new Date().getFullYear();\n const monthLabels = Array.from({ length: 12 })\n .map((nil, month) => this._intl.getMonthLabel(createNormalizedDate(currentYear, month, 1)) ?? '');\n return monthLabels;\n })));\n\n public override headerLabel = computed<string>(() => String(this._focusedYear()));\n\n public override hasPreviousPage(): boolean {\n const min = this.min();\n\n if (!isValidDate(min)) {\n return true;\n }\n\n const startOfYear = createNormalizedDate(this._focusedYear(), 0, 1);\n\n return compareDates(min, startOfYear) === -1;\n }\n\n public override gotoPreviousPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() - 1, lastMonth, 1));\n }\n\n public override hasNextPage(): boolean {\n const max = this.max();\n\n if (!isValidDate(max)) {\n return true;\n }\n\n // eslint-disable-next-line no-magic-numbers\n const endOfYear = createNormalizedDate(this._focusedYear(), 11, 31);\n\n return compareDates(max, endOfYear) === 1;\n }\n\n public override gotoNextPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() + 1, 0, 1));\n }\n\n protected _selectMonth(event: MouseEvent, month: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(currentFocusedDate.getFullYear(), month, currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isMonthFocused(month: number): boolean {\n return month === this.focusedDate().getMonth();\n }\n\n protected _isMonthSelected(month: number): boolean {\n const selectedYear = this.value()?.getFullYear();\n const selectedMonth = this.value()?.getMonth();\n\n return this._focusedYear() === selectedYear && month === selectedMonth;\n }\n\n protected _isCurrentMonth(month: number): boolean {\n return this._focusedYear() === this._today.getFullYear() && month === this._today.getMonth();\n }\n\n protected _isMonthDisabled(month: number): boolean {\n const min = this.min();\n const max = this.max();\n const monthAsDate = new Date(this._focusedYear(), month, 1);\n\n return (isValidDate(min) && compareDates(endOfMonth(monthAsDate), startOfMonth(min)) === -1) ||\n (isValidDate(max) && compareDates(monthAsDate, endOfMonth(max)) === 1);\n }\n\n protected _getMonthAsDate(month: number): Date {\n return createNormalizedDate(this._focusedYear(), month, 1);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addMonths(focusedDate, -monthsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addMonths(focusedDate, monthsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addMonths(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addMonths(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(focusedDate.getFullYear(), 0, focusedDate.getDate());\n break;\n case 'End':\n // eslint-disable-next-line no-magic-numbers\n focusedDate = new Date(focusedDate.getFullYear(), 11, focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n}\n","<div class=\"ids-month-selector__months-grid ids-calendar-grid\">\n @for (monthLabel of _monthLabels(); track $index; let month = $index) {\n @let isSelected = _isMonthSelected(month);\n @let isFocused = _isMonthFocused(month);\n @let isCurrentMonth = _isCurrentMonth(month);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isMonthDisabled(month);\n @let ariaLabel = _intl.getMonthAriaLabel(_getMonthAsDate(month));\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-month-selector__month-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentMonth\"\n [tabIndex]=\"tabIndex\"\n [class.ids-month-selector__month-button--current-month]=\"isCurrentMonth\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectMonth($event, month)\"\n >{{ monthLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addYears, clampDate, createNormalizedDate, isValidDate, positiveModulus } from '@i-cell/ids-angular/core';\n\nconst yearsPerRow = 4;\nconst yearsPerPage = 24;\n\n@Component({\n selector: 'ids-year-selector',\n imports: [],\n templateUrl: './year-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsYearSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-year-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsYearSelectorComponent extends IdsCalendarPage {\n private _firstYearOnPage = computed(() => {\n const focusedYear = this.focusedDate().getFullYear();\n const firstYearOffset = this._getFirstYearOffset(focusedYear, this.min()?.getFullYear(), this.max()?.getFullYear());\n const firstYearOnPage = focusedYear - firstYearOffset;\n\n return firstYearOnPage;\n });\n\n protected _years = computed(() => {\n const firstYearOnPage = this._firstYearOnPage();\n const years = Array.from({ length: yearsPerPage }).map((_nil, index) => firstYearOnPage + index);\n\n return years;\n });\n\n public override headerLabel = computed<string>(() => `${this._years()[0]} - ${this._years().at(-1)}`);\n\n public override hasPreviousPage(): boolean {\n const min = Number.isFinite(this.min()?.getFullYear()) ? this.min()!.getFullYear() : Number.POSITIVE_INFINITY;\n const firstYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() : Number.NEGATIVE_INFINITY;\n\n return firstYearOnPage > min;\n }\n\n public override gotoPreviousPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(createNormalizedDate(firstYearOnPage - 1, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n public override hasNextPage(): boolean {\n const max = Number.isFinite(this.max()?.getFullYear()) ? this.max()!.getFullYear() : Number.NEGATIVE_INFINITY;\n const lastYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() + yearsPerPage - 1 : Number.POSITIVE_INFINITY;\n\n return lastYearOnPage < max;\n }\n\n public override gotoNextPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(\n createNormalizedDate(firstYearOnPage + yearsPerPage, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n protected _selectYear(event: MouseEvent, year: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(year, currentFocusedDate.getMonth(), currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isYearFocused(year: number): boolean {\n return year === this.focusedDate().getFullYear();\n }\n\n protected _isYearSelected(year: number): boolean {\n return year === this.value()?.getFullYear();\n }\n\n protected _isCurrentYear(year: number): boolean {\n return year === new Date().getFullYear();\n }\n\n protected _isYearDisabled(year: number): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && year < min.getFullYear()) || (isValidDate(max) && year > max.getFullYear());\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addYears(focusedDate, -yearsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addYears(focusedDate, yearsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addYears(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(this._years()[0], focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'End':\n focusedDate = new Date(this._years().at(-1)!, focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -yearsPerPage);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, yearsPerPage);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _getFirstYearOffset(focusedYear: number, minYear?: number, maxYear: number = (yearsPerPage - 1)): number {\n // If we have a max year we calculate an offset so that the max year will be the last in the years list\n // Otherwise if we have a min year we calculate an offset so that the min year will be the first in the years list\n const minMaxOffset = maxYear - yearsPerPage + 1 || minYear || 0;\n return positiveModulus(focusedYear - minMaxOffset, yearsPerPage);\n }\n}\n","<div class=\"ids-year-selector__years-grid ids-calendar-grid\">\n @for (year of _years(); track $index) {\n @let isSelected = _isYearSelected(year);\n @let isFocused = _isYearFocused(year);\n @let isCurrentYear = _isCurrentYear(year);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isYearDisabled(year);\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-year-selector__year-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentYear\"\n [tabIndex]=\"tabIndex\"\n [class.ids-year-selector__year-button--current-year]=\"isCurrentYear\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectYear($event, year)\"\n >{{ year }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from './calendar-page';\n\nimport { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDaySelectorComponent } from '../day-selector/day-selector.component';\nimport { IdsMonthSelectorComponent } from '../month-selector/month-selector.component';\nimport { IdsDatepickerView, IdsDatepickerViewType } from '../tokens/datepicker-view';\nimport { IdsYearSelectorComponent } from '../year-selector/year-selector.component';\n\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, linkedSignal, OnInit, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IdsButtonComponent } from '@i-cell/ids-angular/button';\nimport { clampDate, ComponentBaseWithDefaults, IdsSize, IdsSizeType, isValidDate, startOfMonth, startOfYear } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-calendar',\n imports: [\n IdsButtonComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsDaySelectorComponent,\n IdsMonthSelectorComponent,\n IdsYearSelectorComponent,\n ],\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkTrapFocus],\n host: {\n 'class': 'ids-calendar-surface',\n },\n})\nexport class IdsCalendarComponent extends ComponentBaseWithDefaults<object> implements OnInit {\n protected readonly _defaultConfig = {};\n protected override get _hostName(): string {\n return 'calendar';\n }\n\n private _cdRef = inject(ChangeDetectorRef);\n private _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public size = input.required<IdsSizeType>();\n public view = input.required<IdsDatepickerViewType>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _calendarPage = viewChild(IdsCalendarPage);\n\n protected _view = linkedSignal(() => this.view());\n\n protected _hostClasses = computed(() => this._getHostClasses([this.size()]));\n\n protected _headerButtonSize = computed(() => (this.size() === IdsSize.DENSE ? IdsSize.COMPACT : this.size()));\n protected _headerLabel = computed<string>(() => this._calendarPage()?.headerLabel() ?? '');\n\n protected _prevPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.prevMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.prevYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.prevYearsPageLabel;\n }\n });\n\n protected _nextPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.nextMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.nextYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.nextYearsPageLabel;\n }\n });\n\n protected _switchViewLabel = computed<string>(() => (\n this._view() === IdsDatepickerView.DAY ? this._intl.switchToYearSelectorLabel : this._intl.switchToDaySelectorLabel\n ));\n\n protected _focusedDate: Date = new Date();\n\n public ngOnInit(): void {\n this._intl.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._cdRef.markForCheck());\n this._setFocusedDate(this.value());\n }\n\n protected _selectYear(selectedYear: Date): void {\n this._setFocusedDate(selectedYear);\n this.yearSelected.emit(startOfYear(selectedYear));\n this._view.set(IdsDatepickerView.MONTH);\n }\n\n protected _selectMonth(selectedMonth: Date): void {\n this._setFocusedDate(selectedMonth);\n this.monthSelected.emit(startOfMonth(selectedMonth));\n this._view.set(IdsDatepickerView.DAY);\n }\n\n protected _selectDate(date: Date): void {\n this.selected.emit(date);\n }\n\n protected _hasPrevPage(): boolean {\n return this._calendarPage()?.hasPreviousPage() ?? true;\n }\n\n protected _gotoPrevPage(): void {\n this._calendarPage()!.gotoPreviousPage();\n }\n\n protected _hasNextPage(): boolean {\n return this._calendarPage()?.hasNextPage() ?? true;\n }\n\n protected _gotoNextPage(): void {\n this._calendarPage()!.gotoNextPage();\n }\n\n protected _switchView(): void {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n this._view.set(IdsDatepickerView.YEAR);\n break;\n case IdsDatepickerView.YEAR:\n case IdsDatepickerView.MONTH:\n this._view.set(IdsDatepickerView.DAY);\n break;\n }\n }\n\n private _setFocusedDate(date: Date | null): void {\n const safeValue = isValidDate(date) ? date : new Date();\n this._focusedDate = clampDate(safeValue, this.min(), this.max());\n this._cdRef.markForCheck();\n }\n}\n","<div class=\"ids-calendar__header\">\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasPrevPage()\"\n [attr.aria-label]=\"_prevPageLabel()\"\n (click)=\"_gotoPrevPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-left\" [sizeCollection]=\"'big'\" />\n </button>\n <button\n type=\"button\"\n idsButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'text'\"\n [attr.aria-label]=\"_switchViewLabel()\"\n [attr.aria-description]=\"_headerLabel()\"\n (click)=\"_switchView()\"\n >\n {{ _headerLabel() }}\n <ids-icon icon-trailing aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-down\" />\n </button>\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasNextPage()\"\n [attr.aria-label]=\"_nextPageLabel()\"\n (click)=\"_gotoNextPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-right\" />\n </button>\n</div>\n@switch (_view()) {\n @case ('day') {\n <ids-day-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectDate($event)\" />\n }\n @case ('month') {\n <ids-month-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectMonth($event)\" />\n }\n @case ('year') {\n <ids-year-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectYear($event)\" />\n }\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const datepickerConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n];\n","import { IdsCalendarComponent } from './calendar/calendar.component';\nimport { IDS_DATEPICKER_DEFAULT_CONFIG, IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY, IdsDatepickerDefaultConfig } from './datepicker-defaults';\nimport { datepickerConnectedPositions } from './datepicker-positions';\nimport { IDS_DATE_FORMATTER } from './tokens/date-formatter';\nimport { IDS_DATE_PARSER } from './tokens/date-parser';\nimport { IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { afterNextRender, booleanAttribute, ComponentRef, Directive, effect, ElementRef, forwardRef, inject, Injector, input, OnChanges, output, signal, SimpleChanges, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport { compareDates, deserializeDate, DirectiveBaseWithDefaults, equalDates, getValidDateOrNull, isValidDate } from '@i-cell/ids-angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { filter, merge, Observable, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: 'input[idsDatepicker]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n ],\n host: {\n '(input)': '_handleInput($event.target.value)',\n '(blur)': '_handleBlur()',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'idsDatepicker',\n})\nexport class IdsDatepickerDirective extends DirectiveBaseWithDefaults<IdsDatepickerDefaultConfig>\n implements OnChanges, ControlValueAccessor, Validator {\n\n protected override _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DATEPICKER_DEFAULT_CONFIG);\n protected override _hostClasses = signal('');\n\n private _viewContainerRef = inject(ViewContainerRef);\n private _elementRef = inject(ElementRef);\n private _parent = inject(IdsFormFieldComponent);\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n\n public formatter = input(inject(IDS_DATE_FORMATTER));\n public parser = input(inject(IDS_DATE_PARSER));\n\n public view = input<IdsDatepickerViewType>(this._defaultConfig.view);\n public minDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n public maxDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n\n private _inputChanges = effect(() => {\n const min = this.minDate();\n const max = this.maxDate();\n const view = this.view();\n const size = this._parent.size();\n const calendar = this._componentRef?.instance;\n\n if (!calendar) {\n return;\n }\n\n if (!equalDates(min, calendar.min())) {\n this._componentRef?.setInput('min', min);\n }\n if (!equalDates(max, calendar.max())) {\n this._componentRef?.setInput('max', max);\n }\n if (view !== calendar.view()) {\n this._componentRef?.setInput('view', view);\n }\n if (size !== calendar.size()) {\n this._componentRef?.setInput('size', size);\n }\n });\n\n public openedInput = input<boolean, unknown>(false, { transform: booleanAttribute, alias: 'opened' });\n private _opened = signal(this.openedInput() ?? false);\n public opened = this._opened.asReadonly();\n\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _onValidatorChange: () => void = () => {};\n\n private _overlayRef: OverlayRef | null = null;\n private _componentRef: ComponentRef<IdsCalendarComponent> | null = null;\n private _scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n private _overlayCloseSub = Subscription.EMPTY;\n\n public get value(): Date | null {\n return deserializeDate(this._parent.controlDir()?.value);\n }\n\n private _isValid = signal(false);\n\n private _dateFormatValidator: ValidatorFn = (): ValidationErrors | null => (this._isValid() ? null : { idsDateFormat: true });\n\n private _minValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const min = this.minDate();\n return !min || !current || compareDates(min, current) <= 0 ? null : { 'idsDateMin': { min, current } };\n };\n\n private _maxValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const max = this.maxDate();\n return !max || !current || compareDates(max, current) >= 0 ? null : { 'idsDateMax': { max, current } };\n };\n\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n private _validator = Validators.compose([this._dateFormatValidator, this._minValidator, this._maxValidator]) as ValidatorFn;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('opened' in changes) {\n if (this.openedInput()) {\n this.open();\n } else {\n this.close();\n }\n }\n if (('minDate' in changes && !changes['minDate'].firstChange) || ('maxDate' in changes && !changes['maxDate'].firstChange)) {\n this._onValidatorChange();\n }\n }\n\n // #region Value accessor implementation\n public writeValue(obj: unknown): void {\n this._isValid.set(this._isValidValue(deserializeDate(obj)));\n this._setInputValue(obj);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n // #endregion\n\n // #region Validator implementation\n public validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n public registerOnValidatorChange?(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n // #endregion\n\n public open(): void {\n if (this.opened() || this._parent.disabled()) {\n return;\n }\n\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n\n this._overlayCloseSub = this._onOverlayClose(this._overlayRef).subscribe((event) => {\n event?.preventDefault();\n this.close();\n });\n this._onPageNavigationKeydown(this._overlayRef).subscribe((event) => event?.preventDefault());\n\n this._componentRef = this._overlayRef.attach(new ComponentPortal(IdsCalendarComponent, this._viewContainerRef));\n this._componentRef.setInput('value', this.value);\n this._componentRef.setInput('min', this.minDate());\n this._componentRef.setInput('max', this.maxDate());\n this._componentRef.setInput('view', this.view());\n this._componentRef.setInput('size', this._parent.size());\n\n this._componentRef.instance.selected.subscribe((selectedDate: Date) => {\n this._onChange(selectedDate);\n this._setInputValue(this.value);\n this._isValid.set(this._isValidValue(this.value));\n this._parent.controlDir()?.control?.updateValueAndValidity();\n this.close();\n });\n this._componentRef.instance.monthSelected.subscribe((selectedMonth: Date) => this.monthSelected.emit(selectedMonth));\n this._componentRef.instance.yearSelected.subscribe((selectedYear: Date) => this.yearSelected.emit(selectedYear));\n\n this._opened.set(true);\n }\n\n public close(): void {\n if (!this._opened()) {\n return;\n }\n\n this._overlayCloseSub.unsubscribe();\n this._overlayCloseSub = Subscription.EMPTY;\n\n this._disposeOverlay();\n\n this._opened.set(false);\n\n afterNextRender(() => this._elementRef.nativeElement.focus(), { injector: this._injector });\n }\n\n protected _handleInput(value: string): void {\n const parsed = this.parser()(value);\n this._isValid.set(this._isValidValue(parsed));\n\n const date = getValidDateOrNull(parsed);\n const valueChanged = !equalDates(date, this.value);\n\n if (!date || valueChanged) {\n this._onChange(date);\n }\n }\n\n protected _handleBlur(): void {\n this._onTouched();\n }\n\n protected _handleKeydown(event: KeyboardEvent): void {\n if (event.code === 'ArrowDown' && event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {\n this.open();\n }\n }\n\n private _isValidValue(value: unknown): boolean {\n return !value || isValidDate(value);\n }\n\n private _setInputValue(value: unknown): void {\n this._elementRef.nativeElement.value = isValidDate(value) ? this.formatter()(value) : '';\n }\n\n private _getOverlayConfig(): OverlayConfig {\n const overlayViewportMargin = 8;\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._parent.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(overlayViewportMargin)\n .withLockedPosition()\n .withPositions(datepickerConnectedPositions);\n\n return {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: [],\n direction: 'ltr',\n scrollStrategy: this._scrollStrategy,\n panelClass: 'ids-datepicker-panel',\n };\n }\n\n private _disposeOverlay(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n this._componentRef = null;\n }\n }\n\n private _onOverlayClose(overlayRef: OverlayRef): Observable<MouseEvent | KeyboardEvent | void> {\n return merge(\n overlayRef.backdropClick(),\n overlayRef.detachments(),\n overlayRef.keydownEvents().pipe(filter((event) => event.code === 'Escape' && !hasModifierKey(event))),\n );\n }\n\n private _onPageNavigationKeydown(overlayRef: OverlayRef): Observable<KeyboardEvent> {\n return overlayRef.keydownEvents().pipe(filter((event) => [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n ].includes(event.code)));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, model, input, computed, contentChild, viewChild, effect, untracked, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
2
+ import { InjectionToken, model, input, viewChild, computed, contentChild, effect, untracked, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
3
  import { IdsSize, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';
4
4
  import * as i2 from '@angular/cdk/a11y';
5
5
  import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
@@ -75,9 +75,9 @@ class IdsOverlayPanelComponent extends ComponentBaseWithDefaults {
75
75
  this.variant = input(this._defaultConfig.variant, ...(ngDevMode ? [{ debugName: "variant" }] : []));
76
76
  this.panelClasses = input('', ...(ngDevMode ? [{ debugName: "panelClasses" }] : []));
77
77
  this.width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : []));
78
+ this.overlayDir = viewChild(CdkConnectedOverlay, ...(ngDevMode ? [{ debugName: "overlayDir" }] : []));
78
79
  this._hasCdkMenu = computed(() => !!this._cdkMenu(), ...(ngDevMode ? [{ debugName: "_hasCdkMenu" }] : []));
79
80
  this._cdkMenu = contentChild(CdkMenu, ...(ngDevMode ? [{ debugName: "_cdkMenu", descendants: true }] : [{ descendants: true }]));
80
- this._overlayRef = viewChild(CdkConnectedOverlay, ...(ngDevMode ? [{ debugName: "_overlayRef" }] : []));
81
81
  this._focusTrap = viewChild(CdkTrapFocus, ...(ngDevMode ? [{ debugName: "_focusTrap" }] : []));
82
82
  this._panelClasses = computed(() => this._getHostClasses([
83
83
  this.appearance(),
@@ -92,12 +92,12 @@ class IdsOverlayPanelComponent extends ComponentBaseWithDefaults {
92
92
  }
93
93
  });
94
94
  effect(() => {
95
- const overlayRef = this._overlayRef();
95
+ const overlayDir = this.overlayDir();
96
96
  const overlayWidth = this.width();
97
97
  // apply width after the overlay has been rendered
98
98
  untracked(() => {
99
- if (overlayRef && overlayWidth) {
100
- overlayRef.width = overlayWidth;
99
+ if (overlayDir && overlayWidth) {
100
+ overlayDir.width = overlayWidth;
101
101
  }
102
102
  });
103
103
  });
@@ -111,7 +111,7 @@ class IdsOverlayPanelComponent extends ComponentBaseWithDefaults {
111
111
  }
112
112
  }
113
113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsOverlayPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: IdsOverlayPanelComponent, isStandalone: true, selector: "ids-overlay-panel", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, origin: { classPropertyName: "origin", publicName: "origin", isSignal: true, isRequired: true, transformFunction: null }, positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, panelClasses: { classPropertyName: "panelClasses", publicName: "panelClasses", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, queries: [{ propertyName: "_cdkMenu", first: true, predicate: CdkMenu, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_overlayRef", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "_focusTrap", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: IdsOverlayPanelComponent, isStandalone: true, selector: "ids-overlay-panel", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, origin: { classPropertyName: "origin", publicName: "origin", isSignal: true, isRequired: true, transformFunction: null }, positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, panelClasses: { classPropertyName: "panelClasses", publicName: "panelClasses", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, queries: [{ propertyName: "_cdkMenu", first: true, predicate: CdkMenu, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "_focusTrap", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
115
115
  }
116
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsOverlayPanelComponent, decorators: [{
117
117
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-overlay-panel.mjs","sources":["../../../projects/widgets/overlay-panel/types/overlay-panel-appearance.type.ts","../../../projects/widgets/overlay-panel/types/overlay-panel-variant.type.ts","../../../projects/widgets/overlay-panel/overlay-positions.ts","../../../projects/widgets/overlay-panel/overlay-panel-defaults.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.html","../../../projects/widgets/overlay-panel/i-cell-ids-angular-overlay-panel.ts"],"sourcesContent":["export const IdsOverlayPanelAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n ELEVATED: 'elevated',\n} as const;\n\nexport type IdsOverlayPanelAppearanceType = (typeof IdsOverlayPanelAppearance)[keyof typeof IdsOverlayPanelAppearance];\n","export const IdsOverlayPanelVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsOverlayPanelVariantType = (typeof IdsOverlayPanelVariant)[keyof typeof IdsOverlayPanelVariant];\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const overlayConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n","import { overlayConnectedPositions } from './overlay-positions';\nimport { IdsOverlayPanelAppearance, IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariant, IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsOverlayPanelDefaultConfig {\n appearance?: IdsOverlayPanelAppearanceType,\n size?: IdsSizeType,\n variant?: IdsOverlayPanelVariantType,\n positions?: ConnectedPosition[],\n}\n\nexport const IDS_OVERLAY_PANEL_DEFAULT_CONFIG = new InjectionToken<IdsOverlayPanelDefaultConfig>(\n 'IDS_OVERLAY_PANEL_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY(): Required<IdsOverlayPanelDefaultConfig> {\n return {\n appearance: IdsOverlayPanelAppearance.FILLED,\n size: IdsSize.COMPACT,\n variant: IdsOverlayPanelVariant.LIGHT,\n positions: overlayConnectedPositions,\n };\n}\n\n","import {\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG,\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n IdsOverlayPanelDefaultConfig,\n} from './overlay-panel-defaults';\nimport { IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CdkMenu } from '@angular/cdk/menu';\nimport { OverlayModule, CdkOverlayOrigin, CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input, computed, contentChild,\n ElementRef,\n viewChild,\n untracked,\n effect,\n model,\n} from '@angular/core';\nimport { IdsSizeType, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-overlay-panel',\n imports: [\n OverlayModule,\n A11yModule,\n NgClass,\n ],\n templateUrl: './overlay-panel.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class IdsOverlayPanelComponent extends ComponentBaseWithDefaults<IdsOverlayPanelDefaultConfig> {\n protected override get _hostName(): string {\n return 'overlay-panel';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_OVERLAY_PANEL_DEFAULT_CONFIG);\n\n public open = model<boolean>(false);\n public origin = input.required<CdkOverlayOrigin | ElementRef>();\n public positions = input<ConnectedPosition[]>(this._defaultConfig.positions);\n\n public appearance = input<IdsOverlayPanelAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsOverlayPanelVariantType>(this._defaultConfig.variant);\n public panelClasses = input<string>('');\n public width = input<string | number>();\n\n protected _hasCdkMenu = computed(() => !!this._cdkMenu());\n\n private _cdkMenu = contentChild(CdkMenu, { descendants: true });\n private _overlayRef = viewChild(CdkConnectedOverlay);\n\n private _focusTrap = viewChild(CdkTrapFocus);\n\n constructor() {\n super();\n\n effect(() => {\n if (this._focusTrap()) {\n this._focusTrap()?.focusTrap.focusInitialElementWhenReady({ preventScroll: true });\n }\n });\n\n effect(() => {\n const overlayRef = this._overlayRef();\n const overlayWidth = this.width();\n\n // apply width after the overlay has been rendered\n untracked(() => {\n if (overlayRef && overlayWidth) {\n overlayRef.width = overlayWidth;\n }\n });\n });\n }\n\n public toggle(): void {\n this.open.update((open) => !open);\n }\n\n protected _close(): void {\n if (this.open()) {\n this.open.set(false);\n }\n }\n\n protected _panelClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n this._hasCdkMenu() ? 'has-menu' : null,\n ]),\n );\n\n protected _hostClasses = computed(() => '');\n}\n","<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-overlay-panel.mjs","sources":["../../../projects/widgets/overlay-panel/types/overlay-panel-appearance.type.ts","../../../projects/widgets/overlay-panel/types/overlay-panel-variant.type.ts","../../../projects/widgets/overlay-panel/overlay-positions.ts","../../../projects/widgets/overlay-panel/overlay-panel-defaults.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.ts","../../../projects/widgets/overlay-panel/overlay-panel.component.html","../../../projects/widgets/overlay-panel/i-cell-ids-angular-overlay-panel.ts"],"sourcesContent":["export const IdsOverlayPanelAppearance = {\n FILLED: 'filled',\n OUTLINED: 'outlined',\n ELEVATED: 'elevated',\n} as const;\n\nexport type IdsOverlayPanelAppearanceType = (typeof IdsOverlayPanelAppearance)[keyof typeof IdsOverlayPanelAppearance];\n","export const IdsOverlayPanelVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsOverlayPanelVariantType = (typeof IdsOverlayPanelVariant)[keyof typeof IdsOverlayPanelVariant];\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const overlayConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n];\n","import { overlayConnectedPositions } from './overlay-positions';\nimport { IdsOverlayPanelAppearance, IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariant, IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsOverlayPanelDefaultConfig {\n appearance?: IdsOverlayPanelAppearanceType,\n size?: IdsSizeType,\n variant?: IdsOverlayPanelVariantType,\n positions?: ConnectedPosition[],\n}\n\nexport const IDS_OVERLAY_PANEL_DEFAULT_CONFIG = new InjectionToken<IdsOverlayPanelDefaultConfig>(\n 'IDS_OVERLAY_PANEL_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY(): Required<IdsOverlayPanelDefaultConfig> {\n return {\n appearance: IdsOverlayPanelAppearance.FILLED,\n size: IdsSize.COMPACT,\n variant: IdsOverlayPanelVariant.LIGHT,\n positions: overlayConnectedPositions,\n };\n}\n\n","import {\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG,\n IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY,\n IdsOverlayPanelDefaultConfig,\n} from './overlay-panel-defaults';\nimport { IdsOverlayPanelAppearanceType } from './types/overlay-panel-appearance.type';\nimport { IdsOverlayPanelVariantType } from './types/overlay-panel-variant.type';\n\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CdkMenu } from '@angular/cdk/menu';\nimport { OverlayModule, CdkOverlayOrigin, CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input, computed, contentChild,\n ElementRef,\n viewChild,\n untracked,\n effect,\n model,\n} from '@angular/core';\nimport { IdsSizeType, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_OVERLAY_PANEL_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-overlay-panel',\n imports: [\n OverlayModule,\n A11yModule,\n NgClass,\n ],\n templateUrl: './overlay-panel.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class IdsOverlayPanelComponent extends ComponentBaseWithDefaults<IdsOverlayPanelDefaultConfig> {\n protected override get _hostName(): string {\n return 'overlay-panel';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_OVERLAY_PANEL_DEFAULT_CONFIG);\n\n public open = model<boolean>(false);\n public origin = input.required<CdkOverlayOrigin | ElementRef>();\n public positions = input<ConnectedPosition[]>(this._defaultConfig.positions);\n\n public appearance = input<IdsOverlayPanelAppearanceType>(this._defaultConfig.appearance);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsOverlayPanelVariantType>(this._defaultConfig.variant);\n public panelClasses = input<string>('');\n public width = input<string | number>();\n public readonly overlayDir = viewChild(CdkConnectedOverlay);\n\n protected _hasCdkMenu = computed(() => !!this._cdkMenu());\n private _cdkMenu = contentChild(CdkMenu, { descendants: true });\n private _focusTrap = viewChild(CdkTrapFocus);\n\n constructor() {\n super();\n\n effect(() => {\n if (this._focusTrap()) {\n this._focusTrap()?.focusTrap.focusInitialElementWhenReady({ preventScroll: true });\n }\n });\n\n effect(() => {\n const overlayDir = this.overlayDir();\n const overlayWidth = this.width();\n\n // apply width after the overlay has been rendered\n untracked(() => {\n if (overlayDir && overlayWidth) {\n overlayDir.width = overlayWidth;\n }\n });\n });\n }\n\n public toggle(): void {\n this.open.update((open) => !open);\n }\n\n protected _close(): void {\n if (this.open()) {\n this.open.set(false);\n }\n }\n\n protected _panelClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n this._hasCdkMenu() ? 'has-menu' : null,\n ]),\n );\n\n protected _hostClasses = computed(() => '');\n}\n","<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayOrigin]=\"origin()\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPanelClass]=\"_hostClasses()\"\n (overlayOutsideClick)=\"_close()\"\n (detach)=\"_close()\"\n>\n <div\n cdkTrapFocus\n [ngClass]=\"[panelClasses(), _panelClasses()]\"\n >\n <ng-content/>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ConnectedPosition, CdkOverlayOrigin } from '@angular/cdk/overlay';
1
+ import { ConnectedPosition, CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { InjectionToken, ElementRef } from '@angular/core';
4
4
  import { IdsSizeType, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';
@@ -36,9 +36,9 @@ declare class IdsOverlayPanelComponent extends ComponentBaseWithDefaults<IdsOver
36
36
  variant: _angular_core.InputSignal<IdsOverlayPanelVariantType>;
37
37
  panelClasses: _angular_core.InputSignal<string>;
38
38
  width: _angular_core.InputSignal<string | number | undefined>;
39
+ readonly overlayDir: _angular_core.Signal<CdkConnectedOverlay | undefined>;
39
40
  protected _hasCdkMenu: _angular_core.Signal<boolean>;
40
41
  private _cdkMenu;
41
- private _overlayRef;
42
42
  private _focusTrap;
43
43
  constructor();
44
44
  toggle(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@i-cell/ids-angular",
3
- "version": "0.2.21",
3
+ "version": "0.2.23",
4
4
  "private": false,
5
5
  "description": "i-Cell Design System UI Kit components for Angular",
6
6
  "publishConfig": {
@@ -73,6 +73,10 @@
73
73
  "types": "./card/index.d.ts",
74
74
  "default": "./fesm2022/i-cell-ids-angular-card.mjs"
75
75
  },
76
+ "./checkbox": {
77
+ "types": "./checkbox/index.d.ts",
78
+ "default": "./fesm2022/i-cell-ids-angular-checkbox.mjs"
79
+ },
76
80
  "./chip": {
77
81
  "types": "./chip/index.d.ts",
78
82
  "default": "./fesm2022/i-cell-ids-angular-chip.mjs"
@@ -101,18 +105,14 @@
101
105
  "types": "./icon/index.d.ts",
102
106
  "default": "./fesm2022/i-cell-ids-angular-icon.mjs"
103
107
  },
104
- "./icon-button": {
105
- "types": "./icon-button/index.d.ts",
106
- "default": "./fesm2022/i-cell-ids-angular-icon-button.mjs"
107
- },
108
- "./checkbox": {
109
- "types": "./checkbox/index.d.ts",
110
- "default": "./fesm2022/i-cell-ids-angular-checkbox.mjs"
111
- },
112
108
  "./menu": {
113
109
  "types": "./menu/index.d.ts",
114
110
  "default": "./fesm2022/i-cell-ids-angular-menu.mjs"
115
111
  },
112
+ "./icon-button": {
113
+ "types": "./icon-button/index.d.ts",
114
+ "default": "./fesm2022/i-cell-ids-angular-icon-button.mjs"
115
+ },
116
116
  "./notification": {
117
117
  "types": "./notification/index.d.ts",
118
118
  "default": "./fesm2022/i-cell-ids-angular-notification.mjs"
@@ -121,6 +121,10 @@
121
121
  "types": "./overlay-panel/index.d.ts",
122
122
  "default": "./fesm2022/i-cell-ids-angular-overlay-panel.mjs"
123
123
  },
124
+ "./paginator": {
125
+ "types": "./paginator/index.d.ts",
126
+ "default": "./fesm2022/i-cell-ids-angular-paginator.mjs"
127
+ },
124
128
  "./radio": {
125
129
  "types": "./radio/index.d.ts",
126
130
  "default": "./fesm2022/i-cell-ids-angular-radio.mjs"
@@ -129,14 +133,14 @@
129
133
  "types": "./segmented-control/index.d.ts",
130
134
  "default": "./fesm2022/i-cell-ids-angular-segmented-control.mjs"
131
135
  },
136
+ "./select": {
137
+ "types": "./select/index.d.ts",
138
+ "default": "./fesm2022/i-cell-ids-angular-select.mjs"
139
+ },
132
140
  "./segmented-control-toggle": {
133
141
  "types": "./segmented-control-toggle/index.d.ts",
134
142
  "default": "./fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs"
135
143
  },
136
- "./paginator": {
137
- "types": "./paginator/index.d.ts",
138
- "default": "./fesm2022/i-cell-ids-angular-paginator.mjs"
139
- },
140
144
  "./side-nav": {
141
145
  "types": "./side-nav/index.d.ts",
142
146
  "default": "./fesm2022/i-cell-ids-angular-side-nav.mjs"
@@ -145,18 +149,14 @@
145
149
  "types": "./side-sheet/index.d.ts",
146
150
  "default": "./fesm2022/i-cell-ids-angular-side-sheet.mjs"
147
151
  },
148
- "./select": {
149
- "types": "./select/index.d.ts",
150
- "default": "./fesm2022/i-cell-ids-angular-select.mjs"
152
+ "./spinner": {
153
+ "types": "./spinner/index.d.ts",
154
+ "default": "./fesm2022/i-cell-ids-angular-spinner.mjs"
151
155
  },
152
156
  "./snackbar": {
153
157
  "types": "./snackbar/index.d.ts",
154
158
  "default": "./fesm2022/i-cell-ids-angular-snackbar.mjs"
155
159
  },
156
- "./switch": {
157
- "types": "./switch/index.d.ts",
158
- "default": "./fesm2022/i-cell-ids-angular-switch.mjs"
159
- },
160
160
  "./tab": {
161
161
  "types": "./tab/index.d.ts",
162
162
  "default": "./fesm2022/i-cell-ids-angular-tab.mjs"
@@ -165,17 +165,17 @@
165
165
  "types": "./table/index.d.ts",
166
166
  "default": "./fesm2022/i-cell-ids-angular-table.mjs"
167
167
  },
168
- "./spinner": {
169
- "types": "./spinner/index.d.ts",
170
- "default": "./fesm2022/i-cell-ids-angular-spinner.mjs"
171
- },
172
- "./tag": {
173
- "types": "./tag/index.d.ts",
174
- "default": "./fesm2022/i-cell-ids-angular-tag.mjs"
168
+ "./switch": {
169
+ "types": "./switch/index.d.ts",
170
+ "default": "./fesm2022/i-cell-ids-angular-switch.mjs"
175
171
  },
176
172
  "./tooltip": {
177
173
  "types": "./tooltip/index.d.ts",
178
174
  "default": "./fesm2022/i-cell-ids-angular-tooltip.mjs"
175
+ },
176
+ "./tag": {
177
+ "types": "./tag/index.d.ts",
178
+ "default": "./fesm2022/i-cell-ids-angular-tag.mjs"
179
179
  }
180
180
  }
181
181
  }