{"version":3,"file":"danielmoncada-angular-datetime-picker.mjs","sources":["../../../projects/picker/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/options-provider.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker.animations.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/dialog/dialog-config.class.ts","../../../projects/picker/src/lib/dialog/dialog-ref.class.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.html","../../../projects/picker/src/lib/utils/object.utils.ts","../../../projects/picker/src/lib/utils/index.ts","../../../projects/picker/src/lib/dialog/dialog.service.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-input.directive.ts","../../../projects/picker/src/lib/date-time/numberedFixLen.pipe.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/dialog/dialog.module.ts","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/utils/array.utils.ts","../../../projects/picker/src/lib/utils/date.utils.ts","../../../projects/picker/src/lib/utils/constants.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.ts","../../../projects/picker/src/public_api.ts","../../../projects/picker/src/danielmoncada-angular-datetime-picker.ts"],"sourcesContent":["/**\n * date-time-picker-trigger.directive\n */\n\n\nimport {\n    AfterContentInit,\n    ChangeDetectorRef,\n    Directive,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges\n} from '@angular/core';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\n@Directive({\n    selector: '[owlDateTimeTrigger]',\n    standalone: false,\n    host: {\n        '(click)': 'handleClickOnHost($event)',\n        '[class.owl-dt-trigger-disabled]': 'owlDTTriggerDisabledClass'\n    }\n})\nexport class OwlDateTimeTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n\n    @Input('owlDateTimeTrigger') dtPicker: OwlDateTimeComponent<T>;\n\n    private _disabled: boolean;\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === undefined ? this.dtPicker.disabled : !!this._disabled;\n    }\n\n    set disabled( value: boolean ) {\n        this._disabled = value;\n    }\n\n    get owlDTTriggerDisabledClass(): boolean {\n        return this.disabled;\n    }\n\n    private stateChanges = Subscription.EMPTY;\n\n    constructor( protected changeDetector: ChangeDetectorRef ) {\n    }\n\n    public ngOnInit(): void {\n    }\n\n    public ngOnChanges( changes: SimpleChanges ) {\n        if (changes.datepicker) {\n            this.watchStateChanges();\n        }\n    }\n\n    public ngAfterContentInit() {\n        this.watchStateChanges();\n    }\n\n    public ngOnDestroy(): void {\n        this.stateChanges.unsubscribe();\n    }\n\n    public handleClickOnHost( event: Event ): void {\n        if (this.dtPicker) {\n            this.dtPicker.open();\n            event.stopPropagation();\n        }\n    }\n\n    private watchStateChanges(): void {\n        this.stateChanges.unsubscribe();\n\n        const inputDisabled = this.dtPicker && this.dtPicker.dtInput ?\n            this.dtPicker.dtInput.disabledChange : observableOf();\n\n        const pickerDisabled = this.dtPicker ?\n            this.dtPicker.disabledChange : observableOf();\n\n        this.stateChanges = merge([pickerDisabled, inputDisabled])\n            .subscribe(() => {\n                this.changeDetector.markForCheck();\n            });\n    }\n}\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface OwlDateTimeFormats {\n    parseInput: any;\n    fullPickerInput: any;\n    datePickerInput: any;\n    timePickerInput: any;\n    monthYearLabel: any;\n    dateA11yLabel: any;\n    monthYearA11yLabel: any;\n}\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","/**\n * date-time-adapter.class\n */\nimport { Observable, Subject } from 'rxjs';\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>(\n    'OWL_DATE_TIME_LOCALE',\n    {\n        providedIn: 'root',\n        factory: OWL_DATE_TIME_LOCALE_FACTORY\n    }\n);\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n    return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n    provide: OWL_DATE_TIME_LOCALE,\n    useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n    /** The locale to use for all dates. */\n    protected locale: any;\n\n    /** A stream that emits when the locale changes. */\n    protected _localeChanges = new Subject<string>();\n    get localeChanges(): Observable<string> {\n        return this._localeChanges;\n    }\n\n\tpublic firstMonthOfTheYear: number = 0;\n\tpublic firstDayOfTheWeek: number = 0;\n    \n    /** total milliseconds in a day. */\n    protected readonly millisecondsInDay = 86400000;\n\n    /** total milliseconds in a minute. */\n    protected readonly milliseondsInMinute = 60000;\n\n    /**\n     * Get the year of the given date\n     */\n    abstract getYear(date: T): number;\n\n    /**\n     * Get the month of the given date\n     * 0 -- January\n     * 11 -- December\n     * */\n    abstract getMonth(date: T): number;\n\n    /**\n     * Get the day of the week of the given date\n     * 0 -- Sunday\n     * 6 -- Saturday\n     * */\n    abstract getDay(date: T): number;\n\n    /**\n     * Get the day num of the given date\n     */\n    abstract getDate(date: T): number;\n\n    /**\n     * Get the hours of the given date\n     */\n    abstract getHours(date: T): number;\n\n    /**\n     * Get the minutes of the given date\n     */\n    abstract getMinutes(date: T): number;\n\n    /**\n     * Get the seconds of the given date\n     */\n    abstract getSeconds(date: T): number;\n\n    /**\n     * Get the milliseconds timestamp of the given date\n     */\n    abstract getTime(date: T): number;\n\n    /**\n     * Gets the number of days in the month of the given date.\n     */\n    abstract getNumDaysInMonth(date: T): number;\n\n    /**\n     * Get the number of calendar days between the given dates.\n     * If dateLeft is before dateRight, it would return positive value\n     * If dateLeft is after dateRight, it would return negative value\n     */\n    abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n    /**\n     * Gets the name for the year of the given date.\n     */\n    abstract getYearName(date: T): string;\n\n    /**\n     * Get a list of month names\n     */\n    abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n    /**\n     * Get a list of week names\n     */\n    abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n    /**\n     * Gets a list of names for the dates of the month.\n     */\n    abstract getDateNames(): string[];\n\n    /**\n     * Return a Date object as a string, using the ISO standard\n     */\n    abstract toIso8601(date: T): string;\n\n    /**\n     * Check if the give dates are equal\n     */\n    abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n    /**\n     * Check if the give dates are the same day\n     */\n    abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n    /**\n     * Checks whether the given date is valid.\n     */\n    abstract isValid(date: T): boolean;\n\n    /**\n     * Gets date instance that is not valid.\n     */\n    abstract invalid(): T;\n\n    /**\n     * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n     */\n    abstract isDateInstance(obj: any): boolean;\n\n    /**\n     * Add the specified number of years to the given date\n     */\n    abstract addCalendarYears(date: T, amount: number): T;\n\n    /**\n     * Add the specified number of months to the given date\n     */\n    abstract addCalendarMonths(date: T, amount: number): T;\n\n    /**\n     * Add the specified number of days to the given date\n     */\n    abstract addCalendarDays(date: T, amount: number): T;\n\n    /**\n     * Set the hours to the given date.\n     */\n    abstract setHours(date: T, amount: number): T;\n\n    /**\n     * Set the minutes to the given date.\n     */\n    abstract setMinutes(date: T, amount: number): T;\n\n    /**\n     * Set the seconds to the given date.\n     */\n    abstract setSeconds(date: T, amount: number): T;\n\n    /**\n     * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n     * month and date.\n     */\n    abstract createDate(year: number, month: number, date: number): T;\n    abstract createDate(\n        year: number,\n        month: number,\n        date: number,\n        hours: number,\n        minutes: number,\n        seconds: number\n    ): T;\n\n    /**\n     * Clone the given date\n     */\n    abstract clone(date: T): T;\n\n    /**\n     * Get a new moment\n     * */\n    abstract now(): T;\n\n    /**\n     * Formats a date as a string according to the given format.\n     */\n    abstract format(date: T, displayFormat: any): string;\n\n    /**\n     * Parse a user-provided value to a Date Object\n     */\n    abstract parse(value: any, parseFormat: any): T | null;\n\n    /**\n     * Compare two given dates\n     * 1 if the first date is after the second,\n     * -1 if the first date is before the second\n     * 0 if dates are equal.\n     * */\n    compare(first: T, second: T): number {\n        if (!this.isValid(first) || !this.isValid(second)) {\n            throw Error('JSNativeDate: Cannot compare invalid dates.');\n        }\n\n        const dateFirst = this.clone(first);\n        const dateSecond = this.clone(second);\n\n        const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n        if (diff < 0) {\n            return -1;\n        } else if (diff > 0) {\n            return 1;\n        } else {\n            // Return 0 if diff is 0; return NaN if diff is NaN\n            return diff;\n        }\n    }\n\n    /**\n     * Check if two given dates are in the same year\n     * 1 if the first date's year is after the second,\n     * -1 if the first date's year is before the second\n     * 0 if two given dates are in the same year\n     * */\n    compareYear(first: T, second: T): number {\n        if (!this.isValid(first) || !this.isValid(second)) {\n            throw Error('JSNativeDate: Cannot compare invalid dates.');\n        }\n\n        const yearLeft = this.getYear(first);\n        const yearRight = this.getYear(second);\n\n        const diff = yearLeft - yearRight;\n\n        if (diff < 0) {\n            return -1;\n        } else if (diff > 0) {\n            return 1;\n        } else {\n            return 0;\n        }\n    }\n\n    /**\n     * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n     * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n     * string). The default implementation does not allow any deserialization, it simply checks that\n     * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n     * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n     * support passing values from your backend directly to these properties by overriding this method\n     * to also deserialize the format used by your backend.\n     */\n    deserialize(value: any): T | null {\n        if (\n            value == null ||\n            (this.isDateInstance(value) && this.isValid(value))\n        ) {\n            return value;\n        }\n        return this.invalid();\n    }\n\n    /**\n     * Sets the locale used for all dates.\n     */\n    setLocale(locale: string) {\n        this.locale = locale;\n        this._localeChanges.next(locale);\n    }\n\n     /**\n     * Get the locale used for all dates.\n     * */\n    getLocale() {\n        return this.locale;\n    }\n\n    /**\n     * Clamp the given date between min and max dates.\n     */\n    clampDate(date: T, min?: T | null, max?: T | null): T {\n        if (min && this.compare(date, min) < 0) {\n            return min;\n        }\n        if (max && this.compare(date, max) > 0) {\n            return max;\n        }\n        return date;\n    }\n}\n","/**\n * date-time.class\n */\nimport {EventEmitter, Inject, Input, Optional, Directive} from '@angular/core';\nimport {\n    coerceBooleanProperty,\n    coerceNumberProperty\n} from '@angular/cdk/coercion';\nimport {DateTimeAdapter} from './adapter/date-time-adapter.class';\nimport {\n    OWL_DATE_TIME_FORMATS,\n    OwlDateTimeFormats\n} from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport type PickerType = 'both' | 'calendar' | 'timer';\n\nexport type PickerMode = 'popup' | 'dialog' | 'inline';\n\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo';\n\nexport enum DateView {\n    MONTH = 'month',\n    YEAR = 'year',\n    MULTI_YEARS = 'multi-years'\n}\n\nexport type DateViewType = DateView.MONTH | DateView.YEAR | DateView.MULTI_YEARS;\n\n@Directive()\nexport abstract class OwlDateTime<T> {\n    /**\n     * Whether to show the second's timer\n     */\n    private _showSecondsTimer = false;\n    @Input()\n    get showSecondsTimer(): boolean {\n        return this._showSecondsTimer;\n    }\n\n    set showSecondsTimer(val: boolean) {\n        this._showSecondsTimer = coerceBooleanProperty(val);\n    }\n\n    /**\n     * Whether the timer is in hour12 format\n     */\n    private _hour12Timer = false;\n    @Input()\n    get hour12Timer(): boolean {\n        return this._hour12Timer;\n    }\n\n    set hour12Timer(val: boolean) {\n        this._hour12Timer = coerceBooleanProperty(val);\n    }\n\n    /**\n     * The view that the calendar should start in.\n     */\n    @Input()\n    startView: DateViewType = DateView.MONTH;\n\n    /**\n     * Whether to show calendar weeks in the calendar\n     * */\n    @Input()\n    showCalendarWeeks = false;\n\n    /**\n     * Whether to should only the year and multi-year views.\n     */\n    @Input()\n    yearOnly = false;\n\n    /**\n     * Whether to should only the multi-year view.\n     */\n    @Input()\n    multiyearOnly = false;\n\n    /**\n     * Hours to change per step\n     */\n    private _stepHour = 1;\n    @Input()\n    get stepHour(): number {\n        return this._stepHour;\n    }\n\n    set stepHour(val: number) {\n        this._stepHour = coerceNumberProperty(val, 1);\n    }\n\n    /**\n     * Minutes to change per step\n     */\n    private _stepMinute = 1;\n    @Input()\n    get stepMinute(): number {\n        return this._stepMinute;\n    }\n\n    set stepMinute(val: number) {\n        this._stepMinute = coerceNumberProperty(val, 1);\n    }\n\n    /**\n     * Seconds to change per step\n     */\n    private _stepSecond = 1;\n    @Input()\n    get stepSecond(): number {\n        return this._stepSecond;\n    }\n\n    set stepSecond(val: number) {\n        this._stepSecond = coerceNumberProperty(val, 1);\n    }\n\n    /**\n     * Set the first day of week\n     */\n    private _firstDayOfWeek: number;\n    @Input()\n    get firstDayOfWeek() {\n        return this._firstDayOfWeek;\n    }\n\n    set firstDayOfWeek(value: number) {\n        value = coerceNumberProperty(value);\n        if (value > 6 || value < 0) {\n            this._firstDayOfWeek = undefined;\n        } else {\n            this._firstDayOfWeek = value;\n        }\n    }\n\n    /**\n     * Whether to hide dates in other months at the start or end of the current month.\n     */\n    private _hideOtherMonths = false;\n    @Input()\n    get hideOtherMonths(): boolean {\n        return this._hideOtherMonths;\n    }\n\n    set hideOtherMonths(val: boolean) {\n        this._hideOtherMonths = coerceBooleanProperty(val);\n    }\n\n    private readonly _id: string;\n    get id(): string {\n        return this._id;\n    }\n\n    abstract get selected(): T | null;\n\n    abstract get selecteds(): T[] | null;\n\n    abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n    abstract get maxDateTime(): T | null;\n\n    abstract get minDateTime(): T | null;\n\n    abstract get selectMode(): SelectMode;\n\n    abstract get startAt(): T | null;\n\n    abstract get endAt(): T | null;\n\n    abstract get opened(): boolean;\n\n    abstract get pickerMode(): PickerMode;\n\n    abstract get pickerType(): PickerType;\n\n    abstract get isInSingleMode(): boolean;\n\n    abstract get isInRangeMode(): boolean;\n\n    abstract select(date: T | T[]): void;\n\n    abstract yearSelected: EventEmitter<T>;\n\n    abstract monthSelected: EventEmitter<T>;\n\n    abstract dateSelected: EventEmitter<T>;\n\n    abstract selectYear(normalizedYear: T): void;\n\n    abstract selectMonth(normalizedMonth: T): void;\n\n    abstract selectDate(normalizedDate: T): void;\n\n    get formatString(): string {\n        return this.pickerType === 'both'\n            ? this.dateTimeFormats.fullPickerInput\n            : this.pickerType === 'calendar'\n                ? this.dateTimeFormats.datePickerInput\n                : this.dateTimeFormats.timePickerInput;\n    }\n\n    /**\n     * Date Time Checker to check if the give dateTime is selectable\n     */\n    public dateTimeChecker = (dateTime: T) => {\n        return (\n            !!dateTime &&\n            (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n            (!this.minDateTime ||\n                this.dateTimeAdapter.compare(dateTime, this.minDateTime) >=\n                0) &&\n            (!this.maxDateTime ||\n                this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n        );\n    };\n\n    get disabled(): boolean {\n        return false;\n    }\n\n    protected constructor(\n        @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n        @Optional()\n        @Inject(OWL_DATE_TIME_FORMATS)\n        protected dateTimeFormats: OwlDateTimeFormats\n    ) {\n        if (!this.dateTimeAdapter) {\n            throw Error(\n                `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n                `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n                `custom implementation.`\n            );\n        }\n\n        if (!this.dateTimeFormats) {\n            throw Error(\n                `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n                `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n                `custom implementation.`\n            );\n        }\n\n        this._id = `owl-dt-picker-${nextUniqueId++}`;\n    }\n\n    protected getValidDate(obj: any): T | null {\n        return this.dateTimeAdapter.isDateInstance(obj) &&\n        this.dateTimeAdapter.isValid(obj)\n            ? obj\n            : null;\n    }\n}\n","/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class OwlDateTimeIntl {\n\n    /**\n     * Stream that emits whenever the labels here are changed. Use this to notify\n     * components if the labels have changed after initialization.\n     */\n    readonly changes: Subject<void> = new Subject<void>();\n\n    /** A label for the up second button (used by screen readers).  */\n    upSecondLabel = 'Add a second';\n\n    /** A label for the down second button (used by screen readers).  */\n    downSecondLabel = 'Minus a second';\n\n    /** A label for the up minute button (used by screen readers).  */\n    upMinuteLabel = 'Add a minute';\n\n    /** A label for the down minute button (used by screen readers).  */\n    downMinuteLabel = 'Minus a minute';\n\n    /** A label for the up hour button (used by screen readers).  */\n    upHourLabel = 'Add a hour';\n\n    /** A label for the down hour button (used by screen readers).  */\n    downHourLabel = 'Minus a hour';\n\n    /** A label for the previous month button (used by screen readers). */\n    prevMonthLabel = 'Previous month';\n\n    /** A label for the next month button (used by screen readers). */\n    nextMonthLabel = 'Next month';\n\n    /** A label for the previous year button (used by screen readers). */\n    prevYearLabel = 'Previous year';\n\n    /** A label for the next year button (used by screen readers). */\n    nextYearLabel = 'Next year';\n\n    /** A label for the previous multi-year button (used by screen readers). */\n    prevMultiYearLabel = 'Previous 21 years';\n\n    /** A label for the next multi-year button (used by screen readers). */\n    nextMultiYearLabel = 'Next 21 years';\n\n    /** A label for the 'switch to month view' button (used by screen readers). */\n    switchToMonthViewLabel = 'Change to month view';\n\n    /** A label for the 'switch to year view' button (used by screen readers). */\n    switchToMultiYearViewLabel = 'Choose month and year';\n\n    /** A label for the cancel button */\n    cancelBtnLabel = 'Cancel';\n\n    /** A label for the set button */\n    setBtnLabel = 'Set';\n\n    /** A label for the range 'from' in picker info */\n    rangeFromLabel = 'From';\n\n    /** A label for the range 'to' in picker info */\n    rangeToLabel = 'To';\n\n    /** A label for the hour12 button (AM) */\n    hour12AMLabel = 'AM';\n\n    /** A label for the hour12 button (PM) */\n    hour12PMLabel = 'PM';\n}\n","/**\n * calendar-body.component\n */\n\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgZone,\n    OnInit,\n    Output\n} from '@angular/core';\nimport { SelectMode } from './date-time.class';\nimport { take } from 'rxjs/operators';\n\nexport class CalendarCell {\n    constructor(\n        public value: number,\n        public displayValue: string,\n        public ariaLabel: string,\n        public enabled: boolean,\n        public out: boolean = false,\n        public cellClass: string = ''\n    ) {}\n}\n\n@Component({\n    selector: '[owl-date-time-calendar-body]',\n    exportAs: 'owlDateTimeCalendarBody',\n    templateUrl: './calendar-body.component.html',\n    styleUrls: ['./calendar-body.component.scss'],\n    host: {\n        '[class.owl-dt-calendar-body]': 'owlDTCalendarBodyClass'\n    },\n    preserveWhitespaces: false,\n    standalone: false,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent implements OnInit {\n    /**\n     * The cell number of the active cell in the table.\n     */\n    @Input()\n    activeCell = 0;\n\n    /**\n     * The cells to display in the table.\n     * */\n    @Input()\n    rows: CalendarCell[][];\n\n    /**\n     * The number of columns in the table.\n     * */\n    @Input()\n    numCols = 7;\n\n    /**\n     * The ratio (width / height) to use for the cells in the table.\n     */\n    @Input()\n    cellRatio = 1;\n\n    /**\n     * The value in the table that corresponds to today.\n     * */\n    @Input()\n    todayValue: number;\n\n    /**\n     * The value in the table that is currently selected.\n     * */\n    @Input()\n    selectedValues: number[];\n\n    /**\n     * Current picker select mode\n     */\n    @Input()\n    selectMode: SelectMode;\n\n    /**\n     * Emit when a calendar cell is selected\n     * */\n    @Output()\n    public readonly select = new EventEmitter<CalendarCell>();\n\n    get owlDTCalendarBodyClass(): boolean {\n        return true;\n    }\n\n    get isInSingleMode(): boolean {\n        return this.selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return (\n            this.selectMode === 'range' ||\n            this.selectMode === 'rangeFrom' ||\n            this.selectMode === 'rangeTo'\n        );\n    }\n\n    constructor(private elmRef: ElementRef, private ngZone: NgZone) {}\n\n    public ngOnInit() {}\n\n    public selectCell(cell: CalendarCell): void {\n        this.select.emit(cell);\n    }\n\n    public isActiveCell(rowIndex: number, colIndex: number): boolean {\n        const cellNumber = rowIndex * this.numCols + colIndex;\n        return cellNumber === this.activeCell;\n    }\n\n    /**\n     * Check if the cell is selected\n     */\n    public isSelected(value: number): boolean {\n        if (!this.selectedValues || this.selectedValues.length === 0) {\n            return false;\n        }\n\n        if (this.isInSingleMode) {\n            return value === this.selectedValues[0];\n        }\n\n        if (this.isInRangeMode) {\n            const fromValue = this.selectedValues[0];\n            const toValue = this.selectedValues[1];\n\n            return value === fromValue || value === toValue;\n        }\n    }\n\n    /**\n     * Check if the cell in the range\n     * */\n    public isInRange(value: number): boolean {\n        if (this.isInRangeMode) {\n            const fromValue = this.selectedValues[0];\n            const toValue = this.selectedValues[1];\n\n            if (fromValue !== null && toValue !== null) {\n                return value >= fromValue && value <= toValue;\n            } else {\n                return value === fromValue || value === toValue;\n            }\n        }\n    }\n\n    /**\n     * Check if the cell is the range from\n     * */\n    public isRangeFrom(value: number): boolean {\n        if (this.isInRangeMode) {\n            const fromValue = this.selectedValues[0];\n            return fromValue !== null && value === fromValue;\n        }\n    }\n\n    /**\n     * Check if the cell is the range to\n     * */\n    public isRangeTo(value: number): boolean {\n        if (this.isInRangeMode) {\n            const toValue = this.selectedValues[1];\n            return toValue !== null && value === toValue;\n        }\n    }\n\n    /**\n     * Focus to a active cell\n     * */\n    public focusActiveCell(): void {\n        this.ngZone.runOutsideAngular(() => {\n            this.ngZone.onStable\n                .asObservable()\n                .pipe(take(1))\n                .subscribe(() => {\n                    this.elmRef.nativeElement\n                        .querySelector('.owl-dt-calendar-cell-active')\n                        .focus();\n                });\n        });\n    }\n}\n","<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n    <td *ngFor=\"let item of row; let colIndex = index\"\n        class=\"owl-dt-calendar-cell {{item.cellClass}}\"\n        [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n        [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n        [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n        [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n        [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n        [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n        [attr.aria-label]=\"item.ariaLabel\"\n        [attr.aria-disabled]=\"!item.enabled || null\"\n        [attr.aria-current]=\"item.value === todayValue ? 'date' : null\"\n        [attr.aria-selected]=\"isSelected(item.value)\"\n        [style.width.%]=\"100 / numCols\"\n        [style.paddingTop.%]=\"50 * cellRatio / numCols\"\n        [style.paddingBottom.%]=\"50 * cellRatio / numCols\"\n        (click)=\"selectCell(item)\">\n        <span class=\"owl-dt-calendar-cell-content\"\n              [ngClass]=\"{\n                'owl-dt-calendar-cell-out': item.out,\n                'owl-dt-calendar-cell-today': item.value === todayValue,\n                'owl-dt-calendar-cell-selected': isSelected(item.value)\n              }\">\n            {{item.displayValue}}\n        </span>\n    </td>\n</tr>\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport function defaultOptionsFactory() {\r\n    return DefaultOptions.create();\r\n\r\n}\r\nexport function multiYearOptionsFactory(options: Options) {\r\n    return options.multiYear;\r\n  }\r\n\r\nexport interface Options {\r\n    multiYear: {\r\n        yearsPerRow: number,\r\n        yearRows: number\r\n    };\r\n}\r\nexport class DefaultOptions {\r\n    public static create(): Options {\r\n        // Always return new instance\r\n        return {\r\n            multiYear: {\r\n                yearRows: 7,\r\n                yearsPerRow: 3\r\n            }\r\n        };\r\n    }\r\n}\r\n\r\nexport abstract class OptionsTokens {\r\n    public static all = new InjectionToken<Options>('All options token');\r\n    public static multiYear = new InjectionToken<Options['multiYear']>('Grid view options token');\r\n}\r\n\r\nexport const optionsProviders: Provider[] = [\r\n    {\r\n        provide: OptionsTokens.all,\r\n        useFactory: defaultOptionsFactory,\r\n    },\r\n    {\r\n        provide: OptionsTokens.multiYear,\r\n        useFactory: multiYearOptionsFactory,\r\n        deps: [OptionsTokens.all],\r\n    },\r\n];\r\n","/**\n * calendar-multi-year-view.component\n */\n\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy, ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnInit,\n    Optional,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\nimport {\n    DOWN_ARROW,\n    END,\n    ENTER,\n    HOME,\n    LEFT_ARROW,\n    PAGE_DOWN,\n    PAGE_UP,\n    RIGHT_ARROW,\n    UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OptionsTokens, Options } from './options-provider';\n\n@Component({\n    selector: 'owl-date-time-multi-year-view',\n    templateUrl: './calendar-multi-year-view.component.html',\n    styleUrls: ['./calendar-multi-year-view.component.scss'],\n    host: {\n        '[class.owl-dt-calendar-view]': 'owlDTCalendarView',\n        '[class.owl-dt-calendar-multi-year-view]': 'owlDTCalendarMultiYearView'\n    },\n    standalone: false,\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class OwlMultiYearViewComponent<T> implements OnInit, AfterContentInit {\n\n    /**\n     * The select mode of the picker;\n     * */\n    private _selectMode: SelectMode = 'single';\n    @Input()\n    get selectMode(): SelectMode {\n        return this._selectMode;\n    }\n\n    set selectMode( val: SelectMode ) {\n        this._selectMode = val;\n        if (this.initiated) {\n            this.setSelectedYears();\n            this.cdRef.markForCheck();\n        }\n    }\n\n    /** The currently selected date. */\n    private _selected: T | null;\n    @Input()\n    get selected(): T | null {\n        return this._selected;\n    }\n\n    set selected( value: T | null ) {\n        const oldSelected = this._selected;\n        value = this.dateTimeAdapter.deserialize(value);\n        this._selected = this.getValidDate(value);\n\n        if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n            this.setSelectedYears();\n        }\n    }\n\n    private _selecteds: T[] = [];\n    @Input()\n    get selecteds(): T[] {\n        return this._selecteds;\n    }\n\n    set selecteds( values: T[] ) {\n        this._selecteds = values.map(( v ) => {\n            v = this.dateTimeAdapter.deserialize(v);\n            return this.getValidDate(v);\n        });\n        this.setSelectedYears();\n    }\n\n    private _pickerMoment: T | null;\n    @Input()\n    get pickerMoment() {\n        return this._pickerMoment;\n    }\n\n    set pickerMoment( value: T ) {\n        const oldMoment = this._pickerMoment;\n        value = this.dateTimeAdapter.deserialize(value);\n        this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n        if (oldMoment && this._pickerMoment &&\n            !this.isSameYearList(oldMoment, this._pickerMoment)) {\n            this.generateYearList();\n        }\n    }\n\n    /**\n     * A function used to filter which dates are selectable\n     * */\n    private _dateFilter: ( date: T ) => boolean;\n    @Input()\n    get dateFilter() {\n        return this._dateFilter;\n    }\n\n    set dateFilter( filter: ( date: T ) => boolean ) {\n        this._dateFilter = filter;\n        if (this.initiated) {\n            this.generateYearList();\n        }\n    }\n\n    /** The minimum selectable date. */\n    private _minDate: T | null;\n    @Input()\n    get minDate(): T | null {\n        return this._minDate;\n    }\n\n    set minDate( value: T | null ) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._minDate = this.getValidDate(value);\n        if (this.initiated) {\n            this.generateYearList();\n        }\n    }\n\n    /** The maximum selectable date. */\n    private _maxDate: T | null;\n    @Input()\n    get maxDate(): T | null {\n        return this._maxDate;\n    }\n\n    set maxDate( value: T | null ) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._maxDate = this.getValidDate(value);\n        if (this.initiated) {\n            this.generateYearList();\n        }\n    }\n\n    private _todayYear: number;\n    get todayYear(): number {\n        return this._todayYear;\n    }\n\n    private _years: CalendarCell[][];\n    get years() {\n        return this._years;\n    }\n\n    private _selectedYears: number[];\n    get selectedYears(): number[] {\n        return this._selectedYears;\n    }\n\n    private initiated = false;\n\n    get isInSingleMode(): boolean {\n        return this.selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return this.selectMode === 'range' || this.selectMode === 'rangeFrom'\n            || this.selectMode === 'rangeTo';\n    }\n\n    get activeCell(): number {\n        if (this._pickerMoment) {\n            return this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows);\n        }\n    }\n\n    get tableHeader(): string {\n        if (this._years && this._years.length > 0) {\n            return `${this._years[0][0].displayValue} - ${this._years[this.options.yearRows - 1][this.options.yearsPerRow - 1].displayValue}`;\n        }\n    }\n\n    get prevButtonLabel(): string {\n        return this.pickerIntl.prevMultiYearLabel;\n    }\n\n    get nextButtonLabel(): string {\n        return this.pickerIntl.nextMultiYearLabel;\n    }\n\n    /**\n     * Callback to invoke when a new month is selected\n     * */\n    @Output() readonly change = new EventEmitter<T>();\n\n    /**\n     * Emits the selected year. This doesn't imply a change on the selected date\n     * */\n    @Output() readonly yearSelected = new EventEmitter<T>();\n\n    /** Emits when any date is activated. */\n    @Output() readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n    /** Emits when use keyboard enter to select a calendar cell */\n    @Output() readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n    /** The body of calendar table */\n    @ViewChild(OwlCalendarBodyComponent, { static: true }) calendarBodyElm: OwlCalendarBodyComponent;\n\n    get owlDTCalendarView(): boolean {\n        return true;\n    }\n\n    get owlDTCalendarMultiYearView(): boolean {\n        return true;\n    }\n\n    constructor( private cdRef: ChangeDetectorRef,\n                 private pickerIntl: OwlDateTimeIntl,\n                 @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n                 @Inject(OptionsTokens.multiYear) private options: any) {\n    }\n\n    public ngOnInit() {\n    }\n\n    public ngAfterContentInit(): void {\n        this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n        this.generateYearList();\n        this.initiated = true;\n    }\n\n    /**\n     * Handle a calendarCell selected\n     */\n    public selectCalendarCell( cell: CalendarCell ): void {\n        this.selectYear(cell.value);\n    }\n\n    private selectYear( year: number ): void {\n        this.yearSelected.emit(this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.firstMonthOfTheYear, 1));\n        const firstDateOfMonth = this.dateTimeAdapter.createDate(\n            year,\n            this.dateTimeAdapter.getMonth(this.pickerMoment),\n            1\n        );\n        const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n        const selected = this.dateTimeAdapter.createDate(\n            year,\n            this.dateTimeAdapter.getMonth(this.pickerMoment),\n            Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n            this.dateTimeAdapter.getHours(this.pickerMoment),\n            this.dateTimeAdapter.getMinutes(this.pickerMoment),\n            this.dateTimeAdapter.getSeconds(this.pickerMoment),\n        );\n\n        this.change.emit(selected);\n    }\n\n    /**\n     * Generate the previous year list\n     * */\n    public prevYearList( event: any ): void {\n        this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1 * this.options.yearsPerRow * this.options.yearRows);\n        this.generateYearList();\n        event.preventDefault();\n    }\n\n    /**\n     * Generate the next year list\n     * */\n    public nextYearList( event: any ): void {\n        this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, this.options.yearsPerRow * this.options.yearRows);\n        this.generateYearList();\n        event.preventDefault();\n    }\n\n    public generateYearList(): void {\n        this._years = [];\n\n        const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n        const offset = pickerMomentYear % (this.options.yearsPerRow * this.options.yearRows);\n\n        for (let i = 0; i < this.options.yearRows; i++) {\n            const row = [];\n\n            for (let j = 0; j < this.options.yearsPerRow; j++) {\n                const year = pickerMomentYear - offset + (j + i * this.options.yearsPerRow);\n                const yearCell = this.createYearCell(year);\n                row.push(yearCell);\n            }\n\n            this._years.push(row);\n        }\n\n        return;\n\n    }\n\n    /** Whether the previous period button is enabled. */\n    public previousEnabled(): boolean {\n        if (!this.minDate) {\n            return true;\n        }\n        return !this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate);\n    }\n\n    /** Whether the next period button is enabled. */\n    public nextEnabled(): boolean {\n        return !this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate);\n    }\n\n    public handleCalendarKeydown( event: KeyboardEvent ): void {\n        let moment;\n        switch (event.keyCode) {\n            // minus 1 year\n            case LEFT_ARROW:\n                moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 year\n            case RIGHT_ARROW:\n                moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // minus 3 years\n            case UP_ARROW:\n                moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * this.options.yearsPerRow);\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 3 years\n            case DOWN_ARROW:\n                moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, this.options.yearsPerRow);\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // go to the first year of the year page\n            case HOME:\n                moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment,\n                    -this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows));\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // go to the last year of the year page\n            case END:\n                moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment,\n                    (this.options.yearsPerRow * this.options.yearRows) - this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows) - 1);\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // minus 1 year page (or 10 year pages)\n            case PAGE_UP:\n                moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 * (this.options.yearsPerRow * this.options.yearRows) : -1 * (this.options.yearsPerRow * this.options.yearRows));\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 year page (or 10 year pages)\n            case PAGE_DOWN:\n                moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 * (this.options.yearsPerRow * this.options.yearRows) : (this.options.yearsPerRow * this.options.yearRows));\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            case ENTER:\n                this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n                this.keyboardEnter.emit();\n                break;\n\n            default:\n                return;\n        }\n\n        this.focusActiveCell();\n        event.preventDefault();\n    }\n\n    /**\n     * Creates an CalendarCell for the given year.\n     */\n    private createYearCell( year: number ): CalendarCell {\n        const startDateOfYear = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.firstMonthOfTheYear, 1);\n        const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n        const cellClass = 'owl-dt-year-' + year;\n        return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n    }\n\n    private setSelectedYears(): void {\n\n        this._selectedYears = [];\n\n        if (this.isInSingleMode && this.selected) {\n            this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n        }\n\n        if (this.isInRangeMode && this.selecteds) {\n            this._selectedYears = this.selecteds.map(( selected ) => {\n                if (this.dateTimeAdapter.isValid(selected)) {\n                    return this.dateTimeAdapter.getYear(selected);\n                } else {\n                    return null;\n                }\n            });\n        }\n    }\n\n    /** Whether the given year is enabled. */\n    private isYearEnabled( year: number ) {\n        // disable if the year is greater than maxDate lower than minDate\n        if (year === undefined || year === null ||\n            (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n            (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))) {\n            return false;\n        }\n\n        // enable if it reaches here and there's no filter defined\n        if (!this.dateFilter) {\n            return true;\n        }\n\n        const firstOfYear = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.firstMonthOfTheYear, 1);\n\n        // If any date in the year is enabled count the year as enabled.\n        for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) === year;\n             date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\n            if (this.dateFilter(date)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    private isSameYearList( date1: T, date2: T ): boolean {\n        return Math.floor(this.dateTimeAdapter.getYear(date1) / (this.options.yearsPerRow * this.options.yearRows)) ===\n            Math.floor(this.dateTimeAdapter.getYear(date2) / (this.options.yearsPerRow * this.options.yearRows));\n    }\n\n    /**\n     * Get a valid date object\n     */\n    private getValidDate( obj: any ): T | null {\n        return (this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj)) ? obj : null;\n    }\n\n    private focusActiveCell() {\n        this.calendarBodyElm.focusActiveCell();\n    }\n}\n","<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n        [disabled]=\"!previousEnabled()\" [attr.aria-label]=\"prevButtonLabel\"\n        type=\"button\" tabindex=\"0\" (click)=\"prevYearList($event)\">\n    <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n        <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n    <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n             version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 250.738 250.738\"\n             style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\"\n             width=\"100%\" height=\"100%\">\n            <path style=\"fill-rule: evenodd; clip-rule: evenodd;\" d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546   c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681   l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"/>\n        </svg>\n        <!-- </editor-fold> -->\n    </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n    <thead class=\"owl-dt-calendar-header\">\n    <tr>\n        <th colspan=\"3\">{{tableHeader}}</th>\n    </tr>\n    </thead>\n    <tbody owl-date-time-calendar-body role=\"grid\"\n           [rows]=\"years\" [numCols]=\"3\" [cellRatio]=\"3 / 7\"\n           [activeCell]=\"activeCell\"\n           [todayValue]=\"todayYear\"\n           [selectedValues]=\"selectedYears\"\n           [selectMode]=\"selectMode\"\n           (keydown)=\"handleCalendarKeydown($event)\"\n           (select)=\"selectCalendarCell($event)\"></tbody>\n</table>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n        [disabled]=\"!nextEnabled()\" [attr.aria-label]=\"nextButtonLabel\"\n        type=\"button\" tabindex=\"0\" (click)=\"nextYearList($event)\">\n    <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n        <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n             viewBox=\"0 0 250.738 250.738\" style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\">\n            <path style=\"fill-rule:evenodd;clip-rule:evenodd;\" d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n                c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n                c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n                C197.237,120.447,195.534,115.448,191.75,111.689z\"/>\n        </svg>\n        <!-- </editor-fold> -->\n    </span>\n</button>\n","/**\n * calendar-year-view.component\n */\n\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport {\n    CalendarCell,\n    OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n    OWL_DATE_TIME_FORMATS,\n    OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n    DOWN_ARROW,\n    END,\n    ENTER,\n    HOME,\n    LEFT_ARROW,\n    PAGE_DOWN,\n    PAGE_UP,\n    RIGHT_ARROW,\n    UP_ARROW\n} from '@angular/cdk/keycodes';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n    selector: 'owl-date-time-year-view',\n    exportAs: 'owlMonthView',\n    templateUrl: './calendar-year-view.component.html',\n    styleUrls: ['./calendar-year-view.component.scss'],\n    host: {\n        '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n    },\n    standalone: false,\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T>\n    implements OnInit, AfterContentInit, OnDestroy {\n    /**\n     * The select mode of the picker;\n     * */\n    private _selectMode: SelectMode = 'single';\n    @Input()\n    get selectMode(): SelectMode {\n        return this._selectMode;\n    }\n\n    set selectMode(val: SelectMode) {\n        this._selectMode = val;\n        if (this.initiated) {\n            this.generateMonthList();\n            this.cdRef.markForCheck();\n        }\n    }\n\n    /** The currently selected date. */\n    private _selected: T | null;\n    @Input()\n    get selected(): T | null {\n        return this._selected;\n    }\n\n    set selected(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._selected = this.getValidDate(value);\n        this.setSelectedMonths();\n    }\n\n    private _selecteds: T[] = [];\n    @Input()\n    get selecteds(): T[] {\n        return this._selecteds;\n    }\n\n    set selecteds(values: T[]) {\n        this._selecteds = [];\n        for (let i = 0; i < values.length; i++) {\n            const value = this.dateTimeAdapter.deserialize(values[i]);\n            this._selecteds.push(this.getValidDate(value));\n        }\n\n        this.setSelectedMonths();\n    }\n\n    private _pickerMoment: T | null;\n    @Input()\n    get pickerMoment() {\n        return this._pickerMoment;\n    }\n\n    set pickerMoment(value: T) {\n        const oldMoment = this._pickerMoment;\n        value = this.dateTimeAdapter.deserialize(value);\n        this._pickerMoment =\n            this.getValidDate(value) || this.dateTimeAdapter.now();\n\n        if (\n            !this.hasSameYear(oldMoment, this._pickerMoment) &&\n            this.initiated\n        ) {\n            this.generateMonthList();\n        }\n    }\n\n    /**\n     * A function used to filter which dates are selectable\n     * */\n    private _dateFilter: (date: T) => boolean;\n    @Input()\n    get dateFilter() {\n        return this._dateFilter;\n    }\n\n    set dateFilter(filter: (date: T) => boolean) {\n        this._dateFilter = filter;\n        if (this.initiated) {\n            this.generateMonthList();\n        }\n    }\n\n    /** The minimum selectable date. */\n    private _minDate: T | null;\n    @Input()\n    get minDate(): T | null {\n        return this._minDate;\n    }\n\n    set minDate(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._minDate = this.getValidDate(value);\n        if (this.initiated) {\n            this.generateMonthList();\n        }\n    }\n\n    /** The maximum selectable date. */\n    private _maxDate: T | null;\n    @Input()\n    get maxDate(): T | null {\n        return this._maxDate;\n    }\n\n    set maxDate(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._maxDate = this.getValidDate(value);\n        if (this.initiated) {\n            this.generateMonthList();\n        }\n    }\n\n    private readonly monthNames: string[];\n\n    private _months: CalendarCell[][];\n    get months() {\n        return this._months;\n    }\n\n    get activeCell(): number {\n        if (this._pickerMoment) {\n            return this.dateTimeAdapter.getMonth(this._pickerMoment);\n        }\n    }\n\n    get isInSingleMode(): boolean {\n        return this.selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return (\n            this.selectMode === 'range' ||\n            this.selectMode === 'rangeFrom' ||\n            this.selectMode === 'rangeTo'\n        );\n    }\n\n    private localeSub: Subscription = Subscription.EMPTY;\n\n    private initiated = false;\n\n    public todayMonth: number | null;\n\n    /**\n     * An array to hold all selectedDates' month value\n     * the value is the month number in current year\n     * */\n    public selectedMonths: number[] = [];\n\n    /**\n     * Callback to invoke when a new month is selected\n     * */\n    @Output()\n    readonly change = new EventEmitter<T>();\n\n    /**\n     * Emits the selected year. This doesn't imply a change on the selected date\n     * */\n    @Output()\n    readonly monthSelected = new EventEmitter<T>();\n\n    /** Emits when any date is activated. */\n    @Output()\n    readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n    /** Emits when use keyboard enter to select a calendar cell */\n    @Output()\n    readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n    /** The body of calendar table */\n    @ViewChild(OwlCalendarBodyComponent, { static: true })\n    calendarBodyElm: OwlCalendarBodyComponent;\n\n    get owlDTCalendarView(): boolean {\n        return true;\n    }\n\n    constructor(\n        private cdRef: ChangeDetectorRef,\n        @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n        @Optional()\n        @Inject(OWL_DATE_TIME_FORMATS)\n        private dateTimeFormats: OwlDateTimeFormats\n    ) {\n        this.monthNames = this.dateTimeAdapter.getMonthNames('short');\n    }\n\n    public ngOnInit() {\n        this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n            this.generateMonthList();\n            this.cdRef.markForCheck();\n        });\n    }\n\n    public ngAfterContentInit(): void {\n        this.generateMonthList();\n        this.initiated = true;\n    }\n\n    public ngOnDestroy(): void {\n        this.localeSub.unsubscribe();\n    }\n\n    /**\n     * Handle a calendarCell selected\n     */\n    public selectCalendarCell(cell: CalendarCell): void {\n        this.selectMonth(cell.value);\n    }\n\n    /**\n     * Handle a new month selected\n     */\n    private selectMonth(month: number): void {\n        const firstDateOfMonth = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(this.pickerMoment),\n            month,\n            1\n        );\n\n        this.monthSelected.emit(firstDateOfMonth);\n\n        const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n            firstDateOfMonth\n        );\n        const result = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(this.pickerMoment),\n            month,\n            Math.min(\n                daysInMonth,\n                this.dateTimeAdapter.getDate(this.pickerMoment)\n            ),\n            this.dateTimeAdapter.getHours(this.pickerMoment),\n            this.dateTimeAdapter.getMinutes(this.pickerMoment),\n            this.dateTimeAdapter.getSeconds(this.pickerMoment)\n        );\n\n        this.change.emit(result);\n    }\n\n    /**\n     * Handle keydown event on calendar body\n     */\n    public handleCalendarKeydown(event: KeyboardEvent): void {\n        let moment;\n        switch (event.keyCode) {\n            // minus 1 month\n            case LEFT_ARROW:\n                moment = this.dateTimeAdapter.addCalendarMonths(\n                    this.pickerMoment,\n                    -1\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 month\n            case RIGHT_ARROW:\n                moment = this.dateTimeAdapter.addCalendarMonths(\n                    this.pickerMoment,\n                    1\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // minus 3 months\n            case UP_ARROW:\n                moment = this.dateTimeAdapter.addCalendarMonths(\n                    this.pickerMoment,\n                    -3\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 3 months\n            case DOWN_ARROW:\n                moment = this.dateTimeAdapter.addCalendarMonths(\n                    this.pickerMoment,\n                    3\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // move to first month of current year\n            case HOME:\n                moment = this.dateTimeAdapter.addCalendarMonths(\n                    this.pickerMoment,\n                    -this.dateTimeAdapter.getMonth(this.pickerMoment)\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // move to last month of current year\n            case END:\n                moment = this.dateTimeAdapter.addCalendarMonths(\n                    this.pickerMoment,\n                    11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // minus 1 year (or 10 year)\n            case PAGE_UP:\n                moment = this.dateTimeAdapter.addCalendarYears(\n                    this.pickerMoment,\n                    event.altKey ? -10 : -1\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 year (or 10 year)\n            case PAGE_DOWN:\n                moment = this.dateTimeAdapter.addCalendarYears(\n                    this.pickerMoment,\n                    event.altKey ? 10 : 1\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // Select current month\n            case ENTER:\n                this.selectMonth(\n                    this.dateTimeAdapter.getMonth(this.pickerMoment)\n                );\n                this.keyboardEnter.emit();\n                break;\n            default:\n                return;\n        }\n\n        this.focusActiveCell();\n        event.preventDefault();\n    }\n\n    /**\n     * Generate the calendar month list\n     * */\n    private generateMonthList(): void {\n        if (!this.pickerMoment) {\n            return;\n        }\n\n        this.setSelectedMonths();\n        this.todayMonth = this.getMonthInCurrentYear(\n            this.dateTimeAdapter.now()\n        );\n\n        this._months = [];\n        for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n            const row = [];\n\n            for (let j = 0; j < MONTHS_PER_ROW; j++) {\n                const month = j + i * MONTHS_PER_ROW + this.dateTimeAdapter.firstMonthOfTheYear;\n                const monthCell = this.createMonthCell(month);\n                row.push(monthCell);\n            }\n\n            this._months.push(row);\n        }\n\n        return;\n    }\n\n    /**\n     * Creates an CalendarCell for the given month.\n     */\n    private createMonthCell(month: number): CalendarCell {\n        const startDateOfMonth = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(this.pickerMoment),\n            month,\n            1\n        );\n        const ariaLabel = this.dateTimeAdapter.format(\n            startDateOfMonth,\n            this.dateTimeFormats.monthYearA11yLabel\n        );\n        const cellClass = 'owl-dt-month-' + month;\n        return new CalendarCell(\n            month,\n            this.monthNames[month-this.dateTimeAdapter.firstMonthOfTheYear],\n            ariaLabel,\n            this.isMonthEnabled(month),\n            false,\n            cellClass\n        );\n    }\n\n    /**\n     * Check if the given month is enable\n     */\n    private isMonthEnabled(month: number): boolean {\n        const firstDateOfMonth = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(this.pickerMoment),\n            month,\n            1\n        );\n\n        // If any date in the month is selectable,\n        // we count the month as enable\n        for (\n            let date = firstDateOfMonth;\n            this.dateTimeAdapter.getMonth(date) === month;\n            date = this.dateTimeAdapter.addCalendarDays(date, 1)\n        ) {\n            if (\n                !!date &&\n                (!this.dateFilter || this.dateFilter(date)) &&\n                (!this.minDate ||\n                    this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n                (!this.maxDate ||\n                    this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n            ) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Gets the month in this year that the given Date falls on.\n     * Returns null if the given Date is in another year.\n     */\n    private getMonthInCurrentYear(date: T | null): number {\n        if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n            const result = this.dateTimeAdapter.compareYear(\n                date,\n                this._pickerMoment\n            );\n\n            // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n            // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n            // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n            if (result < 0) {\n                return -1;\n            } else if (result > 0) {\n                return 12;\n            } else {\n                return this.dateTimeAdapter.getMonth(date);\n            }\n        } else {\n            return null;\n        }\n    }\n\n    /**\n     * Set the selectedMonths value\n     * In single mode, it has only one value which represent the month the selected date in\n     * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n     * */\n    private setSelectedMonths(): void {\n        this.selectedMonths = [];\n        if (this.isInSingleMode && this.selected) {\n            this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n        }\n\n        if (this.isInRangeMode && this.selecteds) {\n            this.selectedMonths[0] = this.getMonthInCurrentYear(\n                this.selecteds[0]\n            );\n            this.selectedMonths[1] = this.getMonthInCurrentYear(\n                this.selecteds[1]\n            );\n        }\n    }\n\n    /**\n     * Check the given dates are in the same year\n     */\n    private hasSameYear(dateLeft: T, dateRight: T) {\n        return !!(\n            dateLeft &&\n            dateRight &&\n            this.dateTimeAdapter.getYear(dateLeft) ===\n                this.dateTimeAdapter.getYear(dateRight)\n        );\n    }\n\n    /**\n     * Get a valid date object\n     */\n    private getValidDate(obj: any): T | null {\n        return this.dateTimeAdapter.isDateInstance(obj) &&\n            this.dateTimeAdapter.isValid(obj)\n            ? obj\n            : null;\n    }\n\n    private focusActiveCell() {\n        this.calendarBodyElm.focusActiveCell();\n    }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n    <thead class=\"owl-dt-calendar-header\">\n    <tr>\n        <th class=\"owl-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"3\"></th>\n    </tr>\n    </thead>\n    <tbody owl-date-time-calendar-body role=\"grid\"\n           [rows]=\"months\" [numCols]=\"3\" [cellRatio]=\"3 / 7\"\n           [activeCell]=\"activeCell\"\n           [todayValue]=\"todayMonth\"\n           [selectedValues]=\"selectedMonths\"\n           [selectMode]=\"selectMode\"\n           (keydown)=\"handleCalendarKeydown($event)\"\n           (select)=\"selectCalendarCell($event)\">\n    </tbody>\n</table>\n","/**\n * calendar-month-view.component\n */\n\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport {\n    CalendarCell,\n    OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n    OWL_DATE_TIME_FORMATS,\n    OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n    DOWN_ARROW,\n    END,\n    ENTER,\n    HOME,\n    LEFT_ARROW,\n    PAGE_DOWN,\n    PAGE_UP,\n    RIGHT_ARROW,\n    UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { getLocaleFirstDayOfWeek } from '@angular/common';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n    selector: 'owl-date-time-month-view',\n    exportAs: 'owlYearView',\n    templateUrl: './calendar-month-view.component.html',\n    styleUrls: ['./calendar-month-view.component.scss'],\n    standalone: false,\n    host: {\n        '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n    },\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T>\n    implements OnInit, AfterContentInit, OnDestroy {\n    /**\n     * Whether to hide dates in other months at the start or end of the current month.\n     * */\n    @Input()\n    hideOtherMonths = false;\n\n    /**\n     * Whether to show calendar weeks in the calendar\n     * */\n    @Input()\n    showCalendarWeeks = false;\n\n    private isDefaultFirstDayOfWeek = true;\n\n    /**\n     * Define the first day of a week\n     * Sunday: 0 - Saturday: 6\n     * */\n    private _firstDayOfWeek: number;\n\n    @Input()\n    get firstDayOfWeek(): number {\n        return this._firstDayOfWeek;\n    }\n\n    set firstDayOfWeek(val: number) {\n        if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n            this._firstDayOfWeek = val;\n            this.isDefaultFirstDayOfWeek = false;\n\n            if (this.initiated) {\n                this.generateWeekDays();\n                this.generateCalendar();\n                this.cdRef.markForCheck();\n            }\n        }\n    }\n\n    /**\n     * The select mode of the picker;\n     * */\n    private _selectMode: SelectMode = 'single';\n    @Input()\n    get selectMode(): SelectMode {\n        return this._selectMode;\n    }\n\n    set selectMode(val: SelectMode) {\n        this._selectMode = val;\n        if (this.initiated) {\n            this.generateCalendar();\n            this.cdRef.markForCheck();\n        }\n    }\n\n    /** The currently selected date. */\n    private _selected: T | null;\n    @Input()\n    get selected(): T | null {\n        return this._selected;\n    }\n\n    set selected(value: T | null) {\n        const oldSelected = this._selected;\n        value = this.dateTimeAdapter.deserialize(value);\n        this._selected = this.getValidDate(value);\n\n        if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n            this.setSelectedDates();\n        }\n    }\n\n    private _selecteds: T[] = [];\n    @Input()\n    get selecteds(): T[] {\n        return this._selecteds;\n    }\n\n    set selecteds(values: T[]) {\n        this._selecteds = values.map(v => {\n            v = this.dateTimeAdapter.deserialize(v);\n            return this.getValidDate(v);\n        });\n        this.setSelectedDates();\n    }\n\n    private _pickerMoment: T;\n    @Input()\n    get pickerMoment() {\n        return this._pickerMoment;\n    }\n\n    set pickerMoment(value: T) {\n        const oldMoment = this._pickerMoment;\n        value = this.dateTimeAdapter.deserialize(value);\n        this._pickerMoment =\n            this.getValidDate(value) || this.dateTimeAdapter.now();\n\n        this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(this._pickerMoment),\n            this.dateTimeAdapter.getMonth(this._pickerMoment),\n            1\n        );\n\n        if (\n            !this.isSameMonth(oldMoment, this._pickerMoment) &&\n            this.initiated\n        ) {\n            this.generateCalendar();\n        }\n    }\n\n    /**\n     * A function used to filter which dates are selectable\n     * */\n    private _dateFilter: (date: T) => boolean;\n    @Input()\n    get dateFilter() {\n        return this._dateFilter;\n    }\n\n    set dateFilter(filter: (date: T) => boolean) {\n        this._dateFilter = filter;\n        if (this.initiated) {\n            this.generateCalendar();\n            this.cdRef.markForCheck();\n        }\n    }\n\n    /** The minimum selectable date. */\n    private _minDate: T | null;\n    @Input()\n    get minDate(): T | null {\n        return this._minDate;\n    }\n\n    set minDate(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._minDate = this.getValidDate(value);\n        if (this.initiated) {\n            this.generateCalendar();\n            this.cdRef.markForCheck();\n        }\n    }\n\n    /** The maximum selectable date. */\n    private _maxDate: T | null;\n    @Input()\n    get maxDate(): T | null {\n        return this._maxDate;\n    }\n\n    set maxDate(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._maxDate = this.getValidDate(value);\n\n        if (this.initiated) {\n            this.generateCalendar();\n            this.cdRef.markForCheck();\n        }\n    }\n\n    private _weekdays: Array<{ long: string; short: string; narrow: string }>;\n    get weekdays() {\n        return this._weekdays;\n    }\n\n    private _days: CalendarCell[][];\n    get days() {\n        return this._days;\n    }\n\n    get activeCell(): number {\n        if (this.pickerMoment) {\n            return (\n                this.dateTimeAdapter.getDate(this.pickerMoment) +\n                this.firstRowOffset -\n                1\n            );\n        }\n    }\n\n    get isInSingleMode(): boolean {\n        return this.selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return (\n            this.selectMode === 'range' ||\n            this.selectMode === 'rangeFrom' ||\n            this.selectMode === 'rangeTo'\n        );\n    }\n\n    private firstDateOfMonth: T;\n\n    private localeSub: Subscription = Subscription.EMPTY;\n\n    private initiated = false;\n\n    private dateNames: string[];\n\n    /**\n     * The date of the month that today falls on.\n     * */\n    public todayDate: number | null;\n\n    /**\n     * Week day numbers\n     * */\n    public weekNumbers: number[];\n\n    /**\n     * An array to hold all selectedDates' value\n     * the value is the day number in current month\n     * */\n    public selectedDates: number[] = [];\n\n    // the index of cell that contains the first date of the month\n    public firstRowOffset: number;\n\n    /**\n     * Callback to invoke when a new date is selected\n     * */\n    @Output()\n    readonly selectedChange = new EventEmitter<T | null>();\n\n    /**\n     * Callback to invoke when any date is selected.\n     * */\n    @Output()\n    readonly userSelection = new EventEmitter<void>();\n\n    /** Emits when any date is activated. */\n    @Output()\n    readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>();\n\n    /** The body of calendar table */\n    @ViewChild(OwlCalendarBodyComponent, { static: true })\n    calendarBodyElm: OwlCalendarBodyComponent;\n\n    get owlDTCalendarView(): boolean {\n        return true;\n    }\n\n    constructor(\n        private cdRef: ChangeDetectorRef,\n        @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n        @Optional()\n        @Inject(OWL_DATE_TIME_FORMATS)\n        private dateTimeFormats: OwlDateTimeFormats\n    ) {}\n\n    public ngOnInit() {\n        this.updateFirstDayOfWeek(this.dateTimeAdapter.getLocale());\n        this.generateWeekDays();\n\n        this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(\n            locale => {\n                this.updateFirstDayOfWeek(locale);\n                this.generateWeekDays();\n                this.generateCalendar();\n                this.cdRef.markForCheck();\n            }\n        );\n    }\n\n    public ngAfterContentInit(): void {\n        this.generateCalendar();\n        this.initiated = true;\n    }\n\n    public ngOnDestroy(): void {\n        this.localeSub.unsubscribe();\n    }\n\n    /**\n     * Handle a calendarCell selected\n     */\n    public selectCalendarCell(cell: CalendarCell): void {\n        // Cases in which the date would not be selected\n        // 1, the calendar cell is NOT enabled (is NOT valid)\n        // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n        if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n            return;\n        }\n\n        this.selectDate(cell.value);\n    }\n\n    /**\n     * Handle a new date selected\n     */\n    private selectDate(date: number): void {\n        const daysDiff = date - 1;\n        const selected = this.dateTimeAdapter.addCalendarDays(\n            this.firstDateOfMonth,\n            daysDiff\n        );\n\n        this.selectedChange.emit(selected);\n        this.userSelection.emit();\n    }\n\n    /**\n     * Handle keydown event on calendar body\n     */\n    public handleCalendarKeydown(event: KeyboardEvent): void {\n        let moment;\n        switch (event.keyCode) {\n            // minus 1 day\n            case LEFT_ARROW:\n                moment = this.dateTimeAdapter.addCalendarDays(\n                    this.pickerMoment,\n                    -1\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 day\n            case RIGHT_ARROW:\n                moment = this.dateTimeAdapter.addCalendarDays(\n                    this.pickerMoment,\n                    1\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // minus 1 week\n            case UP_ARROW:\n                moment = this.dateTimeAdapter.addCalendarDays(\n                    this.pickerMoment,\n                    -7\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 week\n            case DOWN_ARROW:\n                moment = this.dateTimeAdapter.addCalendarDays(\n                    this.pickerMoment,\n                    7\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // move to first day of current month\n            case HOME:\n                moment = this.dateTimeAdapter.addCalendarDays(\n                    this.pickerMoment,\n                    1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // move to last day of current month\n            case END:\n                moment = this.dateTimeAdapter.addCalendarDays(\n                    this.pickerMoment,\n                    this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) -\n                        this.dateTimeAdapter.getDate(this.pickerMoment)\n                );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // minus 1 month (or 1 year)\n            case PAGE_UP:\n                moment = event.altKey\n                    ? this.dateTimeAdapter.addCalendarYears(\n                          this.pickerMoment,\n                          -1\n                      )\n                    : this.dateTimeAdapter.addCalendarMonths(\n                          this.pickerMoment,\n                          -1\n                      );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // add 1 month (or 1 year)\n            case PAGE_DOWN:\n                moment = event.altKey\n                    ? this.dateTimeAdapter.addCalendarYears(\n                          this.pickerMoment,\n                          1\n                      )\n                    : this.dateTimeAdapter.addCalendarMonths(\n                          this.pickerMoment,\n                          1\n                      );\n                this.pickerMomentChange.emit(moment);\n                break;\n\n            // select the pickerMoment\n            case ENTER:\n                if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n                    this.selectDate(\n                        this.dateTimeAdapter.getDate(this.pickerMoment)\n                    );\n                }\n                break;\n            default:\n                return;\n        }\n\n        this.focusActiveCell();\n        event.preventDefault();\n    }\n\n    /**\n     * Generate the calendar weekdays array\n     * */\n    private generateWeekDays(): void {\n        const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n        const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n        const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n        const firstDayOfWeek = this.firstDayOfWeek;\n\n        const weekdays = longWeekdays.map((long, i) => {\n            return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n        });\n\n        this._weekdays = weekdays\n            .slice(firstDayOfWeek-this.dateTimeAdapter.firstDayOfTheWeek)\n            .concat(weekdays.slice(0, firstDayOfWeek-this.dateTimeAdapter.firstDayOfTheWeek));\n\n        this.dateNames = this.dateTimeAdapter.getDateNames();\n\n        return;\n    }\n\n    /**\n     * Generate the calendar days array\n     * */\n    private generateCalendar(): void {\n        if (!this.pickerMoment) {\n            return;\n        }\n\n        this.todayDate = null;\n        this.weekNumbers = [];\n\n        // the first weekday of the month\n        const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\n            this.firstDateOfMonth\n        );\n        const firstDayOfWeek = this.firstDayOfWeek;\n\n        // the amount of days from the first date of the month\n        // if it is < 0, it means the date is in previous month\n        let daysDiff =\n            0 -\n            ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\n                DAYS_PER_WEEK);\n\n        // the index of cell that contains the first date of the month\n        this.firstRowOffset = Math.abs(daysDiff);\n\n        this._days = [];\n        for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n            const week = [];\n            for (let j = 0; j < DAYS_PER_WEEK; j++) {\n                const date = this.dateTimeAdapter.addCalendarDays(\n                    this.firstDateOfMonth,\n                    daysDiff\n                );\n                const dateCell = this.createDateCell(date, daysDiff);\n                // check if the date is today\n                if (\n                    this.dateTimeAdapter.isSameDay(\n                        this.dateTimeAdapter.now(),\n                        date\n                    )\n                ) {\n                    this.todayDate = daysDiff + 1;\n                }\n\n                week.push(dateCell);\n                daysDiff += 1;\n            }\n            this._days.push(week);\n            if (this.showCalendarWeeks) {\n                const weekNumber = this.getISOWeek(new Date(week[0].ariaLabel));\n                this.weekNumbers.push(weekNumber);\n            }\n        }\n        this.setSelectedDates();\n    }\n\n    public getISOWeek(d: Date): number {\n        const clonedDate = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n        // Make Sunday's day number 7\n        clonedDate.setUTCDate(clonedDate.getUTCDate() + 4 - (clonedDate.getUTCDay()||7));\n        // Get first day of year\n        const yearStart = new Date(Date.UTC(clonedDate.getUTCFullYear(),0,1));\n        // Calculate full weeks to nearest Thursday\n        const weekNo = Math.ceil(( ( (+clonedDate - +yearStart) / 86400000) + 1)/7);\n        return weekNo;\n    }\n\n    private updateFirstDayOfWeek(locale: string): void {\n        if (this.isDefaultFirstDayOfWeek) {\n            try {\n                this._firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n            } catch {\n                this._firstDayOfWeek = 0;\n            }\n        }\n    }\n\n    /**\n     * Creates CalendarCell for days.\n     */\n    private createDateCell(date: T, daysDiff: number): CalendarCell {\n        // total days of the month\n        const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n            this.pickerMoment\n        );\n        const dateNum = this.dateTimeAdapter.getDate(date);\n        // const dateName = this.dateNames[dateNum - 1];\n        const dateName = dateNum.toString();\n        const ariaLabel = this.dateTimeAdapter.format(\n            date,\n            this.dateTimeFormats.dateA11yLabel\n        );\n\n        // check if the date if selectable\n        const enabled = this.isDateEnabled(date);\n\n        // check if date is not in current month\n        const dayValue = daysDiff + 1;\n        const out = dayValue < 1 || dayValue > daysInMonth;\n        const cellClass = 'owl-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n        return new CalendarCell(\n            dayValue,\n            dateName,\n            ariaLabel,\n            enabled,\n            out,\n            cellClass\n        );\n    }\n\n    /**\n     * Check if the date is valid\n     */\n    private isDateEnabled(date: T): boolean {\n        return (\n            !!date &&\n            (!this.dateFilter || this.dateFilter(date)) &&\n            (!this.minDate ||\n                this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n            (!this.maxDate ||\n                this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n        );\n    }\n\n    /**\n     * Get a valid date object\n     */\n    private getValidDate(obj: any): T | null {\n        return this.dateTimeAdapter.isDateInstance(obj) &&\n            this.dateTimeAdapter.isValid(obj)\n            ? obj\n            : null;\n    }\n\n    /**\n     * Check if the give dates are none-null and in the same month\n     */\n    public isSameMonth(dateLeft: T, dateRight: T): boolean {\n        return !!(\n            dateLeft &&\n            dateRight &&\n            this.dateTimeAdapter.isValid(dateLeft) &&\n            this.dateTimeAdapter.isValid(dateRight) &&\n            this.dateTimeAdapter.getYear(dateLeft) ===\n                this.dateTimeAdapter.getYear(dateRight) &&\n            this.dateTimeAdapter.getMonth(dateLeft) ===\n                this.dateTimeAdapter.getMonth(dateRight)\n        );\n    }\n\n    /**\n     * Set the selectedDates value.\n     * In single mode, it has only one value which represent the selected date\n     * In range mode, it would has two values, one for the fromValue and the other for the toValue\n     * */\n    private setSelectedDates(): void {\n        this.selectedDates = [];\n\n        if (!this.firstDateOfMonth) {\n            return;\n        }\n\n        if (this.isInSingleMode && this.selected) {\n            const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n                this.selected,\n                this.firstDateOfMonth\n            );\n            this.selectedDates[0] = dayDiff + 1;\n            return;\n        }\n\n        if (this.isInRangeMode && this.selecteds) {\n            this.selectedDates = this.selecteds.map(selected => {\n                if (this.dateTimeAdapter.isValid(selected)) {\n                    const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n                        selected,\n                        this.firstDateOfMonth\n                    );\n                    return dayDiff + 1;\n                } else {\n                    return null;\n                }\n            });\n        }\n    }\n\n    private focusActiveCell() {\n        this.calendarBodyElm.focusActiveCell();\n    }\n}\n","<ul class=\"week-number\" *ngIf=\"showCalendarWeeks\">\n    <li *ngFor=\"let week of weekNumbers;\">\n        <span>{{ week }}</span>\n    </li>\n</ul>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-month-table\" [ngClass]=\"{'owl-calendar-weeks': showCalendarWeeks}\"\n       [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\">\n    <thead class=\"owl-dt-calendar-header\">\n    <tr class=\"owl-dt-weekdays\">\n        <th *ngFor=\"let weekday of weekdays\"\n            [attr.aria-label]=\"weekday.long\"\n            class=\"owl-dt-weekday\" scope=\"col\">\n            <span>{{weekday.short}}</span>\n        </th>\n    </tr>\n    <tr>\n        <th class=\"owl-dt-calendar-table-divider\" [ngClass]=\"{'owl-calendar-weeks': showCalendarWeeks}\" aria-hidden=\"true\" colspan=\"7\"></th>\n    </tr>\n    </thead>\n    <tbody owl-date-time-calendar-body role=\"grid\"\n           [rows]=\"days\" [todayValue]=\"todayDate\"\n           [selectedValues]=\"selectedDates\"\n           [selectMode]=\"selectMode\"\n           [activeCell]=\"activeCell\"\n           (keydown)=\"handleCalendarKeydown($event)\"\n           (select)=\"selectCalendarCell($event)\">\n    </tbody>\n</table>\n","/**\n * calendar.component\n */\n\nimport {\n    AfterContentInit,\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output\n} from '@angular/core';\nimport {OwlDateTimeIntl} from './date-time-picker-intl.service';\nimport {DateTimeAdapter} from './adapter/date-time-adapter.class';\nimport {OWL_DATE_TIME_FORMATS, OwlDateTimeFormats} from './adapter/date-time-format.class';\nimport {DateView, DateViewType, SelectMode} from './date-time.class';\nimport {take} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n    selector: 'owl-date-time-calendar',\n    exportAs: 'owlDateTimeCalendar',\n    templateUrl: './calendar.component.html',\n    styleUrls: ['./calendar.component.scss'],\n    standalone: false,\n    host: {\n        '[class.owl-dt-calendar]': 'owlDTCalendarClass'\n    },\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarComponent<T>\n    implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n\n    DateView = DateView;\n\n    @Input()\n    get minDate(): T | null {\n        return this._minDate;\n    }\n\n    set minDate(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        value = this.getValidDate(value);\n\n        this._minDate = value\n            ? this.dateTimeAdapter.createDate(\n                this.dateTimeAdapter.getYear(value),\n                this.dateTimeAdapter.getMonth(value),\n                this.dateTimeAdapter.getDate(value)\n            )\n            : null;\n    }\n\n    @Input()\n    get maxDate(): T | null {\n        return this._maxDate;\n    }\n\n    set maxDate(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        value = this.getValidDate(value);\n\n        this._maxDate = value\n            ? this.dateTimeAdapter.createDate(\n                this.dateTimeAdapter.getYear(value),\n                this.dateTimeAdapter.getMonth(value),\n                this.dateTimeAdapter.getDate(value)\n            )\n            : null;\n    }\n\n    @Input()\n    get pickerMoment() {\n        return this._pickerMoment;\n    }\n\n    set pickerMoment(value: T) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._pickerMoment =\n            this.getValidDate(value) || this.dateTimeAdapter.now();\n    }\n\n    @Input()\n    get selected(): T | null {\n        return this._selected;\n    }\n\n    set selected(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._selected = this.getValidDate(value);\n    }\n\n    @Input()\n    get selecteds(): T[] {\n        return this._selecteds;\n    }\n\n    set selecteds(values: T[]) {\n        this._selecteds = values.map(v => {\n            v = this.dateTimeAdapter.deserialize(v);\n            return this.getValidDate(v);\n        });\n    }\n\n    get periodButtonText(): string {\n        return this.isMonthView\n            ? this.dateTimeAdapter.format(\n                this.pickerMoment,\n                this.dateTimeFormats.monthYearLabel\n            )\n            : this.dateTimeAdapter.getYearName(this.pickerMoment);\n    }\n\n    get periodButtonLabel(): string {\n        return this.isMonthView\n            ? this.pickerIntl.switchToMultiYearViewLabel\n            : this.pickerIntl.switchToMonthViewLabel;\n    }\n\n    get prevButtonLabel(): string {\n        if (this._currentView === DateView.MONTH) {\n            return this.pickerIntl.prevMonthLabel;\n        } else if (this._currentView === DateView.YEAR) {\n            return this.pickerIntl.prevYearLabel;\n        } else {\n            return null;\n        }\n    }\n\n    get nextButtonLabel(): string {\n        if (this._currentView === DateView.MONTH) {\n            return this.pickerIntl.nextMonthLabel;\n        } else if (this._currentView === DateView.YEAR) {\n            return this.pickerIntl.nextYearLabel;\n        } else {\n            return null;\n        }\n    }\n\n    get currentView(): DateViewType {\n        return this._currentView;\n    }\n\n    set currentView(view: DateViewType) {\n        this._currentView = view;\n        this.moveFocusOnNextTick = true;\n    }\n\n    get isInSingleMode(): boolean {\n        return this.selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return (\n            this.selectMode === 'range' ||\n            this.selectMode === 'rangeFrom' ||\n            this.selectMode === 'rangeTo'\n        );\n    }\n\n    get showControlArrows(): boolean {\n        return this._currentView !== DateView.MULTI_YEARS;\n    }\n\n    get isMonthView() {\n        return this._currentView === DateView.MONTH;\n    }\n\n    /**\n     * Bind class 'owl-dt-calendar' to host\n     * */\n    get owlDTCalendarClass(): boolean {\n        return true;\n    }\n\n    constructor(\n        private elmRef: ElementRef,\n        private pickerIntl: OwlDateTimeIntl,\n        private ngZone: NgZone,\n        private cdRef: ChangeDetectorRef,\n        @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n        @Optional()\n        @Inject(OWL_DATE_TIME_FORMATS)\n        private dateTimeFormats: OwlDateTimeFormats\n    ) {\n        this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n            this.cdRef.markForCheck();\n        });\n    }\n\n    /**\n     * Date filter for the month and year view\n     * */\n    @Input()\n    dateFilter: (date: T) => boolean;\n\n    /**\n     * Set the first day of week\n     */\n    @Input()\n    firstDayOfWeek: number;\n\n    /** The minimum selectable date. */\n    private _minDate: T | null;\n\n    /** The maximum selectable date. */\n    private _maxDate: T | null;\n\n    /** The current picker moment */\n    private _pickerMoment: T;\n\n    @Input()\n    selectMode: SelectMode;\n\n    /** The currently selected moment. */\n    private _selected: T | null;\n\n    private _selecteds: T[] = [];\n\n    /**\n     * The view that the calendar should start in.\n     */\n    @Input()\n    startView: DateViewType = DateView.MONTH;\n\n    /**\n     * Whether to should only the year and multi-year views.\n     */\n    @Input()\n    yearOnly = false;\n\n    /**\n     * Whether to show calendar weeks in the calendar\n     * */\n    @Input()\n    showCalendarWeeks = false;\n\n    /**\n     * Whether to should only the multi-year view.\n     */\n    @Input()\n    multiyearOnly = false;\n\n    /**\n     * Whether to hide dates in other months at the start or end of the current month.\n     * */\n    @Input()\n    hideOtherMonths: boolean;\n\n    /** Emits when the currently picker moment changes. */\n    @Output()\n    pickerMomentChange = new EventEmitter<T>();\n\n    /** Emits when the selected date changes. */\n    @Output()\n    readonly dateClicked = new EventEmitter<T>();\n\n    /** Emits when the currently selected date changes. */\n    @Output()\n    readonly selectedChange = new EventEmitter<T>();\n\n    /** Emits when any date is selected. */\n    @Output()\n    readonly userSelection = new EventEmitter<void>();\n\n    /**\n     * Emits the selected year. This doesn't imply a change on the selected date\n     * */\n    @Output()\n    readonly yearSelected = new EventEmitter<T>();\n\n    /**\n     * Emits the selected month. This doesn't imply a change on the selected date\n     * */\n    @Output()\n    readonly monthSelected = new EventEmitter<T>();\n\n    private _currentView: DateViewType;\n\n    private intlChangesSub = Subscription.EMPTY;\n\n    /**\n     * Used for scheduling that focus should be moved to the active cell on the next tick.\n     * We need to schedule it, rather than do it immediately, because we have to wait\n     * for Angular to re-evaluate the view children.\n     */\n    private moveFocusOnNextTick = false;\n\n    /**\n     * Date filter for the month and year view\n     */\n    public dateFilterForViews = (date: T) => {\n        return (\n            !!date &&\n            (!this.dateFilter || this.dateFilter(date)) &&\n            (!this.minDate ||\n                this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n            (!this.maxDate ||\n                this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n        );\n    };\n\n    public ngOnInit() {\n    }\n\n    public ngAfterContentInit(): void {\n        this._currentView = this.startView;\n    }\n\n    public ngAfterViewChecked() {\n        if (this.moveFocusOnNextTick) {\n            this.moveFocusOnNextTick = false;\n            this.focusActiveCell();\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.intlChangesSub.unsubscribe();\n    }\n\n    /**\n     * Toggle between month view and year view\n     */\n    public toggleViews(): void {\n        let nextView = null;\n        if (this._currentView === DateView.MONTH) {\n            nextView = DateView.MULTI_YEARS;\n        } else {\n            if (this.multiyearOnly) {\n                nextView = DateView.MULTI_YEARS;\n            } else if (this.yearOnly) {\n                nextView = this._currentView === DateView.YEAR ? DateView.MULTI_YEARS : DateView.YEAR;\n            } else {\n                nextView = DateView.MONTH;\n            }\n        }\n        this.currentView = nextView;\n    }\n\n    /**\n     * Handles user clicks on the previous button.\n     * */\n    public previousClicked(): void {\n        this.pickerMoment = this.isMonthView\n            ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n            : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n        this.pickerMomentChange.emit(this.pickerMoment);\n    }\n\n    /**\n     * Handles user clicks on the next button.\n     * */\n    public nextClicked(): void {\n        this.pickerMoment = this.isMonthView\n            ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n            : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n        this.pickerMomentChange.emit(this.pickerMoment);\n    }\n\n    public dateSelected(date: T): void {\n        if (!this.dateFilterForViews(date)) {\n            return;\n        }\n\n        this.dateClicked.emit(date);\n        this.selectedChange.emit(date);\n\n        /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n            this.isInRangeMode) {\n            this.selectedChange.emit(date);\n        }*/\n    }\n\n    /**\n     * Change the pickerMoment value and switch to a specific view\n     */\n    public goToDateInView(\n        date: T,\n        view: DateViewType\n    ): void {\n        this.handlePickerMomentChange(date);\n        if ((!this.yearOnly && !this.multiyearOnly) ||\n            (this.multiyearOnly && (view !== DateView.MONTH && view !== DateView.YEAR)) ||\n            (this.yearOnly && view !== DateView.MONTH)) {\n            this.currentView = view;\n        } else {\n            this.dateSelected(date);\n        }\n        return;\n    }\n\n    /**\n     * Change the pickerMoment value\n     */\n    public handlePickerMomentChange(date: T): void {\n        this.pickerMoment = this.dateTimeAdapter.clampDate(\n            date,\n            this.minDate,\n            this.maxDate\n        );\n        this.pickerMomentChange.emit(this.pickerMoment);\n        return;\n    }\n\n    public userSelected(): void {\n        this.userSelection.emit();\n    }\n\n    /**\n     * Whether the previous period button is enabled.\n     */\n    public prevButtonEnabled(): boolean {\n        return (\n            !this.minDate || !this.isSameView(this.pickerMoment, this.minDate)\n        );\n    }\n\n    /**\n     * Whether the next period button is enabled.\n     */\n    public nextButtonEnabled(): boolean {\n        return (\n            !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate)\n        );\n    }\n\n    /**\n     * Focus to the host element\n     * */\n    public focusActiveCell() {\n        this.ngZone.runOutsideAngular(() => {\n            this.ngZone.onStable\n                .asObservable()\n                .pipe(take(1))\n                .subscribe(() => {\n                    this.elmRef.nativeElement\n                        .querySelector('.owl-dt-calendar-cell-active')\n                        .focus();\n                });\n        });\n    }\n\n    public selectYearInMultiYearView(normalizedYear: T): void {\n        this.yearSelected.emit(normalizedYear);\n    }\n\n    public selectMonthInYearView(normalizedMonth: T): void {\n        this.monthSelected.emit(normalizedMonth);\n    }\n\n    /**\n     * Whether the two dates represent the same view in the current view mode (month or year).\n     */\n    private isSameView(date1: T, date2: T): boolean {\n        if (this._currentView === DateView.MONTH) {\n            return !!(\n                date1 &&\n                date2 &&\n                this.dateTimeAdapter.getYear(date1) ===\n                this.dateTimeAdapter.getYear(date2) &&\n                this.dateTimeAdapter.getMonth(date1) ===\n                this.dateTimeAdapter.getMonth(date2)\n            );\n        } else if (this._currentView === DateView.YEAR) {\n            return !!(\n                date1 &&\n                date2 &&\n                this.dateTimeAdapter.getYear(date1) ===\n                this.dateTimeAdapter.getYear(date2)\n            );\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * Get a valid date object\n     */\n    private getValidDate(obj: any): T | null {\n        return this.dateTimeAdapter.isDateInstance(obj) &&\n        this.dateTimeAdapter.isValid(obj)\n            ? obj\n            : null;\n    }\n}\n","<div class=\"owl-dt-calendar-control\">\n    <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n    <button class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n            type=\"button\" tabindex=\"0\"\n            [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\n            [disabled]=\"!prevButtonEnabled()\"\n            [attr.aria-label]=\"prevButtonLabel\"\n            (click)=\"previousClicked()\">\n        <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n            <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n        <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                 version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 250.738 250.738\"\n                 style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\"\n                 width=\"100%\" height=\"100%\">\n                <path style=\"fill-rule: evenodd; clip-rule: evenodd;\" d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546   c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681   l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"/>\n            </svg>\n            <!-- </editor-fold> -->\n        </span>\n    </button>\n    <div class=\"owl-dt-calendar-control-content\">\n        <button class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n                type=\"button\" tabindex=\"0\"\n                [attr.aria-label]=\"periodButtonLabel\"\n                (click)=\"toggleViews()\">\n            <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n                {{periodButtonText}}\n\n                <span class=\"owl-dt-control-button-arrow\"\n                      [style.transform]=\"'rotate(' + (isMonthView? 0 : 180) +'deg)'\">\n                    <!-- <editor-fold desc=\"SVG Arrow\"> -->\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n                         width=\"50%\" height=\"50%\" viewBox=\"0 0 292.362 292.362\" style=\"enable-background:new 0 0 292.362 292.362;\"\n                         xml:space=\"preserve\">\n                        <g>\n                            <path d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n                                C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n                                s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\"/>\n                        </g>\n                    </svg>\n                    <!-- </editor-fold> -->\n                </span>\n            </span>\n        </button>\n    </div>\n    <button class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n            type=\"button\" tabindex=\"0\"\n            [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\n            [disabled]=\"!nextButtonEnabled()\"\n            [attr.aria-label]=\"nextButtonLabel\"\n            (click)=\"nextClicked()\">\n        <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n            <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n        <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n                 viewBox=\"0 0 250.738 250.738\" style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\">\n                <path style=\"fill-rule:evenodd;clip-rule:evenodd;\" d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n                    c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n                    c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n                    C197.237,120.447,195.534,115.448,191.75,111.689z\"/>\n            </svg>\n            <!-- </editor-fold> -->\n        </span>\n    </button>\n</div>\n<div class=\"owl-dt-calendar-main\" cdkMonitorSubtreeFocus [ngSwitch]=\"currentView\" tabindex=\"-1\">\n    <owl-date-time-month-view\n            *ngSwitchCase=\"DateView.MONTH\"\n            [pickerMoment]=\"pickerMoment\"\n            [firstDayOfWeek]=\"firstDayOfWeek\"\n            [selected]=\"selected\"\n            [selecteds]=\"selecteds\"\n            [selectMode]=\"selectMode\"\n            [minDate]=\"minDate\"\n            [showCalendarWeeks]=\"showCalendarWeeks\"\n            [maxDate]=\"maxDate\"\n            [dateFilter]=\"dateFilter\"\n            [hideOtherMonths]=\"hideOtherMonths\"\n            (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n            (selectedChange)=\"dateSelected($event)\"\n            (userSelection)=\"userSelected()\"></owl-date-time-month-view>\n\n    <owl-date-time-year-view\n            *ngSwitchCase=\"DateView.YEAR\"\n            [pickerMoment]=\"pickerMoment\"\n            [selected]=\"selected\"\n            [selecteds]=\"selecteds\"\n            [selectMode]=\"selectMode\"\n            [minDate]=\"minDate\"\n            [maxDate]=\"maxDate\"\n            [dateFilter]=\"dateFilter\"\n            (keyboardEnter)=\"focusActiveCell()\"\n            (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n            (monthSelected)=\"selectMonthInYearView($event)\"\n            (change)=\"goToDateInView($event, DateView.MONTH)\"></owl-date-time-year-view>\n\n    <owl-date-time-multi-year-view\n            *ngSwitchCase=\"DateView.MULTI_YEARS\"\n            [pickerMoment]=\"pickerMoment\"\n            [selected]=\"selected\"\n            [selecteds]=\"selecteds\"\n            [selectMode]=\"selectMode\"\n            [minDate]=\"minDate\"\n            [maxDate]=\"maxDate\"\n            [dateFilter]=\"dateFilter\"\n            (keyboardEnter)=\"focusActiveCell()\"\n            (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n            (yearSelected)=\"selectYearInMultiYearView($event)\"\n            (change)=\"goToDateInView($event, DateView.YEAR)\"></owl-date-time-multi-year-view>\n</div>\n","/**\n * timer-box.component\n */\n\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    ElementRef,\n    ViewChild,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n    exportAs: 'owlDateTimeTimerBox',\n    selector: 'owl-date-time-timer-box',\n    templateUrl: './timer-box.component.html',\n    styleUrls: ['./timer-box.component.scss'],\n    standalone: false,\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.owl-dt-timer-box]': 'owlDTTimerBoxClass'\n    }\n})\n\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n\n    @Input() showDivider = false;\n\n    @Input() upBtnAriaLabel: string;\n\n    @Input() upBtnDisabled: boolean;\n\n    @Input() downBtnAriaLabel: string;\n\n    @Input() downBtnDisabled: boolean;\n\n    /**\n     * Value would be displayed in the box\n     * If it is null, the box would display [value]\n     * */\n    @Input() boxValue: number;\n\n    @Input() value: number;\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() step = 1;\n\n    @Input() inputLabel: string;\n\n    @Output() valueChange = new EventEmitter<number>();\n\n    @Output() inputChange = new EventEmitter<number>();\n\n    private inputStream = new Subject<string>();\n\n    private inputStreamSub = Subscription.EMPTY;\n\n    private hasFocus = false;\n\n    get displayValue(): string {\n        if (this.hasFocus) {\n            // Don't try to reformat the value that user is currently editing\n            return this.valueInput.nativeElement.value;\n        }\n\n        const value = this.boxValue || this.value;\n\n        if (value === null || isNaN(value)) {\n            return '';\n        }\n\n        return value < 10 ? '0' + value.toString() : value.toString();\n    }\n\n    get owlDTTimerBoxClass(): boolean {\n        return true;\n    }\n\n    @ViewChild('valueInput', { static: true })\n    private valueInput: ElementRef<HTMLInputElement>;\n    private onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);\n\n    constructor() {\n    }\n\n    public ngOnInit() {\n        this.inputStreamSub = this.inputStream.pipe(debounceTime(750)).subscribe(( val: string ) => {\n            if (val) {\n                const inputValue = coerceNumberProperty(val, 0);\n                this.updateValueViaInput(inputValue);\n            }\n        });\n        this.bindValueInputMouseWheel();\n    }\n\n    public ngOnDestroy(): void {\n        this.unbindValueInputMouseWheel();\n        this.inputStreamSub.unsubscribe();\n    }\n\n    public upBtnClicked(): void {\n        this.updateValue(this.value + this.step);\n    }\n\n    public downBtnClicked(): void {\n        this.updateValue(this.value - this.step);\n    }\n\n    public handleInputChange(val: string ): void {\n        this.inputStream.next(val);\n    }\n\n    public focusIn(): void {\n        this.hasFocus = true;\n    }\n\n    public focusOut(value: string): void {\n        this.hasFocus = false;\n        if (value) {\n            const inputValue = coerceNumberProperty(value, 0);\n            this.updateValueViaInput(inputValue);\n        }\n    }\n\n    private updateValue( value: number ): void {\n        this.valueChange.emit(value);\n    }\n\n    private updateValueViaInput( value: number ): void {\n        if (value > this.max || value < this.min) {\n            return;\n        }\n        this.inputChange.emit(value);\n    }\n\n    private onValueInputMouseWheel( event: any ): void {\n        event = event || window.event;\n        const delta = event.wheelDelta || -event.deltaY || -event.detail;\n\n        if (delta > 0) {\n          if (!this.upBtnDisabled) {\n            this.upBtnClicked();\n          }\n        } else if (delta < 0) {\n          if (!this.downBtnDisabled) {\n            this.downBtnClicked();\n          }\n        }\n\n        event.preventDefault ? event.preventDefault() : (event.returnValue = false);\n    }\n\n    private bindValueInputMouseWheel(): void {\n        this.valueInput.nativeElement.addEventListener(\n            'onwheel' in document ? 'wheel' : 'mousewheel',\n            this.onValueInputMouseWheelBind);\n    }\n\n    private unbindValueInputMouseWheel(): void {\n        this.valueInput.nativeElement.removeEventListener(\n            'onwheel' in document ? 'wheel' : 'mousewheel',\n            this.onValueInputMouseWheelBind);\n    }\n}\n","<div *ngIf=\"showDivider\" class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n        type=\"button\" tabindex=\"-1\"\n        [disabled]=\"upBtnDisabled\"\n        [attr.aria-label]=\"upBtnAriaLabel\"\n        (click)=\"upBtnClicked()\">\n    <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n        <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n    <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                 version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n                 style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n                 width=\"100%\" height=\"100%\">\n                    <path d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n                        L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n                        c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"/>\n                </svg>\n        <!-- </editor-fold> -->\n    </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n    <input class=\"owl-dt-timer-input\" maxlength=\"2\"\n           [value]=\"displayValue\"\n           (keydown.arrowup)=\"!upBtnDisabled && upBtnClicked()\"\n           (keydown.arrowdown)=\"!downBtnDisabled && downBtnClicked()\"\n           (input)=\"handleInputChange(valueInput.value)\"\n           (focusin)=\"focusIn()\"\n           (focusout)=\"focusOut(valueInput.value)\"\n           #valueInput>\n    <span class=\"owl-hidden-accessible\">{{inputLabel}}</span>\n</label>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n        type=\"button\" tabindex=\"-1\"\n        [disabled]=\"downBtnDisabled\"\n        [attr.aria-label]=\"downBtnAriaLabel\"\n        (click)=\"downBtnClicked()\">\n    <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n        <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n    <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                 version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n                 style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n                 width=\"100%\" height=\"100%\">\n                    <path d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n                        c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n                        c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"/>\n                </svg>\n        <!-- </editor-fold> -->\n    </span>\n</button>\n","/**\n * timer.component\n */\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgZone,\n    OnInit,\n    Optional,\n    Output\n} from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { take } from 'rxjs/operators';\n\n@Component({\n    exportAs: 'owlDateTimeTimer',\n    selector: 'owl-date-time-timer',\n    templateUrl: './timer.component.html',\n    styleUrls: ['./timer.component.scss'],\n    preserveWhitespaces: false,\n    standalone: false,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.owl-dt-timer]': 'owlDTTimerClass',\n        '[attr.tabindex]': 'owlDTTimeTabIndex'\n    }\n})\nexport class OwlTimerComponent<T> implements OnInit {\n    /** The current picker moment */\n    private _pickerMoment: T;\n    @Input()\n    get pickerMoment() {\n        return this._pickerMoment;\n    }\n\n    set pickerMoment(value: T) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._pickerMoment =\n            this.getValidDate(value) || this.dateTimeAdapter.now();\n    }\n\n    /** The minimum selectable date time. */\n    private _minDateTime: T | null;\n    @Input()\n    get minDateTime(): T | null {\n        return this._minDateTime;\n    }\n\n    set minDateTime(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._minDateTime = this.getValidDate(value);\n    }\n\n    /** The maximum selectable date time. */\n    private _maxDateTime: T | null;\n    @Input()\n    get maxDateTime(): T | null {\n        return this._maxDateTime;\n    }\n\n    set maxDateTime(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this._maxDateTime = this.getValidDate(value);\n    }\n\n    private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n    /**\n     * Whether to show the second's timer\n     */\n    @Input()\n    showSecondsTimer: boolean;\n\n    /**\n     * Whether the timer is in hour12 format\n     */\n    @Input()\n    hour12Timer: boolean;\n\n    /**\n     * Hours to change per step\n     */\n    @Input()\n    stepHour = 1;\n\n    /**\n     * Minutes to change per step\n     */\n    @Input()\n    stepMinute = 1;\n\n    /**\n     * Seconds to change per step\n     */\n    @Input()\n    stepSecond = 1;\n\n    get hourValue(): number {\n        return this.dateTimeAdapter.getHours(this.pickerMoment);\n    }\n\n    /**\n     * The value would be displayed in hourBox.\n     * We need this because the value displayed in hourBox it not\n     * the same as the hourValue when the timer is in hour12Timer mode.\n     * */\n    get hourBoxValue(): number {\n        let hours = this.hourValue;\n\n        if (!this.hour12Timer) {\n            return hours;\n        } else {\n            if (hours === 0) {\n                hours = 12;\n                this.isPM = false;\n            } else if (hours > 0 && hours < 12) {\n                this.isPM = false;\n            } else if (hours === 12) {\n                this.isPM = true;\n            } else if (hours > 12 && hours < 24) {\n                hours = hours - 12;\n                this.isPM = true;\n            }\n\n            return hours;\n        }\n    }\n\n    get minuteValue(): number {\n        return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n    }\n\n    get secondValue(): number {\n        return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n    }\n\n    get upHourButtonLabel(): string {\n        return this.pickerIntl.upHourLabel;\n    }\n\n    get downHourButtonLabel(): string {\n        return this.pickerIntl.downHourLabel;\n    }\n\n    get upMinuteButtonLabel(): string {\n        return this.pickerIntl.upMinuteLabel;\n    }\n\n    get downMinuteButtonLabel(): string {\n        return this.pickerIntl.downMinuteLabel;\n    }\n\n    get upSecondButtonLabel(): string {\n        return this.pickerIntl.upSecondLabel;\n    }\n\n    get downSecondButtonLabel(): string {\n        return this.pickerIntl.downSecondLabel;\n    }\n\n    get hour12ButtonLabel(): string {\n        return this.isPM\n            ? this.pickerIntl.hour12PMLabel\n            : this.pickerIntl.hour12AMLabel;\n    }\n\n    @Output()\n    selectedChange = new EventEmitter<T>();\n\n    get owlDTTimerClass(): boolean {\n        return true;\n    }\n\n    get owlDTTimeTabIndex(): number {\n        return -1;\n    }\n\n    constructor(\n        private ngZone: NgZone,\n        private elmRef: ElementRef,\n        private pickerIntl: OwlDateTimeIntl,\n        private cdRef: ChangeDetectorRef,\n        @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n    ) {}\n\n    public ngOnInit() {}\n\n    /**\n     * Focus to the host element\n     * */\n    public focus() {\n        this.ngZone.runOutsideAngular(() => {\n            this.ngZone.onStable\n                .asObservable()\n                .pipe(take(1))\n                .subscribe(() => {\n                    this.elmRef.nativeElement.focus();\n                });\n        });\n    }\n\n    /**\n     * Set the hour value via typing into timer box input\n     * We need this to handle the hour value when the timer is in hour12 mode\n     * */\n    public setHourValueViaInput(hours: number): void {\n        if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n            hours = hours + 12;\n        } else if (this.hour12Timer && !this.isPM && hours === 12) {\n            hours = 0;\n        }\n\n        this.setHourValue(hours);\n    }\n\n    public setHourValue(hours: number): void {\n        const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n        this.selectedChange.emit(m);\n        this.cdRef.markForCheck();\n    }\n\n    public setMinuteValue(minutes: number): void {\n        const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n        this.selectedChange.emit(m);\n        this.cdRef.markForCheck();\n    }\n\n    public setSecondValue(seconds: number): void {\n        const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n        this.selectedChange.emit(m);\n        this.cdRef.markForCheck();\n    }\n\n    public setMeridiem(event: any): void {\n        this.isPM = !this.isPM;\n\n        let hours = this.hourValue;\n        if (this.isPM) {\n            hours = hours + 12;\n        } else {\n            hours = hours - 12;\n        }\n\n        if (hours >= 0 && hours <= 23) {\n            this.setHourValue(hours);\n        }\n\n        this.cdRef.markForCheck();\n        event.preventDefault();\n    }\n\n    /**\n     * Check if the up hour button is enabled\n     */\n    public upHourEnabled(): boolean {\n        return (\n            !this.maxDateTime ||\n            this.compareHours(this.stepHour, this.maxDateTime) < 1\n        );\n    }\n\n    /**\n     * Check if the down hour button is enabled\n     */\n    public downHourEnabled(): boolean {\n        return (\n            !this.minDateTime ||\n            this.compareHours(-this.stepHour, this.minDateTime) > -1\n        );\n    }\n\n    /**\n     * Check if the up minute button is enabled\n     */\n    public upMinuteEnabled(): boolean {\n        return (\n            !this.maxDateTime ||\n            this.compareMinutes(this.stepMinute, this.maxDateTime) < 1\n        );\n    }\n\n    /**\n     * Check if the down minute button is enabled\n     */\n    public downMinuteEnabled(): boolean {\n        return (\n            !this.minDateTime ||\n            this.compareMinutes(-this.stepMinute, this.minDateTime) > -1\n        );\n    }\n\n    /**\n     * Check if the up second button is enabled\n     */\n    public upSecondEnabled(): boolean {\n        return (\n            !this.maxDateTime ||\n            this.compareSeconds(this.stepSecond, this.maxDateTime) < 1\n        );\n    }\n\n    /**\n     * Check if the down second button is enabled\n     */\n    public downSecondEnabled(): boolean {\n        return (\n            !this.minDateTime ||\n            this.compareSeconds(-this.stepSecond, this.minDateTime) > -1\n        );\n    }\n\n    /**\n     * PickerMoment's hour value +/- certain amount and compare it to the give date\n     * 1 is after the comparedDate\n     * -1 is before the comparedDate\n     * 0 is equal the comparedDate\n     * */\n    private compareHours(amount: number, comparedDate: T): number {\n        const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n        const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n        return this.dateTimeAdapter.compare(result, comparedDate);\n    }\n\n    /**\n     * PickerMoment's minute value +/- certain amount and compare it to the give date\n     * 1 is after the comparedDate\n     * -1 is before the comparedDate\n     * 0 is equal the comparedDate\n     * */\n    private compareMinutes(amount: number, comparedDate: T): number {\n        const minutes =\n            this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n        const result = this.dateTimeAdapter.setMinutes(\n            this.pickerMoment,\n            minutes\n        );\n        return this.dateTimeAdapter.compare(result, comparedDate);\n    }\n\n    /**\n     * PickerMoment's second value +/- certain amount and compare it to the give date\n     * 1 is after the comparedDate\n     * -1 is before the comparedDate\n     * 0 is equal the comparedDate\n     * */\n    private compareSeconds(amount: number, comparedDate: T): number {\n        const seconds =\n            this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n        const result = this.dateTimeAdapter.setSeconds(\n            this.pickerMoment,\n            seconds\n        );\n        return this.dateTimeAdapter.compare(result, comparedDate);\n    }\n\n    /**\n     * Get a valid date object\n     */\n    private getValidDate(obj: any): T | null {\n        return this.dateTimeAdapter.isDateInstance(obj) &&\n            this.dateTimeAdapter.isValid(obj)\n            ? obj\n            : null;\n    }\n}\n","<owl-date-time-timer-box\n        [upBtnAriaLabel]=\"upHourButtonLabel\"\n        [downBtnAriaLabel]=\"downHourButtonLabel\"\n        [upBtnDisabled]=\"!upHourEnabled()\"\n        [downBtnDisabled]=\"!downHourEnabled()\"\n        [boxValue]=\"hourBoxValue\"\n        [value]=\"hourValue\" [min]=\"0\" [max]=\"23\"\n        [step]=\"stepHour\" [inputLabel]=\"'Hour'\"\n        (inputChange)=\"setHourValueViaInput($event)\"\n        (valueChange)=\"setHourValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n        [showDivider]=\"true\"\n        [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n        [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n        [upBtnDisabled]=\"!upMinuteEnabled()\"\n        [downBtnDisabled]=\"!downMinuteEnabled()\"\n        [value]=\"minuteValue\" [min]=\"0\" [max]=\"59\"\n        [step]=\"stepMinute\" [inputLabel]=\"'Minute'\"\n        (inputChange)=\"setMinuteValue($event)\"\n        (valueChange)=\"setMinuteValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n        *ngIf=\"showSecondsTimer\"\n        [showDivider]=\"true\"\n        [upBtnAriaLabel]=\"upSecondButtonLabel\"\n        [downBtnAriaLabel]=\"downSecondButtonLabel\"\n        [upBtnDisabled]=\"!upSecondEnabled()\"\n        [downBtnDisabled]=\"!downSecondEnabled()\"\n        [value]=\"secondValue\" [min]=\"0\" [max]=\"59\"\n        [step]=\"stepSecond\" [inputLabel]=\"'Second'\"\n        (inputChange)=\"setSecondValue($event)\"\n        (valueChange)=\"setSecondValue($event)\"></owl-date-time-timer-box>\n\n<div *ngIf=\"hour12Timer\" class=\"owl-dt-timer-hour12\">\n    <button class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n            type=\"button\" tabindex=\"0\"\n            (click)=\"setMeridiem($event)\">\n        <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n            {{hour12ButtonLabel}}\n        </span>\n    </button>\n</div>\n","/**\n * date-time-picker.animations\n */\nimport {\n    animate, animateChild,\n    AnimationTriggerMetadata,\n    group,\n    query,\n    state,\n    style,\n    transition,\n    trigger\n} from '@angular/animations';\n\nexport const owlDateTimePickerAnimations: {\n    readonly transformPicker: AnimationTriggerMetadata;\n    readonly fadeInPicker: AnimationTriggerMetadata;\n} = {\n\n    transformPicker: trigger('transformPicker', [\n        state('void', style({opacity: 0, transform: 'scale(1, 0)'})),\n        state('enter', style({opacity: 1, transform: 'scale(1, 1)'})),\n        transition('void => enter', group([\n            query('@fadeInPicker', animateChild(), { optional: true }),\n            animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n        ])),\n        transition('enter => void', animate('100ms linear', style({opacity: 0})))\n    ]),\n\n    fadeInPicker: trigger('fadeInPicker', [\n        state('enter', style({opacity: 1})),\n        state('void', style({opacity: 0})),\n        transition('void => enter', animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')),\n    ])\n};\n","/**\n * date-time-picker-container.component\n */\n\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    OnInit,\n    Optional,\n    ViewChild\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { Observable, Subject } from 'rxjs';\nimport { owlDateTimePickerAnimations } from './date-time-picker.animations';\nimport {\n    DOWN_ARROW,\n    LEFT_ARROW,\n    RIGHT_ARROW,\n    SPACE,\n    UP_ARROW\n} from '@angular/cdk/keycodes';\n\n@Component({\n    exportAs: 'owlDateTimeContainer',\n    selector: 'owl-date-time-container',\n    templateUrl: './date-time-picker-container.component.html',\n    styleUrls: ['./date-time-picker-container.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: false,\n    standalone: false,\n    animations: [\n        owlDateTimePickerAnimations.transformPicker,\n        owlDateTimePickerAnimations.fadeInPicker\n    ],\n    host: {\n        '(@transformPicker.start)': 'handleContainerAnimationStart($event)',\n        '(@transformPicker.done)': 'handleContainerAnimationDone($event)',\n        '[class.owl-dt-container]': 'owlDTContainerClass',\n        '[class.owl-dt-popup-container]': 'owlDTPopupContainerClass',\n        '[class.owl-dt-dialog-container]': 'owlDTDialogContainerClass',\n        '[class.owl-dt-inline-container]': 'owlDTInlineContainerClass',\n        '[class.owl-dt-container-disabled]': 'owlDTContainerDisabledClass',\n        '[attr.id]': 'owlDTContainerId',\n        '[@transformPicker]': 'owlDTContainerAnimation',\n    }\n})\nexport class OwlDateTimeContainerComponent<T>\n    implements OnInit, AfterContentInit, AfterViewInit {\n    @ViewChild(OwlCalendarComponent)\n    calendar: OwlCalendarComponent<T>;\n    @ViewChild(OwlTimerComponent)\n    timer: OwlTimerComponent<T>;\n\n    public picker: OwlDateTime<T>;\n    public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n    // retain start and end time\n    private retainStartTime: T;\n    private retainEndTime: T;\n\n    /**\n     * Stream emits when try to hide picker\n     * */\n    private hidePicker$ = new Subject<any>();\n\n    get hidePickerStream(): Observable<any> {\n        return this.hidePicker$.asObservable();\n    }\n\n    /**\n     * Stream emits when try to confirm the selected value\n     * */\n    private confirmSelected$ = new Subject<any>();\n\n    get confirmSelectedStream(): Observable<any> {\n        return this.confirmSelected$.asObservable();\n    }\n\n    private beforePickerOpened$ = new Subject<any>();\n\n    get beforePickerOpenedStream(): Observable<any> {\n        return this.beforePickerOpened$.asObservable();\n    }\n\n    private pickerOpened$ = new Subject<any>();\n\n    get pickerOpenedStream(): Observable<any> {\n        return this.pickerOpened$.asObservable();\n    }\n\n    /**\n     * The current picker moment. This determines which time period is shown and which date is\n     * highlighted when using keyboard navigation.\n     */\n    private _clamPickerMoment: T;\n\n    get pickerMoment() {\n        return this._clamPickerMoment;\n    }\n\n    set pickerMoment(value: T) {\n        if (value) {\n            this._clamPickerMoment = this.dateTimeAdapter.clampDate(\n                value,\n                this.picker.minDateTime,\n                this.picker.maxDateTime\n            );\n        }\n        this.cdRef.markForCheck();\n    }\n\n    get pickerType(): PickerType {\n        return this.picker.pickerType;\n    }\n\n    get cancelLabel(): string {\n        return this.pickerIntl.cancelBtnLabel;\n    }\n\n    get setLabel(): string {\n        return this.pickerIntl.setBtnLabel;\n    }\n\n    /**\n     * The range 'from' label\n     * */\n    get fromLabel(): string {\n        return this.pickerIntl.rangeFromLabel;\n    }\n\n    /**\n     * The range 'to' label\n     * */\n    get toLabel(): string {\n        return this.pickerIntl.rangeToLabel;\n    }\n\n    /**\n     * The range 'from' formatted value\n     * */\n    get fromFormattedValue(): string {\n        const value = this.picker.selecteds[0];\n        return value\n            ? this.dateTimeAdapter.format(value, this.picker.formatString)\n            : '';\n    }\n\n    /**\n     * The range 'to' formatted value\n     * */\n    get toFormattedValue(): string {\n        const value = this.picker.selecteds[1];\n        return value\n            ? this.dateTimeAdapter.format(value, this.picker.formatString)\n            : '';\n    }\n\n    /**\n     * Cases in which the control buttons show in the picker\n     * 1) picker mode is 'dialog'\n     * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\n     * */\n    get showControlButtons(): boolean {\n        return (\n            this.picker.pickerMode === 'dialog' ||\n            (this.picker.pickerType !== 'calendar' &&\n                this.picker.pickerMode !== 'inline')\n        );\n    }\n\n    get containerElm(): HTMLElement {\n        return this.elmRef.nativeElement;\n    }\n\n    get owlDTContainerClass(): boolean {\n        return true;\n    }\n\n    get owlDTPopupContainerClass(): boolean {\n        return this.picker.pickerMode === 'popup';\n    }\n\n    get owlDTDialogContainerClass(): boolean {\n        return this.picker.pickerMode === 'dialog';\n    }\n\n    get owlDTInlineContainerClass(): boolean {\n        return this.picker.pickerMode === 'inline';\n    }\n\n    get owlDTContainerDisabledClass(): boolean {\n        return this.picker.disabled;\n    }\n\n    get owlDTContainerId(): string {\n        return this.picker.id;\n    }\n\n    get owlDTContainerAnimation(): any {\n        return this.picker.pickerMode === 'inline' ? '' : 'enter';\n    }\n\n    constructor( private cdRef: ChangeDetectorRef,\n                  private elmRef: ElementRef,\n                  private pickerIntl: OwlDateTimeIntl,\n                 @Optional() private dateTimeAdapter: DateTimeAdapter<T> ) {\n    }\n\n    public ngOnInit() {\n        if (this.picker.selectMode === 'range') {\n            if (this.picker.selecteds[0]) {\n                this.retainStartTime = this.dateTimeAdapter.clone(this.picker.selecteds[0]);\n            }\n            if (this.picker.selecteds[1]) {\n                this.retainEndTime = this.dateTimeAdapter.clone(this.picker.selecteds[1]);\n            }\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        this.initPicker();\n    }\n\n    public ngAfterViewInit(): void {\n        this.focusPicker();\n    }\n\n    public handleContainerAnimationStart(event: AnimationEvent): void {\n        const toState = event.toState;\n        if (toState === 'enter') {\n            this.beforePickerOpened$.next(null);\n        }\n    }\n    public handleContainerAnimationDone(event: AnimationEvent): void {\n        const toState = event.toState;\n        if (toState === 'enter') {\n            this.pickerOpened$.next(null);\n        }\n    }\n\n    public dateSelected(date: T): void {\n        let result;\n\n        if (this.picker.isInSingleMode) {\n            result = this.dateSelectedInSingleMode(date);\n            if (result) {\n                this.pickerMoment = result;\n                this.picker.select(result);\n            } else {\n                // we close the picker when result is null and pickerType is calendar.\n                if (this.pickerType === 'calendar') {\n                    this.hidePicker$.next(null);\n                }\n            }\n            return;\n        }\n\n        if (this.picker.isInRangeMode) {\n            result = this.dateSelectedInRangeMode(date);\n            if (result) {\n                this.pickerMoment = result[this.activeSelectedIndex];\n                this.picker.select(result);\n            }\n        }\n    }\n\n    public timeSelected(time: T): void {\n        this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n        if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n            return;\n        }\n\n        if (this.picker.isInSingleMode) {\n            this.picker.select(this.pickerMoment);\n            return;\n        }\n\n        if (this.picker.isInRangeMode) {\n            const selecteds = [...this.picker.selecteds];\n\n            // check if the 'from' is after 'to' or 'to'is before 'from'\n            // In this case, we set both the 'from' and 'to' the same value\n            if (\n                (this.activeSelectedIndex === 0 &&\n                    selecteds[1] &&\n                    this.dateTimeAdapter.compare(\n                        this.pickerMoment,\n                        selecteds[1]\n                    ) === 1) ||\n                (this.activeSelectedIndex === 1 &&\n                    selecteds[0] &&\n                    this.dateTimeAdapter.compare(\n                        this.pickerMoment,\n                        selecteds[0]\n                    ) === -1)\n            ) {\n                selecteds[0] = this.pickerMoment;\n                selecteds[1] = this.pickerMoment;\n            } else {\n                selecteds[this.activeSelectedIndex] = this.pickerMoment;\n            }\n\n            if (selecteds[0]) {\n                this.retainStartTime = this.dateTimeAdapter.clone(selecteds[0]);\n            }\n            if (selecteds[1]) {\n                this.retainEndTime = this.dateTimeAdapter.clone(selecteds[1]);\n            }\n            this.picker.select(selecteds);\n        }\n    }\n\n    /**\n     * Handle click on cancel button\n     */\n    public onCancelClicked(event: any): void {\n        this.hidePicker$.next(null);\n        event.preventDefault();\n        return;\n    }\n\n    /**\n     * Handle click on set button\n     */\n    public onSetClicked(event: any): void {\n        if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n            this.hidePicker$.next(null);\n            event.preventDefault();\n            return;\n        }\n\n        this.confirmSelected$.next(event);\n        event.preventDefault();\n        return;\n    }\n\n    /**\n     * Handle click on inform radio group\n     */\n    public handleClickOnInfoGroup(event: any, index: number): void {\n        this.setActiveSelectedIndex(index);\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    /**\n     * Handle click on inform radio group\n     */\n    public handleKeydownOnInfoGroup(\n        event: any,\n        next: any,\n        index: number\n    ): void {\n        switch (event.keyCode) {\n            case DOWN_ARROW:\n            case RIGHT_ARROW:\n            case UP_ARROW:\n            case LEFT_ARROW:\n                next.focus();\n                this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n\n            case SPACE:\n                this.setActiveSelectedIndex(index);\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n\n            default:\n                return;\n        }\n    }\n\n    /**\n     * Set the value of activeSelectedIndex\n     */\n    private setActiveSelectedIndex(index: number): void {\n        if (\n            this.picker.selectMode === 'range' &&\n            this.activeSelectedIndex !== index\n        ) {\n            this.activeSelectedIndex = index;\n\n            const selected = this.picker.selecteds[this.activeSelectedIndex];\n            if (this.picker.selecteds && selected) {\n                this.pickerMoment = this.dateTimeAdapter.clone(selected);\n            }\n        }\n        return;\n    }\n\n    private initPicker(): void {\n        this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();\n        this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n    }\n\n    /**\n     * Select calendar date in single mode,\n     * it returns null when date is not selected.\n     */\n    private dateSelectedInSingleMode(date: T): T | null {\n        if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n            return null;\n        }\n\n        return this.updateAndCheckCalendarDate(date);\n    }\n\n    /**\n     * Select dates in range Mode\n     */\n    private dateSelectedInRangeMode(date: T): T[] | null {\n        let from = this.picker.selecteds[0];\n        let to = this.picker.selecteds[1];\n\n        const result = this.updateAndCheckCalendarDate(date);\n\n        if (!result) {\n            return null;\n        }\n\n        // if the given calendar day is after or equal to 'from',\n        // set ths given date as 'to'\n        // otherwise, set it as 'from' and set 'to' to null\n        if (this.picker.selectMode === 'range') {\n            if (\n                this.picker.selecteds &&\n                this.picker.selecteds.length &&\n                !to &&\n                from &&\n                this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n            ) {\n                if (this.picker.endAt && !this.retainEndTime) {\n                    to = this.dateTimeAdapter.createDate(\n                        this.dateTimeAdapter.getYear(result),\n                        this.dateTimeAdapter.getMonth(result),\n                        this.dateTimeAdapter.getDate(result),\n                        this.dateTimeAdapter.getHours(this.picker.endAt),\n                        this.dateTimeAdapter.getMinutes(this.picker.endAt),\n                        this.dateTimeAdapter.getSeconds(this.picker.endAt));\n                } else if (this.retainEndTime) {\n                    to = this.dateTimeAdapter.createDate(\n                        this.dateTimeAdapter.getYear(result),\n                        this.dateTimeAdapter.getMonth(result),\n                        this.dateTimeAdapter.getDate(result),\n                        this.dateTimeAdapter.getHours(this.retainEndTime),\n                        this.dateTimeAdapter.getMinutes(this.retainEndTime),\n                        this.dateTimeAdapter.getSeconds(this.retainEndTime));\n                } else {\n                    to = result;\n                }\n                this.activeSelectedIndex = 1;\n            } else {\n                if (this.picker.startAt && !this.retainStartTime) {\n                    from = this.dateTimeAdapter.createDate(\n                        this.dateTimeAdapter.getYear(result),\n                        this.dateTimeAdapter.getMonth(result),\n                        this.dateTimeAdapter.getDate(result),\n                        this.dateTimeAdapter.getHours(this.picker.startAt),\n                        this.dateTimeAdapter.getMinutes(this.picker.startAt),\n                        this.dateTimeAdapter.getSeconds(this.picker.startAt)\n                    );\n                } else if (this.retainStartTime) {\n                    from = this.dateTimeAdapter.createDate(\n                        this.dateTimeAdapter.getYear(result),\n                        this.dateTimeAdapter.getMonth(result),\n                        this.dateTimeAdapter.getDate(result),\n                        this.dateTimeAdapter.getHours(this.retainStartTime),\n                        this.dateTimeAdapter.getMinutes(this.retainStartTime),\n                        this.dateTimeAdapter.getSeconds(this.retainStartTime));\n                } else {\n                    from = result;\n                }\n                to = null;\n                this.activeSelectedIndex = 0;\n            }\n        } else if (this.picker.selectMode === 'rangeFrom') {\n            from = result;\n\n            // if the from value is after the to value, set the to value as null\n            if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n                to = null;\n            }\n        } else if (this.picker.selectMode === 'rangeTo') {\n            to = result;\n\n            // if the from value is after the to value, set the from value as null\n            if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n                from = null;\n            }\n        }\n\n        return [from, to];\n    }\n\n    /**\n     * Update the given calendar date's time and check if it is valid\n     * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n     * we need to update the given calendar date's time before selecting it.\n     * if it is valid, return the updated dateTime\n     * if it is not valid, return null\n     */\n    private updateAndCheckCalendarDate(date: T): T {\n        let result;\n\n        // if the picker is 'both', update the calendar date's time value\n        if (this.picker.pickerType === 'both') {\n            result = this.dateTimeAdapter.createDate(\n                this.dateTimeAdapter.getYear(date),\n                this.dateTimeAdapter.getMonth(date),\n                this.dateTimeAdapter.getDate(date),\n                this.dateTimeAdapter.getHours(this.pickerMoment),\n                this.dateTimeAdapter.getMinutes(this.pickerMoment),\n                this.dateTimeAdapter.getSeconds(this.pickerMoment)\n            );\n            result = this.dateTimeAdapter.clampDate(\n                result,\n                this.picker.minDateTime,\n                this.picker.maxDateTime\n            );\n        } else {\n            result = this.dateTimeAdapter.clone(date);\n        }\n\n        // check the updated dateTime\n        return this.picker.dateTimeChecker(result) ? result : null;\n    }\n\n    /**\n     * Focus to the picker\n     * */\n    private focusPicker(): void {\n        if (this.picker.pickerMode === 'inline') {\n            return;\n        }\n\n        if (this.calendar) {\n            this.calendar.focusActiveCell();\n        } else if (this.timer) {\n            this.timer.focus();\n        }\n    }\n}\n","<div [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n     [@fadeInPicker]=\"picker.pickerMode === 'inline'? '' : 'enter'\"\n     class=\"owl-dt-container-inner\">\n\n    <owl-date-time-calendar\n            *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n            class=\"owl-dt-container-row\"\n            [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n            [(pickerMoment)]=\"pickerMoment\"\n            [selected]=\"picker.selected\"\n            [selecteds]=\"picker.selecteds\"\n            [selectMode]=\"picker.selectMode\"\n            [minDate]=\"picker.minDateTime\"\n            [maxDate]=\"picker.maxDateTime\"\n            [dateFilter]=\"picker.dateTimeFilter\"\n            [startView]=\"picker.startView\"\n            [yearOnly]=\"picker.yearOnly\"\n            [showCalendarWeeks]=\"picker.showCalendarWeeks\"\n            [multiyearOnly]=\"picker.multiyearOnly\"\n            [hideOtherMonths]=\"picker.hideOtherMonths\"\n            (yearSelected)=\"picker.selectYear($event)\"\n            (monthSelected)=\"picker.selectMonth($event)\"\n            (dateClicked)=\"picker.selectDate($event)\"\n            (selectedChange)=\"dateSelected($event)\"></owl-date-time-calendar>\n\n    <owl-date-time-timer\n            *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n            class=\"owl-dt-container-row\"\n            [pickerMoment]=\"pickerMoment\"\n            [minDateTime]=\"picker.minDateTime\"\n            [maxDateTime]=\"picker.maxDateTime\"\n            [showSecondsTimer]=\"picker.showSecondsTimer\"\n            [hour12Timer]=\"picker.hour12Timer\"\n            [stepHour]=\"picker.stepHour\"\n            [stepMinute]=\"picker.stepMinute\"\n            [stepSecond]=\"picker.stepSecond\"\n            (selectedChange)=\"timeSelected($event)\"></owl-date-time-timer>\n\n    <div *ngIf=\"picker.isInRangeMode\"\n         role=\"radiogroup\"\n         class=\"owl-dt-container-info owl-dt-container-row\">\n        <div role=\"radio\" [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n             [attr.aria-checked]=\"activeSelectedIndex === 0\"\n             class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n             [ngClass]=\"{'owl-dt-container-info-active': activeSelectedIndex === 0}\"\n             (click)=\"handleClickOnInfoGroup($event, 0)\"\n             (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\" #from>\n            <span class=\"owl-dt-control-content owl-dt-container-range-content\" tabindex=\"-1\">\n                <span class=\"owl-dt-container-info-label\">{{fromLabel}}:</span>\n                <span class=\"owl-dt-container-info-value\">{{fromFormattedValue}}</span>\n            </span>\n        </div>\n        <div role=\"radio\" [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n             [attr.aria-checked]=\"activeSelectedIndex === 1\"\n             class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n             [ngClass]=\"{'owl-dt-container-info-active': activeSelectedIndex === 1}\"\n             (click)=\"handleClickOnInfoGroup($event, 1)\"\n             (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\" #to>\n            <span class=\"owl-dt-control-content owl-dt-container-range-content\" tabindex=\"-1\">\n                <span class=\"owl-dt-container-info-label\">{{toLabel}}:</span>\n                <span class=\"owl-dt-container-info-value\">{{toFormattedValue}}</span>\n            </span>\n        </div>\n    </div>\n\n    <div *ngIf=\"showControlButtons\" class=\"owl-dt-container-buttons owl-dt-container-row\">\n        <button class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n                type=\"button\" tabindex=\"0\"\n                (click)=\"onCancelClicked($event)\">\n            <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n                {{cancelLabel}}\n            </span>\n        </button>\n        <button class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n                type=\"button\" tabindex=\"0\"\n                (click)=\"onSetClicked($event)\">\n            <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n                {{setLabel}}\n            </span>\n        </button>\n    </div>\n</div>\n","/**\n * dialog-config.class\n */\nimport { ViewContainerRef } from '@angular/core';\nimport { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\n\nlet uniqueId = 0;\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n    /** Override for the dialog's top position. */\n    top?: string;\n\n    /** Override for the dialog's bottom position. */\n    bottom?: string;\n\n    /** Override for the dialog's left position. */\n    left?: string;\n\n    /** Override for the dialog's right position. */\n    right?: string;\n}\n\nexport interface OwlDialogConfigInterface {\n    /**\n     * ID of the element that describes the dialog.\n     */\n    ariaDescribedBy?: string | null;\n\n    /**\n     * Whether to focus the dialog when the dialog is opened\n     */\n    autoFocus?: boolean;\n\n    /** Whether the dialog has a backdrop. */\n    hasBackdrop?: boolean;\n\n    /**\n     * Custom style for the backdrop\n     * */\n    backdropStyle?: any;\n\n    /** Data being injected into the child component. */\n    data?: any ;\n\n    /** Whether the user can use escape or clicking outside to close a modal. */\n    disableClose?: boolean;\n\n    /**\n     * ID for the modal. If omitted, a unique one will be generated.\n     */\n    id?: string;\n\n    /**\n     * The ARIA role of the dialog element.\n     */\n    role?: 'dialog' | 'alertdialog';\n\n    /**\n     * Custom class for the pane\n     * */\n    paneClass?: string | string[];\n\n    /**\n     * Mouse Event\n     * */\n    event?: MouseEvent;\n\n    /**\n     * Custom class for the backdrop\n     * */\n    backdropClass?: string | string[];\n\n    /**\n     * Whether the dialog should close when the user goes backwards/forwards in history.\n     * */\n    closeOnNavigation?: boolean;\n\n    /** Width of the dialog. */\n    width?: string ;\n\n    /** Height of the dialog. */\n    height?: string;\n\n    /**\n     * The min-width of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    minWidth?: number | string;\n\n    /**\n     * The min-height of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    minHeight?: number | string;\n\n    /**\n     * The max-width of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    maxWidth?: number | string;\n\n    /**\n     * The max-height of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    maxHeight?: number | string;\n\n    /** Position overrides. */\n    position?: DialogPosition;\n\n    /**\n     * The scroll strategy when the dialog is open\n     * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n     * */\n    scrollStrategy?: ScrollStrategy;\n\n    viewContainerRef?: ViewContainerRef;\n}\n\nexport class OwlDialogConfig implements OwlDialogConfigInterface {\n    /**\n     * ID of the element that describes the dialog.\n     */\n    public ariaDescribedBy: string | null = null;\n\n    /**\n     * Whether to focus the dialog when the dialog is opened\n     */\n    public autoFocus = true;\n\n    /** Whether the dialog has a backdrop. */\n    public hasBackdrop = true;\n\n    /**\n     * Custom style for the backdrop\n     * */\n    public backdropStyle: any;\n\n    /** Data being injected into the child component. */\n    public data: any = null;\n\n    /** Whether the user can use escape or clicking outside to close a modal. */\n    public disableClose = false;\n\n    /**\n     * ID for the modal. If omitted, a unique one will be generated.\n     */\n    public id: string;\n\n    /**\n     * The ARIA role of the dialog element.\n     */\n    public role: 'dialog' | 'alertdialog' = 'dialog';\n\n    /**\n     * Custom class for the pane\n     * */\n    public paneClass: string | string[] = '';\n\n    /**\n     * Mouse Event\n     * */\n    public event: MouseEvent = null;\n\n    /**\n     * Custom class for the backdrop\n     * */\n    public backdropClass: string | string[] = '';\n\n    /**\n     * Whether the dialog should close when the user goes backwards/forwards in history.\n     * */\n    public closeOnNavigation = true;\n\n    /** Width of the dialog. */\n    public width = '';\n\n    /** Height of the dialog. */\n    public height = '';\n\n    /**\n     * The min-width of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    public minWidth: number | string;\n\n    /**\n     * The min-height of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    public minHeight: number | string;\n\n    /**\n     * The max-width of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    public maxWidth: number | string = '85vw';\n\n    /**\n     * The max-height of the overlay panel.\n     * If a number is provided, pixel units are assumed.\n     * */\n    public maxHeight: number | string;\n\n    /** Position overrides. */\n    public position: DialogPosition;\n\n    /**\n     * The scroll strategy when the dialog is open\n     * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n     * */\n    public scrollStrategy: ScrollStrategy = new NoopScrollStrategy();\n\n    public viewContainerRef: ViewContainerRef;\n\n    constructor() {\n        this.id = `owl-dialog-${uniqueId++}`;\n    }\n}\n","/**\n * dialog-ref.class\n */\nimport { AnimationEvent } from '@angular/animations';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { Location } from '@angular/common';\nimport { Observable, Subject, Subscription, SubscriptionLike, filter, take } from 'rxjs';\nimport { DialogPosition } from './dialog-config.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\nexport class OwlDialogRef<T> {\n\n    private result: any;\n\n    private _beforeClose$ = new Subject<any>();\n\n    private _beforeOpen$ = new Subject<any>();\n\n    private _afterOpen$ = new Subject<any>();\n\n    private _afterClosed$ = new Subject<any>();\n\n    /** Subscription to changes in the user's location. */\n    private locationChanged: SubscriptionLike = Subscription.EMPTY;\n\n    /**\n     * The instance of component opened into modal\n     * */\n    public componentInstance: T;\n\n    /** Whether the user is allowed to close the dialog. */\n    public disableClose = true;\n\n    constructor(private overlayRef: OverlayRef,\n        private container: OwlDialogContainerComponent,\n        public readonly id: string,\n        location?: Location) {\n        this.disableClose = this.container.config.disableClose;\n\n        this.container.animationStateChanged\n            .pipe(\n                filter(( event: AnimationEvent ) => event.phaseName === 'start' && event.toState === 'enter'),\n                take(1)\n            )\n            .subscribe(() => {\n                this._beforeOpen$.next(null);\n                this._beforeOpen$.complete();\n            });\n\n        this.container.animationStateChanged\n            .pipe(\n                filter(( event: AnimationEvent ) => event.phaseName === 'done' && event.toState === 'enter'),\n                take(1)\n            )\n            .subscribe(() => {\n                this._afterOpen$.next(null);\n                this._afterOpen$.complete();\n            });\n\n        this.container.animationStateChanged\n            .pipe(\n                filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'exit'),\n                take(1)\n            )\n            .subscribe(() => {\n                this.overlayRef.dispose();\n                this.locationChanged.unsubscribe();\n                this._afterClosed$.next(this.result);\n                this._afterClosed$.complete();\n                this.componentInstance = null;\n            });\n\n        this.overlayRef.keydownEvents()\n            .pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose))\n            .subscribe(() => this.close());\n\n        if (location) {\n            this.locationChanged = location.subscribe(() => {\n                if (this.container.config.closeOnNavigation) {\n                    this.close();\n                }\n            });\n        }\n    }\n\n    public close(dialogResult?: any) {\n        this.result = dialogResult;\n\n        this.container.animationStateChanged\n            .pipe(\n                filter((event: AnimationEvent) => event.phaseName === 'start'),\n                take(1)\n            )\n            .subscribe(() => {\n                this._beforeClose$.next(dialogResult);\n                this._beforeClose$.complete();\n                this.overlayRef.detachBackdrop();\n            });\n\n        this.container.startExitAnimation();\n    }\n\n    /**\n     * Gets an observable that emits when the overlay's backdrop has been clicked.\n     */\n    public backdropClick(): Observable<any> {\n        return this.overlayRef.backdropClick();\n    }\n\n    /**\n     * Gets an observable that emits when keydown events are targeted on the overlay.\n     */\n    public keydownEvents(): Observable<KeyboardEvent> {\n        return this.overlayRef.keydownEvents();\n    }\n\n    /**\n     * Updates the dialog's position.\n     * @param position New dialog position.\n     */\n    public updatePosition(position?: DialogPosition): this {\n        const strategy = this.getPositionStrategy();\n\n        if (position && (position.left || position.right)) {\n            position.left ? strategy.left(position.left) : strategy.right(position.right);\n        } else {\n            strategy.centerHorizontally();\n        }\n\n        if (position && (position.top || position.bottom)) {\n            position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n        } else {\n            strategy.centerVertically();\n        }\n\n        this.overlayRef.updatePosition();\n\n        return this;\n    }\n\n    /**\n     * Updates the dialog's width and height.\n     * @param width New width of the dialog.\n     * @param height New height of the dialog.\n     */\n    updateSize(width: string = 'auto', height: string = 'auto'): this {\n        this.getPositionStrategy().width(width).height(height);\n        this.overlayRef.updatePosition();\n        return this;\n    }\n\n    public isAnimating(): boolean {\n        return this.container.isAnimating;\n    }\n\n    public beforeOpen(): Observable<any> {\n        return this._beforeOpen$.asObservable();\n    }\n\n    public afterOpen(): Observable<any> {\n        return this._afterOpen$.asObservable();\n    }\n\n    public beforeClose(): Observable<any> {\n        return this._beforeClose$.asObservable();\n    }\n\n    public afterClosed(): Observable<any> {\n        return this._afterClosed$.asObservable();\n    }\n\n    /** Fetches the position strategy object from the overlay ref. */\n    private getPositionStrategy(): GlobalPositionStrategy {\n        return this.overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n    }\n}\n","/**\n * dialog-container.component\n */\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ComponentRef,\n    ElementRef,\n    EmbeddedViewRef,\n    EventEmitter,\n    Inject,\n    OnInit,\n    Optional,\n    ViewChild\n} from '@angular/core';\nimport {\n    animate,\n    animateChild,\n    AnimationEvent,\n    keyframes,\n    style,\n    transition,\n    trigger\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n    BasePortalOutlet,\n    CdkPortalOutlet,\n    ComponentPortal,\n    TemplatePortal\n} from '@angular/cdk/portal';\nimport { OwlDialogConfigInterface } from './dialog-config.class';\n\nconst zoomFadeIn = {\n    opacity: 0,\n    transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\n};\nconst zoomFadeInFrom = {\n    opacity: 0,\n    transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n    transformOrigin: '{{ ox }} {{ oy }}'\n};\n\n@Component({\n    selector: 'owl-dialog-container',\n    templateUrl: './dialog-container.component.html',\n    standalone: false,\n    animations: [\n        trigger('slideModal', [\n            transition(\n                'void => enter',\n                [\n                    style(zoomFadeInFrom),\n                    animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\n                    animate(\n                        '150ms',\n                        keyframes([\n                            style({ transform: 'scale(1)', offset: 0 }),\n                            style({ transform: 'scale(1.05)', offset: 0.3 }),\n                            style({ transform: 'scale(.95)', offset: 0.8 }),\n                            style({ transform: 'scale(1)', offset: 1.0 })\n                        ])\n                    ),\n                    animateChild()\n                ],\n                {\n                    params: {\n                        x: '0px',\n                        y: '0px',\n                        ox: '50%',\n                        oy: '50%',\n                        scale: 1\n                    }\n                }\n            ),\n            transition(\n                'enter => exit',\n                [animateChild(), animate(200, style(zoomFadeIn))],\n                { params: { x: '0px', y: '0px', ox: '50%', oy: '50%' } }\n            )\n        ])\n    ],\n    host: {\n        '(@slideModal.start)': 'onAnimationStart($event)',\n        '(@slideModal.done)': 'onAnimationDone($event)',\n        '[class.owl-dialog-container]': 'owlDialogContainerClass',\n        '[attr.tabindex]': 'owlDialogContainerTabIndex',\n        '[attr.id]': 'owlDialogContainerId',\n        '[attr.role]': 'owlDialogContainerRole',\n        '[attr.aria-labelledby]': 'owlDialogContainerAriaLabelledby',\n        '[attr.aria-describedby]': 'owlDialogContainerAriaDescribedby',\n        '[@slideModal]': 'owlDialogContainerAnimation'\n    }\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet\n    implements OnInit {\n    @ViewChild(CdkPortalOutlet, { static: true })\n    portalOutlet: CdkPortalOutlet | null = null;\n\n    /** The class that traps and manages focus within the dialog. */\n    private focusTrap: FocusTrap;\n\n    /** ID of the element that should be considered as the dialog's label. */\n    public ariaLabelledBy: string | null = null;\n\n    /** Emits when an animation state changes. */\n    public animationStateChanged = new EventEmitter<AnimationEvent>();\n\n    public isAnimating = false;\n\n    private _config: OwlDialogConfigInterface;\n    get config(): OwlDialogConfigInterface {\n        return this._config;\n    }\n\n    private state: 'void' | 'enter' | 'exit' = 'enter';\n\n    // for animation purpose\n    private params: any = {\n        x: '0px',\n        y: '0px',\n        ox: '50%',\n        oy: '50%',\n        scale: 0\n    };\n\n    // A variable to hold the focused element before the dialog was open.\n    // This would help us to refocus back to element when the dialog was closed.\n    private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n    get owlDialogContainerClass(): boolean {\n        return true;\n    }\n\n    get owlDialogContainerTabIndex(): number {\n        return -1;\n    }\n\n    get owlDialogContainerId(): string {\n        return this._config.id;\n    }\n\n    get owlDialogContainerRole(): string {\n        return this._config.role || null;\n    }\n\n    get owlDialogContainerAriaLabelledby(): string {\n        return this.ariaLabelledBy;\n    }\n\n    get owlDialogContainerAriaDescribedby(): string {\n        return this._config.ariaDescribedBy || null;\n    }\n\n    get owlDialogContainerAnimation(): any {\n        return { value: this.state, params: this.params };\n    }\n\n    constructor(\n        private changeDetector: ChangeDetectorRef,\n        private elementRef: ElementRef,\n        private focusTrapFactory: FocusTrapFactory,\n        @Optional()\n        @Inject(DOCUMENT)\n        private document: any\n    ) {\n        super();\n    }\n\n    public ngOnInit() {}\n\n    /**\n     * Attach a ComponentPortal as content to this dialog container.\n     */\n    public attachComponentPortal<T>(\n        portal: ComponentPortal<T>\n    ): ComponentRef<T> {\n        if (this.portalOutlet.hasAttached()) {\n            throw Error(\n                'Attempting to attach dialog content after content is already attached'\n            );\n        }\n\n        this.savePreviouslyFocusedElement();\n        return this.portalOutlet.attachComponentPortal(portal);\n    }\n\n    public attachTemplatePortal<C>(\n        portal: TemplatePortal<C>\n    ): EmbeddedViewRef<C> {\n        throw new Error('Method not implemented.');\n    }\n\n    public setConfig(config: OwlDialogConfigInterface): void {\n        this._config = config;\n\n        if (config.event) {\n            this.calculateZoomOrigin(event);\n        }\n    }\n\n    public onAnimationStart( event: AnimationEvent ): void {\n        this.isAnimating = true;\n        this.animationStateChanged.emit(event);\n    }\n\n    public onAnimationDone( event: AnimationEvent ): void {\n        if (event.toState === 'enter') {\n            this.trapFocus();\n        } else if (event.toState === 'exit') {\n            this.restoreFocus();\n        }\n\n        this.animationStateChanged.emit(event);\n        this.isAnimating = false;\n    }\n\n    public startExitAnimation() {\n        this.state = 'exit';\n        this.changeDetector.markForCheck();\n    }\n\n    /**\n     * Calculate origin used in the `zoomFadeInFrom()`\n     * for animation purpose\n     */\n    private calculateZoomOrigin(event: any): void {\n        if (!event) {\n            return;\n        }\n\n        const clientX = event.clientX;\n        const clientY = event.clientY;\n\n        const wh = window.innerWidth / 2;\n        const hh = window.innerHeight / 2;\n        const x = clientX - wh;\n        const y = clientY - hh;\n        const ox = clientX / window.innerWidth;\n        const oy = clientY / window.innerHeight;\n\n        this.params.x = `${x}px`;\n        this.params.y = `${y}px`;\n        this.params.ox = `${ox * 100}%`;\n        this.params.oy = `${oy * 100}%`;\n        this.params.scale = 0;\n\n        return;\n    }\n\n    /**\n     * Save the focused element before dialog was open\n     */\n    private savePreviouslyFocusedElement(): void {\n        if (this.document) {\n            this.elementFocusedBeforeDialogWasOpened = this.document\n                .activeElement as HTMLElement;\n\n            Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n        }\n    }\n\n    private trapFocus(): void {\n        if (!this.focusTrap) {\n            this.focusTrap = this.focusTrapFactory.create(\n                this.elementRef.nativeElement\n            );\n        }\n\n        if (this._config.autoFocus) {\n            this.focusTrap.focusInitialElementWhenReady();\n        }\n    }\n\n    private restoreFocus(): void {\n        const toFocus = this.elementFocusedBeforeDialogWasOpened;\n\n        // We need the extra check, because IE can set the `activeElement` to null in some cases.\n        if (toFocus && typeof toFocus.focus === 'function') {\n            toFocus.focus();\n        }\n\n        if (this.focusTrap) {\n            this.focusTrap.destroy();\n        }\n    }\n}\n","<ng-template [cdkPortalOutlet]></ng-template>\n","/**\n * object.utils\n */\n\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n    if (dest == null) {\n        throw TypeError('Cannot convert undefined or null to object');\n    }\n\n    for (const source of sources) {\n        if (source != null) {\n            for (const key in source) {\n                if (source.hasOwnProperty(key)) {\n                    dest[key] = source[key];\n                }\n            }\n        }\n    }\n\n    return dest;\n}\n","/**\n * index\n */\n\nexport * from './object.utils';\n","/**\n * dialog.service\n */\n\nimport {\n    ComponentRef,\n    Inject,\n    Injectable,\n    InjectionToken,\n    Injector,\n    Optional,\n    SkipSelf,\n    TemplateRef\n} from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OwlDialogConfig, OwlDialogConfigInterface } from './dialog-config.class';\nimport { OwlDialogRef } from './dialog-ref.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { extendObject } from '../utils';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport {\n    Overlay,\n    OverlayConfig,\n    OverlayContainer,\n    OverlayRef,\n    ScrollStrategy\n} from '@angular/cdk/overlay';\nimport {\n    ComponentPortal,\n    ComponentType,\n    PortalInjector\n} from '@angular/cdk/portal';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n    () => ScrollStrategy\n>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n    overlay: Overlay\n): () => ScrollStrategy {\n    const fn = () => overlay.scrollStrategies.block();\n    return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n    provide: OWL_DIALOG_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/**\n * Injection token that can be used to specify default dialog options.\n * */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>(\n    'owl-dialog-default-options'\n);\n\n@Injectable()\nexport class OwlDialogService {\n    private ariaHiddenElements = new Map<Element, string | null>();\n\n    private _openDialogsAtThisLevel: OwlDialogRef<any>[] = [];\n    private _beforeOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n    private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n    private _afterAllClosedAtThisLevel = new Subject<void>();\n\n    /** Keeps track of the currently-open dialogs. */\n    get openDialogs(): OwlDialogRef<any>[] {\n        return this.parentDialog\n            ? this.parentDialog.openDialogs\n            : this._openDialogsAtThisLevel;\n    }\n\n    /** Stream that emits when a dialog has been opened. */\n    get beforeOpen(): Subject<OwlDialogRef<any>> {\n        return this.parentDialog\n            ? this.parentDialog.beforeOpen\n            : this._beforeOpenAtThisLevel;\n    }\n\n    /** Stream that emits when a dialog has been opened. */\n    get afterOpen(): Subject<OwlDialogRef<any>> {\n        return this.parentDialog\n            ? this.parentDialog.afterOpen\n            : this._afterOpenAtThisLevel;\n    }\n\n    get _afterAllClosed(): any {\n        const parent = this.parentDialog;\n        return parent\n            ? parent._afterAllClosed\n            : this._afterAllClosedAtThisLevel;\n    }\n\n    /**\n     * Stream that emits when all open dialog have finished closing.\n     * Will emit on subscribe if there are no open dialogs to begin with.\n     */\n\n    afterAllClosed: Observable<{}> = defer(\n        () =>\n            this._openDialogsAtThisLevel.length\n                ? this._afterAllClosed\n                : this._afterAllClosed.pipe(startWith(undefined))\n    );\n\n    private readonly scrollStrategy: () => ScrollStrategy;\n\n    constructor(\n        private overlay: Overlay,\n        private injector: Injector,\n        @Optional() private location: Location,\n        @Inject(OWL_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n        @Optional()\n        @Inject(OWL_DIALOG_DEFAULT_OPTIONS)\n        private defaultOptions: OwlDialogConfigInterface,\n        @Optional()\n        @SkipSelf()\n        private parentDialog: OwlDialogService,\n        private overlayContainer: OverlayContainer\n    ) {\n        this.scrollStrategy = scrollStrategy;\n        if (!parentDialog && location) {\n            location.subscribe(() => this.closeAll());\n        }\n    }\n\n    public open<T>(\n        componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n        config?: OwlDialogConfigInterface\n    ): OwlDialogRef<any> {\n        config = applyConfigDefaults(config, this.defaultOptions);\n\n        if (config.id && this.getDialogById(config.id)) {\n            throw Error(\n                `Dialog with id \"${\n                    config.id\n                }\" exists already. The dialog id must be unique.`\n            );\n        }\n\n        const overlayRef = this.createOverlay(config);\n        const dialogContainer = this.attachDialogContainer(overlayRef, config);\n        const dialogRef = this.attachDialogContent<T>(\n            componentOrTemplateRef,\n            dialogContainer,\n            overlayRef,\n            config\n        );\n\n        if (!this.openDialogs.length) {\n            this.hideNonDialogContentFromAssistiveTechnology();\n        }\n\n        this.openDialogs.push(dialogRef);\n        dialogRef\n            .afterClosed()\n            .subscribe(() => this.removeOpenDialog(dialogRef));\n        this.beforeOpen.next(dialogRef);\n        this.afterOpen.next(dialogRef);\n        return dialogRef;\n    }\n\n    /**\n     * Closes all of the currently-open dialogs.\n     */\n    public closeAll(): void {\n        let i = this.openDialogs.length;\n\n        while (i--) {\n            this.openDialogs[i].close();\n        }\n    }\n\n    /**\n     * Finds an open dialog by its id.\n     * @param id ID to use when looking up the dialog.\n     */\n    public getDialogById(id: string): OwlDialogRef<any> | undefined {\n        return this.openDialogs.find(dialog => dialog.id === id);\n    }\n\n    private attachDialogContent<T>(\n        componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n        dialogContainer: OwlDialogContainerComponent,\n        overlayRef: OverlayRef,\n        config: OwlDialogConfigInterface\n    ) {\n        const dialogRef = new OwlDialogRef<T>(\n            overlayRef,\n            dialogContainer,\n            config.id,\n            this.location\n        );\n\n        if (config.hasBackdrop) {\n            overlayRef.backdropClick().subscribe(() => {\n                if (!dialogRef.disableClose) {\n                    dialogRef.close();\n                }\n            });\n        }\n\n        if (componentOrTemplateRef instanceof TemplateRef) {\n        } else {\n            const injector = this.createInjector<T>(\n                config,\n                dialogRef,\n                dialogContainer\n            );\n            const contentRef = dialogContainer.attachComponentPortal(\n                new ComponentPortal(componentOrTemplateRef, undefined, injector)\n            );\n            dialogRef.componentInstance = contentRef.instance;\n        }\n\n        dialogRef\n            .updateSize(config.width, config.height)\n            .updatePosition(config.position);\n\n        return dialogRef;\n    }\n\n    private createInjector<T>(\n        config: OwlDialogConfigInterface,\n        dialogRef: OwlDialogRef<T>,\n        dialogContainer: OwlDialogContainerComponent\n    ) {\n        const userInjector =\n            config &&\n            config.viewContainerRef &&\n            config.viewContainerRef.injector;\n        const injectionTokens = new WeakMap();\n\n        injectionTokens.set(OwlDialogRef, dialogRef);\n        injectionTokens.set(OwlDialogContainerComponent, dialogContainer);\n        injectionTokens.set(OWL_DIALOG_DATA, config.data);\n\n        return new PortalInjector(\n            userInjector || this.injector,\n            injectionTokens\n        );\n    }\n\n    private createOverlay(config: OwlDialogConfigInterface): OverlayRef {\n        const overlayConfig = this.getOverlayConfig(config);\n        return this.overlay.create(overlayConfig);\n    }\n\n    private attachDialogContainer(\n        overlayRef: OverlayRef,\n        config: OwlDialogConfigInterface\n    ): OwlDialogContainerComponent {\n        const containerPortal = new ComponentPortal(\n            OwlDialogContainerComponent,\n            config.viewContainerRef\n        );\n        const containerRef: ComponentRef<\n            OwlDialogContainerComponent\n        > = overlayRef.attach(containerPortal);\n        containerRef.instance.setConfig(config);\n\n        return containerRef.instance;\n    }\n\n    private getOverlayConfig(dialogConfig: OwlDialogConfigInterface): OverlayConfig {\n        const state = new OverlayConfig({\n            positionStrategy: this.overlay.position().global(),\n            scrollStrategy:\n                dialogConfig.scrollStrategy || this.scrollStrategy(),\n            panelClass: dialogConfig.paneClass,\n            hasBackdrop: dialogConfig.hasBackdrop,\n            minWidth: dialogConfig.minWidth,\n            minHeight: dialogConfig.minHeight,\n            maxWidth: dialogConfig.maxWidth,\n            maxHeight: dialogConfig.maxHeight\n        });\n\n        if (dialogConfig.backdropClass) {\n            state.backdropClass = dialogConfig.backdropClass;\n        }\n\n        return state;\n    }\n\n    private removeOpenDialog(dialogRef: OwlDialogRef<any>): void {\n        const index = this._openDialogsAtThisLevel.indexOf(dialogRef);\n\n        if (index > -1) {\n            this.openDialogs.splice(index, 1);\n            // If all the dialogs were closed, remove/restore the `aria-hidden`\n            // to a the siblings and emit to the `afterAllClosed` stream.\n            if (!this.openDialogs.length) {\n                this.ariaHiddenElements.forEach((previousValue, element) => {\n                    if (previousValue) {\n                        element.setAttribute('aria-hidden', previousValue);\n                    } else {\n                        element.removeAttribute('aria-hidden');\n                    }\n                });\n\n                this.ariaHiddenElements.clear();\n                this._afterAllClosed.next();\n            }\n        }\n    }\n\n    /**\n     * Hides all of the content that isn't an overlay from assistive technology.\n     */\n    private hideNonDialogContentFromAssistiveTechnology() {\n        const overlayContainer = this.overlayContainer.getContainerElement();\n\n        // Ensure that the overlay container is attached to the DOM.\n        if (overlayContainer.parentElement) {\n            const siblings = overlayContainer.parentElement.children;\n\n            for (let i = siblings.length - 1; i > -1; i--) {\n                const sibling = siblings[i];\n\n                if (\n                    sibling !== overlayContainer &&\n                    sibling.nodeName !== 'SCRIPT' &&\n                    sibling.nodeName !== 'STYLE' &&\n                    !sibling.hasAttribute('aria-live')\n                ) {\n                    this.ariaHiddenElements.set(\n                        sibling,\n                        sibling.getAttribute('aria-hidden')\n                    );\n                    sibling.setAttribute('aria-hidden', 'true');\n                }\n            }\n        }\n    }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default config setting\n * @returns The new configuration object.\n */\nfunction applyConfigDefaults(\n    config?: OwlDialogConfigInterface,\n    defaultOptions?: OwlDialogConfigInterface\n): OwlDialogConfig {\n    return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","/**\n * date-time-picker.component\n */\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ComponentRef,\n    EventEmitter,\n    Inject,\n    InjectionToken,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    ViewContainerRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n    BlockScrollStrategy,\n    Overlay,\n    OverlayConfig,\n    OverlayRef,\n    PositionStrategy,\n    ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n    OWL_DATE_TIME_FORMATS,\n    OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport {\n    OwlDateTime,\n    PickerMode,\n    PickerType,\n    SelectMode\n} from './date-time.class';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\n    () => ScrollStrategy\n>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\n    overlay: Overlay\n): () => BlockScrollStrategy {\n    const fn = () => overlay.scrollStrategies.block();\n    return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n    provide: OWL_DTPICKER_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n    selector: 'owl-date-time',\n    exportAs: 'owlDateTime',\n    templateUrl: './date-time-picker.component.html',\n    styleUrls: ['./date-time-picker.component.scss'],\n    standalone: false,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: false\n})\nexport class OwlDateTimeComponent<T> extends OwlDateTime<T>\n    implements OnInit, OnDestroy {\n    /** Custom class for the picker backdrop. */\n    @Input()\n    public backdropClass: string | string[] = [];\n\n    /** Custom class for the picker overlay pane. */\n    @Input()\n    public panelClass: string | string[] = [];\n\n    /** The date to open the calendar to initially. */\n    private _startAt: T | null;\n    @Input()\n    get startAt(): T | null {\n        // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n        // selected value is.\n        if (this._startAt) {\n            return this._startAt;\n        }\n\n        if (this._dtInput) {\n            if (this._dtInput.selectMode === 'single') {\n                return this._dtInput.value || null;\n            } else if (\n                this._dtInput.selectMode === 'range' ||\n                this._dtInput.selectMode === 'rangeFrom'\n            ) {\n                return this._dtInput.values[0] || null;\n            } else if (this._dtInput.selectMode === 'rangeTo') {\n                return this._dtInput.values[1] || null;\n            }\n        } else {\n            return null;\n        }\n    }\n\n    set startAt(date: T | null) {\n        this._startAt = this.getValidDate(\n            this.dateTimeAdapter.deserialize(date)\n        );\n    }\n\n    /** The end date to set for range calendar. */\n    private _endAt: T | null;\n    @Input()\n    get endAt(): T | null {\n        if (this._endAt) {\n            return this._endAt;\n        }\n\n        if (this._dtInput) {\n            if (this._dtInput.selectMode === 'single') {\n                return this._dtInput.value || null;\n            } else if (\n                this._dtInput.selectMode === 'range' ||\n                this._dtInput.selectMode === 'rangeFrom'\n            ) {\n                return this._dtInput.values[1] || null;\n            }\n        } else {\n            return null;\n        }\n    }\n\n    set endAt(date: T | null) {\n        this._endAt = this.getValidDate(\n            this.dateTimeAdapter.deserialize(date)\n        );\n    }\n\n    /**\n     * Set the type of the dateTime picker\n     *      'both' -- show both calendar and timer\n     *      'calendar' -- show only calendar\n     *      'timer' -- show only timer\n     */\n    private _pickerType: PickerType = 'both';\n    @Input()\n    get pickerType(): PickerType {\n        return this._pickerType;\n    }\n\n    set pickerType(val: PickerType) {\n        if (val !== this._pickerType) {\n            this._pickerType = val;\n            if (this._dtInput) {\n                this._dtInput.formatNativeInputValue();\n            }\n        }\n    }\n\n    /**\n     * Whether the picker open as a dialog\n     */\n    _pickerMode: PickerMode = 'popup';\n    @Input()\n    get pickerMode() {\n        return this._pickerMode;\n    }\n\n    set pickerMode(mode: PickerMode) {\n        if (mode === 'popup') {\n            this._pickerMode = mode;\n        } else {\n            this._pickerMode = 'dialog';\n        }\n    }\n\n    /** Whether the date time picker should be disabled. */\n    private _disabled: boolean;\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === undefined && this._dtInput\n            ? this._dtInput.disabled\n            : !!this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        value = coerceBooleanProperty(value);\n        if (value !== this._disabled) {\n            this._disabled = value;\n            this.disabledChange.next(value);\n        }\n    }\n\n    /** Whether the calendar is open. */\n    private _opened = false;\n    @Input()\n    get opened(): boolean {\n        return this._opened;\n    }\n\n    set opened(val: boolean) {\n        val ? this.open() : this.close();\n    }\n\n    /**\n     * The scroll strategy when the picker is open\n     * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n     * */\n    @Input()\n    public scrollStrategy: ScrollStrategy;\n\n    /**\n     * Callback when the picker is closed\n     * */\n    @Output()\n    afterPickerClosed = new EventEmitter<any>();\n\n    /**\n     * Callback before the picker is open\n     * */\n    @Output()\n    beforePickerOpen = new EventEmitter<any>();\n\n    /**\n     * Callback when the picker is open\n     * */\n    @Output()\n    afterPickerOpen = new EventEmitter<any>();\n\n    /**\n     * Emits selected year in multi-year view\n     * This doesn't imply a change on the selected date.\n     * */\n    @Output()\n    yearSelected = new EventEmitter<T>();\n\n    /**\n     * Emits selected month in year view\n     * This doesn't imply a change on the selected date.\n     * */\n    @Output()\n    monthSelected = new EventEmitter<T>();\n\n    /**\n     * Emits selected date\n     * */\n    @Output()\n    dateSelected = new EventEmitter<T>();\n\n    /**\n     * Emit when the selected value has been confirmed\n     * */\n    public confirmSelectedChange = new EventEmitter<T[] | T>();\n\n    /**\n     * Emits when the date time picker is disabled.\n     * */\n    public disabledChange = new EventEmitter<boolean>();\n\n    private pickerContainerPortal: ComponentPortal<\n        OwlDateTimeContainerComponent<T>\n    >;\n    private pickerContainer: OwlDateTimeContainerComponent<T>;\n    private popupRef: OverlayRef;\n    private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n    private dtInputSub = Subscription.EMPTY;\n    private hidePickerStreamSub = Subscription.EMPTY;\n    private confirmSelectedStreamSub = Subscription.EMPTY;\n    private pickerOpenedStreamSub = Subscription.EMPTY;\n    private pickerBeforeOpenedStreamSub = Subscription.EMPTY;\n\n    /** The element that was focused before the date time picker was opened. */\n    private focusedElementBeforeOpen: HTMLElement | null = null;\n\n    private _dtInput: OwlDateTimeInputDirective<T>;\n    get dtInput() {\n        return this._dtInput;\n    }\n\n    private _selected: T | null;\n    get selected() {\n        return this._selected;\n    }\n\n    set selected(value: T | null) {\n        this._selected = value;\n        this.changeDetector.markForCheck();\n    }\n\n    private _selecteds: T[] = [];\n    get selecteds() {\n        return this._selecteds;\n    }\n\n    set selecteds(values: T[]) {\n        this._selecteds = values;\n        this.changeDetector.markForCheck();\n    }\n\n    /** The minimum selectable date. */\n    get minDateTime(): T | null {\n        return this._dtInput && this._dtInput.min;\n    }\n\n    /** The maximum selectable date. */\n    get maxDateTime(): T | null {\n        return this._dtInput && this._dtInput.max;\n    }\n\n    get dateTimeFilter(): (date: T | null) => boolean {\n        return this._dtInput && this._dtInput.dateTimeFilter;\n    }\n\n    get selectMode(): SelectMode {\n        return this._dtInput.selectMode;\n    }\n\n    get isInSingleMode(): boolean {\n        return this._dtInput.isInSingleMode;\n    }\n\n    get isInRangeMode(): boolean {\n        return this._dtInput.isInRangeMode;\n    }\n\n    private readonly defaultScrollStrategy: () => ScrollStrategy;\n\n    constructor(\n        public overlay: Overlay,\n        private viewContainerRef: ViewContainerRef,\n        private dialogService: OwlDialogService,\n        private ngZone: NgZone,\n        protected changeDetector: ChangeDetectorRef,\n        @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n        @Inject(OWL_DTPICKER_SCROLL_STRATEGY) defaultScrollStrategy: any,\n        @Optional()\n        @Inject(OWL_DATE_TIME_FORMATS)\n        protected dateTimeFormats: OwlDateTimeFormats,\n        @Optional()\n        @Inject(DOCUMENT)\n        private document: any\n    ) {\n        super(dateTimeAdapter, dateTimeFormats);\n        this.defaultScrollStrategy = defaultScrollStrategy;\n    }\n\n    public ngOnInit() {}\n\n    public ngOnDestroy(): void {\n        this.close();\n        this.dtInputSub.unsubscribe();\n        this.disabledChange.complete();\n\n        if (this.popupRef) {\n            this.popupRef.dispose();\n        }\n    }\n\n    public registerInput(input: OwlDateTimeInputDirective<T>): void {\n        if (this._dtInput) {\n            throw Error(\n                'A Owl DateTimePicker can only be associated with a single input.'\n            );\n        }\n\n        this._dtInput = input;\n        this.dtInputSub = this._dtInput.valueChange.subscribe(\n            (value: T[] | T | null) => {\n                if (Array.isArray(value)) {\n                    this.selecteds = value;\n                } else {\n                    this.selected = value;\n                }\n            }\n        );\n    }\n\n    public open(): void {\n        if (this._opened || this.disabled) {\n            return;\n        }\n\n        if (!this._dtInput) {\n            throw Error(\n                'Attempted to open an DateTimePicker with no associated input.'\n            );\n        }\n\n        if (this.document) {\n            this.focusedElementBeforeOpen = this.document.activeElement;\n        }\n\n        // reset the picker selected value\n        if (this.isInSingleMode) {\n            this.selected = this._dtInput.value;\n        } else if (this.isInRangeMode) {\n            this.selecteds = this._dtInput.values;\n        }\n\n        // when the picker is open , we make sure the picker's current selected time value\n        // is the same as the _startAt time value.\n        if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n            this.selected = this.dateTimeAdapter.createDate(\n                this.dateTimeAdapter.getYear(this.selected),\n                this.dateTimeAdapter.getMonth(this.selected),\n                this.dateTimeAdapter.getDate(this.selected),\n                this.dateTimeAdapter.getHours(this._startAt),\n                this.dateTimeAdapter.getMinutes(this._startAt),\n                this.dateTimeAdapter.getSeconds(this._startAt)\n            );\n        }\n\n        this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n        this.pickerContainer.picker = this;\n\n        // Listen to picker container's hidePickerStream\n        this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(\n            () => {\n                this.close();\n            }\n        );\n\n        // Listen to picker container's confirmSelectedStream\n        this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(\n            (event: any) => {\n                this.confirmSelect(event);\n            }\n        );\n    }\n\n    /**\n     * Selects the given date\n     */\n    public select(date: T[] | T): void {\n        if (Array.isArray(date)) {\n            this.selecteds = [...date];\n        } else {\n            this.selected = date;\n        }\n\n        /**\n         * Cases in which automatically confirm the select when date or dates are selected:\n         * 1) picker mode is NOT 'dialog'\n         * 2) picker type is 'calendar' and selectMode is 'single'.\n         * 3) picker type is 'calendar' and selectMode is 'range' and\n         *    the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\n         * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\n         * 5) selectMode is 'rangeTo' and selecteds[1] has value.\n         * */\n        if (\n            this.pickerMode !== 'dialog' &&\n            this.pickerType === 'calendar' &&\n            ((this.selectMode === 'single' && this.selected) ||\n                (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\n                (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\n                (this.selectMode === 'range' &&\n                    this.selecteds[0] &&\n                    this.selecteds[1]))\n        ) {\n            this.confirmSelect();\n        }\n    }\n\n    /**\n     * Emits the selected year in multi-year view\n     * */\n    public selectYear(normalizedYear: T): void {\n        this.yearSelected.emit(normalizedYear);\n    }\n\n    /**\n     * Emits selected month in year view\n     * */\n    public selectMonth(normalizedMonth: T): void {\n        this.monthSelected.emit(normalizedMonth);\n    }\n\n    /**\n     * Emits the selected date\n     * */\n     public selectDate(normalizedDate: T): void {\n        this.dateSelected.emit(normalizedDate);\n    }\n\n    /**\n     * Hide the picker\n     */\n    public close(): void {\n        if (!this._opened) {\n            return;\n        }\n\n        if (this.popupRef && this.popupRef.hasAttached()) {\n            this.popupRef.detach();\n        }\n\n        if (\n            this.pickerContainerPortal &&\n            this.pickerContainerPortal.isAttached\n        ) {\n            this.pickerContainerPortal.detach();\n        }\n\n        if (this.hidePickerStreamSub) {\n            this.hidePickerStreamSub.unsubscribe();\n            this.hidePickerStreamSub = null;\n        }\n\n        if (this.confirmSelectedStreamSub) {\n            this.confirmSelectedStreamSub.unsubscribe();\n            this.confirmSelectedStreamSub = null;\n        }\n\n        if (this.pickerBeforeOpenedStreamSub) {\n            this.pickerBeforeOpenedStreamSub.unsubscribe();\n            this.pickerBeforeOpenedStreamSub = null;\n        }\n\n        if (this.pickerOpenedStreamSub) {\n            this.pickerOpenedStreamSub.unsubscribe();\n            this.pickerOpenedStreamSub = null;\n        }\n\n        if (this.dialogRef) {\n            this.dialogRef.close();\n            this.dialogRef = null;\n        }\n\n        const completeClose = () => {\n            if (this._opened) {\n                this._opened = false;\n                const selected = this.selected || this.selecteds;\n                this.afterPickerClosed.emit(selected);\n                this.focusedElementBeforeOpen = null;\n            }\n        };\n\n        if (\n            this.focusedElementBeforeOpen &&\n            typeof this.focusedElementBeforeOpen.focus === 'function'\n        ) {\n            // Because IE moves focus asynchronously, we can't count on it being restored before we've\n            // marked the datepicker as closed. If the event fires out of sequence and the element that\n            // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n            // able to close the calendar at all. We work around it by making the logic, that marks\n            // the datepicker as closed, async as well.\n            this.focusedElementBeforeOpen.focus();\n            setTimeout(completeClose);\n        } else {\n            completeClose();\n        }\n    }\n\n    /**\n     * Confirm the selected value\n     */\n    public confirmSelect(event?: any): void {\n        if (this.isInSingleMode) {\n            const selected =\n                this.selected || this.startAt || this.dateTimeAdapter.now();\n            this.confirmSelectedChange.emit(selected);\n        } else if (this.isInRangeMode) {\n            this.confirmSelectedChange.emit(this.selecteds);\n        }\n\n        this.close();\n        return;\n    }\n\n    /**\n     * Open the picker as a dialog\n     */\n    private openAsDialog(): void {\n        this.dialogRef = this.dialogService.open(\n            OwlDateTimeContainerComponent,\n            {\n                autoFocus: false,\n                backdropClass: [\n                    'cdk-overlay-dark-backdrop',\n                    ...coerceArray(this.backdropClass)\n                ],\n                paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass)],\n                viewContainerRef: this.viewContainerRef,\n                scrollStrategy:\n                    this.scrollStrategy || this.defaultScrollStrategy()\n            }\n        );\n        this.pickerContainer = this.dialogRef.componentInstance;\n\n        this.dialogRef.beforeOpen().subscribe(() => {\n            this.beforePickerOpen.emit(null);\n        });\n        this.dialogRef.afterOpen().subscribe(() => {\n            this.afterPickerOpen.emit(null);\n            this._opened = true;\n        });\n        this.dialogRef.afterClosed().subscribe(() => this.close());\n    }\n\n    /**\n     * Open the picker as popup\n     */\n    private openAsPopup(): void {\n        if (!this.pickerContainerPortal) {\n            this.pickerContainerPortal = new ComponentPortal<\n                OwlDateTimeContainerComponent<T>\n            >(OwlDateTimeContainerComponent, this.viewContainerRef);\n        }\n\n        if (!this.popupRef) {\n            this.createPopup();\n        }\n\n        if (!this.popupRef.hasAttached()) {\n            const componentRef: ComponentRef<\n                OwlDateTimeContainerComponent<T>\n            > = this.popupRef.attach(this.pickerContainerPortal);\n            this.pickerContainer = componentRef.instance;\n\n            // Update the position once the calendar has rendered.\n            this.ngZone.onStable\n                .asObservable()\n                .pipe(take(1))\n                .subscribe(() => {\n                    this.popupRef.updatePosition();\n                });\n\n            this.pickerBeforeOpenedStreamSub = this.pickerContainer.beforePickerOpenedStream\n                .pipe(take(1))\n                .subscribe(() => {\n                    this.beforePickerOpen.emit(null);\n                });\n\n            // emit open stream\n            this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream\n                .pipe(take(1))\n                .subscribe(() => {\n                    this.afterPickerOpen.emit(null);\n                    this._opened = true;\n                });\n        }\n    }\n\n    private createPopup(): void {\n        const overlayConfig = new OverlayConfig({\n            positionStrategy: this.createPopupPositionStrategy(),\n            hasBackdrop: true,\n            backdropClass: [\n                'cdk-overlay-transparent-backdrop',\n                ...coerceArray(this.backdropClass)\n            ],\n            scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n            panelClass: ['owl-dt-popup', ...coerceArray(this.panelClass)]\n        });\n\n        this.popupRef = this.overlay.create(overlayConfig);\n\n        merge(\n            this.popupRef.backdropClick(),\n            this.popupRef.detachments(),\n            this.popupRef\n                .keydownEvents()\n                .pipe(\n                    filter(\n                        event =>\n                            event.keyCode === ESCAPE ||\n                            (this._dtInput &&\n                                event.altKey &&\n                                event.keyCode === UP_ARROW)\n                    )\n                )\n        ).subscribe(() => this.close());\n    }\n\n    /**\n     * Create the popup PositionStrategy.\n     * */\n    private createPopupPositionStrategy(): PositionStrategy {\n        return this.overlay\n            .position()\n            .flexibleConnectedTo(this._dtInput.elementRef)\n            .withTransformOriginOn('.owl-dt-container')\n            .withFlexibleDimensions(false)\n            .withPush(false)\n            .withPositions([\n                {\n                    originX: 'start',\n                    originY: 'bottom',\n                    overlayX: 'start',\n                    overlayY: 'top'\n                },\n                {\n                    originX: 'start',\n                    originY: 'top',\n                    overlayX: 'start',\n                    overlayY: 'bottom'\n                },\n                {\n                    originX: 'end',\n                    originY: 'bottom',\n                    overlayX: 'end',\n                    overlayY: 'top'\n                },\n                {\n                    originX: 'end',\n                    originY: 'top',\n                    overlayX: 'end',\n                    overlayY: 'bottom'\n                },\n                {\n                    originX: 'start',\n                    originY: 'top',\n                    overlayX: 'start',\n                    overlayY: 'top',\n                    offsetY: -176\n                },\n                {\n                    originX: 'start',\n                    originY: 'top',\n                    overlayX: 'start',\n                    overlayY: 'top',\n                    offsetY: -352\n                }\n            ]);\n    }\n}\n","","/**\n * date-time-picker-input.directive\n */\n\nimport {\n    AfterContentInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    Renderer2\n} from '@angular/core';\nimport {\n    AbstractControl,\n    ControlValueAccessor,\n    NG_VALIDATORS,\n    NG_VALUE_ACCESSOR,\n    ValidationErrors,\n    Validator,\n    ValidatorFn,\n    Validators\n} from '@angular/forms';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n    OWL_DATE_TIME_FORMATS,\n    OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => OwlDateTimeInputDirective),\n    multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => OwlDateTimeInputDirective),\n    multi: true\n};\n\n@Directive({\n    selector: 'input[owlDateTime]',\n    exportAs: 'owlDateTimeInput',\n    standalone: false,\n    host: {\n        '(keydown)': 'handleKeydownOnHost($event)',\n        '(blur)': 'handleBlurOnHost($event)',\n        '(input)': 'handleInputOnHost($event)',\n        '(change)': 'handleChangeOnHost($event)',\n        '[attr.aria-haspopup]': 'owlDateTimeInputAriaHaspopup',\n        '[attr.aria-owns]': 'owlDateTimeInputAriaOwns',\n        '[attr.min]': 'minIso8601',\n        '[attr.max]': 'maxIso8601',\n        '[disabled]': 'owlDateTimeInputDisabled'\n    },\n    providers: [\n        OWL_DATETIME_VALUE_ACCESSOR,\n        OWL_DATETIME_VALIDATORS,\n    ],\n})\nexport class OwlDateTimeInputDirective<T>\n    implements\n        OnInit,\n        AfterContentInit,\n        OnDestroy,\n        ControlValueAccessor,\n        Validator {\n    static ngAcceptInputType_disabled: boolean|'';\n\n     /**\n     * Required flag to be used for range of [null, null]\n     * */\n    private _required: boolean;\n    @Input()\n    get required() {\n        return this._required;\n    }\n\n    set required(value: any) {\n        this._required = value === '' || value;\n        this.validatorOnChange();\n    }\n\n    /**\n     * The date time picker that this input is associated with.\n     * */\n    @Input()\n    set owlDateTime(value: OwlDateTimeComponent<T>) {\n        this.registerDateTimePicker(value);\n    }\n\n    /**\n     * A function to filter date time\n     */\n    @Input()\n    set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n        this._dateTimeFilter = filter;\n        this.validatorOnChange();\n    }\n\n    private _dateTimeFilter: (date: T | null) => boolean;\n    get dateTimeFilter() {\n        return this._dateTimeFilter;\n    }\n\n    /** Whether the date time picker's input is disabled. */\n    @Input()\n    private _disabled: boolean;\n    get disabled() {\n        return !!this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        const newValue = coerceBooleanProperty(value);\n        const element = this.elmRef.nativeElement;\n\n        if (this._disabled !== newValue) {\n            this._disabled = newValue;\n            this.disabledChange.emit(newValue);\n        }\n\n        // We need to null check the `blur` method, because it's undefined during SSR.\n        if (newValue && element.blur) {\n            // Normally, native input elements automatically blur if they turn disabled. This behavior\n            // is problematic, because it would mean that it triggers another change detection cycle,\n            // which then causes a changed after checked error if the input element was focused before.\n            element.blur();\n        }\n    }\n\n    /** The minimum valid date. */\n    private _min: T | null;\n    @Input()\n    get min(): T | null {\n        return this._min;\n    }\n\n    set min(value: T | null) {\n        this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n        this.validatorOnChange();\n    }\n\n    /** The maximum valid date. */\n    private _max: T | null;\n    @Input()\n    get max(): T | null {\n        return this._max;\n    }\n\n    set max(value: T | null) {\n        this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n        this.validatorOnChange();\n    }\n\n    /**\n     * The picker's select mode\n     */\n    private _selectMode: SelectMode = 'single';\n    @Input()\n    get selectMode() {\n        return this._selectMode;\n    }\n\n    set selectMode(mode: SelectMode) {\n        if (\n            mode !== 'single' &&\n            mode !== 'range' &&\n            mode !== 'rangeFrom' &&\n            mode !== 'rangeTo'\n        ) {\n            throw Error('OwlDateTime Error: invalid selectMode value!');\n        }\n\n        this._selectMode = mode;\n    }\n\n    /**\n     * The character to separate the 'from' and 'to' in input value\n     */\n    @Input()\n    rangeSeparator = '-';\n\n    private _value: T | null;\n    @Input()\n    get value() {\n        return this._value;\n    }\n\n    set value(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        this.lastValueValid = !value || this.dateTimeAdapter.isValid(value);\n        value = this.getValidDate(value);\n        const oldDate = this._value;\n        this._value = value;\n\n        // set the input property 'value'\n        this.formatNativeInputValue();\n\n        // check if the input value changed\n        if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\n            this.valueChange.emit(value);\n        }\n    }\n\n    private _values: T[] = [];\n    @Input()\n    get values() {\n        return this._values;\n    }\n\n    set values(values: T[]) {\n        if (values && values.length > 0) {\n            this._values = values.map(v => {\n                v = this.dateTimeAdapter.deserialize(v);\n                return this.getValidDate(v);\n            });\n            this.lastValueValid =\n                (!this._values[0] ||\n                    this.dateTimeAdapter.isValid(this._values[0])) &&\n                (!this._values[1] ||\n                    this.dateTimeAdapter.isValid(this._values[1]));\n        } else {\n            this._values = [];\n            this.lastValueValid = true;\n        }\n\n        // set the input property 'value'\n        this.formatNativeInputValue();\n\n        this.valueChange.emit(this._values);\n    }\n\n    /**\n     * Callback to invoke when `change` event is fired on this `<input>`\n     * */\n    @Output()\n    dateTimeChange = new EventEmitter<any>();\n\n    /**\n     * Callback to invoke when an `input` event is fired on this `<input>`.\n     * */\n    @Output()\n    dateTimeInput = new EventEmitter<any>();\n\n    get elementRef(): ElementRef {\n        return this.elmRef;\n    }\n\n    get isInSingleMode(): boolean {\n        return this._selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return (\n            this._selectMode === 'range' ||\n            this._selectMode === 'rangeFrom' ||\n            this._selectMode === 'rangeTo'\n        );\n    }\n\n    /** The date-time-picker that this input is associated with. */\n    public dtPicker: OwlDateTimeComponent<T>;\n\n    private dtPickerSub: Subscription = Subscription.EMPTY;\n    private localeSub: Subscription = Subscription.EMPTY;\n\n    private lastValueValid = true;\n\n    private onModelChange: Function = () => {};\n    private onModelTouched: Function = () => {};\n    private validatorOnChange: Function = () => {};\n\n    /** The form control validator for whether the input parses. */\n    private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n        return this.lastValueValid\n            ? null\n            : { owlDateTimeParse: { text: this.elmRef.nativeElement.value } };\n    }\n\n    /** The form control validator for the min date. */\n    private minValidator: ValidatorFn = (\n        control: AbstractControl\n    ): ValidationErrors | null => {\n        if (this.isInSingleMode) {\n            const controlValue = this.getValidDate(\n                this.dateTimeAdapter.deserialize(control.value)\n            );\n            return !this.min ||\n                !controlValue ||\n                this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n                ? null\n                : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n        } else if (this.isInRangeMode && control.value) {\n            const controlValueFrom = this.getValidDate(\n                this.dateTimeAdapter.deserialize(control.value[0])\n            );\n            const controlValueTo = this.getValidDate(\n                this.dateTimeAdapter.deserialize(control.value[1])\n            );\n            return !this.min ||\n                !controlValueFrom ||\n                !controlValueTo ||\n                this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n                ? null\n                : {\n                      owlDateTimeMin: {\n                          min: this.min,\n                          actual: [controlValueFrom, controlValueTo]\n                      }\n                  };\n        }\n    }\n\n    /** The form control validator for the max date. */\n    private maxValidator: ValidatorFn = (\n        control: AbstractControl\n    ): ValidationErrors | null => {\n        if (this.isInSingleMode) {\n            const controlValue = this.getValidDate(\n                this.dateTimeAdapter.deserialize(control.value)\n            );\n            return !this.max ||\n                !controlValue ||\n                this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n                ? null\n                : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n        } else if (this.isInRangeMode && control.value) {\n            const controlValueFrom = this.getValidDate(\n                this.dateTimeAdapter.deserialize(control.value[0])\n            );\n            const controlValueTo = this.getValidDate(\n                this.dateTimeAdapter.deserialize(control.value[1])\n            );\n            return !this.max ||\n                !controlValueFrom ||\n                !controlValueTo ||\n                this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n                ? null\n                : {\n                      owlDateTimeMax: {\n                          max: this.max,\n                          actual: [controlValueFrom, controlValueTo]\n                      }\n                  };\n        }\n    }\n\n    /** The form control validator for the date filter. */\n    private filterValidator: ValidatorFn = (\n        control: AbstractControl\n    ): ValidationErrors | null => {\n        const controlValue = this.getValidDate(\n            this.dateTimeAdapter.deserialize(control.value)\n        );\n        return !this._dateTimeFilter ||\n            !controlValue ||\n            this._dateTimeFilter(controlValue)\n            ? null\n            : { owlDateTimeFilter: true };\n    }\n\n    /**\n     * The form control validator for the range.\n     * Check whether the 'before' value is before the 'to' value\n     * */\n    private rangeValidator: ValidatorFn = (\n        control: AbstractControl\n    ): ValidationErrors | null => {\n        if (this.isInSingleMode || !control.value) {\n            return null;\n        }\n\n        const controlValueFrom = this.getValidDate(\n            this.dateTimeAdapter.deserialize(control.value[0])\n        );\n        const controlValueTo = this.getValidDate(\n            this.dateTimeAdapter.deserialize(control.value[1])\n        );\n\n        return !controlValueFrom ||\n            !controlValueTo ||\n            this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n            ? null\n            : { owlDateTimeRange: true };\n    }\n\n    /**\n     * The form control validator for the range when required.\n     * Check whether the 'before' and 'to' values are present\n     * */\n    private requiredRangeValidator: ValidatorFn = (\n        control: AbstractControl\n    ): ValidationErrors | null => {\n        if (this.isInSingleMode || !control.value || !this.required) {\n            return null;\n        }\n\n        const controlValueFrom = this.getValidDate(\n            this.dateTimeAdapter.deserialize(control.value[0])\n        );\n        const controlValueTo = this.getValidDate(\n            this.dateTimeAdapter.deserialize(control.value[1])\n        );\n\n        return !controlValueFrom ||\n            !controlValueTo\n            ? { owlRequiredDateTimeRange: [controlValueFrom, controlValueTo] }\n            : null;\n    }\n\n    /** The combined form control validator for this input. */\n    private validator: ValidatorFn | null = Validators.compose([\n        this.parseValidator,\n        this.minValidator,\n        this.maxValidator,\n        this.filterValidator,\n        this.rangeValidator,\n        this.requiredRangeValidator\n    ]);\n\n    /** Emits when the value changes (either due to user input or programmatic change). */\n    public valueChange = new EventEmitter<T[] | T | null>();\n\n    /** Emits when the disabled state has changed */\n    public disabledChange = new EventEmitter<boolean>();\n\n    get owlDateTimeInputAriaHaspopup(): boolean {\n        return true;\n    }\n\n    get owlDateTimeInputAriaOwns(): string {\n        return (this.dtPicker.opened && this.dtPicker.id) || null;\n    }\n\n    get minIso8601(): string {\n        return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n    }\n\n    get maxIso8601(): string {\n        return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n    }\n\n    get owlDateTimeInputDisabled(): boolean {\n        return this.disabled;\n    }\n\n    constructor(\n        private elmRef: ElementRef,\n        private renderer: Renderer2,\n        @Optional()\n        private dateTimeAdapter: DateTimeAdapter<T>,\n        @Optional() @Inject(OWL_DATE_TIME_FORMATS)\n        private dateTimeFormats: OwlDateTimeFormats ) {\n        if (!this.dateTimeAdapter) {\n            throw Error(\n                `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n                    `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n                    `custom implementation.`\n            );\n        }\n\n        if (!this.dateTimeFormats) {\n            throw Error(\n                `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n                    `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n                    `custom implementation.`\n            );\n        }\n\n        this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n            this.value = this.value;\n        });\n    }\n\n    public ngOnInit(): void {\n        if (!this.dtPicker) {\n            throw Error(\n                `OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`\n            );\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe(\n            (selecteds: T[] | T) => {\n                if (Array.isArray(selecteds)) {\n                    this.values = selecteds;\n                } else {\n                    this.value = selecteds;\n                }\n\n                this.onModelChange(selecteds);\n                this.onModelTouched();\n                this.dateTimeChange.emit({\n                    source: this,\n                    value: selecteds,\n                    input: this.elmRef.nativeElement\n                });\n                this.dateTimeInput.emit({\n                    source: this,\n                    value: selecteds,\n                    input: this.elmRef.nativeElement\n                });\n            }\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.dtPickerSub.unsubscribe();\n        this.localeSub.unsubscribe();\n        this.valueChange.complete();\n        this.disabledChange.complete();\n    }\n\n    public writeValue(value: any): void {\n        if (this.isInSingleMode) {\n            this.value = value;\n        } else {\n            this.values = value;\n        }\n    }\n\n    public registerOnChange(fn: any): void {\n        this.onModelChange = fn;\n    }\n\n    public registerOnTouched(fn: any): void {\n        this.onModelTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    public validate(c: AbstractControl): { [key: string]: any } {\n        return this.validator ? this.validator(c) : null;\n    }\n\n    public registerOnValidatorChange(fn: () => void): void {\n        this.validatorOnChange = fn;\n    }\n\n    /**\n     * Open the picker when user hold alt + DOWN_ARROW\n     * */\n    public handleKeydownOnHost(event: KeyboardEvent ): void {\n        if (event.altKey && event.keyCode === DOWN_ARROW) {\n            this.dtPicker.open();\n            event.preventDefault();\n        }\n    }\n\n    public handleBlurOnHost(event: Event ): void {\n        this.onModelTouched();\n    }\n\n    public handleInputOnHost(event: any ): void {\n        const value = event.target.value;\n        if (this._selectMode === 'single') {\n            this.changeInputInSingleMode(value);\n        } else if (this._selectMode === 'range') {\n            this.changeInputInRangeMode(value);\n        } else {\n            this.changeInputInRangeFromToMode(value);\n        }\n    }\n\n    public handleChangeOnHost(event: any ): void {\n\n        let v;\n        if (this.isInSingleMode) {\n            v = this.value;\n        } else if (this.isInRangeMode) {\n            v = this.values;\n        }\n\n        this.dateTimeChange.emit({\n            source: this,\n            value: v,\n            input: this.elmRef.nativeElement\n        });\n    }\n\n    /**\n     * Set the native input property 'value'\n     */\n    public formatNativeInputValue(): void {\n        if (this.isInSingleMode) {\n            this.renderer.setProperty(\n                this.elmRef.nativeElement,\n                'value',\n                this._value\n                    ? this.dateTimeAdapter.format(\n                          this._value,\n                          this.dtPicker.formatString\n                      )\n                    : ''\n            );\n        } else if (this.isInRangeMode) {\n            if (this._values && this.values.length > 0) {\n                const from = this._values[0];\n                const to = this._values[1];\n\n                const fromFormatted = from\n                    ? this.dateTimeAdapter.format(\n                          from,\n                          this.dtPicker.formatString\n                      )\n                    : '';\n                const toFormatted = to\n                    ? this.dateTimeAdapter.format(\n                          to,\n                          this.dtPicker.formatString\n                      )\n                    : '';\n\n                if (!fromFormatted && !toFormatted) {\n                    this.renderer.setProperty(\n                        this.elmRef.nativeElement,\n                        'value',\n                        null\n                    );\n                } else {\n                    if (this._selectMode === 'range') {\n                        this.renderer.setProperty(\n                            this.elmRef.nativeElement,\n                            'value',\n                            fromFormatted +\n                                ' ' +\n                                this.rangeSeparator +\n                                ' ' +\n                                toFormatted\n                        );\n                    } else if (this._selectMode === 'rangeFrom') {\n                        this.renderer.setProperty(\n                            this.elmRef.nativeElement,\n                            'value',\n                            fromFormatted\n                        );\n                    } else if (this._selectMode === 'rangeTo') {\n                        this.renderer.setProperty(\n                            this.elmRef.nativeElement,\n                            'value',\n                            toFormatted\n                        );\n                    }\n                }\n            } else {\n                this.renderer.setProperty(\n                    this.elmRef.nativeElement,\n                    'value',\n                    ''\n                );\n            }\n        }\n\n        return;\n    }\n\n    /**\n     * Register the relationship between this input and its picker component\n     */\n    private registerDateTimePicker(picker: OwlDateTimeComponent<T>) {\n        if (picker) {\n            this.dtPicker = picker;\n            this.dtPicker.registerInput(this);\n        }\n    }\n\n    /**\n     * Convert a given obj to a valid date object\n     */\n    private getValidDate(obj: any): T | null {\n        return this.dateTimeAdapter.isDateInstance(obj) &&\n            this.dateTimeAdapter.isValid(obj)\n            ? obj\n            : null;\n    }\n\n    /**\n     * Convert a time string to a date-time string\n     * When pickerType is 'timer', the value in the picker's input is a time string.\n     * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\n     * Therefore we need this fn to convert a time string to a date-time string.\n     */\n    private convertTimeStringToDateTimeString(\n        timeString: string,\n        dateTime: T\n    ): string | null {\n        if (timeString) {\n            const v = dateTime || this.dateTimeAdapter.now();\n            const dateString = this.dateTimeAdapter.format(\n                v,\n                this.dateTimeFormats.datePickerInput\n            );\n            return dateString + ' ' + timeString;\n        } else {\n            return null;\n        }\n    }\n\n    /**\n     * Handle input change in single mode\n     */\n    private changeInputInSingleMode(inputValue: string): void {\n        let value = inputValue;\n        if (this.dtPicker.pickerType === 'timer') {\n            value = this.convertTimeStringToDateTimeString(value, this.value);\n        }\n\n        let result = this.dateTimeAdapter.parse(\n            value,\n            this.dateTimeFormats.parseInput\n        );\n        this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n        result = this.getValidDate(result);\n\n        // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n        // result equals to null means there is input event, but the input value is invalid\n        if (!this.isSameValue(result, this._value) || result === null) {\n            this._value = result;\n            this.valueChange.emit(result);\n            this.onModelChange(result);\n            this.dateTimeInput.emit({\n                source: this,\n                value: result,\n                input: this.elmRef.nativeElement\n            });\n        }\n    }\n\n    /**\n     * Handle input change in rangeFrom or rangeTo mode\n     */\n    private changeInputInRangeFromToMode(inputValue: string): void {\n        const originalValue =\n            this._selectMode === 'rangeFrom'\n                ? this._values[0]\n                : this._values[1];\n\n        if (this.dtPicker.pickerType === 'timer') {\n            inputValue = this.convertTimeStringToDateTimeString(\n                inputValue,\n                originalValue\n            );\n        }\n\n        let result = this.dateTimeAdapter.parse(\n            inputValue,\n            this.dateTimeFormats.parseInput\n        );\n        this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n        result = this.getValidDate(result);\n\n        // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n        if (\n            (this._selectMode === 'rangeFrom' &&\n                this.isSameValue(result, this._values[0]) &&\n                result) ||\n            (this._selectMode === 'rangeTo' &&\n                this.isSameValue(result, this._values[1]) &&\n                result)\n        ) {\n            return;\n        }\n\n        this._values =\n            this._selectMode === 'rangeFrom'\n                ? [result, this._values[1]]\n                : [this._values[0], result];\n        this.valueChange.emit(this._values);\n        this.onModelChange(this._values);\n        this.dateTimeInput.emit({\n            source: this,\n            value: this._values,\n            input: this.elmRef.nativeElement\n        });\n    }\n\n    /**\n     * Handle input change in range mode\n     */\n    private changeInputInRangeMode(inputValue: string): void {\n        const selecteds = inputValue.split(this.rangeSeparator);\n        let fromString = selecteds[0];\n        let toString = selecteds[1];\n\n        if (this.dtPicker.pickerType === 'timer') {\n            fromString = this.convertTimeStringToDateTimeString(\n                fromString,\n                this.values[0]\n            );\n            toString = this.convertTimeStringToDateTimeString(\n                toString,\n                this.values[1]\n            );\n        }\n\n        let from = this.dateTimeAdapter.parse(\n            fromString,\n            this.dateTimeFormats.parseInput\n        );\n        let to = this.dateTimeAdapter.parse(\n            toString,\n            this.dateTimeFormats.parseInput\n        );\n        this.lastValueValid =\n            (!from || this.dateTimeAdapter.isValid(from)) &&\n            (!to || this.dateTimeAdapter.isValid(to));\n        from = this.getValidDate(from);\n        to = this.getValidDate(to);\n\n        // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n        if (\n            !this.isSameValue(from, this._values[0]) ||\n            !this.isSameValue(to, this._values[1]) ||\n            (from === null && to === null)\n        ) {\n            this._values = [from, to];\n            this.valueChange.emit(this._values);\n            this.onModelChange(this._values);\n            this.dateTimeInput.emit({\n                source: this,\n                value: this._values,\n                input: this.elmRef.nativeElement\n            });\n        }\n    }\n\n    /**\n     * Check if the two value is the same\n     */\n    private isSameValue(first: T | null, second: T | null): boolean {\n        if (first && second) {\n            return this.dateTimeAdapter.compare(first, second) === 0;\n        }\n\n        return first === second;\n    }\n}\n","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'numberFixedLen',\n    standalone: false,\n})\nexport class NumberFixedLenPipe implements PipeTransform {\n    transform( num: number, len: number ): any {\n        const number = Math.floor(num);\n        const length = Math.floor(len);\n\n        if (num === null || isNaN(number) || isNaN(length)) {\n            return num;\n        }\n\n        let numString = number.toString();\n\n        while (numString.length < length) {\n            numString = '0' + numString;\n        }\n\n        return numString;\n    }\n}\n","/**\n * date-time-inline.component\n */\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component, EventEmitter,\n    forwardRef,\n    Inject,\n    Input,\n    OnInit,\n    Optional,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n    OwlDateTime,\n    PickerMode,\n    PickerType,\n    SelectMode\n} from './date-time.class';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n    OWL_DATE_TIME_FORMATS,\n    OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n    multi: true\n};\n\n@Component({\n    selector: 'owl-date-time-inline',\n    templateUrl: './date-time-inline.component.html',\n    styleUrls: ['./date-time-inline.component.scss'],\n    host: {\n        '[class.owl-dt-inline]': 'owlDTInlineClass'\n    },\n    standalone: false,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: false,\n    providers: [OWL_DATETIME_VALUE_ACCESSOR]\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T>\n    implements OnInit, ControlValueAccessor {\n    @ViewChild(OwlDateTimeContainerComponent, { static: true })\n    container: OwlDateTimeContainerComponent<T>;\n\n    /**\n     * Set the type of the dateTime picker\n     *      'both' -- show both calendar and timer\n     *      'calendar' -- show only calendar\n     *      'timer' -- show only timer\n     */\n    private _pickerType: PickerType = 'both';\n    @Input()\n    get pickerType(): PickerType {\n        return this._pickerType;\n    }\n\n    set pickerType(val: PickerType) {\n        if (val !== this._pickerType) {\n            this._pickerType = val;\n        }\n    }\n\n    private _disabled = false;\n    @Input()\n    get disabled(): boolean {\n        return !!this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        this._disabled = coerceBooleanProperty(value);\n    }\n\n    private _selectMode: SelectMode = 'single';\n    @Input()\n    get selectMode() {\n        return this._selectMode;\n    }\n\n    set selectMode(mode: SelectMode) {\n        if (\n            mode !== 'single' &&\n            mode !== 'range' &&\n            mode !== 'rangeFrom' &&\n            mode !== 'rangeTo'\n        ) {\n            throw Error('OwlDateTime Error: invalid selectMode value!');\n        }\n\n        this._selectMode = mode;\n    }\n\n    /** The date to open the calendar to initially. */\n    private _startAt: T | null;\n    @Input()\n    get startAt(): T | null {\n        if (this._startAt) {\n            return this._startAt;\n        }\n\n        if (this.selectMode === 'single') {\n            return this.value || null;\n        } else if (\n            this.selectMode === 'range' ||\n            this.selectMode === 'rangeFrom'\n        ) {\n            return this.values[0] || null;\n        } else if (this.selectMode === 'rangeTo') {\n            return this.values[1] || null;\n        } else {\n            return null;\n        }\n    }\n\n    set startAt(date: T | null) {\n        this._startAt = this.getValidDate(\n            this.dateTimeAdapter.deserialize(date)\n        );\n    }\n\n    /** The date to open for range calendar. */\n    private _endAt: T | null;\n    @Input()\n    get endAt(): T | null {\n        if (this._endAt) {\n            return this._endAt;\n        }\n\n        if (this.selectMode === 'single') {\n            return this.value || null;\n        } else if (\n            this.selectMode === 'range' ||\n            this.selectMode === 'rangeFrom'\n        ) {\n            return this.values[1] || null;\n        } else {\n            return null;\n        }\n    }\n\n    set endAt(date: T | null) {\n        this._endAt = this.getValidDate(\n            this.dateTimeAdapter.deserialize(date)\n        );\n    }\n\n    private _dateTimeFilter: (date: T | null) => boolean;\n    @Input('owlDateTimeFilter')\n    get dateTimeFilter() {\n        return this._dateTimeFilter;\n    }\n\n    set dateTimeFilter(filter: (date: T | null) => boolean) {\n        this._dateTimeFilter = filter;\n    }\n\n    /** The minimum valid date. */\n    private _min: T | null;\n\n    get minDateTime(): T | null {\n        return this._min || null;\n    }\n\n    @Input('min')\n    set minDateTime(value: T | null) {\n        this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n        this.changeDetector.markForCheck();\n    }\n\n    /** The maximum valid date. */\n    private _max: T | null;\n\n    get maxDateTime(): T | null {\n        return this._max || null;\n    }\n\n    @Input('max')\n    set maxDateTime(value: T | null) {\n        this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n        this.changeDetector.markForCheck();\n    }\n\n    private _value: T | null;\n    @Input()\n    get value() {\n        return this._value;\n    }\n\n    set value(value: T | null) {\n        value = this.dateTimeAdapter.deserialize(value);\n        value = this.getValidDate(value);\n        this._value = value;\n        this.selected = value;\n    }\n\n    private _values: T[] = [];\n    @Input()\n    get values() {\n        return this._values;\n    }\n\n    set values(values: T[]) {\n        if (values && values.length > 0) {\n            values = values.map(v => {\n                v = this.dateTimeAdapter.deserialize(v);\n                v = this.getValidDate(v);\n                return v ? this.dateTimeAdapter.clone(v) : null;\n            });\n            this._values = [...values];\n            this.selecteds = [...values];\n        } else {\n            this._values = [];\n            this.selecteds = [];\n        }\n    }\n\n    /**\n     * Emits selected year in multi-year view\n     * This doesn't imply a change on the selected date.\n     * */\n    @Output()\n    yearSelected = new EventEmitter<T>();\n\n    /**\n     * Emits selected month in year view\n     * This doesn't imply a change on the selected date.\n     * */\n    @Output()\n    monthSelected = new EventEmitter<T>();\n\n    /**\n     * Emits selected date\n     * */\n    @Output()\n    dateSelected = new EventEmitter<T>();\n\n    private _selected: T | null;\n    get selected() {\n        return this._selected;\n    }\n\n    set selected(value: T | null) {\n        this._selected = value;\n        this.changeDetector.markForCheck();\n    }\n\n    private _selecteds: T[] = [];\n    get selecteds() {\n        return this._selecteds;\n    }\n\n    set selecteds(values: T[]) {\n        this._selecteds = values;\n        this.changeDetector.markForCheck();\n    }\n\n    get opened(): boolean {\n        return true;\n    }\n\n    get pickerMode(): PickerMode {\n        return 'inline';\n    }\n\n    get isInSingleMode(): boolean {\n        return this._selectMode === 'single';\n    }\n\n    get isInRangeMode(): boolean {\n        return (\n            this._selectMode === 'range' ||\n            this._selectMode === 'rangeFrom' ||\n            this._selectMode === 'rangeTo'\n        );\n    }\n\n    get owlDTInlineClass(): boolean {\n        return true;\n    }\n\n    private onModelChange: Function = () => { };\n    private onModelTouched: Function = () => { };\n\n    constructor(\n        protected changeDetector: ChangeDetectorRef,\n        @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n        @Optional()\n        @Inject(OWL_DATE_TIME_FORMATS)\n        protected dateTimeFormats: OwlDateTimeFormats\n    ) {\n        super(dateTimeAdapter, dateTimeFormats);\n    }\n\n    public ngOnInit() {\n        this.container.picker = this;\n    }\n\n    public writeValue(value: any): void {\n        if (this.isInSingleMode) {\n            this.value = value;\n            this.container.pickerMoment = value;\n        } else {\n            this.values = value;\n            this.container.pickerMoment = this._values[\n                this.container.activeSelectedIndex\n            ];\n        }\n    }\n\n    public registerOnChange(fn: any): void {\n        this.onModelChange = fn;\n    }\n\n    public registerOnTouched(fn: any): void {\n        this.onModelTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    public select(date: T[] | T): void {\n        if (this.disabled) {\n            return;\n        }\n\n        if (Array.isArray(date)) {\n            this.values = [...date];\n        } else {\n            this.value = date;\n        }\n        this.onModelChange(date);\n        this.onModelTouched();\n    }\n\n    /**\n     * Emits the selected year in multi-year view\n     * */\n    public selectYear(normalizedYear: T): void {\n        this.yearSelected.emit(normalizedYear);\n    }\n\n    /**\n     * Emits selected month in year view\n     * */\n    public selectMonth(normalizedMonth: T): void {\n        this.monthSelected.emit(normalizedMonth);\n    }\n\n    /**\n     * Emits the selected date\n     * */\n     public selectDate(normalizedDate: T): void {\n        this.dateSelected.emit(normalizedDate);\n    }\n}\n","<owl-date-time-container></owl-date-time-container>","/**\n * dialog.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\n@NgModule({\n    imports: [CommonModule, A11yModule, OverlayModule, PortalModule],\n    exports: [],\n    declarations: [\n        OwlDialogContainerComponent,\n    ],\n    providers: [\n        OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n        OwlDialogService,\n    ]\n})\nexport class OwlDialogModule {\n}\n","/**\n * date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, OwlDateTimeComponent } from './date-time-picker.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDialogModule } from '../dialog/dialog.module';\nimport { optionsProviders } from './options-provider';\n\n@NgModule({\n    imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule],\n    exports: [\n        OwlCalendarComponent,\n        OwlTimerComponent,\n        OwlDateTimeTriggerDirective,\n        OwlDateTimeInputDirective,\n        OwlDateTimeComponent,\n        OwlDateTimeInlineComponent,\n        OwlMultiYearViewComponent,\n        OwlYearViewComponent,\n        OwlMonthViewComponent,\n    ],\n    declarations: [\n        OwlDateTimeTriggerDirective,\n        OwlDateTimeInputDirective,\n        OwlDateTimeComponent,\n        OwlDateTimeContainerComponent,\n        OwlMultiYearViewComponent,\n        OwlYearViewComponent,\n        OwlMonthViewComponent,\n        OwlTimerComponent,\n        OwlTimerBoxComponent,\n        OwlCalendarComponent,\n        OwlCalendarBodyComponent,\n        NumberFixedLenPipe,\n        OwlDateTimeInlineComponent,\n    ],\n    providers: [\n        OwlDateTimeIntl,\n        OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n        ...optionsProviders,\n    ]\n})\nexport class OwlDateTimeModule {\n}\n","/**\n * array.utils\n */\n\n/** Creates an array and fills it with values. */\nexport function range<T>(length: number, valueFunction: (index: number) => T): T[] {\n    const valuesArray = Array(length);\n    for (let i = 0; i < length; i++) {\n        valuesArray[i] = valueFunction(i);\n    }\n    return valuesArray;\n}\n","/**\n * date.utils\n */\n\n/**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\nexport function createDate(\n    year: number,\n    month: number,\n    date: number,\n    hours: number = 0,\n    minutes: number = 0,\n    seconds: number = 0\n): Date {\n    if (month < 0 || month > 11) {\n        throw Error(\n            `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n        );\n    }\n\n    if (date < 1) {\n        throw Error(\n            `Invalid date \"${date}\". Date has to be greater than 0.`\n        );\n    }\n\n    if (hours < 0 || hours > 23) {\n        throw Error(\n            `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n        );\n    }\n\n    if (minutes < 0 || minutes > 59) {\n        throw Error(\n            `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n        );\n    }\n\n    if (seconds < 0 || seconds > 59) {\n        throw Error(\n            `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n        );\n    }\n\n    const result = createDateWithOverflow(\n        year,\n        month,\n        date,\n        hours,\n        minutes,\n        seconds\n    );\n\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n    if (result.getMonth() !== month) {\n        throw Error(\n            `Invalid date \"${date}\" for month with index \"${month}\".`\n        );\n    }\n\n    return result;\n}\n\n/**\n * Gets the number of days in the month of the given date.\n */\nexport function getNumDaysInMonth(date: Date): number {\n    const lastDateOfMonth = createDateWithOverflow(\n        date.getFullYear(),\n        date.getMonth() + 1,\n        0\n    );\n\n    return lastDateOfMonth.getDate();\n}\n\n/**\n * Creates a date but allows the month and date to overflow.\n */\nfunction createDateWithOverflow(\n    year: number,\n    month: number,\n    date: number,\n    hours: number = 0,\n    minutes: number = 0,\n    seconds: number = 0\n): Date {\n    const result = new Date(year, month, date, hours, minutes, seconds);\n\n    if (year >= 0 && year < 100) {\n        result.setFullYear(result.getFullYear() - 1900);\n    }\n    return result;\n}\n","/**\n * constants\n */\n\nimport {range} from './array.utils';\n\n/** Whether the browser supports the Intl API. */\nexport const SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nexport const DEFAULT_MONTH_NAMES = {\n    long: [\n        'January',\n        'February',\n        'March',\n        'April',\n        'May',\n        'June',\n        'July',\n        'August',\n        'September',\n        'October',\n        'November',\n        'December'\n    ],\n    short: [\n        'Jan',\n        'Feb',\n        'Mar',\n        'Apr',\n        'May',\n        'Jun',\n        'Jul',\n        'Aug',\n        'Sep',\n        'Oct',\n        'Nov',\n        'Dec'\n    ],\n    narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nexport const DEFAULT_DAY_OF_WEEK_NAMES = {\n    long: [\n        'Sunday',\n        'Monday',\n        'Tuesday',\n        'Wednesday',\n        'Thursday',\n        'Friday',\n        'Saturday'\n    ],\n    short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nexport const DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n    DateTimeAdapter,\n    OWL_DATE_TIME_LOCALE\n} from './date-time-adapter.class';\nimport { range } from '../../utils/array.utils';\nimport { createDate, getNumDaysInMonth } from '../../utils/date.utils';\nimport {\n    DEFAULT_DATE_NAMES,\n    DEFAULT_DAY_OF_WEEK_NAMES,\n    DEFAULT_MONTH_NAMES,\n    SUPPORTS_INTL_API\n} from '../../utils/constants';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:[+\\-]\\d{2}:\\d{2}))?)?$/;\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n \tpublic firstMonthOfTheYear: number = 0;\n \tpublic firstDayOfTheWeek: number = 0;\n    \n    /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n    private readonly _clampDate: boolean;\n\n    /**\n     * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n     * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n     * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n     * will produce `'8/13/1800'`.\n     */\n    useUtcForDisplay: boolean;\n\n    constructor(\n        @Optional()\n        @Inject(OWL_DATE_TIME_LOCALE)\n        private owlDateTimeLocale: string,\n        platform: Platform\n    ) {\n        super();\n        super.setLocale(owlDateTimeLocale);\n\n        // IE does its own time zone correction, so we disable this on IE.\n        this.useUtcForDisplay = !platform.TRIDENT;\n        this._clampDate = platform.TRIDENT || platform.EDGE;\n    }\n\n    public getYear(date: Date): number {\n        return date.getFullYear();\n    }\n\n    public getMonth(date: Date): number {\n        return date.getMonth();\n    }\n\n    public getDay(date: Date): number {\n        return date.getDay();\n    }\n\n    public getDate(date: Date): number {\n        return date.getDate();\n    }\n\n    public getHours(date: Date): number {\n        return date.getHours();\n    }\n\n    public getMinutes(date: Date): number {\n        return date.getMinutes();\n    }\n\n    public getSeconds(date: Date): number {\n        return date.getSeconds();\n    }\n\n    public getTime(date: Date): number {\n        return date.getTime();\n    }\n\n    public getNumDaysInMonth(date: Date): number {\n        return getNumDaysInMonth(date);\n    }\n\n    public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n        if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n            const dateLeftStartOfDay = this.createDate(\n                this.getYear(dateLeft),\n                this.getMonth(dateLeft),\n                this.getDate(dateLeft)\n            );\n            const dateRightStartOfDay = this.createDate(\n                this.getYear(dateRight),\n                this.getMonth(dateRight),\n                this.getDate(dateRight)\n            );\n\n            const timeStampLeft =\n                this.getTime(dateLeftStartOfDay) -\n                dateLeftStartOfDay.getTimezoneOffset() *\n                    this.milliseondsInMinute;\n            const timeStampRight =\n                this.getTime(dateRightStartOfDay) -\n                dateRightStartOfDay.getTimezoneOffset() *\n                    this.milliseondsInMinute;\n            return Math.round(\n                (timeStampLeft - timeStampRight) / this.millisecondsInDay\n            );\n        } else {\n            return null;\n        }\n    }\n\n    public getYearName(date: Date): string {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n                year: 'numeric',\n                timeZone: 'utc'\n            });\n            return this.stripDirectionalityCharacters(this._format(dtf, date));\n        }\n        return String(this.getYear(date));\n    }\n\n    public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n                month: style,\n                timeZone: 'utc'\n            });\n            return range(12, i =>\n                this.stripDirectionalityCharacters(\n                    this._format(dtf, new Date(2017, i, 1))\n                )\n            );\n        }\n        return DEFAULT_MONTH_NAMES[style];\n    }\n\n    public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n                weekday: style,\n                timeZone: 'utc'\n            });\n            return range(7, i =>\n                this.stripDirectionalityCharacters(\n                    this._format(dtf, new Date(2017, 0, i + 1))\n                )\n            );\n        }\n\n        return DEFAULT_DAY_OF_WEEK_NAMES[style];\n    }\n\n    public getDateNames(): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n                day: 'numeric',\n                timeZone: 'utc'\n            });\n            return range(31, i =>\n                this.stripDirectionalityCharacters(\n                    this._format(dtf, new Date(2017, 0, i + 1))\n                )\n            );\n        }\n        return DEFAULT_DATE_NAMES;\n    }\n\n    public toIso8601(date: Date): string {\n        return date.toISOString();\n    }\n\n    public isEqual(dateLeft: Date, dateRight: Date): boolean {\n        if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n            return dateLeft.getTime() === dateRight.getTime();\n        } else {\n            return false;\n        }\n    }\n\n    public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n        if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n            const dateLeftStartOfDay = this.clone(dateLeft);\n            const dateRightStartOfDay = this.clone(dateRight);\n            dateLeftStartOfDay.setHours(0, 0, 0, 0);\n            dateRightStartOfDay.setHours(0, 0, 0, 0);\n            return (\n                dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n            );\n        } else {\n            return false;\n        }\n    }\n\n    public isValid(date: Date): boolean {\n        return date && !isNaN(date.getTime());\n    }\n\n    public invalid(): Date {\n        return new Date(NaN);\n    }\n\n    public isDateInstance(obj: any): boolean {\n        return obj instanceof Date;\n    }\n\n    public addCalendarYears(date: Date, amount: number): Date {\n        return this.addCalendarMonths(date, amount * 12);\n    }\n\n    public addCalendarMonths(date: Date, amount: number): Date {\n        const result = this.clone(date);\n        amount = Number(amount);\n\n        const desiredMonth = result.getMonth() + amount;\n        const dateWithDesiredMonth = new Date(0);\n        dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n        dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n        const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n        // Set the last day of the new month\n        // if the original date was the last day of the longer month\n        result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n        return result;\n    }\n\n    public addCalendarDays(date: Date, amount: number): Date {\n        const result = this.clone(date);\n        amount = Number(amount);\n        result.setDate(result.getDate() + amount);\n        return result;\n    }\n\n    public setHours(date: Date, amount: number): Date {\n        const result = this.clone(date);\n        result.setHours(amount);\n        return result;\n    }\n\n    public setMinutes(date: Date, amount: number): Date {\n        const result = this.clone(date);\n        result.setMinutes(amount);\n        return result;\n    }\n\n    public setSeconds(date: Date, amount: number): Date {\n        const result = this.clone(date);\n        result.setSeconds(amount);\n        return result;\n    }\n\n    public createDate(\n        year: number,\n        month: number,\n        date: number,\n        hours: number = 0,\n        minutes: number = 0,\n        seconds: number = 0\n    ): Date {\n        return createDate(year, month, date, hours, minutes, seconds);\n    }\n\n    public clone(date: Date): Date {\n        return this.createDate(\n            this.getYear(date),\n            this.getMonth(date),\n            this.getDate(date),\n            this.getHours(date),\n            this.getMinutes(date),\n            this.getSeconds(date)\n        );\n    }\n\n    public now(): Date {\n        return new Date();\n    }\n\n    public format(date: Date, displayFormat: any): string {\n        if (!this.isValid(date)) {\n            throw Error('JSNativeDate: Cannot format invalid date.');\n        }\n\n        if (SUPPORTS_INTL_API) {\n            if (\n                this._clampDate &&\n                (date.getFullYear() < 1 || date.getFullYear() > 9999)\n            ) {\n                date = this.clone(date);\n                date.setFullYear(\n                    Math.max(1, Math.min(9999, date.getFullYear()))\n                );\n            }\n\n            displayFormat = { ...displayFormat, timeZone: 'utc' };\n            const dtf = new Intl.DateTimeFormat(this.getLocale(), displayFormat);\n            return this.stripDirectionalityCharacters(this._format(dtf, date));\n        }\n\n        return this.stripDirectionalityCharacters(date.toDateString());\n    }\n\n    public parse(value: any, parseFormat: any): Date | null {\n        // There is no way using the native JS Date to set the parse format or locale\n        if (typeof value === 'number') {\n            return new Date(value);\n        }\n        return value ? new Date(Date.parse(value)) : null;\n    }\n\n    /**\n     * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n     * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n     * invalid date for all other values.\n     */\n    public deserialize(value: any): Date | null {\n        if (typeof value === 'string') {\n            if (!value) {\n                return null;\n            }\n            // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n            // string is the right format first.\n            if (ISO_8601_REGEX.test(value)) {\n                const date = new Date(value);\n                if (this.isValid(date)) {\n                    return date;\n                }\n            }\n        }\n        return super.deserialize(value);\n    }\n\n    /**\n     * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n     * other browsers do not. We remove them to make output consistent and because they interfere with\n     * date parsing.\n     */\n    private stripDirectionalityCharacters(str: string) {\n        return str.replace(/[\\u200e\\u200f]/g, '');\n    }\n\n    /**\n     * When converting Date object to string, javascript built-in functions may return wrong\n     * results because it applies its internal DST rules. The DST rules around the world change\n     * very frequently, and the current valid rule is not always valid in previous years though.\n     * We work around this problem building a new Date object which has its internal UTC\n     * representation with the local date and time.\n     */\n    private _format(dtf: Intl.DateTimeFormat, date: Date) {\n        const d = new Date(\n            Date.UTC(\n                date.getFullYear(),\n                date.getMonth(),\n                date.getDate(),\n                date.getHours(),\n                date.getMinutes(),\n                date.getSeconds(),\n                date.getMilliseconds()\n            )\n        );\n        return dtf.format(d);\n    }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n    parseInput: null,\n    fullPickerInput: {year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric'},\n    datePickerInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    timePickerInput: {hour: 'numeric', minute: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n};\n","/**\n * native-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n    imports: [PlatformModule],\n    providers: [\n        {provide: DateTimeAdapter, useClass: NativeDateTimeAdapter},\n    ],\n})\nexport class NativeDateTimeModule {\n}\n\n@NgModule({\n    imports: [NativeDateTimeModule],\n    providers: [{provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS}],\n})\nexport class OwlNativeDateTimeModule {\n}\n","/**\n * unix-timestamp-date-time-adapter.class\n */\n\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateTimeAdapter, OWL_DATE_TIME_LOCALE} from '../date-time-adapter.class';\nimport {Platform} from '@angular/cdk/platform';\nimport {range} from '../../../utils/array.utils';\nimport {createDate, getNumDaysInMonth} from '../../../utils/date.utils';\nimport {DEFAULT_DATE_NAMES, DEFAULT_DAY_OF_WEEK_NAMES, DEFAULT_MONTH_NAMES, SUPPORTS_INTL_API} from '../../../utils/constants';\n\n@Injectable()\nexport class UnixTimestampDateTimeAdapter extends DateTimeAdapter<number> {\n\tpublic firstMonthOfTheYear: number = 0;\n\tpublic firstDayOfTheWeek: number = 0;\n    \n    constructor(\n        @Optional()\n        @Inject(OWL_DATE_TIME_LOCALE)\n        private owlDateTimeLocale: string,\n        platform: Platform\n    ) {\n        super();\n        super.setLocale(owlDateTimeLocale);\n\n        // IE does its own time zone correction, so we disable this on IE.\n        this.useUtcForDisplay = !platform.TRIDENT;\n        this._clampDate = platform.TRIDENT || platform.EDGE;\n    }\n\n    /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n    private readonly _clampDate: boolean;\n\n    /**\n     * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n     * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n     * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n     * will produce `'8/13/1800'`.\n     */\n    useUtcForDisplay: boolean;\n\n    /**\n     * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n     * other browsers do not. We remove them to make output consistent and because they interfere with\n     * date parsing.\n     */\n    private static search_ltr_rtl_pattern = '/[\\u200e\\u200f]/g';\n    private static stripDirectionalityCharacters(str: string) {\n        return str.replace(UnixTimestampDateTimeAdapter.search_ltr_rtl_pattern, '');\n    }\n\n    /**\n     * When converting Date object to string, javascript built-in functions may return wrong\n     * results because it applies its internal DST rules. The DST rules around the world change\n     * very frequently, and the current valid rule is not always valid in previous years though.\n     * We work around this problem building a new Date object which has its internal UTC\n     * representation with the local date and time.\n     */\n    private static _format(dtf: Intl.DateTimeFormat, date: Date) {\n        const d = new Date(\n            Date.UTC(\n                date.getFullYear(),\n                date.getMonth(),\n                date.getDate(),\n                date.getHours(),\n                date.getMinutes(),\n                date.getSeconds(),\n                date.getMilliseconds()\n            )\n        );\n        return dtf.format(d);\n    }\n\n    addCalendarDays(date: number, amount: number): number {\n        const result = new Date(date);\n        amount = Number(amount);\n        result.setDate(result.getDate() + amount);\n        return result.getTime();\n    }\n\n    addCalendarMonths(date: number, amount: number): number {\n        const result = new Date(date);\n        amount = Number(amount);\n\n        const desiredMonth = result.getMonth() + amount;\n        const dateWithDesiredMonth = new Date(0);\n        dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n        dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n        const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth.getTime());\n        // Set the last day of the new month\n        // if the original date was the last day of the longer month\n        result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n        return result.getTime();\n    }\n\n    addCalendarYears(date: number, amount: number): number {\n        return this.addCalendarMonths(date, amount * 12);\n    }\n\n    clone(date: number): number {\n        return date;\n    }\n\n    public createDate(\n        year: number,\n        month: number,\n        date: number,\n        hours: number = 0,\n        minutes: number = 0,\n        seconds: number = 0\n    ): number {\n        return createDate(year, month, date, hours, minutes, seconds).getTime();\n    }\n\n    differenceInCalendarDays(dateLeft: number, dateRight: number): number {\n        if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n            const dateLeftStartOfDay = this.createDate(\n                this.getYear(dateLeft),\n                this.getMonth(dateLeft),\n                this.getDate(dateLeft)\n            );\n            const dateRightStartOfDay = this.createDate(\n                this.getYear(dateRight),\n                this.getMonth(dateRight),\n                this.getDate(dateRight)\n            );\n\n            const timeStampLeft =\n                this.getTime(dateLeftStartOfDay) -\n                new Date(dateLeftStartOfDay).getTimezoneOffset() *\n                this.milliseondsInMinute;\n            const timeStampRight =\n                this.getTime(dateRightStartOfDay) -\n                new Date(dateRightStartOfDay).getTimezoneOffset() *\n                this.milliseondsInMinute;\n            return Math.round(\n                (timeStampLeft - timeStampRight) / this.millisecondsInDay\n            );\n        } else {\n            return null;\n        }\n    }\n\n    format(date: number, displayFormat: any): string {\n        if (!this.isValid(date)) {\n            throw Error('JSNativeDate: Cannot format invalid date.');\n        }\n\n        const jsDate = new Date(date);\n\n        if (SUPPORTS_INTL_API) {\n            if (this._clampDate &&\n                (jsDate.getFullYear() < 1 || jsDate.getFullYear() > 9999)) {\n                jsDate.setFullYear(\n                    Math.max(1, Math.min(9999, jsDate.getFullYear()))\n                );\n            }\n\n            displayFormat = {...displayFormat, timeZone: 'utc'};\n            const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n            return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(UnixTimestampDateTimeAdapter._format(dtf, jsDate));\n        }\n\n        return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(jsDate.toDateString());\n    }\n\n    getDate(date: number): number {\n        return new Date(date).getDate();\n    }\n\n    getDateNames(): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {\n                day: 'numeric',\n                timeZone: 'utc'\n            });\n            return range(31, i =>\n                UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n                    UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n                )\n            );\n        }\n        return DEFAULT_DATE_NAMES;\n    }\n\n    getDay(date: number): number {\n        return new Date(date).getDay();\n    }\n\n    getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {\n                weekday: style,\n                timeZone: 'utc'\n            });\n            return range(7, i =>\n                UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n                    UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n                )\n            );\n        }\n\n        return DEFAULT_DAY_OF_WEEK_NAMES[style];\n    }\n\n    getHours(date: number): number {\n        return new Date(date).getHours();\n    }\n\n    getMinutes(date: number): number {\n        return new Date(date).getMinutes();\n    }\n\n    getMonth(date: number): number {\n        return new Date(date).getMonth();\n    }\n\n    getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {\n                month: style,\n                timeZone: 'utc'\n            });\n            return range(12, i =>\n                UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n                    UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, i, 1))\n                )\n            );\n        }\n        return DEFAULT_MONTH_NAMES[style];\n    }\n\n    getNumDaysInMonth(date: number): number {\n        return getNumDaysInMonth(new Date(date));\n    }\n\n    getSeconds(date: number): number {\n        return new Date(date).getSeconds();\n    }\n\n    getTime(date: number): number {\n        return date;\n    }\n\n    getYear(date: number): number {\n        return new Date(date).getFullYear();\n    }\n\n    getYearName(date: number): string {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {\n                year: 'numeric',\n                timeZone: 'utc'\n            });\n            return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(UnixTimestampDateTimeAdapter._format(dtf, new Date(date)));\n        }\n        return String(this.getYear(date));\n    }\n\n    invalid(): number {\n        return NaN;\n    }\n\n    isDateInstance(obj: any): boolean {\n        return typeof obj === 'number';\n    }\n\n    isEqual(dateLeft: number, dateRight: number): boolean {\n        if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n            return dateLeft === dateRight;\n        } else {\n            return false;\n        }\n    }\n\n    isSameDay(dateLeft: number, dateRight: number): boolean {\n        if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n            const dateLeftStartOfDay = new Date(dateLeft);\n            const dateRightStartOfDay = new Date(dateRight);\n            dateLeftStartOfDay.setHours(0, 0, 0, 0);\n            dateRightStartOfDay.setHours(0, 0, 0, 0);\n            return (dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime());\n        } else {\n            return false;\n        }\n    }\n\n    isValid(date: number): boolean {\n        return (date || date === 0) && !isNaN(date);\n    }\n\n    now(): number {\n        return new Date().getTime();\n    }\n\n    parse(value: any, parseFormat: any): number | null {\n        // There is no way using the native JS Date to set the parse format or locale\n        if (typeof value === 'number') {\n            return value;\n        }\n        return value ? new Date(Date.parse(value)).getTime() : null;\n    }\n\n    setHours(date: number, amount: number): number {\n        const result = new Date(date);\n        result.setHours(amount);\n        return result.getTime();\n    }\n\n    setMinutes(date: number, amount: number): number {\n        const result = new Date(date);\n        result.setMinutes(amount);\n        return result.getTime();\n    }\n\n    setSeconds(date: number, amount: number): number {\n        const result = new Date(date);\n        result.setSeconds(amount);\n        return result.getTime();\n    }\n\n    toIso8601(date: number): string {\n        return new Date(date).toISOString();\n    }\n}\n","/**\n * unix-timestamp-date-time-format.class\n */\nimport {OwlDateTimeFormats} from '../date-time-format.class';\n\nexport const OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n    parseInput: null,\n    fullPickerInput: {year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric'},\n    datePickerInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n    timePickerInput: {hour: 'numeric', minute: 'numeric'},\n    monthYearLabel: {year: 'numeric', month: 'short'},\n    dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n    monthYearA11yLabel: {year: 'numeric', month: 'long'},\n};\n","/**\n * picker\n */\n\nexport { OwlDateTimeModule } from './lib/date-time/date-time.module';\n\nexport { OwlDateTimeIntl } from './lib/date-time/date-time-picker-intl.service';\n\nexport { OwlNativeDateTimeModule } from './lib/date-time/adapter/native-date-time.module';\n\nexport {\n  OWL_DATE_TIME_LOCALE_PROVIDER,\n  OWL_DATE_TIME_LOCALE,\n  DateTimeAdapter,\n\n} from './lib/date-time/adapter/date-time-adapter.class';\n\nexport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './lib/date-time/adapter/date-time-format.class';\n\nexport {\n  UnixTimestampDateTimeAdapter\n} from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class';\n\nexport { OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS } from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class';\n\nexport { OwlDateTimeInlineComponent } from './lib/date-time/date-time-inline.component';\n\nexport { OwlDateTimeComponent } from './lib/date-time/date-time-picker.component';\n\nexport * from './lib/date-time/calendar-body.component';\n\nexport * from './lib/date-time/timer.component';\n\nexport * from './lib/date-time/date-time-picker-trigger.directive';\n\nexport * from './lib/date-time/date-time-picker-input.directive';\n\nexport * from './lib/date-time/calendar-multi-year-view.component';\n\nexport * from './lib/date-time/calendar-year-view.component';\n\nexport * from './lib/date-time/calendar-month-view.component';\n\nexport * from './lib/date-time/calendar.component';\n\nexport * from './lib/date-time/timer.component';\n\nexport { NativeDateTimeAdapter } from './lib/date-time/adapter/native-date-time-adapter.class';\n\nexport * from './lib/date-time/options-provider';\n\nexport { PickerType, PickerMode, SelectMode, DateView, DateViewType } from './lib/date-time/date-time.class'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableOf","i1","i1.OwlDateTimeIntl","i2.DateTimeAdapter","i3.OwlCalendarBodyComponent","i2.OwlCalendarBodyComponent","i2","i5.OwlMultiYearViewComponent","i6.OwlYearViewComponent","i7.OwlMonthViewComponent","i4.OwlTimerBoxComponent","i5.OwlTimerComponent","i6.OwlCalendarComponent","take","filter","i2.OwlDialogService","i3.DateTimeAdapter","OWL_DATETIME_VALUE_ACCESSOR","i2.OwlDateTimeContainerComponent"],"mappings":"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"}