igniteui-angular 21.0.11 → 21.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +7 -3
- package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-core.mjs +7 -3
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-time-picker.mjs +6 -1
- package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
- package/lib/core/styles/components/combo/_combo-theme.scss +2 -0
- package/lib/core/styles/components/grid/_grid-theme.scss +1 -0
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-time-picker.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-date-picker.mjs","sources":["../../../projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/predefined-ranges/predefined-ranges-area.component.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/predefined-ranges/predefined-ranges-area-component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/calendar-container/calendar-container.component.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/calendar-container/calendar-container.component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/public_api.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker-inputs.common.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.html","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.html","../../../projects/igniteui-angular/date-picker/src/date-range-picker/public_api.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.module.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.module.ts","../../../projects/igniteui-angular/date-picker/src/igniteui-angular-date-picker.ts"],"sourcesContent":["import {\n AfterContentChecked,\n AfterViewInit, booleanAttribute, ContentChildren, Directive, ElementRef, EventEmitter,\n inject,\n Input, LOCALE_ID, OnDestroy, Output, QueryList, ViewChild\n} from '@angular/core';\nimport { getLocaleFirstDayOfWeek } from \"@angular/common\";\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IGX_INPUT_GROUP_TYPE, IgxInputGroupComponent, IgxInputGroupType, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { DateRange, EditorProvider, IBaseCancelableBrowserEventArgs, IBaseEventArgs, IgxOverlayOutletDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IToggleView, OverlaySettings, PickerHeaderOrientation, PickerInteractionMode, WEEKDAYS } from 'igniteui-angular/core';\n\n@Directive()\nexport abstract class PickerBaseDirective implements IToggleView, EditorProvider, AfterViewInit, AfterContentChecked, OnDestroy {\n public element = inject(ElementRef);\n protected _localeId = inject<string>(LOCALE_ID);\n protected _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n \n /**\n * The editor's input mask.\n *\n * @remarks\n * Also used as a placeholder when none is provided.\n *\n * @example\n * ```html\n * <igx-date-picker inputFormat=\"dd/MM/yy\"></igx-date-picker>\n * ```\n */\n @Input()\n public inputFormat: string;\n\n /**\n * The format used to display the picker's value when it's not being edited.\n *\n * @remarks\n * Uses Angular's DatePipe.\n *\n * @example\n * ```html\n * <igx-date-picker displayFormat=\"EE/M/yy\"></igx-date-picker>\n * ```\n *\n */\n @Input()\n public displayFormat: string;\n\n /**\n * Sets the `placeholder` of the picker's input.\n *\n * @example\n * ```html\n * <igx-date-picker [placeholder]=\"'Choose your date'\"></igx-date-picker>\n * ```\n */\n @Input()\n public placeholder = '';\n\n /**\n * Can be `dropdown` with editable input field or `dialog` with readonly input field.\n *\n * @remarks\n * Default mode is `dropdown`\n *\n * @example\n * ```html\n * <igx-date-picker mode=\"dialog\"></igx-date-picker>\n * ```\n */\n @Input()\n public mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n\n /**\n * Gets/Sets the orientation of the `IgxDatePickerComponent` header.\n *\n * @example\n * ```html\n * <igx-date-picker headerOrientation=\"vertical\"></igx-date-picker>\n * ```\n */\n @Input()\n public headerOrientation: PickerHeaderOrientation = PickerHeaderOrientation.Horizontal;\n\n /**\n * Gets/Sets whether the header is hidden in dialog mode.\n *\n * @example\n * ```html\n * <igx-date-picker mode=\"dialog\" [hideHeader]=\"true\"></igx-date-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hideHeader = false;\n\n /**\n * Overlay settings used to display the pop-up element.\n *\n * @example\n * ```html\n * <igx-date-picker [overlaySettings]=\"customOverlaySettings\"></igx-date-picker>\n * ```\n */\n @Input()\n public overlaySettings: OverlaySettings;\n\n /**\n * Enables or disables the picker.\n *\n * @example\n * ```html\n * <igx-date-picker [disabled]=\"'true'\"></igx-date-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public disabled = false;\n\n /**\n * @example\n * ```html\n * <igx-date-picker locale=\"jp\"></igx-date-picker>\n * ```\n */\n /**\n * Gets the `locale` of the date-picker.\n * If not set, defaults to applciation's locale..\n */\n @Input()\n public get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the date-picker.\n * Expects a valid BCP 47 language tag.\n */\n public set locale(value: string) {\n this._locale = value;\n // if value is invalid, set it back to _localeId\n try {\n getLocaleFirstDayOfWeek(this._locale);\n } catch (e) {\n this._locale = this._localeId;\n }\n }\n\n /**\n * Gets the start day of the week.\n * Can return a numeric or an enum representation of the week day.\n * If not set, defaults to the first day of the week for the application locale.\n */\n @Input()\n public get weekStart(): WEEKDAYS | number {\n return this._weekStart ?? getLocaleFirstDayOfWeek(this._locale);\n }\n\n /**\n * Sets the start day of the week.\n * Can be assigned to a numeric value or to `WEEKDAYS` enum value.\n */\n public set weekStart(value: WEEKDAYS | number) {\n this._weekStart = value;\n }\n\n /**\n * The container used for the pop-up element.\n *\n * @example\n * ```html\n * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n * <!-- ... -->\n * <igx-date-picker [outlet]=\"outlet\"></igx-date-picker>\n * <!-- ... -->\n * ```\n */\n @Input()\n public outlet: IgxOverlayOutletDirective | ElementRef;\n\n /**\n * Determines how the picker's input will be styled.\n *\n * @remarks\n * Default is `box`.\n *\n * @example\n * ```html\n * <igx-date-picker [type]=\"'line'\"></igx-date-picker>\n * ```\n */\n @Input()\n public set type(val: IgxInputGroupType) {\n this._type = val;\n }\n public get type(): IgxInputGroupType {\n return this._type || this._inputGroupType;\n }\n\n /**\n * Gets/Sets the default template editor's tabindex.\n *\n * @example\n * ```html\n * <igx-date-picker [tabIndex]=\"1\"></igx-date-picker>\n * ```\n */\n @Input()\n public tabIndex: number | string;\n\n /**\n * Emitted when the calendar has started opening, cancelable.\n *\n * @example\n * ```html\n * <igx-date-picker (opening)=\"handleOpening($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public opening = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the calendar has opened.\n *\n * @example\n * ```html\n * <igx-date-picker (opened)=\"handleOpened($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public opened = new EventEmitter<IBaseEventArgs>();\n\n /**\n * Emitted when the calendar has started closing, cancelable.\n *\n * @example\n * ```html\n * <igx-date-picker (closing)=\"handleClosing($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public closing = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the calendar has closed.\n *\n * @example\n * ```html\n * <igx-date-picker (closed)=\"handleClosed($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public closed = new EventEmitter<IBaseEventArgs>();\n\n /** @hidden @internal */\n @ContentChildren(IgxPickerToggleComponent, { descendants: true })\n public toggleComponents: QueryList<IgxPickerToggleComponent>;\n\n /** @hidden @internal */\n @ContentChildren(IgxPickerClearComponent, { descendants: true })\n public clearComponents: QueryList<IgxPickerClearComponent>;\n\n @ContentChildren(IgxPrefixDirective, { descendants: true })\n protected prefixes: QueryList<IgxPrefixDirective>;\n\n @ContentChildren(IgxSuffixDirective, { descendants: true })\n protected suffixes: QueryList<IgxSuffixDirective>;\n\n @ViewChild(IgxInputGroupComponent)\n protected inputGroup: IgxInputGroupComponent;\n\n protected _locale: string;\n protected _collapsed = true;\n protected _type: IgxInputGroupType;\n protected _minValue: Date | string;\n protected _maxValue: Date | string;\n protected _weekStart: WEEKDAYS | number;\n protected abstract get toggleContainer(): HTMLElement | undefined;\n\n /**\n * Gets the picker's pop-up state.\n *\n * @example\n * ```typescript\n * const state = this.picker.collapsed;\n * ```\n */\n public get collapsed(): boolean {\n return this._collapsed;\n }\n\n /** @hidden @internal */\n public get isDropdown(): boolean {\n return this.mode === PickerInteractionMode.DropDown;\n }\n\n /**\n * Returns if there's focus within the picker's element OR popup container\n * @hidden @internal\n */\n public get isFocused(): boolean {\n const document = this.element.nativeElement?.getRootNode() as Document | ShadowRoot;\n if (!document?.activeElement) return false;\n\n return this.element.nativeElement.contains(document.activeElement)\n || !this.collapsed && this.toggleContainer.contains(document.activeElement);\n }\n\n protected _destroy$ = new Subject<void>();\n\n // D.P. EventEmitter<string | Date | DateRange | null> throws on strict checks for more restrictive overrides\n // w/ TS2416 Type 'string | Date ...' not assignable to type 'DateRange' due to observer method check\n public abstract valueChange: EventEmitter<any>;\n\n constructor() {\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n public ngAfterViewInit(): void {\n this.subToIconsClicked(this.toggleComponents, () => this.toggle());\n this.subToIconsClicked(this.clearComponents, () => this.clear());\n }\n\n /** @hidden @internal */\n public ngAfterContentChecked(): void {\n if (this.inputGroup && this.prefixes?.length > 0) {\n this.inputGroup.prefixes = this.prefixes;\n }\n\n if (this.inputGroup && this.suffixes?.length > 0) {\n this.inputGroup.suffixes = this.suffixes;\n }\n }\n\n /** @hidden @internal */\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /** Subscribes to the click events of toggle/clear icons in a query */\n private subToIconsClicked(\n components: QueryList<IgxPickerToggleComponent | IgxPickerClearComponent>,\n handler: () => void\n ): void {\n const subscribeToClick = componentList => {\n componentList.forEach(component => {\n component.clicked\n .pipe(takeUntil(merge(componentList.changes, this._destroy$)))\n .subscribe(handler);\n });\n };\n\n subscribeToClick(components);\n\n components.changes.pipe(takeUntil(this._destroy$))\n .subscribe(() => subscribeToClick(components));\n }\n\n public abstract select(value: Date | DateRange | string): void;\n public abstract open(settings?: OverlaySettings): void;\n public abstract toggle(settings?: OverlaySettings): void;\n public abstract close(): void;\n public abstract clear(): void;\n public abstract getEditElement(): HTMLInputElement;\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { CalendarDay, CustomDateRange, DateRange, DateRangePickerResourceStringsEN, IDateRangePickerResourceStrings } from 'igniteui-angular/core';\n\n\ntype PredefinedRangeKey = 'last7Days' | 'currentMonth' | 'last30Days' | 'yearToDate';\n\n@Component({\n selector: 'igx-predefined-ranges-area',\n standalone: true,\n imports: [IgxChipComponent],\n templateUrl: './predefined-ranges-area-component.html',\n styles: [`\n :host { display:block; }\n .igx-predefined-ranges {\n display:flex; flex-wrap:wrap; gap:.5rem; padding:.5rem .75rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IgxPredefinedRangesAreaComponent {\n @Input() public usePredefinedRanges = false;\n @Input() public customRanges: CustomDateRange[] = [];\n @Input() public resourceStrings: IDateRangePickerResourceStrings = DateRangePickerResourceStringsEN as any;\n\n @Output() public rangeSelect = new EventEmitter<DateRange>();\n\n public get ranges(): CustomDateRange[] {\n const base = this.usePredefinedRanges ? this.getPredefinedRanges() : [];\n return [...base, ...(this.customRanges ?? [])];\n }\n\n public trackByLabel = (i: number, r: CustomDateRange) => r.label;\n\n public onSelect(range: DateRange) {\n this.rangeSelect.emit(range);\n }\n\n private getLabel(rs: any, shortKey: string, prefixedKey: string, fallback: string): string {\n return rs?.[shortKey] ?? rs?.[prefixedKey] ?? fallback;\n }\n\n private getPredefinedRanges(): CustomDateRange[] {\n const today = CalendarDay.today;\n const rs: any = this.resourceStrings ?? {};\n\n const labels = {\n last7Days: this.getLabel(rs, 'last7Days', 'igx_date_range_picker_last7Days', 'Last 7 Days'),\n currentMonth: this.getLabel(rs, 'currentMonth', 'igx_date_range_picker_currentMonth', 'Current Month'),\n last30Days: this.getLabel(rs, 'last30Days', 'igx_date_range_picker_last30Days', 'Last 30 Days'),\n yearToDate: this.getLabel(rs, 'yearToDate', 'igx_date_range_picker_yearToDate', 'Year to Date')\n };\n\n const startOfMonth = new Date(today.native.getFullYear(), today.native.getMonth(), 1);\n const endOfMonth = new Date(today.native.getFullYear(), today.native.getMonth() + 1, 0);\n const startOfYear = new Date(today.native.getFullYear(), 0, 1);\n\n const predefinedRanges: { key: PredefinedRangeKey; get: () => { start: Date; end: Date } }[] = [\n { key: 'last7Days', get: () => ({ start: today.add('day', -7).native, end: today.native }) },\n { key: 'currentMonth', get: () => ({ start: startOfMonth, end: endOfMonth }) },\n { key: 'last30Days', get: () => ({ start: today.add('day', -29).native, end: today.native }) },\n { key: 'yearToDate', get: () => ({ start: startOfYear, end: today.native }) },\n ];\n\n return predefinedRanges.map(range => ({\n label: labels[range.key],\n dateRange: range.get()\n }));\n }\n}\n","<div class=\"igx-predefined-ranges\" role=\"group\" aria-label=\"Predefined ranges\">\n @for (r of ranges; track r.label) {\n <igx-chip (click)=\"onSelect(r.dateRange)\">\n {{ r.label }}\n </igx-chip>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ViewChild,\n Output, EventEmitter,\n HostListener,\n HostBinding\n} from '@angular/core';\nimport { IgxButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxCalendarComponent } from 'igniteui-angular/calendar';\nimport { IgxDividerDirective } from 'igniteui-angular/directives';\nimport { IBaseEventArgs, DateRange, CustomDateRange, PickerInteractionMode, IDateRangePickerResourceStrings, IgxPickerActionsDirective } from 'igniteui-angular/core';\nimport { IgxPredefinedRangesAreaComponent } from '../../date-range-picker/predefined-ranges/predefined-ranges-area.component';\n\n/** @hidden */\n@Component({\n selector: 'igx-calendar-container',\n styles: [':host {display: block;}'],\n templateUrl: 'calendar-container.component.html',\n imports: [\n IgxButtonDirective,\n IgxRippleDirective,\n IgxCalendarComponent,\n NgTemplateOutlet,\n IgxDividerDirective,\n IgxPredefinedRangesAreaComponent\n ]\n})\nexport class IgxCalendarContainerComponent {\n @ViewChild(IgxCalendarComponent, { static: true })\n public calendar: IgxCalendarComponent;\n\n @Output()\n public calendarClose = new EventEmitter<IBaseEventArgs>();\n\n @Output()\n public calendarCancel = new EventEmitter<IBaseEventArgs>();\n\n @Output()\n public todaySelection = new EventEmitter<IBaseEventArgs>();\n\n @Output()\n public rangeSelected = new EventEmitter<DateRange>();\n\n\n @HostBinding('class.igx-date-picker')\n public styleClass = 'igx-date-picker';\n\n @HostBinding('class.igx-date-picker--dropdown')\n public get dropdownCSS(): boolean {\n return this.mode === PickerInteractionMode.DropDown;\n }\n\n public usePredefinedRanges = false;\n public customRanges: CustomDateRange[] = [];\n public resourceStrings!: IDateRangePickerResourceStrings;\n public vertical = false;\n public closeButtonLabel: string;\n public cancelButtonLabel: string;\n public todayButtonLabel: string;\n public mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n public pickerActions: IgxPickerActionsDirective;\n\n @HostListener('keydown.alt.arrowup', ['$event'])\n public onEscape(event) {\n event.preventDefault();\n this.calendarClose.emit();\n }\n\n public get isReadonly() {\n return this.mode === PickerInteractionMode.Dialog;\n }\n}\n\n/** @hidden */\n\n","<ng-template #defaultPickerActions>\n @if (closeButtonLabel || cancelButtonLabel || todayButtonLabel) {\n <div class=\"igx-date-picker__buttons\">\n @if (cancelButtonLabel) {\n <button\n #cancelButton type=\"button\"\n igxButton=\"flat\" igxRipple\n (click)=\"calendarCancel.emit({ owner: this})\"\n >\n {{ cancelButtonLabel }}\n </button>\n }\n @if (closeButtonLabel) {\n <button\n #closeButton\n type=\"button\"\n igxButton=\"flat\"\n igxRipple\n (click)=\"calendarClose.emit({ owner: this})\"\n >\n {{ closeButtonLabel }}\n </button>\n }\n @if (todayButtonLabel) {\n <button\n #todayButton\n type=\"button\"\n igxButton=\"flat\"\n igxRipple\n (click)=\"todaySelection.emit({ owner: this })\"\n >\n {{ todayButtonLabel }}\n </button>\n }\n </div>\n }\n</ng-template>\n\n<igx-calendar></igx-calendar>\n @if( usePredefinedRanges || (customRanges?.length || 0) > 0 ){\n <igx-predefined-ranges-area\n [usePredefinedRanges]=\"usePredefinedRanges\"\n [customRanges]=\"customRanges\"\n [resourceStrings]=\"resourceStrings\"\n (rangeSelect)=\"rangeSelected.emit($event)\">\n </igx-predefined-ranges-area>\n }\n@if (pickerActions?.template || (closeButtonLabel || todayButtonLabel)) {\n <igx-divider></igx-divider>\n}\n@if (pickerActions?.template || (closeButtonLabel || cancelButtonLabel || todayButtonLabel)) {\n <div class=\"igx-date-picker__actions\">\n <ng-container\n *ngTemplateOutlet=\"\n pickerActions?.template || defaultPickerActions;\n context: { $implicit: calendar }\n \"\n >\n </ng-container>\n </div>\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n PipeTransform,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective,\n IFormattingViews, IFormattingOptions\n} from 'igniteui-angular/calendar';\nimport {\n IgxLabelDirective, IgxInputState, IgxInputGroupComponent, IgxPrefixDirective, IgxInputDirective, IgxSuffixDirective,\n IgxReadOnlyInputDirective\n} from 'igniteui-angular/input-group';\nimport { fromEvent, Subscription, noop, MonoTypeOperatorFunction } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { IgxDateTimeEditorDirective, IgxTextSelectionDirective } from 'igniteui-angular/directives';\nimport {\n AbsoluteScrollStrategy,\n AutoPositionStrategy,\n IgxOverlayService,\n OverlayCancelableEventArgs,\n OverlayEventArgs,\n OverlaySettings,\n IgxPickerActionsDirective,\n DatePickerResourceStringsEN,\n IDatePickerResourceStrings,\n DateRangeDescriptor,\n DateRangeType,\n IBaseCancelableBrowserEventArgs,\n isDate,\n PlatformUtil,\n getCurrentResourceStrings,\n PickerCalendarOrientation,\n DateTimeUtil,\n DatePartDeltas,\n DatePart,\n isDateInRanges,\n IgxOverlayOutletDirective\n} from 'igniteui-angular/core';\nimport { IDatePickerValidationFailedEventArgs } from './date-picker.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { PickerBaseDirective } from './picker-base.directive';\nimport { IgxCalendarContainerComponent } from './calendar-container/calendar-container.component';\n\nlet NEXT_ID = 0;\n\n/**\n * Date Picker displays a popup calendar that lets users select a single date.\n *\n * @igxModule IgxDatePickerModule\n * @igxTheme igx-calendar-theme, igx-icon-theme\n * @igxGroup Scheduling\n * @igxKeywords datepicker, calendar, schedule, date\n * @example\n * ```html\n * <igx-date-picker [(ngModel)]=\"selectedDate\"></igx-date-picker>\n * ```\n */\n@Component({\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxDatePickerComponent, multi: true },\n { provide: NG_VALIDATORS, useExisting: IgxDatePickerComponent, multi: true }\n ],\n selector: 'igx-date-picker',\n templateUrl: 'date-picker.component.html',\n styles: [':host { display: block; }'],\n imports: [\n IgxInputGroupComponent,\n IgxPrefixDirective,\n IgxIconComponent,\n IgxInputDirective,\n IgxReadOnlyInputDirective,\n IgxDateTimeEditorDirective,\n IgxTextSelectionDirective,\n IgxSuffixDirective\n ]\n})\nexport class IgxDatePickerComponent extends PickerBaseDirective implements ControlValueAccessor, Validator,\n OnInit, AfterViewInit, OnDestroy, AfterViewChecked, AfterContentChecked {\n private _overlayService = inject<IgxOverlayService>(IgxOverlayService);\n private _injector = inject(Injector);\n private _renderer = inject(Renderer2);\n private platform = inject(PlatformUtil);\n private cdr = inject(ChangeDetectorRef);\n\n\n /**\n * Gets/Sets whether the inactive dates will be hidden.\n *\n * @remarks\n * Applies to dates that are out of the current month.\n * Default value is `false`.\n * @example\n * ```html\n * <igx-date-picker [hideOutsideDays]=\"true\"></igx-date-picker>\n * ```\n * @example\n * ```typescript\n * let hideOutsideDays = this.datePicker.hideOutsideDays;\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hideOutsideDays: boolean;\n\n /**\n * Gets/Sets the number of month views displayed.\n *\n * @remarks\n * Default value is `1`.\n *\n * @example\n * ```html\n * <igx-date-picker [displayMonthsCount]=\"2\"></igx-date-picker>\n * ```\n * @example\n * ```typescript\n * let monthViewsDisplayed = this.datePicker.displayMonthsCount;\n * ```\n */\n @Input()\n public displayMonthsCount = 1;\n\n /**\n * Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.\n *\n * @example\n * <igx-date-picker orientation=\"vertical\"></igx-date-picker>\n */\n @Input()\n public orientation: PickerCalendarOrientation = PickerCalendarOrientation.Horizontal;\n\n /**\n * Show/hide week numbers\n *\n * @example\n * ```html\n * <igx-date-picker [showWeekNumbers]=\"true\"></igx-date-picker>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers: boolean;\n\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date, or the value of the picker, if set.\n */\n @Input()\n public get activeDate(): Date {\n const today = new Date(new Date().setHours(0, 0, 0, 0));\n const dateValue = DateTimeUtil.isValidDate(this._dateValue) ? new Date(this._dateValue.setHours(0, 0, 0, 0)) : null;\n return this._activeDate ?? dateValue ?? this._calendar?.activeDate ?? today;\n }\n\n public set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n /**\n * Gets/Sets a custom formatter function on the selected or passed date.\n *\n * @example\n * ```html\n * <igx-date-picker [value]=\"date\" [formatter]=\"formatter\"></igx-date-picker>\n * ```\n */\n @Input()\n public formatter: (val: Date) => string;\n\n /**\n * Gets/Sets the today button's label.\n *\n * @example\n * ```html\n * <igx-date-picker todayButtonLabel=\"Today\"></igx-date-picker>\n * ```\n */\n @Input()\n public todayButtonLabel: string;\n\n /**\n * Gets/Sets the cancel button's label.\n *\n * @example\n * ```html\n * <igx-date-picker cancelButtonLabel=\"Cancel\"></igx-date-picker>\n * ```\n */\n @Input()\n public cancelButtonLabel: string;\n\n /**\n * Specify if the currently spun date segment should loop over.\n *\n * @example\n * ```html\n * <igx-date-picker [spinLoop]=\"false\"></igx-date-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public spinLoop = true;\n\n /**\n * Delta values used to increment or decrement each editor date part on spin actions.\n * All values default to `1`.\n *\n * @example\n * ```html\n * <igx-date-picker [spinDelta]=\"{ date: 5, month: 2 }\"></igx-date-picker>\n * ```\n */\n @Input()\n public spinDelta: Pick<DatePartDeltas, 'date' | 'month' | 'year'>;\n\n /**\n * Gets/Sets the container used for the popup element.\n *\n * @remarks\n * `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.\n * @example\n * ```html\n * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n * //..\n * <igx-date-picker [outlet]=\"outlet\"></igx-date-picker>\n * //..\n * ```\n */\n @Input()\n public override outlet: IgxOverlayOutletDirective | ElementRef;\n\n /**\n * Gets/Sets the value of `id` attribute.\n *\n * @remarks If not provided it will be automatically generated.\n * @example\n * ```html\n * <igx-date-picker [id]=\"'igx-date-picker-3'\" cancelButtonLabel=\"cancel\" todayButtonLabel=\"today\"></igx-date-picker>\n * ```\n */\n @Input()\n @HostBinding('attr.id')\n public id = `igx-date-picker-${NEXT_ID++}`;\n\n //#region calendar members\n\n /**\n * Gets/Sets the format views of the `IgxDatePickerComponent`.\n *\n * @example\n * ```typescript\n * let formatViews = this.datePicker.formatViews;\n * this.datePicker.formatViews = {day:false, month: false, year:false};\n * ```\n */\n @Input()\n public formatViews: IFormattingViews;\n\n /**\n * Gets/Sets the disabled dates descriptors.\n *\n * @example\n * ```typescript\n * let disabledDates = this.datepicker.disabledDates;\n * this.datePicker.disabledDates = [ {type: DateRangeType.Weekends}, ...];\n * ```\n */\n @Input()\n public get disabledDates(): DateRangeDescriptor[] {\n return this._disabledDates;\n }\n public set disabledDates(value: DateRangeDescriptor[]) {\n this._disabledDates = value;\n this._onValidatorChange();\n }\n\n /**\n * Gets/Sets the special dates descriptors.\n *\n * @example\n * ```typescript\n * let specialDates = this.datepicker.specialDates;\n * this.datePicker.specialDates = [ {type: DateRangeType.Weekends}, ... ];\n * ```\n */\n @Input()\n public get specialDates(): DateRangeDescriptor[] {\n return this._specialDates;\n }\n public set specialDates(value: DateRangeDescriptor[]) {\n this._specialDates = value;\n }\n\n\n /**\n * Gets/Sets the format options of the `IgxDatePickerComponent`.\n *\n * @example\n * ```typescript\n * this.datePicker.calendarFormat = {day: \"numeric\", month: \"long\", weekday: \"long\", year: \"numeric\"};\n * ```\n */\n @Input()\n public calendarFormat: IFormattingOptions;\n\n //#endregion\n\n /**\n * Gets/Sets the selected date.\n *\n * @example\n * ```html\n * <igx-date-picker [value]=\"date\"></igx-date-picker>\n * ```\n */\n @Input()\n public get value(): Date | string {\n return this._value;\n }\n public set value(date: Date | string) {\n this._value = date;\n this.setDateValue(date);\n if (this.dateTimeEditor.value !== date) {\n this.dateTimeEditor.value = this._dateValue;\n }\n this.valueChange.emit(this.dateValue);\n this._onChangeCallback(this.dateValue);\n }\n\n /**\n * The minimum value the picker will accept.\n *\n * @example\n * <igx-date-picker [minValue]=\"minDate\"></igx-date-picker>\n */\n @Input()\n public set minValue(value: Date | string) {\n this._minValue = value;\n this._onValidatorChange();\n }\n\n public get minValue(): Date | string {\n return this._minValue;\n }\n\n /**\n * The maximum value the picker will accept.\n *\n * @example\n * <igx-date-picker [maxValue]=\"maxDate\"></igx-date-picker>\n */\n @Input()\n public set maxValue(value: Date | string) {\n this._maxValue = value;\n this._onValidatorChange();\n }\n\n public get maxValue(): Date | string {\n return this._maxValue;\n }\n\n /**\n * Gets/Sets the resource strings for the picker's default toggle icon.\n * By default it uses EN resources.\n */\n @Input()\n public resourceStrings: IDatePickerResourceStrings;\n\n /** @hidden @internal */\n @Input({ transform: booleanAttribute })\n public readOnly = false;\n\n /**\n * Emitted when the picker's value changes.\n *\n * @remarks\n * Used for `two-way` bindings.\n *\n * @example\n * ```html\n * <igx-date-picker [(value)]=\"date\"></igx-date-picker>\n * ```\n */\n @Output()\n public valueChange = new EventEmitter<Date>();\n\n /**\n * Emitted when the user types/spins invalid date in the date-picker editor.\n *\n * @example\n * ```html\n * <igx-date-picker (validationFailed)=\"onValidationFailed($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public validationFailed = new EventEmitter<IDatePickerValidationFailedEventArgs>();\n\n /** @hidden @internal */\n @ContentChild(IgxLabelDirective)\n public label: IgxLabelDirective;\n\n @ContentChild(IgxCalendarHeaderTitleTemplateDirective)\n private headerTitleTemplate: IgxCalendarHeaderTitleTemplateDirective;\n\n @ContentChild(IgxCalendarHeaderTemplateDirective)\n private headerTemplate: IgxCalendarHeaderTemplateDirective;\n\n @ViewChild(IgxDateTimeEditorDirective, { static: true })\n private dateTimeEditor: IgxDateTimeEditorDirective;\n\n @ViewChild(IgxInputGroupComponent, { read: ViewContainerRef })\n private viewContainerRef: ViewContainerRef;\n\n @ViewChild(IgxLabelDirective)\n private labelDirective: IgxLabelDirective;\n\n @ViewChild(IgxInputDirective)\n private inputDirective: IgxInputDirective;\n\n @ContentChild(IgxCalendarSubheaderTemplateDirective)\n private subheaderTemplate: IgxCalendarSubheaderTemplateDirective;\n\n @ContentChild(IgxPickerActionsDirective)\n private pickerActions: IgxPickerActionsDirective;\n\n private get dialogOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n }\n\n private get dropDownOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n }\n\n private get inputGroupElement(): HTMLElement {\n return this.inputGroup?.element.nativeElement;\n }\n\n private get dateValue(): Date {\n return this._dateValue;\n }\n\n private get pickerFormatViews(): IFormattingViews {\n return Object.assign({}, this._defFormatViews, this.formatViews);\n }\n\n private get pickerCalendarFormat(): IFormattingOptions {\n return Object.assign({}, this._calendarFormat, this.calendarFormat);\n }\n\n /** @hidden @internal */\n public displayValue: PipeTransform = { transform: (date: Date) => this.formatter(date) };\n\n private _resourceStrings = getCurrentResourceStrings(DatePickerResourceStringsEN);\n private _dateValue: Date;\n private _overlayId: string;\n private _value: Date | string;\n private _ngControl: NgControl = null;\n private _statusChanges$: Subscription;\n private _calendar: IgxCalendarComponent;\n private _calendarContainer?: HTMLElement;\n private _specialDates: DateRangeDescriptor[] = null;\n private _disabledDates: DateRangeDescriptor[] = null;\n private _activeDate: Date = null;\n private _overlaySubFilter:\n [MonoTypeOperatorFunction<OverlayEventArgs>,\n MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [\n filter(x => x.id === this._overlayId),\n takeUntil(this._destroy$)\n ];\n private _dropDownOverlaySettings: OverlaySettings = {\n target: this.inputGroupElement,\n closeOnOutsideClick: true,\n modal: false,\n closeOnEscape: true,\n scrollStrategy: new AbsoluteScrollStrategy(),\n positionStrategy: new AutoPositionStrategy({\n openAnimation: fadeIn,\n closeAnimation: fadeOut\n })\n };\n private _dialogOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: true,\n closeOnEscape: true\n };\n private _calendarFormat: IFormattingOptions = {\n day: 'numeric',\n month: 'short',\n weekday: 'short',\n year: 'numeric'\n };\n private _defFormatViews: IFormattingViews = {\n day: false,\n month: true,\n year: false\n };\n private _onChangeCallback: (_: Date) => void = noop;\n private _onTouchedCallback: () => void = noop;\n private _onValidatorChange: () => void = noop;\n\n constructor() {\n super();\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n public get required(): boolean {\n if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {\n // Run the validation with empty object to check if required is enabled.\n const error = this._ngControl.control.validator({} as AbstractControl);\n return error && error.required;\n }\n\n return false;\n }\n\n /** @hidden @internal */\n public get pickerResourceStrings(): IDatePickerResourceStrings {\n return Object.assign({}, this._resourceStrings, this.resourceStrings);\n }\n\n protected override get toggleContainer(): HTMLElement | undefined {\n return this._calendarContainer;\n }\n\n /** @hidden @internal */\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case this.platform.KEYMAP.ARROW_UP:\n if (event.altKey) {\n this.close();\n }\n break;\n case this.platform.KEYMAP.ARROW_DOWN:\n if (event.altKey) {\n this.open();\n }\n break;\n case this.platform.KEYMAP.SPACE:\n event.preventDefault();\n this.open();\n break;\n }\n }\n\n /**\n * Opens the picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.open()\">Open Dialog</button>\n * ```\n */\n public open(settings?: OverlaySettings): void {\n if (!this.collapsed || this.disabled || this.readOnly) {\n return;\n }\n\n const overlaySettings = Object.assign({}, this.isDropdown\n ? this.dropDownOverlaySettings\n : this.dialogOverlaySettings\n , settings);\n\n if (this.isDropdown && this.inputGroupElement) {\n overlaySettings.target = this.inputGroupElement;\n }\n if (this.outlet) {\n overlaySettings.outlet = this.outlet;\n }\n this._overlayId = this._overlayService\n .attach(IgxCalendarContainerComponent, this.viewContainerRef, overlaySettings);\n this._overlayService.show(this._overlayId);\n }\n\n /**\n * Toggles the picker's dropdown or dialog\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.toggle()\">Toggle Dialog</button>\n * ```\n */\n public toggle(settings?: OverlaySettings): void {\n if (this.collapsed) {\n this.open(settings);\n } else {\n this.close();\n }\n }\n\n /**\n * Closes the picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.close()\">Close Dialog</button>\n * ```\n */\n public close(): void {\n if (!this.collapsed) {\n this._overlayService.hide(this._overlayId);\n }\n }\n\n /**\n * Selects a date.\n *\n * @remarks Updates the value in the input field.\n *\n * @example\n * ```typescript\n * this.datePicker.select(date);\n * ```\n * @param date passed date that has to be set to the calendar.\n */\n public select(value: Date): void {\n this.value = value;\n }\n\n /**\n * Selects today's date and closes the picker.\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.selectToday()\">Select Today</button>\n * ```\n * */\n public selectToday(): void {\n const today = new Date();\n today.setHours(0);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n this.select(today);\n this.close();\n }\n\n /**\n * Clears the input field and the picker's value.\n *\n * @example\n * ```typescript\n * this.datePicker.clear();\n * ```\n */\n public clear(): void {\n if (!this.disabled || !this.readOnly) {\n this._calendar?.deselectDate();\n this.dateTimeEditor.clear();\n }\n }\n\n /**\n * Increment a specified `DatePart`.\n *\n * @param datePart The optional DatePart to increment. Defaults to Date.\n * @param delta The optional delta to increment by. Overrides `spinDelta`.\n * @example\n * ```typescript\n * this.datePicker.increment(DatePart.Date);\n * ```\n */\n public increment(datePart?: DatePart, delta?: number): void {\n this.dateTimeEditor.increment(datePart, delta);\n }\n\n /**\n * Decrement a specified `DatePart`\n *\n * @param datePart The optional DatePart to decrement. Defaults to Date.\n * @param delta The optional delta to decrement by. Overrides `spinDelta`.\n * @example\n * ```typescript\n * this.datePicker.decrement(DatePart.Date);\n * ```\n */\n public decrement(datePart?: DatePart, delta?: number): void {\n this.dateTimeEditor.decrement(datePart, delta);\n }\n\n //#region Control Value Accessor\n /** @hidden @internal */\n public writeValue(value: Date | string) {\n this._value = value;\n this.setDateValue(value);\n if (this.dateTimeEditor.value !== value) {\n this.dateTimeEditor.value = this._dateValue;\n }\n }\n\n /** @hidden @internal */\n public registerOnChange(fn: any) {\n this._onChangeCallback = fn;\n }\n\n /** @hidden @internal */\n public registerOnTouched(fn: any) {\n this._onTouchedCallback = fn;\n }\n\n /** @hidden @internal */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n //#endregion\n\n //#region Validator\n /** @hidden @internal */\n public registerOnValidatorChange(fn: any) {\n this._onValidatorChange = fn;\n }\n\n /** @hidden @internal */\n public validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n // InvalidDate handling\n if (isDate(control.value) && !DateTimeUtil.isValidDate(control.value)) {\n return { value: true };\n }\n\n const errors = {};\n const value = DateTimeUtil.isValidDate(control.value) ? control.value : DateTimeUtil.parseIsoDate(control.value);\n if (value && this.disabledDates && isDateInRanges(value, this.disabledDates)) {\n Object.assign(errors, { dateIsDisabled: true });\n }\n Object.assign(errors, DateTimeUtil.validateMinMax(value, this.minValue, this.maxValue, false));\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n //#endregion\n\n /** @hidden @internal */\n public ngOnInit(): void {\n this._ngControl = this._injector.get<NgControl>(NgControl, null);\n\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n public override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.subscribeToClick();\n this.subscribeToOverlayEvents();\n this.subscribeToDateEditorEvents();\n\n this._dropDownOverlaySettings.excludeFromOutsideClick = [this.inputGroup.element.nativeElement];\n\n fromEvent(this.inputDirective.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (this.collapsed) {\n this._onTouchedCallback();\n this.updateValidity();\n }\n });\n\n if (this._ngControl) {\n this._statusChanges$ =\n this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n if (this._ngControl.control.validator) {\n this.inputGroup.isRequired = this.required;\n this.cdr.detectChanges();\n }\n }\n }\n\n /** @hidden @internal */\n public ngAfterViewChecked() {\n if (this.labelDirective) {\n this._renderer.setAttribute(this.inputDirective.nativeElement, 'aria-labelledby', this.labelDirective.id);\n }\n }\n\n /** @hidden @internal */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this._statusChanges$) {\n this._statusChanges$.unsubscribe();\n }\n if (this._overlayId) {\n this._overlayService.detach(this._overlayId);\n delete this._overlayId;\n }\n }\n\n /** @hidden @internal */\n public getEditElement(): HTMLInputElement {\n return this.inputDirective.nativeElement;\n }\n\n private subscribeToClick() {\n fromEvent(this.getEditElement(), 'click')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.isDropdown) {\n this.toggle();\n }\n });\n }\n\n private setDateValue(value: Date | string) {\n if (isDate(value) && isNaN(value.getTime())) {\n this._dateValue = value;\n return;\n }\n this._dateValue = DateTimeUtil.isValidDate(value) ? value : DateTimeUtil.parseIsoDate(value);\n if (this._calendar) {\n this._calendar.selectDate(this._dateValue);\n this._calendar.activeDate = this.activeDate;\n this._calendar.viewDate = this.activeDate;\n this.cdr.detectChanges();\n }\n }\n\n private updateValidity() {\n // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526\n if (this._ngControl && !this.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators && this.inputGroup.isFocused) {\n this.inputDirective.valid = this._ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n this.inputDirective.valid = this._ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n this.inputDirective.valid = IgxInputState.INITIAL;\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this._ngControl.control.touched || this._ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this._ngControl.control.validator || !!this._ngControl.control.asyncValidator);\n }\n\n private onStatusChanged = () => {\n this.disabled = this._ngControl.disabled;\n this.updateValidity();\n this.inputGroup.isRequired = this.required;\n };\n\n private handleSelection(date: Date): void {\n if (this.dateValue && DateTimeUtil.isValidDate(this.dateValue)) {\n date.setHours(this.dateValue.getHours());\n date.setMinutes(this.dateValue.getMinutes());\n date.setSeconds(this.dateValue.getSeconds());\n date.setMilliseconds(this.dateValue.getMilliseconds());\n }\n this.value = date;\n if (this._calendar) {\n this._calendar.activeDate = this.activeDate;\n this._calendar.viewDate = this.activeDate;\n }\n this.close();\n }\n\n private subscribeToDateEditorEvents(): void {\n this.dateTimeEditor.valueChange.pipe(\n takeUntil(this._destroy$)).subscribe(val => {\n this.value = val;\n });\n this.dateTimeEditor.validationFailed.pipe(\n takeUntil(this._destroy$)).subscribe((event) => {\n this.validationFailed.emit({\n owner: this,\n prevValue: event.oldValue,\n currentValue: this.value\n });\n });\n }\n\n private subscribeToOverlayEvents() {\n this._overlayService.opening.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.opening.emit(args);\n e.cancel = args.cancel;\n if (args.cancel) {\n this._overlayService.detach(this._overlayId);\n return;\n }\n\n this._initializeCalendarContainer(e.componentRef.instance);\n this._calendarContainer = e.componentRef.location.nativeElement;\n this._collapsed = false;\n });\n\n this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {\n this.opened.emit({ owner: this });\n\n this._calendar.wrapper?.nativeElement?.focus();\n });\n\n this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.closing.emit(args);\n e.cancel = args.cancel;\n if (args.cancel) {\n return;\n }\n // do not focus the input if clicking outside in dropdown mode\n const outsideEvent = args.event && (args.event as KeyboardEvent).key !== this.platform.KEYMAP.ESCAPE;\n if (this.getEditElement() && !(outsideEvent && this.isDropdown)) {\n this.inputDirective.focus();\n } else {\n this._onTouchedCallback();\n this.updateValidity();\n }\n });\n\n this._overlayService.closed.pipe(...this._overlaySubFilter).subscribe(() => {\n this.closed.emit({ owner: this });\n this._overlayService.detach(this._overlayId);\n this._collapsed = true;\n this._overlayId = null;\n this._calendar = null;\n this._calendarContainer = undefined;\n });\n }\n\n private getMinMaxDates() {\n const minValue = DateTimeUtil.isValidDate(this.minValue) ? this.minValue : DateTimeUtil.parseIsoDate(this.minValue);\n const maxValue = DateTimeUtil.isValidDate(this.maxValue) ? this.maxValue : DateTimeUtil.parseIsoDate(this.maxValue);\n return { minValue, maxValue };\n }\n\n private setDisabledDates(): void {\n this._calendar.disabledDates = this.disabledDates ? [...this.disabledDates] : [];\n const { minValue, maxValue } = this.getMinMaxDates();\n if (minValue) {\n this._calendar.disabledDates.push({ type: DateRangeType.Before, dateRange: [minValue] });\n }\n if (maxValue) {\n this._calendar.disabledDates.push({ type: DateRangeType.After, dateRange: [maxValue] });\n }\n }\n\n private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {\n this._calendar = componentInstance.calendar;\n this._calendar.hasHeader = !this.isDropdown && !this.hideHeader;\n this._calendar.formatOptions = this.pickerCalendarFormat;\n this._calendar.formatViews = this.pickerFormatViews;\n this._calendar.locale = this.locale;\n this._calendar.weekStart = this.weekStart;\n this._calendar.specialDates = this.specialDates;\n this._calendar.headerTitleTemplate = this.headerTitleTemplate;\n this._calendar.headerTemplate = this.headerTemplate;\n this._calendar.subheaderTemplate = this.subheaderTemplate;\n this._calendar.headerOrientation = this.headerOrientation;\n this._calendar.hideOutsideDays = this.hideOutsideDays;\n this._calendar.monthsViewNumber = this.displayMonthsCount;\n this._calendar.showWeekNumbers = this.showWeekNumbers;\n this._calendar.orientation = this.orientation;\n this._calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date) => this.handleSelection(ev));\n this.setDisabledDates();\n\n if (DateTimeUtil.isValidDate(this.dateValue)) {\n // calendar will throw if the picker's value is InvalidDate #9208\n this._calendar.value = this.dateValue;\n }\n this._calendar.activeDate = this.activeDate;\n this._calendar.viewDate = this.activeDate;\n\n componentInstance.mode = this.mode;\n componentInstance.closeButtonLabel = this.cancelButtonLabel;\n componentInstance.todayButtonLabel = this.todayButtonLabel;\n componentInstance.pickerActions = this.pickerActions;\n\n componentInstance.calendarClose.pipe(takeUntil(this._destroy$)).subscribe(() => this.close());\n componentInstance.todaySelection.pipe(takeUntil(this._destroy$)).subscribe(() => this.selectToday());\n }\n}\n","<igx-input-group [type]=\"type\">\n @if (!toggleComponents.length) {\n <igx-prefix (click)=\"toggle()\">\n <igx-icon\n [title]=\"\n value\n ? pickerResourceStrings.igx_date_picker_change_date\n : pickerResourceStrings.igx_date_picker_choose_date\n \"\n family=\"default\"\n name=\"today\"\n >\n </igx-icon>\n </igx-prefix>\n }\n\n <input class=\"igx-date-picker__input-date\"\n [igxReadOnlyInput]=\"readOnly\"\n [displayValuePipe]=\"formatter ? displayValue : null\" igxInput\n [igxDateTimeEditor]=\"inputFormat\" [displayFormat]=\"displayFormat\"\n [minValue]=\"minValue\" [maxValue]=\"maxValue\" [spinDelta]=\"spinDelta\" [spinLoop]=\"spinLoop\"\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [readonly]=\"!isDropdown || readOnly\"\n [igxTextSelection]=\"isDropdown && !readOnly\" [locale]=\"locale\" [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-labelledby]=\"label?.id\" aria-haspopup=\"dialog\" aria-autocomplete=\"none\" role=\"combobox\">\n\n @if (!clearComponents.length && value) {\n <igx-suffix (click)=\"clear()\">\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n }\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n","import { IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxDatePickerComponent } from './date-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective } from 'igniteui-angular/calendar';\n\nexport * from './date-picker.common';\nexport * from './date-picker.component';\nexport * from './calendar-container/calendar-container.component';\nexport * from './picker-base.directive';\n\n/* NOTE: Date picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DATE_PICKER_DIRECTIVES = [\n IgxDatePickerComponent,\n IgxPickerToggleComponent,\n IgxPickerClearComponent,\n IgxPickerActionsDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective,\n IgxCalendarHeaderTemplateDirective,\n IgxCalendarSubheaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective\n] as const;\n","import { Component, ContentChild, Pipe, PipeTransform, Directive } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { IgxInputDirective, IgxInputGroupBase, IgxInputGroupComponent, IgxInputState, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxButtonDirective, IgxDateTimeEditorDirective } from 'igniteui-angular/directives';\nimport { isDate, DateRange, DateTimeUtil } from 'igniteui-angular/core';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/** @hidden @internal */\n@Pipe({\n name: 'dateRange',\n standalone: true\n})\nexport class DateRangePickerFormatPipe implements PipeTransform {\n public transform(values: DateRange, appliedFormat?: string,\n locale?: string, formatter?: (_: DateRange) => string): string {\n if (!values || !values.start && !values.end) {\n return '';\n }\n if (formatter) {\n return formatter(values);\n }\n let { start, end } = values;\n if (!isDate(start)) {\n start = DateTimeUtil.parseIsoDate(start);\n }\n if (!isDate(end)) {\n end = DateTimeUtil.parseIsoDate(end);\n }\n const startDate = appliedFormat ? DateTimeUtil.formatDate(start, appliedFormat, locale || 'en') : start?.toLocaleDateString();\n const endDate = appliedFormat ? DateTimeUtil.formatDate(end, appliedFormat, locale || 'en') : end?.toLocaleDateString();\n let formatted;\n if (start) {\n formatted = `${startDate} - `;\n if (end) {\n formatted += endDate;\n }\n }\n\n return formatted ? formatted : '';\n }\n}\n\n/** @hidden @internal */\n@Component({\n template: ``,\n selector: `igx-date-range-base`,\n providers: [{ provide: IgxInputGroupBase, useExisting: IgxDateRangeInputsBaseComponent }],\n standalone: true\n})\nexport class IgxDateRangeInputsBaseComponent extends IgxInputGroupComponent {\n @ContentChild(IgxDateTimeEditorDirective)\n public dateTimeEditor: IgxDateTimeEditorDirective;\n\n @ContentChild(IgxInputDirective)\n public inputDirective: IgxInputDirective;\n\n @ContentChild(NgControl)\n protected ngControl: NgControl;\n\n /** @hidden @internal */\n public get nativeElement() {\n return this.element.nativeElement;\n }\n\n /** @hidden @internal */\n public setFocus(): void {\n this.input.focus();\n }\n\n /** @hidden @internal */\n public updateInputValue(value: Date) {\n if (this.ngControl) {\n this.ngControl.control.setValue(value);\n } else {\n this.dateTimeEditor.value = value;\n }\n }\n\n /** @hidden @internal */\n public updateInputValidity(state: IgxInputState) {\n this.inputDirective.valid = state;\n }\n}\n\n/**\n * Defines the start input for a date range picker\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * When templating, start input has to be templated separately\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\">\n * <igx-date-range-start>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-start>\n * ...\n * </igx-date-range-picker>\n * ```\n */\n@Component({\n selector: 'igx-date-range-start',\n templateUrl: '../../../input-group/src/input-group/input-group.component.html',\n providers: [\n { provide: IgxInputGroupBase, useExisting: IgxDateRangeStartComponent },\n { provide: IgxDateRangeInputsBaseComponent, useExisting: IgxDateRangeStartComponent }\n ],\n imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxDateRangeStartComponent extends IgxDateRangeInputsBaseComponent { }\n\n/**\n * Defines the end input for a date range picker\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * When templating, end input has to be template separately\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\">\n * ...\n * <igx-date-range-end>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-end>\n * </igx-date-range-picker>\n * ```\n */\n@Component({\n selector: 'igx-date-range-end',\n templateUrl: '../../../input-group/src/input-group/input-group.component.html',\n providers: [\n { provide: IgxInputGroupBase, useExisting: IgxDateRangeEndComponent },\n { provide: IgxDateRangeInputsBaseComponent, useExisting: IgxDateRangeEndComponent }\n ],\n imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxDateRangeEndComponent extends IgxDateRangeInputsBaseComponent { }\n\n/**\n * Replaces the default separator `to` with the provided value\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @example\n * ```html\n * <igx-date-range-picker>\n * <igx-date-range-start>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-start>\n *\n * <ng-template igxDateRangeSeparator>-</ng-template>\n *\n * <igx-date-range-end>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-end>\n * ...\n * </igx-date-range-picker>\n * ```\n */\n@Directive({\n selector: '[igxDateRangeSeparator]',\n standalone: true\n})\nexport class IgxDateRangeSeparatorDirective { }\n","@if (isTypeBox) {\n <div class=\"igx-input-group__wrapper\">\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n}\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<!-- Dummy usage to satisfy Angular compiler -->\n<ng-template #dummy><span igxPrefix hidden></span></ng-template>\n\n<ng-template #uploadButton>\n @if (isFileType) {\n <div class=\"igx-input-group__upload-button igx-file-input__upload-button-wrapper\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"disabled\"\n class=\"igx-file-input__upload-button\"\n >\n {{ resourceStrings.igx_input_upload_button }}\n </button>\n </div>\n }\n</ng-template>\n\n<ng-template #files>\n @if (isFileType) {\n <div\n class=\"igx-input-group__file-input igx-file-input__file-names\"\n [title]=\"fileNames\"\n >\n <span>{{ fileNames }}</span>\n </div>\n }\n</ng-template>\n\n<ng-template #clear>\n @if (isFileType && isFilled) {\n <igx-suffix\n class=\"igx-input-group__clear-icon igx-file-input__clear-icon\"\n (click)=\"clearValueHandler()\"\n (keydown.Enter)=\"clearValueHandler()\"\n title=\"clear files\"\n tabindex=\"0\"\n >\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n }\n</ng-template>\n\n<ng-template #suffix>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container>\n <div class=\"igx-input-group__notch\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__filler\"></div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #bundle>\n @switch (theme) {\n @case ('bootstrap') {\n <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n }\n @case ('fluent') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @case ('indigo') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n }\n }\n</ng-template>\n","import { AfterViewInit, booleanAttribute, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Injector, Input, OnChanges, OnDestroy, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, inject } from '@angular/core';\nimport { NgTemplateOutlet, getLocaleFirstDayOfWeek } from '@angular/common';\nimport {\n AbstractControl, ControlValueAccessor, NgControl,\n NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator\n} from '@angular/forms';\n\nimport { fromEvent, merge, MonoTypeOperatorFunction, noop, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { CalendarSelection, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from 'igniteui-angular/calendar';\nimport {\n DateRangeDescriptor,\n DateRangeType,\n DateRangePickerResourceStringsEN,\n IDateRangePickerResourceStrings,\n clamp,\n IBaseCancelableBrowserEventArgs,\n isDate,\n parseDate,\n PlatformUtil,\n getCurrentResourceStrings,\n AutoPositionStrategy,\n IgxOverlayService,\n OverlayCancelableEventArgs,\n OverlayEventArgs,\n OverlaySettings,\n PositionSettings,\n calendarRange,\n CustomDateRange,\n DateRange,\n DateTimeUtil,\n IgxPickerActionsDirective,\n isDateInRanges,\n PickerCalendarOrientation,\n IgxOverlayOutletDirective\n} from 'igniteui-angular/core';\nimport { IgxCalendarContainerComponent } from '../date-picker/calendar-container/calendar-container.component';\nimport { PickerBaseDirective } from '../date-picker/picker-base.directive';\nimport {\n IgxInputDirective,\n IgxInputGroupComponent,\n IgxInputState,\n IgxLabelDirective,\n IgxSuffixDirective,\n IgxPrefixDirective,\n IgxReadOnlyInputDirective,\n IgxHintDirective\n} from 'igniteui-angular/input-group';\nimport {\n IgxDateRangeEndComponent,\n IgxDateRangeInputsBaseComponent,\n IgxDateRangeSeparatorDirective,\n IgxDateRangeStartComponent,\n DateRangePickerFormatPipe,\n} from './date-range-picker-inputs.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\n\nconst SingleInputDatesConcatenationString = ' - ';\n\n/**\n * Provides the ability to select a range of dates from a calendar UI or editable inputs.\n *\n * @igxModule IgxDateRangeModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * It displays the range selection in a single or two input fields.\n * The default template displays a single *readonly* input field\n * while projecting `igx-date-range-start` and `igx-date-range-end`\n * displays two *editable* input fields.\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\"></igx-date-range-picker>\n * ```\n */\n@Component({\n selector: 'igx-date-range-picker',\n templateUrl: './date-range-picker.component.html',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxDateRangePickerComponent, multi: true },\n { provide: NG_VALIDATORS, useExisting: IgxDateRangePickerComponent, multi: true }\n ],\n imports: [\n NgTemplateOutlet,\n IgxIconComponent,\n IgxInputGroupComponent,\n IgxInputDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxReadOnlyInputDirective,\n DateRangePickerFormatPipe\n ]\n})\nexport class IgxDateRangePickerComponent extends PickerBaseDirective\n implements OnChanges, OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\n protected platform = inject(PlatformUtil);\n private _injector = inject(Injector);\n private _cdr = inject(ChangeDetectorRef);\n private _overlayService = inject<IgxOverlayService>(IgxOverlayService);\n\n\n /**\n * The number of displayed month views.\n *\n * @remarks\n * Default is `2`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [displayMonthsCount]=\"3\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public get displayMonthsCount(): number {\n return this._displayMonthsCount;\n }\n\n public set displayMonthsCount(value: number) {\n this._displayMonthsCount = clamp(value, 1, 2);\n }\n\n /**\n * Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.\n *\n * @example\n * <igx-date-range-picker orientation=\"vertical\"></igx-date-range-picker>\n */\n @Input()\n public orientation: PickerCalendarOrientation = PickerCalendarOrientation.Horizontal;\n\n /**\n * Gets/Sets whether dates that are not part of the current month will be displayed.\n *\n * @remarks\n * Default value is `false`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [hideOutsideDays]=\"true\"></igx-date-range-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hideOutsideDays: boolean;\n\n /**\n * A custom formatter function, applied on the selected or passed in date.\n *\n * @example\n * ```typescript\n * private dayFormatter = new Intl.DateTimeFormat(\"en\", { weekday: \"long\" });\n * private monthFormatter = new Intl.DateTimeFormat(\"en\", { month: \"long\" });\n *\n * public formatter(date: Date): string {\n * return `${this.dayFormatter.format(date)} - ${this.monthFormatter.format(date)} - ${date.getFullYear()}`;\n * }\n * ```\n * ```html\n * <igx-date-range-picker [formatter]=\"formatter\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public formatter: (val: DateRange) => string;\n\n /**\n * Overrides the default text of the calendar dialog **Done** button.\n *\n * @remarks\n * Defaults to the value from resource strings, `\"Done\"` for the built-in EN.\n * The button will only show up in `dialog` mode.\n *\n * @example\n * ```html\n * <igx-date-range-picker doneButtonText=\"完了\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public set doneButtonText(value: string) {\n this._doneButtonText = value;\n }\n\n public get doneButtonText(): string {\n if (this._doneButtonText === null) {\n return this.resourceStrings.igx_date_range_picker_done_button;\n }\n return this._doneButtonText;\n }\n /**\n * Overrides the default text of the calendar dialog **Cancel** button.\n *\n * @remarks\n * Defaults to the value from resource strings, `\"Cancel\"` for the built-in EN.\n * The button will only show up in `dialog` mode.\n *\n * @example\n * ```html\n * <igx-date-range-picker cancelButtonText=\"取消\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public set cancelButtonText(value: string) {\n this._cancelButtonText = value;\n }\n\n public get cancelButtonText(): string {\n if (this._cancelButtonText === null) {\n return this.resourceStrings.igx_date_range_picker_cancel_button;\n }\n return this._cancelButtonText;\n }\n /**\n * Custom overlay settings that should be used to display the calendar.\n *\n * @example\n * ```html\n * <igx-date-range-picker [overlaySettings]=\"customOverlaySettings\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public override overlaySettings: OverlaySettings;\n\n /**\n * The format used when editable inputs are not focused.\n *\n * @remarks\n * Uses Angular's DatePipe.\n *\n * @example\n * ```html\n * <igx-date-range-picker displayFormat=\"EE/M/yy\"></igx-date-range-picker>\n * ```\n *\n */\n @Input()\n public override displayFormat: string;\n\n /**\n * The expected user input format and placeholder.\n *\n * @example\n * ```html\n * <igx-date-range-picker inputFormat=\"dd/MM/yy\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public override inputFormat: string;\n\n /**\n * The minimum value in a valid range.\n *\n * @example\n * <igx-date-range-picker [minValue]=\"minDate\"></igx-date-range-picker>\n */\n @Input()\n public set minValue(value: Date | string) {\n this._minValue = value;\n this.onValidatorChange();\n }\n\n public get minValue(): Date | string {\n return this._minValue;\n }\n\n /**\n * The maximum value in a valid range.\n *\n * @example\n * <igx-date-range-picker [maxValue]=\"maxDate\"></igx-date-range-picker>\n */\n @Input()\n public set maxValue(value: Date | string) {\n this._maxValue = value;\n this.onValidatorChange();\n }\n\n public get maxValue(): Date | string {\n return this._maxValue;\n }\n\n /**\n * Gets/Sets the disabled dates descriptors.\n *\n * @example\n * ```typescript\n * let disabledDates = this.dateRangePicker.disabledDates;\n * this.dateRangePicker.disabledDates = [ {type: DateRangeType.Weekends}, ...];\n * ```\n */\n @Input()\n public get disabledDates(): DateRangeDescriptor[] {\n return this._disabledDates;\n }\n public set disabledDates(value: DateRangeDescriptor[]) {\n this._disabledDates = value;\n this.onValidatorChange();\n }\n\n /**\n * Gets/Sets the special dates descriptors.\n *\n * @example\n * ```typescript\n * let specialDates = this.dateRangePicker.specialDates;\n * this.dateRangePicker.specialDates = [ {type: DateRangeType.Weekends}, ... ];\n * ```\n */\n @Input()\n public get specialDates(): DateRangeDescriptor[] {\n return this._specialDates;\n }\n public set specialDates(value: DateRangeDescriptor[]) {\n this._specialDates = value;\n }\n\n /**\n * An accessor that sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: IDateRangePickerResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * An accessor that returns the resource strings.\n */\n public get resourceStrings(): IDateRangePickerResourceStrings {\n return this._resourceStrings;\n }\n\n /**\n * Sets the `placeholder` for single-input `IgxDateRangePickerComponent`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [placeholder]=\"'Choose your dates'\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public override placeholder = '';\n\n /**\n * Gets/Sets the container used for the popup element.\n *\n * @remarks\n * `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.\n * @example\n * ```html\n * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n * //..\n * <igx-date-range-picker [outlet]=\"outlet\"></igx-date-range-picker>\n * //..\n * ```\n */\n @Input()\n public override outlet: IgxOverlayOutletDirective | ElementRef<any>;\n\n /**\n * Show/hide week numbers\n *\n * @remarks\n * Default is `false`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [showWeekNumbers]=\"true\"></igx-date-range-picker>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers = false;\n\n /** @hidden @internal */\n @Input({ transform: booleanAttribute })\n public readOnly = false;\n\n /**\n * Emitted when the picker's value changes. Used for two-way binding.\n *\n * @example\n * ```html\n * <igx-date-range-picker [(value)]=\"date\"></igx-date-range-picker>\n * ```\n */\n\n /**\n * Whether to render built-in predefined ranges.\n *\n * @example\n * ```html\n * <igx-date-range-picker [(usePredefinedRanges)]=\"true\"></igx-date-range-picker>\n * ``\n * */\n @Input() public usePredefinedRanges = false;\n\n /**\n * Custom ranges rendered as chips.\n *\n * @example\n * ```html\n * <igx-date-range-picker [(usePredefinedRanges)]=\"true\"></igx-date-range-picker>\n * ``\n */\n @Input() public customRanges: CustomDateRange[] = [];\n\n @Output()\n public valueChange = new EventEmitter<DateRange>();\n\n /** @hidden @internal */\n @HostBinding('class.igx-date-range-picker')\n public cssClass = 'igx-date-range-picker';\n\n @ViewChild(IgxInputGroupComponent, { read: ViewContainerRef })\n private viewContainerRef: ViewContainerRef;\n\n /** @hidden @internal */\n @ViewChild(IgxInputDirective)\n public inputDirective: IgxInputDirective;\n\n /** @hidden @internal */\n @ContentChildren(IgxDateRangeInputsBaseComponent)\n public projectedInputs: QueryList<IgxDateRangeInputsBaseComponent>;\n\n @ContentChild(IgxLabelDirective)\n public label: IgxLabelDirective;\n\n @ContentChild(IgxHintDirective)\n public hint: IgxHintDirective;\n\n @ContentChild(IgxPickerActionsDirective)\n public pickerActions: IgxPickerActionsDirective;\n\n /** @hidden @internal */\n @ContentChild(IgxDateRangeSeparatorDirective, { read: TemplateRef })\n public dateSeparatorTemplate: TemplateRef<any>;\n\n\n @ContentChild(IgxCalendarHeaderTitleTemplateDirective)\n private headerTitleTemplate: IgxCalendarHeaderTitleTemplateDirective;\n\n @ContentChild(IgxCalendarHeaderTemplateDirective)\n private headerTemplate: IgxCalendarHeaderTemplateDirective;\n\n @ContentChild(IgxCalendarSubheaderTemplateDirective)\n private subheaderTemplate: IgxCalendarSubheaderTemplateDirective;\n\n /** @hidden @internal */\n public get dateSeparator(): string {\n if (this._dateSeparator === null) {\n return this.resourceStrings.igx_date_range_picker_date_separator;\n }\n return this._dateSeparator;\n }\n\n /** @hidden @internal */\n public get appliedFormat(): string {\n return DateTimeUtil.getLocaleDateFormat(this.locale, this.displayFormat)\n || DateTimeUtil.DEFAULT_INPUT_FORMAT;\n }\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date, or the value of the picker, if set.\n */\n @Input()\n public get activeDate(): Date {\n const today = new Date(new Date().setHours(0, 0, 0, 0));\n const dateValue = DateTimeUtil.isValidDate(this._firstDefinedInRange) ? new Date(this._firstDefinedInRange.setHours(0, 0, 0, 0)) : null;\n return this._activeDate ?? dateValue ?? this._calendar?.activeDate ?? today;\n }\n\n public set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n /**\n * @example\n * ```html\n * <igx-date-range-picker locale=\"jp\"></igx-date-range-picker>\n * ```\n */\n /**\n * Gets the `locale` of the date-range-picker.\n * If not set, defaults to application's locale.\n */\n @Input()\n public override get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the date-picker.\n * Expects a valid BCP 47 language tag.\n */\n public override set locale(value: string) {\n this._locale = value;\n // if value is invalid, set it back to _localeId\n try {\n getLocaleFirstDayOfWeek(this._locale);\n } catch (e) {\n this._locale = this._localeId;\n }\n if (this.hasProjectedInputs) {\n this.updateInputLocale();\n this.updateDisplayFormat();\n }\n }\n\n /** @hidden @internal */\n public get singleInputFormat(): string {\n if (this.placeholder !== '') {\n return this.placeholder;\n }\n\n const format = this.appliedFormat;\n return `${format}${SingleInputDatesConcatenationString}${format}`;\n }\n\n /**\n * Gets calendar state.\n *\n * ```typescript\n * let state = this.dateRange.collapsed;\n * ```\n */\n public override get collapsed(): boolean {\n return this._collapsed;\n }\n\n /**\n * The currently selected value / range from the calendar\n *\n * @remarks\n * The current value is of type `DateRange`\n *\n * @example\n * ```typescript\n * const newValue: DateRange = { start: new Date(\"2/2/2012\"), end: new Date(\"3/3/2013\")};\n * this.dateRangePicker.value = newValue;\n * ```\n */\n public get value(): DateRange | null {\n return this._value;\n }\n\n @Input()\n public set value(value: DateRange | null) {\n this.updateValue(value);\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n\n /** @hidden @internal */\n public get hasProjectedInputs(): boolean {\n return this.projectedInputs?.length > 0;\n }\n\n /** @hidden @internal */\n public get separatorClass(): string {\n const classes = ['igx-date-range-picker__label'];\n if (this.hint) classes.push('input-has-hint');\n return classes.join(' ');\n }\n\n protected override get toggleContainer(): HTMLElement | undefined {\n return this._calendarContainer;\n }\n\n private get required(): boolean {\n if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {\n const error = this._ngControl.control.validator({} as AbstractControl);\n return (error && error.required) ? true : false;\n }\n\n return false;\n }\n\n private get calendar(): IgxCalendarComponent {\n return this._calendar;\n }\n\n private get dropdownOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n }\n\n private get dialogOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n }\n\n private get _firstDefinedInRange(): Date | null {\n if (!this.value) {\n return null;\n }\n const range = this.toRangeOfDates(this.value);\n return range?.start ?? range?.end ?? null;\n }\n\n private _resourceStrings = getCurrentResourceStrings(DateRangePickerResourceStringsEN);\n private _doneButtonText = null;\n private _cancelButtonText = null;\n private _dateSeparator = null;\n private _value: DateRange | null;\n private _originalValue: DateRange | null;\n private _overlayId: string;\n private _ngControl: NgControl;\n private _statusChanges$: Subscription;\n private _calendar: IgxCalendarComponent;\n private _calendarContainer?: HTMLElement;\n private _positionSettings: PositionSettings;\n private _focusedInput: IgxDateRangeInputsBaseComponent;\n private _displayMonthsCount = 2;\n private _specialDates: DateRangeDescriptor[] = null;\n private _disabledDates: DateRangeDescriptor[] = null;\n private _activeDate: Date | null = null;\n private _overlaySubFilter:\n [MonoTypeOperatorFunction<OverlayEventArgs>, MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [\n filter(x => x.id === this._overlayId),\n takeUntil(merge(this._destroy$, this.closed))\n ];\n private _dialogOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: true,\n closeOnEscape: true\n };\n private _dropDownOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: false,\n closeOnEscape: true\n };\n private onChangeCallback: (dateRange: DateRange) => void = noop;\n private onTouchCallback: () => void = noop;\n private onValidatorChange: () => void = noop;\n\n constructor() {\n super();\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n @HostListener('keydown', ['$event'])\n /** @hidden @internal */\n public onKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case this.platform.KEYMAP.ARROW_UP:\n if (event.altKey) {\n this.close();\n }\n break;\n case this.platform.KEYMAP.ARROW_DOWN:\n if (event.altKey) {\n this.open();\n }\n break;\n }\n }\n\n /**\n * Opens the date range picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-range-picker #dateRange></igx-date-range-picker>\n *\n * <button type=\"button\" igxButton (click)=\"dateRange.open()\">Open Dialog</button\n * ```\n */\n public open(overlaySettings?: OverlaySettings): void {\n if (!this.collapsed || this.disabled || this.readOnly) {\n return;\n }\n\n this._originalValue = this._value\n ? { start: new Date(this._value.start), end: new Date(this._value.end) }\n : null;\n\n const settings = Object.assign({}, this.isDropdown\n ? this.dropdownOverlaySettings\n : this.dialogOverlaySettings\n , overlaySettings);\n\n this._overlayId = this._overlayService\n .attach(IgxCalendarContainerComponent, this.viewContainerRef, settings);\n this.subscribeToOverlayEvents();\n this._overlayService.show(this._overlayId);\n }\n\n /**\n * Closes the date range picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-range-picker #dateRange></igx-date-range-picker>\n *\n * <button type=\"button\" igxButton (click)=\"dateRange.close()\">Close Dialog</button>\n * ```\n */\n public close(): void {\n if (!this.collapsed) {\n this._overlayService.hide(this._overlayId);\n }\n }\n\n /**\n * Toggles the date range picker's dropdown or dialog\n *\n * @example\n * ```html\n * <igx-date-range-picker #dateRange></igx-date-range-picker>\n *\n * <button type=\"button\" igxButton (click)=\"dateRange.toggle()\">Toggle Dialog</button>\n * ```\n */\n public toggle(overlaySettings?: OverlaySettings): void {\n if (!this.collapsed) {\n this.close();\n } else {\n this.open(overlaySettings);\n }\n }\n\n /**\n * Selects a range of dates. If no `endDate` is passed, range is 1 day (only `startDate`)\n *\n * @example\n * ```typescript\n * public selectFiveDayRange() {\n * const today = new Date();\n * const inFiveDays = new Date(new Date().setDate(today.getDate() + 5));\n * this.dateRange.select(today, inFiveDays);\n * }\n * ```\n */\n public select(startDate: Date, endDate?: Date): void {\n endDate = endDate ?? startDate;\n const dateRange = [startDate, endDate];\n this.handleSelection(dateRange);\n }\n\n /**\n * Clears the input field(s) and the picker's value.\n *\n * @example\n * ```typescript\n * this.dateRangePicker.clear();\n * ```\n */\n public clear(): void {\n if (this.disabled) {\n return;\n }\n\n this.value = null;\n this._calendar?.deselectDate();\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach((i) => {\n i.inputDirective.clear();\n });\n } else {\n this.inputDirective.clear();\n }\n }\n\n /** @hidden @internal */\n public writeValue(value: DateRange): void {\n this.updateValue(value);\n }\n\n /** @hidden @internal */\n public registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n /** @hidden @internal */\n public registerOnTouched(fn: any): void {\n this.onTouchCallback = fn;\n }\n\n /** @hidden @internal */\n public validate(control: AbstractControl): ValidationErrors | null {\n const value: DateRange = control.value;\n const errors = {};\n if (value) {\n if (this.hasProjectedInputs) {\n const startInput = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const endInput = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n if (!startInput.dateTimeEditor.value) {\n Object.assign(errors, { startValue: true });\n }\n if (!endInput.dateTimeEditor.value) {\n Object.assign(errors, { endValue: true });\n }\n }\n\n if (this._isValueInDisabledRange(value)) {\n Object.assign(errors, { dateIsDisabled: true });\n }\n\n const { minValue, maxValue } = this._getMinMaxDates();\n const start = parseDate(value.start);\n const end = parseDate(value.end);\n if ((minValue && start && DateTimeUtil.lessThanMinValue(start, minValue, false))\n || (minValue && end && DateTimeUtil.lessThanMinValue(end, minValue, false))) {\n Object.assign(errors, { minValue: true });\n }\n if ((maxValue && start && DateTimeUtil.greaterThanMaxValue(start, maxValue, false))\n || (maxValue && end && DateTimeUtil.greaterThanMaxValue(end, maxValue, false))) {\n Object.assign(errors, { maxValue: true });\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n\n /** @hidden @internal */\n public registerOnValidatorChange?(fn: any): void {\n this.onValidatorChange = fn;\n }\n\n /** @hidden @internal */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** @hidden */\n public ngOnInit(): void {\n this._ngControl = this._injector.get<NgControl>(NgControl, null);\n\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden */\n public override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this.subscribeToDateEditorEvents();\n this.subscribeToClick();\n this.configPositionStrategy();\n this.configOverlaySettings();\n this.cacheFocusedInput();\n this.attachOnTouched();\n\n this.setRequiredToInputs();\n\n if (this._ngControl) {\n this._statusChanges$ = this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n }\n\n // delay invocations until the current change detection cycle has completed\n Promise.resolve().then(() => {\n this.updateDisabledState();\n this.initialSetValue();\n this.updateInputs();\n // B.P. 07 July 2021 - IgxDateRangePicker not showing initial disabled state with ChangeDetectionStrategy.OnPush #9776\n /**\n * if disabled is placed on the range picker element and there are projected inputs\n * run change detection since igxInput will initially set the projected inputs' disabled to false\n */\n if (this.hasProjectedInputs && this.disabled) {\n this._cdr.markForCheck();\n }\n });\n this.updateDisplayFormat();\n this.updateInputFormat();\n }\n\n /** @hidden @internal */\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['displayFormat'] && this.hasProjectedInputs) {\n this.updateDisplayFormat();\n }\n if (changes['inputFormat'] && this.hasProjectedInputs) {\n this.updateInputFormat();\n }\n if (changes['disabled']) {\n this.updateDisabledState();\n }\n }\n\n /** @hidden @internal */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this._statusChanges$) {\n this._statusChanges$.unsubscribe();\n }\n if (this._overlayId) {\n this._overlayService.detach(this._overlayId);\n }\n }\n\n /** @hidden @internal */\n public getEditElement(): HTMLInputElement {\n return this.inputDirective!.nativeElement;\n }\n\n protected onStatusChanged = () => {\n if (this.inputGroup) {\n this.setValidityState(this.inputDirective, this.inputGroup.isFocused);\n } else if (this.hasProjectedInputs) {\n this.projectedInputs\n .forEach((i) => {\n this.setValidityState(i.inputDirective, i.isFocused);\n });\n }\n this.setRequiredToInputs();\n };\n\n private setValidityState(inputDirective: IgxInputDirective, isFocused: boolean) {\n if (this._ngControl && !this._ngControl.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators && isFocused) {\n inputDirective.valid = this._ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n inputDirective.valid = this._ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n inputDirective.valid = IgxInputState.INITIAL;\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this._ngControl.control.touched || this._ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this._ngControl.control.validator || !!this._ngControl.control.asyncValidator);\n }\n\n private handleSelection(selectionData: Date[]): void {\n let newValue = this.extractRange(selectionData);\n if (!newValue.start && !newValue.end) {\n newValue = null;\n }\n this.value = newValue;\n if (this.isDropdown && selectionData?.length > 1) {\n this.close();\n }\n this._setCalendarActiveDate();\n }\n\n private handleClosing(e: IBaseCancelableBrowserEventArgs): void {\n const args = { owner: this, cancel: e?.cancel, event: e?.event };\n this.closing.emit(args);\n e.cancel = args.cancel;\n if (args.cancel) {\n return;\n }\n\n if (this.isDropdown && e?.event && !this.isFocused) {\n // outside click\n this.updateValidityOnBlur();\n } else {\n this.onTouchCallback();\n // input click\n if (this.hasProjectedInputs && this._focusedInput) {\n this._focusedInput.setFocus();\n }\n if (this.inputDirective) {\n this.inputDirective.focus();\n }\n }\n }\n\n private subscribeToOverlayEvents() {\n this._overlayService.opening.pipe(...this._overlaySubFilter).subscribe((e) => {\n const overlayEvent = e as OverlayCancelableEventArgs;\n const args = { owner: this, cancel: overlayEvent?.cancel, event: e.event };\n this.opening.emit(args);\n if (args.cancel) {\n this._overlayService.detach(this._overlayId);\n overlayEvent.cancel = true;\n return;\n }\n\n this._initializeCalendarContainer(e.componentRef.instance);\n this._calendarContainer = e.componentRef.location.nativeElement;\n this._collapsed = false;\n this.updateCalendar();\n });\n\n this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {\n this.calendar.wrapper.nativeElement.focus();\n this.opened.emit({ owner: this });\n });\n\n this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n const isEscape = e.event && (e.event as KeyboardEvent).key === this.platform.KEYMAP.ESCAPE;\n if (this.isProjectedInputTarget(e.event) && !isEscape) {\n e.cancel = true;\n }\n this.handleClosing(e as OverlayCancelableEventArgs);\n });\n\n this._overlayService.closed.pipe(...this._overlaySubFilter).subscribe(() => {\n this._overlayService.detach(this._overlayId);\n this._collapsed = true;\n this._overlayId = null;\n this._calendar = null;\n this._calendarContainer = undefined;\n this.closed.emit({ owner: this });\n });\n }\n\n private isProjectedInputTarget(event: Event): boolean {\n if (!this.hasProjectedInputs || !event) {\n return false;\n }\n const path = event.composed ? event.composedPath() : [event.target];\n return this.projectedInputs.some(i =>\n path.includes(i.dateTimeEditor.nativeElement)\n );\n }\n\n private updateValue(value: DateRange) {\n this._value = value ? value : null;\n this.updateInputs();\n this.updateCalendar();\n }\n\n private updateValidityOnBlur() {\n this._focusedInput = null;\n this.onTouchCallback();\n if (this._ngControl) {\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach(i => {\n if (!this._ngControl.valid) {\n i.updateInputValidity(IgxInputState.INVALID);\n } else {\n i.updateInputValidity(IgxInputState.INITIAL);\n }\n });\n }\n\n if (this.inputDirective) {\n if (!this._ngControl.valid) {\n this.inputDirective.valid = IgxInputState.INVALID;\n } else {\n this.inputDirective.valid = IgxInputState.INITIAL;\n }\n }\n }\n }\n\n private updateDisabledState() {\n if (this.hasProjectedInputs) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n start.inputDirective.disabled = this.disabled;\n end.inputDirective.disabled = this.disabled;\n return;\n }\n }\n\n private setRequiredToInputs(): void {\n // workaround for igxInput setting required\n Promise.resolve().then(() => {\n const isRequired = this.required;\n if (this.inputGroup && this.inputGroup.isRequired !== isRequired) {\n this.inputGroup.isRequired = isRequired;\n } else if (this.hasProjectedInputs && this._ngControl) {\n this.projectedInputs.forEach(i => i.isRequired = isRequired);\n }\n });\n }\n\n private parseMinValue(value: string | Date): Date | null {\n let minValue: Date = parseDate(value);\n if (!minValue && this.hasProjectedInputs) {\n const start = this.projectedInputs.filter(i => i instanceof IgxDateRangeStartComponent)[0];\n if (start) {\n minValue = parseDate(start.dateTimeEditor.minValue);\n }\n }\n\n return minValue;\n }\n\n private parseMaxValue(value: string | Date): Date | null {\n let maxValue: Date = parseDate(value);\n if (!maxValue && this.projectedInputs) {\n const end = this.projectedInputs.filter(i => i instanceof IgxDateRangeEndComponent)[0];\n if (end) {\n maxValue = parseDate(end.dateTimeEditor.maxValue);\n }\n }\n\n return maxValue;\n }\n\n private updateCalendar(): void {\n if (!this.calendar) {\n return;\n }\n this._setDisabledDates();\n\n const range: Date[] = [];\n if (this.value) {\n const _value = this.toRangeOfDates(this.value);\n if (_value.start && _value.end) {\n if (DateTimeUtil.greaterThanMaxValue(_value.start, _value.end)) {\n this.swapEditorDates();\n }\n }\n if (_value.start) {\n range.push(_value.start);\n }\n if (_value.end) {\n range.push(_value.end);\n }\n }\n\n if (range.length > 0) {\n this.calendar.selectDate(range);\n } else if (range.length === 0 && this.calendar.monthViews) {\n this.calendar.deselectDate();\n }\n this._setCalendarActiveDate();\n this._cdr.detectChanges();\n }\n\n private swapEditorDates(): void {\n if (this.hasProjectedInputs) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n [start.dateTimeEditor.value, end.dateTimeEditor.value] = [end.dateTimeEditor.value, start.dateTimeEditor.value];\n [this.value.start, this.value.end] = [this.value.end, this.value.start];\n }\n }\n\n private extractRange(selection: Date[]): DateRange {\n return {\n start: selection[0] || null,\n end: selection.length > 0 ? selection[selection.length - 1] : null\n };\n }\n\n private toRangeOfDates(range: DateRange): { start: Date; end: Date } {\n let start;\n let end;\n if (!isDate(range.start)) {\n start = DateTimeUtil.parseIsoDate(range.start);\n }\n if (!isDate(range.end)) {\n end = DateTimeUtil.parseIsoDate(range.end);\n }\n\n if (start || end) {\n return { start, end };\n }\n\n return { start: range.start as Date, end: range.end as Date };\n }\n\n private subscribeToClick() {\n const inputs = this.hasProjectedInputs\n ? this.projectedInputs.map(i => i.inputDirective.nativeElement)\n : [this.getEditElement()];\n inputs.forEach(input => {\n fromEvent(input, 'click')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.isDropdown) {\n this.toggle();\n }\n });\n });\n }\n\n private subscribeToDateEditorEvents(): void {\n if (this.hasProjectedInputs) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n if (start && end) {\n start.dateTimeEditor.valueChange\n .pipe(takeUntil(this._destroy$))\n .subscribe(value => {\n if (this.value) {\n this.value = { start: value, end: this.value.end };\n } else {\n this.value = { start: value, end: null };\n }\n if (this.calendar) {\n this._setCalendarActiveDate(parseDate(value));\n this._cdr.detectChanges();\n }\n });\n end.dateTimeEditor.valueChange\n .pipe(takeUntil(this._destroy$))\n .subscribe(value => {\n if (this.value) {\n this.value = { start: this.value.start, end: value as Date };\n } else {\n this.value = { start: null, end: value as Date };\n }\n if (this.calendar) {\n this._setCalendarActiveDate(parseDate(value));\n this._cdr.detectChanges();\n }\n });\n }\n }\n }\n\n private attachOnTouched(): void {\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach(i => {\n fromEvent(i.dateTimeEditor.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (this.collapsed) {\n this.updateValidityOnBlur();\n }\n });\n });\n } else {\n fromEvent(this.inputDirective.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (this.collapsed) {\n this.updateValidityOnBlur();\n }\n });\n }\n }\n\n private cacheFocusedInput(): void {\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach(i => {\n fromEvent(i.dateTimeEditor.nativeElement, 'focus')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => this._focusedInput = i);\n });\n }\n }\n\n private configPositionStrategy(): void {\n this._positionSettings = {\n openAnimation: fadeIn,\n closeAnimation: fadeOut\n };\n this._dropDownOverlaySettings.positionStrategy = new AutoPositionStrategy(this._positionSettings);\n this._dropDownOverlaySettings.target = this.element.nativeElement;\n }\n\n private configOverlaySettings(): void {\n if (this.overlaySettings !== null) {\n this._dropDownOverlaySettings = Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n this._dialogOverlaySettings = Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n }\n }\n\n private initialSetValue() {\n // if there is no value and no ngControl on the picker but we have inputs we may have value set through\n // their ngModels - we should generate our initial control value\n if ((!this.value || (!this.value.start && !this.value.end)) && this.hasProjectedInputs && !this._ngControl) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent);\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent);\n this._value = {\n start: start.dateTimeEditor.value as Date,\n end: end.dateTimeEditor.value as Date\n };\n }\n }\n\n private updateInputs(): void {\n const start = this.projectedInputs?.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs?.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n if (start && end) {\n const _value = this.value ? this.toRangeOfDates(this.value) : null;\n start.updateInputValue(_value?.start || null);\n end.updateInputValue(_value?.end || null);\n }\n }\n\n private updateDisplayFormat(): void {\n this.projectedInputs.forEach(i => {\n const input = i as IgxDateRangeInputsBaseComponent;\n input.dateTimeEditor.displayFormat = this.displayFormat;\n });\n }\n\n private updateInputFormat(): void {\n this.projectedInputs.forEach(i => {\n const input = i as IgxDateRangeInputsBaseComponent;\n if (input.dateTimeEditor.inputFormat !== this.inputFormat) {\n input.dateTimeEditor.inputFormat = this.inputFormat;\n }\n });\n }\n\n private updateInputLocale(): void {\n this.projectedInputs.forEach(i => {\n const input = i as IgxDateRangeInputsBaseComponent;\n input.dateTimeEditor.locale = this.locale;\n });\n }\n\n private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {\n this._calendar = componentInstance.calendar;\n this._calendar.hasHeader = !this.isDropdown && !this.hideHeader;\n this._calendar.locale = this.locale;\n this._calendar.selection = CalendarSelection.RANGE;\n this._calendar.weekStart = this.weekStart;\n this._calendar.hideOutsideDays = this.hideOutsideDays;\n this._calendar.monthsViewNumber = this._displayMonthsCount;\n this._calendar.showWeekNumbers = this.showWeekNumbers;\n this._calendar.headerTitleTemplate = this.headerTitleTemplate;\n this._calendar.headerTemplate = this.headerTemplate;\n this._calendar.subheaderTemplate = this.subheaderTemplate;\n this._calendar.headerOrientation = this.headerOrientation;\n this._calendar.orientation = this.orientation;\n this._calendar.specialDates = this.specialDates;\n this._calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date[]) => this.handleSelection(ev));\n\n this._setDisabledDates();\n this._setCalendarActiveDate();\n\n componentInstance.mode = this.mode;\n componentInstance.closeButtonLabel = !this.isDropdown ? this.doneButtonText : null;\n componentInstance.cancelButtonLabel = !this.isDropdown ? this.cancelButtonText : null;\n componentInstance.pickerActions = this.pickerActions;\n componentInstance.usePredefinedRanges = this.usePredefinedRanges;\n componentInstance.customRanges = this.customRanges;\n componentInstance.resourceStrings = this.resourceStrings;\n componentInstance.calendarClose.pipe(takeUntil(this._destroy$)).subscribe(() => this.close());\n componentInstance.calendarCancel.pipe(takeUntil(this._destroy$)).subscribe(() => {\n this._value = this._originalValue;\n this.close()\n });\n componentInstance.rangeSelected\n .pipe(takeUntil(this._destroy$))\n .subscribe((r: DateRange) => {\n if (r?.start && r?.end) {\n this.select(new Date(r.start), new Date(r.end));\n }\n\n if (this.isDropdown) {\n this.close();\n }\n });\n }\n\n private _setDisabledDates(): void {\n if (!this.calendar) {\n return;\n }\n this.calendar.disabledDates = this.disabledDates ? [...this.disabledDates] : [];\n const { minValue, maxValue } = this._getMinMaxDates();\n if (minValue) {\n this.calendar.disabledDates.push({ type: DateRangeType.Before, dateRange: [minValue] });\n }\n if (maxValue) {\n this.calendar.disabledDates.push({ type: DateRangeType.After, dateRange: [maxValue] });\n }\n }\n\n private _getMinMaxDates() {\n const minValue = this.parseMinValue(this.minValue);\n const maxValue = this.parseMaxValue(this.maxValue);\n return { minValue, maxValue };\n }\n\n private _isValueInDisabledRange(value: DateRange) {\n if (value && value.start && value.end && this.disabledDates) {\n const isOutsideDisabledRange = Array.from(\n calendarRange({\n start: parseDate(this.value.start),\n end: parseDate(this.value.end),\n inclusive: true\n })).every((date) => !isDateInRanges(date, this.disabledDates));\n return !isOutsideDisabledRange;\n }\n return false;\n }\n\n private _setCalendarActiveDate(value = null): void {\n if (this._calendar) {\n this._calendar.activeDate = value ?? this.activeDate;\n this._calendar.viewDate = value ?? this.activeDate;\n }\n }\n}\n","<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #clearIcon>\n <igx-icon family=\"default\" name=\"input_clear\" [attr.aria-hidden]=\"true\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n <igx-input-group [type]=\"type\">\n <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n <input #singleInput igxInput type=\"text\" [igxReadOnlyInput]=\"readOnly\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n @if (!toggleComponents.length) {\n <igx-prefix (click)=\"toggle()\">\n <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n </igx-prefix>\n }\n\n @if (!clearComponents.length && value) {\n <igx-suffix (click)=\"clear()\">\n <ng-container *ngTemplateOutlet=\"clearIcon\"></ng-container>\n </igx-suffix>\n }\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n </igx-input-group>\n</ng-template>\n","import { IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxDateRangeEndComponent, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent } from './date-range-picker-inputs.common';\nimport { IgxDateRangePickerComponent } from './date-range-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from 'igniteui-angular/calendar';\n\nexport * from './date-range-picker-inputs.common';\nexport * from './date-range-picker.component';\n\n/* NOTE: Date-range picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DATE_RANGE_PICKER_DIRECTIVES = [\n IgxDateRangePickerComponent,\n IgxPickerToggleComponent,\n IgxPickerClearComponent,\n IgxDateRangeStartComponent,\n IgxDateRangeEndComponent,\n IgxDateRangeSeparatorDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective,\n IgxCalendarHeaderTemplateDirective,\n IgxCalendarSubheaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_DATE_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_DATE_PICKER_DIRECTIVES\n ],\n exports: [\n ...IGX_DATE_PICKER_DIRECTIVES\n ]\n})\nexport class IgxDatePickerModule { }\n","import { NgModule } from '@angular/core';\nimport { IGX_DATE_RANGE_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_DATE_RANGE_PICKER_DIRECTIVES\n ],\n exports: [\n ...IGX_DATE_RANGE_PICKER_DIRECTIVES\n ]\n})\nexport class IgxDateRangePickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxDatePickerComponent","i1.IgxDateRangePickerComponent","i3.IgxDateRangeStartComponent","i3.IgxDateRangeEndComponent","i3.IgxDateRangeSeparatorDirective","i4","i5"],"mappings":";;;;;;;;;;;;;;;;;MAcsB,mBAAmB,CAAA;AAuGrC;;;;;AAKG;AACH;;;AAGG;AACH,IAAA,IACW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO;IACvB;AAEA;;;AAGG;IACH,IAAW,MAAM,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAEpB,QAAA,IAAI;AACA,YAAA,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;QACzC;QAAE,OAAO,CAAC,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;QACjC;IACJ;AAEA;;;;AAIG;AACH,IAAA,IACW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;IACnE;AAEA;;;AAGG;IACH,IAAW,SAAS,CAAC,KAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IAC3B;AAgBA;;;;;;;;;;AAUG;IACH,IACW,IAAI,CAAC,GAAsB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;IACpB;AACA,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe;IAC7C;AAkFA;;;;;;;AAOG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU;IAC1B;;AAGA,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAC,QAAQ;IACvD;AAEA;;;AAGG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAA2B;QACnF,IAAI,CAAC,QAAQ,EAAE,aAAa;AAAE,YAAA,OAAO,KAAK;QAE1C,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa;AAC1D,eAAA,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;IACnF;AAQA,IAAA,WAAA,GAAA;AAzSO,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAS,SAAS,CAAC;QACrC,IAAA,CAAA,eAAe,GAAG,MAAM,CAAoB,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AA+B/F;;;;;;;AAOG;QAEI,IAAA,CAAA,WAAW,GAAG,EAAE;AAEvB;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,IAAI,GAA0B,qBAAqB,CAAC,QAAQ;AAEnE;;;;;;;AAOG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAA4B,uBAAuB,CAAC,UAAU;AAEtF;;;;;;;AAOG;QAEI,IAAA,CAAA,UAAU,GAAG,KAAK;AAazB;;;;;;;AAOG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AA6FvB;;;;;;;AAOG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAmC;AAEpE;;;;;;;AAOG;AAEI,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB;AAElD;;;;;;;AAOG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAmC;AAEpE;;;;;;;AAOG;AAEI,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB;QAoBxC,IAAA,CAAA,UAAU,GAAG,IAAI;AAoCjB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;QAOrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;IAC/C;;IAGO,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACpE;;IAGO,qBAAqB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC5C;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC5C;IACJ;;IAGO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC7B;;IAGQ,iBAAiB,CACrB,UAAyE,EACzE,OAAmB,EAAA;AAEnB,QAAA,MAAM,gBAAgB,GAAG,aAAa,IAAG;AACrC,YAAA,aAAa,CAAC,OAAO,CAAC,SAAS,IAAG;AAC9B,gBAAA,SAAS,CAAC;AACL,qBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC5D,SAAS,CAAC,OAAO,CAAC;AAC3B,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;QAED,gBAAgB,CAAC,UAAU,CAAC;QAE5B,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aAC5C,SAAS,CAAC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACtD;8GAtVkB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EA8EjB,gBAAgB,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAsBhB,gBAAgB,CAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EA2InB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAIxB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAGvB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAGlB,kBAAkB,4FAGxB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA5Pf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC;;sBAiBI;;sBAeA;;sBAWA;;sBAcA;;sBAWA;;sBAWA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAWA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAarC;;sBAwBA;;sBAwBA;;sBAcA;;sBAgBA;;sBAWA;;sBAWA;;sBAWA;;sBAWA;;sBAIA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAI/D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAG9D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAGzD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAGzD,SAAS;uBAAC,sBAAsB;;;MCtPxB,gCAAgC,CAAA;AAb7C,IAAA,WAAA,GAAA;QAcoB,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,YAAY,GAAsB,EAAE;QACpC,IAAA,CAAA,eAAe,GAAoC,gCAAuC;AAEzF,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAa;QAOrD,IAAA,CAAA,YAAY,GAAG,CAAC,CAAS,EAAE,CAAkB,KAAK,CAAC,CAAC,KAAK;AAqCnE,IAAA;AA1CG,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;AACvE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAClD;AAIO,IAAA,QAAQ,CAAC,KAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEQ,IAAA,QAAQ,CAAC,EAAO,EAAE,QAAgB,EAAE,WAAmB,EAAE,QAAgB,EAAA;AAC7E,QAAA,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,QAAQ;IAC1D;IAEQ,mBAAmB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK;AAC/B,QAAA,MAAM,EAAE,GAAQ,IAAI,CAAC,eAAe,IAAI,EAAE;AAE1C,QAAA,MAAM,MAAM,GAAG;AACX,YAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE,aAAa,CAAC;AAC3F,YAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,oCAAoC,EAAE,eAAe,CAAC;AACtG,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,kCAAkC,EAAE,cAAc,CAAC;AAC/F,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,kCAAkC,EAAE,cAAc;SACjG;QAED,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACvF,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAE9D,QAAA,MAAM,gBAAgB,GAAyE;AAC3F,YAAA,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAC5F,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;AAC9E,YAAA,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9F,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;SAChF;QAED,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,KAAK;AAClC,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACxB,YAAA,SAAS,EAAE,KAAK,CAAC,GAAG;AACvB,SAAA,CAAC,CAAC;IACP;8GAhDS,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB7C,qOAOA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGc,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAUjB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAb5C,SAAS;+BACI,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAQV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qOAAA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBAEA;;;AEXL;MAca,6BAA6B,CAAA;AAb1C,IAAA,WAAA,GAAA;AAkBW,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAkB;AAGlD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAkB;AAGnD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAkB;AAGnD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAa;QAI7C,IAAA,CAAA,UAAU,GAAG,iBAAiB;QAO9B,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,YAAY,GAAsB,EAAE;QAEpC,IAAA,CAAA,QAAQ,GAAG,KAAK;AAIhB,QAAA,IAAA,CAAA,IAAI,GAA0B,qBAAqB,CAAC,QAAQ;AAYtE,IAAA;AAxBG,IAAA,IACW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAC,QAAQ;IACvD;AAaO,IAAA,QAAQ,CAAC,KAAK,EAAA;QACjB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC7B;AAEA,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAC,MAAM;IACrD;8GA3CS,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,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,iCAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC3B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BnC,imEA6DA,gFDzCQ,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,uHACnB,gCAAgC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAGzB;wBACL,kBAAkB;wBAClB,kBAAkB;wBAClB,oBAAoB;wBACpB,gBAAgB;wBAChB,mBAAmB;wBACnB;AACH,qBAAA,EAAA,QAAA,EAAA,imEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAGhD;;sBAGA;;sBAGA;;sBAGA;;sBAIA,WAAW;uBAAC,uBAAuB;;sBAGnC,WAAW;uBAAC,iCAAiC;;sBAe7C,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;;AEUnD,IAAI,OAAO,GAAG,CAAC;AAEf;;;;;;;;;;;AAWG;AAoBG,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAkE3D;;;AAGG;AACH,IAAA,IACW,UAAU,GAAA;QACjB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;AACnH,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,KAAK;IAC/E;IAEA,IAAW,UAAU,CAAC,KAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAqGA;;;;;;;;AAQG;AACH,IAAA,IACW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc;IAC9B;IACA,IAAW,aAAa,CAAC,KAA4B,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAEA;;;;;;;;AAQG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;IACA,IAAW,YAAY,CAAC,KAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;;AAgBA;;;;;;;AAOG;AACH,IAAA,IACW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM;IACtB;IACA,IAAW,KAAK,CAAC,IAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,IAAI,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAC/C;QACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;AAEA;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAkEA,IAAA,IAAY,qBAAqB,GAAA;AAC7B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC;IAC/E;AAEA,IAAA,IAAY,uBAAuB,GAAA;AAC/B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,eAAe,CAAC;IACjF;AAEA,IAAA,IAAY,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa;IACjD;AAEA,IAAA,IAAY,SAAS,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IAC1B;AAEA,IAAA,IAAY,iBAAiB,GAAA;AACzB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC;IACpE;AAEA,IAAA,IAAY,oBAAoB,GAAA;AAC5B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC;IACvE;AAqDA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAraH,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAoB,iBAAiB,CAAC;AAC9D,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAqBvC;;;;;;;;;;;;;;AAcG;QAEI,IAAA,CAAA,kBAAkB,GAAG,CAAC;AAE7B;;;;;AAKE;AAEK,QAAA,IAAA,CAAA,WAAW,GAA8B,yBAAyB,CAAC,UAAU;AA8DpF;;;;;;;AAOG;QAEI,IAAA,CAAA,QAAQ,GAAG,IAAI;AA8BtB;;;;;;;;AAQG;AAGI,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,gBAAA,EAAmB,OAAO,EAAE,EAAE;;QAgInC,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEvB;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;AAE7C;;;;;;;AAOG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAwC;;AAuD3E,QAAA,IAAA,CAAA,YAAY,GAAkB,EAAE,SAAS,EAAE,CAAC,IAAU,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAEhF,QAAA,IAAA,CAAA,gBAAgB,GAAG,yBAAyB,CAAC,2BAA2B,CAAC;QAIzE,IAAA,CAAA,UAAU,GAAc,IAAI;QAI5B,IAAA,CAAA,aAAa,GAA0B,IAAI;QAC3C,IAAA,CAAA,cAAc,GAA0B,IAAI;QAC5C,IAAA,CAAA,WAAW,GAAS,IAAI;AACxB,QAAA,IAAA,CAAA,iBAAiB,GAE0D;AAC3E,YAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;AACrC,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS;SAC3B;AACG,QAAA,IAAA,CAAA,wBAAwB,GAAoB;YAChD,MAAM,EAAE,IAAI,CAAC,iBAAiB;AAC9B,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI,sBAAsB,EAAE;YAC5C,gBAAgB,EAAE,IAAI,oBAAoB,CAAC;AACvC,gBAAA,aAAa,EAAE,MAAM;AACrB,gBAAA,cAAc,EAAE;aACnB;SACJ;AACO,QAAA,IAAA,CAAA,sBAAsB,GAAoB;AAC9C,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,aAAa,EAAE;SAClB;AACO,QAAA,IAAA,CAAA,eAAe,GAAuB;AAC1C,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE;SACT;AACO,QAAA,IAAA,CAAA,eAAe,GAAqB;AACxC,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE;SACT;QACO,IAAA,CAAA,iBAAiB,GAAsB,IAAI;QAC3C,IAAA,CAAA,kBAAkB,GAAe,IAAI;QACrC,IAAA,CAAA,kBAAkB,GAAe,IAAI;QA4VrC,IAAA,CAAA,eAAe,GAAG,MAAK;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;YACxC,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9C,QAAA,CAAC;QA5VG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;IAC/C;;AAGA,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;;AAEjF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAqB,CAAC;AACtE,YAAA,OAAO,KAAK,IAAI,KAAK,CAAC,QAAQ;QAClC;AAEA,QAAA,OAAO,KAAK;IAChB;;AAGA,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC;IACzE;AAEA,IAAA,IAAuB,eAAe,GAAA;QAClC,OAAO,IAAI,CAAC,kBAAkB;IAClC;;AAIO,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAC9B,gBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,KAAK,EAAE;gBAChB;gBACA;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;AAChC,gBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,IAAI,EAAE;gBACf;gBACA;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK;gBAC3B,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,IAAI,EAAE;gBACX;;IAEZ;AAEA;;;;;;;;;AASG;AACI,IAAA,IAAI,CAAC,QAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnD;QACJ;QAEA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;cACzC,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,qBAAqB,EAC1B,QAAQ,CAAC;QAEf,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC3C,YAAA,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB;QACnD;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACxC;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAClF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9C;AAEA;;;;;;;;;AASG;AACI,IAAA,MAAM,CAAC,QAA0B,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvB;aAAO;YACH,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;AAEA;;;;;;;;;AASG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9C;IACJ;AAEA;;;;;;;;;;AAUG;AACI,IAAA,MAAM,CAAC,KAAW,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;AAEA;;;;;;;;;AASK;IACE,WAAW,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjB,QAAA,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACnB,QAAA,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACnB,QAAA,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE;IAChB;AAEA;;;;;;;AAOG;IACI,KAAK,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QAC/B;IACJ;AAEA;;;;;;;;;AASG;IACI,SAAS,CAAC,QAAmB,EAAE,KAAc,EAAA;QAChD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;IAClD;AAEA;;;;;;;;;AASG;IACI,SAAS,CAAC,QAAmB,EAAE,KAAc,EAAA;QAChD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;IAClD;;;AAIO,IAAA,UAAU,CAAC,KAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,EAAE;YACrC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAC/C;IACJ;;AAGO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC/B;;AAGO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAChC;;AAGO,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC9B;;;;AAKO,IAAA,yBAAyB,CAAC,EAAO,EAAA;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAChC;;AAGO,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAChB,YAAA,OAAO,IAAI;QACf;;AAEA,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnE,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B;QAEA,MAAM,MAAM,GAAG,EAAE;QACjB,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;AAChH,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;YAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QACnD;QACA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAE9F,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;IACzD;;;IAIO,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAY,SAAS,EAAE,IAAI,CAAC;QAEhE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;IAC/C;;IAGgB,eAAe,GAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,2BAA2B,EAAE;AAElC,QAAA,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;QAE/F,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM;AAC9C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE;YACzB;AACJ,QAAA,CAAC,CAAC;AAEN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,eAAe;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;gBACnC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC1C,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC5B;QACJ;IACJ;;IAGO,kBAAkB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7G;IACJ;;IAGgB,WAAW,GAAA;QACvB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACtC;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5C,OAAO,IAAI,CAAC,UAAU;QAC1B;IACJ;;IAGO,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa;IAC5C;IAEQ,gBAAgB,GAAA;AACpB,QAAA,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,IAAI,CAAC,MAAM,EAAE;YACjB;AACJ,QAAA,CAAC,CAAC;IACV;AAEQ,IAAA,YAAY,CAAC,KAAoB,EAAA;AACrC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB;QACJ;QACA,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5F,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;YAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;AACzC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC5B;IACJ;IAEQ,cAAc,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC5D,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACjD,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO;YACnG;iBAAO;gBACH,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;YACrG;QACJ;aAAO;YACH,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO;QACrD;IACJ;AAEA,IAAA,IAAY,gBAAgB,GAAA;AACxB,QAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;IAC5E;AAEA,IAAA,IAAY,aAAa,GAAA;QACrB,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc;IAC3F;AAQQ,IAAA,eAAe,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC1D;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;YAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;QAC7C;QACA,IAAI,CAAC,KAAK,EAAE;IAChB;IAEQ,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAChC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;AACpB,QAAA,CAAC,CAAC;QACN,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CACrC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3C,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,gBAAA,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,KAAK,CAAC,QAAQ;gBACzB,YAAY,EAAE,IAAI,CAAC;AACtB,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACV;IAEQ,wBAAwB,GAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAA6B,KAAI;AACrG,YAAA,MAAM,IAAI,GAAoC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AAC/F,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACtB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC5C;YACJ;YAEA,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC1D,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa;AAC/D,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAEjC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE;AAClD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAA6B,KAAI;AACrG,YAAA,MAAM,IAAI,GAAoC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AAC/F,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACtB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb;YACJ;;AAEA,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAuB,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;AACpG,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YAC/B;iBAAO;gBACH,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE;YACzB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;AACvC,QAAA,CAAC,CAAC;IACN;IAEQ,cAAc,GAAA;QAClB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnH,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnH,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjC;IAEQ,gBAAgB,GAAA;QACpB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAChF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;QACpD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5F;QACA,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3F;IACJ;AAEQ,IAAA,4BAA4B,CAAC,iBAAgD,EAAA;AACjF,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,QAAQ;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU;QAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB;QACxD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB;QACnD,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACnC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QACzC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;QAC/C,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;QAC7D,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACnD,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;QACzD,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;QACzD,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACrD,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB;QACzD,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACrD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,gBAAgB,EAAE;QAEvB,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;YAE1C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;QACzC;QACA,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;AAEzC,QAAA,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAClC,QAAA,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB;AAC3D,QAAA,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AAC1D,QAAA,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QAEpD,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7F,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACxG;8GAt4BS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAwBX,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAsChB,gBAAgB,sKA4DhB,gBAAgB,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAyKhB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EArTzB;YACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE;YAChF,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI;AAC7E,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA+Ua,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,uCAAuC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGvC,kCAAkC,oFAelC,qCAAqC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGrC,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAf5B,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG1B,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,gBAAgB,8DAGhD,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5bhC,k5DA4CA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDoDQ,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,8EAClB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,yBAAyB,6HACzB,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGb,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;AACK,YAAA,IAAA,EAAA,CAAA,EAAA,SAAA,EAAA;wBACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE;wBAChF,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,wBAAwB,EAAE,KAAK,EAAE,IAAI;AAC7E,qBAAA,EAAA,QAAA,EACS,iBAAiB,EAAA,OAAA,EAGlB;wBACL,sBAAsB;wBACtB,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,yBAAyB;wBACzB,0BAA0B;wBAC1B,yBAAyB;wBACzB;AACH,qBAAA,EAAA,QAAA,EAAA,k5DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBA0BA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAkBrC;;sBASA;;sBAWA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAmBA;;sBAWA;;sBAWA;;sBAWA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAgBA;;sBAYA;;sBACA,WAAW;uBAAC,SAAS;;sBAcrB;;sBAYA;;sBAkBA;;sBAiBA;;sBAaA;;sBAoBA;;sBAgBA;;sBAcA;;sBAIA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAcrC;;sBAWA;;sBAIA,YAAY;uBAAC,iBAAiB;;sBAG9B,YAAY;uBAAC,uCAAuC;;sBAGpD,YAAY;uBAAC,kCAAkC;;sBAG/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAGtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;sBAG5D,SAAS;uBAAC,iBAAiB;;sBAG3B,SAAS;uBAAC,iBAAiB;;sBAG3B,YAAY;uBAAC,qCAAqC;;sBAGlD,YAAY;uBAAC,yBAAyB;;sBAwGtC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEhiBvC;AACO,MAAM,0BAA0B,GAAG;IACtC,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;IACvB,yBAAyB;IACzB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,kCAAkC;IAClC,qCAAqC;IACrC;;;ACdJ;MAKa,yBAAyB,CAAA;AAC3B,IAAA,SAAS,CAAC,MAAiB,EAAE,aAAsB,EACtD,MAAe,EAAE,SAAoC,EAAA;AACrD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,YAAA,OAAO,EAAE;QACb;QACA,IAAI,SAAS,EAAE;AACX,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC;QAC5B;AACA,QAAA,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChB,YAAA,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;QAC5C;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACd,YAAA,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;QACxC;QACA,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,kBAAkB,EAAE;QAC7H,MAAM,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,kBAAkB,EAAE;AACvH,QAAA,IAAI,SAAS;QACb,IAAI,KAAK,EAAE;AACP,YAAA,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,GAAA,CAAK;YAC7B,IAAI,GAAG,EAAE;gBACL,SAAS,IAAI,OAAO;YACxB;QACJ;QAEA,OAAO,SAAS,GAAG,SAAS,GAAG,EAAE;IACrC;8GA3BS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA;;AA+BD;AAOM,MAAO,+BAAgC,SAAQ,sBAAsB,CAAA;;AAWvE,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;IACrC;;IAGO,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;IACtB;;AAGO,IAAA,gBAAgB,CAAC,KAAW,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1C;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK;QACrC;IACJ;;AAGO,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK;IACrC;8GAhCS,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,kEAH7B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,sEAI3E,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG1B,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,SAAS,uEAZb,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAKH,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,CAAE;AACZ,oBAAA,QAAQ,EAAE,CAAA,mBAAA,CAAqB;oBAC/B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,+BAAiC,EAAE,CAAC;AACzF,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,YAAY;uBAAC,0BAA0B;;sBAGvC,YAAY;uBAAC,iBAAiB;;sBAG9B,YAAY;uBAAC,SAAS;;AA4B3B;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAUG,MAAO,0BAA2B,SAAQ,+BAA+B,CAAA;8GAAlE,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EANxB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE;AACvE,YAAA,EAAE,OAAO,EAAE,+BAA+B,EAAE,WAAW,EAAE,0BAA0B;SACtF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnHL,8yKAoKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhDc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,8EAAE,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/F,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,SAAA,EAErB;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,4BAA4B,EAAE;AACvE,wBAAA,EAAE,OAAO,EAAE,+BAA+B,EAAE,WAAW,4BAA4B;qBACtF,EAAA,OAAA,EACQ,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,8yKAAA,EAAA;;AAI7G;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAUG,MAAO,wBAAyB,SAAQ,+BAA+B,CAAA;8GAAhE,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,oBAAA,EAAA,SAAA,EANtB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACrE,YAAA,EAAE,OAAO,EAAE,+BAA+B,EAAE,WAAW,EAAE,wBAAwB;SACpF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtJL,8yKAoKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,8EAAE,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/F,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,SAAA,EAEnB;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,0BAA0B,EAAE;AACrE,wBAAA,EAAE,OAAO,EAAE,+BAA+B,EAAE,WAAW,0BAA0B;qBACpF,EAAA,OAAA,EACQ,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,8yKAAA,EAAA;;AAI7G;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAKU,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AE9HD,MAAM,mCAAmC,GAAG,KAAK;AAEjD;;;;;;;;;;;;;;;;;;;;;AAqBG;AAmBG,MAAO,2BAA4B,SAAQ,mBAAmB,CAAA;AAQhE;;;;;;;;;;AAUG;AACH,IAAA,IACW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB;IACnC;IAEA,IAAW,kBAAkB,CAAC,KAAa,EAAA;QACvC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACjD;AA4CA;;;;;;;;;;;AAWG;IACH,IACW,cAAc,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAChC;AAEA,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iCAAiC;QACjE;QACA,OAAO,IAAI,CAAC,eAAe;IAC/B;AACA;;;;;;;;;;;AAWG;IACH,IACW,gBAAgB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;IAClC;AAEA,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,mCAAmC;QACnE;QACA,OAAO,IAAI,CAAC,iBAAiB;IACjC;AAsCA;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,iBAAiB,EAAE;IAC5B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,iBAAiB,EAAE;IAC5B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;;;;;AAQG;AACH,IAAA,IACW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc;IAC9B;IACA,IAAW,aAAa,CAAC,KAA4B,EAAA;AACjD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,iBAAiB,EAAE;IAC5B;AAEA;;;;;;;;AAQG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;IACA,IAAW,YAAY,CAAC,KAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAEA;;;AAGG;IACH,IACW,eAAe,CAAC,KAAsC,EAAA;AAC7D,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAC3E;AAEA;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB;IAChC;;AAsHA,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,oCAAoC;QACpE;QACA,OAAO,IAAI,CAAC,cAAc;IAC9B;;AAGA,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa;eAChE,YAAY,CAAC,oBAAoB;IAC5C;AAEA;;;AAGE;AACF,IAAA,IACW,UAAU,GAAA;QACjB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;AACvI,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,KAAK;IAC/E;IAEA,IAAW,UAAU,CAAC,KAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAEA;;;;;AAKG;AACH;;;AAGG;AACH,IAAA,IACoB,MAAM,GAAA;QACtB,OAAO,IAAI,CAAC,OAAO;IACvB;AAEA;;;AAGG;IACH,IAAoB,MAAM,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAEpB,QAAA,IAAI;AACA,YAAA,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;QACzC;QAAE,OAAO,CAAC,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;QACjC;AACA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,mBAAmB,EAAE;QAC9B;IACJ;;AAGA,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,WAAW;QAC3B;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;AACjC,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,mCAAmC,CAAA,EAAG,MAAM,EAAE;IACrE;AAEA;;;;;;AAMG;AACH,IAAA,IAAoB,SAAS,GAAA;QACzB,OAAO,IAAI,CAAC,UAAU;IAC1B;AAEA;;;;;;;;;;;AAWG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IACW,KAAK,CAAC,KAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;;AAGA,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC;IAC3C;;AAGA,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,CAAC,8BAA8B,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;AAEA,IAAA,IAAuB,eAAe,GAAA;QAClC,OAAO,IAAI,CAAC,kBAAkB;IAClC;AAEA,IAAA,IAAY,QAAQ,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;AACjF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAqB,CAAC;AACtE,YAAA,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,KAAK;QACnD;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,IAAY,QAAQ,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA,IAAA,IAAY,uBAAuB,GAAA;AAC/B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,eAAe,CAAC;IACjF;AAEA,IAAA,IAAY,qBAAqB,GAAA;AAC7B,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC;IAC/E;AAEA,IAAA,IAAY,oBAAoB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,OAAO,IAAI;QACf;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7C,OAAO,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,GAAG,IAAI,IAAI;IAC7C;AAsCA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAzhBD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAoB,iBAAiB,CAAC;AAuBtE;;;;;AAKG;AAEI,QAAA,IAAA,CAAA,WAAW,GAA8B,yBAAyB,CAAC,UAAU;AAyMpF;;;;;;;AAOG;QAEa,IAAA,CAAA,WAAW,GAAG,EAAE;AAkBhC;;;;;;;;;;AAUG;QAEI,IAAA,CAAA,eAAe,GAAG,KAAK;;QAIvB,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEvB;;;;;;;AAOG;AAEF;;;;;;;AAOM;QACS,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAE3C;;;;;;;AAOE;QACc,IAAA,CAAA,YAAY,GAAsB,EAAE;AAG7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAa;;QAI3C,IAAA,CAAA,QAAQ,GAAG,uBAAuB;AA2LjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,yBAAyB,CAAC,gCAAgC,CAAC;QAC9E,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,iBAAiB,GAAG,IAAI;QACxB,IAAA,CAAA,cAAc,GAAG,IAAI;QAUrB,IAAA,CAAA,mBAAmB,GAAG,CAAC;QACvB,IAAA,CAAA,aAAa,GAA0B,IAAI;QAC3C,IAAA,CAAA,cAAc,GAA0B,IAAI;QAC5C,IAAA,CAAA,WAAW,GAAgB,IAAI;AAC/B,QAAA,IAAA,CAAA,iBAAiB,GACmG;AACpH,YAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;YACrC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;SAC/C;AACG,QAAA,IAAA,CAAA,sBAAsB,GAAoB;AAC9C,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,aAAa,EAAE;SAClB;AACO,QAAA,IAAA,CAAA,wBAAwB,GAAoB;AAChD,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,aAAa,EAAE;SAClB;QACO,IAAA,CAAA,gBAAgB,GAAmC,IAAI;QACvD,IAAA,CAAA,eAAe,GAAe,IAAI;QAClC,IAAA,CAAA,iBAAiB,GAAe,IAAI;QAsQlC,IAAA,CAAA,eAAe,GAAG,MAAK;AAC7B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YACzE;AAAO,iBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAChC,gBAAA,IAAI,CAAC;AACA,qBAAA,OAAO,CAAC,CAAC,CAAC,KAAI;oBACX,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC;AACxD,gBAAA,CAAC,CAAC;YACV;YACA,IAAI,CAAC,mBAAmB,EAAE;AAC9B,QAAA,CAAC;QA5QG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;IAC/C;;AAKO,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAC9B,gBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,KAAK,EAAE;gBAChB;gBACA;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;AAChC,gBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,IAAI,EAAE;gBACf;gBACA;;IAEZ;AAEA;;;;;;;;;AASG;AACI,IAAA,IAAI,CAAC,eAAiC,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnD;QACJ;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;cACrB,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;cACpE,IAAI;QAEV,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;cAClC,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,qBAAqB,EAC1B,eAAe,CAAC;AAEtB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;QAC3E,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9C;AAEA;;;;;;;;;AASG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9C;IACJ;AAEA;;;;;;;;;AASG;AACI,IAAA,MAAM,CAAC,eAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QAChB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAC9B;IACJ;AAEA;;;;;;;;;;;AAWG;IACI,MAAM,CAAC,SAAe,EAAE,OAAc,EAAA;AACzC,QAAA,OAAO,GAAG,OAAO,IAAI,SAAS;AAC9B,QAAA,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IACnC;AAEA;;;;;;;AAOG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;QACJ;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC/B,gBAAA,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE;AAC5B,YAAA,CAAC,CAAC;QACN;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QAC/B;IACJ;;AAGO,IAAA,UAAU,CAAC,KAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAC3B;;AAGO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC9B;;AAGO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC7B;;AAGO,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACpC,QAAA,MAAM,KAAK,GAAc,OAAO,CAAC,KAAK;QACtC,MAAM,MAAM,GAAG,EAAE;QACjB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAA+B;AACxH,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAA6B;AAClH,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE;oBAClC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBAC/C;AACA,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE;oBAChC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC7C;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;gBACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YACnD;YAEA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE;YACrD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;AACxE,oBAAC,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE;gBAC7E,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7C;AACA,YAAA,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,YAAY,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;AAC3E,oBAAC,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE;gBAChF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7C;QACJ;AAEA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;IACzD;;AAGO,IAAA,yBAAyB,CAAE,EAAO,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC/B;;AAGO,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC9B;;IAGO,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAY,SAAS,EAAE,IAAI,CAAC;QAEhE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;IAC/C;;IAGgB,eAAe,GAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,eAAe,EAAE;QAEtB,IAAI,CAAC,mBAAmB,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnG;;AAGA,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,YAAY,EAAE;;AAEnB;;;AAGG;YACH,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC5B;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,iBAAiB,EAAE;IAC5B;;AAGO,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACrD,IAAI,CAAC,mBAAmB,EAAE;QAC9B;QACA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACnD,IAAI,CAAC,iBAAiB,EAAE;QAC5B;AACA,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACrB,IAAI,CAAC,mBAAmB,EAAE;QAC9B;IACJ;;IAGgB,WAAW,GAAA;QACvB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACtC;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAChD;IACJ;;IAGO,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,cAAe,CAAC,aAAa;IAC7C;IAcQ,gBAAgB,CAAC,cAAiC,EAAE,SAAkB,EAAA;AAC1E,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvE,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE;gBACjC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO;YAC9F;iBAAO;gBACH,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;YAChG;QACJ;aAAO;AACH,YAAA,cAAc,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO;QAChD;IACJ;AAEA,IAAA,IAAY,gBAAgB,GAAA;AACxB,QAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;IAC5E;AAEA,IAAA,IAAY,aAAa,GAAA;QACrB,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc;IAC3F;AAEQ,IAAA,eAAe,CAAC,aAAqB,EAAA;QACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAClC,QAAQ,GAAG,IAAI;QACnB;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;QACrB,IAAI,IAAI,CAAC,UAAU,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,KAAK,EAAE;QAChB;QACA,IAAI,CAAC,sBAAsB,EAAE;IACjC;AAEQ,IAAA,aAAa,CAAC,CAAkC,EAAA;AACpD,QAAA,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AAChE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACtB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;YAEhD,IAAI,CAAC,oBAAoB,EAAE;QAC/B;aAAO;YACH,IAAI,CAAC,eAAe,EAAE;;YAEtB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE;AAC/C,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YACjC;AACA,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YAC/B;QACJ;IACJ;IAEQ,wBAAwB,GAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACzE,MAAM,YAAY,GAAG,CAA+B;AACpD,YAAA,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAC1E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,gBAAA,YAAY,CAAC,MAAM,GAAG,IAAI;gBAC1B;YACJ;YAEA,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC1D,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa;AAC/D,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,cAAc,EAAE;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACrC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAA6B,KAAI;AACrG,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAK,CAAC,CAAC,KAAuB,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;AAC1F,YAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnD,gBAAA,CAAC,CAAC,MAAM,GAAG,IAAI;YACnB;AACA,YAAA,IAAI,CAAC,aAAa,CAAC,CAA+B,CAAC;AACvD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACrC,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,sBAAsB,CAAC,KAAY,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE;AACpC,YAAA,OAAO,KAAK;QAChB;QACA,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QACnE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAChD;IACL;AAEQ,IAAA,WAAW,CAAC,KAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI;QAClC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,cAAc,EAAE;IACzB;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAG;AAC7B,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACxB,wBAAA,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC;oBAChD;yBAAO;AACH,wBAAA,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC;oBAChD;AACJ,gBAAA,CAAC,CAAC;YACN;AAEA,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;oBACxB,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO;gBACrD;qBAAO;oBACH,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO;gBACrD;YACJ;QACJ;IACJ;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAA+B;AACnH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAA6B;YAC7G,KAAK,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAC7C,GAAG,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAC3C;QACJ;IACJ;IAEQ,mBAAmB,GAAA;;AAEvB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAChC,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE;AAC9D,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU;YAC3C;iBAAO,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnD,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;YAChE;AACJ,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,aAAa,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,QAAQ,GAAS,SAAS,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,KAAK,EAAE;gBACP,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;YACvD;QACJ;AAEA,QAAA,OAAO,QAAQ;IACnB;AAEQ,IAAA,aAAa,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,QAAQ,GAAS,SAAS,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACtF,IAAI,GAAG,EAAE;gBACL,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC;YACrD;QACJ;AAEA,QAAA,OAAO,QAAQ;IACnB;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB;QACJ;QACA,IAAI,CAAC,iBAAiB,EAAE;QAExB,MAAM,KAAK,GAAW,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE;AAC5B,gBAAA,IAAI,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;oBAC5D,IAAI,CAAC,eAAe,EAAE;gBAC1B;YACJ;AACA,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AACd,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B;AACA,YAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1B;QACJ;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QACnC;AAAO,aAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAChC;QACA,IAAI,CAAC,sBAAsB,EAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC7B;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAA+B;AACnH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAA6B;YAC7G,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;YAC/G,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3E;IACJ;AAEQ,IAAA,YAAY,CAAC,SAAiB,EAAA;QAClC,OAAO;AACH,YAAA,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI;YAC3B,GAAG,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;SACjE;IACL;AAEQ,IAAA,cAAc,CAAC,KAAgB,EAAA;AACnC,QAAA,IAAI,KAAK;AACT,QAAA,IAAI,GAAG;QACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACtB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;QAClD;QACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpB,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C;AAEA,QAAA,IAAI,KAAK,IAAI,GAAG,EAAE;AACd,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;QACzB;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAa,EAAE,GAAG,EAAE,KAAK,CAAC,GAAW,EAAE;IACjE;IAEQ,gBAAgB,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC;AAChB,cAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,aAAa;AAC9D,cAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7B,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACnB,YAAA,SAAS,CAAC,KAAK,EAAE,OAAO;AACnB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,CAAC,MAAM,EAAE;gBACjB;AACJ,YAAA,CAAC,CAAC;AACV,QAAA,CAAC,CAAC;IACN;IAEQ,2BAA2B,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAA+B;AACnH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAA6B;AAC7G,YAAA,IAAI,KAAK,IAAI,GAAG,EAAE;gBACd,KAAK,CAAC,cAAc,CAAC;AAChB,qBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;qBAC9B,SAAS,CAAC,KAAK,IAAG;AACf,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,wBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;oBACtD;yBAAO;AACH,wBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;oBAC5C;AACA,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7C,wBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBAC7B;AACJ,gBAAA,CAAC,CAAC;gBACN,GAAG,CAAC,cAAc,CAAC;AACd,qBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;qBAC9B,SAAS,CAAC,KAAK,IAAG;AACf,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,wBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAa,EAAE;oBAChE;yBAAO;AACH,wBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAa,EAAE;oBACpD;AACA,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7C,wBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBAC7B;AACJ,gBAAA,CAAC,CAAC;YACV;QACJ;IACJ;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC7B,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM;AAC3C,qBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;qBAC9B,SAAS,CAAC,MAAK;AACZ,oBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;wBAChB,IAAI,CAAC,oBAAoB,EAAE;oBAC/B;AACJ,gBAAA,CAAC,CAAC;AACV,YAAA,CAAC,CAAC;QACN;aAAO;YACH,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM;AAC9C,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,MAAK;AACZ,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,oBAAoB,EAAE;gBAC/B;AACJ,YAAA,CAAC,CAAC;QACV;IACJ;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC7B,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO;AAC5C,qBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;qBAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAChD,YAAA,CAAC,CAAC;QACN;IACJ;IAEQ,sBAAsB,GAAA;QAC1B,IAAI,CAAC,iBAAiB,GAAG;AACrB,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,cAAc,EAAE;SACnB;AACD,QAAA,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjG,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;IACrE;IAEQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,eAAe,CAAC;AACtG,YAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC;QACtG;IACJ;IAEQ,eAAe,GAAA;;;AAGnB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACxG,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAAC;AACrF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAAC;YACjF,IAAI,CAAC,MAAM,GAAG;AACV,gBAAA,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,KAAa;AACzC,gBAAA,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC;aAC3B;QACL;IACJ;IAEQ,YAAY,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,0BAA0B,CAA+B;AACpH,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,wBAAwB,CAA6B;AAC9G,QAAA,IAAI,KAAK,IAAI,GAAG,EAAE;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;YAClE,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;YAC7C,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC;QAC7C;IACJ;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAG;YAC7B,MAAM,KAAK,GAAG,CAAoC;YAClD,KAAK,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3D,QAAA,CAAC,CAAC;IACN;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAG;YAC7B,MAAM,KAAK,GAAG,CAAoC;YAClD,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;gBACvD,KAAK,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;YACvD;AACJ,QAAA,CAAC,CAAC;IACN;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAG;YAC7B,MAAM,KAAK,GAAG,CAAoC;YAClD,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7C,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,4BAA4B,CAAC,iBAAgD,EAAA;AACjF,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,QAAQ;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU;QAC/D,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACnC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,iBAAiB,CAAC,KAAK;QAClD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QACzC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACrD,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB;QAC1D,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACrD,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;QAC7D,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACnD,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;QACzD,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QAC7C,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAU,KAAK,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAE3G,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAClC,QAAA,iBAAiB,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;AAClF,QAAA,iBAAiB,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACrF,QAAA,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AACpD,QAAA,iBAAiB,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAChE,QAAA,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAClD,QAAA,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QACxD,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7F,QAAA,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;YACjC,IAAI,CAAC,KAAK,EAAE;AAChB,QAAA,CAAC,CAAC;AACF,QAAA,iBAAiB,CAAC;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,CAAY,KAAI;YACxB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,EAAE;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C;AAEA,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACrB,IAAI,CAAC,KAAK,EAAE;YACZ;AACJ,QAAA,CAAC,CAAC;IACN;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB;QACJ;QACA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAC/E,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE;QACrD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3F;QACA,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1F;IACJ;IAEQ,eAAe,GAAA;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClD,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjC;AAEQ,IAAA,uBAAuB,CAAC,KAAgB,EAAA;AAC5C,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;AACzD,YAAA,MAAM,sBAAsB,GAAG,KAAK,CAAC,IAAI,CACrC,aAAa,CAAC;gBACV,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAClE,OAAO,CAAC,sBAAsB;QAClC;AACA,QAAA,OAAO,KAAK;IAChB;IAEQ,sBAAsB,CAAC,KAAK,GAAG,IAAI,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU;YACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU;QACtD;IACJ;8GAlwCS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,iMAgDhB,gBAAgB,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAkOhB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAIhB,gBAAgB,CAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EArSzB;YACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,2BAA2B,EAAE,KAAK,EAAE,IAAI,EAAE;YACrF,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,2BAA2B,EAAE,KAAK,EAAE,IAAI;AAClF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoVa,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,gBAAgB,gFAGhB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIzB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAInD,uCAAuC,iFAGvC,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGlC,qCAAqC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAvBlC,+BAA+B,+EARrC,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIhD,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtahC,6/EA4DA,4CD+BQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,iBAAiB,0HACjB,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,wHACzB,yBAAyB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGpB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAlBvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,SAAA,EAEtB;wBACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,6BAA6B,EAAE,KAAK,EAAE,IAAI,EAAE;wBACrF,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,6BAA6B,EAAE,KAAK,EAAE,IAAI;qBAClF,EAAA,OAAA,EACQ;wBACL,gBAAgB;wBAChB,gBAAgB;wBAChB,sBAAsB;wBACtB,iBAAiB;wBACjB,kBAAkB;wBAClB,kBAAkB;wBAClB,yBAAyB;wBACzB;AACH,qBAAA,EAAA,QAAA,EAAA,6/EAAA,EAAA;;sBAqBA;;sBAeA;;sBAcA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC;;sBAeA;;sBAuBA;;sBAmBA;;sBAeA;;sBAWA;;sBASA;;sBAgBA;;sBAmBA;;sBAkBA;;sBAYA;;sBAoBA;;sBAgBA;;sBAcA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAIrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAoBrC;;sBAUA;;sBAEA;;sBAIA,WAAW;uBAAC,6BAA6B;;sBAGzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;sBAI5D,SAAS;uBAAC,iBAAiB;;sBAI3B,eAAe;uBAAC,+BAA+B;;sBAG/C,YAAY;uBAAC,iBAAiB;;sBAG9B,YAAY;uBAAC,gBAAgB;;sBAG7B,YAAY;uBAAC,yBAAyB;;sBAItC,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,8BAA8B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAIlE,YAAY;uBAAC,uCAAuC;;sBAGpD,YAAY;uBAAC,kCAAkC;;sBAG/C,YAAY;uBAAC,qCAAqC;;sBAqBlD;;sBAqBA;;sBA4DA;;sBA8FA,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE5nBvC;AACO,MAAM,gCAAgC,GAAG;IAC5C,2BAA2B;IAC3B,wBAAwB;IACxB,uBAAuB;IACvB,0BAA0B;IAC1B,wBAAwB;IACxB,8BAA8B;IAC9B,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,kCAAkC;IAClC,qCAAqC;IACrC;;;ACpBJ;;;;AAIG;MASU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAAAA,sBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,kCAAA,EAAA,EAAA,CAAA,qCAAA,EAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,OAAA,EAAA,CAAAA,sBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,kCAAA,EAAA,EAAA,CAAA,qCAAA,EAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAAAA,sBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN;AACJ,iBAAA;;;ACZD;;;;AAIG;MASU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAxB,wBAAwB,EAAA,OAAA,EAAA,CAAAC,2BAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,uBAAA,EAAAC,0BAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,EAAA,CAAA,iBAAA,EAAAA,EAAA,CAAA,kBAAA,EAAAA,EAAA,CAAA,kBAAA,EAAAA,EAAA,CAAA,gBAAA,EAAAC,EAAA,CAAA,kCAAA,EAAAA,EAAA,CAAA,qCAAA,EAAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,OAAA,EAAA,CAAAL,2BAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,uBAAA,EAAAC,0BAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,EAAA,CAAA,iBAAA,EAAAA,EAAA,CAAA,kBAAA,EAAAA,EAAA,CAAA,kBAAA,EAAAA,EAAA,CAAA,gBAAA,EAAAC,EAAA,CAAA,kCAAA,EAAAA,EAAA,CAAA,qCAAA,EAAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,CAAA,CAAA;+GAAxB,wBAAwB,EAAA,OAAA,EAAA,CAAAL,2BAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,uBAAA,EAAAC,0BAAA,EAAAC,wBAAA,CAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN;AACJ,iBAAA;;;ACfD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-date-picker.mjs","sources":["../../../projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/predefined-ranges/predefined-ranges-area.component.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/predefined-ranges/predefined-ranges-area-component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/calendar-container/calendar-container.component.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/calendar-container/calendar-container.component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/public_api.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker-inputs.common.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.html","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.html","../../../projects/igniteui-angular/date-picker/src/date-range-picker/public_api.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.module.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.module.ts","../../../projects/igniteui-angular/date-picker/src/igniteui-angular-date-picker.ts"],"sourcesContent":["import {\n AfterContentChecked,\n AfterViewInit, booleanAttribute, ContentChildren, Directive, ElementRef, EventEmitter,\n inject,\n Input, LOCALE_ID, OnDestroy, Output, QueryList, ViewChild\n} from '@angular/core';\nimport { getLocaleFirstDayOfWeek } from \"@angular/common\";\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IGX_INPUT_GROUP_TYPE, IgxInputGroupComponent, IgxInputGroupType, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { DateRange, EditorProvider, IBaseCancelableBrowserEventArgs, IBaseEventArgs, IgxOverlayOutletDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IToggleView, OverlaySettings, PickerHeaderOrientation, PickerInteractionMode, WEEKDAYS } from 'igniteui-angular/core';\n\n@Directive()\nexport abstract class PickerBaseDirective implements IToggleView, EditorProvider, AfterViewInit, AfterContentChecked, OnDestroy {\n public element = inject(ElementRef);\n protected _localeId = inject<string>(LOCALE_ID);\n protected _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n \n /**\n * The editor's input mask.\n *\n * @remarks\n * Also used as a placeholder when none is provided.\n *\n * @example\n * ```html\n * <igx-date-picker inputFormat=\"dd/MM/yy\"></igx-date-picker>\n * ```\n */\n @Input()\n public inputFormat: string;\n\n /**\n * The format used to display the picker's value when it's not being edited.\n *\n * @remarks\n * Uses Angular's DatePipe.\n *\n * @example\n * ```html\n * <igx-date-picker displayFormat=\"EE/M/yy\"></igx-date-picker>\n * ```\n *\n */\n @Input()\n public displayFormat: string;\n\n /**\n * Sets the `placeholder` of the picker's input.\n *\n * @example\n * ```html\n * <igx-date-picker [placeholder]=\"'Choose your date'\"></igx-date-picker>\n * ```\n */\n @Input()\n public placeholder = '';\n\n /**\n * Can be `dropdown` with editable input field or `dialog` with readonly input field.\n *\n * @remarks\n * Default mode is `dropdown`\n *\n * @example\n * ```html\n * <igx-date-picker mode=\"dialog\"></igx-date-picker>\n * ```\n */\n @Input()\n public mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n\n /**\n * Gets/Sets the orientation of the `IgxDatePickerComponent` header.\n *\n * @example\n * ```html\n * <igx-date-picker headerOrientation=\"vertical\"></igx-date-picker>\n * ```\n */\n @Input()\n public headerOrientation: PickerHeaderOrientation = PickerHeaderOrientation.Horizontal;\n\n /**\n * Gets/Sets whether the header is hidden in dialog mode.\n *\n * @example\n * ```html\n * <igx-date-picker mode=\"dialog\" [hideHeader]=\"true\"></igx-date-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hideHeader = false;\n\n /**\n * Overlay settings used to display the pop-up element.\n *\n * @example\n * ```html\n * <igx-date-picker [overlaySettings]=\"customOverlaySettings\"></igx-date-picker>\n * ```\n */\n @Input()\n public overlaySettings: OverlaySettings;\n\n /**\n * Enables or disables the picker.\n *\n * @example\n * ```html\n * <igx-date-picker [disabled]=\"'true'\"></igx-date-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public disabled = false;\n\n /**\n * @example\n * ```html\n * <igx-date-picker locale=\"jp\"></igx-date-picker>\n * ```\n */\n /**\n * Gets the `locale` of the date-picker.\n * If not set, defaults to applciation's locale..\n */\n @Input()\n public get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the date-picker.\n * Expects a valid BCP 47 language tag.\n */\n public set locale(value: string) {\n this._locale = value;\n // if value is invalid, set it back to _localeId\n try {\n getLocaleFirstDayOfWeek(this._locale);\n } catch (e) {\n this._locale = this._localeId;\n }\n }\n\n /**\n * Gets the start day of the week.\n * Can return a numeric or an enum representation of the week day.\n * If not set, defaults to the first day of the week for the application locale.\n */\n @Input()\n public get weekStart(): WEEKDAYS | number {\n return this._weekStart ?? getLocaleFirstDayOfWeek(this._locale);\n }\n\n /**\n * Sets the start day of the week.\n * Can be assigned to a numeric value or to `WEEKDAYS` enum value.\n */\n public set weekStart(value: WEEKDAYS | number) {\n this._weekStart = value;\n }\n\n /**\n * The container used for the pop-up element.\n *\n * @example\n * ```html\n * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n * <!-- ... -->\n * <igx-date-picker [outlet]=\"outlet\"></igx-date-picker>\n * <!-- ... -->\n * ```\n */\n @Input()\n public outlet: IgxOverlayOutletDirective | ElementRef;\n\n /**\n * Determines how the picker's input will be styled.\n *\n * @remarks\n * Default is `box`.\n *\n * @example\n * ```html\n * <igx-date-picker [type]=\"'line'\"></igx-date-picker>\n * ```\n */\n @Input()\n public set type(val: IgxInputGroupType) {\n this._type = val;\n }\n public get type(): IgxInputGroupType {\n return this._type || this._inputGroupType;\n }\n\n /**\n * Gets/Sets the default template editor's tabindex.\n *\n * @example\n * ```html\n * <igx-date-picker [tabIndex]=\"1\"></igx-date-picker>\n * ```\n */\n @Input()\n public tabIndex: number | string;\n\n /**\n * Emitted when the calendar has started opening, cancelable.\n *\n * @example\n * ```html\n * <igx-date-picker (opening)=\"handleOpening($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public opening = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the calendar has opened.\n *\n * @example\n * ```html\n * <igx-date-picker (opened)=\"handleOpened($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public opened = new EventEmitter<IBaseEventArgs>();\n\n /**\n * Emitted when the calendar has started closing, cancelable.\n *\n * @example\n * ```html\n * <igx-date-picker (closing)=\"handleClosing($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public closing = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the calendar has closed.\n *\n * @example\n * ```html\n * <igx-date-picker (closed)=\"handleClosed($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public closed = new EventEmitter<IBaseEventArgs>();\n\n /** @hidden @internal */\n @ContentChildren(IgxPickerToggleComponent, { descendants: true })\n public toggleComponents: QueryList<IgxPickerToggleComponent>;\n\n /** @hidden @internal */\n @ContentChildren(IgxPickerClearComponent, { descendants: true })\n public clearComponents: QueryList<IgxPickerClearComponent>;\n\n @ContentChildren(IgxPrefixDirective, { descendants: true })\n protected prefixes: QueryList<IgxPrefixDirective>;\n\n @ContentChildren(IgxSuffixDirective, { descendants: true })\n protected suffixes: QueryList<IgxSuffixDirective>;\n\n @ViewChild(IgxInputGroupComponent)\n protected inputGroup: IgxInputGroupComponent;\n\n protected _locale: string;\n protected _collapsed = true;\n protected _type: IgxInputGroupType;\n protected _minValue: Date | string;\n protected _maxValue: Date | string;\n protected _weekStart: WEEKDAYS | number;\n protected abstract get toggleContainer(): HTMLElement | undefined;\n\n /**\n * Gets the picker's pop-up state.\n *\n * @example\n * ```typescript\n * const state = this.picker.collapsed;\n * ```\n */\n public get collapsed(): boolean {\n return this._collapsed;\n }\n\n /** @hidden @internal */\n public get isDropdown(): boolean {\n return this.mode === PickerInteractionMode.DropDown;\n }\n\n /**\n * Returns if there's focus within the picker's element OR popup container\n * @hidden @internal\n */\n public get isFocused(): boolean {\n const document = this.element.nativeElement?.getRootNode() as Document | ShadowRoot;\n if (!document?.activeElement) return false;\n\n return this.element.nativeElement.contains(document.activeElement)\n || !this.collapsed && this.toggleContainer.contains(document.activeElement);\n }\n\n protected _destroy$ = new Subject<void>();\n\n // D.P. EventEmitter<string | Date | DateRange | null> throws on strict checks for more restrictive overrides\n // w/ TS2416 Type 'string | Date ...' not assignable to type 'DateRange' due to observer method check\n public abstract valueChange: EventEmitter<any>;\n\n constructor() {\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n public ngAfterViewInit(): void {\n this.subToIconsClicked(this.toggleComponents, () => this.toggle());\n this.subToIconsClicked(this.clearComponents, () => this.clear());\n }\n\n /** @hidden @internal */\n public ngAfterContentChecked(): void {\n if (this.inputGroup && this.prefixes?.length > 0) {\n this.inputGroup.prefixes = this.prefixes;\n }\n\n if (this.inputGroup && this.suffixes?.length > 0) {\n this.inputGroup.suffixes = this.suffixes;\n }\n }\n\n /** @hidden @internal */\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /** Subscribes to the click events of toggle/clear icons in a query */\n private subToIconsClicked(\n components: QueryList<IgxPickerToggleComponent | IgxPickerClearComponent>,\n handler: () => void\n ): void {\n const subscribeToClick = componentList => {\n componentList.forEach(component => {\n component.clicked\n .pipe(takeUntil(merge(componentList.changes, this._destroy$)))\n .subscribe(handler);\n });\n };\n\n subscribeToClick(components);\n\n components.changes.pipe(takeUntil(this._destroy$))\n .subscribe(() => subscribeToClick(components));\n }\n\n public abstract select(value: Date | DateRange | string): void;\n public abstract open(settings?: OverlaySettings): void;\n public abstract toggle(settings?: OverlaySettings): void;\n public abstract close(): void;\n public abstract clear(): void;\n public abstract getEditElement(): HTMLInputElement;\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { CalendarDay, CustomDateRange, DateRange, DateRangePickerResourceStringsEN, IDateRangePickerResourceStrings } from 'igniteui-angular/core';\n\n\ntype PredefinedRangeKey = 'last7Days' | 'currentMonth' | 'last30Days' | 'yearToDate';\n\n@Component({\n selector: 'igx-predefined-ranges-area',\n standalone: true,\n imports: [IgxChipComponent],\n templateUrl: './predefined-ranges-area-component.html',\n styles: [`\n :host { display:block; }\n .igx-predefined-ranges {\n display:flex; flex-wrap:wrap; gap:.5rem; padding:.5rem .75rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IgxPredefinedRangesAreaComponent {\n @Input() public usePredefinedRanges = false;\n @Input() public customRanges: CustomDateRange[] = [];\n @Input() public resourceStrings: IDateRangePickerResourceStrings = DateRangePickerResourceStringsEN as any;\n\n @Output() public rangeSelect = new EventEmitter<DateRange>();\n\n public get ranges(): CustomDateRange[] {\n const base = this.usePredefinedRanges ? this.getPredefinedRanges() : [];\n return [...base, ...(this.customRanges ?? [])];\n }\n\n public trackByLabel = (i: number, r: CustomDateRange) => r.label;\n\n public onSelect(range: DateRange) {\n this.rangeSelect.emit(range);\n }\n\n private getLabel(rs: any, shortKey: string, prefixedKey: string, fallback: string): string {\n return rs?.[shortKey] ?? rs?.[prefixedKey] ?? fallback;\n }\n\n private getPredefinedRanges(): CustomDateRange[] {\n const today = CalendarDay.today;\n const rs: any = this.resourceStrings ?? {};\n\n const labels = {\n last7Days: this.getLabel(rs, 'last7Days', 'igx_date_range_picker_last7Days', 'Last 7 Days'),\n currentMonth: this.getLabel(rs, 'currentMonth', 'igx_date_range_picker_currentMonth', 'Current Month'),\n last30Days: this.getLabel(rs, 'last30Days', 'igx_date_range_picker_last30Days', 'Last 30 Days'),\n yearToDate: this.getLabel(rs, 'yearToDate', 'igx_date_range_picker_yearToDate', 'Year to Date')\n };\n\n const startOfMonth = new Date(today.native.getFullYear(), today.native.getMonth(), 1);\n const endOfMonth = new Date(today.native.getFullYear(), today.native.getMonth() + 1, 0);\n const startOfYear = new Date(today.native.getFullYear(), 0, 1);\n\n const predefinedRanges: { key: PredefinedRangeKey; get: () => { start: Date; end: Date } }[] = [\n { key: 'last7Days', get: () => ({ start: today.add('day', -7).native, end: today.native }) },\n { key: 'currentMonth', get: () => ({ start: startOfMonth, end: endOfMonth }) },\n { key: 'last30Days', get: () => ({ start: today.add('day', -29).native, end: today.native }) },\n { key: 'yearToDate', get: () => ({ start: startOfYear, end: today.native }) },\n ];\n\n return predefinedRanges.map(range => ({\n label: labels[range.key],\n dateRange: range.get()\n }));\n }\n}\n","<div class=\"igx-predefined-ranges\" role=\"group\" aria-label=\"Predefined ranges\">\n @for (r of ranges; track r.label) {\n <igx-chip (click)=\"onSelect(r.dateRange)\">\n {{ r.label }}\n </igx-chip>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ViewChild,\n Output, EventEmitter,\n HostListener,\n HostBinding\n} from '@angular/core';\nimport { IgxButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxCalendarComponent } from 'igniteui-angular/calendar';\nimport { IgxDividerDirective } from 'igniteui-angular/directives';\nimport { IBaseEventArgs, DateRange, CustomDateRange, PickerInteractionMode, IDateRangePickerResourceStrings, IgxPickerActionsDirective } from 'igniteui-angular/core';\nimport { IgxPredefinedRangesAreaComponent } from '../../date-range-picker/predefined-ranges/predefined-ranges-area.component';\n\n/** @hidden */\n@Component({\n selector: 'igx-calendar-container',\n styles: [':host {display: block;}'],\n templateUrl: 'calendar-container.component.html',\n imports: [\n IgxButtonDirective,\n IgxRippleDirective,\n IgxCalendarComponent,\n NgTemplateOutlet,\n IgxDividerDirective,\n IgxPredefinedRangesAreaComponent\n ]\n})\nexport class IgxCalendarContainerComponent {\n @ViewChild(IgxCalendarComponent, { static: true })\n public calendar: IgxCalendarComponent;\n\n @Output()\n public calendarClose = new EventEmitter<IBaseEventArgs>();\n\n @Output()\n public calendarCancel = new EventEmitter<IBaseEventArgs>();\n\n @Output()\n public todaySelection = new EventEmitter<IBaseEventArgs>();\n\n @Output()\n public rangeSelected = new EventEmitter<DateRange>();\n\n\n @HostBinding('class.igx-date-picker')\n public styleClass = 'igx-date-picker';\n\n @HostBinding('class.igx-date-picker--dropdown')\n public get dropdownCSS(): boolean {\n return this.mode === PickerInteractionMode.DropDown;\n }\n\n public usePredefinedRanges = false;\n public customRanges: CustomDateRange[] = [];\n public resourceStrings!: IDateRangePickerResourceStrings;\n public vertical = false;\n public closeButtonLabel: string;\n public cancelButtonLabel: string;\n public todayButtonLabel: string;\n public mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n public pickerActions: IgxPickerActionsDirective;\n\n @HostListener('keydown.alt.arrowup', ['$event'])\n public onEscape(event) {\n event.preventDefault();\n this.calendarClose.emit();\n }\n\n public get isReadonly() {\n return this.mode === PickerInteractionMode.Dialog;\n }\n}\n\n/** @hidden */\n\n","<ng-template #defaultPickerActions>\n @if (closeButtonLabel || cancelButtonLabel || todayButtonLabel) {\n <div class=\"igx-date-picker__buttons\">\n @if (cancelButtonLabel) {\n <button\n #cancelButton type=\"button\"\n igxButton=\"flat\" igxRipple\n (click)=\"calendarCancel.emit({ owner: this})\"\n >\n {{ cancelButtonLabel }}\n </button>\n }\n @if (closeButtonLabel) {\n <button\n #closeButton\n type=\"button\"\n igxButton=\"flat\"\n igxRipple\n (click)=\"calendarClose.emit({ owner: this})\"\n >\n {{ closeButtonLabel }}\n </button>\n }\n @if (todayButtonLabel) {\n <button\n #todayButton\n type=\"button\"\n igxButton=\"flat\"\n igxRipple\n (click)=\"todaySelection.emit({ owner: this })\"\n >\n {{ todayButtonLabel }}\n </button>\n }\n </div>\n }\n</ng-template>\n\n<igx-calendar></igx-calendar>\n @if( usePredefinedRanges || (customRanges?.length || 0) > 0 ){\n <igx-predefined-ranges-area\n [usePredefinedRanges]=\"usePredefinedRanges\"\n [customRanges]=\"customRanges\"\n [resourceStrings]=\"resourceStrings\"\n (rangeSelect)=\"rangeSelected.emit($event)\">\n </igx-predefined-ranges-area>\n }\n@if (pickerActions?.template || (closeButtonLabel || todayButtonLabel)) {\n <igx-divider></igx-divider>\n}\n@if (pickerActions?.template || (closeButtonLabel || cancelButtonLabel || todayButtonLabel)) {\n <div class=\"igx-date-picker__actions\">\n <ng-container\n *ngTemplateOutlet=\"\n pickerActions?.template || defaultPickerActions;\n context: { $implicit: calendar }\n \"\n >\n </ng-container>\n </div>\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n PipeTransform,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective,\n IFormattingViews, IFormattingOptions\n} from 'igniteui-angular/calendar';\nimport {\n IgxLabelDirective, IgxInputState, IgxInputGroupComponent, IgxPrefixDirective, IgxInputDirective, IgxSuffixDirective,\n IgxReadOnlyInputDirective\n} from 'igniteui-angular/input-group';\nimport { fromEvent, Subscription, noop, MonoTypeOperatorFunction } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { IgxDateTimeEditorDirective, IgxTextSelectionDirective } from 'igniteui-angular/directives';\nimport {\n AbsoluteScrollStrategy,\n AutoPositionStrategy,\n IgxOverlayService,\n OverlayCancelableEventArgs,\n OverlayEventArgs,\n OverlaySettings,\n IgxPickerActionsDirective,\n DatePickerResourceStringsEN,\n IDatePickerResourceStrings,\n DateRangeDescriptor,\n DateRangeType,\n IBaseCancelableBrowserEventArgs,\n isDate,\n PlatformUtil,\n getCurrentResourceStrings,\n PickerCalendarOrientation,\n DateTimeUtil,\n DatePartDeltas,\n DatePart,\n isDateInRanges,\n IgxOverlayOutletDirective\n} from 'igniteui-angular/core';\nimport { IDatePickerValidationFailedEventArgs } from './date-picker.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { PickerBaseDirective } from './picker-base.directive';\nimport { IgxCalendarContainerComponent } from './calendar-container/calendar-container.component';\n\nlet NEXT_ID = 0;\n\n/**\n * Date Picker displays a popup calendar that lets users select a single date.\n *\n * @igxModule IgxDatePickerModule\n * @igxTheme igx-calendar-theme, igx-icon-theme\n * @igxGroup Scheduling\n * @igxKeywords datepicker, calendar, schedule, date\n * @example\n * ```html\n * <igx-date-picker [(ngModel)]=\"selectedDate\"></igx-date-picker>\n * ```\n */\n@Component({\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxDatePickerComponent, multi: true },\n { provide: NG_VALIDATORS, useExisting: IgxDatePickerComponent, multi: true }\n ],\n selector: 'igx-date-picker',\n templateUrl: 'date-picker.component.html',\n styles: [':host { display: block; }'],\n imports: [\n IgxInputGroupComponent,\n IgxPrefixDirective,\n IgxIconComponent,\n IgxInputDirective,\n IgxReadOnlyInputDirective,\n IgxDateTimeEditorDirective,\n IgxTextSelectionDirective,\n IgxSuffixDirective\n ]\n})\nexport class IgxDatePickerComponent extends PickerBaseDirective implements ControlValueAccessor, Validator,\n OnInit, AfterViewInit, OnDestroy, AfterViewChecked, AfterContentChecked {\n private _overlayService = inject<IgxOverlayService>(IgxOverlayService);\n private _injector = inject(Injector);\n private _renderer = inject(Renderer2);\n private platform = inject(PlatformUtil);\n private cdr = inject(ChangeDetectorRef);\n\n\n /**\n * Gets/Sets whether the inactive dates will be hidden.\n *\n * @remarks\n * Applies to dates that are out of the current month.\n * Default value is `false`.\n * @example\n * ```html\n * <igx-date-picker [hideOutsideDays]=\"true\"></igx-date-picker>\n * ```\n * @example\n * ```typescript\n * let hideOutsideDays = this.datePicker.hideOutsideDays;\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hideOutsideDays: boolean;\n\n /**\n * Gets/Sets the number of month views displayed.\n *\n * @remarks\n * Default value is `1`.\n *\n * @example\n * ```html\n * <igx-date-picker [displayMonthsCount]=\"2\"></igx-date-picker>\n * ```\n * @example\n * ```typescript\n * let monthViewsDisplayed = this.datePicker.displayMonthsCount;\n * ```\n */\n @Input()\n public displayMonthsCount = 1;\n\n /**\n * Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.\n *\n * @example\n * <igx-date-picker orientation=\"vertical\"></igx-date-picker>\n */\n @Input()\n public orientation: PickerCalendarOrientation = PickerCalendarOrientation.Horizontal;\n\n /**\n * Show/hide week numbers\n *\n * @example\n * ```html\n * <igx-date-picker [showWeekNumbers]=\"true\"></igx-date-picker>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers: boolean;\n\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date, or the value of the picker, if set.\n */\n @Input()\n public get activeDate(): Date {\n const today = new Date(new Date().setHours(0, 0, 0, 0));\n const dateValue = DateTimeUtil.isValidDate(this._dateValue) ? new Date(this._dateValue.setHours(0, 0, 0, 0)) : null;\n return this._activeDate ?? dateValue ?? this._calendar?.activeDate ?? today;\n }\n\n public set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n /**\n * Gets/Sets a custom formatter function on the selected or passed date.\n *\n * @example\n * ```html\n * <igx-date-picker [value]=\"date\" [formatter]=\"formatter\"></igx-date-picker>\n * ```\n */\n @Input()\n public formatter: (val: Date) => string;\n\n /**\n * Gets/Sets the today button's label.\n *\n * @example\n * ```html\n * <igx-date-picker todayButtonLabel=\"Today\"></igx-date-picker>\n * ```\n */\n @Input()\n public todayButtonLabel: string;\n\n /**\n * Gets/Sets the cancel button's label.\n *\n * @example\n * ```html\n * <igx-date-picker cancelButtonLabel=\"Cancel\"></igx-date-picker>\n * ```\n */\n @Input()\n public cancelButtonLabel: string;\n\n /**\n * Specify if the currently spun date segment should loop over.\n *\n * @example\n * ```html\n * <igx-date-picker [spinLoop]=\"false\"></igx-date-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public spinLoop = true;\n\n /**\n * Delta values used to increment or decrement each editor date part on spin actions.\n * All values default to `1`.\n *\n * @example\n * ```html\n * <igx-date-picker [spinDelta]=\"{ date: 5, month: 2 }\"></igx-date-picker>\n * ```\n */\n @Input()\n public spinDelta: Pick<DatePartDeltas, 'date' | 'month' | 'year'>;\n\n /**\n * Gets/Sets the container used for the popup element.\n *\n * @remarks\n * `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.\n * @example\n * ```html\n * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n * //..\n * <igx-date-picker [outlet]=\"outlet\"></igx-date-picker>\n * //..\n * ```\n */\n @Input()\n public override outlet: IgxOverlayOutletDirective | ElementRef;\n\n /**\n * Gets/Sets the value of `id` attribute.\n *\n * @remarks If not provided it will be automatically generated.\n * @example\n * ```html\n * <igx-date-picker [id]=\"'igx-date-picker-3'\" cancelButtonLabel=\"cancel\" todayButtonLabel=\"today\"></igx-date-picker>\n * ```\n */\n @Input()\n @HostBinding('attr.id')\n public id = `igx-date-picker-${NEXT_ID++}`;\n\n //#region calendar members\n\n /**\n * Gets/Sets the format views of the `IgxDatePickerComponent`.\n *\n * @example\n * ```typescript\n * let formatViews = this.datePicker.formatViews;\n * this.datePicker.formatViews = {day:false, month: false, year:false};\n * ```\n */\n @Input()\n public formatViews: IFormattingViews;\n\n /**\n * Gets/Sets the disabled dates descriptors.\n *\n * @example\n * ```typescript\n * let disabledDates = this.datepicker.disabledDates;\n * this.datePicker.disabledDates = [ {type: DateRangeType.Weekends}, ...];\n * ```\n */\n @Input()\n public get disabledDates(): DateRangeDescriptor[] {\n return this._disabledDates;\n }\n public set disabledDates(value: DateRangeDescriptor[]) {\n this._disabledDates = value;\n this._onValidatorChange();\n }\n\n /**\n * Gets/Sets the special dates descriptors.\n *\n * @example\n * ```typescript\n * let specialDates = this.datepicker.specialDates;\n * this.datePicker.specialDates = [ {type: DateRangeType.Weekends}, ... ];\n * ```\n */\n @Input()\n public get specialDates(): DateRangeDescriptor[] {\n return this._specialDates;\n }\n public set specialDates(value: DateRangeDescriptor[]) {\n this._specialDates = value;\n }\n\n\n /**\n * Gets/Sets the format options of the `IgxDatePickerComponent`.\n *\n * @example\n * ```typescript\n * this.datePicker.calendarFormat = {day: \"numeric\", month: \"long\", weekday: \"long\", year: \"numeric\"};\n * ```\n */\n @Input()\n public calendarFormat: IFormattingOptions;\n\n //#endregion\n\n /**\n * Gets/Sets the selected date.\n *\n * @example\n * ```html\n * <igx-date-picker [value]=\"date\"></igx-date-picker>\n * ```\n */\n @Input()\n public get value(): Date | string {\n return this._value;\n }\n public set value(date: Date | string) {\n this._value = date;\n this.setDateValue(date);\n if (this.dateTimeEditor.value !== date) {\n this.dateTimeEditor.value = this._dateValue;\n }\n this.valueChange.emit(this.dateValue);\n this._onChangeCallback(this.dateValue);\n }\n\n /**\n * The minimum value the picker will accept.\n *\n * @example\n * <igx-date-picker [minValue]=\"minDate\"></igx-date-picker>\n */\n @Input()\n public set minValue(value: Date | string) {\n this._minValue = value;\n this._onValidatorChange();\n }\n\n public get minValue(): Date | string {\n return this._minValue;\n }\n\n /**\n * The maximum value the picker will accept.\n *\n * @example\n * <igx-date-picker [maxValue]=\"maxDate\"></igx-date-picker>\n */\n @Input()\n public set maxValue(value: Date | string) {\n this._maxValue = value;\n this._onValidatorChange();\n }\n\n public get maxValue(): Date | string {\n return this._maxValue;\n }\n\n /**\n * Gets/Sets the resource strings for the picker's default toggle icon.\n * By default it uses EN resources.\n */\n @Input()\n public resourceStrings: IDatePickerResourceStrings;\n\n /** @hidden @internal */\n @Input({ transform: booleanAttribute })\n public readOnly = false;\n\n /**\n * Emitted when the picker's value changes.\n *\n * @remarks\n * Used for `two-way` bindings.\n *\n * @example\n * ```html\n * <igx-date-picker [(value)]=\"date\"></igx-date-picker>\n * ```\n */\n @Output()\n public valueChange = new EventEmitter<Date>();\n\n /**\n * Emitted when the user types/spins invalid date in the date-picker editor.\n *\n * @example\n * ```html\n * <igx-date-picker (validationFailed)=\"onValidationFailed($event)\"></igx-date-picker>\n * ```\n */\n @Output()\n public validationFailed = new EventEmitter<IDatePickerValidationFailedEventArgs>();\n\n /** @hidden @internal */\n @ContentChild(IgxLabelDirective)\n public label: IgxLabelDirective;\n\n @ContentChild(IgxCalendarHeaderTitleTemplateDirective)\n private headerTitleTemplate: IgxCalendarHeaderTitleTemplateDirective;\n\n @ContentChild(IgxCalendarHeaderTemplateDirective)\n private headerTemplate: IgxCalendarHeaderTemplateDirective;\n\n @ViewChild(IgxDateTimeEditorDirective, { static: true })\n private dateTimeEditor: IgxDateTimeEditorDirective;\n\n @ViewChild(IgxInputGroupComponent, { read: ViewContainerRef })\n private viewContainerRef: ViewContainerRef;\n\n @ViewChild(IgxLabelDirective)\n private labelDirective: IgxLabelDirective;\n\n @ViewChild(IgxInputDirective)\n private inputDirective: IgxInputDirective;\n\n @ContentChild(IgxCalendarSubheaderTemplateDirective)\n private subheaderTemplate: IgxCalendarSubheaderTemplateDirective;\n\n @ContentChild(IgxPickerActionsDirective)\n private pickerActions: IgxPickerActionsDirective;\n\n private get dialogOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n }\n\n private get dropDownOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n }\n\n private get inputGroupElement(): HTMLElement {\n return this.inputGroup?.element.nativeElement.querySelector('.igx-input-group__bundle');\n }\n\n private get dateValue(): Date {\n return this._dateValue;\n }\n\n private get pickerFormatViews(): IFormattingViews {\n return Object.assign({}, this._defFormatViews, this.formatViews);\n }\n\n private get pickerCalendarFormat(): IFormattingOptions {\n return Object.assign({}, this._calendarFormat, this.calendarFormat);\n }\n\n /** @hidden @internal */\n public displayValue: PipeTransform = { transform: (date: Date) => this.formatter(date) };\n\n private _resourceStrings = getCurrentResourceStrings(DatePickerResourceStringsEN);\n private _dateValue: Date;\n private _overlayId: string;\n private _value: Date | string;\n private _ngControl: NgControl = null;\n private _statusChanges$: Subscription;\n private _calendar: IgxCalendarComponent;\n private _calendarContainer?: HTMLElement;\n private _specialDates: DateRangeDescriptor[] = null;\n private _disabledDates: DateRangeDescriptor[] = null;\n private _activeDate: Date = null;\n private _overlaySubFilter:\n [MonoTypeOperatorFunction<OverlayEventArgs>,\n MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [\n filter(x => x.id === this._overlayId),\n takeUntil(this._destroy$)\n ];\n private _dropDownOverlaySettings: OverlaySettings = {\n target: this.inputGroupElement,\n closeOnOutsideClick: true,\n modal: false,\n closeOnEscape: true,\n scrollStrategy: new AbsoluteScrollStrategy(),\n positionStrategy: new AutoPositionStrategy({\n openAnimation: fadeIn,\n closeAnimation: fadeOut\n })\n };\n private _dialogOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: true,\n closeOnEscape: true\n };\n private _calendarFormat: IFormattingOptions = {\n day: 'numeric',\n month: 'short',\n weekday: 'short',\n year: 'numeric'\n };\n private _defFormatViews: IFormattingViews = {\n day: false,\n month: true,\n year: false\n };\n private _onChangeCallback: (_: Date) => void = noop;\n private _onTouchedCallback: () => void = noop;\n private _onValidatorChange: () => void = noop;\n\n constructor() {\n super();\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n public get required(): boolean {\n if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {\n // Run the validation with empty object to check if required is enabled.\n const error = this._ngControl.control.validator({} as AbstractControl);\n return error && error.required;\n }\n\n return false;\n }\n\n /** @hidden @internal */\n public get pickerResourceStrings(): IDatePickerResourceStrings {\n return Object.assign({}, this._resourceStrings, this.resourceStrings);\n }\n\n protected override get toggleContainer(): HTMLElement | undefined {\n return this._calendarContainer;\n }\n\n /** @hidden @internal */\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case this.platform.KEYMAP.ARROW_UP:\n if (event.altKey) {\n this.close();\n }\n break;\n case this.platform.KEYMAP.ARROW_DOWN:\n if (event.altKey) {\n this.open();\n }\n break;\n case this.platform.KEYMAP.SPACE:\n event.preventDefault();\n this.open();\n break;\n }\n }\n\n /**\n * Opens the picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.open()\">Open Dialog</button>\n * ```\n */\n public open(settings?: OverlaySettings): void {\n if (!this.collapsed || this.disabled || this.readOnly) {\n return;\n }\n\n const overlaySettings = Object.assign({}, this.isDropdown\n ? this.dropDownOverlaySettings\n : this.dialogOverlaySettings\n , settings);\n\n if (this.isDropdown && this.inputGroupElement) {\n overlaySettings.target = this.inputGroupElement;\n }\n if (this.outlet) {\n overlaySettings.outlet = this.outlet;\n }\n this._overlayId = this._overlayService\n .attach(IgxCalendarContainerComponent, this.viewContainerRef, overlaySettings);\n this._overlayService.show(this._overlayId);\n }\n\n /**\n * Toggles the picker's dropdown or dialog\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.toggle()\">Toggle Dialog</button>\n * ```\n */\n public toggle(settings?: OverlaySettings): void {\n if (this.collapsed) {\n this.open(settings);\n } else {\n this.close();\n }\n }\n\n /**\n * Closes the picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.close()\">Close Dialog</button>\n * ```\n */\n public close(): void {\n if (!this.collapsed) {\n this._overlayService.hide(this._overlayId);\n }\n }\n\n /**\n * Selects a date.\n *\n * @remarks Updates the value in the input field.\n *\n * @example\n * ```typescript\n * this.datePicker.select(date);\n * ```\n * @param date passed date that has to be set to the calendar.\n */\n public select(value: Date): void {\n this.value = value;\n }\n\n /**\n * Selects today's date and closes the picker.\n *\n * @example\n * ```html\n * <igx-date-picker #picker></igx-date-picker>\n *\n * <button type=\"button\" igxButton (click)=\"picker.selectToday()\">Select Today</button>\n * ```\n * */\n public selectToday(): void {\n const today = new Date();\n today.setHours(0);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n this.select(today);\n this.close();\n }\n\n /**\n * Clears the input field and the picker's value.\n *\n * @example\n * ```typescript\n * this.datePicker.clear();\n * ```\n */\n public clear(): void {\n if (!this.disabled || !this.readOnly) {\n this._calendar?.deselectDate();\n this.dateTimeEditor.clear();\n }\n }\n\n /**\n * Increment a specified `DatePart`.\n *\n * @param datePart The optional DatePart to increment. Defaults to Date.\n * @param delta The optional delta to increment by. Overrides `spinDelta`.\n * @example\n * ```typescript\n * this.datePicker.increment(DatePart.Date);\n * ```\n */\n public increment(datePart?: DatePart, delta?: number): void {\n this.dateTimeEditor.increment(datePart, delta);\n }\n\n /**\n * Decrement a specified `DatePart`\n *\n * @param datePart The optional DatePart to decrement. Defaults to Date.\n * @param delta The optional delta to decrement by. Overrides `spinDelta`.\n * @example\n * ```typescript\n * this.datePicker.decrement(DatePart.Date);\n * ```\n */\n public decrement(datePart?: DatePart, delta?: number): void {\n this.dateTimeEditor.decrement(datePart, delta);\n }\n\n //#region Control Value Accessor\n /** @hidden @internal */\n public writeValue(value: Date | string) {\n this._value = value;\n this.setDateValue(value);\n if (this.dateTimeEditor.value !== value) {\n this.dateTimeEditor.value = this._dateValue;\n }\n }\n\n /** @hidden @internal */\n public registerOnChange(fn: any) {\n this._onChangeCallback = fn;\n }\n\n /** @hidden @internal */\n public registerOnTouched(fn: any) {\n this._onTouchedCallback = fn;\n }\n\n /** @hidden @internal */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n //#endregion\n\n //#region Validator\n /** @hidden @internal */\n public registerOnValidatorChange(fn: any) {\n this._onValidatorChange = fn;\n }\n\n /** @hidden @internal */\n public validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n // InvalidDate handling\n if (isDate(control.value) && !DateTimeUtil.isValidDate(control.value)) {\n return { value: true };\n }\n\n const errors = {};\n const value = DateTimeUtil.isValidDate(control.value) ? control.value : DateTimeUtil.parseIsoDate(control.value);\n if (value && this.disabledDates && isDateInRanges(value, this.disabledDates)) {\n Object.assign(errors, { dateIsDisabled: true });\n }\n Object.assign(errors, DateTimeUtil.validateMinMax(value, this.minValue, this.maxValue, false));\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n //#endregion\n\n /** @hidden @internal */\n public ngOnInit(): void {\n this._ngControl = this._injector.get<NgControl>(NgControl, null);\n\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n public override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.subscribeToClick();\n this.subscribeToOverlayEvents();\n this.subscribeToDateEditorEvents();\n\n this._dropDownOverlaySettings.excludeFromOutsideClick = [this.inputGroup.element.nativeElement];\n\n fromEvent(this.inputDirective.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (this.collapsed) {\n this._onTouchedCallback();\n this.updateValidity();\n }\n });\n\n if (this._ngControl) {\n this._statusChanges$ =\n this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n if (this._ngControl.control.validator) {\n this.inputGroup.isRequired = this.required;\n this.cdr.detectChanges();\n }\n }\n }\n\n /** @hidden @internal */\n public ngAfterViewChecked() {\n if (this.labelDirective) {\n this._renderer.setAttribute(this.inputDirective.nativeElement, 'aria-labelledby', this.labelDirective.id);\n }\n }\n\n /** @hidden @internal */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this._statusChanges$) {\n this._statusChanges$.unsubscribe();\n }\n if (this._overlayId) {\n this._overlayService.detach(this._overlayId);\n delete this._overlayId;\n }\n }\n\n /** @hidden @internal */\n public getEditElement(): HTMLInputElement {\n return this.inputDirective.nativeElement;\n }\n\n private subscribeToClick() {\n fromEvent(this.getEditElement(), 'click')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.isDropdown) {\n this.toggle();\n }\n });\n }\n\n private setDateValue(value: Date | string) {\n if (isDate(value) && isNaN(value.getTime())) {\n this._dateValue = value;\n return;\n }\n this._dateValue = DateTimeUtil.isValidDate(value) ? value : DateTimeUtil.parseIsoDate(value);\n if (this._calendar) {\n this._calendar.selectDate(this._dateValue);\n this._calendar.activeDate = this.activeDate;\n this._calendar.viewDate = this.activeDate;\n this.cdr.detectChanges();\n }\n }\n\n private updateValidity() {\n // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526\n if (this._ngControl && !this.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators && this.inputGroup.isFocused) {\n this.inputDirective.valid = this._ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n this.inputDirective.valid = this._ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n this.inputDirective.valid = IgxInputState.INITIAL;\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this._ngControl.control.touched || this._ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this._ngControl.control.validator || !!this._ngControl.control.asyncValidator);\n }\n\n private onStatusChanged = () => {\n this.disabled = this._ngControl.disabled;\n this.updateValidity();\n this.inputGroup.isRequired = this.required;\n };\n\n private handleSelection(date: Date): void {\n if (this.dateValue && DateTimeUtil.isValidDate(this.dateValue)) {\n date.setHours(this.dateValue.getHours());\n date.setMinutes(this.dateValue.getMinutes());\n date.setSeconds(this.dateValue.getSeconds());\n date.setMilliseconds(this.dateValue.getMilliseconds());\n }\n this.value = date;\n if (this._calendar) {\n this._calendar.activeDate = this.activeDate;\n this._calendar.viewDate = this.activeDate;\n }\n this.close();\n }\n\n private subscribeToDateEditorEvents(): void {\n this.dateTimeEditor.valueChange.pipe(\n takeUntil(this._destroy$)).subscribe(val => {\n this.value = val;\n });\n this.dateTimeEditor.validationFailed.pipe(\n takeUntil(this._destroy$)).subscribe((event) => {\n this.validationFailed.emit({\n owner: this,\n prevValue: event.oldValue,\n currentValue: this.value\n });\n });\n }\n\n private subscribeToOverlayEvents() {\n this._overlayService.opening.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.opening.emit(args);\n e.cancel = args.cancel;\n if (args.cancel) {\n this._overlayService.detach(this._overlayId);\n return;\n }\n\n this._initializeCalendarContainer(e.componentRef.instance);\n this._calendarContainer = e.componentRef.location.nativeElement;\n this._collapsed = false;\n });\n\n this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {\n this.opened.emit({ owner: this });\n\n this._calendar.wrapper?.nativeElement?.focus();\n });\n\n this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.closing.emit(args);\n e.cancel = args.cancel;\n if (args.cancel) {\n return;\n }\n // do not focus the input if clicking outside in dropdown mode\n const outsideEvent = args.event && (args.event as KeyboardEvent).key !== this.platform.KEYMAP.ESCAPE;\n if (this.getEditElement() && !(outsideEvent && this.isDropdown)) {\n this.inputDirective.focus();\n } else {\n this._onTouchedCallback();\n this.updateValidity();\n }\n });\n\n this._overlayService.closed.pipe(...this._overlaySubFilter).subscribe(() => {\n this.closed.emit({ owner: this });\n this._overlayService.detach(this._overlayId);\n this._collapsed = true;\n this._overlayId = null;\n this._calendar = null;\n this._calendarContainer = undefined;\n });\n }\n\n private getMinMaxDates() {\n const minValue = DateTimeUtil.isValidDate(this.minValue) ? this.minValue : DateTimeUtil.parseIsoDate(this.minValue);\n const maxValue = DateTimeUtil.isValidDate(this.maxValue) ? this.maxValue : DateTimeUtil.parseIsoDate(this.maxValue);\n return { minValue, maxValue };\n }\n\n private setDisabledDates(): void {\n this._calendar.disabledDates = this.disabledDates ? [...this.disabledDates] : [];\n const { minValue, maxValue } = this.getMinMaxDates();\n if (minValue) {\n this._calendar.disabledDates.push({ type: DateRangeType.Before, dateRange: [minValue] });\n }\n if (maxValue) {\n this._calendar.disabledDates.push({ type: DateRangeType.After, dateRange: [maxValue] });\n }\n }\n\n private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {\n this._calendar = componentInstance.calendar;\n this._calendar.hasHeader = !this.isDropdown && !this.hideHeader;\n this._calendar.formatOptions = this.pickerCalendarFormat;\n this._calendar.formatViews = this.pickerFormatViews;\n this._calendar.locale = this.locale;\n this._calendar.weekStart = this.weekStart;\n this._calendar.specialDates = this.specialDates;\n this._calendar.headerTitleTemplate = this.headerTitleTemplate;\n this._calendar.headerTemplate = this.headerTemplate;\n this._calendar.subheaderTemplate = this.subheaderTemplate;\n this._calendar.headerOrientation = this.headerOrientation;\n this._calendar.hideOutsideDays = this.hideOutsideDays;\n this._calendar.monthsViewNumber = this.displayMonthsCount;\n this._calendar.showWeekNumbers = this.showWeekNumbers;\n this._calendar.orientation = this.orientation;\n this._calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date) => this.handleSelection(ev));\n this.setDisabledDates();\n\n if (DateTimeUtil.isValidDate(this.dateValue)) {\n // calendar will throw if the picker's value is InvalidDate #9208\n this._calendar.value = this.dateValue;\n }\n this._calendar.activeDate = this.activeDate;\n this._calendar.viewDate = this.activeDate;\n\n componentInstance.mode = this.mode;\n componentInstance.closeButtonLabel = this.cancelButtonLabel;\n componentInstance.todayButtonLabel = this.todayButtonLabel;\n componentInstance.pickerActions = this.pickerActions;\n\n componentInstance.calendarClose.pipe(takeUntil(this._destroy$)).subscribe(() => this.close());\n componentInstance.todaySelection.pipe(takeUntil(this._destroy$)).subscribe(() => this.selectToday());\n }\n}\n","<igx-input-group [type]=\"type\">\n @if (!toggleComponents.length) {\n <igx-prefix (click)=\"toggle()\">\n <igx-icon\n [title]=\"\n value\n ? pickerResourceStrings.igx_date_picker_change_date\n : pickerResourceStrings.igx_date_picker_choose_date\n \"\n family=\"default\"\n name=\"today\"\n >\n </igx-icon>\n </igx-prefix>\n }\n\n <input class=\"igx-date-picker__input-date\"\n [igxReadOnlyInput]=\"readOnly\"\n [displayValuePipe]=\"formatter ? displayValue : null\" igxInput\n [igxDateTimeEditor]=\"inputFormat\" [displayFormat]=\"displayFormat\"\n [minValue]=\"minValue\" [maxValue]=\"maxValue\" [spinDelta]=\"spinDelta\" [spinLoop]=\"spinLoop\"\n [disabled]=\"disabled\" [placeholder]=\"placeholder\" [readonly]=\"!isDropdown || readOnly\"\n [igxTextSelection]=\"isDropdown && !readOnly\" [locale]=\"locale\" [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-labelledby]=\"label?.id\" aria-haspopup=\"dialog\" aria-autocomplete=\"none\" role=\"combobox\">\n\n @if (!clearComponents.length && value) {\n <igx-suffix (click)=\"clear()\">\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n }\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n","import { IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxDatePickerComponent } from './date-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective } from 'igniteui-angular/calendar';\n\nexport * from './date-picker.common';\nexport * from './date-picker.component';\nexport * from './calendar-container/calendar-container.component';\nexport * from './picker-base.directive';\n\n/* NOTE: Date picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DATE_PICKER_DIRECTIVES = [\n IgxDatePickerComponent,\n IgxPickerToggleComponent,\n IgxPickerClearComponent,\n IgxPickerActionsDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective,\n IgxCalendarHeaderTemplateDirective,\n IgxCalendarSubheaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective\n] as const;\n","import { Component, ContentChild, Pipe, PipeTransform, Directive } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { IgxInputDirective, IgxInputGroupBase, IgxInputGroupComponent, IgxInputState, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxButtonDirective, IgxDateTimeEditorDirective } from 'igniteui-angular/directives';\nimport { isDate, DateRange, DateTimeUtil } from 'igniteui-angular/core';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/** @hidden @internal */\n@Pipe({\n name: 'dateRange',\n standalone: true\n})\nexport class DateRangePickerFormatPipe implements PipeTransform {\n public transform(values: DateRange, appliedFormat?: string,\n locale?: string, formatter?: (_: DateRange) => string): string {\n if (!values || !values.start && !values.end) {\n return '';\n }\n if (formatter) {\n return formatter(values);\n }\n let { start, end } = values;\n if (!isDate(start)) {\n start = DateTimeUtil.parseIsoDate(start);\n }\n if (!isDate(end)) {\n end = DateTimeUtil.parseIsoDate(end);\n }\n const startDate = appliedFormat ? DateTimeUtil.formatDate(start, appliedFormat, locale || 'en') : start?.toLocaleDateString();\n const endDate = appliedFormat ? DateTimeUtil.formatDate(end, appliedFormat, locale || 'en') : end?.toLocaleDateString();\n let formatted;\n if (start) {\n formatted = `${startDate} - `;\n if (end) {\n formatted += endDate;\n }\n }\n\n return formatted ? formatted : '';\n }\n}\n\n/** @hidden @internal */\n@Component({\n template: ``,\n selector: `igx-date-range-base`,\n providers: [{ provide: IgxInputGroupBase, useExisting: IgxDateRangeInputsBaseComponent }],\n standalone: true\n})\nexport class IgxDateRangeInputsBaseComponent extends IgxInputGroupComponent {\n @ContentChild(IgxDateTimeEditorDirective)\n public dateTimeEditor: IgxDateTimeEditorDirective;\n\n @ContentChild(IgxInputDirective)\n public inputDirective: IgxInputDirective;\n\n @ContentChild(NgControl)\n protected ngControl: NgControl;\n\n /** @hidden @internal */\n public get nativeElement() {\n return this.element.nativeElement;\n }\n\n /** @hidden @internal */\n public setFocus(): void {\n this.input.focus();\n }\n\n /** @hidden @internal */\n public updateInputValue(value: Date) {\n if (this.ngControl) {\n this.ngControl.control.setValue(value);\n } else {\n this.dateTimeEditor.value = value;\n }\n }\n\n /** @hidden @internal */\n public updateInputValidity(state: IgxInputState) {\n this.inputDirective.valid = state;\n }\n}\n\n/**\n * Defines the start input for a date range picker\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * When templating, start input has to be templated separately\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\">\n * <igx-date-range-start>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-start>\n * ...\n * </igx-date-range-picker>\n * ```\n */\n@Component({\n selector: 'igx-date-range-start',\n templateUrl: '../../../input-group/src/input-group/input-group.component.html',\n providers: [\n { provide: IgxInputGroupBase, useExisting: IgxDateRangeStartComponent },\n { provide: IgxDateRangeInputsBaseComponent, useExisting: IgxDateRangeStartComponent }\n ],\n imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxDateRangeStartComponent extends IgxDateRangeInputsBaseComponent { }\n\n/**\n * Defines the end input for a date range picker\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * When templating, end input has to be template separately\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\">\n * ...\n * <igx-date-range-end>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-end>\n * </igx-date-range-picker>\n * ```\n */\n@Component({\n selector: 'igx-date-range-end',\n templateUrl: '../../../input-group/src/input-group/input-group.component.html',\n providers: [\n { provide: IgxInputGroupBase, useExisting: IgxDateRangeEndComponent },\n { provide: IgxDateRangeInputsBaseComponent, useExisting: IgxDateRangeEndComponent }\n ],\n imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxDateRangeEndComponent extends IgxDateRangeInputsBaseComponent { }\n\n/**\n * Replaces the default separator `to` with the provided value\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @example\n * ```html\n * <igx-date-range-picker>\n * <igx-date-range-start>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-start>\n *\n * <ng-template igxDateRangeSeparator>-</ng-template>\n *\n * <igx-date-range-end>\n * <input igxInput igxDateTimeEditor type=\"text\">\n * </igx-date-range-end>\n * ...\n * </igx-date-range-picker>\n * ```\n */\n@Directive({\n selector: '[igxDateRangeSeparator]',\n standalone: true\n})\nexport class IgxDateRangeSeparatorDirective { }\n","@if (isTypeBox) {\n <div class=\"igx-input-group__wrapper\">\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n}\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<!-- Dummy usage to satisfy Angular compiler -->\n<ng-template #dummy><span igxPrefix hidden></span></ng-template>\n\n<ng-template #uploadButton>\n @if (isFileType) {\n <div class=\"igx-input-group__upload-button igx-file-input__upload-button-wrapper\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n tabindex=\"-1\"\n [disabled]=\"disabled\"\n class=\"igx-file-input__upload-button\"\n >\n {{ resourceStrings.igx_input_upload_button }}\n </button>\n </div>\n }\n</ng-template>\n\n<ng-template #files>\n @if (isFileType) {\n <div\n class=\"igx-input-group__file-input igx-file-input__file-names\"\n [title]=\"fileNames\"\n >\n <span>{{ fileNames }}</span>\n </div>\n }\n</ng-template>\n\n<ng-template #clear>\n @if (isFileType && isFilled) {\n <igx-suffix\n class=\"igx-input-group__clear-icon igx-file-input__clear-icon\"\n (click)=\"clearValueHandler()\"\n (keydown.Enter)=\"clearValueHandler()\"\n title=\"clear files\"\n tabindex=\"0\"\n >\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n }\n</ng-template>\n\n<ng-template #suffix>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container>\n <div class=\"igx-input-group__notch\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__filler\"></div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n @if (hasBorder) {\n <div class=\"igx-input-group__line\"></div>\n }\n </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #bundle>\n @switch (theme) {\n @case ('bootstrap') {\n <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n }\n @case ('fluent') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @case ('indigo') {\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n }\n }\n</ng-template>\n","import { AfterViewInit, booleanAttribute, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Injector, Input, OnChanges, OnDestroy, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, inject } from '@angular/core';\nimport { NgTemplateOutlet, getLocaleFirstDayOfWeek } from '@angular/common';\nimport {\n AbstractControl, ControlValueAccessor, NgControl,\n NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator\n} from '@angular/forms';\n\nimport { fromEvent, merge, MonoTypeOperatorFunction, noop, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { CalendarSelection, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from 'igniteui-angular/calendar';\nimport {\n DateRangeDescriptor,\n DateRangeType,\n DateRangePickerResourceStringsEN,\n IDateRangePickerResourceStrings,\n clamp,\n IBaseCancelableBrowserEventArgs,\n isDate,\n parseDate,\n PlatformUtil,\n getCurrentResourceStrings,\n AutoPositionStrategy,\n IgxOverlayService,\n OverlayCancelableEventArgs,\n OverlayEventArgs,\n OverlaySettings,\n PositionSettings,\n calendarRange,\n CustomDateRange,\n DateRange,\n DateTimeUtil,\n IgxPickerActionsDirective,\n isDateInRanges,\n PickerCalendarOrientation,\n IgxOverlayOutletDirective\n} from 'igniteui-angular/core';\nimport { IgxCalendarContainerComponent } from '../date-picker/calendar-container/calendar-container.component';\nimport { PickerBaseDirective } from '../date-picker/picker-base.directive';\nimport {\n IgxInputDirective,\n IgxInputGroupComponent,\n IgxInputState,\n IgxLabelDirective,\n IgxSuffixDirective,\n IgxPrefixDirective,\n IgxReadOnlyInputDirective,\n IgxHintDirective\n} from 'igniteui-angular/input-group';\nimport {\n IgxDateRangeEndComponent,\n IgxDateRangeInputsBaseComponent,\n IgxDateRangeSeparatorDirective,\n IgxDateRangeStartComponent,\n DateRangePickerFormatPipe,\n} from './date-range-picker-inputs.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\n\nconst SingleInputDatesConcatenationString = ' - ';\n\n/**\n * Provides the ability to select a range of dates from a calendar UI or editable inputs.\n *\n * @igxModule IgxDateRangeModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * It displays the range selection in a single or two input fields.\n * The default template displays a single *readonly* input field\n * while projecting `igx-date-range-start` and `igx-date-range-end`\n * displays two *editable* input fields.\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\"></igx-date-range-picker>\n * ```\n */\n@Component({\n selector: 'igx-date-range-picker',\n templateUrl: './date-range-picker.component.html',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxDateRangePickerComponent, multi: true },\n { provide: NG_VALIDATORS, useExisting: IgxDateRangePickerComponent, multi: true }\n ],\n imports: [\n NgTemplateOutlet,\n IgxIconComponent,\n IgxInputGroupComponent,\n IgxInputDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxReadOnlyInputDirective,\n DateRangePickerFormatPipe\n ]\n})\nexport class IgxDateRangePickerComponent extends PickerBaseDirective\n implements OnChanges, OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\n protected platform = inject(PlatformUtil);\n private _injector = inject(Injector);\n private _cdr = inject(ChangeDetectorRef);\n private _overlayService = inject<IgxOverlayService>(IgxOverlayService);\n\n\n /**\n * The number of displayed month views.\n *\n * @remarks\n * Default is `2`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [displayMonthsCount]=\"3\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public get displayMonthsCount(): number {\n return this._displayMonthsCount;\n }\n\n public set displayMonthsCount(value: number) {\n this._displayMonthsCount = clamp(value, 1, 2);\n }\n\n /**\n * Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.\n *\n * @example\n * <igx-date-range-picker orientation=\"vertical\"></igx-date-range-picker>\n */\n @Input()\n public orientation: PickerCalendarOrientation = PickerCalendarOrientation.Horizontal;\n\n /**\n * Gets/Sets whether dates that are not part of the current month will be displayed.\n *\n * @remarks\n * Default value is `false`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [hideOutsideDays]=\"true\"></igx-date-range-picker>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hideOutsideDays: boolean;\n\n /**\n * A custom formatter function, applied on the selected or passed in date.\n *\n * @example\n * ```typescript\n * private dayFormatter = new Intl.DateTimeFormat(\"en\", { weekday: \"long\" });\n * private monthFormatter = new Intl.DateTimeFormat(\"en\", { month: \"long\" });\n *\n * public formatter(date: Date): string {\n * return `${this.dayFormatter.format(date)} - ${this.monthFormatter.format(date)} - ${date.getFullYear()}`;\n * }\n * ```\n * ```html\n * <igx-date-range-picker [formatter]=\"formatter\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public formatter: (val: DateRange) => string;\n\n /**\n * Overrides the default text of the calendar dialog **Done** button.\n *\n * @remarks\n * Defaults to the value from resource strings, `\"Done\"` for the built-in EN.\n * The button will only show up in `dialog` mode.\n *\n * @example\n * ```html\n * <igx-date-range-picker doneButtonText=\"完了\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public set doneButtonText(value: string) {\n this._doneButtonText = value;\n }\n\n public get doneButtonText(): string {\n if (this._doneButtonText === null) {\n return this.resourceStrings.igx_date_range_picker_done_button;\n }\n return this._doneButtonText;\n }\n /**\n * Overrides the default text of the calendar dialog **Cancel** button.\n *\n * @remarks\n * Defaults to the value from resource strings, `\"Cancel\"` for the built-in EN.\n * The button will only show up in `dialog` mode.\n *\n * @example\n * ```html\n * <igx-date-range-picker cancelButtonText=\"取消\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public set cancelButtonText(value: string) {\n this._cancelButtonText = value;\n }\n\n public get cancelButtonText(): string {\n if (this._cancelButtonText === null) {\n return this.resourceStrings.igx_date_range_picker_cancel_button;\n }\n return this._cancelButtonText;\n }\n /**\n * Custom overlay settings that should be used to display the calendar.\n *\n * @example\n * ```html\n * <igx-date-range-picker [overlaySettings]=\"customOverlaySettings\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public override overlaySettings: OverlaySettings;\n\n /**\n * The format used when editable inputs are not focused.\n *\n * @remarks\n * Uses Angular's DatePipe.\n *\n * @example\n * ```html\n * <igx-date-range-picker displayFormat=\"EE/M/yy\"></igx-date-range-picker>\n * ```\n *\n */\n @Input()\n public override displayFormat: string;\n\n /**\n * The expected user input format and placeholder.\n *\n * @example\n * ```html\n * <igx-date-range-picker inputFormat=\"dd/MM/yy\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public override inputFormat: string;\n\n /**\n * The minimum value in a valid range.\n *\n * @example\n * <igx-date-range-picker [minValue]=\"minDate\"></igx-date-range-picker>\n */\n @Input()\n public set minValue(value: Date | string) {\n this._minValue = value;\n this.onValidatorChange();\n }\n\n public get minValue(): Date | string {\n return this._minValue;\n }\n\n /**\n * The maximum value in a valid range.\n *\n * @example\n * <igx-date-range-picker [maxValue]=\"maxDate\"></igx-date-range-picker>\n */\n @Input()\n public set maxValue(value: Date | string) {\n this._maxValue = value;\n this.onValidatorChange();\n }\n\n public get maxValue(): Date | string {\n return this._maxValue;\n }\n\n /**\n * Gets/Sets the disabled dates descriptors.\n *\n * @example\n * ```typescript\n * let disabledDates = this.dateRangePicker.disabledDates;\n * this.dateRangePicker.disabledDates = [ {type: DateRangeType.Weekends}, ...];\n * ```\n */\n @Input()\n public get disabledDates(): DateRangeDescriptor[] {\n return this._disabledDates;\n }\n public set disabledDates(value: DateRangeDescriptor[]) {\n this._disabledDates = value;\n this.onValidatorChange();\n }\n\n /**\n * Gets/Sets the special dates descriptors.\n *\n * @example\n * ```typescript\n * let specialDates = this.dateRangePicker.specialDates;\n * this.dateRangePicker.specialDates = [ {type: DateRangeType.Weekends}, ... ];\n * ```\n */\n @Input()\n public get specialDates(): DateRangeDescriptor[] {\n return this._specialDates;\n }\n public set specialDates(value: DateRangeDescriptor[]) {\n this._specialDates = value;\n }\n\n /**\n * An accessor that sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: IDateRangePickerResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * An accessor that returns the resource strings.\n */\n public get resourceStrings(): IDateRangePickerResourceStrings {\n return this._resourceStrings;\n }\n\n /**\n * Sets the `placeholder` for single-input `IgxDateRangePickerComponent`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [placeholder]=\"'Choose your dates'\"></igx-date-range-picker>\n * ```\n */\n @Input()\n public override placeholder = '';\n\n /**\n * Gets/Sets the container used for the popup element.\n *\n * @remarks\n * `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.\n * @example\n * ```html\n * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n * //..\n * <igx-date-range-picker [outlet]=\"outlet\"></igx-date-range-picker>\n * //..\n * ```\n */\n @Input()\n public override outlet: IgxOverlayOutletDirective | ElementRef<any>;\n\n /**\n * Show/hide week numbers\n *\n * @remarks\n * Default is `false`.\n *\n * @example\n * ```html\n * <igx-date-range-picker [showWeekNumbers]=\"true\"></igx-date-range-picker>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers = false;\n\n /** @hidden @internal */\n @Input({ transform: booleanAttribute })\n public readOnly = false;\n\n /**\n * Emitted when the picker's value changes. Used for two-way binding.\n *\n * @example\n * ```html\n * <igx-date-range-picker [(value)]=\"date\"></igx-date-range-picker>\n * ```\n */\n\n /**\n * Whether to render built-in predefined ranges.\n *\n * @example\n * ```html\n * <igx-date-range-picker [(usePredefinedRanges)]=\"true\"></igx-date-range-picker>\n * ``\n * */\n @Input() public usePredefinedRanges = false;\n\n /**\n * Custom ranges rendered as chips.\n *\n * @example\n * ```html\n * <igx-date-range-picker [(usePredefinedRanges)]=\"true\"></igx-date-range-picker>\n * ``\n */\n @Input() public customRanges: CustomDateRange[] = [];\n\n @Output()\n public valueChange = new EventEmitter<DateRange>();\n\n /** @hidden @internal */\n @HostBinding('class.igx-date-range-picker')\n public cssClass = 'igx-date-range-picker';\n\n @ViewChild(IgxInputGroupComponent, { read: ViewContainerRef })\n private viewContainerRef: ViewContainerRef;\n\n /** @hidden @internal */\n @ViewChild(IgxInputDirective)\n public inputDirective: IgxInputDirective;\n\n /** @hidden @internal */\n @ContentChildren(IgxDateRangeInputsBaseComponent)\n public projectedInputs: QueryList<IgxDateRangeInputsBaseComponent>;\n\n @ContentChild(IgxLabelDirective)\n public label: IgxLabelDirective;\n\n @ContentChild(IgxHintDirective)\n public hint: IgxHintDirective;\n\n @ContentChild(IgxPickerActionsDirective)\n public pickerActions: IgxPickerActionsDirective;\n\n /** @hidden @internal */\n @ContentChild(IgxDateRangeSeparatorDirective, { read: TemplateRef })\n public dateSeparatorTemplate: TemplateRef<any>;\n\n\n @ContentChild(IgxCalendarHeaderTitleTemplateDirective)\n private headerTitleTemplate: IgxCalendarHeaderTitleTemplateDirective;\n\n @ContentChild(IgxCalendarHeaderTemplateDirective)\n private headerTemplate: IgxCalendarHeaderTemplateDirective;\n\n @ContentChild(IgxCalendarSubheaderTemplateDirective)\n private subheaderTemplate: IgxCalendarSubheaderTemplateDirective;\n\n /** @hidden @internal */\n public get dateSeparator(): string {\n if (this._dateSeparator === null) {\n return this.resourceStrings.igx_date_range_picker_date_separator;\n }\n return this._dateSeparator;\n }\n\n /** @hidden @internal */\n public get appliedFormat(): string {\n return DateTimeUtil.getLocaleDateFormat(this.locale, this.displayFormat)\n || DateTimeUtil.DEFAULT_INPUT_FORMAT;\n }\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date, or the value of the picker, if set.\n */\n @Input()\n public get activeDate(): Date {\n const today = new Date(new Date().setHours(0, 0, 0, 0));\n const dateValue = DateTimeUtil.isValidDate(this._firstDefinedInRange) ? new Date(this._firstDefinedInRange.setHours(0, 0, 0, 0)) : null;\n return this._activeDate ?? dateValue ?? this._calendar?.activeDate ?? today;\n }\n\n public set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n /**\n * @example\n * ```html\n * <igx-date-range-picker locale=\"jp\"></igx-date-range-picker>\n * ```\n */\n /**\n * Gets the `locale` of the date-range-picker.\n * If not set, defaults to application's locale.\n */\n @Input()\n public override get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the date-picker.\n * Expects a valid BCP 47 language tag.\n */\n public override set locale(value: string) {\n this._locale = value;\n // if value is invalid, set it back to _localeId\n try {\n getLocaleFirstDayOfWeek(this._locale);\n } catch (e) {\n this._locale = this._localeId;\n }\n if (this.hasProjectedInputs) {\n this.updateInputLocale();\n this.updateDisplayFormat();\n }\n }\n\n /** @hidden @internal */\n public get singleInputFormat(): string {\n if (this.placeholder !== '') {\n return this.placeholder;\n }\n\n const format = this.appliedFormat;\n return `${format}${SingleInputDatesConcatenationString}${format}`;\n }\n\n /**\n * Gets calendar state.\n *\n * ```typescript\n * let state = this.dateRange.collapsed;\n * ```\n */\n public override get collapsed(): boolean {\n return this._collapsed;\n }\n\n /**\n * The currently selected value / range from the calendar\n *\n * @remarks\n * The current value is of type `DateRange`\n *\n * @example\n * ```typescript\n * const newValue: DateRange = { start: new Date(\"2/2/2012\"), end: new Date(\"3/3/2013\")};\n * this.dateRangePicker.value = newValue;\n * ```\n */\n public get value(): DateRange | null {\n return this._value;\n }\n\n @Input()\n public set value(value: DateRange | null) {\n this.updateValue(value);\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n\n /** @hidden @internal */\n public get hasProjectedInputs(): boolean {\n return this.projectedInputs?.length > 0;\n }\n\n /** @hidden @internal */\n public get separatorClass(): string {\n const classes = ['igx-date-range-picker__label'];\n if (this.hint) classes.push('input-has-hint');\n return classes.join(' ');\n }\n\n protected override get toggleContainer(): HTMLElement | undefined {\n return this._calendarContainer;\n }\n\n private get required(): boolean {\n if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {\n const error = this._ngControl.control.validator({} as AbstractControl);\n return (error && error.required) ? true : false;\n }\n\n return false;\n }\n\n private get calendar(): IgxCalendarComponent {\n return this._calendar;\n }\n\n private get dropdownOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n }\n\n private get dialogOverlaySettings(): OverlaySettings {\n return Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n }\n\n private get _firstDefinedInRange(): Date | null {\n if (!this.value) {\n return null;\n }\n const range = this.toRangeOfDates(this.value);\n return range?.start ?? range?.end ?? null;\n }\n\n private _resourceStrings = getCurrentResourceStrings(DateRangePickerResourceStringsEN);\n private _doneButtonText = null;\n private _cancelButtonText = null;\n private _dateSeparator = null;\n private _value: DateRange | null;\n private _originalValue: DateRange | null;\n private _overlayId: string;\n private _ngControl: NgControl;\n private _statusChanges$: Subscription;\n private _calendar: IgxCalendarComponent;\n private _calendarContainer?: HTMLElement;\n private _positionSettings: PositionSettings;\n private _focusedInput: IgxDateRangeInputsBaseComponent;\n private _displayMonthsCount = 2;\n private _specialDates: DateRangeDescriptor[] = null;\n private _disabledDates: DateRangeDescriptor[] = null;\n private _activeDate: Date | null = null;\n private _overlaySubFilter:\n [MonoTypeOperatorFunction<OverlayEventArgs>, MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [\n filter(x => x.id === this._overlayId),\n takeUntil(merge(this._destroy$, this.closed))\n ];\n private _dialogOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: true,\n closeOnEscape: true\n };\n private _dropDownOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: false,\n closeOnEscape: true\n };\n private onChangeCallback: (dateRange: DateRange) => void = noop;\n private onTouchCallback: () => void = noop;\n private onValidatorChange: () => void = noop;\n\n constructor() {\n super();\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden @internal */\n @HostListener('keydown', ['$event'])\n /** @hidden @internal */\n public onKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case this.platform.KEYMAP.ARROW_UP:\n if (event.altKey) {\n this.close();\n }\n break;\n case this.platform.KEYMAP.ARROW_DOWN:\n if (event.altKey) {\n this.open();\n }\n break;\n }\n }\n\n /**\n * Opens the date range picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-range-picker #dateRange></igx-date-range-picker>\n *\n * <button type=\"button\" igxButton (click)=\"dateRange.open()\">Open Dialog</button\n * ```\n */\n public open(overlaySettings?: OverlaySettings): void {\n if (!this.collapsed || this.disabled || this.readOnly) {\n return;\n }\n\n this._originalValue = this._value\n ? { start: new Date(this._value.start), end: new Date(this._value.end) }\n : null;\n\n const settings = Object.assign({}, this.isDropdown\n ? this.dropdownOverlaySettings\n : this.dialogOverlaySettings\n , overlaySettings);\n\n this._overlayId = this._overlayService\n .attach(IgxCalendarContainerComponent, this.viewContainerRef, settings);\n this.subscribeToOverlayEvents();\n this._overlayService.show(this._overlayId);\n }\n\n /**\n * Closes the date range picker's dropdown or dialog.\n *\n * @example\n * ```html\n * <igx-date-range-picker #dateRange></igx-date-range-picker>\n *\n * <button type=\"button\" igxButton (click)=\"dateRange.close()\">Close Dialog</button>\n * ```\n */\n public close(): void {\n if (!this.collapsed) {\n this._overlayService.hide(this._overlayId);\n }\n }\n\n /**\n * Toggles the date range picker's dropdown or dialog\n *\n * @example\n * ```html\n * <igx-date-range-picker #dateRange></igx-date-range-picker>\n *\n * <button type=\"button\" igxButton (click)=\"dateRange.toggle()\">Toggle Dialog</button>\n * ```\n */\n public toggle(overlaySettings?: OverlaySettings): void {\n if (!this.collapsed) {\n this.close();\n } else {\n this.open(overlaySettings);\n }\n }\n\n /**\n * Selects a range of dates. If no `endDate` is passed, range is 1 day (only `startDate`)\n *\n * @example\n * ```typescript\n * public selectFiveDayRange() {\n * const today = new Date();\n * const inFiveDays = new Date(new Date().setDate(today.getDate() + 5));\n * this.dateRange.select(today, inFiveDays);\n * }\n * ```\n */\n public select(startDate: Date, endDate?: Date): void {\n endDate = endDate ?? startDate;\n const dateRange = [startDate, endDate];\n this.handleSelection(dateRange);\n }\n\n /**\n * Clears the input field(s) and the picker's value.\n *\n * @example\n * ```typescript\n * this.dateRangePicker.clear();\n * ```\n */\n public clear(): void {\n if (this.disabled) {\n return;\n }\n\n this.value = null;\n this._calendar?.deselectDate();\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach((i) => {\n i.inputDirective.clear();\n });\n } else {\n this.inputDirective.clear();\n }\n }\n\n /** @hidden @internal */\n public writeValue(value: DateRange): void {\n this.updateValue(value);\n }\n\n /** @hidden @internal */\n public registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n /** @hidden @internal */\n public registerOnTouched(fn: any): void {\n this.onTouchCallback = fn;\n }\n\n /** @hidden @internal */\n public validate(control: AbstractControl): ValidationErrors | null {\n const value: DateRange = control.value;\n const errors = {};\n if (value) {\n if (this.hasProjectedInputs) {\n const startInput = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const endInput = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n if (!startInput.dateTimeEditor.value) {\n Object.assign(errors, { startValue: true });\n }\n if (!endInput.dateTimeEditor.value) {\n Object.assign(errors, { endValue: true });\n }\n }\n\n if (this._isValueInDisabledRange(value)) {\n Object.assign(errors, { dateIsDisabled: true });\n }\n\n const { minValue, maxValue } = this._getMinMaxDates();\n const start = parseDate(value.start);\n const end = parseDate(value.end);\n if ((minValue && start && DateTimeUtil.lessThanMinValue(start, minValue, false))\n || (minValue && end && DateTimeUtil.lessThanMinValue(end, minValue, false))) {\n Object.assign(errors, { minValue: true });\n }\n if ((maxValue && start && DateTimeUtil.greaterThanMaxValue(start, maxValue, false))\n || (maxValue && end && DateTimeUtil.greaterThanMaxValue(end, maxValue, false))) {\n Object.assign(errors, { maxValue: true });\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n\n /** @hidden @internal */\n public registerOnValidatorChange?(fn: any): void {\n this.onValidatorChange = fn;\n }\n\n /** @hidden @internal */\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** @hidden */\n public ngOnInit(): void {\n this._ngControl = this._injector.get<NgControl>(NgControl, null);\n\n this.locale = this.locale || this._localeId;\n }\n\n /** @hidden */\n public override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this.subscribeToDateEditorEvents();\n this.subscribeToClick();\n this.configPositionStrategy();\n this.configOverlaySettings();\n this.cacheFocusedInput();\n this.attachOnTouched();\n\n this.setRequiredToInputs();\n\n if (this._ngControl) {\n this._statusChanges$ = this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n }\n\n // delay invocations until the current change detection cycle has completed\n Promise.resolve().then(() => {\n this.updateDisabledState();\n this.initialSetValue();\n this.updateInputs();\n // B.P. 07 July 2021 - IgxDateRangePicker not showing initial disabled state with ChangeDetectionStrategy.OnPush #9776\n /**\n * if disabled is placed on the range picker element and there are projected inputs\n * run change detection since igxInput will initially set the projected inputs' disabled to false\n */\n if (this.hasProjectedInputs && this.disabled) {\n this._cdr.markForCheck();\n }\n });\n this.updateDisplayFormat();\n this.updateInputFormat();\n }\n\n /** @hidden @internal */\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['displayFormat'] && this.hasProjectedInputs) {\n this.updateDisplayFormat();\n }\n if (changes['inputFormat'] && this.hasProjectedInputs) {\n this.updateInputFormat();\n }\n if (changes['disabled']) {\n this.updateDisabledState();\n }\n }\n\n /** @hidden @internal */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this._statusChanges$) {\n this._statusChanges$.unsubscribe();\n }\n if (this._overlayId) {\n this._overlayService.detach(this._overlayId);\n }\n }\n\n /** @hidden @internal */\n public getEditElement(): HTMLInputElement {\n return this.inputDirective!.nativeElement;\n }\n\n protected onStatusChanged = () => {\n if (this.inputGroup) {\n this.setValidityState(this.inputDirective, this.inputGroup.isFocused);\n } else if (this.hasProjectedInputs) {\n this.projectedInputs\n .forEach((i) => {\n this.setValidityState(i.inputDirective, i.isFocused);\n });\n }\n this.setRequiredToInputs();\n };\n\n private setValidityState(inputDirective: IgxInputDirective, isFocused: boolean) {\n if (this._ngControl && !this._ngControl.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators && isFocused) {\n inputDirective.valid = this._ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n inputDirective.valid = this._ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n inputDirective.valid = IgxInputState.INITIAL;\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this._ngControl.control.touched || this._ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this._ngControl.control.validator || !!this._ngControl.control.asyncValidator);\n }\n\n private handleSelection(selectionData: Date[]): void {\n let newValue = this.extractRange(selectionData);\n if (!newValue.start && !newValue.end) {\n newValue = null;\n }\n this.value = newValue;\n if (this.isDropdown && selectionData?.length > 1) {\n this.close();\n }\n this._setCalendarActiveDate();\n }\n\n private handleClosing(e: IBaseCancelableBrowserEventArgs): void {\n const args = { owner: this, cancel: e?.cancel, event: e?.event };\n this.closing.emit(args);\n e.cancel = args.cancel;\n if (args.cancel) {\n return;\n }\n\n if (this.isDropdown && e?.event && !this.isFocused) {\n // outside click\n this.updateValidityOnBlur();\n } else {\n this.onTouchCallback();\n // input click\n if (this.hasProjectedInputs && this._focusedInput) {\n this._focusedInput.setFocus();\n }\n if (this.inputDirective) {\n this.inputDirective.focus();\n }\n }\n }\n\n private subscribeToOverlayEvents() {\n this._overlayService.opening.pipe(...this._overlaySubFilter).subscribe((e) => {\n const overlayEvent = e as OverlayCancelableEventArgs;\n const args = { owner: this, cancel: overlayEvent?.cancel, event: e.event };\n this.opening.emit(args);\n if (args.cancel) {\n this._overlayService.detach(this._overlayId);\n overlayEvent.cancel = true;\n return;\n }\n\n this._initializeCalendarContainer(e.componentRef.instance);\n this._calendarContainer = e.componentRef.location.nativeElement;\n this._collapsed = false;\n this.updateCalendar();\n });\n\n this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {\n this.calendar.wrapper.nativeElement.focus();\n this.opened.emit({ owner: this });\n });\n\n this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n const isEscape = e.event && (e.event as KeyboardEvent).key === this.platform.KEYMAP.ESCAPE;\n if (this.isProjectedInputTarget(e.event) && !isEscape) {\n e.cancel = true;\n }\n this.handleClosing(e as OverlayCancelableEventArgs);\n });\n\n this._overlayService.closed.pipe(...this._overlaySubFilter).subscribe(() => {\n this._overlayService.detach(this._overlayId);\n this._collapsed = true;\n this._overlayId = null;\n this._calendar = null;\n this._calendarContainer = undefined;\n this.closed.emit({ owner: this });\n });\n }\n\n private isProjectedInputTarget(event: Event): boolean {\n if (!this.hasProjectedInputs || !event) {\n return false;\n }\n const path = event.composed ? event.composedPath() : [event.target];\n return this.projectedInputs.some(i =>\n path.includes(i.dateTimeEditor.nativeElement)\n );\n }\n\n private updateValue(value: DateRange) {\n this._value = value ? value : null;\n this.updateInputs();\n this.updateCalendar();\n }\n\n private updateValidityOnBlur() {\n this._focusedInput = null;\n this.onTouchCallback();\n if (this._ngControl) {\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach(i => {\n if (!this._ngControl.valid) {\n i.updateInputValidity(IgxInputState.INVALID);\n } else {\n i.updateInputValidity(IgxInputState.INITIAL);\n }\n });\n }\n\n if (this.inputDirective) {\n if (!this._ngControl.valid) {\n this.inputDirective.valid = IgxInputState.INVALID;\n } else {\n this.inputDirective.valid = IgxInputState.INITIAL;\n }\n }\n }\n }\n\n private updateDisabledState() {\n if (this.hasProjectedInputs) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n start.inputDirective.disabled = this.disabled;\n end.inputDirective.disabled = this.disabled;\n return;\n }\n }\n\n private setRequiredToInputs(): void {\n // workaround for igxInput setting required\n Promise.resolve().then(() => {\n const isRequired = this.required;\n if (this.inputGroup && this.inputGroup.isRequired !== isRequired) {\n this.inputGroup.isRequired = isRequired;\n } else if (this.hasProjectedInputs && this._ngControl) {\n this.projectedInputs.forEach(i => i.isRequired = isRequired);\n }\n });\n }\n\n private parseMinValue(value: string | Date): Date | null {\n let minValue: Date = parseDate(value);\n if (!minValue && this.hasProjectedInputs) {\n const start = this.projectedInputs.filter(i => i instanceof IgxDateRangeStartComponent)[0];\n if (start) {\n minValue = parseDate(start.dateTimeEditor.minValue);\n }\n }\n\n return minValue;\n }\n\n private parseMaxValue(value: string | Date): Date | null {\n let maxValue: Date = parseDate(value);\n if (!maxValue && this.projectedInputs) {\n const end = this.projectedInputs.filter(i => i instanceof IgxDateRangeEndComponent)[0];\n if (end) {\n maxValue = parseDate(end.dateTimeEditor.maxValue);\n }\n }\n\n return maxValue;\n }\n\n private updateCalendar(): void {\n if (!this.calendar) {\n return;\n }\n this._setDisabledDates();\n\n const range: Date[] = [];\n if (this.value) {\n const _value = this.toRangeOfDates(this.value);\n if (_value.start && _value.end) {\n if (DateTimeUtil.greaterThanMaxValue(_value.start, _value.end)) {\n this.swapEditorDates();\n }\n }\n if (_value.start) {\n range.push(_value.start);\n }\n if (_value.end) {\n range.push(_value.end);\n }\n }\n\n if (range.length > 0) {\n this.calendar.selectDate(range);\n } else if (range.length === 0 && this.calendar.monthViews) {\n this.calendar.deselectDate();\n }\n this._setCalendarActiveDate();\n this._cdr.detectChanges();\n }\n\n private swapEditorDates(): void {\n if (this.hasProjectedInputs) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n [start.dateTimeEditor.value, end.dateTimeEditor.value] = [end.dateTimeEditor.value, start.dateTimeEditor.value];\n [this.value.start, this.value.end] = [this.value.end, this.value.start];\n }\n }\n\n private extractRange(selection: Date[]): DateRange {\n return {\n start: selection[0] || null,\n end: selection.length > 0 ? selection[selection.length - 1] : null\n };\n }\n\n private toRangeOfDates(range: DateRange): { start: Date; end: Date } {\n let start;\n let end;\n if (!isDate(range.start)) {\n start = DateTimeUtil.parseIsoDate(range.start);\n }\n if (!isDate(range.end)) {\n end = DateTimeUtil.parseIsoDate(range.end);\n }\n\n if (start || end) {\n return { start, end };\n }\n\n return { start: range.start as Date, end: range.end as Date };\n }\n\n private subscribeToClick() {\n const inputs = this.hasProjectedInputs\n ? this.projectedInputs.map(i => i.inputDirective.nativeElement)\n : [this.getEditElement()];\n inputs.forEach(input => {\n fromEvent(input, 'click')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.isDropdown) {\n this.toggle();\n }\n });\n });\n }\n\n private subscribeToDateEditorEvents(): void {\n if (this.hasProjectedInputs) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n if (start && end) {\n start.dateTimeEditor.valueChange\n .pipe(takeUntil(this._destroy$))\n .subscribe(value => {\n if (this.value) {\n this.value = { start: value, end: this.value.end };\n } else {\n this.value = { start: value, end: null };\n }\n if (this.calendar) {\n this._setCalendarActiveDate(parseDate(value));\n this._cdr.detectChanges();\n }\n });\n end.dateTimeEditor.valueChange\n .pipe(takeUntil(this._destroy$))\n .subscribe(value => {\n if (this.value) {\n this.value = { start: this.value.start, end: value as Date };\n } else {\n this.value = { start: null, end: value as Date };\n }\n if (this.calendar) {\n this._setCalendarActiveDate(parseDate(value));\n this._cdr.detectChanges();\n }\n });\n }\n }\n }\n\n private attachOnTouched(): void {\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach(i => {\n fromEvent(i.dateTimeEditor.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (this.collapsed) {\n this.updateValidityOnBlur();\n }\n });\n });\n } else {\n fromEvent(this.inputDirective.nativeElement, 'blur')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (this.collapsed) {\n this.updateValidityOnBlur();\n }\n });\n }\n }\n\n private cacheFocusedInput(): void {\n if (this.hasProjectedInputs) {\n this.projectedInputs.forEach(i => {\n fromEvent(i.dateTimeEditor.nativeElement, 'focus')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => this._focusedInput = i);\n });\n }\n }\n\n private configPositionStrategy(): void {\n this._positionSettings = {\n openAnimation: fadeIn,\n closeAnimation: fadeOut,\n offset: 1\n };\n this._dropDownOverlaySettings.positionStrategy = new AutoPositionStrategy(this._positionSettings);\n\n const bundle = this.hasProjectedInputs\n ? this.projectedInputs.first?.nativeElement.querySelector('.igx-input-group__bundle')\n : this.element.nativeElement.querySelector('.igx-input-group__bundle');\n this._dropDownOverlaySettings.target = bundle || this.element.nativeElement;\n }\n\n private configOverlaySettings(): void {\n if (this.overlaySettings !== null) {\n this._dropDownOverlaySettings = Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n this._dialogOverlaySettings = Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n }\n }\n\n private initialSetValue() {\n // if there is no value and no ngControl on the picker but we have inputs we may have value set through\n // their ngModels - we should generate our initial control value\n if ((!this.value || (!this.value.start && !this.value.end)) && this.hasProjectedInputs && !this._ngControl) {\n const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent);\n const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent);\n this._value = {\n start: start.dateTimeEditor.value as Date,\n end: end.dateTimeEditor.value as Date\n };\n }\n }\n\n private updateInputs(): void {\n const start = this.projectedInputs?.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n const end = this.projectedInputs?.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n if (start && end) {\n const _value = this.value ? this.toRangeOfDates(this.value) : null;\n start.updateInputValue(_value?.start || null);\n end.updateInputValue(_value?.end || null);\n }\n }\n\n private updateDisplayFormat(): void {\n this.projectedInputs.forEach(i => {\n const input = i as IgxDateRangeInputsBaseComponent;\n input.dateTimeEditor.displayFormat = this.displayFormat;\n });\n }\n\n private updateInputFormat(): void {\n this.projectedInputs.forEach(i => {\n const input = i as IgxDateRangeInputsBaseComponent;\n if (input.dateTimeEditor.inputFormat !== this.inputFormat) {\n input.dateTimeEditor.inputFormat = this.inputFormat;\n }\n });\n }\n\n private updateInputLocale(): void {\n this.projectedInputs.forEach(i => {\n const input = i as IgxDateRangeInputsBaseComponent;\n input.dateTimeEditor.locale = this.locale;\n });\n }\n\n private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {\n this._calendar = componentInstance.calendar;\n this._calendar.hasHeader = !this.isDropdown && !this.hideHeader;\n this._calendar.locale = this.locale;\n this._calendar.selection = CalendarSelection.RANGE;\n this._calendar.weekStart = this.weekStart;\n this._calendar.hideOutsideDays = this.hideOutsideDays;\n this._calendar.monthsViewNumber = this._displayMonthsCount;\n this._calendar.showWeekNumbers = this.showWeekNumbers;\n this._calendar.headerTitleTemplate = this.headerTitleTemplate;\n this._calendar.headerTemplate = this.headerTemplate;\n this._calendar.subheaderTemplate = this.subheaderTemplate;\n this._calendar.headerOrientation = this.headerOrientation;\n this._calendar.orientation = this.orientation;\n this._calendar.specialDates = this.specialDates;\n this._calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date[]) => this.handleSelection(ev));\n\n this._setDisabledDates();\n this._setCalendarActiveDate();\n\n componentInstance.mode = this.mode;\n componentInstance.closeButtonLabel = !this.isDropdown ? this.doneButtonText : null;\n componentInstance.cancelButtonLabel = !this.isDropdown ? this.cancelButtonText : null;\n componentInstance.pickerActions = this.pickerActions;\n componentInstance.usePredefinedRanges = this.usePredefinedRanges;\n componentInstance.customRanges = this.customRanges;\n componentInstance.resourceStrings = this.resourceStrings;\n componentInstance.calendarClose.pipe(takeUntil(this._destroy$)).subscribe(() => this.close());\n componentInstance.calendarCancel.pipe(takeUntil(this._destroy$)).subscribe(() => {\n this._value = this._originalValue;\n this.close()\n });\n componentInstance.rangeSelected\n .pipe(takeUntil(this._destroy$))\n .subscribe((r: DateRange) => {\n if (r?.start && r?.end) {\n this.select(new Date(r.start), new Date(r.end));\n }\n\n if (this.isDropdown) {\n this.close();\n }\n });\n }\n\n private _setDisabledDates(): void {\n if (!this.calendar) {\n return;\n }\n this.calendar.disabledDates = this.disabledDates ? [...this.disabledDates] : [];\n const { minValue, maxValue } = this._getMinMaxDates();\n if (minValue) {\n this.calendar.disabledDates.push({ type: DateRangeType.Before, dateRange: [minValue] });\n }\n if (maxValue) {\n this.calendar.disabledDates.push({ type: DateRangeType.After, dateRange: [maxValue] });\n }\n }\n\n private _getMinMaxDates() {\n const minValue = this.parseMinValue(this.minValue);\n const maxValue = this.parseMaxValue(this.maxValue);\n return { minValue, maxValue };\n }\n\n private _isValueInDisabledRange(value: DateRange) {\n if (value && value.start && value.end && this.disabledDates) {\n const isOutsideDisabledRange = Array.from(\n calendarRange({\n start: parseDate(this.value.start),\n end: parseDate(this.value.end),\n inclusive: true\n })).every((date) => !isDateInRanges(date, this.disabledDates));\n return !isOutsideDisabledRange;\n }\n return false;\n }\n\n private _setCalendarActiveDate(value = null): void {\n if (this._calendar) {\n this._calendar.activeDate = value ?? this.activeDate;\n this._calendar.viewDate = value ?? this.activeDate;\n }\n }\n}\n","<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #clearIcon>\n <igx-icon family=\"default\" name=\"input_clear\" [attr.aria-hidden]=\"true\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n <igx-input-group [type]=\"type\">\n <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n <input #singleInput igxInput type=\"text\" [igxReadOnlyInput]=\"readOnly\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n @if (!toggleComponents.length) {\n <igx-prefix (click)=\"toggle()\">\n <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n </igx-prefix>\n }\n\n @if (!clearComponents.length && value) {\n <igx-suffix (click)=\"clear()\">\n <ng-container *ngTemplateOutlet=\"clearIcon\"></ng-container>\n </igx-suffix>\n }\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n </igx-input-group>\n</ng-template>\n","import { IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxDateRangeEndComponent, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent } from './date-range-picker-inputs.common';\nimport { IgxDateRangePickerComponent } from './date-range-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from 'igniteui-angular/calendar';\n\nexport * from './date-range-picker-inputs.common';\nexport * from './date-range-picker.component';\n\n/* NOTE: Date-range picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DATE_RANGE_PICKER_DIRECTIVES = [\n IgxDateRangePickerComponent,\n IgxPickerToggleComponent,\n IgxPickerClearComponent,\n IgxDateRangeStartComponent,\n IgxDateRangeEndComponent,\n IgxDateRangeSeparatorDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective,\n IgxCalendarHeaderTemplateDirective,\n IgxCalendarSubheaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_DATE_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_DATE_PICKER_DIRECTIVES\n ],\n exports: [\n ...IGX_DATE_PICKER_DIRECTIVES\n ]\n})\nexport class IgxDatePickerModule { }\n","import { NgModule } from '@angular/core';\nimport { IGX_DATE_RANGE_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_DATE_RANGE_PICKER_DIRECTIVES\n ],\n exports: [\n ...IGX_DATE_RANGE_PICKER_DIRECTIVES\n ]\n})\nexport class IgxDateRangePickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxDatePickerComponent","i1.IgxDateRangePickerComponent","i3.IgxDateRangeStartComponent","i3.IgxDateRangeEndComponent","i3.IgxDateRangeSeparatorDirective","i4","i5"],"mappings":"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"}
|