{"version":3,"file":"dhutaryan-ngx-mat-timepicker.mjs","sources":["../../../projects/mat-timepicker/src/lib/timepicker-scroll-strategy.ts","../../../projects/mat-timepicker/src/lib/timepicker-intl.ts","../../../projects/mat-timepicker/src/lib/timepicker-toggle.ts","../../../projects/mat-timepicker/src/lib/timepicker-toggle.html","../../../projects/mat-timepicker/src/lib/timepicker-animations.ts","../../../projects/mat-timepicker/src/lib/clock-size.ts","../../../projects/mat-timepicker/src/lib/minutes-clock-dial.ts","../../../projects/mat-timepicker/src/lib/minutes-clock-dial.html","../../../projects/mat-timepicker/src/lib/hours-clock-dial.ts","../../../projects/mat-timepicker/src/lib/hours-clock-dial.html","../../../projects/mat-timepicker/src/lib/adapter/time-adapter.ts","../../../projects/mat-timepicker/src/lib/adapter/native-date-time-adapter.ts","../../../projects/mat-timepicker/src/lib/adapter/index.ts","../../../projects/mat-timepicker/src/lib/time-face-base.ts","../../../projects/mat-timepicker/src/lib/time-input-base.ts","../../../projects/mat-timepicker/src/lib/clock-dial-adnimation.ts","../../../projects/mat-timepicker/src/lib/timepicker-content-layout.ts","../../../projects/mat-timepicker/src/lib/timepicker-content-layout.html","../../../projects/mat-timepicker/src/lib/time-period.ts","../../../projects/mat-timepicker/src/lib/time-period.html","../../../projects/mat-timepicker/src/lib/clock-dials.ts","../../../projects/mat-timepicker/src/lib/clock-dials.html","../../../projects/mat-timepicker/src/lib/time-inputs.ts","../../../projects/mat-timepicker/src/lib/time-inputs.html","../../../projects/mat-timepicker/src/lib/time-selection-model.ts","../../../projects/mat-timepicker/src/lib/timepicker-content.ts","../../../projects/mat-timepicker/src/lib/timepicker-content.html","../../../projects/mat-timepicker/src/lib/timepicker-actions-default.ts","../../../projects/mat-timepicker/src/lib/timepicker-base.ts","../../../projects/mat-timepicker/src/lib/timepicker.ts","../../../projects/mat-timepicker/src/lib/timepicker-input-base.ts","../../../projects/mat-timepicker/src/lib/timepicker-input.ts","../../../projects/mat-timepicker/src/lib/timepicker-actions.ts","../../../projects/mat-timepicker/src/lib/timepicker.module.ts","../../../projects/mat-timepicker/src/public-api.ts","../../../projects/mat-timepicker/src/dhutaryan-ngx-mat-timepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\n\n/** Injection token that determines the scroll handling while the timepicker is open. */\nexport const MAT_TIMEPICKER_SCROLL_STRATEGY = new InjectionToken<\n  () => ScrollStrategy\n>('mat-timepicker-scroll-strategy');\n\n/** Timepicker scroll strategy factory. */\nexport function MAT_TIMEPICKER_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** Timepicker scroll strategy provider. */\nexport const MAT_TIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MAT_TIMEPICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MAT_TIMEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MatTimepickerIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** A label for inputs title. */\n  inputsTitle = 'Enter time';\n\n  /** A label for dials title. */\n  dialsTitle = 'Select time';\n\n  /** A label for hour input hint. */\n  hourInputHint = 'Hour';\n\n  /** A label for minute input hint. */\n  minuteInputHint = 'Minute';\n\n  /** Label for the button used to open the timepicker popup (used by screen readers). */\n  openTimepickerLabel = 'Open timepicker';\n\n  /** Label for the button used to close the timepicker popup (used by screen readers). */\n  closeTimepickerLabel = 'Close timepicker';\n\n  /** A label for OK button to apply time. */\n  okButton = 'OK';\n\n  /** A label for cancel button to close timepicker. */\n  cancelButton = 'Cancel';\n\n  /** A label for am text. */\n  am = 'AM';\n\n  /** A label for am text. */\n  pm = 'PM';\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  Directive,\n  ViewEncapsulation,\n  Input,\n  ContentChild,\n  Attribute,\n  SimpleChanges,\n  OnChanges,\n  OnDestroy,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Observable, Subscription, merge, of } from 'rxjs';\n\nimport { MatTimepicker } from './timepicker';\nimport { MatTimepickerIntl } from './timepicker-intl';\n\n@Directive({ selector: '[matTimepickerToggleIcon]', standalone: true })\nexport class MatTimepickerToggleIcon {}\n\n@Component({\n  selector: 'mat-timepicker-toggle',\n  standalone: true,\n  imports: [CommonModule, MatButtonModule],\n  templateUrl: './timepicker-toggle.html',\n  styleUrls: ['./timepicker-toggle.scss'],\n  exportAs: 'matTimepickerToggle',\n  host: {\n    class: 'mat-timepicker-toggle',\n    '[attr.tabindex]': 'null',\n    '[class.mat-timepicker-toggle-active]': 'timepicker && timepicker.opened',\n    '[class.mat-accent]': 'timepicker && timepicker.color === \"accent\"',\n    '[class.mat-warn]': 'timepicker && timepicker.color === \"warn\"',\n    '(click)': 'open($event)',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTimepickerToggle<T> implements OnChanges, OnDestroy {\n  /** Timepicker instance. */\n  @Input('for') timepicker: MatTimepicker<T>;\n\n  /** Whether the toggle button is disabled. */\n  @Input()\n  get disabled(): boolean {\n    if (this._disabled === undefined && this.timepicker) {\n      return this.timepicker.disabled;\n    }\n\n    return !!this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean;\n\n  /** Whether ripples on the toggle should be disabled. */\n  @Input() disableRipple: boolean;\n\n  /** Tabindex for the toggle. */\n  @Input() tabIndex: number | null;\n\n  /** Custom icon set by the consumer. */\n  @ContentChild(MatTimepickerToggleIcon) customIcon: MatTimepickerToggleIcon;\n\n  /** Screen-reader label for the button. */\n  @Input('aria-label') ariaLabel: string;\n\n  private _stateChanges = Subscription.EMPTY;\n\n  constructor(\n    @Attribute('tabindex') defaultTabIndex: string,\n    public _intl: MatTimepickerIntl,\n    private _cdr: ChangeDetectorRef,\n  ) {\n    const parsedTabIndex = Number(defaultTabIndex);\n    this.tabIndex =\n      parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['timepicker']) {\n      this._watchStateChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n  }\n\n  /** Opens timepicker. */\n  open(event: Event): void {\n    if (this.timepicker && !this.disabled) {\n      this.timepicker.open();\n      event.stopPropagation();\n    }\n  }\n\n  private _watchStateChanges() {\n    const timepickerStateChanged = this.timepicker\n      ? this.timepicker.stateChanges\n      : of();\n    const inputStateChanged =\n      this.timepicker && this.timepicker.timepickerInput\n        ? this.timepicker.timepickerInput.stateChanges\n        : of();\n    const timepickerToggled = this.timepicker\n      ? merge(this.timepicker.openedStream, this.timepicker.closedStream)\n      : of();\n\n    this._stateChanges.unsubscribe();\n    this._stateChanges = merge(\n      this._intl.changes,\n      timepickerStateChanged as Observable<void>,\n      inputStateChanged,\n      timepickerToggled,\n    ).subscribe(() => this._cdr.markForCheck());\n  }\n}\n","<button\n  type=\"button\"\n  #button\n  mat-icon-button\n  [attr.aria-haspopup]=\"timepicker ? 'dialog' : null\"\n  [attr.aria-label]=\"ariaLabel || _intl.openTimepickerLabel\"\n  [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n  [disabled]=\"disabled\"\n  [disableRipple]=\"disableRipple\"\n>\n  @if (!customIcon) {\n    <svg\n      class=\"mat-timepicker-toggle-default-icon\"\n      viewBox=\"0 0 24 24\"\n      width=\"24\"\n      height=\"24\"\n      fill=\"currentColor\"\n      focusable=\"false\"\n    >\n      <path\n        d=\"M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z M12,20c-4.41,0-8-3.59-8-8s3.59-8,8-8s8,3.59,8,8 S16.41,20,12,20z M12.5,7H11v6l5.2,3.2l0.8-1.3l-4.5-2.7V7z\"\n      />\n    </svg>\n  }\n\n  <ng-content select=\"[matTimepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/** Animations used by the timepicker. */\nexport const matTimepickerAnimations: {\n  readonly transformPanel: AnimationTriggerMetadata;\n  readonly fadeInTimepicker: AnimationTriggerMetadata;\n} = {\n  /** Transforms the height of the timepicker's. */\n  transformPanel: trigger('transformPanel', [\n    transition(\n      'void => enter-dropdown',\n      animate(\n        '120ms cubic-bezier(0, 0, 0.2, 1)',\n        keyframes([\n          style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n          style({ opacity: 1, transform: 'scale(1, 1)' }),\n        ])\n      )\n    ),\n    transition(\n      'void => enter-dialog',\n      animate(\n        '150ms cubic-bezier(0, 0, 0.2, 1)',\n        keyframes([\n          style({ opacity: 0, transform: 'scale(0.7)' }),\n          style({ transform: 'none', opacity: 1 }),\n        ])\n      )\n    ),\n    transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n  ]),\n\n  /** Fades in the content of the timepicker. */\n  fadeInTimepicker: trigger('fadeInTimepicker', [\n    state('void', style({ opacity: 0 })),\n    state('enter', style({ opacity: 1 })),\n  ]),\n};\n","const TOUCH_UI_MULTIPLIER = 1.25;\nconst TOUCH_UI_TICK_MULTIPLIER = 1.5;\nconst CLOCK_RADIUS = 128;\nconst CLOCK_TICK_RADIUS = 16;\nconst CLOCK_OUTER_RADIUS = 100;\n\nexport function getClockRadius(touchUi?: boolean): number {\n  return touchUi ? CLOCK_RADIUS * TOUCH_UI_MULTIPLIER : CLOCK_RADIUS;\n}\n\nexport function getClockTickRadius(touchUi?: boolean): number {\n  return touchUi\n    ? CLOCK_TICK_RADIUS * TOUCH_UI_TICK_MULTIPLIER\n    : CLOCK_TICK_RADIUS;\n}\n\nexport function getClockCorrectedRadius(touchUi?: boolean): number {\n  return getClockRadius(touchUi) - getClockTickRadius(touchUi);\n}\n\nexport function getClockOuterRadius(touchUi?: boolean): number {\n  return touchUi\n    ? CLOCK_OUTER_RADIUS * TOUCH_UI_MULTIPLIER\n    : CLOCK_OUTER_RADIUS;\n}\n\nexport function getClockInnerRadius(touchUi?: boolean): number {\n  return getClockOuterRadius(touchUi) - getClockTickRadius(touchUi) * 2;\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { debounceTime, fromEvent, merge, take } from 'rxjs';\n\nimport { ClockDialViewCell } from './hours-clock-dial';\nimport { getClockCorrectedRadius, getClockOuterRadius, getClockRadius } from './clock-size';\n\nexport const ALL_MINUTES = Array(60)\n  .fill(null)\n  .map((_, i) => i);\n\n@Component({\n  selector: 'mat-minutes-clock-dial',\n  standalone: true,\n  imports: [CommonModule, MatButtonModule],\n  templateUrl: 'minutes-clock-dial.html',\n  styleUrls: ['clock-dial.scss'],\n  exportAs: 'matMinutesClockDial',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-clock-dial mat-clock-dial-minutes',\n    '(mousedown)': '_onUserAction($event)',\n    '(touchstart)': '_onUserAction($event)',\n  },\n})\nexport class MatMinutesClockDial implements OnInit {\n  /** Selected minute. */\n  @Input()\n  get selectedMinute(): number {\n    return this._selectedMinute;\n  }\n  set selectedMinute(value: number) {\n    this._selectedMinute = value;\n  }\n  private _selectedMinute = 0;\n\n  /** Step over minutes. */\n  @Input()\n  get interval(): number {\n    return this._interval;\n  }\n  set interval(value: number) {\n    this._interval = coerceNumberProperty(value) || 1;\n  }\n  private _interval: number = 1;\n\n  @Input()\n  get availableMinutes(): number[] {\n    return this._availableMinutes;\n  }\n  set availableMinutes(value: number[]) {\n    this._availableMinutes = value;\n    this._initMinutes();\n  }\n  private _availableMinutes: number[] = [];\n\n  /** Color palette. */\n  @Input() color: ThemePalette;\n\n  /** Whether the timepicker UI is in touch mode. */\n  @Input()\n  get touchUi(): boolean {\n    return this._touchUi;\n  }\n  set touchUi(value: boolean) {\n    this._touchUi = value;\n  }\n  private _touchUi: boolean;\n\n  /** Emits selected minute. */\n  @Output() selectedChange = new EventEmitter<number>();\n\n  minutes: ClockDialViewCell[] = [];\n\n  get disabled(): boolean {\n    return !this.availableMinutes.includes(this.selectedMinute);\n  }\n\n  get isMinutePoint(): boolean {\n    return !!this.minutes.find((hour) => hour.value === this.selectedMinute);\n  }\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private _document: Document,\n  ) {}\n\n  ngOnInit(): void {\n    this._initMinutes();\n  }\n\n  /** Hand styles based on selected minute. */\n  _handStyles(): any {\n    const deg = Math.round(this._selectedMinute * (360 / 60));\n    const height = getClockOuterRadius(this.touchUi);\n    const marginTop = getClockRadius(this.touchUi) - getClockOuterRadius(this.touchUi);\n\n    return {\n      transform: `rotate(${deg}deg)`,\n      height: `${height}px`,\n      'margin-top': `${marginTop}px`,\n    };\n  }\n\n  /** Handles mouse and touch events on dial and document. */\n  _onUserAction(event: MouseEvent | TouchEvent): void {\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    this._setMinute(event);\n\n    const eventsSubscription = merge(\n      fromEvent<MouseEvent>(this._document, 'mousemove'),\n      fromEvent<TouchEvent>(this._document, 'touchmove'),\n    )\n      .pipe(debounceTime(0))\n      .subscribe({\n        next: (event) => {\n          event.preventDefault();\n          this._setMinute(event);\n        },\n      });\n\n    merge(\n      fromEvent<MouseEvent>(this._document, 'mouseup'),\n      fromEvent<TouchEvent>(this._document, 'touchend'),\n    )\n      .pipe(take(1))\n      .subscribe({\n        next: () => {\n          eventsSubscription.unsubscribe();\n        },\n      });\n  }\n\n  _isActiveCell(minute: number): boolean {\n    return this.selectedMinute === minute;\n  }\n\n  private _setMinute(event: MouseEvent | TouchEvent): void {\n    const element = this._element.nativeElement;\n    const window = this._getWindow();\n    const elementRect = element.getBoundingClientRect();\n    const width = element.offsetWidth;\n    const height = element.offsetHeight;\n    const pageX = event instanceof MouseEvent ? event.pageX : event.touches[0].pageX;\n    const pageY = event instanceof MouseEvent ? event.pageY : event.touches[0].pageY;\n    const x = width / 2 - (pageX - elementRect.left - window.scrollX);\n    const y = height / 2 - (pageY - elementRect.top - window.scrollY);\n    const unit = Math.PI / (30 / this.interval);\n    const atan2 = Math.atan2(-x, y);\n    const radian = atan2 < 0 ? Math.PI * 2 + atan2 : atan2;\n    const initialValue = Math.round(radian / unit) * this.interval;\n    const value = initialValue === 60 ? 0 : initialValue;\n\n    if (this.availableMinutes.includes(value) && this.availableMinutes.includes(value)) {\n      this.selectedMinute = value;\n      this.selectedChange.emit(this.selectedMinute);\n    }\n\n    this._cdr.detectChanges();\n  }\n\n  /** Creates list of minutes. */\n  private _initMinutes(): void {\n    this.minutes = ALL_MINUTES.filter((minute) => minute % 5 === 0).map((minute) => {\n      const radian = (minute / 30) * Math.PI;\n      const displayValue = minute === 0 ? '00' : String(minute);\n\n      return {\n        value: minute,\n        displayValue,\n        left:\n          getClockCorrectedRadius(this.touchUi) +\n          Math.sin(radian) * getClockOuterRadius(this.touchUi),\n        top:\n          getClockCorrectedRadius(this.touchUi) -\n          Math.cos(radian) * getClockOuterRadius(this.touchUi),\n        disabled: !this.availableMinutes.includes(minute),\n      };\n    });\n  }\n\n  /** Use defaultView of injected document if available or fallback to global window reference */\n  private _getWindow(): Window {\n    return this._document.defaultView || window;\n  }\n}\n","<div\n  class=\"mat-clock-dial-hand\"\n  [class.mat-clock-dial-hand-pointless]=\"isMinutePoint\"\n  [class.mat-clock-dial-hand-disabled]=\"disabled\"\n  [ngStyle]=\"_handStyles()\"\n>\n  <div class=\"mat-clock-dial-hand-point\" tabindex=\"0\"></div>\n</div>\n@for (minute of minutes; track minute.value) {\n  <button\n    class=\"mat-clock-dial-cell\"\n    mat-mini-fab\n    disableRipple\n    [tabIndex]=\"_isActiveCell(minute.value) ? 0 : -1\"\n    [style.left.px]=\"minute.left\"\n    [style.top.px]=\"minute.top\"\n    [class.mat-clock-dial-cell-active]=\"_isActiveCell(minute.value)\"\n    [class.mat-clock-dial-cell-disabled]=\"minute.disabled\"\n    [color]=\"_isActiveCell(minute.value) ? color : undefined\"\n    [attr.aria-disabled]=\"minute.disabled || null\"\n  >\n    {{ minute.displayValue }}\n  </button>\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { debounceTime, fromEvent, merge, take } from 'rxjs';\n\nimport {\n  getClockCorrectedRadius,\n  getClockInnerRadius,\n  getClockOuterRadius,\n  getClockRadius,\n  getClockTickRadius,\n} from './clock-size';\n\nexport interface ClockDialViewCell {\n  value: number;\n  displayValue: string;\n  left: number;\n  top: number;\n  disabled: boolean;\n}\n\nexport const ALL_HOURS = Array(24)\n  .fill(null)\n  .map((_, i) => i);\n\n@Component({\n  selector: 'mat-hours-clock-dial',\n  standalone: true,\n  imports: [CommonModule, MatButtonModule],\n  templateUrl: 'hours-clock-dial.html',\n  styleUrls: ['clock-dial.scss'],\n  exportAs: 'matHoursClockDial',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-clock-dial mat-clock-dial-hours',\n    '(mousedown)': '_onUserAction($event)',\n    '(touchstart)': '_onUserAction($event)',\n  },\n})\nexport class MatHoursClockDial implements OnInit {\n  /** Selected hour. */\n  @Input()\n  get selectedHour(): number {\n    return this._selectedHour;\n  }\n  set selectedHour(value: number) {\n    this._selectedHour = value;\n  }\n  private _selectedHour: number;\n\n  /** Whether the clock uses 12 hour format. */\n  @Input()\n  get isMeridiem(): boolean {\n    return this._isMeridiem;\n  }\n  set isMeridiem(value: boolean) {\n    this._isMeridiem = value;\n  }\n  private _isMeridiem: boolean;\n\n  @Input()\n  get availableHours(): number[] {\n    return this._availableHours;\n  }\n  set availableHours(value: number[]) {\n    this._availableHours = value;\n    this._initHours();\n  }\n  private _availableHours: number[] = [];\n\n  /** Color palette. */\n  @Input() color: ThemePalette;\n\n  /** Whether the timepicker UI is in touch mode. */\n  @Input()\n  get touchUi(): boolean {\n    return this._touchUi;\n  }\n  set touchUi(value: boolean) {\n    this._touchUi = value;\n    this._initHours();\n  }\n  private _touchUi: boolean;\n\n  /** Emits selected hour. */\n  @Output() selectedChange = new EventEmitter<{\n    hour: number;\n    changeView?: boolean;\n  }>();\n\n  hours: ClockDialViewCell[] = [];\n\n  get disabledHand(): boolean {\n    return !this.availableHours.includes(this.selectedHour);\n  }\n\n  get isHour(): boolean {\n    return !!this.hours.find((hour) => hour.value === this.selectedHour);\n  }\n\n  constructor(\n    private _element: ElementRef<HTMLElement>,\n    private _cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private _document: Document,\n  ) {}\n\n  ngOnInit(): void {\n    this._initHours();\n  }\n\n  /** Hand styles based on selected hour. */\n  _handStyles(): any {\n    const deg = Math.round(this.selectedHour * (360 / (24 / 2)));\n    const radius = this._getRadius(this.selectedHour);\n    const height = radius;\n    const marginTop = getClockRadius(this.touchUi) - radius;\n\n    return {\n      transform: `rotate(${deg}deg)`,\n      height: `${height}px`,\n      'margin-top': `${marginTop}px`,\n    };\n  }\n\n  /** Handles mouse and touch events on dial and document. */\n  _onUserAction(event: MouseEvent | TouchEvent): void {\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    this._setHour(event);\n\n    const eventsSubscription = merge(\n      fromEvent<MouseEvent>(this._document, 'mousemove'),\n      fromEvent<TouchEvent>(this._document, 'touchmove'),\n    )\n      .pipe(debounceTime(0))\n      .subscribe({\n        next: (event) => {\n          event.preventDefault();\n          this._setHour(event);\n        },\n      });\n\n    merge(\n      fromEvent<MouseEvent>(this._document, 'mouseup'),\n      fromEvent<TouchEvent>(this._document, 'touchend'),\n    )\n      .pipe(take(1))\n      .subscribe({\n        next: () => {\n          eventsSubscription.unsubscribe();\n          this.selectedChange.emit({\n            hour: this.selectedHour,\n            changeView: true,\n          });\n        },\n      });\n  }\n\n  _isActiveCell(hour: number): boolean {\n    return this.selectedHour === hour;\n  }\n\n  /** Changes selected hour based on coordinates. */\n  private _setHour(event: MouseEvent | TouchEvent): void {\n    const element = this._element.nativeElement;\n    const window = this._getWindow();\n    const elementRect = element.getBoundingClientRect();\n    const width = element.offsetWidth;\n    const height = element.offsetHeight;\n    const pageX = event instanceof MouseEvent ? event.pageX : event.touches[0].pageX;\n    const pageY = event instanceof MouseEvent ? event.pageY : event.touches[0].pageY;\n    const x = width / 2 - (pageX - elementRect.left - window.scrollX);\n    const y = height / 2 - (pageY - elementRect.top - window.scrollY);\n    const unit = Math.PI / 6;\n    const atan2 = Math.atan2(-x, y);\n    const radian = atan2 < 0 ? Math.PI * 2 + atan2 : atan2;\n    const initialValue = Math.round(radian / unit);\n    const z = Math.sqrt(x * x + y * y);\n    const outer = z > getClockOuterRadius(this.touchUi) - getClockTickRadius(this.touchUi);\n    const value = this._getHourValue(initialValue, outer);\n\n    if (this.availableHours.includes(value)) {\n      this.selectedHour = value;\n      this.selectedChange.emit({\n        hour: this.selectedHour,\n      });\n    }\n\n    this._cdr.detectChanges();\n  }\n\n  /** Return value of hour. */\n  private _getHourValue(value: number, outer: boolean): number {\n    const edgeValue = value === 0 || value === 12;\n\n    if (this.isMeridiem) {\n      return edgeValue ? 12 : value;\n    }\n\n    if (outer) {\n      return edgeValue ? 0 : value;\n    }\n\n    return edgeValue ? 12 : value + 12;\n  }\n\n  /** Creates list of hours. */\n  private _initHours(): void {\n    const initialHours = this.isMeridiem ? ALL_HOURS.slice(1, 13) : ALL_HOURS;\n\n    this.hours = initialHours.map((hour) => {\n      const radian = (hour / 6) * Math.PI;\n      const radius = this._getRadius(hour);\n\n      return {\n        value: hour,\n        displayValue: hour === 0 ? '00' : String(hour),\n        left: getClockCorrectedRadius(this.touchUi) + Math.sin(radian) * radius,\n        top: getClockCorrectedRadius(this.touchUi) - Math.cos(radian) * radius,\n        disabled: !this.availableHours.includes(hour),\n      };\n    });\n  }\n\n  /** Returns radius based on hour */\n  private _getRadius(hour: number): number {\n    if (this.isMeridiem) {\n      return getClockOuterRadius(this.touchUi);\n    }\n\n    const outer = hour >= 0 && hour < 12;\n    const radius = outer ? getClockOuterRadius(this.touchUi) : getClockInnerRadius(this.touchUi);\n\n    return radius;\n  }\n\n  /** Use defaultView of injected document if available or fallback to global window reference */\n  private _getWindow(): Window {\n    return this._document.defaultView || window;\n  }\n}\n","<div\n  class=\"mat-clock-dial-hand\"\n  [class.mat-clock-dial-hand-pointless]=\"isHour\"\n  [class.mat-clock-dial-hand-disabled]=\"disabledHand\"\n  [ngStyle]=\"_handStyles()\"\n></div>\n@for (hour of hours; track hour.value) {\n  <button\n    class=\"mat-clock-dial-cell\"\n    mat-mini-fab\n    disableRipple\n    [tabIndex]=\"_isActiveCell(hour.value) ? 0 : -1\"\n    [style.left.px]=\"hour.left\"\n    [style.top.px]=\"hour.top\"\n    [class.mat-clock-dial-cell-active]=\"_isActiveCell(hour.value)\"\n    [class.mat-clock-dial-cell-disabled]=\"hour.disabled\"\n    [color]=\"_isActiveCell(hour.value) ? color : undefined\"\n    [attr.aria-disabled]=\"hour.disabled || null\"\n  >\n    {{ hour.displayValue }}\n  </button>\n}\n","import { InjectionToken, LOCALE_ID, inject } from '@angular/core';\nimport { MatTimePeriodType } from '../time-period';\n\n/** InjectionToken for timepicker that can be used to override default locale code. */\nexport const MAT_TIME_LOCALE = new InjectionToken<string>('MAT_TIME_LOCALE', {\n  providedIn: 'root',\n  factory: MAT_DATE_TIME_LOCALE_FACTORY,\n});\n\nexport function MAT_DATE_TIME_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/**\n * No longer needed since MAT_TIME_LOCALE has been changed to a scoped injectable.\n * If you are importing and providing this in your code you can simply remove it.\n * @deprecated\n * @breaking-change 18.0.0\n */\nexport const MAT_TIME_LOCALE_PROVIDER = {\n  provide: MAT_TIME_LOCALE,\n  useExisting: LOCALE_ID,\n};\n\nexport abstract class TimeAdapter<T, L = any> {\n  /** The locale to use for time. */\n  protected locale: L;\n\n  /**\n   * Gets now's time.\n   * @returns Now's time.\n   */\n  abstract now(): T;\n\n  /**\n   * Parses a time from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed time.\n   */\n  abstract parse(value: any, parseFormat: any): T | null;\n\n  /**\n   * Gets the hour component of the given time.\n   * @param time The time to extract the hour from.\n   * @returns The hour component.\n   */\n  abstract getHour(time: T): number;\n\n  /**\n   * Gets the minute component of the given time.\n   * @param time The time to extract the minute from.\n   * @returns The minute component.\n   */\n  abstract getMinute(time: T): number;\n\n  /**\n   * Update the hour component of the given time.\n   * @param time The time to update the hour.\n   * @param hour The new hour to update given time.\n   * @returns The new time with updated hour component.\n   */\n  abstract updateHour(time: T, hour: number): T;\n\n  /**\n   * Update the minute component of the given time.\n   * @param time The time to update the minute.\n   * @param minute The new minute to update given time.\n   * @returns The new time with updated minute component.\n   */\n  abstract updateMinute(time: T, minute: number): T;\n\n  /**\n   * Gets the period component of the given time.\n   * @param time The time to extract the period from.\n   * @returns The period component.\n   */\n  abstract getPeriod(time: T): MatTimePeriodType;\n\n  /**\n   * Formats a time as a string according to the given format.\n   * @param time The value to format.\n   * @param displayFormat The format to use to display the time as a string.\n   * @returns The formatted time string.\n   */\n  abstract format(time: T, displayFormat: any): string;\n\n  /**\n   * Checks whether the given object is considered a time instance by this timeAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a time instance.\n   */\n  abstract isTimeInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given time is valid.\n   * @param time The time to check.\n   * @returns Whether the time is valid.\n   */\n  abstract isValid(time: T): boolean;\n\n  /**\n   * Gets time instance that is not valid.\n   * @returns An invalid time.\n   */\n  abstract invalid(): T;\n\n  /**\n   * Given a potential time object, returns that same time object if it is\n   * a valid time, or `null` if it's not a valid time.\n   * @param obj The object to check.\n   * @returns A time or `null`.\n   */\n  getValidTimeOrNull(obj: unknown): T | null {\n    return this.isTimeInstance(obj) && this.isValid(obj as T)\n      ? (obj as T)\n      : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid time object. The `<mat-timepicker>` will call this\n   * method on all of its `@Input()` properties that accept time. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a time object.\n   * @returns The deserialized time object, either a valid time, null if the value can be\n   *     deserialized into a null time (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): T | null {\n    if (value == null || (this.isTimeInstance(value) && this.isValid(value))) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all time.\n   * @param locale The new locale.\n   */\n  setLocale(locale: L) {\n    this.locale = locale;\n  }\n\n  /**\n   * Compares two time.\n   * @param first The first time to compare.\n   * @param second The second time to compare.\n   * @returns 0 if the time are equal, a number less than 0 if the first time is earlier,\n   *     a number greater than 0 if the first time is later.\n   */\n  abstract compareTime(first: T, second: T): number;\n\n  /**\n   * Checks if two time are equal.\n   * @param first The first time to check.\n   * @param second The second time to check.\n   * @returns Whether the two time are equal.\n   *     Null time are considered equal to other null time.\n   */\n  sameTime(first: T | null, second: T | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareTime(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given time between min and max time.\n   * @param time The time to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `time` is less than `min`, `max` if time is greater than `max`,\n   *     otherwise `time`.\n   */\n  clampTime(time: T, min?: T | null, max?: T | null): T {\n    if (min && this.compareTime(time, min) < 0) {\n      return min;\n    }\n    if (max && this.compareTime(time, max) > 0) {\n      return max;\n    }\n    return time;\n  }\n}\n","import { Inject, Injectable, Optional, inject } from '@angular/core';\n\nimport { MAT_TIME_LOCALE, TimeAdapter } from './time-adapter';\nimport { MatTimePeriodType } from '../time-period';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n  /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Adapts the native JS Date for components that work with time. */\n@Injectable()\nexport class NativeDateTimeAdapter extends TimeAdapter<Date> {\n  private readonly _matTimeLocale = inject(MAT_TIME_LOCALE, { optional: true });\n\n  constructor(@Optional() @Inject(MAT_TIME_LOCALE) matTimeLocale: string) {\n    super();\n    if (matTimeLocale !== undefined) {\n      this._matTimeLocale = matTimeLocale;\n    }\n    super.setLocale(this._matTimeLocale);\n  }\n\n  now(): Date {\n    return new Date();\n  }\n\n  parse(value: any, parseFormat?: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n\n    const { hour, minute, meridiem } = this.parseTime(value);\n    // hour should be in 24h format\n    // so, if meridiem is 'pm' and hour is less than 12, add 12 to hour\n    const correctedHour = meridiem === 'pm' && hour < 12 ? hour + 12 : hour;\n    const date = new Date();\n    date.setHours(correctedHour);\n    date.setMinutes(minute);\n\n    return value ? new Date(date) : null;\n  }\n\n  parseTime(value: string): {\n    hour: number;\n    minute: number;\n    meridiem?: 'am' | 'pm';\n  } {\n    const time = value.replace(/(\\sam|\\spm|\\sAM|\\sPM|am|pm|AM|PM)/g, '');\n    const meridiem = value.replace(time, '').trim().toLowerCase() as\n      | 'am'\n      | 'pm';\n    const [hour, minute] = time.split(':');\n\n    return { hour: Number(hour), minute: Number(minute), meridiem };\n  }\n\n  getHour(date: Date): number {\n    return date.getHours();\n  }\n\n  getMinute(date: Date): number {\n    return date.getMinutes();\n  }\n\n  updateHour(date: Date, hour: number): Date {\n    const copy = new Date(date.getTime());\n    copy.setHours(hour);\n\n    return copy;\n  }\n\n  updateMinute(date: Date, minute: number): Date {\n    const copy = new Date(date.getTime());\n    copy.setMinutes(minute);\n\n    return copy;\n  }\n\n  getPeriod(date: Date): MatTimePeriodType {\n    return date.getHours() < 12 ? 'am' : 'pm';\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateTimeAdapter: Cannot format invalid date.');\n    }\n\n    const dtf = new Intl.DateTimeFormat(this.locale, {\n      ...displayFormat,\n      timeZone: 'utc',\n    });\n\n    return this._format(dtf, date);\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        const date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isTimeInstance(obj: any): boolean {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date): boolean {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  compareTime(first: Date, second: Date): number {\n    return (\n      first.getHours() - second.getHours() ||\n      first.getMinutes() - second.getMinutes()\n    );\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(\n      date.getHours(),\n      date.getMinutes(),\n      date.getSeconds(),\n      date.getMilliseconds(),\n    );\n    return dtf.format(d);\n  }\n}\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\n\nimport { MAT_TIME_LOCALE_PROVIDER, TimeAdapter } from './time-adapter';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter';\n\nexport * from './time-adapter';\nexport * from './native-date-time-adapter';\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [{ provide: TimeAdapter, useClass: NativeDateTimeAdapter }],\n})\nexport class NativeDateTimeModule {}\n\n@NgModule({\n  providers: [provideNativeDateTimeAdapter()],\n})\nexport class MatNativeDateTimeModule {}\n\nexport function provideNativeDateTimeAdapter(): Provider {\n  return { provide: TimeAdapter, useClass: NativeDateTimeAdapter };\n}\n","import {\n  AfterContentInit,\n  AfterViewChecked,\n  Directive,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\n\nimport { TimeAdapter } from './adapter';\nimport { MatTimePeriodType } from './time-period';\nimport { ALL_MINUTES } from './minutes-clock-dial';\nimport { ALL_HOURS } from './hours-clock-dial';\n\n@Directive()\nexport abstract class MatTimeFaceBase<T>\n  implements AfterContentInit, AfterViewChecked\n{\n  /** The currently selected time. */\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n  set selected(value: T | null) {\n    this._selected = this._timeAdapter.getValidTimeOrNull(\n      this._timeAdapter.deserialize(value),\n    );\n\n    if (!this._selected) {\n      return;\n    }\n\n    const hour = this._timeAdapter.getHour(this._selected);\n    this.selectedHour = hour > 12 && this.isMeridiem ? hour - 12 : hour;\n    if (hour === 0 && this.isMeridiem) {\n      this.selectedHour = 12;\n    }\n    this.selectedMinute = this._timeAdapter.getMinute(this._selected);\n    this.availableHours = ALL_HOURS;\n\n    if (this.isMeridiem) {\n      this.period = this._timeAdapter.getPeriod(this._selected);\n    }\n\n    this.availableMinutes = ALL_MINUTES;\n    this._setMinHour();\n    this._setMaxHour();\n    this._setMinMinute();\n    this._setMaxMinute();\n    this._moveFocusOnNextTick = this.isMeridiem;\n  }\n  private _selected: T | null;\n\n  /** The minimum selectable time. */\n  @Input()\n  get minTime(): T | null {\n    return this._minTime;\n  }\n  set minTime(value: T | null) {\n    this._minTime = this._timeAdapter.getValidTimeOrNull(\n      this._timeAdapter.deserialize(value),\n    );\n\n    if (value) {\n      this._setMinHour();\n      this._setMinMinute();\n      this._setDisabledPeriod();\n    }\n  }\n  private _minTime: T | null;\n\n  /** The maximum selectable time. */\n  @Input()\n  get maxTime(): T | null {\n    return this._maxTime;\n  }\n  set maxTime(value: T | null) {\n    this._maxTime = this._timeAdapter.getValidTimeOrNull(\n      this._timeAdapter.deserialize(value),\n    );\n\n    if (value) {\n      this._setMaxHour();\n      this._setMaxMinute();\n      this._setDisabledPeriod();\n    }\n  }\n  private _maxTime: T | null;\n\n  /** Step over minutes. */\n  @Input()\n  get minuteInterval(): number {\n    return this._minuteInterval;\n  }\n  set minuteInterval(value: number) {\n    this._minuteInterval = coerceNumberProperty(value) || 1;\n  }\n  private _minuteInterval: number = 1;\n\n  /** Whether the clock uses 12 hour format. */\n  @Input() isMeridiem: boolean;\n\n  /** Color palette. */\n  @Input() color: ThemePalette = 'primary';\n\n  /** Emits when any hour, minute or period is selected. */\n  @Output() _userSelection = new EventEmitter<T>();\n\n  @Output() selectedChange = new EventEmitter<T>();\n\n  selectedHour: number = 0;\n  selectedMinute: number = 0;\n  period: MatTimePeriodType;\n  disabledPeriod: MatTimePeriodType | null = null;\n  availableMinutes = ALL_MINUTES;\n  availableHours = ALL_HOURS;\n\n  /**\n   * Used for scheduling that focus should be moved to the active cell on the next tick.\n   * We need to schedule it, rather than do it immediately, because we have to wait\n   * for Angular to re-evaluate the view children.\n   */\n  private _moveFocusOnNextTick = false;\n\n  constructor(@Optional() protected _timeAdapter: TimeAdapter<T>) {}\n\n  ngAfterContentInit() {\n    if (!this.selected) {\n      this.selected = this._timeAdapter.clampTime(\n        this._timeAdapter.now(),\n        this.minTime,\n        this.maxTime,\n      );\n      this._userSelection.emit(this.selected);\n    }\n  }\n\n  ngAfterViewChecked() {\n    if (this._moveFocusOnNextTick) {\n      this._moveFocusOnNextTick = false;\n      this.focusActiveCell();\n    }\n  }\n\n  /**\n   * Focuses the active cell after or input the microtask queue is empty.\n   *\n   * Adding a 0ms setTimeout seems to fix Voiceover losing focus when pressing PageUp/PageDown.\n   *\n   * Determined a 0ms by gradually increasing duration from 0 and testing two use cases with screen\n   * reader enabled:\n   *\n   * 1. Pressing PageUp/PageDown repeatedly with pausing between each key press.\n   * 2. Pressing and holding the PageDown key with repeated keys enabled.\n   *\n   * Test 1 worked roughly 95-99% of the time with 0ms and got a little bit better as the duration\n   * increased. Test 2 got slightly better until the duration was long enough to interfere with\n   * repeated keys. If the repeated key speed was faster than the timeout duration, then pressing\n   * and holding pagedown caused the entire page to scroll.\n   *\n   * Since repeated key speed can verify across machines, determined that any duration could\n   * potentially interfere with repeated keys. 0ms would be best because it almost entirely\n   * eliminates the focus being lost in Voiceover without causing unintended side effects.\n   * Adding delay also complicates writing tests.\n   */\n  abstract focusActiveCell(): void;\n\n  /** Handles hour selection. */\n  _onHourSelected(hour: number): void {\n    this.selectedHour = hour;\n    const selected = this._timeAdapter.updateHour(\n      this.selected!,\n      this._getHourBasedOnPeriod(hour),\n    );\n    this._timeSelected(selected);\n  }\n\n  /** Handles minute selection. */\n  _onMinuteSelected(minute: number): void {\n    this.selectedMinute = minute;\n    const selected = this._timeAdapter.updateMinute(this.selected!, minute);\n    this._timeSelected(selected);\n  }\n\n  /** Handles period changing. */\n  _onPeriodChanged(period: MatTimePeriodType): void {\n    this.period = period;\n    const selected = this._timeAdapter.updateHour(\n      this.selected!,\n      this._getHourBasedOnPeriod(this.selectedHour),\n    );\n    this._timeSelected(selected);\n  }\n\n  _getAvailableHours(): number[] {\n    if (this.isMeridiem) {\n      return this.availableHours\n        .filter((h) => {\n          if (this.period === 'am') {\n            return h < 12;\n          }\n\n          if (this.period === 'pm') {\n            return h >= 12;\n          }\n\n          return h;\n        })\n        .map((h) => {\n          if (h > 12) {\n            return h - 12;\n          }\n\n          if (h === 0) {\n            return 12;\n          }\n\n          return h;\n        });\n    }\n\n    return this.availableHours;\n  }\n\n  _onKeydown(event: KeyboardEvent, view: 'hour' | 'minute'): void {\n    switch (view) {\n      case 'hour':\n        this._handleHourKeydown(event);\n        break;\n      case 'minute':\n        this._handleMinuteKeydown(event);\n        break;\n    }\n  }\n\n  private _handleHourKeydown(event: KeyboardEvent): void {\n    const hours = this._getAvailableHours();\n    const selectedHourIndex = hours.findIndex(\n      (hour) => hour === this.selectedHour,\n    );\n\n    if (!hours.length) {\n      return;\n    }\n\n    switch (event.keyCode) {\n      case UP_ARROW:\n        if (selectedHourIndex + 1 >= hours.length || selectedHourIndex < 0) {\n          this._onHourSelected(hours[0]);\n        } else {\n          this._onHourSelected(hours[selectedHourIndex + 1]);\n        }\n        break;\n      case DOWN_ARROW:\n        if (selectedHourIndex - 1 < 0 || selectedHourIndex < 0) {\n          this._onHourSelected(hours[hours.length - 1]);\n        } else {\n          this._onHourSelected(hours[selectedHourIndex - 1]);\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  private _handleMinuteKeydown(event: KeyboardEvent): void {\n    const minutes = this.availableMinutes;\n    const selectedMinuteIndex = minutes.findIndex(\n      (minute) => minute === this.selectedMinute,\n    );\n\n    if (!minutes.length) {\n      return;\n    }\n\n    switch (event.keyCode) {\n      case UP_ARROW:\n        if (\n          selectedMinuteIndex + this.minuteInterval >= minutes.length ||\n          selectedMinuteIndex < 0\n        ) {\n          const difference =\n            60 - this.selectedMinute + Math.min(...this.availableMinutes);\n          const count = Math.ceil(difference / this.minuteInterval);\n          const differenceForValid = count * this.minuteInterval;\n          const nextValidValue = this.selectedMinute + differenceForValid;\n          const correctIndex = minutes.findIndex(\n            (minute) => minute === nextValidValue - 60, // amount of mins\n          );\n          this._onMinuteSelected(minutes[correctIndex]);\n        } else {\n          this._onMinuteSelected(\n            minutes[selectedMinuteIndex + this.minuteInterval],\n          );\n        }\n        break;\n      case DOWN_ARROW:\n        if (\n          selectedMinuteIndex - this.minuteInterval < 0 ||\n          selectedMinuteIndex < 0\n        ) {\n          const difference =\n            60 + this.selectedMinute - Math.max(...this.availableMinutes);\n          const count = Math.ceil(difference / this.minuteInterval);\n          const differenceForValid = count * this.minuteInterval;\n          const nextValidValue = this.selectedMinute - differenceForValid;\n          const correctIndex = minutes.findIndex(\n            (minute) => minute === nextValidValue + 60, // amount of mins\n          );\n          this._onMinuteSelected(minutes[correctIndex]);\n        } else {\n          this._onMinuteSelected(\n            minutes[selectedMinuteIndex - this.minuteInterval],\n          );\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  /** Gets a correct hours based on meridiem and period. */\n  private _getHourBasedOnPeriod(hour: number): number {\n    const afterNoon = this.isMeridiem && this.period === 'pm';\n    const beforeNoon = this.isMeridiem && this.period === 'am';\n\n    if (afterNoon) {\n      return hour === 12 ? hour : hour + 12;\n    }\n\n    if (beforeNoon) {\n      return hour === 12 ? 0 : hour;\n    }\n\n    return hour;\n  }\n\n  private _timeSelected(value: T): void {\n    if (value && !this._timeAdapter.sameTime(value, this.selected)) {\n      this.selectedChange.emit(value);\n    }\n\n    this._userSelection.emit(value);\n  }\n\n  /** Sets min hour. */\n  private _setMinHour(): void {\n    if (!this.minTime) {\n      return;\n    }\n\n    const minHour = this._timeAdapter.getHour(this.minTime);\n    this.availableHours = this.availableHours.filter((h) => h >= minHour);\n  }\n\n  /** Sets max hour. */\n  private _setMaxHour(): void {\n    if (!this.maxTime) {\n      return;\n    }\n\n    const maxHour = this._timeAdapter.getHour(this.maxTime);\n    this.availableHours = this.availableHours.filter((h) => h <= maxHour);\n  }\n\n  /** Sets min minute. */\n  private _setMinMinute(): void {\n    if (!this.selected || !this.minTime) {\n      return;\n    }\n\n    const selectedHour = this._timeAdapter.getHour(this.selected);\n    const minHour = this._timeAdapter.getHour(this.minTime);\n\n    const minMinute =\n      selectedHour > minHour ? 0 : this._timeAdapter.getMinute(this.minTime);\n\n    this.availableMinutes = this.availableMinutes.filter(\n      (minute) => minute >= minMinute,\n    );\n\n    if (selectedHour < minHour) {\n      this.availableMinutes = [];\n    }\n  }\n\n  /** Sets max minute. */\n  private _setMaxMinute(): void {\n    if (!this.selected || !this.maxTime) {\n      return;\n    }\n\n    const selectedHour = this._timeAdapter.getHour(this.selected);\n    const maxHour = this._timeAdapter.getHour(this.maxTime);\n\n    const maxMinute =\n      selectedHour < maxHour ? 59 : this._timeAdapter.getMinute(this.maxTime);\n\n    this.availableMinutes = this.availableMinutes.filter(\n      (minute) => minute <= maxMinute,\n    );\n\n    if (selectedHour > maxHour) {\n      this.availableMinutes = [];\n    }\n  }\n\n  /** Sets disabled period. */\n  private _setDisabledPeriod(): void {\n    if (this.minTime) {\n      const minHour = this._timeAdapter.getHour(this.minTime);\n\n      if (minHour >= 12) {\n        this.disabledPeriod = 'am';\n      }\n    }\n\n    if (this.maxTime) {\n      const maxHour = this._timeAdapter.getHour(this.maxTime);\n      const maxMinute = this._timeAdapter.getHour(this.maxTime);\n\n      if (maxHour < 12 || (maxHour === 12 && maxMinute === 0)) {\n        this.disabledPeriod = 'pm';\n      }\n    }\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Input,\n  Output,\n  EventEmitter,\n  Directive,\n  ElementRef,\n  ChangeDetectorRef,\n  Inject,\n  Self,\n  HostListener,\n  InjectionToken,\n  inject,\n} from '@angular/core';\n\nexport function withZeroPrefix(value: number): string {\n  return value < 10 ? `0${value}` : `${value}`;\n}\n\nexport function withZeroPrefixMeridiem(\n  value: number,\n  isMeridiem: boolean,\n): string {\n  const newValue = isMeridiem && value === 0 ? 12 : value;\n\n  return withZeroPrefix(newValue);\n}\n\nconst SPECIAL_KEYS = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'];\n\nexport const MAT_TIMEPICKER_INPUTS_KEYDOWN_HANDLER = new InjectionToken<\n  (event: KeyboardEvent) => void\n>('MatTimepickerInputKeydownHandler', {\n  factory: () => (event: KeyboardEvent) => {\n    const isDigit = /^[0-9]$/.test(event.key);\n    const isSpecial = SPECIAL_KEYS.includes(event.code);\n\n    if (!isDigit && !isSpecial) {\n      event.preventDefault();\n    }\n  },\n});\n\nexport function provideMatTimepickerInputsKeydownHandler(\n  handler: (event: KeyboardEvent) => void,\n) {\n  return {\n    provide: MAT_TIMEPICKER_INPUTS_KEYDOWN_HANDLER,\n    useValue: handler,\n  };\n}\n\n@Directive()\nexport abstract class MatTimeInputBase {\n  @Input()\n  get value(): number {\n    return this._value;\n  }\n  set value(value: number) {\n    this._value = value;\n    if (!this.hasFocus) {\n      this.setInputValue(this._value);\n    }\n    // we need timeout here to set placeholder first time\n    setTimeout(() => {\n      this.setInputPlaceholder(this._value);\n    }, 0);\n  }\n  private _value: number;\n\n  @Output() timeChanged = new EventEmitter<number>();\n\n  @HostListener('keydown', ['$event']) _keydown(event: KeyboardEvent) {\n    this._keydownHandler(event);\n  }\n\n  private readonly _keydownHandler = inject(\n    MAT_TIMEPICKER_INPUTS_KEYDOWN_HANDLER,\n  );\n\n  get inputElement() {\n    return this.element.nativeElement as HTMLInputElement;\n  }\n\n  get hasFocus() {\n    return this.element?.nativeElement === this._document.activeElement;\n  }\n\n  constructor(\n    private element: ElementRef<HTMLInputElement>,\n    private _cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private _document: Document,\n  ) {}\n\n  focus() {\n    this.setInputValue(null);\n  }\n\n  blur() {\n    const isNumber = !isNaN(Number(this.inputElement.value));\n    const value = this._formatValue(\n      isNumber ? Number(this.inputElement.value || this._value) : this.value,\n    );\n    this.setInputValue(value);\n    this.setInputPlaceholder(value);\n    this.timeChanged.emit(value);\n  }\n\n  setInputValue(value: number | null) {\n    if (value !== null) {\n      this.inputElement.value = this._withZeroPrefix(value);\n    } else {\n      this.inputElement.value = '';\n    }\n\n    this._cdr.markForCheck();\n  }\n\n  setInputPlaceholder(value: number) {\n    this.inputElement.placeholder = this._withZeroPrefix(value);\n    this._cdr.markForCheck();\n  }\n\n  abstract _withZeroPrefix(value: number): string;\n\n  abstract _formatValue(value: number): number;\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nconst visible = { transform: 'scale(1)', opacity: 1, visibility: 'visible' };\nconst hidden = { transform: 'scale(1.05)', opacity: 0, visibility: 'hidden' };\n\nexport const enterLeaveAnimation = trigger('enterLeaveAnimation', [\n  transition(':enter', [\n    style(hidden),\n    animate('0.1s ease-out', style(visible)),\n  ]),\n  transition(':leave', [style(visible), animate('0s ease-in', style(hidden))]),\n]);\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { TimepickerOrientation } from './orientation';\n\n@Component({\n  selector: 'mat-timepicker-content-layout',\n  standalone: true,\n  templateUrl: './timepicker-content-layout.html',\n  styleUrls: ['./timepicker-content-layout.scss'],\n  exportAs: 'matTimepickerContent',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-timepicker-content-layout',\n    '[class.mat-timepicker-content-layout-horizontal]': 'orientation === \"horizontal\"',\n    '[class.mat-timepicker-content-layout-vertical]': 'orientation === \"vertical\"',\n  },\n})\nexport class MatTimepickerContentLayout {\n  /** Content title. */\n  @Input() title: string;\n\n  /** Layout orientation. */\n  @Input() orientation: TimepickerOrientation = 'vertical';\n}\n","<h6 class=\"mat-timepicker-content-layout-title\">{{ title }}</h6>\n\n<div class=\"mat-timepicker-content-layout-container\">\n  <div class=\"mat-timepicker-content-layout-values\">\n    <div class=\"mat-timepicker-content-layout-hours\">\n      <ng-content select=\"[hours]\"></ng-content>\n    </div>\n    <span class=\"mat-timepicker-content-layout-separator\">&#58;</span>\n    <div class=\"mat-timepicker-content-layout-minutes\">\n      <ng-content select=\"[minutes]\"></ng-content>\n    </div>\n\n    <ng-content select=\"[mat-time-period]\"></ng-content>\n  </div>\n\n  <ng-content></ng-content>\n</div>\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Input,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatRippleModule } from '@angular/material/core';\n\nimport { MatTimepickerIntl } from './timepicker-intl';\n\nexport type MatTimePeriodType = 'am' | 'pm';\n\n@Component({\n  selector: 'mat-time-period',\n  standalone: true,\n  imports: [MatDividerModule, MatRippleModule],\n  templateUrl: './time-period.html',\n  styleUrls: ['./time-period.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-time-period',\n    '[class.mat-time-period-vertical]': 'vertical',\n    '[class.mat-time-period-horizontal]': '!vertical',\n    '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n  },\n})\nexport class MatTimePeriod {\n  /** Whether the time period is vertically aligned. */\n  @Input()\n  get vertical(): boolean {\n    return this._vertical;\n  }\n  set vertical(value: BooleanInput) {\n    this._vertical = coerceBooleanProperty(value);\n  }\n  private _vertical: boolean = true;\n\n  @Input()\n  get period(): MatTimePeriodType {\n    return this._period;\n  }\n  set period(value: MatTimePeriodType) {\n    this._period = value || 'am';\n  }\n  private _period: MatTimePeriodType = 'am';\n\n  @Input()\n  get disabledPeriod(): MatTimePeriodType | null {\n    return this._disabledPeriod;\n  }\n  set disabledPeriod(value: MatTimePeriodType | null) {\n    this._disabledPeriod = value;\n  }\n  private _disabledPeriod: MatTimePeriodType | null = null;\n\n  @Output() periodChanged = new EventEmitter<MatTimePeriodType>();\n\n  constructor(public _intl: MatTimepickerIntl) {}\n\n  setPeriod(event: Event, period: MatTimePeriodType): void {\n    event.preventDefault();\n    this.period = period;\n    this.periodChanged.emit(period);\n  }\n\n  _isPeriodDisabled(period: MatTimePeriodType): boolean {\n    if (!this.disabledPeriod) {\n      return false;\n    }\n\n    return this.disabledPeriod === period;\n  }\n}\n","<div\n  tabindex=\"0\"\n  class=\"mat-time-period-item\"\n  matRipple\n  [class.mat-time-period-item-active]=\"period === 'am'\"\n  [class.mat-time-period-item-disabled]=\"_isPeriodDisabled('am')\"\n  (click)=\"setPeriod($event, 'am')\"\n  (keydown.space)=\"setPeriod($event, 'am')\"\n>\n  {{ _intl.am }}\n</div>\n<mat-divider [vertical]=\"!vertical\"></mat-divider>\n<div\n  tabindex=\"0\"\n  class=\"mat-time-period-item\"\n  matRipple\n  [class.mat-time-period-item-active]=\"period === 'pm'\"\n  [class.mat-time-period-item-disabled]=\"_isPeriodDisabled('pm')\"\n  (click)=\"setPeriod($event, 'pm')\"\n  (keydown.space)=\"setPeriod($event, 'pm')\"\n>\n  {{ _intl.pm }}\n</div>\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  OnInit,\n  OnDestroy,\n  Optional,\n  NgZone,\n  ElementRef,\n  Input,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BehaviorSubject, Subscription, take } from 'rxjs';\n\nimport { TimeAdapter } from './adapter';\nimport { MatTimeFaceBase } from './time-face-base';\nimport { withZeroPrefixMeridiem } from './time-input-base';\nimport { MatTimepickerIntl } from './timepicker-intl';\nimport { TimepickerOrientation } from './orientation';\nimport { enterLeaveAnimation } from './clock-dial-adnimation';\nimport { MatTimepickerContentLayout } from './timepicker-content-layout';\nimport { MatHoursClockDial } from './hours-clock-dial';\nimport { MatMinutesClockDial } from './minutes-clock-dial';\nimport { MatTimePeriod } from './time-period';\n\nexport type MatDialView = 'hours' | 'minutes';\n\n@Component({\n  selector: 'mat-clock-dials',\n  standalone: true,\n  imports: [\n    CommonModule,\n    MatTimepickerContentLayout,\n    MatHoursClockDial,\n    MatMinutesClockDial,\n    MatTimePeriod,\n  ],\n  templateUrl: './clock-dials.html',\n  styleUrls: ['./clock-dials.scss'],\n  exportAs: 'matClockDials',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    role: 'dial',\n    class: 'mat-clock-dials',\n  },\n  animations: [enterLeaveAnimation],\n})\nexport class MatClockDials<T>\n  extends MatTimeFaceBase<T>\n  implements OnInit, OnDestroy\n{\n  /** Layout orientation. */\n  @Input() orientation: TimepickerOrientation;\n\n  /** Whether the timepicker UI is in touch mode. */\n  @Input() touchUi: boolean;\n\n  isHoursView = true;\n\n  /** Specifies the view of clock dial. */\n  private readonly _view = new BehaviorSubject<MatDialView>('hours');\n  private _viewSubscription: Subscription | null = Subscription.EMPTY;\n\n  constructor(\n    public _intl: MatTimepickerIntl,\n    @Optional() _timeAdapter: TimeAdapter<T>,\n    private _ngZone: NgZone,\n    private _elementRef: ElementRef,\n    private _cdr: ChangeDetectorRef,\n  ) {\n    super(_timeAdapter);\n  }\n\n  ngOnInit(): void {\n    this._viewSubscription = this._view.subscribe(\n      (view) => (this.isHoursView = view === 'hours'),\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._viewSubscription?.unsubscribe();\n    this._viewSubscription = null;\n  }\n\n  /** Changes clock dial view. */\n  onViewChange(event: Event, view: MatDialView): void {\n    event.preventDefault();\n    this._view.next(view);\n  }\n\n  focusActiveCell(): void {\n    this._ngZone.runOutsideAngular(() => {\n      this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n        const activeCell: HTMLElement | null =\n          this._elementRef.nativeElement.querySelector(\n            '.mat-timepicker-content .mat-clock-dial-cell-active', // to avoid focus for inline mode\n          );\n\n        if (activeCell) {\n          activeCell.focus();\n          return;\n        }\n\n        const activePoint: HTMLElement | null =\n          this._elementRef.nativeElement.querySelector(\n            '.mat-timepicker-content .mat-clock-dial-hand-point', // to avoid focus for inline mode\n          );\n\n        if (activePoint) {\n          // if no active cell we need to focus a small dot\n          activePoint.focus();\n        }\n      });\n    });\n  }\n\n  _withZeroPrefix(value: number): string {\n    if (value === 0) {\n      return '00';\n    }\n\n    return withZeroPrefixMeridiem(value, this.isMeridiem);\n  }\n\n  override _onMinuteSelected(minute: number): void {\n    super._onMinuteSelected(minute);\n    this._cdr.detectChanges();\n  }\n\n  /** Handles hour selection. */\n  _onHourChanged({\n    hour,\n    changeView = false,\n  }: {\n    hour: number;\n    changeView?: boolean;\n  }): void {\n    if (changeView) {\n      this._view.next('minutes');\n    }\n    this._onHourSelected(hour);\n    this._cdr.detectChanges();\n  }\n}\n","<mat-timepicker-content-layout [title]=\"_intl.dialsTitle\" [orientation]=\"orientation\">\n  <div\n    tabindex=\"0\"\n    class=\"mat-clock-dial-value\"\n    hours\n    [class.mat-clock-dial-value-active]=\"isHoursView\"\n    (click)=\"onViewChange($event, 'hours')\"\n    (keydown.space)=\"onViewChange($event, 'hours')\"\n  >\n    {{ _withZeroPrefix(selectedHour) }}\n  </div>\n  <div\n    tabindex=\"0\"\n    class=\"mat-clock-dial-value\"\n    minutes\n    [class.mat-clock-dial-value-active]=\"!isHoursView\"\n    (click)=\"onViewChange($event, 'minutes')\"\n    (keydown.space)=\"onViewChange($event, 'minutes')\"\n  >\n    {{ _withZeroPrefix(selectedMinute) }}\n  </div>\n\n  <ng-template mat-time-period [ngIf]=\"isMeridiem\">\n    <mat-time-period\n      [period]=\"period\"\n      [disabledPeriod]=\"disabledPeriod\"\n      [vertical]=\"orientation === 'vertical'\"\n      (periodChanged)=\"_onPeriodChanged($event)\"\n    ></mat-time-period>\n  </ng-template>\n\n  <div\n    class=\"mat-clock-dial-faces\"\n    [class.mat-clock-dial-faces-horizontal]=\"orientation === 'horizontal'\"\n  >\n    @if (isHoursView) {\n      <mat-hours-clock-dial\n        [@enterLeaveAnimation]\n        [color]=\"color\"\n        [selectedHour]=\"selectedHour\"\n        [isMeridiem]=\"isMeridiem\"\n        [availableHours]=\"_getAvailableHours()\"\n        [touchUi]=\"touchUi\"\n        (selectedChange)=\"_onHourChanged($event)\"\n        (keydown)=\"_onKeydown($event, 'hour')\"\n      ></mat-hours-clock-dial>\n    }\n\n    @if (!isHoursView) {\n      <mat-minutes-clock-dial\n        [@enterLeaveAnimation]\n        [color]=\"color\"\n        [selectedMinute]=\"selectedMinute\"\n        [interval]=\"minuteInterval\"\n        [availableMinutes]=\"availableMinutes\"\n        [touchUi]=\"touchUi\"\n        (selectedChange)=\"_onMinuteSelected($event)\"\n        (keydown)=\"_onKeydown($event, 'minute')\"\n      ></mat-minutes-clock-dial>\n    }\n  </div>\n</mat-timepicker-content-layout>\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  Optional,\n  Directive,\n  Input,\n  ElementRef,\n  ChangeDetectorRef,\n  Inject,\n  NgZone,\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { take } from 'rxjs';\n\nimport { TimeAdapter } from './adapter';\nimport { MatTimeFaceBase } from './time-face-base';\nimport { MatTimepickerIntl } from './timepicker-intl';\nimport {\n  MatTimeInputBase,\n  withZeroPrefix,\n  withZeroPrefixMeridiem,\n} from './time-input-base';\nimport { MatTimePeriod } from './time-period';\nimport { MatTimepickerContentLayout } from './timepicker-content-layout';\n\n@Directive({\n  selector: 'input[matHourInput]',\n  standalone: true,\n  exportAs: 'matTimeInput',\n  host: {\n    class: 'mat-time-input',\n    '(focus)': 'focus($event)',\n    '(blur)': 'blur($event)',\n  },\n})\nexport class MatHourInput extends MatTimeInputBase {\n  @Input()\n  get availableHours(): number[] {\n    return this._availableHours;\n  }\n  set availableHours(value: number[]) {\n    this._availableHours = value;\n  }\n  private _availableHours: number[] = [];\n\n  @Input() isMeridiem: boolean;\n\n  constructor(\n    element: ElementRef<HTMLInputElement>,\n    _cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) _document: Document,\n  ) {\n    super(element, _cdr, _document);\n  }\n\n  _withZeroPrefix(value: number): string {\n    return withZeroPrefixMeridiem(value, this.isMeridiem);\n  }\n\n  _formatValue(hour: number): number {\n    const getValue = () => {\n      if (this.isMeridiem) {\n        if (hour === 0 || hour === 24) {\n          return 12;\n        }\n      }\n\n      if (hour === 24) {\n        return 0;\n      }\n\n      return this.isMeridiem && hour > 12 ? hour - 12 : hour;\n    };\n\n    const value = getValue();\n\n    if (this.isMeridiem) {\n      if (!this.availableHours.length) {\n        return this.value;\n      }\n\n      if (value === 12 && this.availableHours.includes(12)) {\n        return 12;\n      }\n\n      if (value === 12 && !this.availableHours.includes(12)) {\n        return Math.min(...this.availableHours);\n      }\n\n      if (value >= 1 && value < 12) {\n        // the last item is max becuase 12 at the beginning is kinda \"min\"\n        const maxHour = this.availableHours[this.availableHours.length - 1];\n\n        return Math.min(\n          Math.max(value, Math.min(...this.availableHours)),\n          maxHour,\n        );\n      }\n    }\n\n    return Math.min(\n      Math.max(value, Math.min(...this.availableHours)),\n      Math.max(...this.availableHours),\n    );\n  }\n}\n\n@Directive({\n  selector: 'input[matMinuteInput]',\n  standalone: true,\n  exportAs: 'matTimeInput',\n  host: {\n    class: 'mat-time-input',\n    '(focus)': 'focus($event)',\n    '(blur)': 'blur($event)',\n  },\n})\nexport class MatMinuteInput extends MatTimeInputBase {\n  /** Step over minutes. */\n  @Input()\n  get interval(): number {\n    return this._interval;\n  }\n  set interval(value: number) {\n    this._interval = coerceNumberProperty(value) || 1;\n  }\n  private _interval: number = 1;\n\n  @Input()\n  get availableMinutes(): number[] {\n    return this._availableMinutes;\n  }\n  set availableMinutes(value: number[]) {\n    this._availableMinutes = value;\n  }\n  private _availableMinutes: number[] = [];\n\n  constructor(\n    element: ElementRef<HTMLInputElement>,\n    _cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) _document: Document,\n  ) {\n    super(element, _cdr, _document);\n  }\n\n  _withZeroPrefix(value: number): string {\n    return withZeroPrefix(value);\n  }\n\n  _formatValue(value: number): number {\n    if (!this.availableMinutes.length) {\n      return this.value;\n    }\n\n    const roundedValue = Math.round(value / this.interval) * this.interval;\n\n    return Math.min(\n      Math.max(roundedValue, Math.min(...this.availableMinutes)),\n      Math.max(...this.availableMinutes),\n    );\n  }\n}\n\n@Component({\n  selector: 'mat-time-inputs',\n  standalone: true,\n  imports: [\n    CommonModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatTimepickerContentLayout,\n    MatHourInput,\n    MatMinuteInput,\n    MatTimePeriod,\n  ],\n  templateUrl: './time-inputs.html',\n  styleUrls: ['./time-inputs.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-time-inputs',\n  },\n})\nexport class MatTimeInputs<T> extends MatTimeFaceBase<T> {\n  constructor(\n    public _intl: MatTimepickerIntl,\n    @Optional() _timeAdapter: TimeAdapter<T>,\n    private _ngZone: NgZone,\n    private _elementRef: ElementRef,\n  ) {\n    super(_timeAdapter);\n  }\n\n  /**\n   * Using for skipping that focus shouldn't be moved to the active cell on the next tick.\n   * We need to use it to avoid focusing input for input mode.\n   */\n  private _skipNextTickFocus = false;\n\n  focusActiveCell(): void {\n    this._ngZone.runOutsideAngular(() => {\n      this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n        const activeCell: HTMLElement | null =\n          this._elementRef.nativeElement.querySelector(\n            '.mat-timepicker-content input', // to avoid focus for inline mode\n          );\n        if (activeCell && !this._skipNextTickFocus) {\n          activeCell.focus();\n          this._skipNextTickFocus = true;\n        }\n      });\n    });\n  }\n}\n","<mat-timepicker-content-layout [title]=\"_intl.inputsTitle\">\n  <mat-form-field\n    class=\"mat-time-inputs-field\"\n    appearance=\"outline\"\n    hours\n    [color]=\"color\"\n  >\n    <input\n      type=\"text\"\n      inputmode=\"numeric\"\n      maxlength=\"2\"\n      matInput\n      matHourInput\n      [isMeridiem]=\"isMeridiem\"\n      [value]=\"selectedHour\"\n      [availableHours]=\"_getAvailableHours()\"\n      (timeChanged)=\"_onHourSelected($event)\"\n      (keydown)=\"_onKeydown($event, 'hour')\"\n    />\n    <mat-hint>{{ _intl.hourInputHint }}</mat-hint>\n  </mat-form-field>\n  <mat-form-field\n    class=\"mat-time-inputs-field\"\n    appearance=\"outline\"\n    minutes\n    [color]=\"color\"\n  >\n    <input\n      type=\"text\"\n      inputmode=\"numeric\"\n      maxlength=\"2\"\n      matInput\n      matMinuteInput\n      [value]=\"selectedMinute\"\n      [interval]=\"minuteInterval\"\n      [availableMinutes]=\"availableMinutes\"\n      (timeChanged)=\"_onMinuteSelected($event)\"\n      (keydown)=\"_onKeydown($event, 'minute')\"\n    />\n    <mat-hint>{{ _intl.minuteInputHint }}</mat-hint>\n  </mat-form-field>\n\n  <ng-template mat-time-period [ngIf]=\"isMeridiem\">\n    <mat-time-period\n      [period]=\"period\"\n      [disabledPeriod]=\"disabledPeriod\"\n      (periodChanged)=\"_onPeriodChanged($event)\"\n    ></mat-time-period>\n  </ng-template>\n</mat-timepicker-content-layout>\n","import {\n  FactoryProvider,\n  Injectable,\n  OnDestroy,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { TimeAdapter } from './adapter';\n\nexport type ExtractTimeTypeFromSelection<T> = NonNullable<T>;\n\n/**\n * Event emitted by the time selection model when its selection changes.\n * @docs-private\n */\nexport interface TimeSelectionModelChange<S> {\n  /** New value for the selection. */\n  selection: S;\n\n  /** Object that triggered the change. */\n  source: unknown;\n\n  /** Previous value */\n  oldValue?: S;\n}\n\n/**\n * A selection model containing a time selection.\n */\n@Injectable()\nexport abstract class MatTimeSelectionModel<\n  S,\n  T = ExtractTimeTypeFromSelection<S>\n> implements OnDestroy\n{\n  /** The current selection. */\n  readonly selection: S;\n\n  private readonly _selectionChanged = new Subject<\n    TimeSelectionModelChange<S>\n  >();\n\n  /** Emits when the selection has changed. */\n  selectionChanged: Observable<TimeSelectionModelChange<S>> =\n    this._selectionChanged;\n\n  /**\n   * Updates the current selection in the model.\n   * @param value New selection that should be assigned.\n   * @param source Object that triggered the selection change.\n   */\n  updateSelection(value: S, source: unknown) {\n    const oldValue = (this as { selection: S }).selection;\n    (this as { selection: S }).selection = value;\n    this._selectionChanged.next({ selection: value, source, oldValue });\n  }\n\n  protected constructor(protected _adapter: TimeAdapter<T>) {\n    // this.selection = selection;\n  }\n\n  ngOnDestroy(): void {\n    this._selectionChanged.complete();\n  }\n\n  /** Adds a time to the current selection. */\n  abstract add(time: T | null): void;\n\n  /** Clones the selection model. */\n  abstract clone(): MatTimeSelectionModel<S, T>;\n}\n\n/**\n * A selection model that contains a single time.\n */\n@Injectable()\nexport class MatSingleTimeSelectionModel<T> extends MatTimeSelectionModel<\n  T | null,\n  T\n> {\n  constructor(adapter: TimeAdapter<T>) {\n    super(adapter);\n  }\n\n  /**\n   * Adds a time to the current selection. In the case of a single time selection, the added time\n   * simply overwrites the previous selection\n   */\n  add(time: T | null) {\n    super.updateSelection(time, this);\n  }\n\n  /** Clones the selection model. */\n  clone() {\n    const clone = new MatSingleTimeSelectionModel<T>(this._adapter);\n    clone.updateSelection(this.selection, this);\n    return clone;\n  }\n}\n\nexport function MAT_SINGLE_TIME_SELECTION_MODEL_FACTORY(\n  parent: MatSingleTimeSelectionModel<unknown>,\n  adapter: TimeAdapter<unknown>\n) {\n  return parent || new MatSingleTimeSelectionModel(adapter);\n}\n\n/**\n * Used to provide a single selection model to a component.\n */\nexport const MAT_SINGLE_TIME_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n  provide: MatTimeSelectionModel,\n  deps: [\n    [new Optional(), new SkipSelf(), MatSingleTimeSelectionModel],\n    TimeAdapter,\n  ],\n  useFactory: MAT_SINGLE_TIME_SELECTION_MODEL_FACTORY,\n};\n","import { AnimationEvent } from '@angular/animations';\nimport {\n  ComponentPortal,\n  PortalModule,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ViewEncapsulation,\n  ElementRef,\n  OnInit,\n  AfterViewInit,\n  ViewChild,\n  signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Subject, Subscription } from 'rxjs';\n\nimport {\n  ExtractTimeTypeFromSelection,\n  MatTimeSelectionModel,\n} from './time-selection-model';\nimport { matTimepickerAnimations } from './timepicker-animations';\nimport { MatTimepickerBase, TimepickerMode } from './timepicker-base';\nimport { MatTimepickerIntl } from './timepicker-intl';\nimport { MatClockDials } from './clock-dials';\nimport { MatTimeInputs } from './time-inputs';\nimport { TimepickerOrientation } from './orientation';\n\n@Component({\n  selector: 'mat-timepicker-content',\n  standalone: true,\n  imports: [\n    CommonModule,\n    PortalModule,\n    A11yModule,\n    MatTimeInputs,\n    MatClockDials,\n    MatButtonModule,\n  ],\n  templateUrl: './timepicker-content.html',\n  styleUrls: ['./timepicker-content.scss'],\n  exportAs: 'matTimepickerContent',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-timepicker-content',\n    '[class]': 'color ? \"mat-\" + color : \"\"',\n    '[@transformPanel]': '_animationState',\n    '(@transformPanel.start)': '_handleAnimationEvent($event)',\n    '(@transformPanel.done)': '_handleAnimationEvent($event)',\n    '[class.mat-timepicker-content-touch]': 'timepicker.touchUi',\n  },\n  animations: [\n    matTimepickerAnimations.transformPanel,\n    matTimepickerAnimations.fadeInTimepicker,\n  ],\n})\nexport class MatTimepickerContent<S, T = ExtractTimeTypeFromSelection<S>>\n  implements OnInit, AfterViewInit\n{\n  /** Reference to the internal clock dials component. */\n  @ViewChild(MatClockDials) _dials: MatClockDials<T> | undefined;\n\n  /** Reference to the internal time inputs component. */\n  @ViewChild(MatTimeInputs) _inputs: MatTimeInputs<T> | undefined;\n\n  /** Reference to the timepicker that created the overlay. */\n  timepicker: MatTimepickerBase<any, S, T>;\n\n  /** Display mode. */\n  mode: TimepickerMode;\n\n  /** Current state of the animation. */\n  _animationState: 'enter-dropdown' | 'enter-dialog' | 'void';\n\n  /** Whether the clock uses 12 hour format. */\n  isMeridiem: boolean;\n\n  /** Whether should toggle face button be shown. */\n  showToggleModeButton: boolean;\n\n  /** Step for minutes. */\n  minuteInterval: number;\n\n  /** Orientation for dial mode. */\n  orientation: TimepickerOrientation;\n\n  /** Portal with projected action buttons. */\n  _actionsPortal: TemplatePortal | ComponentPortal<any> | null = null;\n\n  /** Id of the label for the `role=\"dialog\"` element. */\n  _dialogLabelId: string | null;\n\n  /** Text for the close button. */\n  _closeButtonText: string;\n\n  /** Whether the close button currently has focus. */\n  _closeButtonFocused: boolean;\n\n  /** Whether there is an in-progress animation. */\n  _isAnimating = false;\n\n  /**\n   * Theme color of the internal timepicker. This API is supported in M2 themes\n   * only, it has no effect in M3 themes.\n   */\n  color: ThemePalette;\n\n  /** Emits when an animation has finished. */\n  readonly _animationDone = new Subject<void>();\n\n  private _model: MatTimeSelectionModel<S, T>;\n  private _subscriptions = new Subscription();\n\n  constructor(\n    intl: MatTimepickerIntl,\n    private _globalModel: MatTimeSelectionModel<S, T>,\n    private _changeDetectorRef: ChangeDetectorRef,\n  ) {\n    this._closeButtonText = intl.closeTimepickerLabel;\n  }\n\n  ngOnInit() {\n    this._animationState =\n      this.timepicker.openAs === 'dialog' ? 'enter-dialog' : 'enter-dropdown';\n  }\n\n  ngAfterViewInit() {\n    this._subscriptions.add(\n      this.timepicker.stateChanges.subscribe(() => {\n        this._changeDetectorRef.markForCheck();\n      }),\n    );\n    (this._dials || this._inputs)?.focusActiveCell();\n  }\n\n  ngOnDestroy() {\n    this._subscriptions.unsubscribe();\n    this._animationDone.complete();\n  }\n\n  /** Changes animation state while closing timepicker content. */\n  _startExitAnimation() {\n    this._animationState = 'void';\n    this._changeDetectorRef.markForCheck();\n  }\n\n  _handleAnimationEvent(event: AnimationEvent) {\n    this._isAnimating = event.phaseName === 'start';\n\n    if (!this._isAnimating) {\n      this._animationDone.next();\n    }\n  }\n\n  onToggleMode(mode: TimepickerMode): void {\n    this.mode = mode;\n  }\n\n  _getSelected() {\n    return this._model?.selection as unknown as T | null;\n  }\n\n  /** Applies the current pending selection to the global model. */\n  _applyPendingSelection() {\n    if (this._model !== this._globalModel) {\n      this._globalModel.updateSelection(this._model.selection, this);\n    }\n  }\n\n  /**\n   * Assigns a new portal containing the timepicker actions.\n   * @param portal Portal with the actions to be assigned.\n   * @param forceRerender Whether a re-render of the portal should be triggered. This isn't\n   * necessary if the portal is assigned during initialization, but it may be required if it's\n   * added at a later point.\n   */\n  _assignActions(\n    portal: TemplatePortal<any> | ComponentPortal<any> | null,\n    forceRerender: boolean,\n  ) {\n    // As we have actions, clone the model so that we have the ability to cancel the selection.\n    // Note that we want to assign this as soon as possible,\n    // but `_actionsPortal` isn't available in the constructor so we do it in `ngOnInit`.\n    this._model = this._globalModel.clone();\n\n    this._actionsPortal = portal;\n\n    if (forceRerender) {\n      this._changeDetectorRef.detectChanges();\n    }\n  }\n\n  _handleUserSelection(event: T) {\n    const value = event;\n    this._model.add(value);\n  }\n}\n","<div\n  cdkTrapFocus\n  role=\"dialog\"\n  class=\"mat-timepicker-content-container\"\n  [attr.aria-modal]=\"true\"\n  [attr.aria-labelledby]=\"_dialogLabelId ?? undefined\"\n>\n  @switch (mode) {\n    @case ('input') {\n      <mat-time-inputs\n        [id]=\"timepicker.id\"\n        [color]=\"color\"\n        [isMeridiem]=\"isMeridiem\"\n        [selected]=\"_getSelected()\"\n        [minTime]=\"timepicker._getMinTime()\"\n        [maxTime]=\"timepicker._getMaxTime()\"\n        [minuteInterval]=\"minuteInterval\"\n        (_userSelection)=\"_handleUserSelection($event)\"\n      ></mat-time-inputs>\n\n      <div class=\"mat-timepicker-content-actions\">\n        @if (showToggleModeButton) {\n          <button\n            class=\"mat-time-toggle-mode-button\"\n            mat-icon-button\n            (click)=\"onToggleMode('dial')\"\n          >\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              height=\"24\"\n              width=\"24\"\n              viewBox=\"0 0 24 24\"\n            >\n              <path\n                d=\"m15.175 16.625 1.475-1.45-3.6-3.6V7.1h-2.075v5.3ZM12 21.95q-2.075 0-3.887-.787-1.813-.788-3.15-2.125-1.338-1.338-2.125-3.151Q2.05 14.075 2.05 12t.788-3.887q.787-1.813 2.125-3.15Q6.3 3.625 8.113 2.837 9.925 2.05 12 2.05t3.887.787q1.813.788 3.151 2.126 1.337 1.337 2.125 3.15.787 1.812.787 3.887t-.787 3.887q-.788 1.813-2.125 3.151-1.338 1.337-3.151 2.125-1.812.787-3.887.787ZM12 12Zm0 7.8q3.225 0 5.513-2.275Q19.8 15.25 19.8 12q0-3.25-2.287-5.525Q15.225 4.2 12 4.2T6.488 6.475Q4.2 8.75 4.2 12q0 3.25 2.288 5.525Q8.775 19.8 12 19.8Z\"\n              />\n            </svg>\n          </button>\n        }\n\n        <ng-template [cdkPortalOutlet]=\"_actionsPortal\"></ng-template>\n      </div>\n    }\n\n    @case ('dial') {\n      <mat-clock-dials\n        [id]=\"timepicker.id\"\n        [color]=\"color\"\n        [isMeridiem]=\"isMeridiem\"\n        [selected]=\"_getSelected()\"\n        [minTime]=\"timepicker._getMinTime()\"\n        [maxTime]=\"timepicker._getMaxTime()\"\n        [minuteInterval]=\"minuteInterval\"\n        [orientation]=\"orientation\"\n        [touchUi]=\"timepicker.touchUi\"\n        (_userSelection)=\"_handleUserSelection($event)\"\n      ></mat-clock-dials>\n\n      <div class=\"mat-timepicker-content-actions\">\n        @if (showToggleModeButton) {\n          <button\n            class=\"mat-time-toggle-mode-button\"\n            mat-icon-button\n            (click)=\"onToggleMode('input')\"\n          >\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              height=\"24\"\n              width=\"24\"\n              viewBox=\"0 0 24 24\"\n            >\n              <path\n                d=\"M4 19q-.825 0-1.412-.587Q2 17.825 2 17V7q0-.825.588-1.412Q3.175 5 4 5h16q.825 0 1.413.588Q22 6.175 22 7v10q0 .825-.587 1.413Q20.825 19 20 19Zm0-2h16V7H4v10Zm4-1h8v-2H8Zm-3-3h2v-2H5Zm3 0h2v-2H8Zm3 0h2v-2h-2Zm3 0h2v-2h-2Zm3 0h2v-2h-2ZM5 10h2V8H5Zm3 0h2V8H8Zm3 0h2V8h-2Zm3 0h2V8h-2Zm3 0h2V8h-2ZM4 17V7v10Z\"\n              />\n            </svg>\n          </button>\n        }\n\n        <ng-template [cdkPortalOutlet]=\"_actionsPortal\"></ng-template>\n      </div>\n    }\n  }\n\n  <!-- Invisible close button for screen reader users. -->\n  <button\n    type=\"button\"\n    class=\"mat-timepicker-close-button\"\n    mat-raised-button\n    [color]=\"color || 'primary'\"\n    [class.cdk-visually-hidden]=\"!_closeButtonFocused\"\n    (focus)=\"_closeButtonFocused = true\"\n    (blur)=\"_closeButtonFocused = false\"\n    (click)=\"timepicker.close()\"\n  >\n    {{ _closeButtonText }}\n  </button>\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { InjectionToken } from '@angular/core';\n\nexport const MAT_DEFAULT_ACITONS = new InjectionToken<ComponentType<any>>(\n  'MAT_DEFAULT_ACITONS'\n);\n","import {\n  Input,\n  ComponentRef,\n  ViewContainerRef,\n  Directive,\n  NgZone,\n  Inject,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges,\n  ElementRef,\n  InjectionToken,\n  Optional,\n  booleanAttribute,\n  inject,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n} from '@angular/cdk/coercion';\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {\n  ComponentPortal,\n  ComponentType,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n  DOWN_ARROW,\n  ESCAPE,\n  hasModifierKey,\n  PAGE_DOWN,\n  PAGE_UP,\n  UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport { filter, first, merge, Observable, Subject, take } from 'rxjs';\n\nimport { MatTimepickerContent } from './timepicker-content';\nimport { MAT_TIMEPICKER_SCROLL_STRATEGY } from './timepicker-scroll-strategy';\nimport {\n  ExtractTimeTypeFromSelection,\n  MatTimeSelectionModel,\n} from './time-selection-model';\nimport { MAT_DEFAULT_ACITONS } from './timepicker-actions-default';\nimport { TimepickerOrientation } from './orientation';\n\n/** Possible options for the timepicker to open. */\nexport type TimepickerOpenAs = 'dialog' | 'popup';\n\n/** Possible positions for the timepicker dropdown along the X axis. */\nexport type TimepickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the timepicker dropdown along the Y axis. */\nexport type TimepickerDropdownPositionY = 'above' | 'below';\n\n/** Possible options for the timepicker to display. */\nexport type TimepickerMode = 'input' | 'dial';\n\n/** Possible options for the timepicker period format. */\nexport type TimepickerFormat = '12h' | '24h';\n\n/** Form control that can be associated with a timepicker. */\nexport interface MatTimepickerControl<T> {\n  disabled: boolean;\n  min: T | null;\n  max: T | null;\n  stateChanges: Observable<void>;\n  getThemePalette(): ThemePalette;\n  getConnectedOverlayOrigin(): ElementRef;\n  getOverlayLabelId(): string | null;\n}\n\n/** A timepicker that can be attached to a {@link MatTimepickerControl}. */\nexport interface MatTimepickerPanel<\n  C extends MatTimepickerControl<T>,\n  S,\n  T = ExtractTimeTypeFromSelection<S>,\n> {\n  /** Stream that emits whenever the timepicker is opened. */\n  openedStream: EventEmitter<void>;\n  /** Stream that emits whenever the timepicker is closed. */\n  closedStream: EventEmitter<void>;\n  /** Emits when the timepicker's state changes. */\n  stateChanges: Subject<void>;\n  /** Register an input with the timeepicker. */\n  registerInput(input: C): MatTimeSelectionModel<S, T>;\n}\n\n/**\n * Represents the default options for the form field that can be configured\n * using the `MAT_TIMEPICKER_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatTimepickerDefaultOptions {\n  /** Default color of the timepicker. */\n  color?: ThemePalette;\n  /** Default timepicker mode. */\n  mode: TimepickerMode;\n  /** Defines how timepicker will be appeared. */\n  openAs: TimepickerOpenAs;\n  /** Default timepicker format. */\n  format: TimepickerFormat;\n  /** Should toggle face button be visible. */\n  showToggleModeButton: boolean;\n  /** Step for minutes. */\n  minuteInterval: number;\n  /** Orientation for dial mode. */\n  orientation: TimepickerOrientation;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all timepickers within an app.\n */\nexport const MAT_TIMEPICKER_DEFAULT_OPTIONS =\n  new InjectionToken<MatTimepickerDefaultOptions>(\n    'MAT_TIMEPICKER_DEFAULT_OPTIONS',\n  );\n\n/** Default open as used by the timepicker. */\nconst DEFAULT_OPEN_AS: TimepickerOpenAs = 'popup';\n\n/** Default mode used by the timepicker. */\nconst DEFAULT_MODE: TimepickerMode = 'dial';\n\n/** Default format used by the timepicker. */\nconst DEFAULT_FORMAT: TimepickerFormat = '12h';\n\n/** Used to generate a unique ID for each timepicker instance. */\nlet timepickerUid = 0;\n\n@Directive()\nexport abstract class MatTimepickerBase<\n  C extends MatTimepickerControl<T>,\n  S,\n  T = ExtractTimeTypeFromSelection<S>,\n> implements OnChanges\n{\n  /** Whether the timepicker pop-up should be disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled === undefined && this.timepickerInput\n      ? this.timepickerInput.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this.stateChanges.next(undefined);\n    }\n  }\n  private _disabled: boolean;\n\n  /** Whether the timepicker is open. */\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: BooleanInput) {\n    coerceBooleanProperty(value) ? this.open() : this.close();\n  }\n  private _opened = false;\n\n  /** Whether the timepicker mode which determines what the timepicker will be opened as. */\n  @Input()\n  get openAs(): TimepickerOpenAs {\n    return this._openAs || this._defaults?.openAs || DEFAULT_OPEN_AS;\n  }\n  set openAs(value: TimepickerOpenAs) {\n    this._openAs = value;\n  }\n  private _openAs: TimepickerOpenAs;\n\n  /** Color palette to use on the timepicker's content. */\n  @Input()\n  get color(): ThemePalette {\n    return (\n      this._color ||\n      this._defaults?.color ||\n      (this.timepickerInput\n        ? this.timepickerInput.getThemePalette()\n        : undefined)\n    );\n  }\n  set color(value: ThemePalette) {\n    this._color = value;\n  }\n  private _color: ThemePalette;\n\n  /** Timepicker display mode. */\n  @Input()\n  get mode(): TimepickerMode {\n    return this._mode || this._defaults?.mode || DEFAULT_MODE;\n  }\n  set mode(value: TimepickerMode) {\n    this._mode = value;\n  }\n  private _mode: TimepickerMode;\n\n  /** Timepicker period format. */\n  @Input()\n  get format(): TimepickerFormat {\n    return this._format || this._defaults?.format || DEFAULT_FORMAT;\n  }\n  set format(value: TimepickerFormat) {\n    this._format = value;\n  }\n  private _format: TimepickerFormat;\n\n  /** Show or hide toggle button between dial and input. */\n  @Input()\n  get showToggleModeButton(): boolean {\n    return this._showToggleModeButton;\n  }\n  set showToggleModeButton(value: boolean) {\n    this._showToggleModeButton = value;\n  }\n  private _showToggleModeButton: boolean = true;\n\n  /** Step for minutes. */\n  @Input()\n  get minuteInterval(): number {\n    return this._minuteInterval || this._defaults?.minuteInterval || 1;\n  }\n  set minuteInterval(value: number) {\n    this._minuteInterval = coerceNumberProperty(value);\n  }\n  private _minuteInterval: number;\n\n  /** Orientation for dial mode. */\n  @Input()\n  get orientation(): TimepickerOrientation {\n    return this._orientation || this._defaults?.orientation || 'vertical';\n  }\n  set orientation(value: TimepickerOrientation) {\n    this._orientation = value;\n  }\n  private _orientation: TimepickerOrientation;\n\n  /**\n   * Whether the timepicker UI is in touch mode. In touch mode elements are larger for bigger touch targets.\n   */\n  @Input({ transform: booleanAttribute })\n  get touchUi(): boolean {\n    return this._touchUi;\n  }\n  set touchUi(value: boolean) {\n    this._touchUi = coerceBooleanProperty(value);\n\n    if (value) {\n      this.openAs = 'dialog';\n    }\n  }\n  private _touchUi: boolean = false;\n\n  /** Preferred position of the timepicker in the X axis. */\n  @Input()\n  xPosition: TimepickerDropdownPositionX = 'start';\n\n  /** Preferred position of the timepicker in the Y axis. */\n  @Input()\n  yPosition: TimepickerDropdownPositionY = 'below';\n\n  /**\n   * Whether to restore focus to the previously-focused element when the timepicker is closed.\n   * Note that automatic focus restoration is an accessibility feature and it is recommended that\n   * you provide your own equivalent, if you decide to turn it off.\n   */\n  @Input({ transform: booleanAttribute })\n  restoreFocus: boolean = true;\n\n  /** Emits when the timepicker has been opened. */\n  @Output('opened') readonly openedStream = new EventEmitter<void>();\n\n  /** Emits when the timepicker has been closed. */\n  @Output('closed') readonly closedStream = new EventEmitter<void>();\n\n  /** The id for the timepicker. */\n  id: string = `mat-timepicker-${timepickerUid++}`;\n\n  /** The input element this timepicker is associated with. */\n  timepickerInput!: C;\n\n  /** Portal with projected action buttons. */\n  _actionsPortal: TemplatePortal | null = null;\n\n  /** Emits when the timepicker's state changes. */\n  readonly stateChanges = new Subject<void>();\n\n  /** A reference to the overlay into which we've rendered the timepicker. */\n  private _overlayRef: OverlayRef | null;\n\n  /** Reference to the component instance rendered in the overlay. */\n  private _componentRef!: ComponentRef<MatTimepickerContent<S, T>> | null;\n\n  /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n  private _backdropHarnessClass = `${this.id}-backdrop`;\n\n  /** The element that was focused before the timepicker was opened. */\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n  private _document = inject(DOCUMENT);\n\n  /** Scroll strategy. */\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** The minimum selectable time. */\n  _getMinTime(): T | null {\n    return this.timepickerInput && this.timepickerInput.min;\n  }\n\n  /** The maximum selectable time. */\n  _getMaxTime(): T | null {\n    return this.timepickerInput && this.timepickerInput.max;\n  }\n\n  constructor(\n    private _viewContainerRef: ViewContainerRef,\n    private _overlay: Overlay,\n    private _ngZone: NgZone,\n    @Inject(MAT_TIMEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n    @Inject(MAT_DEFAULT_ACITONS)\n    private _defaultActionsComponent: ComponentType<any>,\n    private _model: MatTimeSelectionModel<S, T>,\n    @Optional()\n    @Inject(MAT_TIMEPICKER_DEFAULT_OPTIONS)\n    private _defaults?: MatTimepickerDefaultOptions,\n  ) {\n    this._scrollStrategy = scrollStrategy;\n\n    if (_defaults) {\n      this.showToggleModeButton =\n        _defaults.showToggleModeButton !== undefined\n          ? _defaults.showToggleModeButton\n          : true;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const positionChange = changes['xPosition'] || changes['yPosition'];\n\n    if (positionChange && !positionChange.firstChange && this._overlayRef) {\n      const positionStrategy = this._overlayRef.getConfig().positionStrategy;\n\n      if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n        this._setConnectedPositions(positionStrategy);\n\n        if (this.opened) {\n          this._overlayRef.updatePosition();\n        }\n      }\n    }\n\n    this.stateChanges.next(undefined);\n  }\n\n  ngOnDestroy() {\n    this._destroyOverlay();\n    this.close();\n    this.stateChanges.complete();\n  }\n\n  /** Opens the timepicker. */\n  open(): void {\n    if (\n      this._opened ||\n      this.disabled ||\n      this._componentRef?.instance._isAnimating\n    ) {\n      return;\n    }\n\n    if (!this.timepickerInput) {\n      throw Error(\n        'Attempted to open an MatTimepicker with no associated input.',\n      );\n    }\n\n    this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n    this._openOverlay();\n    this._opened = true;\n    this.openedStream.emit();\n  }\n\n  /** Closes the timepicker. */\n  close(): void {\n    if (!this._opened || this._componentRef?.instance._isAnimating) {\n      return;\n    }\n\n    const canRestoreFocus =\n      this.restoreFocus &&\n      this._focusedElementBeforeOpen &&\n      typeof this._focusedElementBeforeOpen.focus === 'function';\n\n    const completeClose = () => {\n      // The `_opened` could've been reset already if\n      // we got two events in quick succession.\n      if (this._opened) {\n        this._opened = false;\n        this.closedStream.emit();\n      }\n    };\n\n    if (this._componentRef) {\n      const { instance, location } = this._componentRef;\n      instance._startExitAnimation();\n      instance._animationDone.pipe(take(1)).subscribe(() => {\n        const activeElement = this._document.activeElement;\n\n        // Since we restore focus after the exit animation, we have to check that\n        // the user didn't move focus themselves inside the `close` handler.\n        if (\n          canRestoreFocus &&\n          (!activeElement ||\n            activeElement === this._document.activeElement ||\n            location.nativeElement.contains(activeElement))\n        ) {\n          this._focusedElementBeforeOpen!.focus();\n        }\n\n        this._focusedElementBeforeOpen = null;\n        this._destroyOverlay();\n      });\n\n      if (canRestoreFocus) {\n        setTimeout(completeClose);\n      } else {\n        completeClose();\n      }\n    }\n  }\n\n  /**\n   * Register an input with this timepicker.\n   * @param input The timepicker input to register with this timepicker.\n   * @returns Selection model that the input should hook itself up to.\n   */\n  registerInput(input: C): MatTimeSelectionModel<S, T> {\n    if (this.timepickerInput) {\n      throw Error(\n        'A MatTimepicker can only be associated with a single input.',\n      );\n    }\n\n    this.timepickerInput = input;\n    return this._model;\n  }\n\n  /**\n   * Registers a portal containing action buttons with the timepicker.\n   * @param portal Portal to be registered.\n   */\n  registerActions(portal: TemplatePortal): void {\n    if (this._actionsPortal) {\n      throw Error(\n        'A MatTimepicker can only be associated with a single actions row.',\n      );\n    }\n    this._actionsPortal = portal;\n    this._componentRef?.instance._assignActions(portal, true);\n  }\n\n  /**\n   * Removes a portal containing action buttons from the timepicker.\n   * @param portal Portal to be removed.\n   */\n  removeActions(portal: TemplatePortal): void {\n    if (portal === this._actionsPortal) {\n      this._actionsPortal = null;\n      this._componentRef?.instance._assignActions(null, true);\n    }\n  }\n\n  /** Applies the current pending selection on the overlay to the model. */\n  _applyPendingSelection() {\n    this._componentRef?.instance?._applyPendingSelection();\n  }\n\n  /** Forwards relevant values from the timepicker to the timepicker content inside the overlay. */\n  protected _forwardContentValues(instance: MatTimepickerContent<S, T>): void {\n    const defaultPortal = new ComponentPortal(this._defaultActionsComponent);\n\n    instance.timepicker = this;\n    instance.color = this.color;\n    instance.mode = this.mode;\n    instance.isMeridiem = this.format === '12h';\n    instance.showToggleModeButton = this.showToggleModeButton;\n    instance.minuteInterval = this.minuteInterval;\n    instance.orientation = this.orientation;\n    instance._dialogLabelId = this.timepickerInput.getOverlayLabelId();\n    instance._assignActions(this._actionsPortal || defaultPortal, false);\n  }\n\n  /** Opens the overlay with the timepicker. */\n  private _openOverlay(): void {\n    this._destroyOverlay();\n\n    const isDialog = this.openAs === 'dialog';\n    const portal = new ComponentPortal<MatTimepickerContent<S, T>>(\n      MatTimepickerContent,\n      this._viewContainerRef,\n    );\n\n    const overlayRef = (this._overlayRef = this._overlay.create(\n      new OverlayConfig({\n        positionStrategy: isDialog\n          ? this._getDialogStrategy()\n          : this._getDropdownStrategy(),\n        hasBackdrop: true,\n        backdropClass: [\n          isDialog\n            ? 'cdk-overlay-dark-backdrop'\n            : 'mat-overlay-transparent-backdrop',\n          this._backdropHarnessClass,\n        ],\n        direction: 'ltr',\n        scrollStrategy: isDialog\n          ? this._overlay.scrollStrategies.block()\n          : this._scrollStrategy(),\n        panelClass: `mat-timepicker-${this.openAs}`,\n      }),\n    ));\n\n    this._getCloseStream(overlayRef).subscribe((event) => {\n      if (event) {\n        event.preventDefault();\n      }\n      this.close();\n    });\n\n    // The `preventDefault` call happens inside the timepicker as well, however focus moves into\n    // it inside a timeout which can give browsers a chance to fire off a keyboard event in-between\n    // that can scroll the page. Always block default actions of arrow keys for the\n    // entire overlay so the page doesn't get scrolled by accident.\n    overlayRef.keydownEvents().subscribe((event) => {\n      const keyCode = event.keyCode;\n\n      if (\n        keyCode === UP_ARROW ||\n        keyCode === DOWN_ARROW ||\n        keyCode === PAGE_UP ||\n        keyCode === PAGE_DOWN\n      ) {\n        event.preventDefault();\n      }\n    });\n\n    this._componentRef = overlayRef.attach(portal);\n    this._forwardContentValues(this._componentRef.instance);\n\n    // Update the position once the timepicker has rendered. Only relevant in dropdown mode.\n    if (!isDialog) {\n      this._ngZone.onStable\n        .pipe(first())\n        .subscribe(() => overlayRef.updatePosition());\n    }\n  }\n\n  /** Destroys the current overlay. */\n  private _destroyOverlay(): void {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = this._componentRef = null;\n    }\n  }\n\n  /** Gets a position strategy that will open the timepicker as a dropdown. */\n  private _getDialogStrategy() {\n    return this._overlay\n      .position()\n      .global()\n      .centerHorizontally()\n      .centerVertically();\n  }\n\n  /** Gets a position strategy that will open the timepicker as a dropdown. */\n  private _getDropdownStrategy() {\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this.timepickerInput.getConnectedOverlayOrigin())\n      .withTransformOriginOn('.mat-timepicker-content')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      .withLockedPosition();\n\n    return this._setConnectedPositions(strategy);\n  }\n\n  /** Sets the positions of the timepicker in dropdown mode based on the current configuration. */\n  private _setConnectedPositions(\n    strategy: FlexibleConnectedPositionStrategy,\n  ): FlexibleConnectedPositionStrategy {\n    const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n    const secondaryX = primaryX === 'start' ? 'end' : 'start';\n    const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n    const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n    return strategy.withPositions([\n      {\n        originX: primaryX,\n        originY: secondaryY,\n        overlayX: primaryX,\n        overlayY: primaryY,\n      },\n      {\n        originX: primaryX,\n        originY: primaryY,\n        overlayX: primaryX,\n        overlayY: secondaryY,\n      },\n      {\n        originX: secondaryX,\n        originY: secondaryY,\n        overlayX: secondaryX,\n        overlayY: primaryY,\n      },\n      {\n        originX: secondaryX,\n        originY: primaryY,\n        overlayX: secondaryX,\n        overlayY: secondaryY,\n      },\n    ]);\n  }\n\n  /** Gets an observable that will emit when the overlay is supposed to be closed. */\n  private _getCloseStream(\n    overlayRef: OverlayRef,\n  ): Observable<void | KeyboardEvent | MouseEvent> {\n    return merge(\n      overlayRef.backdropClick(),\n      overlayRef.detachments(),\n      overlayRef.keydownEvents().pipe(\n        filter((event) => {\n          // Closing on alt + up is only valid when there's an input associated with the timepicker.\n          return (\n            (event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n            (this.timepickerInput &&\n              hasModifierKey(event, 'altKey') &&\n              event.keyCode === UP_ARROW)\n          );\n        }),\n      ),\n    );\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nimport { MatTimepickerBase, MatTimepickerControl } from './timepicker-base';\nimport { MAT_SINGLE_TIME_SELECTION_MODEL_PROVIDER } from './time-selection-model';\n\n@Component({\n  selector: 'mat-timepicker',\n  standalone: true,\n  template: '',\n  exportAs: 'matTimepicker',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-timepicker',\n    '[class.mat-primary]': 'color !== \"accent\" && color !== \"warn\"',\n    '[class.mat-accent]': 'color === \"accent\"',\n    '[class.mat-warn]': 'color === \"warn\"',\n  },\n  providers: [\n    MAT_SINGLE_TIME_SELECTION_MODEL_PROVIDER,\n    { provide: MatTimepickerBase, useExisting: MatTimepicker },\n  ],\n})\nexport class MatTimepicker<T> extends MatTimepickerBase<MatTimepickerControl<T>, T | null, T> {}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n} from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { TimeAdapter } from './adapter';\nimport {\n  ExtractTimeTypeFromSelection,\n  MatTimeSelectionModel,\n  TimeSelectionModelChange,\n} from './time-selection-model';\n\n/**\n * An event used for timepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * clock popup. For consistency, we always use MatTimepickerInputEvent instead.\n */\nexport class MatTimepickerInputEvent<D, S = unknown> {\n  /** The new value for the target timepicker input. */\n  value: D | null;\n\n  constructor(\n    /** Reference to the timepicker input component that emitted the event. */\n    public target: MatTimepickerInputBase<S, D>,\n    /** Reference to the native input element associated with the timepicker input. */\n    public targetElement: HTMLElement,\n  ) {\n    this.value = this.target.value;\n  }\n}\n\nconst TIME_FORMATS = { hour: '2-digit', minute: '2-digit' };\n\n@Directive()\nexport abstract class MatTimepickerInputBase<\n    S,\n    T = ExtractTimeTypeFromSelection<S>,\n  >\n  implements OnChanges, OnDestroy, ControlValueAccessor, Validator\n{\n  /** The value of the input. */\n  @Input()\n  get value(): T | null {\n    return this._model\n      ? this._getValueFromModel(this._model.selection)\n      : this._pendingValue;\n  }\n  set value(value: any) {\n    this._assignValueProgrammatically(value);\n  }\n  protected _model: MatTimeSelectionModel<S, T> | undefined;\n\n  /** Whether the timepicker-input is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this._elementRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this.stateChanges.next(undefined);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n    // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n    // element has been inserted.\n    if (newValue && this._isInitialized && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n  private _disabled: boolean;\n\n  /** Emits when a change event is fired on this <input>. */\n  @Output() readonly timeChange: EventEmitter<MatTimepickerInputEvent<T, S>> =\n    new EventEmitter<MatTimepickerInputEvent<T, S>>();\n\n  /** Emits when an input event is fired on this <input>. */\n  @Output() readonly timeInput: EventEmitter<MatTimepickerInputEvent<T, S>> =\n    new EventEmitter<MatTimepickerInputEvent<T, S>>();\n\n  /** Gets the minimum time for the input. Used for validation. */\n  abstract _getMinTime(): T | null;\n\n  /** Gets the maximum time for the input. Used for validation. */\n  abstract _getMaxTime(): T | null;\n\n  /** Combined form control validator for this input. */\n  protected abstract _validator: ValidatorFn | null;\n\n  /** Whether the component has been initialized. */\n  private _isInitialized: boolean;\n\n  /**\n   * Since the value is kept on the model which is assigned in an Input,\n   * we might get a value before we have a model. This property keeps track\n   * of the value until we have somewhere to assign it.\n   */\n  private _pendingValue: T | null;\n\n  /** Emits when the internal state has changed */\n  readonly stateChanges = new Subject<void>();\n\n  _onTouched = () => {};\n  _validatorOnChange = () => {};\n\n  private _cvaOnChange: (value: any) => void = () => {};\n  private _valueChangesSubscription = Subscription.EMPTY;\n\n  constructor(\n    protected _elementRef: ElementRef<HTMLInputElement>,\n    @Optional() public _timeAdapter: TimeAdapter<T>,\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (timeInputsHaveChanged(changes, this._timeAdapter)) {\n      this.stateChanges.next(undefined);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._valueChangesSubscription.unsubscribe();\n    this.stateChanges.complete();\n  }\n\n  /** Registers a time selection model with the input. */\n  _registerModel(model: MatTimeSelectionModel<S, T>): void {\n    this._model = model;\n    this._valueChangesSubscription.unsubscribe();\n\n    if (this._pendingValue) {\n      this._assignValue(this._pendingValue);\n    }\n\n    this._valueChangesSubscription = this._model.selectionChanged.subscribe(\n      (event) => {\n        if (this._shouldHandleChangeEvent(event)) {\n          const value = this._getValueFromModel(event.selection);\n          this._lastValueValid = this._isValidValue(value);\n          this._cvaOnChange(value);\n          this._onTouched();\n          this._formatValue(value);\n          this.timeInput.emit(\n            new MatTimepickerInputEvent(this, this._elementRef.nativeElement),\n          );\n          this.timeChange.emit(\n            new MatTimepickerInputEvent(this, this._elementRef.nativeElement),\n          );\n        }\n      },\n    );\n  }\n\n  _onInput(value: string) {\n    const lastValueWasValid = this._lastValueValid;\n    let time = this._timeAdapter.parse(value, TIME_FORMATS);\n    this._lastValueValid = this._isValidValue(time);\n    time = this._timeAdapter.getValidTimeOrNull(time);\n    const hasChanged = !this._timeAdapter.sameTime(time, this.value);\n\n    // We need to fire the CVA change event for all\n    // nulls, otherwise the validators won't run.\n    if (!time || hasChanged) {\n      this._cvaOnChange(time);\n    } else {\n      // Call the CVA change handler for invalid values\n      // since this is what marks the control as dirty.\n      if (value && !this.value) {\n        this._cvaOnChange(time);\n      }\n\n      if (lastValueWasValid !== this._lastValueValid) {\n        this._validatorOnChange();\n      }\n    }\n\n    if (hasChanged) {\n      this._assignValue(time);\n      this.timeInput.emit(\n        new MatTimepickerInputEvent(this, this._elementRef.nativeElement),\n      );\n    }\n  }\n\n  /** Handles change event on the input. */\n  _onChange() {\n    this.timeChange.emit(\n      new MatTimepickerInputEvent(this, this._elementRef.nativeElement),\n    );\n  }\n\n  /** Handles blur event on the input. */\n  _onBlur() {\n    // Reformat the input only if we have a valid value.\n    if (this.value) {\n      this._formatValue(this.value);\n    }\n\n    this._onTouched();\n  }\n\n  /** Implemented as part of ControlValueAccessor.  */\n  writeValue(value: T | null): void {\n    this.value = value;\n  }\n\n  /** Implemented as part of ControlValueAccessor.  */\n  registerOnChange(fn: any): void {\n    this._cvaOnChange = fn;\n  }\n\n  /** Implemented as part of ControlValueAccessor.  */\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  /** Implemented as part of ControlValueAccessor.  */\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  /** Whether the last value set on the input was valid. */\n  protected _lastValueValid = false;\n\n  /** Assigns a value to the input's model. */\n  protected abstract _assignValueToModel(model: T | null): void;\n\n  /** Converts a value from the model into a native value for the input. */\n  protected abstract _getValueFromModel(modelValue: S): T | null;\n\n  /** Predicate that determines whether the input should handle a particular change event. */\n  protected abstract _shouldHandleChangeEvent(\n    event: TimeSelectionModelChange<S>,\n  ): boolean;\n\n  /** Programmatically assigns a value to the input. */\n  protected _assignValueProgrammatically(value: T | null) {\n    value = this._timeAdapter.deserialize(value);\n    this._lastValueValid = this._isValidValue(value);\n    value = this._timeAdapter.getValidTimeOrNull(value);\n    this._assignValue(value);\n    this._formatValue(value);\n  }\n\n  /** Formats a value and sets it on the input element. */\n  protected _formatValue(value: T | null) {\n    this._elementRef.nativeElement.value =\n      value != null ? this._timeAdapter.format(value, TIME_FORMATS) : '';\n  }\n\n  /** Gets the base validator functions. */\n  protected _getValidators(): ValidatorFn[] {\n    return [this._parseValidator, this._minValidator, this._maxValidator];\n  }\n\n  /** Whether a value is considered valid. */\n  private _isValidValue(value: T | null): boolean {\n    return !value || this._timeAdapter.isValid(value);\n  }\n\n  /** Assigns a value to the model. */\n  private _assignValue(value: T | null) {\n    // We may get some incoming values before the model was\n    // assigned. Save the value so that we can assign it later.\n    if (this._model) {\n      this._assignValueToModel(value);\n      this._pendingValue = null;\n    } else {\n      this._pendingValue = value;\n    }\n  }\n\n  /** The form control validator for whether the input parses. */\n  private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this._lastValueValid\n      ? null\n      : { matTimepickerParse: { text: this._elementRef.nativeElement.value } };\n  };\n\n  /** The form control validator for the min time. */\n  private _minValidator: ValidatorFn = (\n    control: AbstractControl,\n  ): ValidationErrors | null => {\n    const controlValue = this._timeAdapter.getValidTimeOrNull(\n      this._timeAdapter.deserialize(control.value),\n    );\n    const min = this._getMinTime();\n    return !min ||\n      !controlValue ||\n      this._timeAdapter.compareTime(min, controlValue) <= 0\n      ? null\n      : { matTimepickerMin: { min, actual: controlValue } };\n  };\n\n  /** The form control validator for the max time. */\n  private _maxValidator: ValidatorFn = (\n    control: AbstractControl,\n  ): ValidationErrors | null => {\n    const controlValue = this._timeAdapter.getValidTimeOrNull(\n      this._timeAdapter.deserialize(control.value),\n    );\n    const max = this._getMaxTime();\n    return !max ||\n      !controlValue ||\n      this._timeAdapter.compareTime(max, controlValue) >= 0\n      ? null\n      : { matTimepickerMax: { max, actual: controlValue } };\n  };\n}\n\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for time objects.\n */\nexport function timeInputsHaveChanged(\n  changes: SimpleChanges,\n  adapter: TimeAdapter<unknown>,\n): boolean {\n  const keys = Object.keys(changes);\n\n  for (const key of keys) {\n    const { previousValue, currentValue } = changes[key];\n\n    if (\n      adapter.isTimeInstance(previousValue) &&\n      adapter.isTimeInstance(currentValue)\n    ) {\n      if (!adapter.sameTime(previousValue, currentValue)) {\n        return true;\n      }\n    } else {\n      return true;\n    }\n  }\n\n  return false;\n}\n","import { Directive, ElementRef, forwardRef, Inject, Input, Optional } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidatorFn, Validators } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\n\nimport { MatTimepicker } from './timepicker';\nimport { TimeAdapter } from './adapter/time-adapter';\nimport { MatTimepickerInputBase } from './timepicker-input-base';\nimport { TimeSelectionModelChange } from './time-selection-model';\nimport { MatTimepickerControl, MatTimepickerPanel } from './timepicker-base';\n\nexport const MAT_TIMEPICKER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MatTimepickerInput),\n  multi: true,\n};\n\nexport const MAT_TIMEPICKER_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => MatTimepickerInput),\n  multi: true,\n};\n\n/** Directive used to connect an input to a MatTimepicker. */\n@Directive({\n  selector: 'input[matTimepicker]',\n  standalone: true,\n  exportAs: 'matTimepickerInput',\n  providers: [\n    MAT_TIMEPICKER_VALUE_ACCESSOR,\n    MAT_TIMEPICKER_VALIDATORS,\n    { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatTimepickerInput },\n  ],\n  host: {\n    class: 'mat-timepicker-input',\n    '[attr.aria-haspopup]': '_timepicker ? \"dialog\" : null',\n    '[attr.aria-owns]': '(_timepicker?.opened && _timepicker.id) || null',\n    '[attr.min]': 'min || null',\n    '[attr.max]': 'max || null',\n    '[disabled]': 'disabled',\n    '(input)': '_onInput($event.target.value)',\n    '(change)': '_onChange()',\n    '(blur)': '_onBlur()',\n  },\n})\nexport class MatTimepickerInput<T>\n  extends MatTimepickerInputBase<T | null, T>\n  implements MatTimepickerControl<T | null>\n{\n  /** The timepicker that this input is associated with. */\n  @Input()\n  set matTimepicker(timepicker: MatTimepickerPanel<MatTimepickerControl<T>, T | null, T>) {\n    if (timepicker) {\n      this._timepicker = timepicker;\n      this._registerModel(timepicker.registerInput(this));\n    }\n  }\n  _timepicker: MatTimepickerPanel<MatTimepickerControl<T>, T | null, T>;\n\n  /** The combined form control validator for this input. */\n  protected _validator: ValidatorFn | null;\n\n  /** The minimum valid date. */\n  @Input()\n  get min(): T | null {\n    return this._min;\n  }\n  set min(value: T | null) {\n    const validValue = this._timeAdapter.getValidTimeOrNull(this._timeAdapter.deserialize(value));\n\n    if (!this._timeAdapter.sameTime(validValue, this._min)) {\n      this._min = validValue;\n      this._validatorOnChange();\n    }\n  }\n  private _min: T | null;\n\n  /** The maximum valid date. */\n  @Input()\n  get max(): T | null {\n    return this._max;\n  }\n  set max(value: T | null) {\n    const validValue = this._timeAdapter.getValidTimeOrNull(this._timeAdapter.deserialize(value));\n\n    if (!this._timeAdapter.sameTime(validValue, this._max)) {\n      this._max = validValue;\n      this._validatorOnChange();\n    }\n  }\n  private _max: T | null;\n\n  constructor(\n    elementRef: ElementRef<HTMLInputElement>,\n    @Optional() timeAdapter: TimeAdapter<T>,\n    @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField,\n  ) {\n    super(elementRef, timeAdapter);\n    this._validator = Validators.compose(super._getValidators());\n  }\n\n  /**\n   * Gets the element that the timepicker popup should be connected to.\n   * @return The element to connect the popup to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n  }\n\n  /** Returns the palette used by the input's form field, if any. */\n  getThemePalette(): ThemePalette {\n    return this._formField ? this._formField.color : undefined;\n  }\n\n  /** Gets the ID of an element that should be used a description for the timepicker overlay. */\n  getOverlayLabelId(): string | null {\n    if (this._formField) {\n      return this._formField.getLabelId();\n    }\n\n    return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n  }\n\n  /** Gets the input's minimum time. */\n  _getMinTime() {\n    return this._min;\n  }\n\n  /** Gets the input's maximum time. */\n  _getMaxTime() {\n    return this._max;\n  }\n\n  protected _assignValueToModel(value: T | null): void {\n    if (this._model) {\n      this._model.updateSelection(value, this);\n    }\n  }\n\n  protected _getValueFromModel(modelValue: T | null): T | null {\n    return modelValue;\n  }\n\n  protected _shouldHandleChangeEvent(event: TimeSelectionModelChange<T>) {\n    return event.source !== this;\n  }\n}\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Directive,\n  OnDestroy,\n  OnInit,\n  signal,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { MatTimepickerBase, MatTimepickerControl } from './timepicker-base';\nimport { MatTimepickerIntl } from './timepicker-intl';\n\n/** Button that will close the timepicker and assign the current selection to the data model. */\n@Directive({\n  selector: '[matTimepickerApply]',\n  standalone: true,\n  host: {\n    '(click)': '_applySelection()',\n  },\n})\nexport class MatTimepickerApply {\n  constructor(\n    private _timepicker: MatTimepickerBase<MatTimepickerControl<any>, unknown>,\n  ) {}\n\n  _applySelection() {\n    this._timepicker._applyPendingSelection();\n    this._timepicker.close();\n  }\n}\n\n/** Button that will close the timepicker and discard the current selection. */\n@Directive({\n  selector: '[matTimepickerCancel]',\n  standalone: true,\n  host: {\n    '(click)': 'close()',\n  },\n})\nexport class MatTimepickerCancel {\n  constructor(\n    private _timepicker: MatTimepickerBase<MatTimepickerControl<any>, unknown>,\n  ) {}\n\n  close() {\n    this._timepicker.close();\n  }\n}\n\n/**\n * Container that can be used to project a row of action buttons\n * to the bottom of a timepicker.\n */\n@Component({\n  selector: 'mat-timepicker-actions',\n  standalone: true,\n  styleUrls: ['timepicker-actions.scss'],\n  template: `\n    <ng-template>\n      <div class=\"mat-timepicker-actions\">\n        <ng-content></ng-content>\n      </div>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-timepicker-actions-container',\n  },\n})\nexport class MatTimepickerActions implements AfterViewInit, OnDestroy {\n  @ViewChild(TemplateRef) _template: TemplateRef<unknown>;\n\n  private _portal: TemplatePortal;\n\n  constructor(\n    private _timepicker: MatTimepickerBase<MatTimepickerControl<any>, unknown>,\n    private _viewContainerRef: ViewContainerRef,\n  ) {}\n\n  ngAfterViewInit() {\n    this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n    this._timepicker.registerActions(this._portal);\n  }\n\n  ngOnDestroy() {\n    this._timepicker.removeActions(this._portal);\n\n    // Needs to be null checked since we initialize it in `ngAfterViewInit`.\n    if (this._portal && this._portal.isAttached) {\n      this._portal?.detach();\n    }\n  }\n}\n\n/**\n * Default action buttons to the bottom of a timepicker.\n */\n@Component({\n  selector: 'mat-timepicker-default-actions',\n  standalone: true,\n  imports: [MatButtonModule, MatTimepickerApply, MatTimepickerCancel],\n  styleUrls: ['timepicker-actions.scss'],\n  template: `\n    <div class=\"mat-timepicker-actions\">\n      <ng-content></ng-content>\n      <button [color]=\"color()\" mat-button matTimepickerCancel>\n        {{ _intl.cancelButton }}\n      </button>\n      <button [color]=\"color()\" mat-button matTimepickerApply>\n        {{ _intl.okButton }}\n      </button>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'mat-timepicker-actions-container',\n  },\n})\nexport class MatTimepickerDefaultActions implements OnInit {\n  color = signal<ThemePalette>(undefined);\n\n  constructor(\n    private _timepicker: MatTimepickerBase<MatTimepickerControl<any>, unknown>,\n    public _intl: MatTimepickerIntl,\n  ) {}\n\n  ngOnInit() {\n    this.color.set(this._timepicker.color);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MAT_FAB_DEFAULT_OPTIONS } from '@angular/material/button';\n\nimport { MAT_TIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER } from './timepicker-scroll-strategy';\nimport { MatTimepickerToggle, MatTimepickerToggleIcon } from './timepicker-toggle';\nimport { MatTimepicker } from './timepicker';\nimport { MatTimepickerContent } from './timepicker-content';\nimport { MatTimepickerContentLayout } from './timepicker-content-layout';\nimport { MatTimepickerInput } from './timepicker-input';\nimport { MatHourInput, MatMinuteInput, MatTimeInputs } from './time-inputs';\nimport { MatClockDials } from './clock-dials';\nimport { MatHoursClockDial } from './hours-clock-dial';\nimport { MatMinutesClockDial } from './minutes-clock-dial';\nimport { MatTimePeriod } from './time-period';\nimport {\n  MatTimepickerActions,\n  MatTimepickerApply,\n  MatTimepickerCancel,\n  MatTimepickerDefaultActions,\n} from './timepicker-actions';\nimport { MAT_DEFAULT_ACITONS } from './timepicker-actions-default';\nimport { MatTimepickerIntl } from './timepicker-intl';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    OverlayModule,\n    PortalModule,\n    A11yModule,\n    MatTimepicker,\n    MatTimepickerToggle,\n    MatTimepickerToggleIcon,\n    MatTimepickerContent,\n    MatTimepickerContentLayout,\n    MatTimepickerInput,\n    MatTimeInputs,\n    MatHourInput,\n    MatMinuteInput,\n    MatClockDials,\n    MatHoursClockDial,\n    MatMinutesClockDial,\n    MatTimePeriod,\n    MatTimepickerActions,\n    MatTimepickerDefaultActions,\n    MatTimepickerApply,\n    MatTimepickerCancel,\n  ],\n  exports: [\n    CdkScrollableModule,\n    MatTimepicker,\n    MatTimepickerToggle,\n    MatTimepickerToggleIcon,\n    MatTimepickerContent,\n    MatTimepickerContentLayout,\n    MatTimepickerInput,\n    MatTimeInputs,\n    MatHourInput,\n    MatMinuteInput,\n    MatClockDials,\n    MatHoursClockDial,\n    MatMinutesClockDial,\n    MatTimePeriod,\n    MatTimepickerActions,\n    MatTimepickerDefaultActions,\n    MatTimepickerApply,\n    MatTimepickerCancel,\n  ],\n  providers: [\n    MatTimepickerIntl,\n    MAT_TIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n    { provide: MAT_DEFAULT_ACITONS, useValue: MatTimepickerDefaultActions },\n    {\n      provide: MAT_FAB_DEFAULT_OPTIONS,\n      useValue: { color: 'unthemed' },\n    },\n  ],\n})\nexport class MatTimepickerModule {}\n","/*\n * Public API Surface of mat-timepicker\n */\n\nexport * from './lib/timepicker.module';\nexport * from './lib/timepicker';\nexport * from './lib/timepicker-base';\nexport * from './lib/timepicker-toggle';\nexport * from './lib/timepicker-content';\nexport * from './lib/timepicker-content-layout';\nexport * from './lib/timepicker-input';\nexport * from './lib/timepicker-input-base';\nexport * from './lib/hours-clock-dial';\nexport * from './lib/minutes-clock-dial';\nexport * from './lib/time-inputs';\nexport {\n  MAT_TIMEPICKER_INPUTS_KEYDOWN_HANDLER,\n  provideMatTimepickerInputsKeydownHandler,\n} from './lib/time-input-base';\nexport * from './lib/clock-dials';\nexport * from './lib/time-period';\nexport * from './lib/timepicker-actions';\nexport * from './lib/timepicker-actions-default';\nexport * from './lib/adapter';\nexport * from './lib/timepicker-scroll-strategy';\nexport * from './lib/timepicker-intl';\nexport * from './lib/orientation';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatTimepickerIntl","i1.TimeAdapter","i2.TimeAdapter","i2.MatTimeSelectionModel","i3","i4","i5","i1","i1.MatTimepickerBase","i2.MatTimepickerIntl"],"mappings":"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"}