UNPKG

@alexfriesen/ngx-mat-timepicker

Version:

ngx-mat-timepicker is an Angular material 17+ extension to add time pickers!

1 lines 225 kB
{"version":3,"file":"alexfriesen-ngx-mat-timepicker.mjs","sources":["../../../projects/ngx-mat-timepicker/src/lib/tokens/ngx-mat-timepicker-config.token.ts","../../../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/utils/datetime-unit-fix.utils.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/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/tokens/ngx-mat-timepicker-time-numberingsystem.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/alexfriesen-ngx-mat-timepicker.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nimport { NgxMatTimepickerConfig } from '../models/ngx-mat-timepicker-config.interface';\n\nexport const NGX_MAT_TIMEPICKER_CONFIG =\n  new InjectionToken<NgxMatTimepickerConfig>('NGX_MAT_TIMEPICKER_CONFIG');\n\nexport function provideNgxMatTimepickerOptions(\n  config: NgxMatTimepickerConfig,\n): Provider[] {\n  return [{ provide: NGX_MAT_TIMEPICKER_CONFIG, useValue: config }];\n}\n","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 { DateTimeUnit } from 'luxon';\n\nexport type DateTimeUnitWithDeprecatedTypes =\n  | DateTimeUnit\n  | 'hours'\n  | 'minutes';\n\nexport function fixDateTimeUnit(\n  unit: DateTimeUnitWithDeprecatedTypes,\n): DateTimeUnit {\n  switch (unit) {\n    case 'hours':\n    case 'minutes':\n      printDeprecationWarning(unit);\n      return fixUnit(unit);\n    default:\n      return unit;\n  }\n}\n\nexport function fixUnit(unit: DateTimeUnitWithDeprecatedTypes): DateTimeUnit {\n  switch (unit) {\n    case 'hours':\n      return 'hour';\n    case 'minutes':\n      return 'minute';\n    default:\n      return unit;\n  }\n}\n\nfunction printDeprecationWarning(unit: DateTimeUnitWithDeprecatedTypes) {\n  console.warn(`'${unit}' is deprecated. Use '${fixUnit(unit)}' instead.`);\n}\n","import { DateTime, LocaleOptions, NumberingSystem } from 'luxon';\n\nimport { NgxMatTimepickerFormat } from '../models/ngx-mat-timepicker-format.enum';\nimport { NgxMatTimepickerPeriods } from '../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerFormatType } from '../models/ngx-mat-timepicker-format.type';\nimport { NgxMatTimepickerOptions } from '../models/ngx-mat-timepicker-options.interface';\n\nimport {\n  DateTimeUnitWithDeprecatedTypes,\n  fixDateTimeUnit,\n} from '../utils/datetime-unit-fix.utils';\n\n// @dynamic\nexport class NgxMatTimepickerAdapter {\n  static defaultFormat: NgxMatTimepickerFormatType = 12;\n  static defaultLocale = 'en-US';\n  static defaultNumberingSystem: NumberingSystem = 'latn';\n\n  /***\n   *  Format hour according to time format (12 or 24)\n   */\n  static formatHour(\n    currentHour: number,\n    format: NgxMatTimepickerFormatType,\n    period: NgxMatTimepickerPeriods,\n  ): number {\n    if (this.isTwentyFour(format)) {\n      return currentHour;\n    }\n    const hour =\n      period === NgxMatTimepickerPeriods.AM ? currentHour : currentHour + 12;\n\n    if (period === NgxMatTimepickerPeriods.AM && hour >= 12) {\n      return 0;\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(\n      opts.format as NgxMatTimepickerFormatType,\n    );\n    if (isTwelve) {\n      return parsedTime\n        .toLocaleString({\n          ...DateTime.TIME_SIMPLE,\n          hour12: isTwelve,\n        })\n        .replace(/\\u200E/g, '');\n    }\n\n    return parsedTime\n      .toISOTime({\n        includeOffset: false,\n        suppressMilliseconds: true,\n        suppressSeconds: true,\n      })\n      .replace(/\\u200E/g, '');\n  }\n\n  static fromDateTimeToString(\n    time: DateTime,\n    format: NgxMatTimepickerFormatType,\n  ): string {\n    return time\n      .reconfigure({\n        numberingSystem: this.defaultNumberingSystem,\n        locale: this.defaultLocale,\n      })\n      .toFormat(\n        this.isTwentyFour(format)\n          ? NgxMatTimepickerFormat.TWENTY_FOUR\n          : NgxMatTimepickerFormat.TWELVE,\n      );\n  }\n\n  static isBetween(\n    time: DateTime,\n    before: DateTime,\n    after: DateTime,\n    unit: DateTimeUnitWithDeprecatedTypes = 'minute',\n  ): boolean {\n    unit = fixDateTimeUnit(unit);\n    const innerUnit = unit === 'hour' ? unit : undefined;\n\n    return (\n      this.isSameOrBefore(time, after, innerUnit) &&\n      this.isSameOrAfter(time, before, innerUnit)\n    );\n  }\n\n  static isSameOrAfter(\n    time: DateTime,\n    compareWith: DateTime,\n    unit: DateTimeUnitWithDeprecatedTypes = 'minute',\n  ): boolean {\n    unit = fixDateTimeUnit(unit);\n    if (unit === 'hour') {\n      return time.hour >= compareWith.hour;\n    }\n\n    return (\n      time.hasSame(compareWith, unit) || time.valueOf() > compareWith.valueOf()\n    );\n  }\n\n  static isSameOrBefore(\n    time: DateTime,\n    compareWith: DateTime,\n    unit: DateTimeUnitWithDeprecatedTypes = 'minute',\n  ): boolean {\n    unit = fixDateTimeUnit(unit);\n    if (unit === 'hour') {\n      return time.hour <= compareWith.hour;\n    }\n\n    return (\n      time.hasSame(compareWith, unit) || time.valueOf() <= compareWith.valueOf()\n    );\n  }\n\n  static isTimeAvailable(\n    time: string,\n    min?: DateTime,\n    max?: DateTime,\n    granularity?: DateTimeUnitWithDeprecatedTypes,\n    minutesGap?: number | null,\n    format?: number,\n  ): boolean {\n    if (!time) {\n      return undefined;\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(\n        `Your minutes - ${minutes} doesn't match your minutesGap - ${minutesGap}`,\n      );\n    }\n\n    granularity = fixDateTimeUnit(granularity);\n    const isAfter =\n      min && !max && this.isSameOrAfter(convertedTime, min, granularity);\n    const isBefore =\n      max && !min && this.isSameOrBefore(convertedTime, max, granularity);\n    const between =\n      min && max && 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(\n    time: string,\n    opts: NgxMatTimepickerOptions = {},\n  ): 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)\n      .reconfigure({\n        locale,\n        numberingSystem: opts.numberingSystem,\n        outputCalendar: opts.outputCalendar,\n      })\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(\n    time: string,\n    opts: NgxMatTimepickerOptions,\n  ): LocaleOptions {\n    const { numberingSystem, locale } = DateTime.now()\n      .reconfigure({\n        locale: opts.locale,\n        numberingSystem: opts.numberingSystem,\n        outputCalendar: opts.outputCalendar,\n      })\n      .resolvedLocaleOptions();\n\n    return isNaN(parseInt(time, 10))\n      ? {\n          numberingSystem: numberingSystem as NumberingSystem,\n          locale,\n        }\n      : {\n          numberingSystem: this.defaultNumberingSystem,\n          locale: this.defaultLocale,\n        };\n  }\n}\n","export enum NgxMatTimepickerUnits {\n  HOUR,\n  MINUTE,\n}\n","import { Injectable } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { DateTime } from 'luxon';\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\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  setHour(hour: NgxMatTimepickerClockFace) {\n    this.hour$.next(hour);\n  }\n\n  setMinute(minute: NgxMatTimepickerClockFace) {\n    this.minute$.next(minute);\n  }\n\n  setPeriod(period: NgxMatTimepickerPeriods) {\n    const isPeriodValid =\n      period === NgxMatTimepickerPeriods.AM ||\n      period === NgxMatTimepickerPeriods.PM;\n\n    if (isPeriodValid) {\n      this.period$.next(period);\n    }\n  }\n\n  readonly hour$ = new BehaviorSubject<NgxMatTimepickerClockFace>(DEFAULT_HOUR);\n  readonly minute$ = new BehaviorSubject<NgxMatTimepickerClockFace>(\n    DEFAULT_MINUTE,\n  );\n  readonly period$ = new BehaviorSubject<NgxMatTimepickerPeriods>(\n    NgxMatTimepickerPeriods.AM,\n  );\n\n  readonly hour = toSignal(this.hour$);\n  readonly minute = toSignal(this.minute$);\n  readonly period = toSignal(this.period$);\n\n  getFullTime(format: number): string {\n    const selectedHour = this.hour().time;\n    const selectedMinute = this.minute().time;\n    const hour = selectedHour != null ? selectedHour : DEFAULT_HOUR.time;\n    const minute =\n      selectedMinute != null ? selectedMinute : DEFAULT_MINUTE.time;\n    const period = format === 12 ? this.period() : '';\n    const time = `${hour}:${minute} ${period}`.trim();\n\n    return NgxMatTimepickerAdapter.formatTime(time, { format });\n  }\n\n  setDefaultTimeIfAvailable(\n    time: string,\n    min: DateTime,\n    max: DateTime,\n    format: number,\n    minutesGap?: number,\n  ) {\n    if (!time) {\n      this._resetTime();\n    }\n    /* Workaround to double error message*/\n    try {\n      if (\n        NgxMatTimepickerAdapter.isTimeAvailable(\n          time,\n          min,\n          max,\n          'minute',\n          minutesGap,\n        )\n      ) {\n        this._setDefaultTime(time, format);\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  private _resetTime(): void {\n    this.setHour({ ...DEFAULT_HOUR });\n    this.setMinute({ ...DEFAULT_MINUTE });\n    this.setPeriod(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.setHour({\n        ...DEFAULT_HOUR,\n        time: formatHourByPeriod(hour, period as NgxMatTimepickerPeriods),\n      });\n      this.setMinute({ ...DEFAULT_MINUTE, time: defaultDto.minute });\n      this.setPeriod(period as NgxMatTimepickerPeriods);\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(\n  hour: number,\n  period: NgxMatTimepickerPeriods,\n): 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';\nimport { Observable, Subject } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxMatTimepickerEventService {\n  get backdropClick(): Observable<MouseEvent> {\n    return this._backdropClick$\n      .asObservable()\n      .pipe(shareReplay({ bufferSize: 1, refCount: true }));\n  }\n\n  get keydownEvent(): Observable<KeyboardEvent> {\n    return this._keydownEvent$\n      .asObservable()\n      .pipe(shareReplay({ bufferSize: 1, refCount: true }));\n  }\n\n  private _backdropClick$ = new Subject<MouseEvent>();\n  private _keydownEvent$ = new Subject<KeyboardEvent>();\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","import { InjectionToken } from '@angular/core';\n\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\n\nexport const NGX_MAT_TIMEPICKER_LOCALE = new InjectionToken<string>(\n  'TimeLocale',\n  {\n    providedIn: 'root',\n    factory: () => NgxMatTimepickerAdapter.defaultLocale,\n  },\n);\n","import { InjectionToken } from '@angular/core';\nimport type { NumberingSystem } from 'luxon';\nimport { NgxMatTimepickerAdapter } from '../services/ngx-mat-timepicker-adapter';\n\nexport const NGX_MAT_TIMEPICKER_NUMBERINGSYSTEM =\n  new InjectionToken<NumberingSystem>('TIMEPICKER_NUMBERINGSYSTEM', {\n    providedIn: 'root',\n    factory: () => NgxMatTimepickerAdapter.defaultNumberingSystem,\n  });\n","import { Injectable, inject } from '@angular/core';\nimport { DateTime, NumberingSystem } from 'luxon';\n\nimport { NGX_MAT_TIMEPICKER_LOCALE } from '../tokens/ngx-mat-timepicker-time-locale.token';\nimport { NGX_MAT_TIMEPICKER_NUMBERINGSYSTEM } from '../tokens/ngx-mat-timepicker-time-numberingsystem.token';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxMatTimepickerLocaleService {\n  get locale(): string {\n    return this._locale;\n  }\n\n  get numberingSystem(): string {\n    return this._numberingSystem;\n  }\n\n  private _locale = inject(NGX_MAT_TIMEPICKER_LOCALE);\n  private _numberingSystem = inject(NGX_MAT_TIMEPICKER_NUMBERINGSYSTEM);\n\n  updateLocale(newValue: string): void {\n    this._locale = newValue;\n  }\n\n  updateNumberingSystemByLocale(newValue: string): void {\n    this._numberingSystem = this.resolveNumberingSystemByLocale(newValue);\n  }\n\n  updateNumberingSystem(newValue: NumberingSystem): void {\n    this._numberingSystem = newValue;\n  }\n\n  private resolveNumberingSystemByLocale(locale: string): NumberingSystem {\n    return DateTime.local().setLocale(locale).resolvedLocaleOptions()\n      .numberingSystem;\n  }\n}\n","import {\n  Directive,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  model,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject } from 'rxjs';\nimport { shareReplay, takeUntil } from 'rxjs/operators';\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\n@Directive({\n  selector: '[ngxMatTimepickerBase]',\n  standalone: true,\n})\nexport class NgxMatTimepickerBaseDirective implements OnInit, OnDestroy {\n  protected readonly color = model<ThemePalette>('primary');\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  readonly selectedHour = this._timepickerSrv.hour;\n  readonly selectedHour$ = this._timepickerSrv.hour$.pipe(\n    shareReplay({ bufferSize: 1, refCount: true }),\n  );\n\n  readonly selectedMinute = this._timepickerSrv.minute;\n  readonly selectedMinute$ = this._timepickerSrv.minute$.pipe(\n    shareReplay({ bufferSize: 1, refCount: true }),\n  );\n\n  readonly selectedPeriod = this._timepickerSrv.period;\n  readonly selectedPeriod$ = this._timepickerSrv.period$.pipe(\n    shareReplay({ bufferSize: 1, refCount: true }),\n  );\n\n  activeTimeUnit: NgxMatTimepickerUnits = NgxMatTimepickerUnits.HOUR;\n  timeUnit: typeof NgxMatTimepickerUnits = NgxMatTimepickerUnits;\n\n  protected _defaultTime: string;\n  protected _subsCtrl$: Subject<void> = new Subject<void>();\n\n  constructor(\n    protected _timepickerSrv: NgxMatTimepickerService,\n    protected _eventSrv: NgxMatTimepickerEventService,\n    protected _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n    @Inject(NGX_MAT_TIMEPICKER_CONFIG) public data: NgxMatTimepickerConfig,\n  ) {\n    this.color.set(data.color);\n    this.defaultTime = data.defaultTime;\n  }\n\n  changePeriod(period: NgxMatTimepickerPeriods): void {\n    this._timepickerSrv.setPeriod(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\n    this.data.timepickerBaseRef.timeUpdated$\n      .pipe(takeUntil(this._subsCtrl$))\n      .subscribe({\n        next: (v: string) => {\n          if (v) {\n            this._setDefaultTime(v);\n          }\n        },\n      });\n  }\n\n  onHourChange(hour: NgxMatTimepickerClockFace): void {\n    this._timepickerSrv.setHour(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.emit(hour);\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeydown(e: KeyboardEvent): void {\n    this._eventSrv.dispatchEvent(e);\n    e.stopPropagation();\n  }\n\n  onMinuteChange(minute: NgxMatTimepickerClockFace): void {\n    this._timepickerSrv.setMinute(minute);\n    this._onTimeChange();\n  }\n\n  setTime(): void {\n    this.data.timepickerBaseRef.timeSet.emit(\n      this._timepickerSrv.getFullTime(this.data.format),\n    );\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(\n        minTime,\n        this.data.format,\n      );\n\n      this._setDefaultTime(time);\n    }\n  }\n\n  protected _onTimeChange(): void {\n    const time = NgxMatTimepickerAdapter.toLocaleTimeString(\n      this._timepickerSrv.getFullTime(this.data.format),\n      {\n        locale: this._locale,\n        format: this.data.format,\n      },\n    );\n\n    this.data.timepickerBaseRef.timeChanged.emit(time);\n  }\n\n  protected _setDefaultTime(time: string): void {\n    this._timepickerSrv.setDefaultTimeIfAvailable(\n      time,\n      this.data.minTime,\n      this.data.maxTime,\n      this.data.format,\n      this.data.minutesGap,\n    );\n  }\n}\n","import { DateTime } from 'luxon';\n\nimport { 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\nconst HOURS_24 = [\n  {\n    time: 1,\n    angle: 30,\n  },\n  {\n    time: 2,\n    angle: 60,\n  },\n  {\n    time: 3,\n    angle: 90,\n  },\n  {\n    time: 4,\n    angle: 120,\n  },\n  {\n    time: 5,\n    angle: 150,\n  },\n  {\n    time: 6,\n    angle: 180,\n  },\n  {\n    time: 7,\n    angle: 210,\n  },\n  {\n    time: 8,\n    angle: 240,\n  },\n  {\n    time: 9,\n    angle: 270,\n  },\n  {\n    time: 10,\n    angle: 300,\n  },\n  {\n    time: 11,\n    angle: 330,\n  },\n  {\n    time: 0,\n    angle: 360,\n  },\n  {\n    time: 13,\n    angle: 390,\n  },\n  {\n    time: 14,\n    angle: 420,\n  },\n  {\n    time: 15,\n    angle: 450,\n  },\n  {\n    time: 16,\n    angle: 480,\n  },\n  {\n    time: 17,\n    angle: 510,\n  },\n  {\n    time: 18,\n    angle: 540,\n  },\n  {\n    time: 19,\n    angle: 570,\n  },\n  {\n    time: 20,\n    angle: 600,\n  },\n  {\n    time: 21,\n    angle: 630,\n  },\n  {\n    time: 22,\n    angle: 660,\n  },\n  {\n    time: 23,\n    angle: 690,\n  },\n  {\n    time: 12,\n    angle: 720,\n  },\n];\n\nconst HOURS_12 = [\n  {\n    time: 1,\n    angle: 30,\n  },\n  {\n    time: 2,\n    angle: 60,\n  },\n  {\n    time: 3,\n    angle: 90,\n  },\n  {\n    time: 4,\n    angle: 120,\n  },\n  {\n    time: 5,\n    angle: 150,\n  },\n  {\n    time: 6,\n    angle: 180,\n  },\n  {\n    time: 7,\n    angle: 210,\n  },\n  {\n    time: 8,\n    angle: 240,\n  },\n  {\n    time: 9,\n    angle: 270,\n  },\n  {\n    time: 10,\n    angle: 300,\n  },\n  {\n    time: 11,\n    angle: 330,\n  },\n  {\n    time: 12,\n    angle: 360,\n  },\n];\n\nexport function disableHours(\n  hours: NgxMatTimepickerClockFace[],\n  config: NgxMatTimepickerDisabledConfig,\n): NgxMatTimepickerClockFace[] {\n  if (config.min || config.max) {\n    return hours.map((value) => {\n      const hour = NgxMatTimepickerAdapter.isTwentyFour(config.format)\n        ? value.time\n        : NgxMatTimepickerAdapter.formatHour(\n            value.time,\n            config.format,\n            config.period,\n          );\n      const currentTime = DateTime.fromObject({ hour }).toFormat(\n        NgxMatTimepickerFormat.TWELVE,\n      );\n\n      return {\n        ...value,\n        disabled: !NgxMatTimepickerAdapter.isTimeAvailable(\n          currentTime,\n          config.min,\n          config.max,\n          'hour',\n        ),\n      };\n    });\n  }\n\n  return hours;\n}\n\nexport function disableMinutes(\n  minutes: NgxMatTimepickerClockFace[],\n  selectedHour: number,\n  config: NgxMatTimepickerDisabledConfig,\n) {\n  if (config.min || config.max) {\n    const hour = NgxMatTimepickerAdapter.formatHour(\n      selectedHour,\n      config.format,\n      config.period,\n    );\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(\n          currentTime.toFormat(NgxMatTimepickerFormat.TWELVE),\n          config.min,\n          config.max,\n          'minute',\n        ),\n      };\n    });\n  }\n\n  return minutes;\n}\n\nexport function getHours(format: number): NgxMatTimepickerClockFace[] {\n  if (format === 24) {\n    return HOURS_24;\n  }\n  return HOURS_12;\n}\n\nexport function 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({\n        time: i,\n        angle: angle !== 0 ? angle : 360,\n      });\n    }\n  }\n\n  return minutes;\n}\n\nexport function isDigit(e: KeyboardEvent) {\n  // Allow: backspace, delete, tab, escape, enter\n  if (\n    [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  // Allow: 0-9\n  return !(\n    (e.keyCode < 48 || e.keyCode > 57) &&\n    (e.keyCode < 96 || e.keyCode > 105)\n  );\n}\n\nexport const NgxMatTimepickerUtils = {\n  disableHours,\n  disableMinutes,\n  getHours,\n  getMinutes,\n  isDigit,\n};\n","export enum NgxMatTimepickerMeasure {\n  hour = 'hour',\n  minute = 'minute',\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DateTime } from 'luxon';\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\n@Pipe({\n  name: 'timeLocalizer',\n  standalone: true,\n})\nexport class NgxMatTimepickerTimeLocalizerPipe implements PipeTransform {\n  private readonly _timepickerLocaleSrv = inject(NgxMatTimepickerLocaleService);\n\n  private get _locale(): string {\n    return this._timepickerLocaleSrv.locale;\n  }\n\n  private get _numberingSystem() {\n    return this._timepickerLocaleSrv.numberingSystem;\n  }\n\n  transform(\n    time: number | string,\n    timeUnit: NgxMatTimepickerUnits,\n    isKeyboardEnabled = false,\n  ): 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(\n    timeMeasure: NgxMatTimepickerMeasure,\n    time: string | number,\n    format: string,\n  ): string {\n    try {\n      return DateTime.fromObject({ [timeMeasure]: +time })\n        .reconfigure({\n          locale: this._locale,\n          numberingSystem: this._numberingSystem,\n        })\n        .toFormat(format);\n    } catch {\n      throw new Error(\n        `Cannot format provided time - ${time} to locale - ${this._locale}`,\n      );\n    }\n  }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n    name: \"minutesFormatter\",\n    standalone: true\n})\nexport class NgxMatTimepickerMinutesFormatterPipe implements PipeTransform {\n\n    transform(minute: number, gap = 5): 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\";\n\n@Pipe({\n    name: \"activeMinute\",\n    standalone: true\n})\nexport class NgxMatTimepickerActiveMinutePipe implements PipeTransform {\n\n    transform(minute: number, currentMinute: number, gap: number, isClockFaceDisabled: boolean): boolean {\n        if (minute == null || isClockFaceDisabled) {\n            return false;\n        }\n        const defaultGap = 5;\n\n        return ((currentMinute === minute) && (minute % (gap || defaultGap) === 0));\n    }\n\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n    name: \"activeHour\",\n    standalone: true\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  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  output,\n  viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatMiniFabButton } 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(\n  x0: number,\n  y0: number,\n  x: number,\n  y: number,\n  currentAngle: number,\n): number {\n  if (y > y0 && x >= x0) {\n    // II quarter\n    return 180 - currentAngle;\n  } else if (y > y0 && x < x0) {\n    // III quarter\n    return 180 + currentAngle;\n  } else if (y < y0 && x < x0) {\n    // IV quarter\n    return 360 - currentAngle;\n  } else {\n    // 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  imports: [\n    NgTemplateOutlet,\n    SlicePipe,\n    MatMiniFabButton,\n    NgxMatTimepickerActiveHourPipe,\n    NgxMatTimepickerActiveMinutePipe,\n    NgxMatTimepickerMinutesFormatterPipe,\n    NgxMatTimepickerTimeLocalizerPipe,\n  ],\n})\nexport class NgxMatTimepickerFaceComponent\n  implements AfterViewInit, OnChanges, OnDestroy\n{\n  readonly clockFace = viewChild.required<ElementRef>('clockFace');\n  readonly clockHand = viewChild.required<ElementRef>('clockHand');\n\n  @Input() color: ThemePalette = 'primary';\n\n  @Input() faceTime: NgxMatTimepickerClockFace[];\n\n  @Input() unit: NgxMatTimepickerUnits;\n  @Input() format: NgxMatTimepickerFormatType;\n\n  @Input() minutesGap: number;\n\n  @Input() selectedTime: NgxMatTimepickerClockFace;\n\n  readonly timeChange = output<NgxMatTimepickerClockFace>();\n\n  readonly timeSelected = output<number>();\n\n  innerClockFaceSize = 85;\n  isClockFaceDisabled: boolean;\n  timeUnit = NgxMatTimepickerUnits;\n\n  private _isStarted: boolean;\n  private _touchEndHandler: (e: MouseEvent) => void;\n  private _touchStartHandler: (e: MouseEvent) => void;\n\n  ngAfterViewInit(): void {\n    this._setClockHandPosition();\n    this._addTouchEvents();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const faceTimeChanges = changes['faceTime'];\n    const selectedTimeChanges = changes['selectedTime'];\n\n    if (\n      faceTimeChanges &&\n      faceTimeChanges.currentValue &&\n      selectedTimeChanges &&\n      selectedTimeChanges.currentValue\n    ) {\n      /* Set time according to pass an input value */\n      this.selectedTime = this.faceTime.find(\n        (time) => time.time === this.selectedTime.time,\n      );\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: MouseEvent) {\n    e.preventDefault();\n    this._isStarted = true;\n  }\n\n  @HostListener('mouseup', ['$event'])\n  onMouseup(e: MouseEvent) {\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: MouseEvent): void {\n    if (!this._isStarted && e instanceof MouseEvent && e.type !== 'click') {\n      return;\n    }\n    const clockFaceCords =\n      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\n    /* Counting the arctangent and convert it to from radian to deg */\n    const arctangent =\n      (Math.atan(\n        Math.abs(e.clientX - centerX) / Math.abs(e.clientY - centerY),\n      ) *\n        180) /\n      Math.PI;\n    /* Get angle according to quadrant */\n    const circleAngle = countAngleByCords(\n      centerX,\n      centerY,\n      e.clientX,\n      e.clientY,\n      arctangent,\n    );\n    /* Check if selected time from the inner clock face (24 hours format only) */\n    const isInnerClockChosen =\n      this.format &&\n      this._isInnerClockFace(centerX, centerY, e.clientX, e.clientY);\n    /* Round angle according to angle step */\n    const angleStep =\n      this.unit === NgxMatTimepickerUnits.MINUTE\n        ? 6 * (this.minutesGap || 1)\n        : 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.emit(selectedTime);\n\n      /* To let know whether user ended interaction with clock face */\n      if (!this._isStarted) {\n        this.timeSelected.emit(selectedTime.time);\n      }\n    }\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(\n      'touchstart',\n      this._touchStartHandler,\n    );\n    this.clockFace().nativeElement.addEventListener(\n      'touchend',\n      this._touchEndHandler,\n    );\n  }\n\n  private _decreaseClockHand(): void {\n    this.clockHand().nativeElement.style.height =\n      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 =\n      CLOCK_HAND_STYLES.large.height;\n    this.clockHand().nativeElement.style.top = CLOCK_HAND_STYLES.large.top;\n  }\n\n  private _isInnerClockFace(\n    x0: number,\n    y0: number,\n    x: number,\n    y: number,\n  ): boolean {\n    /* Detect whether time from the inner clock face or not (24 format only) */\n    return (\n      Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)) <\n      this.innerClockFaceSize\n    );\n  }\n\n  private _removeTouchEvents(): void {\n    this.clockFace().nativeElement.removeEventListener(\n      'touchstart',\n      this._touchStartHandler,\n    );\n    this.clockFace().nativeElement.removeEventListener(\n      'touchend',\n      this._touchEndHandler,\n    );\n  }\n\n  private _selectAvailableTime(): void {\n    const currentTime = this.faceTime.find(\n      (time) => this.selectedTime.time === time.time,\n    );\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.emit(availableTime);\n    }\n  }\n\n  private _setClockHandPosition(): void {\n    if (NgxMatTimepickerAdapter.isTwentyFour(this.format)) {\n      if (this.selectedTime.time > 11) {\n        this._decreaseClockHand();\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 let-time>\n  <button\n    mat-mini-fab\n    disableRipple\n    class=\"mat-elevation-z0\"\n    [color]=\"\n      (time.time | activeHour: selectedTime?.time : isClockFaceDisabled)\n        ? color\n        : 'void'\n    \"\n    [style.transform]=\"'rotateZ(-' + time.angle + 'deg)'\"\n    [disabled]=\"time.disabled\"\n  >\n    {{ time.time | timeLocalizer: timeUnit.HOUR }}\n  </button>\n</ng-template>\n<!-- DEFAULT TEMPLATES - END -->\n<div class=\"clock-face\" #clockFace>\n  @if (unit !== timeUnit.MINUTE) {\n    <div class=\"clock-face__container\">\n      @for (time of faceTime | slice: 0 : 12; track time.time) {\n        <div\n          class=\"clock-face__number clock-face__number--outer\"\n          [style.transform]=\"'rotateZ(' + time.angle + 'deg)'\"\n        >\n          <ng-content\n            *ngTemplateOutlet=\"hourButton; context: { $implicit: time }\"\n          />\n        </div>\n      }\n      @if (faceTime.length > 12) {\n        <div class=\"clock-face__inner\">\n          @for (time of faceTime | slice: 12 : 24; track time.time) {\n            <div\n              class=\"clock-face__number clock-face__number--inner\"\n              [style.top]=\"'calc(50% - ' + innerClockFaceSize + 'px)'\"\n              [style.transform]=\"'rotateZ(' + time.angle + 'deg)'\"\n              [style.height.px]=\"innerClockFaceSize\"\n            >\n              <ng-content\n                *ngTemplateOutlet=\"hourButton; context: { $implicit: time }\"\n              />\n            </div>\n          }\n        </div>\n      }\n    </div>\n  } @else {\n    <div class=\"clock-face__container\">\n      @for (time of faceTime; track time.time) {\n        <div\n          class=\"clock-face__number clock-face__number--outer\"\n          [style.transform]=\"'rotateZ(' + time.angle + 'deg)'\"\n        >\n          <button\n            mat-mini-fab\n            disableRipple\n            class=\"mat-elevation-z0\"\n            [color]=\"\n              (time.time\n              | activeMinute\n                : selectedTime?.time\n                : minutesGap\n                : isClockFaceDisabled)\n                ? color\n                : 'void'\n            \"\n            [style.transform]=\"'rotateZ(-' + time.angle + 'deg)'\"\n            [disabled]=\"time.disabled\"\n          >\n            {{\n              time.time\n                | minutesFormatter: minutesGap\n                | timeLocalizer: timeUnit.MINUTE\n            }}\n          </button>\n        </div>\n      }\n    </div>\n  }\n  <div\n    #clockHand\n    class=\"clock-face__clock-hand\"\n    [class.clock-face__clock-hand_minute]=\"unit === timeUnit.MINUTE\"\n    [hidden]=\"isClockFaceDisabled\"\n  >\n    @if (unit === timeUnit.MINUTE) {\n      <button mat-mini-fab [color]=\"color\">\n        <span class=\"clock-face__clock-hand_minute_dot\"></span>\n      </button>\n    }\n  </div>\n  <div class=\"clock-face__center\"></div>\n</div>\n","import { Component, computed, input, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { DateTime } from 'luxon';\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 {\n  getMinutes,\n  disableMinutes,\n} 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-minutes-face',\n  templateUrl: './ngx-mat-timepicker-minutes-face.component.html',\n  imports: [NgxMatTimepickerFaceComponent],\n})\nexport class NgxMatTimepickerMinutesFaceComponent {\n  readonly color = input<ThemePalette>('primary');\n\n  readonly format = input<NgxMatTimepickerFormatType>();\n  readonly maxTime = input<DateTime>();\n  readonly minTime = input<DateTime>();\n\n  readonly minuteChange = output<NgxMatTimepickerClockFace>();\n  readonly minutesGap = input<number>();\n\n  readonly minutesList = computed(() => {\n    const minutes = getMinutes(this.minutesGap());\n    return disableMinutes(minutes, this.selectedHour(), {\n      min: this.minTime(),\n      max: this.maxTime(),\n      format: this.format(),\n      period: this.period(),\n    });\n  });\n  readonly period = input<NgxMatTimepickerPeriods>();\n  readonly selectedHour = input<number>();\n\n  readonly selectedMinute = input<NgxMatTimepickerClockFace>();\n  timeUnit = NgxMatTimepickerUnits;\n}\n","<ngx-mat-timepicker-face\n  [color]=\"color()\"\n  [faceTime]=\"minutesList()\"\n  [selectedTime]=\"selectedMinute()\"\n  [minutesGap]=\"minutesGap()\"\n  [unit]=\"timeUnit.MINUTE\"\n  (timeChange)=\"minuteChange.emit($event)\"\n/>\n","import { Directive, computed, input, model, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { getHours } from '../../utils/ngx-mat-timepicker.utils';\n\n@Directive({\n  selector: '[ngxMatTimepickerHoursFace]',\n  standalone: true,\n})\nexport class NgxMatTimepickerHoursFaceDirective {\n  readonly color = input<ThemePalette>('primary');\n\n  readonly format = model<NgxMatTimepickerFormatType>(24);\n  readonly availableHours = computed(() => {\n    return getHours(this.format());\n  });\n  readonly hoursList = computed(() => {\n    return this.computeHoursList();\n  });\n\n  readonly maxTime = input<DateTime>();\n  readonly minTime = input<DateTime>();\n  readonly selectedHour = input<NgxMatTimepickerClockFace>();\n\n  readonly hourChange = output<NgxMatTimepickerClockFace>();\n  readonly hourSelected = output<number>();\n\n  timeUnit = NgxMatTimepickerUnits;\n\n  onTimeSelected(time: number): void {\n    this.hourSelected.emit(time);\n  }\n\n  protected computeHoursList(): NgxMatTimepickerClockFace[] {\n    return this.availableHours();\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { NgxMatTimepickerPeriods } from '../../models/ngx-mat-timepicker-periods.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { disableHours } from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerHoursFaceDirective } from '../ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive';\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 {\n  readonly period = input<NgxMatTimepickerPeriods>();\n  constructor() {\n    super();\n    this.format.set(12);\n  }\n\n  protected override computeHoursList(): NgxMatTimepickerClockFace[] {\n    return disableHours(this.availableHours(), {\n      min: this.minTime(),\n      max: this.maxTime(),\n      format: this.format(),\n      period: this.period(),\n    });\n  }\n}\n","<ngx-mat-timepicker-face\n  [unit]=\"timeUnit.HOUR\"\n  [format]=\"format()\"\n  [color]=\"color()\"\n  [faceTime]=\"hoursList()\"\n  [selectedTime]=\"selectedHour()\"\n  (timeChange)=\"hourChange.emit($event)\"\n  (timeSelected)=\"onTimeSelected($event)\"\n/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { disableHours } from '../../utils/ngx-mat-timepicker.utils';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerHoursFaceDirective } from '../ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive';\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 {\n  constructor() {\n    super();\n    this.format.set(24);\n  }\n\n  protected override computeHoursList(): NgxMatTimepickerClockFace[] {\n    return disableHours(this.availableHours(), {\n      min: this.minTime(),\n      max: this.maxTime(),\n      format: this.format(),\n    });\n  }\n}\n","<ngx-mat-timepicker-face\n  [unit]=\"timeUnit.HOUR\"\n  [format]=\"format()\"\n  [color]=\"color()\"\n  [faceTime]=\"hoursList()\"\n  [selectedTime]=\"selectedHour()\"\n  (timeChange)=\"hourChange.emit($event)\"\n  (timeSelected)=\"onTimeSelected($event)\"\n/>\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport {\n  animate,\n  sequence,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  ScrollStrategy,\n  CdkOverlayOrigin,\n  CdkConnectedOverlay,\n} from '@angular/cdk/overlay';\nimport {\n  MatButtonToggleGroup,\n  MatButtonToggle,\n} from '@angular/material/button-toggle';\n\nimport { DateTime } from 'luxon';\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 {\n  disableHours,\n  disableMinutes,\n} from '../../utils/ngx-mat-timepicker.utils';\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: [\n    CdkOverlayOrigin,\n    CdkConnectedOverlay,\n    MatButtonToggleGroup,\n    MatButtonToggle,\n  ],\n})\nexport class NgxMatTimepickerPeriodComponent {\n  protected readonly _overlay = inject(Overlay);\n\n  readonly activeTimeUnit = input<NgxMatTimepickerUnits>();\n  readonly format = input<NgxMatTimepickerFormatType>();\n\n  readonly hours = input<NgxMatTimepickerClockFace[]>();\n  readonly minutes = input<NgxMatTimepickerClockFace[]>();\n\n  readonly maxTime = input<DateTime>();\n  readonly minTime = input<DateTime>();\n\n  readonly meridiems = input<string[]>();\n  readonly selectedHour = input<number | string>();\n  readonly selectedPeriod = input<NgxMatTimepickerPeriods>();\n\n  readonly periodChanged = output<NgxMatTimepickerPeriods>();\n\n  readonly isAmDisabled = computed(() => {\n    const times = this._getDisabledTimeByPeriod(NgxMatTimepickerPeriods.AM);\n    return times.every((t) => t.disabled);\n  });\n  readonly isPmDisabled = computed(() => {\n    const times = this._getDisabledTimeByPeriod(NgxMatTimepickerPeriods.PM);\n    return times.every((t) => t.disabled);\n  });\n\n  readonly isPeriodAvailable = computed(() => {\n    const period = this.selectedPeriod();\n    if (period === NgxMatTimepickerPeriods.AM) {\n      return !this.isAmDisabled();\n    }\n    if (period === NgxMatTimepickerPeriods.PM) {\n      return !this.isPmDisabled();\n    }\n    return false;\n  });\n\n  timePeriod = NgxMatTimepickerPeriods;\n  overlayPositionStrategy: FlexibleConnectedPositionStrategy;\n  overlayScrollStrategy: ScrollStrategy =\n    this._overlay.scrollStrategies.reposition();\n\n  changePeriod(period: NgxMatTimepickerPeriods): void {\n    const allowed = this._isSwitchPeriodAvailable(period);\n    if (allowed) {\n      this.periodChanged.emit(period);\n    }\n  }\n\n  private _getDisabledTimeByPeriod(\n    period: NgxMatTimepickerPeriods,\n  ): NgxMatTimepickerClockFace[] {\n    switch (this.activeTimeUnit()) {\n      case NgxMatTimepickerUnits.HOUR:\n        return disableHours(this.hours(), {\n          min: this.minTime(),\n          max: this.maxTime(),\n          format: this.format(),\n          period,\n        });\n\n      case NgxMatTimepickerUnits.MINUTE:\n        return 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\n  class=\"timepicker-period\"\n  cdkOverlayOrigin\n  #eventPanelOrigin=\"cdkOverlayOrigin\"\n>\n  <mat-button-toggle-group\n    vertical\n    hideSingleSelectionIndicator\n    [value]=\"selectedPeriod()\"\n    (valueChange)=\"changePeriod($event)\"\n  >\n    <mat-button-toggle [value]=\"timePeriod.AM\" [disabled]=\"isAmDisabled()\">\n      {{ meridiems()[0] }}\n    </mat-button-toggle>\n\n    <mat-button-toggle [value]=\"timePeriod.PM\" [disabled]=\"isPmDisabled()\">\n      {{ meridiems()[1] }}\n    </mat-button-toggle>\n  </mat-button-toggle-group>\n</div>\n\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>\n  @if (!isPeriodAvailable()) {\n    <div class=\"timepicker-period__warning\" [@scaleInOut]>\n      <p>Current time would be invalid in this period.</p>\n    </div>\n  }\n</ng-template>\n","import { Injectable, Pipe, PipeTransform, inject } 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 } from 'luxon';\n\n@Pipe({\n  name: 'ngxMatTimepickerParser',\n  standalone: true,\n})\n@Injectable()\nexport class NgxMatTimepickerParserPipe implements PipeTransform {\n  private readonly _timepickerLocaleSrv = inject(NgxMatTimepickerLocaleService);\n\n  private get _locale(): string {\n    return this._timepickerLocaleSrv.locale;\n  }\n\n  private get _numberingSystem(): string {\n    return this._timepickerLocaleSrv.numberingSystem;\n  }\n\n  transform(\n    time: string | number,\n    timeUnit = NgxMatTimepickerUnits.HOUR,\n  ): 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(\n        time,\n        'mm',\n        NgxMatTimepickerMeasure.minute,\n      ).toString();\n    }\n\n    return this._parseTime(time, 'HH', NgxMatTimepickerMeasure.hour).toString();\n  }\n\n  private _parseTime(\n    time: string | number,\n    format: string,\n    timeMeasure: NgxMatTimepickerMeasure,\n  ): number {\n    const parsedTime = DateTime.fromFormat(String(time), format, {\n      locale: this._locale,\n      numberingSystem: this._numberingSystem,\n    })[timeMeasure];\n\n    if (!isNaN(parsedTime)) {\n      return parsedTime;\n    }\n\n    throw new Error(`Cannot parse time - ${time}`);\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n  selector: '[ngxMatTimepickerAutofocus]',\n  standalone: true,\n})\nexport class NgxMatTimepickerAutofocusDirective\n  implements OnChanges, OnDestroy\n{\n  private readonly _element = inject(ElementRef);\n  private readonly _document = inject(DOCUMENT, { optional: true });\n\n  @Input('ngxMatTimepickerAutofocus') isFocusActive: boolean;\n\n  private _activeElement = this._document?.activeElement as HTMLElement;\n\n  ngOnChanges() {\n    if (this.isFocusActive) {\n      // To avoid ExpressionChangedAfterItHasBeenCheckedError;\n      setTimeout(() =>\n        this._element.nativeElement.focus({ preventScroll: true }),\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    // To avoid ExpressionChangedAfterItHasBeenCheckedError;\n    setTimeout(() => this._activeElement?.focus({ preventScroll: true }));\n  }\n}\n","import {\n  Component,\n  OnDestroy,\n  Input,\n  ElementRef,\n  AfterViewInit,\n  output,\n  booleanAttribute,\n  inject,\n  ChangeDetectionStrategy,\n  input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgxMatTimepickerUnits } from '../../models/ngx-mat-timepicker-units.enum';\nimport { NgxMatTimepickerClockFace } from '../../models/ngx-mat-timepicker-clock-face.interface';\nimport { NgxMatTimepickerParserPipe } from '../../pipes/ngx-mat-timepicker-parser.pipe';\nimport { NgxMatTimepickerTimeLocalizerPipe } from '../../pipes/ngx-mat-timepicker-time-localizer.pipe';\nimport { NgxMatTimepickerAutofocusDirective } from '../../directives/ngx-mat-timepicker-autofocus.directive';\nimport { isDigit } from '../../utils/ngx-mat-timepicker.utils';\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  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [NgxMatTimepickerParserPipe],\n  imports: [\n    FormsModule,\n    NgxMatTimepickerAutofocusDirective,\n    NgxMatTimepickerParserPipe,\n    NgxMatTimepickerTimeLocalizerPipe,\n  ],\n})\nexport class NgxMatTimepickerDialControlComponent\n  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  readonly disabled = input(false, { transform: booleanAttribute });\n  readonly isActive = input(false, { transform: booleanAttribute });\n  readonly isEditable = input(false, { transform: booleanAttribute });\n\n  readonly minutesGap = input(1);\n  readonly timeList = input<NgxMatTimepickerClockFace[]>([]);\n\n  previousTime: number | string;\n\n  @Input() time: string;\n\n  @Input() timeUnit: NgxMatTimepickerUnits;\n\n  readonly timeChanged = output<NgxMatTimepickerClockFace>();\n  readonly timeUnitChanged = output<NgxMatTimepickerUnits>();\n  readonly focused = output<void>();\n  readonly unfocused = output<void>();\n\n  private readonly _elRef = inject(ElementRef);\n  private readonly _timeParserPipe = inject(NgxMatTimepickerParserPipe);\n\n  focusChanged(value: boolean) {\n    if (value) {\n      this.focused.emit();\n    } else {\n      this.unfocused.emit();\n    }\n  }\n\n  changeTimeByKeyboard(e: KeyboardEvent): 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\n      .querySelector('input')\n      .addEventListener('select', retainSelection, false);\n  }\n\n  ngOnDestroy(): void {\n    this._elRef.nativeElement\n      ?.querySelector('input')\n      ?.removeEventListener('select', retainSelection);\n  }\n\n  onKeydown(e: KeyboardEvent): void {\n    if (!isDigit(e)) {\n      e.preventDefault();\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(\n    event: FocusEvent,\n    unit: NgxMatTimepickerUnits,\n  ): void {\n    event.preventDefault();\n    this.previousTime = this.time;\n    this.timeUnitChanged.emit(unit);\n\n    this.focusChanged(true);\n  }\n\n  updateTime(): void {\n    if (this._selectedTime) {\n      this.timeChanged.emit(this._selectedTime);\n      this.previousTime = this._selectedTime.time;\n    }\n  }\n\n  private _addTime(amount: number): string {\n    return `${+this.time + amount}`.padStart(2, '0');\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\nfunction isTimeDisabledToChange(\n  currentTime: string,\n  nextTime: string,\n  timeList: NgxMatTimepickerClockFace[],\n): 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(\n  time: string,\n  timeList: NgxMatTimepickerClockFace[],\n): boolean {\n  const selectedTime = timeList.find((value) => value.time === +time);\n\n  return !selectedTime || (selectedTime && selectedTime.disabled);\n}\n","<div class=\"wrapper\" [class.active]=\"isActive()\">\n  @if (!isEditable()) {\n    <input\n      readonly\n      class=\"control\"\n      [ngModel]=\"time | timeLocalizer: timeUnit : true\"\n      [disabled]=\"disabled()\"\n      [ngxMatTimepickerAutofocus]=\"isActive()\"\n      (input)=\"updateTime()\"\n      (focus)=\"saveTimeAndChangeTimeUnit($event, timeUnit)\"\n      (blur)=\"focusChanged(false)\"\n      (ngModelChange)=\"time = $event\"\n    />\n  } @else {\n    <input\n      class=\"control\"\n      [ngModel]=\"\n        time | ngxMatTimepickerParser: timeUnit | timeLocalizer: timeUnit : true\n      \"\n      [disabled]=\"disabled()\"\n      [ngxMatTimepickerAutofocus]=\"isActive()\"\n      (input)=\"updateTime()\"\n      (focus)=\"saveTimeAndChangeTimeUnit($event, timeUnit)\"\n      (blur)=\"focusChanged(false)\"\n      (keydown)=\"onKeydown($event)\"\n      (keypress)=\"changeTimeByKeyboard($event)\"\n      (ngModelChange)=\"onModelChange($event)\"\n    />\n  }\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  TemplateRef,\n  computed,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { DateTime, Info } from 'luxon';\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 {\n  disableHours,\n  disableMinutes,\n  getHours,\n  getMinutes,\n} 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\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: [\n    NgTemplateOutlet,\n    NgxMatTimepickerDialControlComponent,\n    NgxMatTimepickerPeriodComponent,\n  ]\n})\nexport class NgxMatTimepickerDialComponent {\n  private locale = inject(NgxMatTimepickerLocaleService).locale;\n\n  meridiems = Info.meridiems({ locale: this.locale });\n  timeUnit = NgxMatTimepickerUnits;\n\n  readonly color = input<ThemePalette>('primary');\n\n  readonly editableHintTmpl = input<TemplateRef<Node>>();\n  readonly format = input<NgxMatTimepickerFormatType>();\n  readonly hour = input<number | string>();\n  readonly minute = input<number | string>();\n  readonly minutesGap = input<number>();\n  readonly period = input<NgxMatTimepickerPeriods>();\n  readonly activeTimeUnit = input<NgxMatTimepickerUnits>();\n\n  readonly hoursOnly = input<boolean>();\n  readonly isEditable = input<boolean>();\n\n  readonly maxTime = input<DateTime>();\n  readonly minTime = input<DateTime>();\n\n  readonly isHintVisible = signal(false);\n\n  readonly hourString = computed(() => `${this.hour()}`);\n  readonly minuteString = computed(() => `${this.minute()}`);\n\n  readonly hours = computed(() => {\n    const hours = getHours(this.format());\n    return disableHours(hours, {\n      min: this.minTime(),\n      max: this.maxTime(),\n      format: this.format(),\n      period: this.period(),\n    });\n  });\n  readonly minutes = computed(() => {\n    const minutes = getMinutes(this.minutesGap());\n    return disableMinutes(minutes, +this.hour(), {\n      min: this.minTime(),\n      max: this.maxTime(),\n      format: this.format(),\n      period: this.period(),\n    });\n  });\n\n  readonly hourChanged = output<NgxMatTimepickerClockFace>();\n  readonly minuteChanged = output<NgxMatTimepickerClockFace>();\n  readonly periodChanged = output<NgxMatTimepickerPeriods>();\n  readonly timeUnitChanged = output<NgxMatTimepickerUnits>();\n\n  changeHour(hour: NgxMatTimepickerClockFace): void {\n    this.hourChanged.emit(hour);\n  }\n\n  changeMinute(minute: NgxMatTimepickerClockFace): void {\n    this.minuteChanged.emit(minute);\n  }\n\n  changePeriod(period: NgxMatTimepickerPeriods): void {\n    this.periodChanged.emit(period);\n  }\n\n  changeTimeUnit(unit: NgxMatTimepickerUnits): void {\n    this.timeUnitChanged.emit(unit);\n  }\n\n  hideHint(): void {\n    this.isHintVisible.set(false);\n  }\n\n  showHint(): void {\n    this.isHintVisible.set(true);\n  }\n}\n","<div class=\"container\">\n  <div class=\"time\">\n    <ngx-mat-timepicker-dial-control\n      [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    <span class=\"seperator\">:</span>\n    <ngx-mat-timepicker-dial-control\n      [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  </div>\n  @if (format() !== 24) {\n    <ngx-mat-timepicker-period\n      class=\"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)\"\n    />\n  }\n</div>\n\n@if (isEditable() || editableHintTmpl()) {\n  <div [class.hint-hidden]=\"!isHintVisible()\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        editableHintTmpl() ? editableHintTmpl() : editableHintDefault\n      \"\n    />\n    <ng-template #editableHintDefault>\n      <small class=\"hint\">\n        * use arrows (<span>&#8645;</span>) to change the time\n      </small>\n    </ng-template>\n  </div>\n}\n","import { Component, Input, booleanAttribute } 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  @Input({ transform: booleanAttribute }) appendToInput: boolean;\n  @Input() inputElement: HTMLInputElement;\n}\n","@if (appendToInput) {\n  <div>\n    <ng-container *ngTemplateOutlet=\"timepickerOutlet\" />\n  </div>\n} @else {\n  <ng-container *ngTemplateOutlet=\"timepickerOutlet\" />\n}\n<ng-template #timepickerOutlet>\n  <ng-content></ng-content>\n</ng-template>\n","import { Component, Inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  MAT_DIALOG_DATA,\n  MatDialogActions,\n  MatDialogContent,\n  MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatButton } from '@angular/material/button';\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 { NgxMatTimepickerMinutesFaceComponent } from '../ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component';\nimport { NgxMatTimepicker12HoursFaceComponent } from '../ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component';\nimport { NgxMatTimepicker24HoursFaceComponent } 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  imports: [\n    // Common\n    NgTemplateOutlet,\n    // Material\n    MatButton,\n    MatDialogContent,\n    MatDialogActions,\n    // NgxMatTimepicker\n    NgxMatTimepickerContentComponent,\n    NgxMatTimepickerDialComponent,\n    NgxMatTimepicker24HoursFaceComponent,\n    NgxMatTimepicker12HoursFaceComponent,\n    NgxMatTimepickerMinutesFaceComponent,\n  ],\n})\nexport class NgxMatTimepickerDialogComponent extends NgxMatTimepickerBaseDirective {\n  constructor(\n    @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","<ng-template #cancelBtnDefault>\n  <button mat-button [color]=\"color()\">CANCEL</button>\n</ng-template>\n\n<ng-template #confirmBtnDefault>\n  <button mat-button [color]=\"color()\">OK</button>\n</ng-template>\n\n<div mat-dialog-content>\n  <ngx-mat-timepicker-content\n    [appendToInput]=\"data.appendToInput\"\n    [inputElement]=\"data.inputElement\"\n  >\n    <div class=\"timepicker\" [class]=\"data.timepickerClass\">\n      <div\n        [class.is-editable]=\"data.enableKeyboardInput\"\n        class=\"timepicker-header\"\n      >\n        <ngx-mat-timepicker-dial\n          [color]=\"color()\"\n          [format]=\"data.format\"\n          [hour]=\"selectedHour()?.time\"\n          [minute]=\"selectedMinute()?.time\"\n          [period]=\"selectedPeriod()\"\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        />\n      </div>\n      <div class=\"timepicker-body\">\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                  [selectedHour]=\"selectedHour()\"\n                  [minTime]=\"data.minTime\"\n                  [maxTime]=\"data.maxTime\"\n                  [format]=\"data.format\"\n                  (hourChange)=\"onHourChange($event)\"\n                  (hourSelected)=\"onHourSelected($event)\"\n                />\n              } @else {\n                <ngx-mat-timepicker-12-hours-face\n                  [color]=\"color()\"\n                  [selectedHour]=\"selectedHour()\"\n                  [period]=\"selectedPeriod()\"\n                  [minTime]=\"data.minTime\"\n                  [maxTime]=\"data.maxTime\"\n                  (hourChange)=\"onHourChange($event)\"\n                  (hourSelected)=\"onHourSelected($event)\"\n                />\n              }\n            </div>\n          }\n          @case (timeUnit.MINUTE) {\n            <ngx-mat-timepicker-minutes-face\n              [color]=\"color()\"\n              [selectedMinute]=\"selectedMinute()\"\n              [selectedHour]=\"selectedHour()?.time\"\n              [minTime]=\"data.minTime\"\n              [maxTime]=\"data.maxTime\"\n              [format]=\"data.format\"\n              [period]=\"selectedPeriod()\"\n              [minutesGap]=\"data.minutesGap\"\n              (minuteChange)=\"onMinuteChange($event)\"\n            />\n          }\n        }\n      </div>\n    </div>\n  </ngx-mat-timepicker-content>\n</div>\n<div mat-dialog-actions align=\"end\">\n  <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n  <div (click)=\"close()\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        data.cancelBtnTmpl ? data.cancelBtnTmpl : cancelBtnDefault\n      \"\n    />\n  </div>\n  <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n  <div (click)=\"setTime()\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        data.confirmBtnTmpl ? data.confirmBtnTmpl : confirmBtnDefault\n      \"\n    />\n  </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MatButton } from '@angular/material/button';\n\nimport { NGX_MAT_TIMEPICKER_CONFIG } from '../../tokens/ngx-mat-timepicker-config.token';\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 { NgxMatTimepickerMinutesFaceComponent } from '../ngx-mat-timepicker-minutes-face/ngx-mat-timepicker-minutes-face.component';\nimport { NgxMatTimepicker12HoursFaceComponent } from '../ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component';\nimport { NgxMatTimepicker24HoursFaceComponent } 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  host: {\n    class: 'mat-app-background',\n  },\n  imports: [\n    NgTemplateOutlet,\n    A11yModule,\n    MatButton,\n    NgxMatTimepickerDialComponent,\n    NgxMatTimepickerContentComponent,\n    NgxMatTimepicker24HoursFaceComponent,\n    NgxMatTimepicker12HoursFaceComponent,\n    NgxMatTimepickerMinutesFaceComponent,\n  ],\n})\nexport class NgxMatTimepickerStandaloneComponent extends NgxMatTimepickerBaseDirective {\n  constructor(\n    @Inject(NGX_MAT_TIMEPICKER_CONFIG)\n    public override data: NgxMatTimepickerConfig,\n    timepickerSrv: NgxMatTimepickerService,\n    eventSrv: NgxMatTimepickerEventService,\n    timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n  ) {\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 [color]=\"color()\">CANCEL</button>\n</ng-template>\n\n<ng-template #confirmBtnDefault>\n  <button mat-button [color]=\"color()\">OK</button>\n</ng-template>\n\n<div cdkTrapFocus>\n  <ngx-mat-timepicker-content\n    [appendToInput]=\"data.appendToInput\"\n    [inputElement]=\"data.inputElement\"\n  >\n    <div class=\"timepicker\" [class]=\"data.timepickerClass\">\n      <div\n        [class.is-editable]=\"data.enableKeyboardInput\"\n        class=\"timepicker-header\"\n      >\n        <ngx-mat-timepicker-dial\n          [color]=\"color()\"\n          [format]=\"data.format\"\n          [hour]=\"selectedHour()?.time\"\n          [minute]=\"selectedMinute()?.time\"\n          [period]=\"selectedPeriod()\"\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        />\n      </div>\n      <div class=\"timepicker__main-content\">\n        <div class=\"timepicker__body\">\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()\"\n                    [minTime]=\"data.minTime\"\n                    [maxTime]=\"data.maxTime\"\n                    [format]=\"data.format\"\n                    (hourSelected)=\"onHourSelected($event)\"\n                  />\n                } @else {\n                  <ngx-mat-timepicker-12-hours-face\n                    [color]=\"color()\"\n                    (hourChange)=\"onHourChange($event)\"\n                    [selectedHour]=\"selectedHour()\"\n                    [period]=\"selectedPeriod()\"\n                    [minTime]=\"data.minTime\"\n                    [maxTime]=\"data.maxTime\"\n                    (hourSelected)=\"onHourSelected($event)\"\n                  />\n                }\n              </div>\n            }\n            @case (timeUnit.MINUTE) {\n              <ngx-mat-timepicker-minutes-face\n                [color]=\"color()\"\n                [selectedMinute]=\"selectedMinute()\"\n                [selectedHour]=\"selectedHour()?.time\"\n                [minTime]=\"data.minTime\"\n                [maxTime]=\"data.maxTime\"\n                [format]=\"data.format\"\n                [period]=\"selectedPeriod()\"\n                [minutesGap]=\"data.minutesGap\"\n                (minuteChange)=\"onMinuteChange($event)\"\n              />\n            }\n          }\n        </div>\n      </div>\n    </div>\n  </ngx-mat-timepicker-content>\n\n  <div class=\"ngx-mat-timepicker-standalone-actions\">\n    <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n    <div (click)=\"close()\">\n      <ng-container\n        *ngTemplateOutlet=\"\n          data.cancelBtnTmpl ? data.cancelBtnTmpl : cancelBtnDefault\n        \"\n      />\n    </div>\n    <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n    <div (click)=\"setTime()\">\n      <ng-container\n        *ngTemplateOutlet=\"\n          data.confirmBtnTmpl ? data.confirmBtnTmpl : confirmBtnDefault\n        \"\n      />\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  HostBinding,\n  Input,\n  TemplateRef,\n  booleanAttribute,\n  inject,\n  input,\n  output,\n} from '@angular/core';\nimport {\n  CdkOverlayOrigin,\n  ConnectedPosition,\n  OverlayRef,\n  CdkConnectedOverlay,\n} from '@angular/cdk/overlay';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ThemePalette } from '@angular/material/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerRef } from '../../models/ngx-mat-timepicker-ref.interface';\nimport { NgxMatTimepickerConfig } from '../../models/ngx-mat-timepicker-config.interface';\nimport { NgxMatTimepickerFormatType } from '../../models/ngx-mat-timepicker-format.type';\nimport { NGX_MAT_TIMEPICKER_CONFIG } from '../../tokens/ngx-mat-timepicker-config.token';\nimport { NgxMatTimepickerAdapter } from '../../services/ngx-mat-timepicker-adapter';\nimport { NgxMatTimepickerDirective } from '../../directives/ngx-mat-timepicker.directive';\nimport { NgxMatTimepickerDialogComponent } from '../ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component';\nimport { NgxMatTimepickerStandaloneComponent } from '../ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component';\n\nlet config: NgxMatTimepickerConfig;\n\n@Component({\n  selector: 'ngx-mat-timepicker',\n  template: `\n    <ng-template\n      cdkConnectedOverlay\n      cdkConnectedOverlayHasBackdrop\n      cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n      [cdkConnectedOverlayOpen]=\"showPicker\"\n      [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n      [cdkConnectedOverlayPositions]=\"overlayPositions\"\n      (backdropClick)=\"close()\"\n    >\n      <ngx-mat-timepicker-standalone />\n    </ng-template>\n  `,\n  providers: [\n    {\n      provide: NGX_MAT_TIMEPICKER_CONFIG,\n      useFactory() {\n        return config;\n      },\n    },\n  ],\n  imports: [CdkConnectedOverlay, NgxMatTimepickerStandaloneComponent]\n})\nexport class NgxMatTimepickerComponent implements NgxMatTimepickerRef {\n  private readonly _dialog = inject(MatDialog);\n\n  static nextId = 0;\n\n  @Input({ transform: booleanAttribute })\n  appendToInput = false;\n\n  color = input<ThemePalette>('primary');\n\n  get disabled(): boolean {\n    return this._timepickerInput?.disabled;\n  }\n\n  @Input({ transform: booleanAttribute })\n  enableKeyboardInput: boolean;\n\n  @Input()\n  set format(value: NgxMatTimepickerFormatType) {\n    this._format = NgxMatTimepickerAdapter.isTwentyFour(value) ? 24 : 12;\n  }\n  get format(): NgxMatTimepickerFormatType {\n    return this._timepickerInput?.format ?? this._format;\n  }\n\n  get inputElement(): HTMLInputElement {\n    return this._timepickerInput?.element;\n  }\n\n  get maxTime(): DateTime {\n    return this._timepickerInput\n      ? (this._timepickerInput.max as DateTime)\n      : this.max;\n  }\n\n  get minTime(): DateTime {\n    return this._timepickerInput\n      ? (this._timepickerInput.min as DateTime)\n      : this.min;\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  get minutesGap(): number {\n    return this._minutesGap;\n  }\n\n  get overlayOrigin(): CdkOverlayOrigin {\n    return this._timepickerInput\n      ? this._timepickerInput.cdkOverlayOrigin\n      : undefined;\n  }\n\n  get time(): string {\n    return this._timepickerInput?.value;\n  }\n\n  @Input() cancelBtnTmpl: TemplateRef<Node>;\n  @Input() confirmBtnTmpl: TemplateRef<Node>;\n  @Input() editableHintTmpl: TemplateRef<Node>;\n\n  @Input() defaultTime: string;\n  @Input({ transform: booleanAttribute })\n  disableAnimation: boolean;\n  @Input({ transform: booleanAttribute })\n  preventOverlayClick: boolean;\n  @Input() hoursOnly = false;\n  @Input() isEsc = true;\n\n  @Input() max: DateTime;\n  @Input() min: DateTime;\n  @Input() timepickerClass: string;\n\n  readonly opened = output<void>();\n  readonly closed = output<void>();\n  readonly timeSet = output<string>();\n  readonly timeChanged = output<string>();\n  readonly hourSelected = output<number>();\n\n  @HostBinding('id') id =\n    `ngx_mat_timepicker_${++NgxMatTimepickerComponent.nextId}`;\n\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  showPicker = false;\n  timeUpdated$ = new BehaviorSubject<string>(undefined); // used in the dialog, check if a better approach can be used\n\n  private _dialogRef: MatDialogRef<NgxMatTimepickerDialogComponent, void>;\n  private _format: NgxMatTimepickerFormatType = 12;\n  private _minutesGap: number;\n  private _overlayRef: OverlayRef;\n  private _timepickerInput: NgxMatTimepickerDirective;\n\n  close(): void {\n    if (this.appendToInput) {\n      this._overlayRef?.dispose();\n    } else {\n      this._dialogRef?.close();\n    }\n    this.inputElement.focus(); // Fix ExpressionHasChangedAfterCheck error on overlay destroy\n    this.showPicker = false;\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      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\n    if (this.appendToInput) {\n      this.showPicker = true;\n    } else {\n      this._dialogRef = this._dialog.open(NgxMatTimepickerDialogComponent, {\n        panelClass: 'ngx-mat-timepicker-dialog',\n        data: {\n          ...config,\n        },\n      });\n      this._dialogRef.afterClosed().subscribe(() => {\n        this.closed.emit();\n      });\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 = undefined;\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  standalone: true,\n})\nexport class NgxMatTimepickerToggleIconDirective {}\n","import { Component, ContentChild, Input } from '@angular/core';\nimport { MatIconButton } 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  imports: [MatIconButton],\n})\nexport class NgxMatTimepickerToggleComponent {\n  @Input()\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n  get disabled(): boolean {\n    return this._disabled === undefined\n      ? this.timepicker?.disabled\n      : this._disabled;\n  }\n\n  @ContentChild(NgxMatTimepickerToggleIconDirective, { static: true })\n  customIcon: NgxMatTimepickerToggleIconDirective;\n\n  // eslint-disable-next-line @angular-eslint/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\n  type=\"button\"\n  class=\"ngx-mat-timepicker-toggle mat-elevation-z0\"\n  mat-icon-button\n  [disabled]=\"disabled\"\n  (click)=\"open($event)\"\n>\n  @if (!customIcon) {\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      fill=\"currentColor\"\n      class=\"ngx-mat-timepicker-toggle-default-icon\"\n    >\n      <path\n        d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 2v6.414l4.293 4.293 1.414-1.414L13 11.586V6h-2z\"\n      />\n    </svg>\n  }\n\n  <ng-content select=\"[ngxMatTimepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  booleanAttribute,\n  input,\n  output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n  FloatLabelType,\n  MatFormField,\n  MatLabel,\n  MatSuffix,\n} 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 { isDigit } 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: [\n    FormsModule,\n    MatFormField,\n    MatLabel,\n    MatSuffix,\n    MatInput,\n    NgxMatTimepickerParserPipe,\n    NgxMatTimepickerTimeLocalizerPipe,\n  ]\n})\nexport class NgxMatTimepickerControlComponent implements OnChanges {\n  static nextId = 0;\n\n  readonly color = input<ThemePalette>('primary');\n  readonly floatLabel = input<FloatLabelType>('auto');\n\n  @Input({ transform: booleanAttribute })\n  disabled: boolean;\n\n  id: number = NgxMatTimepickerControlComponent.nextId++;\n  isFocused: boolean;\n\n  @Input() max: number;\n  @Input() min: number;\n  @Input() placeholder: string;\n  @Input({ transform: booleanAttribute }) preventTyping: boolean;\n\n  @Input() time: number;\n\n  @Input() timeList: NgxMatTimepickerClockFace[];\n  @Input() timeUnit: NgxMatTimepickerUnits;\n\n  readonly timeChanged = output<number>();\n\n  private _previousTime: number;\n\n  constructor(private _timeParser: NgxMatTimepickerParserPipe) { }\n\n  changeTime(event: InputEvent): void {\n    event.stopPropagation();\n\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(\n          previousTime,\n          this._getPrevAvailableTime.bind(this),\n        );\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(\n          nextTime,\n          this._getNextAvailableTime.bind(this),\n        );\n      }\n\n      if (nextTime !== this.time) {\n        this.timeChanged.emit(nextTime);\n      }\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\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: KeyboardEvent): void {\n    event.stopPropagation();\n\n    if (!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(\n    currentTime: number,\n    fn: (index: number) => number | undefined,\n  ): number | undefined {\n    const currentTimeIndex = this.timeList.findIndex(\n      (time) => time.time === currentTime,\n    );\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(\n      (faceTime: NgxMatTimepickerClockFace) => faceTime.time === time,\n    ).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","<mat-form-field\n  class=\"ngx-mat-timepicker-control\"\n  [color]=\"color()\"\n  [floatLabel]=\"floatLabel()\"\n  [class.active]=\"isFocused\"\n>\n  <input\n    id=\"ngx_mat_timepicker_field_{{ id }}\"\n    name=\"ngx_mat_timepicker_field_{{ id }}\"\n    matInput\n    maxlength=\"2\"\n    [ngModel]=\"\n      time | ngxMatTimepickerParser: timeUnit | timeLocalizer: timeUnit : true\n    \"\n    [placeholder]=\"placeholder\"\n    [disabled]=\"disabled\"\n    (ngModelChange)=\"onModelChange($event)\"\n    (beforeinput)=\"changeTime($event)\"\n    (keydown)=\"onKeydown($event)\"\n    (focus)=\"onFocus()\"\n    (blur)=\"onBlur()\"\n  />\n  <div class=\"arrows-wrap\" matSuffix>\n    <button class=\"arrow\" role=\"button\" (click)=\"increase()\">\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        height=\"18\"\n        viewBox=\"0 0 24 24\"\n        width=\"18\"\n      >\n        <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n        <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z\" />\n      </svg>\n    </button>\n    <button class=\"arrow\" role=\"button\" (click)=\"decrease()\">\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        height=\"18\"\n        viewBox=\"0 0 24 24\"\n        width=\"18\"\n      >\n        <path d=\"M0 0h24v24H0V0z\" 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    </button>\n  </div>\n</mat-form-field>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  booleanAttribute,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  ControlValueAccessor,\n  NG_VALUE_ACCESSOR,\n  FormsModule,\n} from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\nimport { ThemePalette, MatOption } from '@angular/material/core';\nimport { FloatLabelType, MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil, tap } from 'rxjs/operators';\nimport { DateTime } from 'luxon';\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\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  imports: [\n    NgTemplateOutlet,\n    FormsModule,\n    MatFormField,\n    MatSelect,\n    MatIcon,\n    MatOption,\n    NgxMatTimepickerControlComponent,\n    NgxMatTimepickerToggleComponent,\n    NgxMatTimepickerToggleIconDirective,\n    NgxMatTimepickerComponent,\n  ],\n})\nexport class NgxMatTimepickerFieldComponent\n  implements OnInit, OnDestroy, ControlValueAccessor\n{\n  readonly color = input<ThemePalette>('primary');\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  readonly floatLabel = input<FloatLabelType>('auto');\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    } else {\n      this._format = 12;\n      this.minHour = 1;\n      this.maxHour = 12;\n    }\n    this.hoursList = NgxMatTimepickerUtils.getHours(this._format);\n    const isDynamicallyChanged =\n      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, {\n        locale: this._locale,\n        format: this.format,\n      });\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, {\n        locale: this._locale,\n        format: this.format,\n      });\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({ transform: booleanAttribute }) controlOnly: boolean;\n\n  @Input({ transform: booleanAttribute }) disabled: boolean;\n\n  readonly hour = signal<NgxMatTimepickerClockFace>(undefined);\n  readonly hour$ = toObservable(this.hour);\n\n  hoursList: NgxMatTimepickerClockFace[];\n  isChangePeriodDisabled: boolean;\n  isTimeRangeSet: boolean;\n  maxHour = 12;\n  minHour = 1;\n\n  readonly minute = signal<NgxMatTimepickerClockFace>(undefined);\n  readonly minute$ = toObservable(this.minute);\n\n  minutesList: NgxMatTimepickerClockFace[];\n  period: NgxMatTimepickerPeriods = NgxMatTimepickerPeriods.AM;\n  periods: NgxMatTimepickerPeriods[] = [\n    NgxMatTimepickerPeriods.AM,\n    NgxMatTimepickerPeriods.PM,\n  ];\n\n  readonly timeChanged = output<string>();\n  timepickerTime: string;\n\n  timeUnit = NgxMatTimepickerUnits;\n  @Input() toggleIcon: TemplateRef<HTMLObjectElement>;\n\n  private _defaultTime: string;\n  private _format: NgxMatTimepickerFormatType = 12;\n  private _isDefaultTime: boolean;\n  private _isFirstTimeChange = 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(\n    private _timepickerService: NgxMatTimepickerService,\n    private _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n  ) {}\n\n  changeHour(hour: number): void {\n    this._timepickerService.setHour(\n      this.hoursList.find((h) => h.time === hour),\n    );\n    this._changeTime();\n  }\n\n  changeMinute(minute: number): void {\n    this._timepickerService.setMinute(\n      this.minutesList.find((m) => m.time === minute),\n    );\n    this._changeTime();\n  }\n\n  changePeriod(value: NgxMatTimepickerPeriods): void {\n    this._timepickerService.setPeriod(value);\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.hour$\n      .pipe(\n        tap(\n          (clockTime: NgxMatTimepickerClockFace) =>\n            (this._selectedHour = clockTime?.time),\n        ),\n        map(this._changeDefaultTimeValue.bind(this)),\n        tap(() => this.isTimeRangeSet && this._updateAvailableMinutes()),\n      )\n      .subscribe({\n        next: (v: NgxMatTimepickerClockFace) => this.hour.set(v),\n      });\n    this._timepickerService.minute$\n      .pipe(\n        map(this._changeDefaultTimeValue.bind(this)),\n        tap(() => (this._isFirstTimeChange = false)),\n      )\n      .subscribe({\n        next: (v: NgxMatTimepickerClockFace) => this.minute.set(v),\n      });\n\n    if (this.format === 12) {\n      this._timepickerService.period$\n        .pipe(\n          distinctUntilChanged<NgxMatTimepickerPeriods>(),\n          tap((period: NgxMatTimepickerPeriods) => (this.period = period)),\n          tap(\n            (period) =>\n              (this.isChangePeriodDisabled = this._isPeriodDisabled(period)),\n          ),\n          takeUntil(this._subsCtrl$),\n        )\n        .subscribe(() => this.isTimeRangeSet && this._updateAvailableTime());\n    }\n  }\n\n  onTimeSet(time: string): void {\n    this._updateTime(time);\n    this._emitLocalTimeChange(time);\n  }\n\n  registerOnChange(fn: (time: string) => 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  writeValue(val: string): void {\n    if (val) {\n      this._initTime(val);\n    } else {\n      this._resetTime();\n    }\n  }\n\n  private _changeDefaultTimeValue(\n    clockFaceTime: NgxMatTimepickerClockFace,\n  ): 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()?.time) && !isNaN(this.minute()?.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, {\n      format: this.format,\n      locale: this._locale,\n    });\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.isTimeAvailable(\n      time,\n      this.min as DateTime,\n      this.max as DateTime,\n      'minute',\n      null,\n      this.format,\n    );\n    if (!isDefaultTimeAvailable) {\n      if (this.min) {\n        this._updateTime(\n          NgxMatTimepickerAdapter.fromDateTimeToString(\n            this.min as DateTime,\n            this.format,\n          ),\n        );\n\n        return;\n      }\n      if (this.max) {\n        this._updateTime(\n          NgxMatTimepickerAdapter.fromDateTimeToString(\n            this.max as DateTime,\n            this.format,\n          ),\n        );\n\n        return;\n      }\n    }\n    this._updateTime(time);\n  }\n\n  private _isPeriodDisabled(period: NgxMatTimepickerPeriods): boolean {\n    return NgxMatTimepickerUtils.disableHours(\n      NgxMatTimepickerUtils.getHours(12),\n      {\n        min: this.min as DateTime,\n        max: this.max as DateTime,\n        format: 12,\n        period:\n          period === NgxMatTimepickerPeriods.AM\n            ? NgxMatTimepickerPeriods.PM\n            : NgxMatTimepickerPeriods.AM,\n      },\n    ).every((time) => time.disabled);\n  }\n\n  private _onChange: (value: string) => void = () => {\n    // ignore\n  };\n  private _onTouched: (value: string) => void = () => {\n    // ignore\n  };\n\n  private _resetTime(): void {\n    this._timepickerService.setHour({ angle: 0, time: null });\n    this._timepickerService.setMinute({ 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(\n      this.minutesList,\n      this._selectedHour,\n      {\n        min: this.min as DateTime,\n        max: this.max as DateTime,\n        format: this.format,\n        period: this.period,\n      },\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, {\n        locale: this._locale,\n        format: this.format,\n      });\n      this._timepickerService.setDefaultTimeIfAvailable(\n        formattedTime,\n        this.min as DateTime,\n        this.max as DateTime,\n        this.format,\n      );\n      this.timepickerTime = formattedTime;\n    }\n  }\n}\n","<div class=\"field-group\" [class.disabled]=\"disabled\">\n  <ngx-mat-timepicker-time-control\n    class=\"first\"\n    [color]=\"color()\"\n    [floatLabel]=\"floatLabel()\"\n    [placeholder]=\"'HH'\"\n    [time]=\"hour()?.time\"\n    [min]=\"minHour\"\n    [max]=\"maxHour\"\n    [timeUnit]=\"timeUnit.HOUR\"\n    [disabled]=\"disabled\"\n    [timeList]=\"hoursList\"\n    [preventTyping]=\"isTimeRangeSet\"\n    (timeChanged)=\"changeHour($event)\"\n  />\n  <div class=\"wrapped-field\">\n    <span class=\"separator-colon second\">:</span>\n  </div>\n  <ngx-mat-timepicker-time-control\n    class=\"third\"\n    [color]=\"color()\"\n    [floatLabel]=\"floatLabel()\"\n    [placeholder]=\"'MM'\"\n    [time]=\"minute()?.time\"\n    [min]=\"0\"\n    [max]=\"59\"\n    [timeUnit]=\"timeUnit.MINUTE\"\n    [disabled]=\"disabled\"\n    [timeList]=\"minutesList\"\n    [preventTyping]=\"isTimeRangeSet\"\n    (timeChanged)=\"changeMinute($event)\"\n  />\n  @if (format !== 24) {\n    <mat-form-field class=\"period-select forth\" [color]=\"color()\">\n      <mat-select\n        [ngModel]=\"period\"\n        [disabled]=\"disabled || isChangePeriodDisabled\"\n        (selectionChange)=\"changePeriod($event.value)\"\n      >\n        @for (option of periods; track option) {\n          <mat-option [value]=\"option\">{{ option }}</mat-option>\n        }\n      </mat-select>\n    </mat-form-field>\n  }\n  @if (!controlOnly) {\n    <div class=\"wrapped-field\">\n      <ngx-mat-timepicker-toggle\n        class=\"ngx-mat-timepicker__toggle\"\n        [for]=\"timepicker\"\n        [disabled]=\"disabled\"\n      >\n        <span ngxMatTimepickerToggleIcon>\n          <ng-container *ngTemplateOutlet=\"toggleIcon || defaultIcon\" />\n        </span>\n      </ngx-mat-timepicker-toggle>\n    </div>\n  }\n</div>\n\n<ngx-mat-timepicker\n  #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/>\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  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  Optional,\n  booleanAttribute,\n} from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Subject, takeUntil } from 'rxjs';\nimport { DateTime } from 'luxon';\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\n@Directive({\n  selector: '[ngxMatTimepicker]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: NgxMatTimepickerDirective,\n      multi: true,\n    },\n  ],\n  host: {\n    '[disabled]': 'disabled',\n    '(blur)': 'onTouched()',\n  },\n  standalone: true,\n})\nexport class NgxMatTimepickerDirective\n  implements ControlValueAccessor, OnDestroy, OnChanges\n{\n  get element(): HTMLInputElement {\n    return this._elementRef && this._elementRef.nativeElement;\n  }\n\n  get format(): NgxMatTimepickerFormatType {\n    return this._format;\n  }\n\n  @Input()\n  set format(value: number) {\n    this._format = NgxMatTimepickerAdapter.isTwentyFour(\n      +value as NgxMatTimepickerFormatType,\n    )\n      ? 24\n      : 12;\n    const isDynamicallyChanged =\n      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 max(): string | 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, {\n        locale: this._locale,\n        format: this.format,\n      });\n\n      return;\n    }\n    this._max = value;\n  }\n\n  get min(): string | 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, {\n        locale: this._locale,\n        format: this.format,\n      });\n\n      return;\n    }\n    this._min = value;\n  }\n\n  @Input('ngxMatTimepicker')\n  set timepicker(picker: NgxMatTimepickerComponent) {\n    this._registerTimepicker(picker);\n  }\n\n  get value(): string {\n    if (!this._value) {\n      return '';\n    }\n\n    return NgxMatTimepickerAdapter.toLocaleTimeString(this._value, {\n      format: this.format,\n      locale: this._locale,\n    });\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, {\n      locale: this._locale,\n      format: this.format,\n    });\n    const isAvailable = NgxMatTimepickerAdapter.isTimeAvailable(\n      time,\n      this._min as DateTime,\n      this._max as DateTime,\n      'minute',\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  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    new CdkOverlayOrigin(\n      this._matFormField\n        ? this._matFormField.getConnectedOverlayOrigin()\n        : this._elementRef,\n    );\n\n  @Input({ transform: booleanAttribute })\n  disableClick: boolean;\n  @Input({ transform: booleanAttribute })\n  disabled: boolean;\n\n  private _format: NgxMatTimepickerFormatType = 12;\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 _value = '';\n\n  constructor(\n    private _elementRef: ElementRef,\n    private _timepickerLocaleSrv: NgxMatTimepickerLocaleService,\n    @Optional() @Inject(MatFormField) private _matFormField: MatFormField,\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    // ignore\n  };\n\n  registerOnChange(fn: (value: string) => 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: string) => void = () => {\n    // ignore\n  };\n\n  private _registerTimepicker(picker: NgxMatTimepickerComponent): void {\n    if (picker) {\n      this._timepicker = picker;\n      this._timepicker.registerInput(this);\n      outputToObservable(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    } else {\n      throw new Error(\n        'NgxMatTimepickerComponent is not defined.' +\n          ' Please make sure you passed the timepicker to ngxMatTimepicker directive',\n      );\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","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateTime } from 'luxon';\n\nimport { NgxMatTimepickerUnits } from '../models/ngx-mat-timepicker-units.enum';\n\n@Pipe({\n  name: 'timeFormatter',\n  standalone: true,\n})\nexport class NgxMatTimepickerTimeFormatterPipe implements PipeTransform {\n  transform(\n    time: number | string,\n    timeUnit: NgxMatTimepickerUnits,\n  ): string | number {\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","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MAT_FAB_DEFAULT_OPTIONS } from '@angular/material/button';\n\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 { NgxMatTimepickerHoursFaceDirective } from './components/ngx-mat-timepicker-hours-face/ngx-mat-timepicker-hours-face.directive';\n// COMPONENTS\nimport { NgxMatTimepickerContentComponent } from './components/ngx-mat-timepicker-content/ngx-mat-timepicker-content.component';\nimport { NgxMatTimepickerDialogComponent } from './components/ngx-mat-timepicker-dialog/ngx-mat-timepicker-dialog.component';\nimport { NgxMatTimepickerStandaloneComponent } from './components/ngx-mat-timepicker-standalone/ngx-mat-timepicker-standalone.component';\nimport { NgxMatTimepickerComponent } from './components/ngx-mat-timepicker/ngx-mat-timepicker.component';\nimport { NgxMatTimepickerToggleComponent } from './components/ngx-mat-timepicker-toggle/ngx-mat-timepicker-toggle.component';\nimport { NgxMatTimepicker24HoursFaceComponent } from './components/ngx-mat-timepicker-24-hours-face/ngx-mat-timepicker-24-hours-face.component';\nimport { NgxMatTimepicker12HoursFaceComponent } from './components/ngx-mat-timepicker-12-hours-face/ngx-mat-timepicker-12-hours-face.component';\nimport { NgxMatTimepickerMinutesFaceComponent } 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 { NgxMatTimepickerDialControlComponent } from './components/ngx-mat-timepicker-dial-control/ngx-mat-timepicker-dial-control.component';\nimport { NgxMatTimepickerPeriodComponent } 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 { NgxMatTimepickerControlComponent } 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    // 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,\n      useValue: { color: 'void' },\n    },\n  ],\n})\nexport class NgxMatTimepickerModule {\n  static setLocale(\n    locale: string,\n  ): 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NgxMatTimepickerService","i3.NgxMatTimepickerEventService","i4.NgxMatTimepickerLocaleService","i1.NgxMatTimepickerService","i2.NgxMatTimepickerEventService","i3.NgxMatTimepickerLocaleService","i1.NgxMatTimepickerParserPipe","i2.NgxMatTimepickerLocaleService","i3","takeUntil"],"mappings":"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"}