{"version":3,"file":"ngx-mat-timepicker.mjs","sources":["../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-format.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-periods.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker-adapter.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-units.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/tokens/ngx-mat-timepicker-config.token.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker.service.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker-event.service.ts","../../../projects/ngx-mat-timepicker/src/lib/tokens/ngx-mat-timepicker-time-locale.token.ts","../../../projects/ngx-mat-timepicker/src/lib/services/ngx-mat-timepicker-locale.service.ts","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker-base.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/utils/ngx-mat-timepicker.utils.ts","../../../projects/ngx-mat-timepicker/src/lib/models/ngx-mat-timepicker-measures.enum.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-time-localizer.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-minutes-formatter.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-active-minute.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-active-hour.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-face/ngx-mat-timepicker-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-face/ngx-mat-timepicker-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-period/ngx-mat-timepicker-period.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-period/ngx-mat-timepicker-period.component.html","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-parser.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker-autofocus.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker/ngx-mat-timepicker.component.ts","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker-toggle-icon.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-control/ngx-mat-timepicker-control.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-control/ngx-mat-timepicker-control.component.html","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component.ts","../../../projects/ngx-mat-timepicker/src/lib/components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component.html","../../../projects/ngx-mat-timepicker/src/lib/directives/ngx-mat-timepicker.directive.ts","../../../projects/ngx-mat-timepicker/src/lib/pipes/ngx-mat-timepicker-time-formatter.pipe.ts","../../../projects/ngx-mat-timepicker/src/lib/ngx-mat-timepicker.module.ts","../../../projects/ngx-mat-timepicker/src/public-api.ts","../../../projects/ngx-mat-timepicker/src/ngx-mat-timepicker.ts"],"sourcesContent":["export enum NgxMatTimepickerFormat {\n    TWELVE = \"hh:mm a\",\n    TWELVE_SHORT = \"h:m a\",\n    TWENTY_FOUR = \"HH:mm\",\n    TWENTY_FOUR_SHORT = \"H:m\"\n}\n","export enum NgxMatTimepickerPeriods {\n    AM = \"AM\",\n    PM = \"PM\"\n}\n","import {NgxMatTimepickerFormat} from \"../models/ngx-mat-timepicker-format.enum\";\nimport {NgxMatTimepickerFormatType} from \"../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerPeriods} from \"../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerOptions} from \"../models/ngx-mat-timepicker-options.interface\";\n//\nimport {DateTime, LocaleOptions, NumberingSystem} from \"ts-luxon\";\n\n// @dynamic\nexport class NgxMatTimepickerAdapter {\n\n    static defaultFormat: NgxMatTimepickerFormatType = 12;\n    static defaultLocale: string = \"en-US\";\n    static defaultNumberingSystem: NumberingSystem = \"latn\";\n\n    /***\n     *  Format hour according to time format (12 or 24)\n     */\n    static formatHour(currentHour: number, format: NgxMatTimepickerFormatType, period: NgxMatTimepickerPeriods): number {\n        if (this.isTwentyFour(format)) {\n            return currentHour;\n        }\n        const hour = period === NgxMatTimepickerPeriods.AM ? currentHour : currentHour + 12;\n\n        if (period === NgxMatTimepickerPeriods.AM && hour === 12) {\n            return 0;\n        }\n        else if (period === NgxMatTimepickerPeriods.PM && hour === 24) {\n            return 12;\n        }\n\n        return hour;\n    }\n\n    static formatTime(time: string, opts: NgxMatTimepickerOptions): string {\n        if (!time) {\n            return \"Invalid Time\";\n        }\n        const parsedTime = this.parseTime(time, opts).setLocale(this.defaultLocale);\n        if (!parsedTime.isValid) {\n            return \"Invalid time\";\n        }\n        const isTwelve = !this.isTwentyFour(opts.format as NgxMatTimepickerFormatType);\n        if (isTwelve) {\n            return parsedTime.toLocaleString({\n                ...DateTime.TIME_SIMPLE,\n                hour12: isTwelve\n            }).replace(/\\u200E/g, \"\");\n        }\n\n        return parsedTime.toISOTime({\n            includeOffset: false,\n            suppressMilliseconds: true,\n            suppressSeconds: true\n        }).replace(/\\u200E/g, \"\");\n    }\n\n    static fromDateTimeToString(time: DateTime, format: NgxMatTimepickerFormatType): string {\n\n        return time.reconfigure({\n            numberingSystem: this.defaultNumberingSystem,\n            locale: this.defaultLocale\n        }).toFormat(this.isTwentyFour(format) ? NgxMatTimepickerFormat.TWENTY_FOUR : NgxMatTimepickerFormat.TWELVE);\n    }\n\n    static isBetween(time: DateTime, before: DateTime, after: DateTime, unit: \"hours\" | \"minutes\" = \"minutes\"): boolean {\n        const innerUnit = unit === \"hours\" ? unit : void 0;\n\n        return this.isSameOrBefore(time, after, innerUnit) && this.isSameOrAfter(time, before, innerUnit);\n    }\n\n    static isSameOrAfter(time: DateTime, compareWith: DateTime, unit: \"hours\" | \"minutes\" = \"minutes\"): boolean {\n        if (unit === \"hours\") {\n            return time.hour >= compareWith.hour;\n        }\n\n        return time.hasSame(compareWith, unit) || time.valueOf() > compareWith.valueOf();\n    }\n\n    static isSameOrBefore(time: DateTime, compareWith: DateTime, unit: \"hours\" | \"minutes\" = \"minutes\"): boolean {\n        if (unit === \"hours\") {\n            return time.hour <= compareWith.hour;\n        }\n\n        return time.hasSame(compareWith, unit) || time.valueOf() <= compareWith.valueOf();\n    }\n\n    static isTimeAvailable(time: string,\n                           min?: DateTime,\n                           max?: DateTime,\n                           granularity?: \"hours\" | \"minutes\",\n                           minutesGap?: number | null,\n                           format?: number): boolean {\n        if (!time) {\n            return void 0;\n        }\n\n        const convertedTime = this.parseTime(time, {format});\n        const minutes = convertedTime.minute;\n\n        if (minutesGap && minutes === minutes && minutes % minutesGap !== 0) {\n            throw new Error(`Your minutes - ${minutes} doesn\\'t match your minutesGap - ${minutesGap}`);\n        }\n        const isAfter = (min && !max)\n            && this.isSameOrAfter(convertedTime, min, granularity);\n        const isBefore = (max && !min)\n            && this.isSameOrBefore(convertedTime, max, granularity);\n        const between = (min && max)\n            && this.isBetween(convertedTime, min, max, granularity);\n        const isAvailable = !min && !max;\n\n        return isAfter || isBefore || between || isAvailable;\n    }\n\n    static isTwentyFour(format: NgxMatTimepickerFormatType): boolean {\n        return format === 24;\n    }\n\n    static parseTime(time: string, opts: NgxMatTimepickerOptions): DateTime {\n        const localeOpts = this._getLocaleOptionsByTime(time, opts);\n        let timeMask = NgxMatTimepickerFormat.TWENTY_FOUR_SHORT;\n        // If there's a space, means we have the meridiem. Way faster than splitting text\n        // if (~time.indexOf(\" \")) {\n        // 09/02/2023 it seems that sometimes the space from the formatter is a nnbsp (Chromium >= 110)\n        // which causes the indexOf(\" \") to fail: charCode 32, while nbsp is 8239\n        if (time.match(/\\s/g)) {\n            /*\n             * We translate the meridiem in simple AM or PM letters (instead of A.M.)\n             * because even if we set the locale with NgxMatTimepickerModule.setLocale\n             * the default (en-US) will always be used here\n             */\n            time = time.replace(/\\.\\s*/g, \"\");\n            timeMask = NgxMatTimepickerFormat.TWELVE_SHORT;\n        }\n\n        return DateTime.fromFormat(time.replace(/\\s+/g, \" \"), timeMask, {\n            numberingSystem: localeOpts.numberingSystem,\n            locale: localeOpts.locale\n        });\n    }\n\n    static toLocaleTimeString(time: string, opts: NgxMatTimepickerOptions = {}): string {\n        const {format = this.defaultFormat, locale = this.defaultLocale} = opts;\n        let hourCycle: \"h12\" | \"h23\" = \"h12\";\n        let timeMask = NgxMatTimepickerFormat.TWELVE_SHORT;\n        if (this.isTwentyFour(format as NgxMatTimepickerFormatType)) {\n            hourCycle = \"h23\";\n            timeMask = NgxMatTimepickerFormat.TWENTY_FOUR_SHORT;\n        }\n\n        return DateTime.fromFormat(time, timeMask).reconfigure({\n            locale,\n            numberingSystem: opts.numberingSystem,\n            defaultToEN: opts.defaultToEN,\n            outputCalendar: opts.outputCalendar\n        }).toLocaleString({\n            ...DateTime.TIME_SIMPLE,\n            hourCycle\n        });\n    }\n\n    /**\n     *\n     * @param time\n     * @param opts\n     * @private\n     */\n    private static _getLocaleOptionsByTime(time: string, opts: NgxMatTimepickerOptions): LocaleOptions {\n        const {numberingSystem, locale} = DateTime.now().reconfigure({\n            locale: opts.locale,\n            numberingSystem: opts.numberingSystem,\n            outputCalendar: opts.outputCalendar,\n            defaultToEN: opts.defaultToEN\n        }).resolvedLocaleOptions();\n\n        return isNaN(parseInt(time, 10)) ? {\n            numberingSystem: numberingSystem as NumberingSystem,\n            locale\n        } : {\n            numberingSystem: this.defaultNumberingSystem,\n            locale: this.defaultLocale\n        };\n    }\n}\n","export enum NgxMatTimepickerUnits {\n    HOUR,\n    MINUTE\n}\n","import {InjectionToken, Provider} from \"@angular/core\";\n//\nimport {NgxMatTimepickerConfig} from \"../models/ngx-mat-timepicker-config.interface\";\n\nexport const NGX_MAT_TIMEPICKER_CONFIG = new InjectionToken<NgxMatTimepickerConfig>(\"NGX_MAT_TIMEPICKER_CONFIG\");\n\nexport function provideNgxMatTimepickerOptions(config: NgxMatTimepickerConfig): Provider[] {\n    return [\n        {provide: NGX_MAT_TIMEPICKER_CONFIG, useValue: config},\n    ];\n}\n","import {Injectable} from \"@angular/core\";\n//\nimport {NgxMatTimepickerClockFace} from \"../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerPeriods} from \"../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerAdapter} from \"./ngx-mat-timepicker-adapter\";\n//\nimport {BehaviorSubject, Observable} from \"rxjs\";\nimport {DateTime} from \"ts-luxon\";\n\nconst DEFAULT_HOUR: NgxMatTimepickerClockFace = {\n    time: 12,\n    angle: 360\n};\nconst DEFAULT_MINUTE: NgxMatTimepickerClockFace = {\n    time: 0,\n    angle: 360\n};\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class NgxMatTimepickerService {\n\n\n    set hour(hour: NgxMatTimepickerClockFace) {\n        this._hour$.next(hour);\n    }\n\n    set minute(minute: NgxMatTimepickerClockFace) {\n        this._minute$.next(minute);\n    }\n\n    set period(period: NgxMatTimepickerPeriods) {\n        const isPeriodValid = (period === NgxMatTimepickerPeriods.AM) || (period === NgxMatTimepickerPeriods.PM);\n\n        if (isPeriodValid) {\n            this._period$.next(period);\n        }\n    }\n\n    get selectedHour(): Observable<NgxMatTimepickerClockFace> {\n        return this._hour$.asObservable();\n    }\n\n    get selectedMinute(): Observable<NgxMatTimepickerClockFace> {\n        return this._minute$.asObservable();\n    }\n\n    get selectedPeriod(): Observable<NgxMatTimepickerPeriods> {\n        return this._period$.asObservable();\n    }\n\n    private _hour$ = new BehaviorSubject<NgxMatTimepickerClockFace>(DEFAULT_HOUR);\n    private _minute$ = new BehaviorSubject<NgxMatTimepickerClockFace>(DEFAULT_MINUTE);\n    private _period$ = new BehaviorSubject<NgxMatTimepickerPeriods>(NgxMatTimepickerPeriods.AM);\n\n    getFullTime(format: number): string {\n        const selectedHour = this._hour$.getValue().time;\n        const selectedMinute = this._minute$.getValue().time;\n        const hour = selectedHour != null ? selectedHour : DEFAULT_HOUR.time;\n        const minute = selectedMinute != null ? selectedMinute : DEFAULT_MINUTE.time;\n        const period = format === 12 ? this._period$.getValue() : \"\";\n        const time = `${hour}:${minute} ${period}`.trim();\n\n        return NgxMatTimepickerAdapter.formatTime(time, {format});\n    }\n\n\n    setDefaultTimeIfAvailable(time: string, min: DateTime, max: DateTime, format: number, minutesGap?: number) {\n        time || this._resetTime();\n        /* Workaround to double error message*/\n        try {\n            if (NgxMatTimepickerAdapter.isTimeAvailable(time, min, max, \"minutes\", minutesGap)) {\n                this._setDefaultTime(time, format);\n            }\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n\n    private _resetTime(): void {\n        this.hour = {...DEFAULT_HOUR};\n        this.minute = {...DEFAULT_MINUTE};\n        this.period = NgxMatTimepickerPeriods.AM;\n    }\n\n    private _setDefaultTime(time: string, format: number) {\n        const defaultDto = NgxMatTimepickerAdapter.parseTime(time, {format});\n\n        if (defaultDto.isValid) {\n            const period = time.substring(time.length - 2).toUpperCase();\n            const hour = defaultDto.hour;\n\n            this.hour = {...DEFAULT_HOUR, time: formatHourByPeriod(hour, period as NgxMatTimepickerPeriods)};\n            this.minute = {...DEFAULT_MINUTE, time: defaultDto.minute};\n            this.period = period as NgxMatTimepickerPeriods;\n\n        }\n        else {\n            this._resetTime();\n        }\n    }\n}\n\n/***\n *  Format hour in 24hours format to meridian (AM or PM) format\n */\nfunction formatHourByPeriod(hour: number, period: NgxMatTimepickerPeriods): number {\n    switch (period) {\n        case NgxMatTimepickerPeriods.AM:\n            return hour === 0 ? 12 : hour;\n        case NgxMatTimepickerPeriods.PM:\n            return hour === 12 ? 12 : hour - 12;\n        default:\n            return hour;\n    }\n}\n","import {Injectable} from \"@angular/core\";\n//\nimport {Observable, Subject} from \"rxjs\";\nimport {shareReplay} from \"rxjs/operators\";\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class NgxMatTimepickerEventService {\n\n    get backdropClick(): Observable<MouseEvent> {\n        return this._backdropClick$.asObservable().pipe(shareReplay({bufferSize: 1, refCount: true}));\n    }\n\n    get keydownEvent(): Observable<KeyboardEvent> {\n        return this._keydownEvent$.asObservable().pipe(shareReplay({bufferSize: 1, refCount: true}));\n    }\n\n    private _backdropClick$: Subject<MouseEvent> = new Subject();\n    private _keydownEvent$: Subject<KeyboardEvent> = new Subject();\n\n    constructor() {\n    }\n\n    dispatchEvent(event: KeyboardEvent | MouseEvent): void {\n        switch (event.type) {\n            case \"click\":\n                this._backdropClick$.next(event as MouseEvent);\n                break;\n            case \"keydown\":\n                this._keydownEvent$.next(event as KeyboardEvent);\n                break;\n            default:\n                throw new Error(\"no such event type\");\n        }\n    }\n\n}\n","import { InjectionToken } from \"@angular/core\";\n//\nimport { NgxMatTimepickerAdapter } from \"../services/ngx-mat-timepicker-adapter\";\n\nexport const NGX_MAT_TIMEPICKER_LOCALE = new InjectionToken<string>(\"TimeLocale\", {\n    providedIn: \"root\",\n    factory: () => NgxMatTimepickerAdapter.defaultLocale\n});\n","import {Inject, Injectable} from \"@angular/core\";\n//\nimport {NGX_MAT_TIMEPICKER_LOCALE} from \"../tokens/ngx-mat-timepicker-time-locale.token\";\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class NgxMatTimepickerLocaleService {\n\n    get locale(): string {\n        return this._locale;\n    }\n\n    protected _initialLocale: string;\n    protected _locale;\n\n    constructor(@Inject(NGX_MAT_TIMEPICKER_LOCALE) initialLocale: string) {\n        this._locale = initialLocale;\n    }\n\n    updateLocale(newValue: string): void {\n        this._locale = newValue || this._initialLocale;\n    }\n}\n","import {Directive, HostListener, Inject, Input, OnDestroy, OnInit} from \"@angular/core\";\nimport {ThemePalette} from \"@angular/material/core\";\n//\nimport {NgxMatTimepickerEventService} from \"../services/ngx-mat-timepicker-event.service\";\nimport {NgxMatTimepickerLocaleService} from \"../services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerService} from \"../services/ngx-mat-timepicker.service\";\nimport {NgxMatTimepickerAdapter} from \"../services/ngx-mat-timepicker-adapter\";\n//\nimport {NgxMatTimepickerUnits} from \"../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerClockFace} from \"../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerPeriods} from \"../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerConfig} from \"../models/ngx-mat-timepicker-config.interface\";\nimport {NGX_MAT_TIMEPICKER_CONFIG} from \"../tokens/ngx-mat-timepicker-config.token\";\n//\nimport {Observable, Subject} from \"rxjs\";\nimport {shareReplay, takeUntil} from \"rxjs/operators\";\n\n@Directive({\n    selector: \"[ngxMatTimepickerBase]\"\n})\nexport class NgxMatTimepickerBaseDirective implements OnInit, OnDestroy {\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    get defaultTime(): string {\n        return this._defaultTime;\n    }\n\n    @Input()\n    set defaultTime(time: string) {\n        this._defaultTime = time;\n        this._setDefaultTime(time);\n    }\n\n    private get _locale(): string {\n        return this._timepickerLocaleSrv.locale;\n    }\n\n    activeTimeUnit: NgxMatTimepickerUnits = NgxMatTimepickerUnits.HOUR;\n    selectedHour: Observable<NgxMatTimepickerClockFace>;\n    selectedMinute: Observable<NgxMatTimepickerClockFace>;\n    selectedPeriod: Observable<NgxMatTimepickerPeriods>;\n    timeUnit: typeof NgxMatTimepickerUnits = NgxMatTimepickerUnits;\n\n    protected _color: ThemePalette = \"primary\";\n    protected _defaultTime: string;\n    protected _subsCtrl$: Subject<void> = new Subject<void>();\n\n    constructor(protected _timepickerSrv: NgxMatTimepickerService,\n                protected _eventSrv: NgxMatTimepickerEventService,\n                protected _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n                @Inject(NGX_MAT_TIMEPICKER_CONFIG) public data: NgxMatTimepickerConfig) {\n\n        this.color = data.color;\n        this.defaultTime = data.defaultTime;\n    }\n\n    changePeriod(period: NgxMatTimepickerPeriods): void {\n        this._timepickerSrv.period = period;\n        this._onTimeChange();\n    }\n\n    changeTimeUnit(unit: NgxMatTimepickerUnits): void {\n        this.activeTimeUnit = unit;\n    }\n\n    close(): void {\n        this.data.timepickerBaseRef.close();\n    }\n\n    ngOnDestroy(): void {\n        this._subsCtrl$.next();\n        this._subsCtrl$.complete();\n    }\n\n    ngOnInit(): void {\n        this._defineTime();\n        this.selectedHour = this._timepickerSrv.selectedHour\n            .pipe(shareReplay({bufferSize: 1, refCount: true}));\n        this.selectedMinute = this._timepickerSrv.selectedMinute\n            .pipe(shareReplay({bufferSize: 1, refCount: true}));\n        this.selectedPeriod = this._timepickerSrv.selectedPeriod\n            .pipe(shareReplay({bufferSize: 1, refCount: true}));\n        this.data.timepickerBaseRef.timeUpdated.pipe(takeUntil(this._subsCtrl$))\n            .subscribe({\n                next: (v: string) => {\n                    v && this._setDefaultTime(v);\n                }\n            });\n    }\n\n    onHourChange(hour: NgxMatTimepickerClockFace): void {\n        this._timepickerSrv.hour = hour;\n        this._onTimeChange();\n    }\n\n    onHourSelected(hour: number): void {\n        if (!this.data.hoursOnly) {\n            this.changeTimeUnit(NgxMatTimepickerUnits.MINUTE);\n        }\n        this.data.timepickerBaseRef.hourSelected.next(hour);\n    }\n\n    @HostListener(\"keydown\", [\"$event\"])\n    onKeydown(e: any): void {\n        this._eventSrv.dispatchEvent(e);\n        e.stopPropagation();\n    }\n\n    onMinuteChange(minute: NgxMatTimepickerClockFace): void {\n        this._timepickerSrv.minute = minute;\n        this._onTimeChange();\n    }\n\n    setTime(): void {\n        this.data.timepickerBaseRef.timeSet.emit(this._timepickerSrv.getFullTime(this.data.format));\n        this.close();\n    }\n\n    protected _defineTime(): void {\n        const minTime = this.data.minTime;\n\n        if (minTime && (!this.data.time && !this.data.defaultTime)) {\n            const time = NgxMatTimepickerAdapter.fromDateTimeToString(minTime, this.data.format);\n\n            this._setDefaultTime(time);\n        }\n    }\n\n    protected _onTimeChange(): void {\n        const time = NgxMatTimepickerAdapter.toLocaleTimeString(this._timepickerSrv.getFullTime(this.data.format), {\n            locale: this._locale,\n            format: this.data.format\n        });\n\n        this.data.timepickerBaseRef.timeChanged.emit(time);\n    }\n\n    protected _setDefaultTime(time: string): void {\n        this._timepickerSrv.setDefaultTimeIfAvailable(\n            time, this.data.minTime, this.data.maxTime, this.data.format, this.data.minutesGap);\n    }\n}\n","import {NgxMatTimepickerClockFace} from \"../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerAdapter} from \"../services/ngx-mat-timepicker-adapter\";\nimport {NgxMatTimepickerFormat} from \"../models/ngx-mat-timepicker-format.enum\";\nimport {NgxMatTimepickerDisabledConfig} from \"../models/ngx-mat-timepicker-disabled-config.interface\";\n//\nimport {DateTime} from \"ts-luxon\";\n\n// @dynamic\nexport class NgxMatTimepickerUtils {\n\n    static get DEFAULT_MINUTES_GAP(): number {\n        return 5;\n    }\n\n    static disableHours(hours: NgxMatTimepickerClockFace[], config: NgxMatTimepickerDisabledConfig): NgxMatTimepickerClockFace[] {\n        if (config.min || config.max) {\n\n            return hours.map(value => {\n                const hour = NgxMatTimepickerAdapter.isTwentyFour(config.format)\n                    ? value.time\n                    : NgxMatTimepickerAdapter.formatHour(value.time, config.format, config.period);\n                const currentTime = DateTime.fromObject({hour}).toFormat(NgxMatTimepickerFormat.TWELVE);\n\n                return {\n                    ...value,\n                    disabled: !NgxMatTimepickerAdapter.isTimeAvailable(currentTime, config.min, config.max, \"hours\")\n                };\n            });\n        }\n\n        return hours;\n    }\n\n    static disableMinutes(minutes: NgxMatTimepickerClockFace[], selectedHour: number, config: NgxMatTimepickerDisabledConfig) {\n        if (config.min || config.max) {\n\n            const hour = NgxMatTimepickerAdapter.formatHour(selectedHour, config.format, config.period);\n            let currentTime = DateTime.fromObject({\n                hour,\n                minute: 0\n            });\n\n            return minutes.map(value => {\n                currentTime = currentTime.set({minute: value.time});\n\n                return {\n                    ...value,\n                    disabled: !NgxMatTimepickerAdapter.isTimeAvailable(currentTime.toFormat(NgxMatTimepickerFormat.TWELVE), config.min, config.max, \"minutes\")\n                };\n            });\n        }\n\n        return minutes;\n    }\n\n    static getHours(format: number): NgxMatTimepickerClockFace[] {\n        return Array(format).fill(1).map((v, i) => {\n            const angleStep = 30;\n            const time = v + i;\n            const angle = angleStep * time;\n\n            return {time: time === 24 ? 0 : time, angle};\n        });\n    }\n\n    static getMinutes(gap = 1): NgxMatTimepickerClockFace[] {\n        const minutesCount = 60;\n        const angleStep = 360 / minutesCount;\n        const minutes = [];\n\n        for (let i = 0; i < minutesCount; i++) {\n            const angle = angleStep * i;\n            if (i % gap === 0) {\n                minutes.push({time: i, angle: angle !== 0 ? angle : 360});\n            }\n        }\n\n        return minutes;\n    }\n\n    static isDigit(e: KeyboardEvent) {\n        // Allow: backspace, delete, tab, escape, enter\n        if ([46, 8, 9, 27, 13].some(n => n === e.keyCode) ||\n            // Allow: Ctrl/cmd+A\n            (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||\n            // Allow: Ctrl/cmd+C\n            (e.keyCode === 67 && (e.ctrlKey === true || e.metaKey === true)) ||\n            // Allow: Ctrl/cmd+X\n            (e.keyCode === 88 && (e.ctrlKey === true || e.metaKey === true)) ||\n            // Allow: home, end, left, right, up, down\n            (e.keyCode >= 35 && e.keyCode <= 40)) {\n\n            return true;\n        }\n\n        return !((e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105));\n    }\n\n\n}\n","export enum NgxMatTimepickerMeasure {\n    hour = \"hour\",\n    minute = \"minute\"\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n//\nimport {NgxMatTimepickerLocaleService} from \"../services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerUnits} from \"../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerMeasure} from \"../models/ngx-mat-timepicker-measures.enum\";\n//\nimport {DateTime} from \"ts-luxon\";\n\n@Pipe({\n    name: \"timeLocalizer\"\n})\nexport class NgxMatTimepickerTimeLocalizerPipe implements PipeTransform {\n\n    private get _locale(): string {\n        return this._timepickerLocaleSrv.locale;\n    }\n\n    constructor(private _timepickerLocaleSrv: NgxMatTimepickerLocaleService) {\n    }\n\n    transform(time: number | string, timeUnit: NgxMatTimepickerUnits, isKeyboardEnabled = false): string {\n        if (time == null || time === \"\") {\n            return \"\";\n        }\n\n        switch (timeUnit) {\n            case NgxMatTimepickerUnits.HOUR: {\n                const format = (time === 0 || isKeyboardEnabled) ? \"HH\" : \"H\";\n\n                return this._formatTime(NgxMatTimepickerMeasure.hour, time, format);\n            }\n            case NgxMatTimepickerUnits.MINUTE:\n                return this._formatTime(NgxMatTimepickerMeasure.minute, time, \"mm\");\n            default:\n                throw new Error(`There is no Time Unit with type ${timeUnit}`);\n        }\n    }\n\n    private _formatTime(timeMeasure: NgxMatTimepickerMeasure, time: string | number, format: string): string {\n        try {\n            return DateTime.fromObject({[timeMeasure]: +time}).setLocale(this._locale).toFormat(format);\n        }\n        catch {\n            throw new Error(`Cannot format provided time - ${time} to locale - ${this._locale}`);\n        }\n    }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {NgxMatTimepickerUtils} from \"../utils/ngx-mat-timepicker.utils\";\n\n@Pipe({\n    name: \"minutesFormatter\"\n})\nexport class NgxMatTimepickerMinutesFormatterPipe implements PipeTransform {\n\n    transform(minute: number, gap = NgxMatTimepickerUtils.DEFAULT_MINUTES_GAP): number | string {\n        if (!minute) {\n            return minute;\n        }\n\n        return minute % gap === 0 ? minute : \"\";\n    }\n\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {NgxMatTimepickerUtils} from \"../utils/ngx-mat-timepicker.utils\";\n\n@Pipe({\n    name: \"activeMinute\"\n})\nexport class NgxMatTimepickerActiveMinutePipe implements PipeTransform {\n\n    transform(minute: number, currentMinute: number, gap: number | void, isClockFaceDisabled: boolean): boolean {\n        if (minute == null || isClockFaceDisabled) {\n            return false;\n        }\n\n        return ((currentMinute === minute) && (minute % (gap || NgxMatTimepickerUtils.DEFAULT_MINUTES_GAP) === 0));\n    }\n\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n    name: \"activeHour\"\n})\nexport class NgxMatTimepickerActiveHourPipe implements PipeTransform {\n\n    transform(hour: number, currentHour: number, isClockFaceDisabled: boolean): boolean {\n        if (hour == null || isClockFaceDisabled) {\n            return false;\n        }\n\n        return hour === currentHour;\n    }\n\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation\n} from \"@angular/core\";\nimport {NgStyle, NgTemplateOutlet, NgClass, SlicePipe} from \"@angular/common\";\nimport {ThemePalette} from \"@angular/material/core\";\nimport {MatToolbarModule} from \"@angular/material/toolbar\";\nimport {MatButtonModule} from \"@angular/material/button\";\n//\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerAdapter} from \"../../services/ngx-mat-timepicker-adapter\";\nimport {NgxMatTimepickerTimeLocalizerPipe} from \"../../pipes/ngx-mat-timepicker-time-localizer.pipe\";\nimport {NgxMatTimepickerMinutesFormatterPipe} from \"../../pipes/ngx-mat-timepicker-minutes-formatter.pipe\";\nimport {NgxMatTimepickerActiveMinutePipe} from \"../../pipes/ngx-mat-timepicker-active-minute.pipe\";\nimport {NgxMatTimepickerActiveHourPipe} from \"../../pipes/ngx-mat-timepicker-active-hour.pipe\";\n\nfunction roundAngle(angle: number, step: number): number {\n    return Math.round(angle / step) * step;\n}\n\nfunction countAngleByCords(x0: number, y0: number, x: number, y: number, currentAngle: number): number {\n    if (y > y0 && x >= x0) {// II quarter\n        return 180 - currentAngle;\n    }\n    else if (y > y0 && x < x0) {// III quarter\n        return 180 + currentAngle;\n    }\n    else if (y < y0 && x < x0) {// IV quarter\n        return 360 - currentAngle;\n    }\n    else {// I quarter\n        return currentAngle;\n    }\n}\n\nconst CLOCK_HAND_STYLES = {\n    small: {\n        height: \"75px\",\n        top: \"calc(50% - 75px)\"\n    },\n    large: {\n        height: \"103px\",\n        top: \"calc(50% - 103px)\"\n    }\n};\n\n@Component({\n    selector: \"ngx-mat-timepicker-face\",\n    templateUrl: \"./ngx-mat-timepicker-face.component.html\",\n    styleUrls: [\"./ngx-mat-timepicker-face.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        MatButtonModule,\n        NgStyle,\n        NgTemplateOutlet,\n        MatToolbarModule,\n        NgClass,\n        SlicePipe,\n        NgxMatTimepickerActiveHourPipe,\n        NgxMatTimepickerActiveMinutePipe,\n        NgxMatTimepickerMinutesFormatterPipe,\n        NgxMatTimepickerTimeLocalizerPipe\n    ]\n})\nexport class NgxMatTimepickerFaceComponent implements AfterViewInit, OnChanges, OnDestroy {\n\n    @ViewChild(\"clockFace\", {static: true}) clockFace: ElementRef;\n    @ViewChild(\"clockHand\", {static: true, read: ElementRef}) clockHand: ElementRef;\n\n    @Input() color: ThemePalette = \"primary\";\n    @Input() dottedMinutesInGap: boolean;\n    @Input() faceTime: NgxMatTimepickerClockFace[];\n    @Input() format: NgxMatTimepickerFormatType;\n    innerClockFaceSize = 85;\n    isClockFaceDisabled: boolean;\n    @Input() minutesGap: number;\n    @Input() selectedTime: NgxMatTimepickerClockFace;\n    @Output() timeChange = new EventEmitter<NgxMatTimepickerClockFace>();\n    @Output() timeSelected = new EventEmitter<number>();\n    timeUnit = NgxMatTimepickerUnits;\n    @Input() unit: NgxMatTimepickerUnits;\n\n    private _isStarted: boolean;\n    private _touchEndHandler: (e: any) => any;\n    private _touchStartHandler: (e: any) => any;\n\n    ngAfterViewInit(): void {\n        this._setClockHandPosition();\n        this._addTouchEvents();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        // tslint:disable-next-line:no-string-literal\n        const faceTimeChanges = changes[\"faceTime\"];\n        // tslint:disable-next-line:no-string-literal\n        const selectedTimeChanges = changes[\"selectedTime\"];\n\n        if ((faceTimeChanges && faceTimeChanges.currentValue)\n            && (selectedTimeChanges && selectedTimeChanges.currentValue)) {\n            /* Set time according to pass an input value */\n            this.selectedTime = this.faceTime.find(time => time.time === this.selectedTime.time);\n        }\n        if (selectedTimeChanges && selectedTimeChanges.currentValue) {\n            this._setClockHandPosition();\n        }\n        if (faceTimeChanges && faceTimeChanges.currentValue) {\n            // To avoid an error ExpressionChangedAfterItHasBeenCheckedError\n            setTimeout(() => this._selectAvailableTime());\n        }\n    }\n\n    ngOnDestroy() {\n        this._removeTouchEvents();\n    }\n\n    @HostListener(\"mousedown\", [\"$event\"])\n    onMousedown(e: any) {\n        e.preventDefault();\n        this._isStarted = true;\n    }\n\n    @HostListener(\"mouseup\", [\"$event\"])\n    onMouseup(e: any) {\n        e.preventDefault();\n        this._isStarted = false;\n    }\n\n    @HostListener(\"click\", [\"$event\"])\n    @HostListener(\"touchmove\", [\"$event.changedTouches[0]\"])\n    @HostListener(\"touchend\", [\"$event.changedTouches[0]\"])\n    @HostListener(\"mousemove\", [\"$event\"])\n    selectTime(e: any): void {\n\n        if (!this._isStarted && (e instanceof MouseEvent && e.type !== \"click\")) {\n            return;\n        }\n        const clockFaceCords = this.clockFace.nativeElement.getBoundingClientRect();\n\n        /* Get x0 and y0 of the circle */\n        const centerX = clockFaceCords.left + clockFaceCords.width / 2;\n        const centerY = clockFaceCords.top + clockFaceCords.height / 2;\n        /* Counting the arctangent and convert it to from radian to deg */\n        const arctangent = Math.atan(Math.abs(e.clientX - centerX) / Math.abs(e.clientY - centerY)) * 180 / Math.PI;\n        /* Get angle according to quadrant */\n        const circleAngle = countAngleByCords(centerX, centerY, e.clientX, e.clientY, arctangent);\n        /* Check if selected time from the inner clock face (24 hours format only) */\n        const isInnerClockChosen = this.format && this._isInnerClockFace(centerX, centerY, e.clientX, e.clientY);\n        /* Round angle according to angle step */\n        const angleStep = this.unit === NgxMatTimepickerUnits.MINUTE ? (6 * (this.minutesGap || 1)) : 30;\n        const roundedAngle = roundAngle(circleAngle, angleStep);\n        const angle = (roundedAngle || 360) + (isInnerClockChosen ? 360 : 0);\n\n        const selectedTime = this.faceTime.find(val => val.angle === angle);\n\n        if (selectedTime && !selectedTime.disabled) {\n            this.timeChange.next(selectedTime);\n\n            /* To let know whether user ended interaction with clock face */\n            if (!this._isStarted) {\n                this.timeSelected.next(selectedTime.time);\n            }\n        }\n\n    }\n\n    trackByTime(_item_: any, time: NgxMatTimepickerClockFace): string | number {\n        return time.time;\n    }\n\n    private _addTouchEvents(): void {\n        this._touchStartHandler = this.onMousedown.bind(this);\n        this._touchEndHandler = this.onMouseup.bind(this);\n\n        this.clockFace.nativeElement.addEventListener(\"touchstart\", this._touchStartHandler);\n        this.clockFace.nativeElement.addEventListener(\"touchend\", this._touchEndHandler);\n    }\n\n    private _decreaseClockHand(): void {\n        this.clockHand.nativeElement.style.height = CLOCK_HAND_STYLES.small.height;\n        this.clockHand.nativeElement.style.top = CLOCK_HAND_STYLES.small.top;\n    }\n\n    private _increaseClockHand(): void {\n        this.clockHand.nativeElement.style.height = CLOCK_HAND_STYLES.large.height;\n        this.clockHand.nativeElement.style.top = CLOCK_HAND_STYLES.large.top;\n    }\n\n    private _isInnerClockFace(x0: number, y0: number, x: number, y: number): boolean {\n        /* Detect whether time from the inner clock face or not (24 format only) */\n        return Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)) < this.innerClockFaceSize;\n    }\n\n    private _removeTouchEvents(): void {\n        this.clockFace.nativeElement.removeEventListener(\"touchstart\", this._touchStartHandler);\n        this.clockFace.nativeElement.removeEventListener(\"touchend\", this._touchEndHandler);\n    }\n\n    private _selectAvailableTime(): void {\n        const currentTime = this.faceTime.find(time => this.selectedTime.time === time.time);\n        this.isClockFaceDisabled = this.faceTime.every(time => time.disabled);\n\n        if ((currentTime && currentTime.disabled) && !this.isClockFaceDisabled) {\n            const availableTime = this.faceTime.find(time => !time.disabled);\n\n            this.timeChange.next(availableTime);\n        }\n    }\n\n    private _setClockHandPosition(): void {\n        if (NgxMatTimepickerAdapter.isTwentyFour(this.format)) {\n            if (this.selectedTime.time > 12 || this.selectedTime.time === 0) {\n                this._decreaseClockHand();\n            }\n            else {\n                this._increaseClockHand();\n            }\n        }\n\n        if (this.selectedTime) {\n            this.clockHand.nativeElement.style.transform = `rotate(${this.selectedTime.angle}deg)`;\n        }\n    }\n}\n","<!-- DEFAULT TEMPLATES - START -->\n<ng-template #hourButton\n  let-time>\n  <button mat-mini-fab\n    disableRipple\n    class=\"mat-elevation-z0\"\n    [color]=\"(time.time | activeHour: selectedTime?.time : isClockFaceDisabled) ? color : undefined\"\n    [ngStyle]=\"{'transform': 'rotateZ(-'+ time.angle +'deg)'}\"\n    [disabled]=\"time.disabled\">\n    {{time.time | timeLocalizer: timeUnit.HOUR}}\n  </button>\n</ng-template>\n<!-- DEFAULT TEMPLATES - END -->\n<div class=\"clock-face\"\n  #clockFace>\n  @if (unit !== timeUnit.MINUTE) {\n    <div\n      class=\"clock-face__container\">\n      @for (time of faceTime | slice: 0 : 12; track trackByTime($index, time)) {\n        <div class=\"clock-face__number clock-face__number--outer\"\n          [ngStyle]=\"{'transform': 'rotateZ('+ time.angle +'deg)'}\"\n          >\n          <ng-content *ngTemplateOutlet=\"hourButton; context: {$implicit: time}\"></ng-content>\n        </div>\n      }\n      @if (faceTime.length > 12) {\n        <div class=\"clock-face__inner\"\n          >\n          @for (time of faceTime | slice: 12 : 24; track trackByTime($index, time)) {\n            <div class=\"clock-face__number clock-face__number--inner\"\n              [style.top]=\"'calc(50% - ' + innerClockFaceSize + 'px)'\"\n              [ngStyle]=\"{'transform': 'rotateZ('+ time.angle +'deg)'}\"\n              [style.height.px]=\"innerClockFaceSize\"\n              >\n              <ng-content *ngTemplateOutlet=\"hourButton; context: {$implicit: time}\"></ng-content>\n            </div>\n          }\n        </div>\n      }\n    </div>\n  } @else {\n    <div class=\"clock-face__container\">\n      @for (time of faceTime; track trackByTime($index, time)) {\n        <div class=\"clock-face__number clock-face__number--outer\"\n          [ngStyle]=\"{'transform': 'rotateZ('+ time.angle +'deg)'}\"\n          >\n          <input #current\n            type=\"hidden\"\n            [value]=\"time.time | minutesFormatter: minutesGap | timeLocalizer: timeUnit.MINUTE\" />\n            <button mat-mini-fab\n              disableRipple\n              class=\"mat-elevation-z0\"\n              [class.dot]=\"dottedMinutesInGap && current.value === '' && !(time.time | activeMinute: selectedTime?.time:1:isClockFaceDisabled)\"\n              [color]=\"(time.time | activeMinute: selectedTime?.time:minutesGap:isClockFaceDisabled) ? color : undefined\"\n              [ngStyle]=\"{'transform': 'rotateZ(-'+ time.angle +'deg)'}\"\n              [disabled]=\"time.disabled\">\n              {{current.value}}\n            </button>\n          </div>\n        }\n      </div>\n    }\n    <mat-toolbar class=\"clock-face__clock-hand\"\n      [color]=\"color\"\n      [ngClass]=\"{'clock-face__clock-hand_minute': unit === timeUnit.MINUTE}\"\n      #clockHand\n      [hidden]=\"isClockFaceDisabled\">\n      @if (unit === timeUnit.MINUTE) {\n        <button mat-mini-fab\n          [color]=\"color\">\n          <span class=\"clock-face__clock-hand_minute_dot\"></span>\n        </button>\n      }\n    </mat-toolbar>\n    <mat-toolbar class=\"clock-face__center\"\n    [color]=\"color\"></mat-toolbar>\n  </div>\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from \"@angular/core\";\nimport {ThemePalette} from \"@angular/material/core\";\n//\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerPeriods} from \"../../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport {NgxMatTimepickerFaceComponent} from \"../ngx-mat-timepicker-face/ngx-mat-timepicker-face.component\";\n//\nimport {DateTime} from \"ts-luxon\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-minutes-face\",\n    templateUrl: \"./ngx-mat-timepicker-minutes-face.component.html\",\n    imports: [NgxMatTimepickerFaceComponent]\n})\nexport class NgxMatTimepickerMinutesFaceComponent implements OnChanges {\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    @Input() dottedMinutesInGap: boolean;\n    @Input() format: NgxMatTimepickerFormatType;\n    @Input() maxTime: DateTime;\n    @Input() minTime: DateTime;\n\n    @Output() minuteChange = new EventEmitter<NgxMatTimepickerClockFace>();\n    @Input() minutesGap: number;\n\n    minutesList: NgxMatTimepickerClockFace[] = [];\n    @Input() period: NgxMatTimepickerPeriods;\n    @Input() selectedHour: number;\n\n    @Input() selectedMinute: NgxMatTimepickerClockFace;\n    timeUnit = NgxMatTimepickerUnits;\n\n    private _color: ThemePalette = \"primary\";\n\n    constructor() {\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        // tslint:disable-next-line:no-string-literal\n        if (changes[\"period\"] && changes[\"period\"].currentValue) {\n            const minutes = NgxMatTimepickerUtils.getMinutes(this.minutesGap);\n            this.minutesList = NgxMatTimepickerUtils.disableMinutes(minutes, this.selectedHour, {\n                min: this.minTime,\n                max: this.maxTime,\n                format: this.format,\n                period: this.period\n            });\n        }\n    }\n}\n\n","<ngx-mat-timepicker-face [color]=\"color\"\n\t\t\t\t\t\t [dottedMinutesInGap]=\"dottedMinutesInGap\"\n\t\t\t\t\t\t [faceTime]=\"minutesList\"\n\t\t\t\t\t\t [selectedTime]=\"selectedMinute\"\n\t\t\t\t\t\t [minutesGap]=\"minutesGap\"\n\t\t\t\t\t\t (timeChange)=\"minuteChange.next($event)\"\n\t\t\t\t\t\t [unit]=\"timeUnit.MINUTE\"></ngx-mat-timepicker-face>\n","import {Directive, EventEmitter, Input, Output} from \"@angular/core\";\nimport {ThemePalette} from \"@angular/material/core\";\n//\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\n//\nimport {DateTime} from \"ts-luxon\";\n\n@Directive({\n    selector: \"[ngxMatTimepickerHoursFace]\"\n})\nexport class NgxMatTimepickerHoursFaceDirective {\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    @Input()\n    set format(newValue: NgxMatTimepickerFormatType) {\n        this._format = newValue;\n        this.hoursList = NgxMatTimepickerUtils.getHours(this._format);\n    }\n\n    get format(): NgxMatTimepickerFormatType {\n        return this._format;\n    }\n\n    @Output() hourChange = new EventEmitter<NgxMatTimepickerClockFace>();\n    @Output() hourSelected = new EventEmitter<number>();\n\n    hoursList: NgxMatTimepickerClockFace[] = [];\n    @Input() maxTime: DateTime;\n    @Input() minTime: DateTime;\n    @Input() selectedHour: NgxMatTimepickerClockFace;\n\n    protected _color: ThemePalette = \"primary\";\n    protected _format: NgxMatTimepickerFormatType = 24;\n\n    constructor() {\n    }\n\n    onTimeSelected(time: number): void {\n        this.hourSelected.next(time);\n    }\n}\n","import {ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges} from \"@angular/core\";\n//\nimport {\n    NgxMatTimepickerHoursFaceDirective\n} from \"../ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive\";\nimport {NgxMatTimepickerPeriods} from \"../../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport {NgxMatTimepickerFaceComponent} from \"../ngx-mat-timepicker-face/ngx-mat-timepicker-face.component\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-12-hours-face\",\n    templateUrl: \"ngx-mat-timepicker-12-hours-face.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgxMatTimepickerFaceComponent]\n})\nexport class NgxMatTimepicker12HoursFaceComponent extends NgxMatTimepickerHoursFaceDirective implements OnChanges {\n\n    @Input() period: NgxMatTimepickerPeriods;\n\n    constructor() {\n        super();\n        this.format = 12;\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        // tslint:disable-next-line:no-string-literal\n        if (changes[\"period\"] && changes[\"period\"].currentValue) {\n            this.hoursList = NgxMatTimepickerUtils.disableHours(this.hoursList, {\n                min: this.minTime,\n                max: this.maxTime,\n                format: this.format,\n                period: this.period\n            });\n        }\n    }\n}\n","<ngx-mat-timepicker-face [color]=\"color\"\n                     [selectedTime]=\"selectedHour\"\n                     [faceTime]=\"hoursList\"\n                     (timeChange)=\"hourChange.next($event)\"\n                     (timeSelected)=\"onTimeSelected($event)\"></ngx-mat-timepicker-face>\n","import {AfterContentInit, ChangeDetectionStrategy, Component} from \"@angular/core\";\n//\nimport {\n    NgxMatTimepickerHoursFaceDirective\n} from \"../ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport {NgxMatTimepickerFaceComponent} from \"../ngx-mat-timepicker-face/ngx-mat-timepicker-face.component\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-24-hours-face\",\n    templateUrl: \"ngx-mat-timepicker-24-hours-face.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgxMatTimepickerFaceComponent]\n})\nexport class NgxMatTimepicker24HoursFaceComponent extends NgxMatTimepickerHoursFaceDirective implements AfterContentInit {\n\n    constructor() {\n        super();\n        this.format = 24;\n    }\n\n    ngAfterContentInit() {\n        this.hoursList = NgxMatTimepickerUtils.disableHours(this.hoursList, {\n            min: this.minTime,\n            max: this.maxTime,\n            format: this.format\n        });\n    }\n}\n","<ngx-mat-timepicker-face [color]=\"color\"\n                     [selectedTime]=\"selectedHour\"\n                     [faceTime]=\"hoursList\"\n                     [format]=\"format\"\n                     (timeChange)=\"hourChange.next($event)\"\n                     (timeSelected)=\"onTimeSelected($event)\"></ngx-mat-timepicker-face>\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\nimport {animate, sequence, style, transition, trigger} from \"@angular/animations\";\nimport { NgClass } from \"@angular/common\";\nimport { FlexibleConnectedPositionStrategy, Overlay, ScrollStrategy, CdkOverlayOrigin, CdkConnectedOverlay } from \"@angular/cdk/overlay\";\n//\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerPeriods} from \"../../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\n//\nimport {DateTime} from \"ts-luxon\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-period\",\n    templateUrl: \"ngx-mat-timepicker-period.component.html\",\n    styleUrls: [\"ngx-mat-timepicker-period.component.scss\"],\n    animations: [\n        trigger(\"scaleInOut\", [\n            transition(\":enter\", [\n                style({ transform: \"scale(0)\" }),\n                animate(\".2s\", style({ transform: \"scale(1)\" })),\n                sequence([\n                    animate(\"3s\", style({ opacity: 1 })),\n                    animate(\".3s\", style({ opacity: 0 }))\n                ])\n            ])\n        ])\n    ],\n    imports: [CdkOverlayOrigin, NgClass, CdkConnectedOverlay]\n})\nexport class NgxMatTimepickerPeriodComponent {\n\n    @Input() activeTimeUnit: NgxMatTimepickerUnits;\n    @Input() format: NgxMatTimepickerFormatType;\n    @Input() hours: NgxMatTimepickerClockFace[];\n    isPeriodAvailable = true;\n    @Input() maxTime: DateTime;\n    @Input() meridiems: string[];\n    @Input() minTime: DateTime;\n    @Input() minutes: NgxMatTimepickerClockFace[];\n    overlayPositionStrategy: FlexibleConnectedPositionStrategy;\n    overlayScrollStrategy: ScrollStrategy = this._overlay.scrollStrategies.reposition();\n    @Output() periodChanged = new EventEmitter<NgxMatTimepickerPeriods>();\n    @Input() selectedHour: number | string;\n    @Input() selectedPeriod: NgxMatTimepickerPeriods;\n    timePeriod = NgxMatTimepickerPeriods;\n\n    constructor(protected _overlay: Overlay) {\n    }\n\n    animationDone(): void {\n        this.isPeriodAvailable = true;\n    }\n\n    changePeriod(period: NgxMatTimepickerPeriods): void {\n        this.isPeriodAvailable = this._isSwitchPeriodAvailable(period);\n        if (this.isPeriodAvailable) {\n            this.periodChanged.next(period);\n        }\n    }\n\n    private _getDisabledTimeByPeriod(period: NgxMatTimepickerPeriods): NgxMatTimepickerClockFace[] {\n        switch (this.activeTimeUnit) {\n            case NgxMatTimepickerUnits.HOUR:\n                return NgxMatTimepickerUtils.disableHours(this.hours, {\n                    min: this.minTime,\n                    max: this.maxTime,\n                    format: this.format,\n                    period\n                });\n            case NgxMatTimepickerUnits.MINUTE:\n                return NgxMatTimepickerUtils.disableMinutes(this.minutes, +this.selectedHour, {\n                    min: this.minTime,\n                    max: this.maxTime,\n                    format: this.format,\n                    period\n                });\n            default:\n                throw new Error(\"no such NgxMatTimepickerUnits\");\n        }\n    }\n\n    private _isSwitchPeriodAvailable(period: NgxMatTimepickerPeriods): boolean {\n        const time = this._getDisabledTimeByPeriod(period);\n\n        return !time.every(t => t.disabled);\n    }\n}\n","<div class=\"timepicker-period\"\n  cdkOverlayOrigin\n  #eventPanelOrigin=\"cdkOverlayOrigin\">\n  <button class=\"timepicker-dial__item timepicker-period__btn\"\n    [ngClass]=\"{'active': selectedPeriod === timePeriod.AM}\"\n    (click)=\"changePeriod(timePeriod.AM)\"\n  type=\"button\">{{meridiems[0]}}</button>\n  <button class=\"timepicker-dial__item timepicker-period__btn\"\n    [ngClass]=\"{'active': selectedPeriod === timePeriod.PM}\"\n    (click)=\"changePeriod(timePeriod.PM)\"\n  type=\"button\">{{meridiems[1]}}</button>\n</div>\n<ng-template\n  cdkConnectedOverlay\n  cdkConnectedOverlayPanelClass=\"todo-remove-pointer-events-if-necessary\"\n  [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n  [cdkConnectedOverlayPositionStrategy]=\"overlayPositionStrategy\"\n  [cdkConnectedOverlayOrigin]=\"eventPanelOrigin\"\n  [cdkConnectedOverlayOpen]=\"!isPeriodAvailable\">\n  @if (!isPeriodAvailable) {\n    <div class=\"timepicker-period__warning\"\n      [@scaleInOut]\n      (@scaleInOut.done)=\"animationDone()\">\n      <p>Current time would be invalid in this period.</p>\n    </div>\n  }\n</ng-template>\n","import {Injectable, Pipe, PipeTransform} from \"@angular/core\";\n//\nimport {NgxMatTimepickerUnits} from \"../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerMeasure} from \"../models/ngx-mat-timepicker-measures.enum\";\nimport {NgxMatTimepickerLocaleService} from \"../services/ngx-mat-timepicker-locale.service\";\n//\nimport {DateTime, NumberingSystem} from \"ts-luxon\";\n\n@Pipe({\n    name: \"ngxMatTimepickerParser\"\n})\n@Injectable()\nexport class NgxMatTimepickerParserPipe implements PipeTransform {\n\n    private get _locale(): string {\n        return this._timepickerLocaleSrv.locale;\n    }\n\n    private readonly _numberingSystem: NumberingSystem;\n\n    constructor(private _timepickerLocaleSrv: NgxMatTimepickerLocaleService) {\n        this._numberingSystem = DateTime.local().setLocale(this._locale).resolvedLocaleOptions().numberingSystem as NumberingSystem;\n    }\n\n    transform(time: string | number, timeUnit = NgxMatTimepickerUnits.HOUR): string {\n        if (time == null || time === \"\") {\n            return \"\";\n        }\n\n        if (!isNaN(+time)) {\n            return `${time}`;\n        }\n\n        if (timeUnit === NgxMatTimepickerUnits.MINUTE) {\n            return this._parseTime(time, \"mm\", NgxMatTimepickerMeasure.minute).toString();\n        }\n\n        return this._parseTime(time, \"HH\", NgxMatTimepickerMeasure.hour).toString();\n    }\n\n    private _parseTime(time: string | number, format: string, timeMeasure: NgxMatTimepickerMeasure): number {\n        const parsedTime = DateTime.fromFormat(String(time), format, {numberingSystem: this._numberingSystem})[timeMeasure];\n        if (!isNaN(parsedTime)) {\n            return parsedTime;\n        }\n\n        throw new Error(`Cannot parse time - ${time}`);\n    }\n\n}\n","import {Directive, ElementRef, Inject, Input, OnChanges, OnDestroy, Optional, DOCUMENT} from \"@angular/core\";\n\n\n@Directive({\n    selector: \"[ngxMatTimepickerAutofocus]\"\n})\nexport class NgxMatTimepickerAutofocusDirective implements OnChanges, OnDestroy {\n\n    @Input(\"ngxMatTimepickerAutofocus\") isFocusActive: boolean;\n\n    private _activeElement: HTMLElement;\n\n    constructor(private _element: ElementRef, @Optional() @Inject(DOCUMENT) private _document: any) {\n        this._activeElement = this._document.activeElement;\n    }\n\n    ngOnChanges() {\n        if (this.isFocusActive) {\n            // To avoid ExpressionChangedAfterItHasBeenCheckedError;\n            setTimeout(() => this._element.nativeElement.focus({preventScroll: true}));\n        }\n    }\n\n    ngOnDestroy() {\n        // To avoid ExpressionChangedAfterItHasBeenCheckedError;\n        setTimeout(() => this._activeElement.focus({preventScroll: true}));\n    }\n}\n","import {Component, EventEmitter, OnDestroy, Input, Output, ElementRef, AfterViewInit} from \"@angular/core\";\nimport {FormsModule} from \"@angular/forms\";\nimport {NgClass} from \"@angular/common\";\n//\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerParserPipe} from \"../../pipes/ngx-mat-timepicker-parser.pipe\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport {NgxMatTimepickerTimeLocalizerPipe} from \"../../pipes/ngx-mat-timepicker-time-localizer.pipe\";\nimport {NgxMatTimepickerAutofocusDirective} from \"../../directives/ngx-mat-timepicker-autofocus.directive\";\n\nfunction retainSelection(this: HTMLInputElement) {\n    this.selectionStart = this.selectionEnd;\n}\n\n@Component({\n    selector: \"ngx-mat-timepicker-dial-control\",\n    templateUrl: \"ngx-mat-timepicker-dial-control.component.html\",\n    styleUrls: [\"ngx-mat-timepicker-dial-control.component.scss\"],\n    providers: [NgxMatTimepickerParserPipe],\n    imports: [\n        FormsModule,\n        NgClass,\n        NgxMatTimepickerAutofocusDirective,\n        NgxMatTimepickerParserPipe,\n        NgxMatTimepickerTimeLocalizerPipe\n    ]\n})\nexport class NgxMatTimepickerDialControlComponent implements AfterViewInit, OnDestroy {\n\n    private get _selectedTime(): NgxMatTimepickerClockFace | undefined {\n        if (!!this.time) {\n            return this.timeList.find(t => t.time === +this.time);\n        }\n\n        return undefined;\n    }\n\n    @Input() disabled: boolean;\n\n    @Output() focused = new EventEmitter<void>();\n\n    @Input() isActive: boolean;\n\n    @Input() isEditable: boolean;\n\n    @Input() minutesGap: number;\n\n    previousTime: number | string;\n\n    @Input() time: string;\n\n    @Output() timeChanged = new EventEmitter<NgxMatTimepickerClockFace>();\n\n    @Input() timeList: NgxMatTimepickerClockFace[];\n\n    @Input() timeUnit: NgxMatTimepickerUnits;\n\n    @Output() timeUnitChanged = new EventEmitter<NgxMatTimepickerUnits>();\n\n    @Output() unfocused = new EventEmitter<void>();\n\n    constructor(private _elRef: ElementRef, private _timeParserPipe: NgxMatTimepickerParserPipe) {\n    }\n\n    changeTimeByKeyboard(e: any): void {\n        const char = String.fromCharCode(e.keyCode);\n\n        if (isTimeDisabledToChange(this.time, char, this.timeList)) {\n            e.preventDefault();\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this._elRef.nativeElement.querySelector(\"input\").addEventListener(\"select\", retainSelection, false);\n    }\n\n    ngOnDestroy(): void {\n        this._elRef.nativeElement.querySelector(\"input\").removeEventListener(\"select\", retainSelection);\n    }\n\n    onKeydown(e: any): void {\n        if (!NgxMatTimepickerUtils.isDigit(e)) {\n            e.preventDefault();\n        }\n        else {\n            this._changeTimeByArrow(e.keyCode);\n        }\n    }\n\n    onModelChange(value: string): void {\n        this.time = this._timeParserPipe.transform(value, this.timeUnit);\n    }\n\n    saveTimeAndChangeTimeUnit(event: FocusEvent, unit: NgxMatTimepickerUnits): void {\n        event.preventDefault();\n        this.previousTime = this.time;\n        this.timeUnitChanged.next(unit);\n        this.focused.next();\n    }\n\n    updateTime(): void {\n        if (this._selectedTime) {\n            this.timeChanged.next(this._selectedTime);\n            this.previousTime = this._selectedTime.time;\n        }\n    }\n\n    private _addTime(amount: number): string {\n        return `0${+this.time + amount}`.substr(-2);\n    }\n\n    private _changeTimeByArrow(keyCode: number): void {\n        let time: string;\n\n        // arrow up\n        if (keyCode === 38) {\n            time = this._addTime(this.minutesGap || 1);\n        }\n        // arrow down\n        else if (keyCode === 40) {\n            time = this._addTime(-1 * (this.minutesGap || 1));\n        }\n\n        if (!isTimeUnavailable(time, this.timeList)) {\n            this.time = time;\n            this.updateTime();\n        }\n    }\n\n}\n\nfunction isTimeDisabledToChange(currentTime: string, nextTime: string, timeList: NgxMatTimepickerClockFace[]): boolean | undefined {\n    const isNumber = /\\d/.test(nextTime);\n\n    if (isNumber) {\n        const time = currentTime + nextTime;\n\n        return isTimeUnavailable(time, timeList);\n    }\n\n    return undefined;\n}\n\nfunction isTimeUnavailable(time: string, timeList: NgxMatTimepickerClockFace[]): boolean {\n    const selectedTime = timeList.find(value => value.time === +time);\n\n    return !selectedTime || (selectedTime && selectedTime.disabled);\n}\n","@if (!isEditable) {\n  <input class=\"timepicker-dial__control timepicker-dial__item\"\n    [ngClass]=\"{'active': isActive}\"\n    [ngModel]=\"time | timeLocalizer: timeUnit: true\"\n    (ngModelChange)=\"time = $event\"\n    [disabled]=\"disabled\"\n    (input)=\"updateTime()\"\n    (focus)=\"saveTimeAndChangeTimeUnit($event, timeUnit)\"\n    readonly\n    [ngxMatTimepickerAutofocus]=\"isActive\"\n    >\n} @else {\n  <input class=\"timepicker-dial__control timepicker-dial__item timepicker-dial__control_editable\"\n    [ngClass]=\"{'active': isActive}\"\n    [ngModel]=\"time | ngxMatTimepickerParser: timeUnit | timeLocalizer: timeUnit : true\"\n    (ngModelChange)=\"onModelChange($event)\"\n    [disabled]=\"disabled\"\n    (input)=\"updateTime()\"\n    (focus)=\"saveTimeAndChangeTimeUnit($event, timeUnit)\"\n    [ngxMatTimepickerAutofocus]=\"isActive\"\n    (keydown)=\"onKeydown($event)\"\n    (keypress)=\"changeTimeByKeyboard($event)\">\n  }\n\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n    TemplateRef\n} from \"@angular/core\";\nimport {ThemePalette} from \"@angular/material/core\";\nimport { NgClass, NgTemplateOutlet } from \"@angular/common\";\n//\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerPeriods} from \"../../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerLocaleService} from \"../../services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport { NgxMatTimepickerPeriodComponent } from \"../ngx-mat-timepicker-period/ngx-mat-timepicker-period.component\";\nimport { NgxMatTimepickerDialControlComponent } from \"../ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component\";\n//\nimport {DateTime, Info} from \"ts-luxon\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-dial\",\n    templateUrl: \"ngx-mat-timepicker-dial.component.html\",\n    styleUrls: [\"ngx-mat-timepicker-dial.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgxMatTimepickerDialControlComponent, NgxMatTimepickerPeriodComponent, NgClass, NgTemplateOutlet]\n})\nexport class NgxMatTimepickerDialComponent implements OnChanges {\n\n    @Input() activeTimeUnit: NgxMatTimepickerUnits;\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    get hourString() {\n        return `${this.hour}`;\n    }\n\n\n    get minuteString() {\n        return `${this.minute}`;\n    }\n\n    private get _locale(): string {\n        return this._localeSrv.locale;\n    }\n\n    @Input() editableHintTmpl: TemplateRef<Node>;\n    @Input() format: NgxMatTimepickerFormatType;\n    @Input() hour: number | string;\n    @Output() hourChanged = new EventEmitter<NgxMatTimepickerClockFace>();\n\n    hours: NgxMatTimepickerClockFace[];\n    @Input() hoursOnly: boolean;\n    @Input() isEditable: boolean;\n\n    isHintVisible: boolean;\n    @Input() maxTime: DateTime;\n    meridiems = Info.meridiems({locale: this._locale});\n    @Input() minTime: DateTime;\n    @Input() minute: number | string;\n    @Output() minuteChanged = new EventEmitter<NgxMatTimepickerClockFace>();\n    minutes: NgxMatTimepickerClockFace[];\n    @Input() minutesGap: number;\n    @Input() period: NgxMatTimepickerPeriods;\n\n    @Output() periodChanged = new EventEmitter<NgxMatTimepickerPeriods>();\n\n    timeUnit = NgxMatTimepickerUnits;\n    @Output() timeUnitChanged = new EventEmitter<NgxMatTimepickerUnits>();\n\n    private _color: ThemePalette = \"primary\";\n\n    constructor(private _localeSrv: NgxMatTimepickerLocaleService) {\n    }\n\n    changeHour(hour: NgxMatTimepickerClockFace): void {\n        this.hourChanged.next(hour);\n    }\n\n    changeMinute(minute: NgxMatTimepickerClockFace): void {\n        this.minuteChanged.next(minute);\n    }\n\n    changePeriod(period: NgxMatTimepickerPeriods): void {\n        this.periodChanged.next(period);\n    }\n\n    changeTimeUnit(unit: NgxMatTimepickerUnits): void {\n        this.timeUnitChanged.next(unit);\n    }\n\n    hideHint(): void {\n        this.isHintVisible = false;\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        // tslint:disable-next-line:no-string-literal\n        const periodChanged = changes[\"period\"] && changes[\"period\"].currentValue;\n        // tslint:disable-next-line:no-string-literal\n        if (periodChanged || changes[\"format\"] && changes[\"format\"].currentValue) {\n            const hours = NgxMatTimepickerUtils.getHours(this.format);\n\n            this.hours = NgxMatTimepickerUtils.disableHours(hours, {\n                min: this.minTime,\n                max: this.maxTime,\n                format: this.format,\n                period: this.period\n            });\n        }\n        // tslint:disable-next-line:no-string-literal\n        if (periodChanged || changes[\"hour\"] && changes[\"hour\"].currentValue) {\n            const minutes = NgxMatTimepickerUtils.getMinutes(this.minutesGap);\n\n            this.minutes = NgxMatTimepickerUtils.disableMinutes(minutes, +this.hour, {\n                min: this.minTime,\n                max: this.maxTime,\n                format: this.format,\n                period: this.period\n            });\n        }\n    }\n\n    showHint(): void {\n        this.isHintVisible = true;\n    }\n}\n","<div class=\"timepicker-dial\">\n  <div class=\"timepicker-dial__container\">\n    <div class=\"timepicker-dial__time\">\n      <ngx-mat-timepicker-dial-control [timeList]=\"hours\"\n        [time]=\"hourString\"\n        [timeUnit]=\"timeUnit.HOUR\"\n        [isActive]=\"activeTimeUnit === timeUnit.HOUR\"\n        [isEditable]=\"isEditable\"\n        (timeUnitChanged)=\"changeTimeUnit($event)\"\n        (timeChanged)=\"changeHour($event)\"\n        (focused)=\"showHint()\"\n        (unfocused)=\"hideHint()\">\n\n      </ngx-mat-timepicker-dial-control>\n      <span>:</span>\n      <ngx-mat-timepicker-dial-control [timeList]=\"minutes\"\n        [time]=\"minuteString\"\n        [timeUnit]=\"timeUnit.MINUTE\"\n        [isActive]=\"activeTimeUnit === timeUnit.MINUTE\"\n        [isEditable]=\"isEditable\"\n        [minutesGap]=\"minutesGap\"\n        [disabled]=\"hoursOnly\"\n        (timeUnitChanged)=\"changeTimeUnit($event)\"\n        (timeChanged)=\"changeMinute($event)\"\n        (focused)=\"showHint()\"\n        (unfocused)=\"hideHint()\">\n\n      </ngx-mat-timepicker-dial-control>\n    </div>\n    @if (format !== 24) {\n      <ngx-mat-timepicker-period class=\"timepicker-dial__period\"\n        [selectedPeriod]=\"period\"\n        [activeTimeUnit]=\"activeTimeUnit\"\n        [maxTime]=\"maxTime\"\n        [minTime]=\"minTime\"\n        [format]=\"format\"\n        [hours]=\"hours\"\n        [minutes]=\"minutes\"\n        [selectedHour]=\"hour\"\n        [meridiems]=\"meridiems\"\n      (periodChanged)=\"changePeriod($event)\"></ngx-mat-timepicker-period>\n    }\n  </div>\n  @if (isEditable || editableHintTmpl) {\n    <div\n      [ngClass]=\"{'timepicker-dial__hint-container--hidden': !isHintVisible}\">\n      <ng-container *ngTemplateOutlet=\"editableHintTmpl ? editableHintTmpl : editableHintDefault\"></ng-container>\n      <ng-template #editableHintDefault>\n        <small class=\"timepicker-dial__hint\"> * use arrows (<span>&#8645;</span>) to change the time</small>\n      </ng-template>\n    </div>\n  }\n</div>\n","import {Component, Input} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-content\",\n    templateUrl: \"./ngx-mat-timepicker-content.component.html\",\n    imports: [NgTemplateOutlet]\n})\nexport class NgxMatTimepickerContentComponent {\n\n    @Input() appendToInput: boolean;\n    @Input() inputElement: any;\n\n}\n","@if (appendToInput) {\n  <div>\n    <ng-container *ngTemplateOutlet=\"timepickerOutlet\"></ng-container>\n  </div>\n} @else {\n  <ng-container *ngTemplateOutlet=\"timepickerOutlet\"></ng-container>\n}\n<ng-template #timepickerOutlet>\n  <ng-content></ng-content>\n</ng-template>\n","import {Component, Inject, ViewEncapsulation} from \"@angular/core\";\nimport {NgClass, NgTemplateOutlet, AsyncPipe} from \"@angular/common\";\nimport {MAT_DIALOG_DATA, MatDialogRef, MatDialogModule} from \"@angular/material/dialog\";\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {MatToolbarModule} from \"@angular/material/toolbar\";\n//\nimport {NgxMatTimepickerBaseDirective} from \"../../directives/ngx-mat-timepicker-base.directive\";\nimport {NgxMatTimepickerConfig} from \"../../models/ngx-mat-timepicker-config.interface\";\nimport {NgxMatTimepickerLocaleService} from \"../../services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerService} from \"../../services/ngx-mat-timepicker.service\";\nimport {NgxMatTimepickerEventService} from \"../../services/ngx-mat-timepicker-event.service\";\nimport {\n    NgxMatTimepickerMinutesFaceComponent\n} from \"../ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component\";\nimport {\n    NgxMatTimepicker12HoursFaceComponent\n} from \"../ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component\";\nimport {\n    NgxMatTimepicker24HoursFaceComponent\n} from \"../ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component\";\nimport {NgxMatTimepickerDialComponent} from \"../ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component\";\nimport {NgxMatTimepickerContentComponent} from \"../ngx-mat-timepicker-content/ngx-mat-timepicker-content.component\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-dialog\",\n    styleUrls: [\"./ngx-mat-timepicker-dialog.component.scss\"],\n    templateUrl: \"./ngx-mat-timepicker-dialog.component.html\",\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        AsyncPipe,\n        // Common\n        NgClass,\n        NgTemplateOutlet,\n        // Material\n        MatButtonModule,\n        MatDialogModule,\n        MatToolbarModule,\n        // NgxMatTimepicker\n        NgxMatTimepickerContentComponent,\n        NgxMatTimepickerDialComponent,\n        NgxMatTimepicker24HoursFaceComponent,\n        NgxMatTimepicker12HoursFaceComponent,\n        NgxMatTimepickerMinutesFaceComponent\n    ]\n})\nexport class NgxMatTimepickerDialogComponent extends NgxMatTimepickerBaseDirective {\n\n    constructor(@Inject(MAT_DIALOG_DATA) public override data: NgxMatTimepickerConfig,\n                protected _dialogRef: MatDialogRef<NgxMatTimepickerDialogComponent>,\n                timepickerSrv: NgxMatTimepickerService,\n                eventSrv: NgxMatTimepickerEventService,\n                timepickerLocaleSrv: NgxMatTimepickerLocaleService) {\n\n        super(timepickerSrv, eventSrv, timepickerLocaleSrv, data);\n    }\n\n    override close(): void {\n        this._dialogRef.close();\n    }\n\n}\n","<ng-template #cancelBtnDefault>\n  <button mat-button\n    [color]=\"color\">CANCEL\n  </button>\n</ng-template>\n<ng-template #confirmBtnDefault>\n  <button mat-button\n    [color]=\"color\">OK\n  </button>\n</ng-template>\n<div mat-dialog-content>\n  <ngx-mat-timepicker-content [appendToInput]=\"data.appendToInput\"\n    [inputElement]=\"data.inputElement\">\n    <div class=\"timepicker\"\n      [ngClass]=\"data.timepickerClass\">\n      <mat-toolbar [color]=\"color\"\n        [class.is-editable]=\"data.enableKeyboardInput\"\n        class=\"timepicker-header\">\n        <ngx-mat-timepicker-dial [color]=\"color\"\n          [format]=\"data.format\"\n          [hour]=\"(selectedHour | async)?.time\"\n          [minute]=\"(selectedMinute | async)?.time\"\n          [period]=\"selectedPeriod | async\"\n          [activeTimeUnit]=\"activeTimeUnit\"\n          [minTime]=\"data.minTime\"\n          [maxTime]=\"data.maxTime\"\n          [isEditable]=\"data.enableKeyboardInput\"\n          [editableHintTmpl]=\"data.editableHintTmpl\"\n          [minutesGap]=\"data.minutesGap\"\n          [hoursOnly]=\"data.hoursOnly\"\n          (periodChanged)=\"changePeriod($event)\"\n          (timeUnitChanged)=\"changeTimeUnit($event)\"\n          (hourChanged)=\"onHourChange($event)\"\n          (minuteChanged)=\"onMinuteChange($event)\"\n        ></ngx-mat-timepicker-dial>\n      </mat-toolbar>\n      <div class=\"timepicker__main-content\">\n        <div class=\"timepicker__body\"\n          >\n          @switch (activeTimeUnit) {\n            @case (timeUnit.HOUR) {\n              <div>\n                @if (data.format === 24) {\n                  <ngx-mat-timepicker-24-hours-face\n                    [color]=\"color\"\n                    (hourChange)=\"onHourChange($event)\"\n                    [selectedHour]=\"selectedHour | async\"\n                    [minTime]=\"data.minTime\"\n                    [maxTime]=\"data.maxTime\"\n                    [format]=\"data.format\"\n                  (hourSelected)=\"onHourSelected($event)\"></ngx-mat-timepicker-24-hours-face>\n                } @else {\n                  <ngx-mat-timepicker-12-hours-face\n                    [color]=\"color\"\n                    (hourChange)=\"onHourChange($event)\"\n                    [selectedHour]=\"selectedHour | async\"\n                    [period]=\"selectedPeriod | async\"\n                    [minTime]=\"data.minTime\"\n                    [maxTime]=\"data.maxTime\"\n                  (hourSelected)=\"onHourSelected($event)\"></ngx-mat-timepicker-12-hours-face>\n                }\n              </div>\n            }\n            @case (timeUnit.MINUTE) {\n              <ngx-mat-timepicker-minutes-face\n                [color]=\"color\"\n                [dottedMinutesInGap]=\"data.dottedMinutesInGap\"\n                [selectedMinute]=\"selectedMinute | async\"\n                [selectedHour]=\"(selectedHour | async)?.time\"\n                [minTime]=\"data.minTime\"\n                [maxTime]=\"data.maxTime\"\n                [format]=\"data.format\"\n                [period]=\"selectedPeriod | async\"\n                [minutesGap]=\"data.minutesGap\"\n              (minuteChange)=\"onMinuteChange($event)\"></ngx-mat-timepicker-minutes-face>\n            }\n          }\n        </div>\n      </div>\n    </div>\n  </ngx-mat-timepicker-content>\n</div>\n<div mat-dialog-actions>\n  <div (click)=\"close()\">\n    <ng-container\n    *ngTemplateOutlet=\"data.cancelBtnTmpl ? data.cancelBtnTmpl : cancelBtnDefault\"></ng-container>\n  </div>\n  <div (click)=\"setTime()\">\n    <ng-container\n    *ngTemplateOutlet=\"data.confirmBtnTmpl ? data.confirmBtnTmpl : confirmBtnDefault\"></ng-container>\n  </div>\n</div>\n","import {Component, Inject, ViewEncapsulation} from \"@angular/core\";\nimport { NgClass, NgTemplateOutlet, AsyncPipe } from \"@angular/common\";\nimport {MatToolbarModule} from \"@angular/material/toolbar\";\nimport {A11yModule} from \"@angular/cdk/a11y\";\nimport {MatButtonModule} from \"@angular/material/button\";\n//\nimport {NgxMatTimepickerLocaleService} from \"../../services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerService} from \"../../services/ngx-mat-timepicker.service\";\nimport {NgxMatTimepickerEventService} from \"../../services/ngx-mat-timepicker-event.service\";\nimport {NgxMatTimepickerConfig} from \"../../models/ngx-mat-timepicker-config.interface\";\nimport {NgxMatTimepickerBaseDirective} from \"../../directives/ngx-mat-timepicker-base.directive\";\nimport {NGX_MAT_TIMEPICKER_CONFIG} from \"../../tokens/ngx-mat-timepicker-config.token\";\nimport {\n    NgxMatTimepickerMinutesFaceComponent\n} from \"../ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component\";\nimport {\n    NgxMatTimepicker12HoursFaceComponent\n} from \"../ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component\";\nimport {\n    NgxMatTimepicker24HoursFaceComponent\n} from \"../ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component\";\nimport {NgxMatTimepickerDialComponent} from \"../ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component\";\nimport {NgxMatTimepickerContentComponent} from \"../ngx-mat-timepicker-content/ngx-mat-timepicker-content.component\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-standalone\",\n    templateUrl: \"ngx-mat-timepicker-standalone.component.html\",\n    styleUrls: [\"ngx-mat-timepicker-standalone.component.scss\"],\n    // tslint:disable-next-line:no-host-metadata-property\n    host: {\n        \"[class.mat-app-background]\": \"true\"\n    },\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n    MatButtonModule,\n    A11yModule,\n    NgxMatTimepickerContentComponent,\n    NgClass,\n    MatToolbarModule,\n    NgxMatTimepickerDialComponent,\n    NgxMatTimepicker24HoursFaceComponent,\n    NgxMatTimepicker12HoursFaceComponent,\n    NgxMatTimepickerMinutesFaceComponent,\n    NgTemplateOutlet,\n    AsyncPipe\n]\n})\nexport class NgxMatTimepickerStandaloneComponent extends NgxMatTimepickerBaseDirective {\n\n    constructor(@Inject(NGX_MAT_TIMEPICKER_CONFIG) public override data: NgxMatTimepickerConfig,\n                timepickerSrv: NgxMatTimepickerService,\n                eventSrv: NgxMatTimepickerEventService,\n                timepickerLocaleSrv: NgxMatTimepickerLocaleService) {\n        super(timepickerSrv, eventSrv, timepickerLocaleSrv, data);\n    }\n\n    override close(): void {\n        this.data.timepickerBaseRef.close();\n    }\n}\n","<ng-template #cancelBtnDefault>\n  <button mat-button\n    [color]=\"color\">CANCEL\n  </button>\n</ng-template>\n<ng-template #confirmBtnDefault>\n  <button mat-button\n    [color]=\"color\">OK\n  </button>\n</ng-template>\n<div cdkTrapFocus>\n  <ngx-mat-timepicker-content [appendToInput]=\"data.appendToInput\"\n    [inputElement]=\"data.inputElement\">\n    <div class=\"timepicker\"\n      [ngClass]=\"data.timepickerClass\">\n      <mat-toolbar [color]=\"color\"\n        [class.is-editable]=\"data.enableKeyboardInput\"\n        class=\"timepicker-header\">\n        <ngx-mat-timepicker-dial [color]=\"color\"\n          [format]=\"data.format\"\n          [hour]=\"(selectedHour | async)?.time\"\n          [minute]=\"(selectedMinute | async)?.time\"\n          [period]=\"selectedPeriod | async\"\n          [activeTimeUnit]=\"activeTimeUnit\"\n          [minTime]=\"data.minTime\"\n          [maxTime]=\"data.maxTime\"\n          [isEditable]=\"data.enableKeyboardInput\"\n          [editableHintTmpl]=\"data.editableHintTmpl\"\n          [minutesGap]=\"data.minutesGap\"\n          [hoursOnly]=\"data.hoursOnly\"\n          (periodChanged)=\"changePeriod($event)\"\n          (timeUnitChanged)=\"changeTimeUnit($event)\"\n          (hourChanged)=\"onHourChange($event)\"\n          (minuteChanged)=\"onMinuteChange($event)\">\n        </ngx-mat-timepicker-dial>\n      </mat-toolbar>\n      <div class=\"timepicker__main-content\">\n        <div class=\"timepicker__body\"\n          >\n          @switch (activeTimeUnit) {\n            @case (timeUnit.HOUR) {\n              <div>\n                @if (data.format === 24) {\n                  <ngx-mat-timepicker-24-hours-face\n                    [color]=\"color\"\n                    (hourChange)=\"onHourChange($event)\"\n                    [selectedHour]=\"selectedHour | async\"\n                    [minTime]=\"data.minTime\"\n                    [maxTime]=\"data.maxTime\"\n                    [format]=\"data.format\"\n                  (hourSelected)=\"onHourSelected($event)\"></ngx-mat-timepicker-24-hours-face>\n                } @else {\n                  <ngx-mat-timepicker-12-hours-face\n                    [color]=\"color\"\n                    (hourChange)=\"onHourChange($event)\"\n                    [selectedHour]=\"selectedHour | async\"\n                    [period]=\"selectedPeriod | async\"\n                    [minTime]=\"data.minTime\"\n                    [maxTime]=\"data.maxTime\"\n                  (hourSelected)=\"onHourSelected($event)\"></ngx-mat-timepicker-12-hours-face>\n                }\n              </div>\n            }\n            @case (timeUnit.MINUTE) {\n              <ngx-mat-timepicker-minutes-face\n                [dottedMinutesInGap]=\"data.dottedMinutesInGap\"\n                [color]=\"color\"\n                [selectedMinute]=\"selectedMinute | async\"\n                [selectedHour]=\"(selectedHour | async)?.time\"\n                [minTime]=\"data.minTime\"\n                [maxTime]=\"data.maxTime\"\n                [format]=\"data.format\"\n                [period]=\"selectedPeriod | async\"\n                [minutesGap]=\"data.minutesGap\"\n              (minuteChange)=\"onMinuteChange($event)\"></ngx-mat-timepicker-minutes-face>\n            }\n          }\n        </div>\n      </div>\n    </div>\n  </ngx-mat-timepicker-content>\n\n  <div class=\"ngx-mat-timepicker-standalone-actions\">\n    <div (click)=\"close()\">\n      <ng-container\n      *ngTemplateOutlet=\"data.cancelBtnTmpl ? data.cancelBtnTmpl : cancelBtnDefault\"></ng-container>\n    </div>\n    <div (click)=\"setTime()\">\n      <ng-container\n      *ngTemplateOutlet=\"data.confirmBtnTmpl ? data.confirmBtnTmpl : confirmBtnDefault\"></ng-container>\n    </div>\n  </div>\n</div>\n","import {coerceBooleanProperty} from \"@angular/cdk/coercion\";\nimport {Component, EventEmitter, HostBinding, Input, Output, TemplateRef} from \"@angular/core\";\nimport {CdkOverlayOrigin, ConnectedPosition, OverlayRef, CdkConnectedOverlay} from \"@angular/cdk/overlay\";\nimport {MatDialog, MatDialogRef} from \"@angular/material/dialog\";\nimport {ThemePalette} from \"@angular/material/core\";\n//\nimport {NgxMatTimepickerConfig} from \"../../models/ngx-mat-timepicker-config.interface\";\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerAdapter} from \"../../services/ngx-mat-timepicker-adapter\";\nimport {NgxMatTimepickerDirective} from \"../../directives/ngx-mat-timepicker.directive\";\nimport {NgxMatTimepickerRef} from \"../../models/ngx-mat-timepicker-ref.interface\";\nimport {NgxMatTimepickerDialogComponent} from \"../ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component\";\nimport {NGX_MAT_TIMEPICKER_CONFIG} from \"../../tokens/ngx-mat-timepicker-config.token\";\n//\nimport {DateTime} from \"ts-luxon\";\nimport {BehaviorSubject} from \"rxjs\";\nimport {\n    NgxMatTimepickerStandaloneComponent\n} from \"../ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component\";\n\nlet config: NgxMatTimepickerConfig;\n\n@Component({\n    selector: \"ngx-mat-timepicker-provider\",\n    template: `\n\t\t<ngx-mat-timepicker-standalone></ngx-mat-timepicker-standalone>`,\n    providers: [\n        {\n            provide: NGX_MAT_TIMEPICKER_CONFIG,\n            useFactory() {\n                return config;\n            }\n        }\n    ],\n    imports: [NgxMatTimepickerStandaloneComponent]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NgxMatTimepickerProvider {\n}\n\n@Component({\n    selector: \"ngx-mat-timepicker\",\n    template: `\n\t\t<ng-template\n\t\t\t\tcdkConnectedOverlay\n\t\t\t\t[cdkConnectedOverlayPositions]=\"overlayPositions\"\n\t\t\t\t[cdkConnectedOverlayHasBackdrop]=\"!0\"\n\t\t\t\tcdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n\t\t\t\t(backdropClick)=\"close()\"\n\t\t\t\t[cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n\t\t\t\t[cdkConnectedOverlayOpen]=\"showPicker\">\n\t\t\t<ngx-mat-timepicker-provider></ngx-mat-timepicker-provider>\n\t\t</ng-template>\n    `,\n    imports: [CdkConnectedOverlay, NgxMatTimepickerProvider]\n})\nexport class NgxMatTimepickerComponent implements NgxMatTimepickerRef {\n\n    static nextId: number = 0;\n\n    @Input()\n    set appendToInput(newValue: boolean | string | void) {\n        this._appendToInput = coerceBooleanProperty(newValue);\n    }\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    get disabled(): boolean {\n        return this._timepickerInput && this._timepickerInput.disabled;\n    }\n\n\n    @Input()\n    set dottedMinutesInGap(newValue: boolean | \"\") {\n        this._dottedMinutesInGap = coerceBooleanProperty(newValue);\n    }\n\n    get dottedMinutesInGap(): boolean {\n        return this._dottedMinutesInGap;\n    }\n\n    @Input()\n    set enableKeyboardInput(newValue: boolean | string | void) {\n        this._enableKeyboardInput = coerceBooleanProperty(newValue);\n    }\n\n    get enableKeyboardInput(): boolean {\n        return this._enableKeyboardInput;\n    }\n\n    get format(): NgxMatTimepickerFormatType {\n        return this._timepickerInput ? this._timepickerInput.format : this._format;\n    }\n\n    @Input()\n    set format(value: NgxMatTimepickerFormatType) {\n        this._format = NgxMatTimepickerAdapter.isTwentyFour(value) ? 24 : 12;\n    }\n\n    get inputElement(): HTMLElement {\n        return this._timepickerInput && this._timepickerInput.element;\n    }\n\n    get maxTime(): DateTime {\n        return this._timepickerInput ? (this._timepickerInput.max as DateTime) : this.max;\n    }\n\n    get minTime(): DateTime {\n        return this._timepickerInput ? (this._timepickerInput.min as DateTime) : this.min;\n    }\n\n    get minutesGap(): number {\n        return this._minutesGap;\n    }\n\n    @Input()\n    set minutesGap(gap: number) {\n        if (gap == null) {\n            return;\n        }\n        gap = Math.floor(gap);\n        this._minutesGap = gap <= 59 ? gap : 1;\n    }\n\n    get overlayOrigin(): CdkOverlayOrigin {\n        return this._timepickerInput ? this._timepickerInput.cdkOverlayOrigin : void 0;\n    }\n\n    get time(): string {\n        return this._timepickerInput && this._timepickerInput.value;\n    }\n\n    @Input() cancelBtnTmpl: TemplateRef<Node>;\n    @Output() closed = new EventEmitter<void>();\n    @Input() confirmBtnTmpl: TemplateRef<Node>;\n    @Input() defaultTime: string;\n    @Input() disableAnimation: boolean;\n    @Input() editableHintTmpl: TemplateRef<Node>;\n    @Output() hourSelected = new EventEmitter<number>();\n    @Input() hoursOnly = false;\n    @HostBinding(\"id\") id: string = `ngx_mat_timepicker_${++NgxMatTimepickerComponent.nextId}`;\n    @Input() isEsc = !0;\n    @Input() max: DateTime;\n    @Input() min: DateTime;\n    @Output() opened = new EventEmitter<void>();\n    overlayPositions: ConnectedPosition[] = [\n        {\n            originX: \"center\",\n            originY: \"bottom\",\n            overlayX: \"center\",\n            overlayY: \"top\",\n            offsetY: 0\n        },\n        {\n            originX: \"center\",\n            originY: \"top\",\n            overlayX: \"center\",\n            overlayY: \"bottom\",\n            offsetY: 0\n        }\n    ];\n    @Input() preventOverlayClick: boolean;\n    showPicker: boolean = !1;\n    @Output() timeChanged = new EventEmitter<string>();\n    @Input() timepickerClass: string;\n    @Output() timeSet = new EventEmitter<string>();\n    timeUpdated = new BehaviorSubject<string>(void 0); // used in the dialog, check if a better approach can be used\n\n    private _appendToInput: boolean = !1;\n    private _color: ThemePalette = \"primary\";\n    private _dialogRef: MatDialogRef<NgxMatTimepickerDialogComponent, void>;\n    private _dottedMinutesInGap: boolean = !1;\n    private _enableKeyboardInput: boolean = !1;\n    private _format: NgxMatTimepickerFormatType = 12;\n    private _minutesGap: number;\n    private _overlayRef: OverlayRef;\n    private _timepickerInput: NgxMatTimepickerDirective;\n\n    constructor(private _dialog: MatDialog) {\n    }\n\n    close(): void {\n        if (this._appendToInput) {\n            this._overlayRef && this._overlayRef.dispose();\n        }\n        else {\n            this._dialogRef && this._dialogRef.close();\n        }\n        this.inputElement.focus(); // Fix ExpressionHasChangedAfterCheck error on overlay destroy\n        this.showPicker = !1;\n        this.closed.emit();\n    }\n\n    open(): void {\n        // Set data to be injected\n        config = {\n            timepickerBaseRef: this,\n            time: this.time,\n            defaultTime: this.defaultTime,\n            dottedMinutesInGap: this._dottedMinutesInGap,\n            maxTime: this.maxTime,\n            minTime: this.minTime,\n            format: this.format,\n            minutesGap: this.minutesGap,\n            disableAnimation: this.disableAnimation,\n            cancelBtnTmpl: this.cancelBtnTmpl,\n            confirmBtnTmpl: this.confirmBtnTmpl,\n            editableHintTmpl: this.editableHintTmpl,\n            disabled: this.disabled,\n            enableKeyboardInput: this.enableKeyboardInput,\n            preventOverlayClick: this.preventOverlayClick,\n            appendToInput: this._appendToInput,\n            hoursOnly: this.hoursOnly,\n            timepickerClass: this.timepickerClass,\n            inputElement: this.inputElement,\n            color: this.color\n        };\n        if (this._appendToInput) {\n            this.showPicker = !0;\n        }\n        else {\n            this._dialogRef = this._dialog.open(NgxMatTimepickerDialogComponent, {\n                panelClass: \"ngx-mat-timepicker-dialog\",\n                data: {\n                    ...config\n                }\n            });\n            this._dialogRef\n                .afterClosed()\n                .subscribe(() => {\n                    this.closed.emit();\n                });\n        }\n        this.opened.emit();\n    }\n\n    /***\n     * Register an input with this timepicker.\n     * input - The timepicker input to register with this timepicker\n     */\n    registerInput(input: NgxMatTimepickerDirective): void {\n        if (this._timepickerInput) {\n            console.warn(\"Input for this timepicker was already set\", input.element);\n            throw Error(\"A Timepicker can only be associated with a single input.\");\n        }\n        this._timepickerInput = input;\n    }\n\n    unregisterInput(): void {\n        this._timepickerInput = void 0;\n    }\n\n    updateTime(time: string): void {\n        this.timeUpdated.next(time);\n    }\n}\n","import {Directive} from \"@angular/core\";\n\n/* To override a default toggle icon */\n@Directive({\n    selector: \"[ngxMatTimepickerToggleIcon]\"\n})\n\nexport class NgxMatTimepickerToggleIconDirective {\n}\n","import {Component, ContentChild, Input, ViewEncapsulation} from \"@angular/core\";\n\nimport { MatButtonModule } from \"@angular/material/button\";\n//\nimport {NgxMatTimepickerToggleIconDirective} from \"../../directives/ngx-mat-timepicker-toggle-icon.directive\";\nimport {NgxMatTimepickerComponent} from \"../ngx-mat-timepicker/ngx-mat-timepicker.component\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-toggle\",\n    templateUrl: \"ngx-mat-timepicker-toggle.component.html\",\n    styleUrls: [\"ngx-mat-timepicker-toggle.component.scss\"],\n    encapsulation: ViewEncapsulation.None,\n    imports: [MatButtonModule]\n})\n\nexport class NgxMatTimepickerToggleComponent {\n\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === void 0 ? this.timepicker?.disabled : this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        this._disabled = value;\n    }\n\n    @ContentChild(NgxMatTimepickerToggleIconDirective, {static: true}) customIcon: NgxMatTimepickerToggleIconDirective;\n\n    // tslint:disable-next-line:no-input-rename\n    @Input(\"for\") timepicker: NgxMatTimepickerComponent;\n\n    private _disabled: boolean;\n\n    open(event: MouseEvent): void {\n        if (this.timepicker) {\n            this.timepicker.open();\n            event.stopPropagation();\n        }\n    }\n}\n","<button class=\"ngx-mat-timepicker-toggle mat-elevation-z0\"\n  color=\"\"\n  mat-icon-button\n  (click)=\"open($event)\"\n  [disabled]=\"disabled\"\n  type=\"button\">\n  @if (!customIcon) {\n    <svg xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ngx-mat-timepicker-toggle-default-icon\"\n      fill=\"currentColor\"\n      viewBox=\"0 0 24 24\"\n      width=\"24px\"\n      height=\"24px\"\n      >\n      <path d=\"M 12 2 C 6.4889971 2 2 6.4889971 2 12 C 2 17.511003                   6.4889971 22 12 22 C 17.511003 22 22 17.511003 22 12 C 22 6.4889971 17.511003 2 12 2 z M 12 4 C 16.430123 4 20 7.5698774 20 12 C 20 16.430123 16.430123 20 12 20 C 7.5698774 20 4 16.430123 4 12 C 4 7.5698774 7.5698774 4 12 4 z M 11 6 L 11 12.414062 L 15.292969 16.707031 L 16.707031 15.292969 L 13 11.585938 L 13 6 L 11 6 z\" />\n    </svg>\n  }\n\n  <ng-content select=\"[ngxMatTimepickerToggleIcon]\"></ng-content>\n</button>\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from \"@angular/core\";\nimport {NgClass} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {MatInputModule} from \"@angular/material/input\";\nimport {ThemePalette} from \"@angular/material/core\";\nimport {FloatLabelType, MatFormFieldModule} from \"@angular/material/form-field\";\n//\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerParserPipe} from \"../../pipes/ngx-mat-timepicker-parser.pipe\";\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport {NgxMatTimepickerTimeLocalizerPipe} from \"../../pipes/ngx-mat-timepicker-time-localizer.pipe\";\n\nfunction concatTime(currentTime: string, nextTime: string): number | undefined {\n    const isNumber = /\\d/.test(nextTime);\n\n    if (isNumber) {\n        const time = currentTime + nextTime;\n\n        return +time;\n    }\n\n    return undefined;\n}\n\n@Component({\n    selector: \"ngx-mat-timepicker-time-control\",\n    templateUrl: \"./ngx-mat-timepicker-control.component.html\",\n    styleUrls: [\"./ngx-mat-timepicker-control.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [NgxMatTimepickerParserPipe],\n    imports: [MatFormFieldModule, NgClass, MatInputModule, FormsModule, NgxMatTimepickerParserPipe, NgxMatTimepickerTimeLocalizerPipe]\n})\n\nexport class NgxMatTimepickerControlComponent implements OnChanges {\n\n    static nextId: number = 0;\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    @Input() disabled: boolean;\n\n    @Input()\n    set floatLabel(newValue: FloatLabelType) {\n        this._floatLabel = newValue;\n    }\n\n    get floatLabel(): FloatLabelType {\n        return this._floatLabel;\n    }\n\n    id: number = NgxMatTimepickerControlComponent.nextId++;\n    isFocused: boolean;\n    @Input() max: number;\n    @Input() min: number;\n    @Input() placeholder: string;\n    @Input() preventTyping: boolean;\n\n    @Input() time: number;\n\n    @Output() timeChanged = new EventEmitter<number>();\n    @Input() timeList: NgxMatTimepickerClockFace[];\n    @Input() timeUnit: NgxMatTimepickerUnits;\n\n    private _color: ThemePalette = \"primary\";\n    private _floatLabel: FloatLabelType = \"auto\";\n    private _previousTime: number;\n\n    constructor(private _timeParser: NgxMatTimepickerParserPipe) {\n    }\n\n    changeTime(event: InputEvent): void {\n        event.stopPropagation();\n        const char = event.data;\n        const time = concatTime(String(this.time), char);\n\n        this._changeTimeIfValid(time);\n    }\n\n    decrease(): void {\n        if (!this.disabled) {\n            let previousTime = +this.time - 1;\n\n            if (previousTime < this.min) {\n                previousTime = this.max;\n            }\n\n            if (this._isSelectedTimeDisabled(previousTime)) {\n                previousTime = this._getAvailableTime(previousTime, this._getPrevAvailableTime.bind(this));\n            }\n\n            if (previousTime !== this.time) {\n                this.timeChanged.emit(previousTime);\n            }\n        }\n    }\n\n    increase(): void {\n        if (!this.disabled) {\n            let nextTime = +this.time + 1;\n\n            if (nextTime > this.max) {\n                nextTime = this.min;\n            }\n\n            if (this._isSelectedTimeDisabled(nextTime)) {\n                nextTime = this._getAvailableTime(nextTime, this._getNextAvailableTime.bind(this));\n            }\n\n            if (nextTime !== this.time) {\n                this.timeChanged.emit(nextTime);\n            }\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        // tslint:disable-next-line:no-string-literal\n        if (changes[\"timeList\"] && this.time != null) {\n            if (this._isSelectedTimeDisabled(this.time)) {\n                this._setAvailableTime();\n            }\n        }\n    }\n\n    onBlur(): void {\n        this.isFocused = false;\n\n        if (this._previousTime !== this.time) {\n            this._changeTimeIfValid(+this.time);\n        }\n    }\n\n    onFocus(): void {\n        this.isFocused = true;\n        this._previousTime = this.time;\n    }\n\n    onKeydown(event: any): void {\n        event.stopPropagation();\n\n        if (!NgxMatTimepickerUtils.isDigit(event)) {\n            event.preventDefault();\n        }\n\n        switch (event.key) {\n            case \"ArrowUp\":\n                this.increase();\n                break;\n            case \"ArrowDown\":\n                this.decrease();\n                break;\n        }\n\n        if (this.preventTyping && event.key !== \"Tab\") {\n            event.preventDefault();\n        }\n    }\n\n    onModelChange(value: string): void {\n        this.time = +this._timeParser.transform(value, this.timeUnit);\n    }\n\n    private _changeTimeIfValid(value: number | undefined): void {\n        if (!isNaN(value)) {\n            this.time = value;\n\n            if (this.time > this.max) {\n                const timeString = String(value);\n                this.time = +timeString[timeString.length - 1];\n            }\n\n            if (this.time < this.min) {\n                this.time = this.min;\n            }\n\n            this.timeChanged.emit(this.time);\n        }\n    }\n\n    private _getAvailableTime(currentTime: number, fn: (index: number) => number | undefined): number | undefined {\n        const currentTimeIndex = this.timeList.findIndex(time => time.time === currentTime);\n        const availableTime = fn(currentTimeIndex);\n\n        return availableTime != null ? availableTime : this.time;\n    }\n\n    private _getNextAvailableTime(index: number): number | undefined {\n        const timeCollection = this.timeList;\n        const maxValue = timeCollection.length;\n        for (let i = index + 1; i < maxValue; i++) {\n            const time = timeCollection[i];\n            if (!time.disabled) {\n                return time.time;\n            }\n        }\n\n        return undefined;\n    }\n\n    private _getPrevAvailableTime(index: number): number | undefined {\n        for (let i = index; i >= 0; i--) {\n            const time = this.timeList[i];\n            if (!time.disabled) {\n                return time.time;\n            }\n        }\n\n        return undefined;\n    }\n\n    private _isSelectedTimeDisabled(time: number): boolean {\n        return this.timeList.find((faceTime: NgxMatTimepickerClockFace) => faceTime.time === time).disabled;\n    }\n\n    private _setAvailableTime(): void {\n        this.time = this.timeList.find(t => !t.disabled).time;\n        this.timeChanged.emit(this.time);\n    }\n}\n\n","<mat-form-field [color]=\"color\"\n                [floatLabel]=\"floatLabel\"\n                [ngClass]=\"{'active': isFocused}\"\n                class=\"ngx-mat-timepicker-control\">\n    <input id=\"ngx_mat_timepicker_field_{{id}}\"\n           name=\"ngx_mat_timepicker_field_{{id}}\"\n           matInput\n           maxlength=\"2\"\n           [ngModel]=\"time | ngxMatTimepickerParser: timeUnit | timeLocalizer: timeUnit : true\"\n           (ngModelChange)=\"onModelChange($event)\"\n           [placeholder]=\"placeholder\"\n           [disabled]=\"disabled\"\n           (keydown)=\"onKeydown($event)\"\n           (beforeinput)=\"changeTime($event)\"\n           (focus)=\"onFocus()\"\n           (blur)=\"onBlur()\" />\n    <div class=\"arrows-wrap\"\n         matSuffix>\n        <span class=\"arrow\"\n              role=\"button\"\n              (click)=\"increase()\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\"\n                 height=\"18\"\n                 viewBox=\"0 0 24 24\"\n                 width=\"18\">\n                <path d=\"M0 0h24v24H0z\"\n                      fill=\"none\" />\n                <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z\" />\n            </svg>\n        </span>\n        <span class=\"arrow\"\n              role=\"button\"\n              (click)=\"decrease()\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\"\n                 height=\"18\"\n                 viewBox=\"0 0 24 24\"\n                 width=\"18\">\n                <path d=\"M0 0h24v24H0V0z\"\n                      fill=\"none\" />\n                <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n            </svg>\n        </span>\n    </div>\n</mat-form-field>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewEncapsulation\n} from \"@angular/core\";\nimport { NgClass, NgTemplateOutlet } from \"@angular/common\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule} from \"@angular/forms\";\nimport {MatSelectChange, MatSelectModule} from \"@angular/material/select\";\nimport {ThemePalette, MatOptionModule} from \"@angular/material/core\";\nimport {FloatLabelType, MatFormFieldModule} from \"@angular/material/form-field\";\nimport {MatIconModule} from \"@angular/material/icon\";\n//\nimport {NgxMatTimepickerLocaleService} from \"../../services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerFormatType} from \"../../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerService} from \"../../services/ngx-mat-timepicker.service\";\nimport {NgxMatTimepickerClockFace} from \"../../models/ngx-mat-timepicker-clock-face.interface\";\nimport {NgxMatTimepickerPeriods} from \"../../models/ngx-mat-timepicker-periods.enum\";\nimport {NgxMatTimepickerUnits} from \"../../models/ngx-mat-timepicker-units.enum\";\nimport {NgxMatTimepickerAdapter} from \"../../services/ngx-mat-timepicker-adapter\";\nimport {NgxMatTimepickerUtils} from \"../../utils/ngx-mat-timepicker.utils\";\nimport {NgxMatTimepickerComponent} from \"../ngx-mat-timepicker/ngx-mat-timepicker.component\";\nimport {NgxMatTimepickerToggleIconDirective} from \"../../directives/ngx-mat-timepicker-toggle-icon.directive\";\nimport {NgxMatTimepickerToggleComponent} from \"../ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component\";\nimport {NgxMatTimepickerControlComponent} from \"../ngx-mat-timepicker-control/ngx-mat-timepicker-control.component\";\n//\nimport {DateTime} from \"ts-luxon\";\nimport {BehaviorSubject, Subject} from \"rxjs\";\nimport {distinctUntilChanged, map, takeUntil, tap} from \"rxjs/operators\";\n\n@Component({\n    selector: \"ngx-mat-timepicker-field\",\n    templateUrl: \"./ngx-mat-timepicker-field.component.html\",\n    styleUrls: [\"./ngx-mat-timepicker-field.component.scss\"],\n    providers: [\n        NgxMatTimepickerService,\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: NgxMatTimepickerFieldComponent,\n            multi: true\n        }\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n    NgClass,\n    NgxMatTimepickerControlComponent,\n    MatFormFieldModule,\n    MatSelectModule,\n    FormsModule,\n    MatOptionModule,\n    NgxMatTimepickerToggleComponent,\n    NgxMatTimepickerToggleIconDirective,\n    NgTemplateOutlet,\n    NgxMatTimepickerComponent,\n    MatIconModule\n]\n})\nexport class NgxMatTimepickerFieldComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n    get color(): ThemePalette {\n        return this._color;\n    }\n\n    @Input()\n    set color(newValue: ThemePalette) {\n        this._color = newValue;\n    }\n\n    get defaultTime(): string {\n        return this._defaultTime;\n    }\n\n    @Input()\n    set defaultTime(val: string) {\n        this._defaultTime = val;\n        this._isDefaultTime = !!val;\n    }\n\n    get floatLabel(): FloatLabelType {\n        return this._floatLabel;\n    }\n\n    @Input()\n    set floatLabel(newValue: FloatLabelType) {\n        this._floatLabel = newValue;\n    }\n\n    get format(): NgxMatTimepickerFormatType {\n        return this._format;\n    }\n\n    @Input()\n    set format(value: NgxMatTimepickerFormatType) {\n        if (NgxMatTimepickerAdapter.isTwentyFour(value)) {\n            this._format = 24;\n            this.minHour = 0;\n            this.maxHour = 23;\n        }\n        else {\n            this._format = 12;\n            this.minHour = 1;\n            this.maxHour = 12;\n        }\n        this.hoursList = NgxMatTimepickerUtils.getHours(this._format);\n        const isDynamicallyChanged = value && (this._previousFormat && this._previousFormat !== this._format);\n\n        if (isDynamicallyChanged) {\n            this._updateTime(this.timepickerTime);\n        }\n        this._previousFormat = this._format;\n    }\n\n    get max(): DateTime {\n        return this._max;\n    }\n\n    @Input()\n    set max(value: string | DateTime) {\n        if (typeof value === \"string\") {\n            this._max = NgxMatTimepickerAdapter.parseTime(value, {locale: this._locale, format: this.format});\n\n            return;\n        }\n        this._max = value;\n    }\n\n    get min(): DateTime {\n        return this._min;\n    }\n\n    @Input()\n    set min(value: string | DateTime) {\n        if (typeof value === \"string\") {\n            this._min = NgxMatTimepickerAdapter.parseTime(value, {locale: this._locale, format: this.format});\n\n            return;\n        }\n        this._min = value;\n    }\n\n    private get _locale(): string {\n        return this._timepickerLocaleSrv.locale;\n    }\n\n    @Input() cancelBtnTmpl: TemplateRef<Node>;\n\n    @Input() confirmBtnTmpl: TemplateRef<Node>;\n\n    @Input() controlOnly: boolean;\n\n    @Input() disabled: boolean;\n\n    hour$: BehaviorSubject<NgxMatTimepickerClockFace> = new BehaviorSubject<NgxMatTimepickerClockFace>(void 0);\n\n    hoursList: NgxMatTimepickerClockFace[];\n    isChangePeriodDisabled: boolean;\n    isTimeRangeSet: boolean;\n    maxHour = 12;\n    minHour = 1;\n    minute$: BehaviorSubject<NgxMatTimepickerClockFace> = new BehaviorSubject<NgxMatTimepickerClockFace>(void 0);\n    minutesList: NgxMatTimepickerClockFace[];\n    period: NgxMatTimepickerPeriods = NgxMatTimepickerPeriods.AM;\n    periods: NgxMatTimepickerPeriods[] = [\n        NgxMatTimepickerPeriods.AM,\n        NgxMatTimepickerPeriods.PM\n    ];\n\n    @Output() timeChanged = new EventEmitter<string>();\n    timepickerTime: string;\n\n    timeUnit = NgxMatTimepickerUnits;\n    @Input() toggleIcon: TemplateRef<HTMLObjectElement>;\n\n    private _color: ThemePalette = \"primary\";\n    private _defaultTime: string;\n    private _floatLabel: FloatLabelType = \"auto\";\n    private _format: NgxMatTimepickerFormatType = 12;\n    private _isDefaultTime: boolean;\n    private _isFirstTimeChange: boolean = true;\n    private _max: DateTime;\n    private _min: DateTime;\n    private _previousFormat: number;\n    private _selectedHour: number;\n    private _subsCtrl$: Subject<void> = new Subject<void>();\n\n    constructor(private _timepickerService: NgxMatTimepickerService,\n                private _timepickerLocaleSrv: NgxMatTimepickerLocaleService) {\n    }\n\n    changeHour(hour: number): void {\n        this._timepickerService.hour = this.hoursList.find(h => h.time === hour);\n        this._changeTime();\n    }\n\n    changeMinute(minute: number): void {\n        this._timepickerService.minute = this.minutesList.find(m => m.time === minute);\n        this._changeTime();\n    }\n\n    changePeriod(event: MatSelectChange): void {\n        this._timepickerService.period = event.value as NgxMatTimepickerPeriods;\n        this._changeTime();\n    }\n\n    ngOnDestroy(): void {\n        this._subsCtrl$.next();\n        this._subsCtrl$.complete();\n    }\n\n    ngOnInit() {\n        this._initTime(this.defaultTime);\n\n        this.hoursList = NgxMatTimepickerUtils.getHours(this._format);\n        this.minutesList = NgxMatTimepickerUtils.getMinutes();\n        this.isTimeRangeSet = !!(this.min || this.max);\n\n        this._timepickerService.selectedHour.pipe(\n                tap((clockTime: NgxMatTimepickerClockFace) => this._selectedHour = clockTime?.time),\n                map(this._changeDefaultTimeValue.bind(this)),\n                tap(() => this.isTimeRangeSet && this._updateAvailableMinutes())\n            )\n            .subscribe({\n                next: (v: NgxMatTimepickerClockFace) => this.hour$.next(v)\n            });\n        this._timepickerService.selectedMinute.pipe(\n                map(this._changeDefaultTimeValue.bind(this)),\n                tap(() => this._isFirstTimeChange = false)\n            )\n            .subscribe({\n                next: (v: NgxMatTimepickerClockFace) => this.minute$.next(v)\n            });\n\n        // Selected period can only change when format is 12\n        if (this.format === 12) {\n            this._timepickerService.selectedPeriod.pipe(\n                distinctUntilChanged<NgxMatTimepickerPeriods>(),\n                tap((period: NgxMatTimepickerPeriods) => this.period = period),\n                tap(period => this.isChangePeriodDisabled = this._isPeriodDisabled(period)),\n                takeUntil(this._subsCtrl$)\n            ).subscribe(() => this.isTimeRangeSet && this._updateAvailableTime());\n        }\n        else {\n            // But we still need to run this once :) see #108\n            this.isTimeRangeSet && this._updateAvailableTime();\n        }\n\n    }\n\n    onTimeSet(time: string): void {\n        this._updateTime(time);\n        this._emitLocalTimeChange(time);\n    }\n\n    registerOnChange(fn: any): void {\n        this._onChange = fn;\n    }\n\n    registerOnTouched(fn: any): void {\n        this._onTouched = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    writeValue(val: string): void {\n        if (val) {\n            this._initTime(val);\n        }\n        else {\n            this._resetTime();\n        }\n    }\n\n    private _changeDefaultTimeValue(clockFaceTime: NgxMatTimepickerClockFace): NgxMatTimepickerClockFace {\n        if (!this._isDefaultTime && this._isFirstTimeChange) {\n            return {...clockFaceTime, time: null};\n        }\n\n        return clockFaceTime;\n    }\n\n    private _changeTime(): void {\n        if (!isNaN(this.hour$.getValue()?.time) && !isNaN(this.minute$.getValue()?.time)) {\n            const time = this._timepickerService.getFullTime(this.format);\n            this.timepickerTime = time;\n            this._emitLocalTimeChange(time);\n        }\n    }\n\n    private _emitLocalTimeChange(time: string): void {\n        const localTime = NgxMatTimepickerAdapter.toLocaleTimeString(time, {format: this.format, locale: this._locale});\n\n        this._onChange(localTime);\n        this._onTouched(localTime);\n        this.timeChanged.emit(localTime);\n    }\n\n    private _initTime(time: string): void {\n        const isDefaultTimeAvailable = NgxMatTimepickerAdapter\n            .isTimeAvailable(time, this.min as DateTime, this.max as DateTime, \"minutes\", null, this.format);\n        if (!isDefaultTimeAvailable) {\n            if (this.min) {\n                this._updateTime(NgxMatTimepickerAdapter.fromDateTimeToString(this.min as DateTime, this.format));\n\n                return;\n            }\n            if (this.max) {\n                this._updateTime(NgxMatTimepickerAdapter.fromDateTimeToString(this.max as DateTime, this.format));\n\n                return;\n            }\n        }\n        this._updateTime(time);\n    }\n\n    private _isPeriodDisabled(period: NgxMatTimepickerPeriods): boolean {\n        return NgxMatTimepickerUtils.disableHours(NgxMatTimepickerUtils.getHours(12), {\n            min: this.min as DateTime,\n            max: this.max as DateTime,\n            format: 12,\n            period: period === NgxMatTimepickerPeriods.AM ? NgxMatTimepickerPeriods.PM : NgxMatTimepickerPeriods.AM\n        }).every(time => time.disabled);\n    }\n\n    private _onChange: (value: string) => void = () => {\n    };\n\n    private _onTouched: (value: string) => void = () => {\n    };\n\n    private _resetTime(): void {\n        this._timepickerService.hour = {angle: 0, time: null};\n        this._timepickerService.minute = {angle: 0, time: null};\n    }\n\n    private _updateAvailableHours(): void {\n        this.hoursList = NgxMatTimepickerUtils.disableHours(this.hoursList, {\n            min: this.min as DateTime,\n            max: this.max as DateTime,\n            format: this.format,\n            period: this.period\n        });\n    }\n\n    private _updateAvailableMinutes(): void {\n        this.minutesList = NgxMatTimepickerUtils.disableMinutes(this.minutesList, this._selectedHour, {\n            min: this.min as DateTime,\n            max: this.max as DateTime,\n            format: this.format,\n            period: this.period\n        });\n    }\n\n    private _updateAvailableTime(): void {\n        this._updateAvailableHours();\n        if (this._selectedHour) {\n            this._updateAvailableMinutes();\n        }\n    }\n\n    private _updateTime(time: string): void {\n        if (time) {\n            const formattedTime = NgxMatTimepickerAdapter.formatTime(time, {locale: this._locale, format: this.format});\n            this._timepickerService.setDefaultTimeIfAvailable(formattedTime, this.min as DateTime, this.max as DateTime, this.format);\n            this.timepickerTime = formattedTime;\n        }\n    }\n\n}\n","<div class=\"ngx-mat-timepicker\"\n  [ngClass]=\"{'ngx-mat-timepicker--disabled': disabled}\">\n  <ngx-mat-timepicker-time-control\n    class=\"ngx-mat-timepicker__control--first\"\n    [color]=\"color\"\n    [floatLabel]=\"floatLabel\"\n    [placeholder]=\"'HH'\"\n    [time]=\"hour$.getValue()?.time\"\n    [min]=\"minHour\"\n    [max]=\"maxHour\"\n    [timeUnit]=\"timeUnit.HOUR\"\n    [disabled]=\"disabled\"\n    [timeList]=\"hoursList\"\n    [preventTyping]=\"isTimeRangeSet\"\n  (timeChanged)=\"changeHour($event)\"></ngx-mat-timepicker-time-control>\n  <span class=\"separator-colon ngx-mat-timepicker__control--second\">:</span>\n  <ngx-mat-timepicker-time-control\n    class=\"ngx-mat-timepicker__control--third\"\n    [color]=\"color\"\n    [floatLabel]=\"floatLabel\"\n    [placeholder]=\"'MM'\"\n    [time]=\"minute$.getValue()?.time\"\n    [min]=\"0\"\n    [max]=\"59\"\n    [timeUnit]=\"timeUnit.MINUTE\"\n    [disabled]=\"disabled\"\n    [timeList]=\"minutesList\"\n    [preventTyping]=\"isTimeRangeSet\"\n  (timeChanged)=\"changeMinute($event)\"></ngx-mat-timepicker-time-control>\n  @if (format !== 24) {\n    <mat-form-field class=\"period-select ngx-mat-timepicker__control--forth\"\n      [color]=\"color\">\n      <mat-select [disabled]=\"disabled || isChangePeriodDisabled\"\n        (selectionChange)=\"changePeriod($event)\"\n        [ngModel]=\"period\">\n        @for (option of periods; track option) {\n          <mat-option\n          [value]=\"option\">{{option}}</mat-option>\n        }\n      </mat-select>\n    </mat-form-field>\n  }\n  @if (!controlOnly) {\n    <ngx-mat-timepicker-toggle\n      class=\"ngx-mat-timepicker__toggle\"\n      [for]=\"timepicker\"\n      [disabled]=\"disabled\">\n      <span ngxMatTimepickerToggleIcon>\n        <ng-container *ngTemplateOutlet=\"toggleIcon || defaultIcon\"></ng-container>\n      </span>\n    </ngx-mat-timepicker-toggle>\n  }\n</div>\n<ngx-mat-timepicker\n  [color]=\"color\"\n  [min]=\"min\"\n  [max]=\"max\"\n  [defaultTime]=\"timepickerTime\"\n  [format]=\"format\"\n  [cancelBtnTmpl]=\"cancelBtnTmpl\"\n  [confirmBtnTmpl]=\"confirmBtnTmpl\"\n  (timeSet)=\"onTimeSet($event)\"\n#timepicker></ngx-mat-timepicker>\n\n<ng-template #defaultIcon>\n  <mat-icon>watch_later</mat-icon>\n</ng-template>\n","import {\n    Directive,\n    ElementRef,\n    HostListener,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    Optional,\n    inject\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CdkOverlayOrigin} from \"@angular/cdk/overlay\";\nimport {MatFormField} from \"@angular/material/form-field\";\n//\nimport {NgxMatTimepickerComponent} from \"../components/ngx-mat-timepicker/ngx-mat-timepicker.component\";\nimport {NgxMatTimepickerFormatType} from \"../models/ngx-mat-timepicker-format.type\";\nimport {NgxMatTimepickerAdapter} from \"../services/ngx-mat-timepicker-adapter\";\nimport {NgxMatTimepickerLocaleService} from \"../services/ngx-mat-timepicker-locale.service\";\n//\nimport {Subject, takeUntil} from \"rxjs\";\nimport {DateTime} from \"ts-luxon\";\n\n@Directive({\n    selector: \"[ngxMatTimepicker]\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: NgxMatTimepickerDirective,\n            multi: true\n        }\n    ],\n    host: {\n        \"[attr.disabled]\": \"disabled\",\n        \"(blur)\": \"onTouched()\"\n    }\n})\nexport class NgxMatTimepickerDirective implements ControlValueAccessor, OnDestroy, OnChanges {\n\n    get element(): HTMLElement {\n        return this._elementRef && this._elementRef.nativeElement;\n    }\n\n\n    @Input()\n    set format(value: number) {\n        this._format = NgxMatTimepickerAdapter.isTwentyFour(+value as NgxMatTimepickerFormatType) ? 24 : 12;\n        const isDynamicallyChanged = value && (this._previousFormat && this._previousFormat !== this._format);\n\n        if (isDynamicallyChanged) {\n            this.value = this._value;\n            this._timepicker.updateTime(this._value);\n        }\n        this._previousFormat = this._format;\n    }\n\n    get format(): NgxMatTimepickerFormatType {\n        return this._format;\n    }\n\n    @Input()\n    set max(value: string | DateTime) {\n        if (typeof value === \"string\") {\n            this._max = NgxMatTimepickerAdapter.parseTime(value, {locale: this._locale, format: this.format});\n\n            return;\n        }\n        this._max = value;\n    }\n\n    get max(): string | DateTime {\n        return this._max;\n    }\n\n    @Input()\n    set min(value: string | DateTime) {\n        if (typeof value === \"string\") {\n            this._min = NgxMatTimepickerAdapter.parseTime(value, {locale: this._locale, format: this.format});\n\n            return;\n        }\n        this._min = value;\n    }\n\n    get min(): string | DateTime {\n        return this._min;\n    }\n\n    @Input(\"ngxMatTimepicker\")\n    set timepicker(picker: NgxMatTimepickerComponent) {\n        this._registerTimepicker(picker);\n    }\n\n    @Input()\n    set value(value: string) {\n        if (!value) {\n            this._value = \"\";\n            this._updateInputValue();\n\n            return;\n        }\n        const time = NgxMatTimepickerAdapter.formatTime(value, {locale: this._locale, format: this.format});\n        const isAvailable = NgxMatTimepickerAdapter.isTimeAvailable(\n            time,\n            this._min as DateTime,\n            this._max as DateTime,\n            \"minutes\",\n            this._timepicker.minutesGap,\n            this._format\n        );\n\n        if (isAvailable) {\n            this._value = time;\n            this._updateInputValue();\n\n            return;\n        }\n        console.warn(\"Selected time doesn't match min or max value\");\n    }\n\n    get value(): string {\n        if (!this._value) {\n            return \"\";\n        }\n\n        return NgxMatTimepickerAdapter.toLocaleTimeString(this._value, {format: this.format, locale: this._locale});\n    }\n\n    private set _defaultTime(time: string) {\n        this._timepicker.defaultTime = NgxMatTimepickerAdapter.formatTime(time, {\n            locale: this._locale,\n            format: this.format\n        });\n    }\n\n    private get _locale(): string {\n        return this._timepickerLocaleSrv.locale;\n    }\n\n    @HostBinding(\"attr.cdkOverlayOrigin\") cdkOverlayOrigin: CdkOverlayOrigin;\n    @Input() disableClick: boolean;\n    @Input() disabled: boolean;\n\n    private _elementRef: ElementRef = inject(ElementRef);\n    private _format: NgxMatTimepickerFormatType = 12;\n    @Optional() private _matFormField: MatFormField = inject(MatFormField);\n    private _max: string | DateTime;\n    private _min: string | DateTime;\n    private _previousFormat: number;\n    private _subsCtrl$: Subject<void> = new Subject<void>();\n    private _timepicker: NgxMatTimepickerComponent;\n    private _timepickerLocaleSrv: NgxMatTimepickerLocaleService = inject(NgxMatTimepickerLocaleService);\n    private _value: string = \"\";\n\n    constructor() {\n        this.cdkOverlayOrigin = new CdkOverlayOrigin(this._matFormField ? this._matFormField.getConnectedOverlayOrigin() : this._elementRef);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const vChanges = changes[\"value\"];\n        if (vChanges && vChanges.currentValue) {\n            this._defaultTime = vChanges.currentValue;\n        }\n    }\n\n    ngOnDestroy() {\n        this._unregisterTimepicker();\n        this._subsCtrl$.next();\n        this._subsCtrl$.complete();\n    }\n\n    @HostListener(\"click\", [\"$event\"])\n    onClick(event: MouseEvent) {\n        if (!this.disableClick) {\n            this._timepicker.open();\n            event.stopPropagation();\n        }\n    }\n\n    onTouched = () => {\n    };\n\n    registerOnChange(fn: (value: any) => void): void {\n        this._onChange = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    @HostListener(\"change\", [\"$event\"])\n    updateValue(e: Event) {\n        this.value = (e.target as HTMLInputElement).value;\n        this._onChange(this.value);\n    }\n\n    writeValue(value: string): void {\n        this.value = value;\n        if (value) {\n            this._defaultTime = value;\n        }\n    }\n\n    private _onChange: (value: any) => void = () => {\n    };\n\n    private _registerTimepicker(picker: NgxMatTimepickerComponent): void {\n        if (picker) {\n            this._timepicker = picker;\n            this._timepicker.registerInput(this);\n            this._timepicker.timeSet\n                .pipe(takeUntil(this._subsCtrl$))\n                .subscribe((time: string) => {\n                    this.value = time;\n                    this._onChange(this.value);\n                    this.onTouched();\n                    this._defaultTime = this._value;\n                });\n        }\n        else {\n            throw new Error(\"NgxMatTimepickerComponent is not defined.\" +\n                \" Please make sure you passed the timepicker to ngxMatTimepicker directive\");\n        }\n    }\n\n    private _unregisterTimepicker(): void {\n        if (this._timepicker) {\n            this._timepicker.unregisterInput();\n        }\n    }\n\n    private _updateInputValue(): void {\n        this._elementRef.nativeElement.value = this.value;\n    }\n\n}\n\n","import {Pipe, PipeTransform} from \"@angular/core\";\n//\nimport {NgxMatTimepickerUnits} from \"../models/ngx-mat-timepicker-units.enum\";\n//\nimport {DateTime} from \"ts-luxon\";\n\n@Pipe({\n    name: \"timeFormatter\"\n})\nexport class NgxMatTimepickerTimeFormatterPipe implements PipeTransform {\n\n    transform(time: number | string, timeUnit: NgxMatTimepickerUnits): any {\n        if (time == null || time === \"\") {\n            return time;\n        }\n        switch (timeUnit) {\n            case NgxMatTimepickerUnits.HOUR:\n                return DateTime.fromObject({hour: +time}).toFormat(\"HH\");\n            case NgxMatTimepickerUnits.MINUTE:\n                return DateTime.fromObject({minute: +time}).toFormat(\"mm\");\n            default:\n                throw new Error(\"no such time unit\");\n        }\n    }\n\n}\n","import {ModuleWithProviders, NgModule} from \"@angular/core\";\nimport {OverlayModule} from \"@angular/cdk/overlay\";\nimport {PortalModule} from \"@angular/cdk/portal\";\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {A11yModule} from \"@angular/cdk/a11y\";\n// MATERIAL\nimport {MAT_FAB_DEFAULT_OPTIONS, MatButtonModule} from \"@angular/material/button\";\nimport {MatFormFieldModule} from \"@angular/material/form-field\";\nimport {MatDialogModule} from \"@angular/material/dialog\";\nimport {MatIconModule} from \"@angular/material/icon\";\nimport {MatInputModule} from \"@angular/material/input\";\nimport {MatSelectModule} from \"@angular/material/select\";\nimport {MatToolbarModule} from \"@angular/material/toolbar\";\n// NGX-MAT-TIMEPICKER\n// DIRECTIVES\nimport {NgxMatTimepickerDirective} from \"./directives/ngx-mat-timepicker.directive\";\nimport {NgxMatTimepickerToggleIconDirective} from \"./directives/ngx-mat-timepicker-toggle-icon.directive\";\nimport {NgxMatTimepickerBaseDirective} from \"./directives/ngx-mat-timepicker-base.directive\";\nimport {\n    NgxMatTimepickerHoursFaceDirective\n} from \"./components/ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive\";\n// COMPONENTS\nimport {\n    NgxMatTimepickerContentComponent\n} from \"./components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component\";\nimport {\n    NgxMatTimepickerDialogComponent\n} from \"./components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component\";\nimport {\n    NgxMatTimepickerStandaloneComponent\n} from \"./components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component\";\nimport {NgxMatTimepickerComponent} from \"./components/ngx-mat-timepicker/ngx-mat-timepicker.component\";\nimport {\n    NgxMatTimepickerToggleComponent\n} from \"./components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component\";\nimport {\n    NgxMatTimepicker24HoursFaceComponent\n} from \"./components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component\";\nimport {\n    NgxMatTimepicker12HoursFaceComponent\n} from \"./components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component\";\nimport {\n    NgxMatTimepickerMinutesFaceComponent\n} from \"./components/ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component\";\nimport {NgxMatTimepickerFaceComponent} from \"./components/ngx-mat-timepicker-face/ngx-mat-timepicker-face.component\";\nimport {NgxMatTimepickerDialComponent} from \"./components/ngx-mat-timepicker-dial/ngx-mat-timepicker-dial.component\";\nimport {\n    NgxMatTimepickerDialControlComponent\n} from \"./components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component\";\nimport {\n    NgxMatTimepickerPeriodComponent\n} from \"./components/ngx-mat-timepicker-period/ngx-mat-timepicker-period.component\";\nimport {NgxMatTimepickerTimeFormatterPipe} from \"./pipes/ngx-mat-timepicker-time-formatter.pipe\";\nimport {NgxMatTimepickerMinutesFormatterPipe} from \"./pipes/ngx-mat-timepicker-minutes-formatter.pipe\";\nimport {NgxMatTimepickerAutofocusDirective} from \"./directives/ngx-mat-timepicker-autofocus.directive\";\nimport {NgxMatTimepickerFieldComponent} from \"./components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component\";\nimport {\n    NgxMatTimepickerControlComponent\n} from \"./components/ngx-mat-timepicker-control/ngx-mat-timepicker-control.component\";\n// PIPES + SERVICES + TOKENS\nimport {NgxMatTimepickerLocaleService} from \"./services/ngx-mat-timepicker-locale.service\";\nimport {NgxMatTimepickerTimeLocalizerPipe} from \"./pipes/ngx-mat-timepicker-time-localizer.pipe\";\nimport {NGX_MAT_TIMEPICKER_CONFIG} from \"./tokens/ngx-mat-timepicker-config.token\";\nimport {NGX_MAT_TIMEPICKER_LOCALE} from \"./tokens/ngx-mat-timepicker-time-locale.token\";\nimport {NgxMatTimepickerParserPipe} from \"./pipes/ngx-mat-timepicker-parser.pipe\";\nimport {NgxMatTimepickerActiveHourPipe} from \"./pipes/ngx-mat-timepicker-active-hour.pipe\";\nimport {NgxMatTimepickerActiveMinutePipe} from \"./pipes/ngx-mat-timepicker-active-minute.pipe\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        A11yModule,\n        FormsModule,\n        MatButtonModule,\n        MatFormFieldModule,\n        MatDialogModule,\n        MatInputModule,\n        MatSelectModule,\n        MatToolbarModule,\n        MatIconModule,\n        OverlayModule,\n        PortalModule,\n        // Not really used, but needed to use it as abstract class\n        NgxMatTimepickerBaseDirective,\n        NgxMatTimepickerHoursFaceDirective,\n        //\n        NgxMatTimepickerActiveHourPipe,\n        NgxMatTimepickerActiveMinutePipe,\n        NgxMatTimepickerComponent,\n        NgxMatTimepickerDialComponent,\n        NgxMatTimepickerDialControlComponent,\n        NgxMatTimepickerDialogComponent,\n        NgxMatTimepickerDirective,\n        NgxMatTimepickerFaceComponent,\n        NgxMatTimepickerMinutesFaceComponent,\n        NgxMatTimepickerPeriodComponent,\n        NgxMatTimepickerStandaloneComponent,\n        NgxMatTimepickerToggleComponent,\n        NgxMatTimepicker12HoursFaceComponent,\n        NgxMatTimepicker24HoursFaceComponent,\n        NgxMatTimepickerToggleIconDirective,\n        NgxMatTimepickerAutofocusDirective,\n        NgxMatTimepickerMinutesFormatterPipe,\n        NgxMatTimepickerFieldComponent,\n        NgxMatTimepickerControlComponent,\n        NgxMatTimepickerParserPipe,\n        NgxMatTimepickerContentComponent,\n        NgxMatTimepickerTimeFormatterPipe,\n        NgxMatTimepickerTimeLocalizerPipe\n    ],\n    exports: [\n        NgxMatTimepickerComponent,\n        NgxMatTimepickerToggleComponent,\n        NgxMatTimepickerFieldComponent,\n        NgxMatTimepickerDirective,\n        NgxMatTimepickerToggleIconDirective\n    ],\n    providers: [\n        NgxMatTimepickerLocaleService,\n        {\n            provide: MAT_FAB_DEFAULT_OPTIONS, useValue: { color: \"void\" }\n        }\n    ]\n})\nexport class NgxMatTimepickerModule {\n\n    static setLocale(locale: string): ModuleWithProviders<NgxMatTimepickerModule> {\n        return {\n            ngModule: NgxMatTimepickerModule,\n            providers: [\n                {provide: NGX_MAT_TIMEPICKER_LOCALE, useValue: locale},\n                {provide: NGX_MAT_TIMEPICKER_CONFIG, useValue: undefined},\n                NgxMatTimepickerLocaleService\n            ]\n        };\n    }\n}\n","// COMPONENTS\nexport {NgxMatTimepickerComponent} from \"./lib/components/ngx-mat-timepicker/ngx-mat-timepicker.component\";\nexport {NgxMatTimepickerFieldComponent} from \"./lib/components/ngx-mat-timepicker-field/ngx-mat-timepicker-field.component\";\nexport {NgxMatTimepickerToggleComponent} from \"./lib/components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component\";\n// DIRECTIVES\nexport {NgxMatTimepickerDirective} from \"./lib/directives/ngx-mat-timepicker.directive\";\nexport {NgxMatTimepickerToggleIconDirective} from \"./lib/directives/ngx-mat-timepicker-toggle-icon.directive\";\n// MODELS\nexport {NgxMatTimepickerConfig} from \"./lib/models/ngx-mat-timepicker-config.interface\";\nexport {NgxMatTimepickerFormatType} from \"./lib/models/ngx-mat-timepicker-format.type\";\n// SERVICES\nexport {NgxMatTimepickerLocaleService} from \"./lib/services/ngx-mat-timepicker-locale.service\";\n//\nexport * from \"./lib/ngx-mat-timepicker.module\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxMatTimepickerLocaleService","i2","i1","i1.NgxMatTimepickerParserPipe","i2.NgxMatTimepickerService","i3.NgxMatTimepickerEventService","i4.NgxMatTimepickerLocaleService","i5","i1.NgxMatTimepickerService","i2.NgxMatTimepickerEventService","i3.NgxMatTimepickerLocaleService","i2.NgxMatTimepickerLocaleService","i3","i4","i6","takeUntil"],"mappings":"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"}