{"version":3,"file":"mat-timepicker.mjs","sources":["../../../projects/mat-timepicker/src/lib/util.ts","../../../projects/mat-timepicker/src/lib/clock/clock.component.ts","../../../projects/mat-timepicker/src/lib/clock/clock.component.html","../../../projects/mat-timepicker/src/lib/timepicker-dialog/timepicker-dialog.component.ts","../../../projects/mat-timepicker/src/lib/timepicker-dialog/timepicker-dialog.component.html","../../../projects/mat-timepicker/src/lib/timepicker.directive.ts","../../../projects/mat-timepicker/src/lib/timepicker-toggle.directive.ts","../../../projects/mat-timepicker/src/lib/mat-timepicker.module.ts","../../../projects/mat-timepicker/src/public-api.ts","../../../projects/mat-timepicker/src/mat-timepicker.ts"],"sourcesContent":["import { ITimeData, ClockViewType, ClockMode, IAllowed12HourMap, IAllowed24HourMap } from './interfaces-and-types';\n\nexport function twoDigits(n: number) {\n  return n < 10 ? `0${n}` : `${n}`;\n}\n\nexport function addDays(date: Date, days: number) {\n  const result = new Date(date);\n  result.setDate(result.getDate() + days);\n  return result;\n}\n\nexport function convertHoursForMode(hour: number, mode: ClockMode) {\n  const isPm = hour >= 12;\n  if (mode === '24h') {\n    return { hour, isPm };\n  } else if (hour === 0 || hour === 12) {\n    return { hour: 12, isPm };\n  } else if (hour < 12) {\n    return { hour, isPm };\n  }\n  return { hour: hour - 12, isPm };\n}\n\nfunction mod(a: number, b: number) {\n  return a - Math.floor(a / b) * b;\n}\n\nexport function getShortestAngle(from: number, to: number) {\n  const difference = to - from;\n  return from + mod(difference + 180, 360) - 180;\n}\n\nexport function isDateInRange(minDate: Date, maxDate: Date, current: Date) {\n  const unixCurrentDate = +current;\n  return (!minDate || +minDate <= unixCurrentDate) && (!maxDate || unixCurrentDate <= +maxDate);\n}\n\nexport function isTimeInRange(minDate: Date, maxDate: Date, current: Date) {\n  if (minDate instanceof Date) {\n    const newMinDate = new Date();\n    newMinDate.setHours(minDate.getHours());\n    newMinDate.setMinutes(minDate.getMinutes());\n    newMinDate.setSeconds(0);\n    newMinDate.setMilliseconds(0);\n    minDate = newMinDate;\n  }\n  if (maxDate instanceof Date) {\n    const newMaxDate = new Date();\n    newMaxDate.setHours(maxDate.getHours());\n    newMaxDate.setMinutes(maxDate.getMinutes());\n    newMaxDate.setSeconds(0);\n    newMaxDate.setMilliseconds(0);\n    maxDate = newMaxDate;\n  }\n  if (current instanceof Date) {\n    const newCurrent = new Date();\n    newCurrent.setHours(current.getHours());\n    newCurrent.setMinutes(current.getMinutes());\n    newCurrent.setSeconds(0);\n    newCurrent.setMilliseconds(0);\n    current = newCurrent;\n  }\n  const unixCurrentDate = +current;\n  return (!minDate || +minDate <= unixCurrentDate) && (!maxDate || unixCurrentDate <= +maxDate);\n}\n\n// used when generating the allowed maps\n\nexport function isAllowed(\n  hour: number,\n  minutes: number,\n  minDate: Date,\n  maxDate: Date,\n  clockMode: ClockMode,\n  selectedMeridiem?: 'AM' | 'PM'\n) {\n  if (hour > 24 || hour < 0 || minutes > 60 || minutes < 0) { return false; }\n\n  if (!minDate && !maxDate) { return true; }\n\n  if (clockMode === '12h') {\n    if (hour === 12 && selectedMeridiem === 'AM') { hour = 0; }\n    if (hour > 12) { hour -= 12; }\n  }\n  const checkDate = new Date();\n\n  checkDate.setHours(hour);\n  checkDate.setMinutes(minutes);\n  checkDate.setSeconds(0);\n  checkDate.setMilliseconds(0);\n\n  return isDateInRange(minDate, maxDate, checkDate);\n}\n\n// used by the clock component to visually disable the not allowed values\n\nexport function getIsAvailableFn(allowed12HourMap: IAllowed12HourMap, allowed24HourMap: IAllowed24HourMap, mode: ClockMode) {\n  return (value: number, viewType: ClockViewType, isPm: boolean, h?: number) => {\n    const isHourCheck = viewType === 'hours';\n    const [hour, minutes] = isHourCheck ? [value, null] : [h, value];\n\n    if (mode === '12h') {\n      if (!allowed12HourMap) { return true; }\n      const meridiem = isPm ? 'pm' : 'am';\n      if (isHourCheck) {\n        return !!Object.values(allowed12HourMap[meridiem][hour!]).find(v => v === true);\n      }\n      return allowed12HourMap[meridiem][hour!][minutes!];\n    }\n\n    if (!allowed24HourMap) { return true; }\n\n    if (isHourCheck) {\n      return !!Object.values(allowed24HourMap[hour!]).find(v => v === true);\n    }\n    return allowed24HourMap[hour!][minutes!];\n  };\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n  ClockViewType,\n  ClockNumber,\n  ClockMode,\n  IAllowed12HourMap,\n  IAllowed24HourMap,\n} from '../interfaces-and-types';\nimport { getIsAvailableFn } from '../util';\n\n@Component({\n  selector: 'mat-clock',\n  templateUrl: './clock.component.html',\n  styleUrls: ['./clock.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, MatToolbarModule, MatButtonModule],\n})\nexport class ClockComponent implements OnChanges {\n  @Input() mode!: ClockMode;\n  @Input() viewType!: ClockViewType;\n  @Input() color = 'primary';\n  @Input() formattedValue!: number;\n  @Input() minDate!: Date;\n  @Input() maxDate!: Date;\n  @Input() isPm!: boolean;\n  @Input() formattedHours!: number;\n  @Input() minutes!: number;\n  @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n  @Output() unavailableSelection: EventEmitter<any> = new EventEmitter<any>();\n  @Output() invalidMeridiem: EventEmitter<any> = new EventEmitter<any>();\n  @Output() invalidSelection: EventEmitter<any> = new EventEmitter<any>();\n  @Output() clearInvalidMeridiem: EventEmitter<any> = new EventEmitter<any>();\n  @Output() selectionChangeDone: EventEmitter<any> = new EventEmitter<any>();\n\n  @Input() allowed12HourMap: IAllowed12HourMap | null = null;\n  @Input() allowed24HourMap: IAllowed24HourMap | null = null;\n\n  isFormattedValueAllowed = true;\n\n  isAvailableFn!: ReturnType<typeof getIsAvailableFn>;\n\n  meridiem: string | null = null;\n  touching = false;\n  angle!: number;\n  numbers: ClockNumber[] = [];\n  secondaryNumbers: ClockNumber[] = [];\n  minuteDots: ClockNumber[] = [];\n  invalidMeridiemEmitted = true;\n\n  initIsAllowedFn() {\n    if (!this.allowed12HourMap && !this.allowed24HourMap) {\n      return;\n    }\n    this.isAvailableFn = getIsAvailableFn(\n      this.allowed12HourMap!,\n      this.allowed24HourMap!,\n      this.mode\n    );\n  }\n\n  isAvailable(value: number) {\n    return this.isAvailableFn\n      ? this.isAvailableFn(value, this.viewType, this.isPm, this.formattedHours)\n      : true;\n  }\n\n  ngOnChanges(simpleChanges: SimpleChanges) {\n    if (\n      simpleChanges['allowed12HourMap'] ||\n      simpleChanges['allowed24HourMap'] ||\n      (simpleChanges['mode'] && !simpleChanges['mode'].firstChange)\n    ) {\n      this.initIsAllowedFn();\n    }\n\n    this.calculateAngle();\n    this.setNumbers();\n    this.meridiem = this.isPm ? 'PM' : 'AM';\n\n    if (\n      simpleChanges['formattedValue'] &&\n      (this.allowed12HourMap || this.allowed24HourMap)\n    ) {\n      this.isFormattedValueAllowed = this.isAvailable(this.formattedValue);\n    }\n\n    const isSelectedTimeAvailable = this.isAvailableFn\n      ? // when calling isAvailableFn here we should always set the viewType to minutes because we want to check the hours and the minutes\n        this.isAvailableFn(\n          this.minutes,\n          'minutes',\n          this.isPm,\n          this.formattedHours\n        )\n      : true;\n\n    if (isSelectedTimeAvailable && this.invalidMeridiemEmitted) {\n      this.clearInvalidMeridiem.emit();\n      this.invalidMeridiemEmitted = false;\n    }\n\n    this.invalidSelection.emit(!isSelectedTimeAvailable);\n  }\n\n  calculateAngle() {\n    this.angle = this.getPointerAngle(this.formattedValue);\n  }\n\n  setNumbers() {\n    if (this.viewType === 'hours') {\n      if (this.mode === '12h') {\n        const meridiem = this.isPm ? 'pm' : 'am';\n        const isAllowedFn = this.allowed12HourMap\n          ? (num: number) => this.allowed12HourMap![meridiem][num + 1][0]\n          : undefined;\n        this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n        this.secondaryNumbers = [];\n        this.minuteDots = [];\n      } else if (this.mode === '24h') {\n        const isAllowedFn = this.allowed24HourMap\n          ? (num: number) => this.allowed24HourMap![num][0]\n          : undefined;\n        this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n        this.secondaryNumbers = this.getNumbers(\n          12,\n          { size: 256 - 64, start: 13 },\n          isAllowedFn\n        );\n        this.minuteDots = [];\n      }\n    } else {\n      const meridiem = this.isPm ? 'pm' : 'am';\n      const isAllowedFn = !!this.allowed12HourMap\n        ? (num: number) =>\n            this.allowed12HourMap![meridiem][this.formattedHours][num]\n        : !!this.allowed24HourMap\n        ? (num: number) => this.allowed24HourMap![this.formattedHours][num]\n        : undefined;\n\n      this.numbers = this.getNumbers(\n        12,\n        { size: 256, start: 5, step: 5 },\n        isAllowedFn\n      );\n      this.minuteDots = this.getNumbers(60, {\n        size: 256,\n        start: 0,\n        shift: 15,\n      }).map((digit) => {\n        digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n        return digit;\n      });\n\n      this.secondaryNumbers = [];\n    }\n  }\n\n  disableAnimatedPointer() {\n    this.touching = true;\n  }\n\n  enableAnimatedPointer() {\n    this.touching = false;\n  }\n\n  handleTouchMove = (e: any) => {\n    e.preventDefault(); // prevent scrolling behind the clock on iOS\n    const rect = e.target.getBoundingClientRect();\n    this.movePointer(\n      e.changedTouches[0].clientX - rect.left,\n      e.changedTouches[0].clientY - rect.top\n    );\n  };\n\n  handleTouchEnd(e: any) {\n    this.handleTouchMove(e);\n    this.enableAnimatedPointer();\n  }\n\n  handleMouseMove(e: any) {\n    if ((e.buttons === 1 || e.which === 1) && this.touching) {\n      const rect = e.target.getBoundingClientRect();\n      this.movePointer(e.clientX - rect.left, e.clientY - rect.top);\n    }\n  }\n\n  handleClick(e: any) {\n    const rect = e.target.getBoundingClientRect();\n    this.movePointer(e.clientX - rect.left, e.clientY - rect.top);\n  }\n\n  movePointer(x: number, y: number) {\n    const value = this.getPointerValue(x, y, 256);\n    this.selectTime(value);\n  }\n\n  selectTime(value: number, autoSwitch = false) {\n    if (!this.isAvailable(value)) {\n      this.unavailableSelection.emit();\n      return;\n    }\n    if (value !== this.formattedValue) {\n      this.changeEvent.emit({ value, type: this.viewType });\n      if (this.viewType !== 'minutes') {\n        if (!this.isAvailable(value)) {\n          if (this.minDate && this.isAvailable(value)) {\n            this.changeEvent.emit({\n              value: this.minDate.getMinutes(),\n              type: 'minutes',\n            });\n          } else if (this.maxDate && this.isAvailable(value)) {\n            this.changeEvent.emit({\n              value: this.maxDate.getMinutes(),\n              type: 'minutes',\n            });\n          }\n        }\n      }\n    }\n    if (autoSwitch) {\n      this.selectionChangeDone.emit();\n    }\n  }\n\n  getNumbers(\n    count: number,\n    { size = 1, start = 1, step = 1, shift = 2 },\n    isAllowedFn?: (num: number) => boolean\n  ) {\n    return Array.apply(null, Array(count)).map((_, i) => ({\n      display: i * step + start,\n      translateX:\n        (size / 2 - 20) * Math.cos((2 * Math.PI * (i - shift)) / count),\n      translateY:\n        (size / 2 - 20) * Math.sin((2 * Math.PI * (i - shift)) / count),\n      allowed: isAllowedFn ? isAllowedFn(i) : true,\n    }));\n  }\n\n  getPointerAngle(value: number) {\n    if (this.viewType === 'hours') {\n      return this.mode === '12h'\n        ? (360 / 12) * (value - 3)\n        : (360 / 12) * ((value % 12) - 3);\n    }\n    return (360 / 60) * (value - 15);\n  }\n\n  getPointerValue(x: number, y: number, size: number) {\n    let value;\n    let angle = (Math.atan2(size / 2 - x, size / 2 - y) / Math.PI) * 180;\n    if (angle < 0) {\n      angle = 360 + angle;\n    }\n\n    if (this.viewType === 'hours') {\n      if (this.mode === '12h') {\n        value = 12 - Math.round((angle * 12) / 360);\n        return value === 0 ? 12 : value;\n      }\n\n      const radius = Math.sqrt(\n        Math.pow(size / 2 - x, 2) + Math.pow(size / 2 - y, 2)\n      );\n      value = 12 - Math.round((angle * 12) / 360);\n      if (value === 0) {\n        value = 12;\n      }\n      if (radius < size / 2 - 32) {\n        value = value === 12 ? 0 : value + 12;\n      }\n      return value;\n    }\n\n    value = Math.round(60 - (60 * angle) / 360);\n    return value === 60 ? 0 : value;\n  }\n}\n","<div class=\"root\">\n  <div\n    class=\"circle\"\n    (touchmove)=\"handleTouchMove($event)\"\n    (mousemove)=\"handleMouseMove($event)\"\n    (touchstart)=\"disableAnimatedPointer()\"\n    (mousedown)=\"disableAnimatedPointer()\"\n    (touchend)=\"handleTouchEnd($event)\"\n    (mouseup)=\"enableAnimatedPointer()\"\n    (click)=\"handleClick($event)\"\n  >\n    <div\n      class=\"pointer-container\"\n      [ngClass]=\"{\n        'small-pointer':\n          mode === '24h' &&\n          viewType === 'hours' &&\n          (formattedValue === 0 || formattedValue > 12),\n        'animated-pointer': !touching\n      }\"\n      [style.transform]=\"'rotate(' + angle + 'deg)'\"\n    >\n      <button mat-mini-fab [color]=\"color\" class=\"inner-dot\"></button>\n      <mat-toolbar [color]=\"color\" class=\"pointer\">\n        <button\n          mat-mini-fab\n          [color]=\"color\"\n          class=\"outer-dot\"\n          [ngClass]=\"{\n            'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0\n          }\"\n        >\n          <ng-container\n            *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n            >·</ng-container\n          >\n        </button>\n      </mat-toolbar>\n    </div>\n    <ng-container *ngFor=\"let digit of minuteDots\">\n      <button\n        class=\"number minute-dot\"\n        [ngClass]=\"{\n          selected:\n            formattedValue === digit.display ||\n            (digit.display === 0 && formattedValue === 0),\n          disabled: !isAvailable(digit.display === 60 ? 0 : digit.display)\n        }\"\n        [style.transform]=\"\n          'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n        \"\n        (keydown.enter)=\"\n          selectTime(digit.display, true); $event.preventDefault()\n        \"\n        (keydown.space)=\"\n          selectTime(digit.display, true); $event.preventDefault()\n        \"\n        [disabled]=\"!isAvailable(digit.display === 60 ? 0 : digit.display)\"\n      >\n        <ng-container *ngIf=\"digit.display % 5 !== 0\">·</ng-container>\n      </button>\n    </ng-container>\n    <ng-container *ngFor=\"let digit of numbers\">\n      <button\n        class=\"number\"\n        [ngClass]=\"{\n          selected:\n            formattedValue === digit.display ||\n            (digit.display === 60 && formattedValue === 0),\n          disabled: !isAvailable(digit.display === 60 ? 0 : digit.display)\n        }\"\n        [style.transform]=\"\n          'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n        \"\n        (keydown.enter)=\"\n          selectTime(digit.display, true); $event.preventDefault()\n        \"\n        (keydown.space)=\"\n          selectTime(digit.display, true); $event.preventDefault()\n        \"\n        [disabled]=\"!isAvailable(digit.display === 60 ? 0 : digit.display)\"\n      >\n        <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n        <ng-template #minutesTemplate>{{\n          digit.display === 60 ? \"00\" : digit.display\n        }}</ng-template>\n        <ng-container\n          *ngIf=\"\n            viewType === 'minutes';\n            then minutesTemplate;\n            else hoursTemplate\n          \"\n        ></ng-container>\n      </button>\n    </ng-container>\n    <ng-container *ngFor=\"let digit of secondaryNumbers\">\n      <button\n        class=\"number small-number\"\n        [ngClass]=\"{\n          selected:\n            formattedValue === digit.display ||\n            (digit.display === 24 && formattedValue === 0),\n          disabled: !isAvailable(digit.display === 24 ? 0 : digit.display)\n        }\"\n        [style.transform]=\"\n          'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n        \"\n        (keydown.enter)=\"\n          selectTime(digit.display, true); $event.preventDefault()\n        \"\n        (keydown.space)=\"\n          selectTime(digit.display, true); $event.preventDefault()\n        \"\n        [disabled]=\"!isAvailable(digit.display === 24 ? 0 : digit.display)\"\n      >\n        {{ digit.display === 24 ? \"00\" : digit.display }}\n      </button>\n    </ng-container>\n  </div>\n</div>\n","import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport {\n  Component,\n  EventEmitter,\n  Output,\n  Inject,\n  DoCheck,\n  TemplateRef,\n} from '@angular/core';\nimport {\n  ClockViewType,\n  ClockMode,\n  IAllowed24HourMap,\n  IAllowed12HourMap,\n} from '../interfaces-and-types';\nimport { twoDigits, convertHoursForMode } from '../util';\nimport { MatTimepickerButtonTemplateContext } from '../timepicker.directive';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { ClockComponent } from '../clock/clock.component';\n\n@Component({\n  selector: 'mat-timepicker-dialog',\n  templateUrl: './timepicker-dialog.component.html',\n  styleUrls: ['./timepicker-dialog.component.scss'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    MatButtonModule,\n    MatToolbarModule,\n    ClockComponent,\n    MatDialogModule,\n  ],\n})\nexport class MatTimepickerComponentDialogComponent implements DoCheck {\n  twoDigits = twoDigits;\n\n  @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n  @Output() okClickEvent: EventEmitter<any> = new EventEmitter<Date>();\n  @Output() cancelClickEvent: EventEmitter<any> = new EventEmitter<any>();\n\n  allowed24HourMap: IAllowed24HourMap | null = null;\n  allowed12HourMap: IAllowed12HourMap | null = null;\n\n  invalidSelection = false;\n\n  okLabel!: string;\n  cancelLabel!: string;\n\n  okButtonTemplate!: TemplateRef<MatTimepickerButtonTemplateContext>;\n  cancelButtonTemplate!: TemplateRef<MatTimepickerButtonTemplateContext>;\n\n  anteMeridiemAbbreviation!: string;\n  postMeridiemAbbreviation!: string;\n\n  set value(value: any) {\n    value = value || this.minDate || this.maxDate || new Date();\n    this.hours = value.getHours();\n    this.minutes = value.getMinutes();\n    this._value = value;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  mode!: ClockMode;\n  viewType: ClockViewType = 'hours';\n\n  minutes: any;\n  color!: string;\n  isPm = false;\n  skipMinuteAutoSwitch = false;\n  autoSwitchID: number | null = null;\n  invalidMedianID: number | null = null;\n  hasInvalidMeridiem = false;\n  editHoursClicked = false;\n  isClosing = false;\n\n  minDate!: Date;\n  maxDate!: Date;\n\n  _formattedHour: any;\n  _hours: any;\n  _value!: Date;\n\n  set hours(value: any) {\n    this._hours = value;\n    this._formattedHour = convertHoursForMode(this.hours, this.mode).hour;\n  }\n  get hours() {\n    return this._hours;\n  }\n\n  get formattedHours() {\n    return this._formattedHour;\n  }\n\n  bindData(data: any) {\n    this.mode = data.mode;\n    this.okLabel = data.okLabel;\n    this.cancelLabel = data.cancelLabel;\n    this.okButtonTemplate = data.okButtonTemplate;\n    this.cancelButtonTemplate = data.cancelButtonTemplate;\n    this.anteMeridiemAbbreviation = data.anteMeridiemAbbreviation;\n    this.postMeridiemAbbreviation = data.postMeridiemAbbreviation;\n    this.color = data.color;\n    this.minDate = data.minDate;\n    this.maxDate = data.maxDate;\n    this.allowed12HourMap = data.allowed12HourMap;\n    this.allowed24HourMap = data.allowed24HourMap;\n  }\n\n  constructor(@Inject(MAT_DIALOG_DATA) public data: any) {\n    this.isPm = data.isPm;\n    this.bindData(data);\n    this.value = data.value;\n  }\n\n  ngDoCheck() {\n    this.bindData(this.data);\n  }\n\n  handleClockChange({\n    value,\n    type,\n  }: {\n    value: number;\n    type: 'minutes' | 'hours';\n  }) {\n    const is24hoursAutoMeridiemChange =\n      this.mode === '24h' &&\n      type === 'hours' &&\n      ((this.hours >= 12 && value < 12) || (this.hours < 12 && value >= 12));\n    if (\n      (this.hasInvalidMeridiem && this.mode === '12h') ||\n      is24hoursAutoMeridiemChange\n    ) {\n      this.isPm = !this.isPm;\n      this.hasInvalidMeridiem = false;\n    }\n\n    if ((type && type === 'hours') || (!type && this.viewType === 'hours')) {\n      this.hours = value;\n    } else if (\n      (type && type === 'minutes') ||\n      (!type && this.viewType === 'minutes')\n    ) {\n      this.minutes = value;\n    }\n\n    const newValue = new Date();\n    const hours = this.isPm\n      ? this.hours < 12\n        ? this.hours + 12\n        : this.hours\n      : this.hours === 12\n      ? 0\n      : this.hours;\n    newValue.setHours(hours);\n    newValue.setMinutes(this.minutes);\n    newValue.setSeconds(0);\n    newValue.setMilliseconds(0);\n    this.value = newValue;\n    this.changeEvent.emit(newValue);\n  }\n\n  clearInvalidMeridiem() {\n    this.hasInvalidMeridiem = false;\n  }\n\n  handleUnavailableSelection() {\n    clearTimeout(this.autoSwitchID!);\n  }\n\n  handleClockChangeDone(e: Event | null) {\n    if (e) {\n      e.preventDefault();\n    }\n\n    if (this.viewType === 'hours' && !this.skipMinuteAutoSwitch) {\n      this.autoSwitchID = setTimeout(() => {\n        this.editMinutes();\n        this.autoSwitchID = null;\n      }, 300) as unknown as number;\n    }\n  }\n\n  editHours() {\n    this.viewType = 'hours';\n    this.editHoursClicked = true;\n    setTimeout(() => {\n      this.editHoursClicked = false;\n    }, 0);\n  }\n\n  editMinutes() {\n    if (this.hasInvalidMeridiem) {\n      this.isPm = !this.isPm;\n      this.hasInvalidMeridiem = false;\n    }\n    this.viewType = 'minutes';\n  }\n\n  invalidSelectionHandler(value: any) {\n    this.invalidSelection = value;\n  }\n\n  invalidMeridiem() {\n    if (this.viewType !== 'minutes' && this.editHoursClicked) {\n      if (this.invalidMedianID) {\n        return;\n      }\n      this.invalidMedianID = setTimeout(() => {\n        this.isPm = !this.isPm;\n        this.hasInvalidMeridiem = false;\n      }, 0) as unknown as number;\n      return;\n    }\n    this.hasInvalidMeridiem = true;\n  }\n\n  meridiemChange(hours: any) {\n    const changeData = {\n      type: this.viewType,\n      value: this.viewType === 'hours' ? hours : this.value.getMinutes(),\n    };\n    this.handleClockChange(changeData);\n  }\n\n  setAm() {\n    if (this.hours >= 12) {\n      this.hours = this.hours - 12;\n    }\n    this.isPm = false;\n\n    this.meridiemChange(this.hours);\n  }\n\n  setPm() {\n    if (this.hours < 12) {\n      this.hours = this.hours + 12;\n    }\n    this.isPm = true;\n    this.meridiemChange(this.hours);\n  }\n\n  okClickHandler = () => {\n    if (this.hasInvalidMeridiem) {\n      this.isPm = !this.isPm;\n      this.hasInvalidMeridiem = false;\n    }\n    this.okClickEvent.emit(this.value);\n  };\n\n  cancelClickHandler = () => {\n    this.cancelClickEvent.emit();\n  };\n}\n","<ng-template #defaultCancelButtonTemplate>\n  <button mat-button [color]=\"color\" (click)=\"cancelClickHandler()\">\n    {{ cancelLabel }}\n  </button>\n</ng-template>\n<ng-template #defaultOkButtonTemplate>\n  <button\n    mat-button\n    [disabled]=\"invalidSelection\"\n    [color]=\"color\"\n    (click)=\"okClickHandler()\"\n  >\n    {{ okLabel }}\n  </button>\n</ng-template>\n\n<mat-dialog-content>\n  <div class=\"root\">\n    <mat-toolbar [color]=\"color\" class=\"header\">\n      <div class=\"placeholder\"></div>\n      <div class=\"time-frame\">\n        <span\n          class=\"time fixed-font-size\"\n          [ngClass]=\"{ select: this.viewType === 'hours' && 'active' }\"\n          (click)=\"editHours()\"\n        >\n          {{ twoDigits(formattedHours) }}\n        </span>\n        <span class=\"fixed-font-size\">:</span>\n        <span\n          class=\"time fixed-font-size\"\n          [ngClass]=\"{ select: this.viewType === 'minutes' && 'active' }\"\n          (click)=\"editMinutes()\"\n        >\n          {{ twoDigits(minutes) }}\n        </span>\n      </div>\n      <ng-container\n        *ngIf=\"mode === '12h'; then ampm; else normal\"\n      ></ng-container>\n      <ng-template #normal>\n        <div class=\"placeholder\"></div>\n      </ng-template>\n      <ng-template #ampm>\n        <div class=\"ampm\">\n          <button class=\"time\" [ngClass]=\"{ select: isPm }\" (click)=\"setPm()\">\n            {{ postMeridiemAbbreviation | uppercase }}\n          </button>\n          <button class=\"time\" [ngClass]=\"{ select: !isPm }\" (click)=\"setAm()\">\n            {{ anteMeridiemAbbreviation | uppercase }}\n          </button>\n        </div>\n      </ng-template>\n    </mat-toolbar>\n    <div class=\"body\">\n      <mat-clock\n        [allowed12HourMap]=\"allowed12HourMap\"\n        [allowed24HourMap]=\"allowed24HourMap\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        [color]=\"color\"\n        [viewType]=\"viewType\"\n        [mode]=\"mode\"\n        [formattedHours]=\"formattedHours\"\n        [minutes]=\"minutes\"\n        (changeEvent)=\"handleClockChange($event)\"\n        (unavailableSelection)=\"handleUnavailableSelection()\"\n        (selectionChangeDone)=\"handleClockChangeDone(null)\"\n        [formattedValue]=\"viewType === 'minutes' ? minutes : formattedHours\"\n        [isPm]=\"isPm\"\n        (invalidMeridiem)=\"invalidMeridiem()\"\n        (mouseup)=\"handleClockChangeDone($event)\"\n        (clearInvalidMeridiem)=\"clearInvalidMeridiem()\"\n        (touchend)=\"handleClockChangeDone($event)\"\n        (invalidSelection)=\"invalidSelectionHandler($event)\"\n      ></mat-clock>\n    </div>\n  </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n  <ng-container\n    *ngTemplateOutlet=\"\n      cancelButtonTemplate || defaultCancelButtonTemplate;\n      context: { label: cancelLabel, $implicit: cancelClickHandler }\n    \"\n  >\n  </ng-container>\n  <ng-container\n    *ngTemplateOutlet=\"\n      okButtonTemplate || defaultOkButtonTemplate;\n      context: { label: okLabel, $implicit: okClickHandler }\n    \"\n  >\n  </ng-container>\n</mat-dialog-actions>\n","import {\n  ControlValueAccessor,\n  NgForm,\n  NgControl,\n  FormGroupDirective,\n  FormControl,\n  FormControlName,\n  Validators,\n  AbstractControl,\n} from '@angular/forms';\nimport {\n  Directive,\n  OnInit,\n  EventEmitter,\n  Input,\n  ElementRef,\n  OnChanges,\n  Renderer2,\n  AfterViewInit,\n  OnDestroy,\n  Optional,\n  SimpleChanges,\n  NgZone,\n  HostBinding,\n  Self,\n  Output,\n  HostListener,\n  TemplateRef,\n  Inject,\n} from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport {\n  MatFormFieldControl,\n  MatFormField,\n  MAT_FORM_FIELD,\n} from '@angular/material/form-field';\nimport {\n  ClockMode,\n  IAllowed24HourMap,\n  IAllowed12HourMap,\n} from './interfaces-and-types';\nimport {\n  twoDigits,\n  convertHoursForMode,\n  isAllowed,\n  isDateInRange,\n  isTimeInRange,\n} from './util';\nimport { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil, first } from 'rxjs/operators';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Platform } from '@angular/cdk/platform';\n\nexport interface MatTimepickerButtonTemplateContext {\n  $implicit: () => void;\n  label: string;\n}\n\n@Directive({\n  selector: 'input[matTimepicker]',\n  providers: [\n    { provide: MatFormFieldControl, useExisting: MatTimepickerDirective },\n  ],\n  host: {\n    class: 'mat-mdc-input-element',\n    '[class.mat-input-server]': '_isServer',\n    '[class.mat-mdc-form-field-textarea-control]':\n      '_isInFormField && _isTextarea',\n    '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n    '[class.mdc-text-field__input]': '_isInFormField',\n    '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n    '[id]': 'id',\n    '[disabled]': 'disabled',\n    '[required]': 'required',\n    '[attr.name]': 'name || null',\n    '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n    '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n    '[attr.aria-required]': 'required',\n    '(focus)': '_focusChanged(true)',\n    '(blur)': '_focusChanged(false)',\n    '(input)': '_onInput()',\n  },\n  exportAs: 'matTimepicker',\n  standalone: true,\n})\n\n/**\n * Directive that adds time picker functionality to an input element.\n * Implements both ControlValueAccessor for form integration and MatFormFieldControl\n * for Material form field integration.\n */\nexport class MatTimepickerDirective\n  implements\n    OnInit,\n    OnChanges,\n    AfterViewInit,\n    OnDestroy,\n    ControlValueAccessor,\n    MatFormFieldControl<any>\n{\n  /** Unique ID generator for instances. */\n  static nextId = 0;\n\n  /** Whether the component is being rendered on the server. */\n  readonly _isServer: boolean;\n\n  /** Whether the component is a native html select. */\n  readonly _isNativeSelect: boolean;\n\n  /** Whether the component is a textarea. */\n  readonly _isTextarea: boolean;\n\n  /** Whether the input is inside of a form field. */\n  readonly _isInFormField: boolean;\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  focused: boolean = false;\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  stateChanges: Subject<void> = new Subject<void>();\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  autofilled = false;\n\n  /** Callback for the cases where the focused state of the input changes. */\n  _focusChanged(isFocused: boolean) {\n    if (isFocused !== this.focused) {\n      this.focused = isFocused;\n      this.stateChanges.next();\n    }\n  }\n  _onInput() {\n    // Noop function to trigger Angular change detection for non-form scenarios\n  }\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: Boolean) {\n    this._disabled = coerceBooleanProperty(value);\n\n    if (this.focused) {\n      this.focused = false;\n      this.stateChanges.next();\n    }\n  }\n  protected _disabled = false;\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get id(): string {\n    return this._id;\n  }\n  set id(value: string) {\n    this._id = value || this._uid;\n  }\n  protected _id!: string;\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  @Input() placeholder!: string;\n\n  /**\n   * Name of the input.\n   * @docs-private\n   */\n  @Input() name!: string;\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get required(): boolean {\n    return (\n      this._required ??\n      this.ngControl?.control?.hasValidator(Validators.required) ??\n      false\n    );\n  }\n  set required(value: Boolean) {\n    this._required = coerceBooleanProperty(value);\n  }\n  protected _required: boolean | undefined;\n  @Input('aria-describedby') userAriaDescribedBy: string = '';\n\n  /** @internal */\n  _errorState = false;\n  get errorState() {\n    const oldState = this._errorState;\n    const parent = this._parentFormGroup || this._parentForm;\n    const control = this.ngControl\n      ? (this.ngControl.control as FormControl)\n      : null;\n    const newState = this.errorStateMatcher\n      ? this.errorStateMatcher.isErrorState(control, parent)\n      : oldState;\n\n    if (newState !== oldState) {\n      this._errorState = newState;\n      this.stateChanges.next();\n    }\n\n    return newState;\n  }\n\n  @Input() get readonly(): boolean {\n    return this._readonly;\n  }\n  set readonly(value: boolean) {\n    this._readonly = coerceBooleanProperty(value);\n  }\n  private _readonly = false;\n\n  private isAlive: Subject<any> = new Subject<any>();\n\n  /** Unique ID for this instance. */\n  protected _uid = `mat-time-picker-${MatTimepickerDirective.nextId++}`;\n\n  @HostBinding('attr.aria-describedby') describedBy = '';\n\n  @Input() errorStateMatcher: ErrorStateMatcher;\n\n  private pattern!: RegExp;\n  private allowed24HourMap: IAllowed24HourMap | null = null;\n  private allowed12HourMap: IAllowed12HourMap | null = null;\n  private isInputFocused = false;\n\n  /** Use a custom template for the ok button. */\n  @Input()\n  okButtonTemplate: TemplateRef<MatTimepickerButtonTemplateContext> | null =\n    null;\n\n  /** Use a custom template for the cancel button. */\n  @Input()\n  cancelButtonTemplate: TemplateRef<MatTimepickerButtonTemplateContext> | null =\n    null;\n\n  /** Override the label of the ok button. */\n  @Input() okLabel = 'Ok';\n  /** Override the label of the cancel button. */\n  @Input() cancelLabel = 'Cancel';\n  /** Override the ante meridiem abbreviation. */\n  @Input() anteMeridiemAbbreviation = 'am';\n  /** Override the post meridiem abbreviation. */\n  @Input() postMeridiemAbbreviation = 'pm';\n\n  /** Sets the clock mode, 12-hour or 24-hour clocks are supported. */\n  @Input() mode: ClockMode = '24h';\n\n  /** Color theme for the time picker dialog. */\n  @Input() color = 'primary';\n\n  /** Disable opening the dialog on click. */\n  @Input() disableDialogOpenOnClick = false;\n\n  /** Use strict date validation (entire date) vs time-only validation. */\n  @Input() strict = true;\n\n  /** Type identifier for form field CSS. */\n  controlType = 'angular-material-timepicker';\n\n  /** Minimum allowed date/time. */\n  @Input() minDate!: Date;\n\n  /** Maximum allowed date/time. */\n  @Input() maxDate!: Date;\n\n  private listeners: (() => void)[] = [];\n  private _isPm!: boolean;\n  private _value!: Date;\n  private _formattedValueString!: string | null;\n  private _skipValueChangeEmission = true;\n\n  @Input() set value(value: Date) {\n    if (value === this._value) {\n      return;\n    }\n    this._value = value;\n    if (!value) {\n      this._formattedValueString = null;\n      this.setInputElementValue('');\n      this.currentValue = value;\n      return;\n    }\n\n    const { hour, isPm } = convertHoursForMode(value.getHours(), this.mode);\n    this._isPm = isPm;\n    this._formattedValueString =\n      this.mode === '12h'\n        ? `${hour}:${twoDigits(value.getMinutes())} ${\n            isPm ? this.postMeridiemAbbreviation : this.anteMeridiemAbbreviation\n          }`\n        : `${twoDigits(value.getHours())}:${twoDigits(value.getMinutes())}`;\n\n    if (!this.isInputFocused) {\n      this.setInputElementValue(this.formattedValueString);\n    }\n    this.currentValue = value;\n    this.stateChanges.next();\n\n    if (this._skipValueChangeEmission) {\n      return;\n    }\n    this.timeChange.emit(this.currentValue);\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  get isPm() {\n    return this._isPm;\n  }\n\n  get empty() {\n    return !(this.currentValue instanceof Date);\n  }\n\n  private get formattedValueString() {\n    return this._formattedValueString;\n  }\n\n  private currentValue!: Date;\n  private modalRef!: MatDialogRef<MatTimepickerComponentDialogComponent> | null;\n  private combination: string[] = [];\n\n  private onChangeFn: any;\n  private onTouchedFn: any;\n\n  /** Emitted when the time value changes. */\n  @Output() timeChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /** Emitted when invalid input is entered. */\n  @Output() invalidInput: EventEmitter<any> = new EventEmitter<any>();\n\n  @HostListener('input') inputHandler() {\n    let value = (this.elRef.nativeElement as any).value as string;\n    const length = value.length;\n    if (length === 0) {\n      this.writeValue(null, true);\n      if (this.onChangeFn) {\n        this.onChangeFn(null);\n      }\n      return;\n    }\n\n    const meridiemResult = value.match(/am|pm/i);\n    let meridiem: string | null = null;\n    if (meridiemResult) {\n      value = value.replace(meridiemResult[0], '');\n      [meridiem] = meridiemResult;\n    }\n    const valueHasColumn = value.includes(':');\n    let [hours, minutes]: any =\n      length === 1\n        ? [value, 0]\n        : length === 2 && !valueHasColumn\n        ? [value, 0]\n        : valueHasColumn\n        ? value.split(':')\n        : value.split(/(\\d\\d)/).filter((v) => v);\n\n    hours = +hours;\n\n    if (/\\s/.test(minutes)) {\n      let other;\n      [minutes, other] = minutes.split(/\\s/);\n      if (other && /am|pm/i.test(other)) {\n        meridiem = other;\n      }\n    }\n\n    minutes = +minutes;\n\n    if (isNaN(hours) || isNaN(minutes)) {\n      this.writeValue(null, true);\n      return;\n    }\n\n    if (meridiem) {\n      const isPm = meridiem.toLowerCase() === 'pm';\n      if (isPm && hours < 12) {\n        hours += 12;\n      } else if (!isPm && hours === 12) {\n        hours = 0;\n      }\n    }\n\n    if (+hours < 0) {\n      hours = 0;\n    } else if (+hours > 23) {\n      hours = 23;\n    }\n\n    if (+minutes < 0) {\n      minutes = 0;\n    } else if (+minutes > 59) {\n      minutes = 59;\n    }\n\n    const d = this.value ? new Date(this.value.getTime()) : new Date();\n    d.setHours(+hours);\n    d.setMinutes(+minutes);\n    d.setSeconds(0);\n    d.setMilliseconds(0);\n\n    const isValueInRange = isDateInRange(this.minDate, this.maxDate, d);\n    if (!isValueInRange) {\n      this.currentValue = d;\n      this.invalidInput.emit();\n      return;\n    }\n\n    this.writeValue(d, true);\n    if (this.onChangeFn) {\n      this.onChangeFn(d);\n    }\n  }\n\n  @HostListener('keydown', ['$event']) keydownHandler(\n    event: any\n  ): true | undefined {\n    if (event.metaKey || event.ctrlKey || event.altKey) {\n      this.combination = this.combination.concat(event.code);\n      return;\n    }\n    if (!/^[0-9a-zA-Z\\s]{0,1}$/.test(event.key)) {\n      return;\n    }\n    const target = event.target;\n    const tValue = target.value;\n    const value = `${tValue.slice(0, target.selectionStart)}${\n      event.key\n    }${tValue.slice(target.selectionEnd)}`;\n    if (value.match(this.pattern) || this.combination.length > 0) {\n      return true;\n    }\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    return undefined;\n  }\n\n  @HostListener('keyup', ['$event']) keyupHandler(event: any) {\n    this.combination = this.combination.filter((v) => v !== event.code);\n  }\n\n  @HostListener('focus') focusHandler() {\n    this.isInputFocused = true;\n  }\n\n  @HostListener('focusout') focusoutHandler() {\n    this.isInputFocused = false;\n    this.setInputElementValue(this.formattedValueString);\n    if (this.onTouchedFn && !this.modalRef) {\n      this.onTouchedFn();\n    }\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    public dialog: MatDialog,\n    private renderer: Renderer2,\n    private zone: NgZone,\n    private fm: FocusMonitor,\n    private elRef: ElementRef<HTMLElement>,\n    protected _platform: Platform,\n    @Optional() private _parentForm: NgForm,\n    @Optional() private _matFormFiled: MatFormField,\n    @Optional() private _parentFormGroup: FormGroupDirective,\n    _defaultErrorStateMatcher: ErrorStateMatcher,\n    @Optional() @Inject(MAT_FORM_FIELD) protected _formField?: MatFormField\n  ) {\n    this.errorStateMatcher = _defaultErrorStateMatcher;\n\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n\n    this.pattern =\n      this.mode === '24h'\n        ? /^[0-9]{1,2}:?([0-9]{1,2})?$/\n        : /^[0-9]{1,2}:?([0-9]{1,2})?\\s?(a|p)?m?$/;\n\n    const element = this.elRef.nativeElement;\n    const nodeName = element.nodeName.toLowerCase();\n\n    this._isServer = !this._platform.isBrowser;\n    this._isNativeSelect = nodeName === 'select';\n    this._isTextarea = nodeName === 'textarea';\n    this._isInFormField = !!_formField;\n\n    if (this._isNativeSelect) {\n      this.controlType = (element as HTMLSelectElement).multiple\n        ? 'mat-native-select-multiple'\n        : 'mat-native-select';\n    }\n\n    if (_platform.IOS) {\n      zone.runOutsideAngular(() => {\n        elRef.nativeElement.addEventListener('keyup', this._iOSKeyupListener);\n      });\n    }\n  }\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  get shouldLabelFloat(): boolean {\n    if (this._isNativeSelect) {\n      const selectElement = this.elRef.nativeElement as HTMLSelectElement;\n      const firstOption: HTMLOptionElement | undefined =\n        selectElement.options[0];\n\n      return (\n        this.focused ||\n        selectElement.multiple ||\n        !this.empty ||\n        !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n      );\n    } else {\n      return this.focused || !this.empty;\n    }\n  }\n\n  private _iOSKeyupListener = (event: Event): void => {\n    const el = event.target as HTMLInputElement;\n\n    if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n      el.setSelectionRange(1, 1);\n      el.setSelectionRange(0, 0);\n    }\n  };\n\n  /**\n   * Implemented as part of MatFormFieldControl.\n   * @docs-private\n   */\n  setDescribedByIds(ids: string[]) {\n    if (ids.length) {\n      this.elRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n    } else {\n      this.elRef.nativeElement.removeAttribute('aria-describedby');\n    }\n  }\n\n  onContainerClick(event: MouseEvent) {\n    if (!this.focused) {\n      if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n        this.focus();\n      }\n    }\n  }\n\n  focus(options?: FocusOptions) {\n    this.elRef.nativeElement.focus();\n  }\n\n  /** Whether the form control is a native select that is displayed inline. */\n  _isInlineSelect(): boolean {\n    const element = this.elRef.nativeElement as HTMLSelectElement;\n    return this._isNativeSelect && (element.multiple || element.size > 1);\n  }\n\n  setInputElementValue(value: any) {\n    if (value === null || value === undefined) {\n      value = '';\n    }\n    Promise.resolve().then(() => {\n      this.zone.runOutsideAngular(() => {\n        this.renderer.setProperty(this.elRef.nativeElement, 'value', value);\n      });\n    });\n  }\n\n  validate() {\n    if (this.currentValue === null || this.currentValue === undefined) {\n      return null;\n    }\n\n    const isValueInRange = this.strict\n      ? isDateInRange(this.minDate, this.maxDate, this.currentValue)\n      : isTimeInRange(this.minDate, this.maxDate, this.currentValue);\n\n    return isValueInRange ? null : { dateRange: true };\n  }\n\n  ngAfterViewInit() {\n    this.listeners.push(\n      this.renderer.listen(\n        this._matFormFiled\n          ? this._matFormFiled._elementRef.nativeElement\n          : this.elRef.nativeElement,\n        'click',\n        this.clickHandler\n      )\n    );\n  }\n\n  clickHandler = (e: FocusEvent) => {\n    if (\n      (this.modalRef && this.modalRef.componentInstance.isClosing) ||\n      this.disabled ||\n      this.disableDialogOpenOnClick\n    ) {\n      return;\n    }\n    if (!this.modalRef && !this.disableDialogOpenOnClick) {\n      this.showDialog();\n    }\n  };\n\n  ngOnInit() {\n    if (this.ngControl && this.ngControl.control?.parent) {\n      const [key] = Object.entries(this.ngControl.control.parent.controls).find(\n        ([, c]) => c === this.ngControl?.control\n      ) as [string, AbstractControl];\n      const control = this.ngControl.control.parent.get(key);\n      this.required = !!control?.hasValidator(Validators.required);\n    } else if (this.ngControl) {\n      const control =\n        (this.ngControl as FormControlName)?.formDirective?.control?.get(\n          this.ngControl.path\n        ) || null;\n      this.required = !!control?.hasValidator(Validators.required);\n    }\n\n    if (this._platform.isBrowser) {\n      this.fm.monitor(this.elRef.nativeElement, true).subscribe((origin) => {\n        this.focused = !!origin;\n        this.stateChanges.next();\n      });\n    }\n\n    const hasMaxDate = !!this.maxDate;\n    const hasMinDate = !!this.minDate;\n\n    if (hasMinDate || hasMaxDate) {\n      if (hasMinDate) {\n        this.minDate.setSeconds(0);\n        this.minDate.setMilliseconds(0);\n      }\n      if (hasMaxDate) {\n        this.maxDate.setSeconds(0);\n        this.maxDate.setMilliseconds(0);\n      }\n      Promise.resolve().then(() => this.generateAllowedMap());\n\n      if (\n        this.ngControl &&\n        !(this.ngControl as any)._rawValidators.find((v: any) => v === this)\n      ) {\n        this.ngControl.control?.setValidators(\n          ((this.ngControl as any)._rawValidators as any[]).concat(this)\n        );\n        this.ngControl.control?.updateValueAndValidity();\n      }\n    }\n\n    this._skipValueChangeEmission = false;\n  }\n\n  generateAllowedMap() {\n    const isStrictMode = this.strict && this.value instanceof Date;\n    if (this.mode === '24h') {\n      this.allowed24HourMap = {};\n      for (let h = 0; h < 24; h++) {\n        for (let m = 0; m < 60; m++) {\n          const hourMap = this.allowed24HourMap[h] || {};\n          if (isStrictMode) {\n            const currentDate = new Date(this.value.getTime());\n            currentDate.setHours(h);\n            currentDate.setMinutes(m);\n            currentDate.setSeconds(0);\n            currentDate.setMilliseconds(0);\n            hourMap[m] = isDateInRange(this.minDate, this.maxDate, currentDate);\n          } else {\n            hourMap[m] = isAllowed(h, m, this.minDate, this.maxDate, '24h');\n          }\n          this.allowed24HourMap[h] = hourMap;\n        }\n      }\n    } else {\n      this.allowed12HourMap = { am: {}, pm: {} };\n      for (let h = 0; h < 24; h++) {\n        const meridiem = h < 12 ? 'am' : 'pm';\n        for (let m = 0; m < 60; m++) {\n          const hour = h > 12 ? h - 12 : h === 0 ? 12 : h;\n          const hourMap = this.allowed12HourMap[meridiem][hour] || {};\n          if (isStrictMode) {\n            const currentDate = new Date(this.value.getTime());\n            currentDate.setHours(h);\n            currentDate.setMinutes(m);\n            currentDate.setSeconds(0);\n            currentDate.setMilliseconds(0);\n            hourMap[m] = isDateInRange(this.minDate, this.maxDate, currentDate);\n          } else {\n            hourMap[m] = isAllowed(h, m, this.minDate, this.maxDate, '24h');\n          }\n          this.allowed12HourMap[meridiem][hour] = hourMap;\n        }\n      }\n    }\n  }\n\n  ngOnChanges(simpleChanges: SimpleChanges) {\n    this.pattern =\n      this.mode === '24h'\n        ? /^[0-9]{1,2}:?([0-9]{1,2})?$/\n        : /^[0-9]{1,2}:?([0-9]{1,2})?\\s?(a|p)?m?$/;\n\n    if (\n      (simpleChanges['minDate'] &&\n        !simpleChanges['minDate'].isFirstChange() &&\n        +simpleChanges['minDate'].currentValue !==\n          simpleChanges['minDate'].previousValue) ||\n      (simpleChanges['maxDate'] &&\n        !simpleChanges['maxDate'].isFirstChange() &&\n        +simpleChanges['maxDate'].currentValue !==\n          simpleChanges['maxDate'].previousValue) ||\n      (simpleChanges['disableLimitBase'] &&\n        !simpleChanges['disableLimitBase'].isFirstChange() &&\n        +simpleChanges['disableLimitBase'].currentValue !==\n          simpleChanges['disableLimitBase'].previousValue)\n    ) {\n      this.generateAllowedMap();\n      this.ngControl?.control?.updateValueAndValidity();\n    }\n\n    if (!this.modalRef || !this.modalRef.componentInstance) {\n      return;\n    }\n\n    this.modalRef.componentInstance.data = {\n      mode: this.mode,\n      value: this.currentValue,\n      okLabel: this.okLabel,\n      cancelLabel: this.cancelLabel,\n      okButtonTemplate: this.okButtonTemplate,\n      cancelButtonTemplate: this.cancelButtonTemplate,\n      anteMeridiemAbbreviation: this.anteMeridiemAbbreviation,\n      postMeridiemAbbreviation: this.postMeridiemAbbreviation,\n      color: this.color,\n      isPm: this.isPm,\n      minDate: this.minDate,\n      maxDate: this.maxDate,\n      allowed12HourMap: this.allowed12HourMap,\n      allowed24HourMap: this.allowed24HourMap,\n    };\n  }\n\n  writeValue(value: Date | null, isInnerCall = false): void {\n    if (!isInnerCall) {\n      this._skipValueChangeEmission = true;\n      Promise.resolve().then(() => (this._skipValueChangeEmission = false));\n    }\n\n    if (value) {\n      value.setSeconds(0);\n      value.setMilliseconds(0);\n    }\n\n    if (value && +this.value !== +value) {\n      this.value = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeFn = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedFn = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  showDialog() {\n    if (this.disabled) {\n      return;\n    }\n    this.isInputFocused = false;\n    this.modalRef = this.dialog.open(MatTimepickerComponentDialogComponent, {\n      autoFocus: false,\n      data: {\n        mode: this.mode,\n        value: this.currentValue,\n        okLabel: this.okLabel,\n        cancelLabel: this.cancelLabel,\n        okButtonTemplate: this.okButtonTemplate,\n        cancelButtonTemplate: this.cancelButtonTemplate,\n        anteMeridiemAbbreviation: this.anteMeridiemAbbreviation,\n        postMeridiemAbbreviation: this.postMeridiemAbbreviation,\n        color: this.color,\n        isPm: this.isPm,\n        minDate: this.minDate,\n        maxDate: this.maxDate,\n        allowed12HourMap: this.allowed12HourMap,\n        allowed24HourMap: this.allowed24HourMap,\n      },\n    });\n    const instance = this.modalRef.componentInstance;\n    instance.changeEvent\n      .pipe(takeUntil(this.isAlive))\n      .subscribe(this.handleChange);\n    instance.okClickEvent\n      .pipe(takeUntil(this.isAlive))\n      .subscribe(this.handleOk);\n    instance.cancelClickEvent\n      .pipe(takeUntil(this.isAlive))\n      .subscribe(this.handleCancel);\n    this.modalRef\n      .beforeClosed()\n      .pipe(first())\n      .subscribe(() => (instance.isClosing = true));\n    this.modalRef\n      .afterClosed()\n      .pipe(first())\n      .subscribe(() => {\n        if (this.onTouchedFn) {\n          this.onTouchedFn();\n        }\n        this.modalRef = null;\n        this.elRef.nativeElement.focus();\n      });\n\n    this.currentValue = this.value as Date;\n  }\n\n  handleChange = (newValue: any) => {\n    if (!(newValue instanceof Date)) {\n      return;\n    }\n    const v =\n      this.value instanceof Date ? new Date(this.value.getTime()) : new Date();\n    v.setHours(newValue.getHours());\n    v.setMinutes(newValue.getMinutes());\n    v.setSeconds(0);\n    v.setMilliseconds(0);\n    this.currentValue = v;\n  };\n\n  handleOk = (value: any) => {\n    if (!this.currentValue && value) {\n      this.currentValue = value;\n    }\n    if (this.onChangeFn) {\n      this.onChangeFn(this.currentValue);\n    }\n    this.value = this.currentValue;\n    this.modalRef?.close();\n  };\n\n  handleCancel = () => {\n    this.modalRef?.close();\n  };\n\n  ngOnDestroy() {\n    this.isAlive.next(null);\n    this.isAlive.complete();\n    this.stateChanges.complete();\n\n    if (this._platform.isBrowser) {\n      this.fm.stopMonitoring(this.elRef.nativeElement);\n    }\n\n    this.listeners.forEach((l) => l());\n  }\n}\n","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\nimport { MatTimepickerDirective } from './timepicker.directive';\n\n@Directive({\n  selector: '[matTimepickerToggle]',\n  standalone: true,\n})\nexport class MatTimepickerToggleDirective {\n  @Input('matTimepickerToggle') timepicker!: MatTimepickerDirective;\n\n  @HostBinding('style.pointer-events') pointerEvents = 'auto';\n  @HostBinding('style.cursor') cursor = 'pointer';\n\n  @HostListener('click', ['$event']) onClick(event: Event) {\n    if (this.timepicker) {\n      this.timepicker.showDialog();\n      event.stopPropagation();\n    }\n  }\n}\n","import { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ClockComponent } from './clock/clock.component';\nimport { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';\nimport { MatTimepickerDirective } from './timepicker.directive';\nimport { MatTimepickerToggleDirective } from './timepicker-toggle.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatDialogModule,\n    MatButtonModule,\n    MatToolbarModule,\n    MatIconModule,\n    MatInputModule,\n    // Components\n    ClockComponent,\n    MatTimepickerDirective,\n    MatTimepickerComponentDialogComponent,\n    MatTimepickerToggleDirective,\n  ],\n  exports: [MatTimepickerDirective, MatTimepickerToggleDirective],\n})\nexport class MatTimepickerModule {}\n","/*\n * Public API Surface of mat-timepicker\n */\n\nexport * from './lib/timepicker.directive';\nexport * from './lib/timepicker-toggle.directive';\n\nexport * from './lib/mat-timepicker.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3"],"mappings":"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"}