{"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-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","@for (row of rows; track $index; let rowIndex = $index) {\n    <tr role=\"row\">\n        @for (item of row; track $index; let colIndex = $index) {\n            <td\n                class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n                [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n                [class.owl-dt-calendar-cell-active]=\"\n                    isActiveCell(rowIndex, colIndex)\n                \"\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]=\"\n                    isRangeFrom(item.value)\n                \"\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            >\n                <span\n                    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                >\n                    {{ item.displayValue }}\n                </span>\n            </td>\n        }\n    </tr>\n}\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","@if (showCalendarWeeks) {\n    <ul class=\"week-number\">\n        @for (week of weekNumbers; track week) {\n            <li>\n                <span>{{ week }}</span>\n            </li>\n        }\n    </ul>\n}\n<table\n    class=\"owl-dt-calendar-table owl-dt-calendar-month-table\"\n    [ngClass]=\"{ 'owl-calendar-weeks': showCalendarWeeks }\"\n    [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\"\n>\n    <thead class=\"owl-dt-calendar-header\">\n        <tr class=\"owl-dt-weekdays\">\n            @for (weekday of weekdays; track weekday.short) {\n                <th\n                    [attr.aria-label]=\"weekday.long\"\n                    class=\"owl-dt-weekday\"\n                    scope=\"col\"\n                >\n                    <span>{{ weekday.short }}</span>\n                </th>\n            }\n        </tr>\n        <tr>\n            <th\n                class=\"owl-dt-calendar-table-divider\"\n                [ngClass]=\"{ 'owl-calendar-weeks': showCalendarWeeks }\"\n                aria-hidden=\"true\"\n                colspan=\"7\"\n            ></th>\n        </tr>\n    </thead>\n    <tbody\n        owl-date-time-calendar-body\n        role=\"grid\"\n        [rows]=\"days\"\n        [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\n        class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n        type=\"button\"\n        tabindex=\"0\"\n        [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n        [disabled]=\"!prevButtonEnabled()\"\n        [attr.aria-label]=\"prevButtonLabel\"\n        (click)=\"previousClicked()\"\n    >\n        <span\n            class=\"owl-dt-control-content owl-dt-control-button-content\"\n            tabindex=\"-1\"\n        >\n            <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n            <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                version=\"1.1\"\n                x=\"0px\"\n                y=\"0px\"\n                viewBox=\"0 0 250.738 250.738\"\n                style=\"enable-background: new 0 0 250.738 250.738\"\n                xml:space=\"preserve\"\n                width=\"100%\"\n                height=\"100%\"\n            >\n                <path\n                    style=\"fill-rule: evenodd; clip-rule: evenodd\"\n                    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                />\n            </svg>\n            <!-- </editor-fold> -->\n        </span>\n    </button>\n    <div class=\"owl-dt-calendar-control-content\">\n        <button\n            class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n            type=\"button\"\n            tabindex=\"0\"\n            [attr.aria-label]=\"periodButtonLabel\"\n            (click)=\"toggleViews()\"\n        >\n            <span\n                class=\"owl-dt-control-content owl-dt-control-button-content\"\n                tabindex=\"-1\"\n            >\n                {{ periodButtonText }}\n\n                <span\n                    class=\"owl-dt-control-button-arrow\"\n                    [style.transform]=\"\n                        'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\n                    \"\n                >\n                    <!-- <editor-fold desc=\"SVG Arrow\"> -->\n                    <svg\n                        version=\"1.1\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                        x=\"0px\"\n                        y=\"0px\"\n                        width=\"50%\"\n                        height=\"50%\"\n                        viewBox=\"0 0 292.362 292.362\"\n                        style=\"enable-background: new 0 0 292.362 292.362\"\n                        xml:space=\"preserve\"\n                    >\n                        <g>\n                            <path\n                                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                            />\n                        </g>\n                    </svg>\n                    <!-- </editor-fold> -->\n                </span>\n            </span>\n        </button>\n    </div>\n    <button\n        class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n        type=\"button\"\n        tabindex=\"0\"\n        [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n        [disabled]=\"!nextButtonEnabled()\"\n        [attr.aria-label]=\"nextButtonLabel\"\n        (click)=\"nextClicked()\"\n    >\n        <span\n            class=\"owl-dt-control-content owl-dt-control-button-content\"\n            tabindex=\"-1\"\n        >\n            <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n            <svg\n                version=\"1.1\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                x=\"0px\"\n                y=\"0px\"\n                viewBox=\"0 0 250.738 250.738\"\n                style=\"enable-background: new 0 0 250.738 250.738\"\n                xml:space=\"preserve\"\n            >\n                <path\n                    style=\"fill-rule: evenodd; clip-rule: evenodd\"\n                    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                />\n            </svg>\n            <!-- </editor-fold> -->\n        </span>\n    </button>\n</div>\n<div class=\"owl-dt-calendar-main\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n    @switch (currentView) {\n        @case (DateView.MONTH) {\n            <owl-date-time-month-view\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()\"\n            ></owl-date-time-month-view>\n        }\n        @case (DateView.YEAR) {\n            <owl-date-time-year-view\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)\"\n            ></owl-date-time-year-view>\n        }\n        @case (DateView.MULTI_YEARS) {\n            <owl-date-time-multi-year-view\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)\"\n            ></owl-date-time-multi-year-view>\n        }\n    }\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","@if (showDivider) {\n    <div class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n}\n<button\n    class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n    type=\"button\"\n    tabindex=\"-1\"\n    [disabled]=\"upBtnDisabled\"\n    [attr.aria-label]=\"upBtnAriaLabel\"\n    (click)=\"upBtnClicked()\"\n>\n    <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n        <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n        <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            version=\"1.1\"\n            x=\"0px\"\n            y=\"0px\"\n            viewBox=\"0 0 451.847 451.846\"\n            style=\"enable-background: new 0 0 451.847 451.846\"\n            xml:space=\"preserve\"\n            width=\"100%\"\n            height=\"100%\"\n        >\n            <path\n                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            />\n        </svg>\n        <!-- </editor-fold> -->\n    </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n    <input\n        class=\"owl-dt-timer-input\"\n        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    />\n    <span class=\"owl-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n    class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n    type=\"button\"\n    tabindex=\"-1\"\n    [disabled]=\"downBtnDisabled\"\n    [attr.aria-label]=\"downBtnAriaLabel\"\n    (click)=\"downBtnClicked()\"\n>\n    <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n        <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n        <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            version=\"1.1\"\n            x=\"0px\"\n            y=\"0px\"\n            viewBox=\"0 0 451.847 451.846\"\n            style=\"enable-background: new 0 0 451.847 451.846\"\n            xml:space=\"preserve\"\n            width=\"100%\"\n            height=\"100%\"\n        >\n            <path\n                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            />\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\"\n    [min]=\"0\"\n    [max]=\"23\"\n    [step]=\"stepHour\"\n    [inputLabel]=\"'Hour'\"\n    (inputChange)=\"setHourValueViaInput($event)\"\n    (valueChange)=\"setHourValue($event)\"\n></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\"\n    [min]=\"0\"\n    [max]=\"59\"\n    [step]=\"stepMinute\"\n    [inputLabel]=\"'Minute'\"\n    (inputChange)=\"setMinuteValue($event)\"\n    (valueChange)=\"setMinuteValue($event)\"\n></owl-date-time-timer-box>\n@if (showSecondsTimer) {\n    <owl-date-time-timer-box\n        [showDivider]=\"true\"\n        [upBtnAriaLabel]=\"upSecondButtonLabel\"\n        [downBtnAriaLabel]=\"downSecondButtonLabel\"\n        [upBtnDisabled]=\"!upSecondEnabled()\"\n        [downBtnDisabled]=\"!downSecondEnabled()\"\n        [value]=\"secondValue\"\n        [min]=\"0\"\n        [max]=\"59\"\n        [step]=\"stepSecond\"\n        [inputLabel]=\"'Second'\"\n        (inputChange)=\"setSecondValue($event)\"\n        (valueChange)=\"setSecondValue($event)\"\n    ></owl-date-time-timer-box>\n}\n@if (hour12Timer) {\n    <div class=\"owl-dt-timer-hour12\">\n        <button\n            class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n            type=\"button\"\n            tabindex=\"0\"\n            (click)=\"setMeridiem($event)\"\n        >\n            <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n                {{ hour12ButtonLabel }}\n            </span>\n        </button>\n    </div>\n}\n","/**\n * date-time-picker-container.component\n */\n\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    AnimationCallbackEvent,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    OnInit,\n    Optional,\n    ViewChild,\n} from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { IDateTimePickerAnimationEvent } from './date-time-picker-animation-event';\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 {\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    host: {\n        '(animate.enter)': 'onAnimateEnter($event)',\n        '(animate.leave)': 'onAnimateLeave($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    }\n})\nexport class OwlDateTimeContainerComponent<T>\n    implements OnInit, AfterContentInit, AfterViewInit\n{\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    /** Emits when an animation state changes. */\n    public animationStateChanged = new EventEmitter<IDateTimePickerAnimationEvent>();\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(\n        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(\n                    this.picker.selecteds[0],\n                );\n            }\n            if (this.picker.selecteds[1]) {\n                this.retainEndTime = this.dateTimeAdapter.clone(\n                    this.picker.selecteds[1],\n                );\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(animationName: 'enter' | 'leave'): void {\n        if (animationName === 'enter') {\n            this.beforePickerOpened$.next(null);\n        }\n        this.animationStateChanged.emit({\n            phaseName: 'start',\n            toState: animationName\n        });\n    }\n\n    public handleContainerAnimationDone(animationName: 'enter' | 'leave'): void {\n        if (animationName === 'enter') {\n            this.pickerOpened$.next(null);\n        }\n        this.animationStateChanged.emit({\n            phaseName: 'done',\n            toState: animationName\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    protected onAnimateEnter(event: AnimationCallbackEvent): void {\n        this.handleContainerAnimationStart('enter');\n        const duration = this.parseCssVariableDuration(event.target, '--container-enter-animation-duration');\n        if (duration === 0) {\n            this.handleContainerAnimationDone('enter');\n            event.animationComplete();\n        } else {\n            const animation = event.target.animate([\n                { opacity: 0, transform: 'scaleY(0)' },\n                { opacity: 1, transform: 'scaleY(1)' }\n            ], {\n                duration: duration ?? 400,\n                easing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n                fill: 'forwards'\n            });\n            animation.finished.then(() => {\n                this.handleContainerAnimationDone('enter');\n                event.animationComplete();\n            });\n        }\n    }\n\n    protected onAnimateLeave(event: AnimationCallbackEvent): void {\n        this.handleContainerAnimationStart('leave');\n        const duration = this.parseCssVariableDuration(event.target, '--container-leave-animation-duration');\n        if (duration === 0) {\n            this.handleContainerAnimationDone('leave');\n            event.animationComplete();\n        } else {\n            event.target.animate([\n                { opacity: 1 },\n                { opacity: 0 }\n            ], {\n                duration: duration ?? 100,\n                easing: 'linear',\n                fill: 'forwards'\n            }).finished.then(() => {\n                this.handleContainerAnimationDone('leave');\n                event.animationComplete();\n            });\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                    );\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                    );\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                    );\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    private parseCssVariableDuration(el: Element, cssVariableName: string) {\n        const durationStr = getComputedStyle(el).getPropertyValue(cssVariableName).trim();\n\n        // Convert to ms\n        let duration: number | undefined = undefined;\n        if (durationStr.endsWith('ms')) {\n            duration = parseFloat(durationStr);\n        } else if (durationStr.endsWith('s')) {\n            duration = parseFloat(durationStr) * 1000;\n        } else if (durationStr) {\n            duration = parseFloat(durationStr);\n            if (isNaN(duration)) {\n                duration = undefined;\n            }\n        }\n        return duration;\n    }\n}\n","<div\n    [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n    class=\"owl-dt-container-inner\"\n>\n    @if (pickerType === 'both' || pickerType === 'calendar') {\n        <owl-date-time-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)\"\n        ></owl-date-time-calendar>\n    }\n    @if (pickerType === 'both' || pickerType === 'timer') {\n        <owl-date-time-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)\"\n        ></owl-date-time-timer>\n    }\n    @if (picker.isInRangeMode) {\n        <div\n            role=\"radiogroup\"\n            class=\"owl-dt-container-info owl-dt-container-row\"\n        >\n            <div\n                role=\"radio\"\n                [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]=\"{\n                    'owl-dt-container-info-active': activeSelectedIndex === 0,\n                }\"\n                (click)=\"handleClickOnInfoGroup($event, 0)\"\n                (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n                #from\n            >\n                <span\n                    class=\"owl-dt-control-content owl-dt-container-range-content\"\n                    tabindex=\"-1\"\n                >\n                    <span class=\"owl-dt-container-info-label\"\n                        >{{ fromLabel }}:</span\n                    >\n                    <span class=\"owl-dt-container-info-value\">{{\n                        fromFormattedValue\n                    }}</span>\n                </span>\n            </div>\n            <div\n                role=\"radio\"\n                [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]=\"{\n                    'owl-dt-container-info-active': activeSelectedIndex === 1,\n                }\"\n                (click)=\"handleClickOnInfoGroup($event, 1)\"\n                (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n                #to\n            >\n                <span\n                    class=\"owl-dt-control-content owl-dt-container-range-content\"\n                    tabindex=\"-1\"\n                >\n                    <span class=\"owl-dt-container-info-label\"\n                        >{{ toLabel }}:</span\n                    >\n                    <span class=\"owl-dt-container-info-value\">{{\n                        toFormattedValue\n                    }}</span>\n                </span>\n            </div>\n        </div>\n    }\n    @if (showControlButtons) {\n        <div class=\"owl-dt-container-buttons owl-dt-container-row\">\n            <button\n                class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n                type=\"button\"\n                tabindex=\"0\"\n                (click)=\"onCancelClicked($event)\"\n            >\n                <span\n                    class=\"owl-dt-control-content owl-dt-control-button-content\"\n                    tabindex=\"-1\"\n                >\n                    {{ cancelLabel }}\n                </span>\n            </button>\n            <button\n                class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n                type=\"button\"\n                tabindex=\"0\"\n                (click)=\"onSetClicked($event)\"\n            >\n                <span\n                    class=\"owl-dt-control-content owl-dt-control-button-content\"\n                    tabindex=\"-1\"\n                >\n                    {{ setLabel }}\n                </span>\n            </button>\n        </div>\n    }\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 { ESCAPE } from '@angular/cdk/keycodes';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { Location } from '@angular/common';\nimport { Signal, signal } from '@angular/core';\nimport { Observable, Subject, Subscription, SubscriptionLike, filter, take } from 'rxjs';\nimport { IDateTimePickerAnimationEvent } from '../date-time/date-time-picker-animation-event';\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 = signal<T | undefined>(undefined);\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: IDateTimePickerAnimationEvent ) => 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: IDateTimePickerAnimationEvent ) => 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: IDateTimePickerAnimationEvent) => event.phaseName === 'done' && event.toState === 'leave'),\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.set(undefined);\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 => 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(): Signal<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    Component,\n    ComponentRef,\n    ElementRef,\n    EmbeddedViewRef,\n    EventEmitter,\n    Inject,\n    OnInit,\n    Optional,\n    signal,\n    ViewChild,\n} from '@angular/core';\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 { OwlDateTimeContainerComponent } from '../date-time/date-time-picker-container.component';\nimport { IDateTimePickerAnimationEvent } from '../date-time/date-time-picker-animation-event';\nimport { OwlDialogConfigInterface } from './dialog-config.class';\n\n@Component({\n    selector: 'owl-dialog-container',\n    templateUrl: './dialog-container.component.html',\n    standalone: false,\n    host: {\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    }\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<IDateTimePickerAnimationEvent>();\n\n    public isAnimating = signal(false);\n\n    private _config: OwlDialogConfigInterface;\n    private _component: ComponentRef<unknown>;\n    get config(): OwlDialogConfigInterface {\n        return this._config;\n    }\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    constructor(\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        const component = this.portalOutlet.attachComponentPortal(portal);\n        const pickerContainer = component.instance as OwlDateTimeContainerComponent<unknown>;\n        pickerContainer.animationStateChanged.subscribe(state => this.onAnimationDone(state));\n        this._component = component;\n        return component;\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: IDateTimePickerAnimationEvent): void {\n        this.isAnimating.set(true);\n        this.animationStateChanged.emit(event);\n    }\n\n    public onAnimationDone(event: IDateTimePickerAnimationEvent): void {\n        if (event.toState === 'enter') {\n            this.trapFocus();\n        } else if (event.toState === 'leave') {\n            this.restoreFocus();\n        }\n\n        this.animationStateChanged.emit(event);\n        this.isAnimating.set(false);\n    }\n\n    public startExitAnimation() {\n        this._component.destroy();\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} 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.set(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?.viewContainerRef?.injector;\n        const providers = [\n            { provide: OwlDialogRef, useValue: dialogRef },\n            { provide: OwlDialogContainerComponent, useValue: dialogContainer },\n            { provide: OWL_DIALOG_DATA, useValue: config?.data },\n        ];\n\n        return Injector.create({\n            providers,\n            parent: userInjector || this.injector,\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  untracked,\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 { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTime, PickerMode, PickerType, SelectMode } from './date-time.class';\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 = untracked(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","i3","i4.OwlMultiYearViewComponent","i5.OwlYearViewComponent","i6.OwlMonthViewComponent","i3.OwlTimerBoxComponent","i4","i5.OwlTimerComponent","i6.OwlCalendarComponent","take","i2","filter","i2.OwlDialogService","i3.DateTimeAdapter","OWL_DATETIME_VALUE_ACCESSOR","i2.OwlDateTimeContainerComponent"],"mappings":"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"}