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