{"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/mat-timepicker.module.ts","../../../projects/mat-timepicker/src/public-api.ts","../../../projects/mat-timepicker/src/mat-timepicker.ts"],"sourcesContent":["import { ITimeData, ClockViewType, ClockMode } from './interfaces-and-types';\n\nexport function twoDigits(n) {\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, b) {\n  return a - Math.floor(a / b) * b;\n}\n\nexport function getShortestAngle(from, to) {\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 getIsAvailabeFn(allowed12HourMap, allowed24HourMap, 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 { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { ClockViewType, ClockNumber, ITimeData, ClockMode } from '../interfaces-and-types';\nimport { isAllowed, getIsAvailabeFn } from '../util';\n\n@Component({\n  selector: 'mat-clock',\n  templateUrl: './clock.component.html',\n  styleUrls: ['./clock.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ClockComponent implements OnChanges {\n\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\n  @Input() allowed12HourMap = null;\n  @Input() allowed24HourMap = null;\n\n  isFormattedValueAllowed = true;\n\n  isAvailableFn: ReturnType<typeof getIsAvailabeFn>;\n\n  meridiem = 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) { return; }\n    this.isAvailableFn = getIsAvailabeFn(this.allowed12HourMap, this.allowed24HourMap, this.mode);\n  }\n\n  isAvailable(value) {\n    return this.isAvailableFn ? this.isAvailableFn(value, this.viewType, this.isPm, this.formattedHours) : true;\n  }\n\n  ngOnChanges(simpleChanges: SimpleChanges) {\n\n    if (\n      simpleChanges.allowed12HourMap ||\n      simpleChanges.allowed24HourMap ||\n      (simpleChanges.mode && !simpleChanges.mode.firstChange)\n    ) {\n      this.initIsAllowedFn();\n    }\n\n    this.calculateAngule();\n    this.setNumbers();\n    this.meridiem = this.isPm ? 'PM' : 'AM';\n\n    if (simpleChanges.formattedValue && (this.allowed12HourMap || this.allowed24HourMap)) {\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(this.minutes, 'minutes', this.isPm, this.formattedHours) : true;\n\n    // if (this.mode === '24h' && this.viewType === 'minutes' && this.isAvailableFn) {\n    //   const areMinitesAvailable = this.isAvailableFn(this.minutes, 'minutes', this.isPm, this.formattedHours);\n    //   if (!areMinitesAvailable) {\n    //     if (this.minDate && this.minDate.getMinutes() > this.minutes) {\n    //       setTimeout(() => { this.changeEvent.emit({ value: this.minDate.getMinutes(), type: 'minutes' }); });\n    //     } else {\n    //       setTimeout(() => { this.changeEvent.emit({ value: this.maxDate.getMinutes(), type: 'minutes' }); });\n    //     }\n    //   }\n    // }\n\n    if (isSelectedTimeAvailable && this.invalidMeridiemEmitted) {\n      this.clearInvalidMeridiem.emit();\n      this.invalidMeridiemEmitted = false;\n    }\n\n    this.invalidSelection.emit(!isSelectedTimeAvailable);\n  }\n\n  calculateAngule() {\n    this.angle = this.getPointerAngle(this.formattedValue, this.viewType);\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 ? num => this.allowed12HourMap[meridiem][num + 1][0] : 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 ? num => this.allowed24HourMap[num][0] : undefined;\n        this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);\n        this.secondaryNumbers = this.getNumbers(12, { size: 256 - 64, start: 13 }, isAllowedFn);\n        this.minuteDots = [];\n      }\n    } else {\n      const meridiem = this.isPm ? 'pm' : 'am';\n      const isAllowedFn =\n        !!this.allowed12HourMap ? num => this.allowed12HourMap[meridiem][this.formattedHours][num] :\n          !!this.allowed24HourMap ? num => this.allowed24HourMap[this.formattedHours][num] : undefined;\n\n      this.numbers = this.getNumbers(12, { size: 256, start: 5, step: 5 }, isAllowedFn);\n      this.minuteDots = this.getNumbers(60, { size: 256, start: 13 }).map(digit => {\n        if (digit.display <= 59) {\n          digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n          return digit;\n        }\n        digit.display = digit.display - 60;\n        digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;\n        return digit;\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(e.changedTouches[0].clientX - rect.left, e.changedTouches[0].clientY - rect.top);\n  }\n\n  handleTouchEnd(e: any) {\n    this.handleTouchMove(e);\n    this.enableAnimatedPointer();\n  }\n\n  handleMouseMove(e: any) {\n    // MouseEvent.which is deprecated, but MouseEvent.buttons is not supported in Safari\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, y) {\n    const value = this.getPointerValue(x, y, 256);\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          ) {\n            this.changeEvent.emit({ value: this.minDate.getMinutes(), type: 'minutes' });\n          } else if (this.maxDate && this.isAvailable(value)) {\n            this.changeEvent.emit({ value: this.maxDate.getMinutes(), type: 'minutes' });\n          }\n        }\n      }\n    }\n  }\n\n  getNumbers(count, { size, start = 1, step = 1 }, isAllowedFn?: (num: number) => boolean) {\n    return Array.apply(null, Array(count)).map((_, i) => ({\n      display: i * step + start,\n      translateX: (size / 2 - 20) * Math.cos(2 * Math.PI * (i - 2) / count),\n      translateY: (size / 2 - 20) * Math.sin(2 * Math.PI * (i - 2) / count),\n      allowed: isAllowedFn ? isAllowedFn(i) : true\n    }));\n  }\n\n  getPointerAngle(value, mode: ClockViewType) {\n    if (this.viewType === 'hours') {\n      return this.mode === '12h' ? 360 / 12 * (value - 3) : 360 / 12 * (value % 12 - 3);\n    }\n    return 360 / 60 * (value - 15);\n  }\n\n  getPointerValue(x, y, size) {\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(Math.pow(size / 2 - x, 2) + Math.pow(size / 2 - y, 2));\n      value = 12 - Math.round(angle * 12 / 360);\n      if (value === 0) { value = 12; }\n      if (radius < size / 2 - 32) { value = value === 12 ? 0 : value + 12; }\n      return value;\n\n    }\n\n    value = Math.round(60 - 60 * angle / 360);\n    return value === 60 ? 0 : value;\n  }\n}\n","<div class=\"root\">\n  <div class=\"circle\" (touchmove)=\"handleTouchMove($event)\" (mousemove)=\"handleMouseMove($event)\"\n    (touchstart)=\"disableAnimatedPointer()\" (mousedown)=\"disableAnimatedPointer()\" (touchend)=\"handleTouchEnd($event)\"\n    (mouseup)=\"enableAnimatedPointer()\" (click)=\"handleClick($event)\">\n    <div class=\"pointer-container\"\n      [ngClass]=\"{ 'small-pointer': mode === '24h' && viewType === 'hours' && (formattedValue === 0 || formattedValue > 12), 'animated-pointer': !touching }\"\n      [style.transform]=\"'rotate(' + angle + 'deg)'\">\n      <button mat-mini-fab [color]=\"color\" class=\"inner-dot\"></button>\n      <mat-toolbar [color]=\"color\" class=\"pointer\">\n        <button mat-mini-fab [color]=\"color\" class=\"outer-dot\"\n          [ngClass]=\" { 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0 }\">\n          <ng-container *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\">·</ng-container>\n        </button>\n      </mat-toolbar>\n    </div>\n    <ng-container *ngFor=\"let digit of minuteDots;\">\n      <button class=\"number minute-dot\"\n        [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 0 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 60 ? 0 : digit.display)}\"\n        [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\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 class=\"number\"\n        [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 60 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 60 ? 0 : digit.display)}\"\n        [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n        <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n        <ng-template #minutesTemplate>{{ digit.display === 60 ? '00' : digit.display }}</ng-template>\n        <ng-container *ngIf=\"viewType === 'minutes' then minutesTemplate else hoursTemplate;\"></ng-container>\n      </button>\n\n    </ng-container>\n    <ng-container *ngFor=\"let digit of secondaryNumbers;\">\n      <button class=\"number small-number\"\n        [ngClass]=\"{ 'selected': formattedValue === digit.display || (digit.display === 24 && formattedValue === 0), 'disabled': !isAvailable(digit.display === 24 ? 0 : digit.display)}\"\n        [style.transform]=\"'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\">\n        {{ digit.display === 24 ? '00' : digit.display }}\n      </button>\n\n    </ng-container>\n  </div>","import { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Component, EventEmitter, Output, Inject, DoCheck, TemplateRef } from '@angular/core';\nimport { ClockViewType, ClockMode, IAllowed24HourMap, IAllowed12HourMap } from '../interfaces-and-types';\nimport { twoDigits, convertHoursForMode } from '../util';\nimport { MatTimepickerButtonTemplateContext } from '../timepicker.directive';\n\n@Component({\n  selector: 'mat-timepicker-dialog',\n  templateUrl: './timepicker-dialog.component.html',\n  styleUrls: ['./timepicker-dialog.component.scss']\n})\nexport class MatTimepickerComponentDialogComponent implements DoCheck {\n\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;\n  allowed12HourMap: IAllowed12HourMap = 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() { return this._value; }\n\n  mode: ClockMode;\n  viewType: ClockViewType = 'hours';\n\n  minutes: any;\n  color: string;\n  isPm = false;\n  skipMinuteAutoSwitch = false;\n  autoSwitchID = null;\n  invalidMedianID = null;\n  hasInvalidMeridiem = false;\n  editHoursClicked = false;\n  isClosing = false;\n\n  minDate: Date;\n  maxDate: Date;\n\n  // tslint:disable-next-line:variable-name\n  _formattedHour: any;\n  // tslint:disable-next-line:variable-name\n  _hours: any;\n  // tslint:disable-next-line:variable-name\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() { return this._hours; }\n\n  get formattedHours() { return this._formattedHour; }\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) {\n    this.isPm = data.isPm;\n    this.bindData(data);\n    // keep this always at the bottom\n    this.value = data.value;\n  }\n\n  ngDoCheck() { this.bindData(this.data); }\n\n  handleClockChange({ value, type }: { value: number, type: 'minutes' | 'hours' }) {\n    const is24hoursAutoMeridiemChange = this.mode === '24h' && type === 'hours' && (\n      (this.hours >= 12 && value < 12) || (this.hours < 12 && value >= 12));\n    if ((this.hasInvalidMeridiem && this.mode === '12h') || is24hoursAutoMeridiemChange) {\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 ((type && type === 'minutes') || (!type && this.viewType === 'minutes')) {\n      this.minutes = value;\n    }\n\n    const newValue = new Date();\n    const hours = this.isPm ? this.hours < 12 ? this.hours + 12 : this.hours : this.hours === 12 ? 0 : 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) {\n    e.preventDefault(); // prevent mouseUp after touchEnd\n\n    if (this.viewType === 'hours' && !this.skipMinuteAutoSwitch) {\n      this.autoSwitchID = setTimeout(() => {\n        this.editMinutes();\n        this.autoSwitchID = null;\n      }, 300);\n    }\n  }\n\n  editHours() {\n    this.viewType = 'hours';\n    this.editHoursClicked = true;\n    setTimeout(() => { this.editHoursClicked = false; }, 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) {\n    this.invalidSelection = value;\n  }\n\n\n  invalidMeridiem() {\n    if (this.viewType !== 'minutes' && this.editHoursClicked) {\n      if (this.invalidMedianID) { return; }\n      this.invalidMedianID = setTimeout(() => {\n        this.isPm = !this.isPm;\n        this.hasInvalidMeridiem = false;\n      }, 0);\n      return;\n    }\n    this.hasInvalidMeridiem = true;\n  }\n\n  meridiemChange(hours) {\n    const changeData = {\n      type: this.viewType,\n      value: this.viewType === 'hours' ? hours : this.value.getMinutes()\n    };\n    this.handleClockChange(changeData);\n  }\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}\n","<ng-template #defaultCancelButtonTemplate>\n  <button mat-button [color]=\"color\" (click)=\"cancelClickHandler()\">{{cancelLabel}}</button>\n</ng-template>\n<ng-template #defaultOkButtonTemplate>\n  <button mat-button [disabled]=\"invalidSelection\" [color]=\"color\" (click)=\"okClickHandler()\">{{okLabel}}</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 class=\"time fixed-font-size\" [ngClass]=\"{'select': this.viewType === 'hours' && 'active' }\"\n          (click)=\"editHours()\">\n          {{ twoDigits(formattedHours) }}\n        </span>\n        <span class=\"fixed-font-size\">:</span>\n        <span class=\"time fixed-font-size\" [ngClass]=\"{ 'select': this.viewType === 'minutes' && 'active' }\"\n          (click)=\"editMinutes()\">\n          {{ twoDigits(minutes) }}\n        </span>\n      </div>\n      <ng-container *ngIf=\"mode === '12h' then ampm else normal\"></ng-container>\n      <ng-template #normal>\n        <div class=\"placeholder\"></div>\n      </ng-template>\n      <ng-template #ampm>\n        <div class=\"ampm\">\n          <span class=\"time\" [ngClass]=\"{ 'select': isPm }\" (click)=\"setPm()\">{{postMeridiemAbbreviation | uppercase\n            }}</span>\n          <span class=\"time\" [ngClass]=\"{ 'select': !isPm }\" (click)=\"setAm()\">{{anteMeridiemAbbreviation | uppercase\n            }}</span>\n        </div>\n      </ng-template>\n    </mat-toolbar>\n    <div class=\"body\">\n      <mat-clock [allowed12HourMap]=\"allowed12HourMap\" [allowed24HourMap]=\"allowed24HourMap\" [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\" [color]=\"color\" [viewType]=\"viewType\" [mode]=\"mode\" [formattedHours]=\"formattedHours\"\n        [minutes]=\"minutes\" (changeEvent)=\"handleClockChange($event)\"\n        (unavailableSelection)=\"handleUnavailableSelection()\"\n        [formattedValue]=\"viewType === 'minutes' ? minutes : formattedHours\" [isPm]=\"isPm\"\n        (invalidMeridiem)=\"invalidMeridiem()\" (mouseup)=\"handleClockChangeDone($event)\"\n        (clearInvalidMeridiem)=\"clearInvalidMeridiem()\" (touchend)=\"handleClockChangeDone($event)\"\n        (invalidSelection)=\"invalidSelectionHandler($event)\"></mat-clock>\n    </div>\n  </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n  <ng-container\n    *ngTemplateOutlet=\"cancelButtonTemplate || defaultCancelButtonTemplate; context: { label: cancelLabel, $implicit: cancelClickHandler }\">\n  </ng-container>\n  <ng-container\n    *ngTemplateOutlet=\"okButtonTemplate || defaultOkButtonTemplate; context: { label: okLabel, $implicit: okClickHandler }\">\n  </ng-container>\n</mat-dialog-actions>","import {\n  ControlValueAccessor,\n  NgForm,\n  NgControl,\n  FormGroupDirective,\n  FormControl,\n  FormControlName,\n  Validators,\n  FormGroup,\n  FormControlDirective,\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} from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport {\n  MatFormFieldControl,\n  MatFormField,\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  // tslint:disable-next-line:no-host-metadata-property\n  host: {\n    /**\n     * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n     */\n    // tslint:disable-next-line:object-literal-key-quotes\n    class: 'mat-input-element mat-form-field-autofill-control',\n    '[class.mat-input-server]': '_isServer',\n    // Native input properties that are overwritten by Angular inputs need to be synced with\n    // the native input element. Otherwise property bindings for those don't work.\n    '[attr.id]': 'id',\n    '[attr.placeholder]': 'placeholder',\n    '[disabled]': 'disabled',\n    '[required]': 'required',\n    '[attr.readonly]': 'readonly || null',\n    '[attr.aria-invalid]': 'errorState',\n    '[attr.aria-required]': 'required.toString()',\n  },\n  exportAs: 'matTimepicker',\n})\nexport class MatTimepickerDirective\n  implements\n  OnInit,\n  OnChanges,\n  AfterViewInit,\n  OnDestroy,\n  ControlValueAccessor,\n  MatFormFieldControl<any>\n{\n  static nextId = 0;\n\n  /** Whether the component is being rendered on the server. */\n  // tslint:disable-next-line:variable-name\n  readonly _isServer: boolean;\n\n  // tslint:disable-next-line:variable-name\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()\n  get disabled(): boolean {\n    if (this.ngControl && this.ngControl.disabled !== null) {\n      return this.ngControl.disabled;\n    }\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n\n    // Browsers may not fire the blur event if the input is disabled too quickly.\n    // Reset from here to ensure that the element doesn't become stuck.\n    if (this.focused) {\n      this.focused = false;\n      this.stateChanges.next();\n    }\n  }\n  // tslint:disable-next-line:variable-name\n  protected _disabled = false;\n\n  @Input() get id(): string {\n    return this._id;\n  }\n  set id(value: string) {\n    this._id = value || this._uid;\n  }\n  // tslint:disable-next-line:variable-name\n  protected _id: string;\n\n  @Input() get readonly(): boolean {\n    return this._readonly;\n  }\n  set readonly(value: boolean) {\n    this._readonly = coerceBooleanProperty(value);\n  }\n  // tslint:disable-next-line:variable-name\n  private _readonly = false;\n\n  private isAlive: Subject<any> = new Subject<any>();\n  stateChanges = new Subject<void>();\n\n  // tslint:disable-next-line:variable-name\n  protected _uid = `mat-time-picker-${MatTimepickerDirective.nextId++}`;\n  @HostBinding('class.floating') get shouldLabelFloat() {\n    return this.focused || !this.empty;\n  }\n  @HostBinding('attr.aria-describedby') describedBy = '';\n\n  @Input() errorStateMatcher: ErrorStateMatcher;\n\n  @Input() get required() {\n    return this._required;\n  }\n\n  set required(req) {\n    this._required = coerceBooleanProperty(req);\n    this.stateChanges.next();\n  }\n  // tslint:disable-next-line:variable-name\n  private _required = false;\n\n  @Input() get placeholder() {\n    return this._placeholder;\n  }\n  set placeholder(plh) {\n    this._placeholder = plh;\n    this.stateChanges.next();\n  }\n  // tslint:disable-next-line:variable-name\n  private _placeholder: string;\n\n  focused = false;\n  private pattern: RegExp;\n\n  private allowed24HourMap: IAllowed24HourMap = null;\n  private allowed12HourMap: IAllowed12HourMap = null;\n\n  private isInputFocused = false;\n\n  /* Use a custom template for the ok button */\n  @Input()\n  okButtonTemplate: TemplateRef<MatTimepickerButtonTemplateContext> | null = null;\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  @Input() color = 'primary';\n  @Input() disableDialogOpenOnClick = false;\n  @Input() strict = true;\n\n  controlType = 'angular-material-timepicker';\n\n  private listeners: (() => void)[] = [];\n\n  @Input() minDate: Date;\n  @Input() maxDate: Date;\n\n  // tslint:disable-next-line:variable-name\n  private _isPm: boolean;\n  // tslint:disable-next-line:variable-name\n  private _value: Date;\n  // tslint:disable-next-line:variable-name\n  private _formattedValueString: string;\n\n  // tslint:disable-next-line:variable-name\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())} ${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>;\n\n  private onChangeFn: any;\n  private onTouchedFn: any;\n  private combination: string[] = [];\n\n  @Output() timeChange: EventEmitter<any> = new EventEmitter<any>();\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 === 'pm' && !isNaN(hours) && hours < 12) {\n        hours += 12;\n      }\n    }\n\n    minutes = +minutes;\n\n    if (isNaN(hours) || isNaN(minutes)) {\n      this.writeValue(null, true);\n      return;\n    }\n\n    if (hours < 12 && meridiem && meridiem.toLowerCase() === 'pm') {\n      hours += 12;\n    } else if (hours >= 12 && meridiem && meridiem.toLowerCase() === 'am') {\n      hours -= 12;\n    }\n\n    if (this.mode === '12h' && +hours < 0) {\n      hours = '0';\n    } else {\n      if (+hours > 24) {\n        hours = '24';\n      } else if (+hours < 0) {\n        hours = '0';\n      }\n    }\n\n    if (+minutes > 59) {\n      minutes = '59';\n    } else if (+minutes < 0) {\n      minutes = '0';\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.invalidInput.emit();\n    }\n\n    this.writeValue(d, true);\n    if (this.onChangeFn) {\n      this.onChangeFn(d);\n    }\n  }\n\n  @HostListener('keydown', ['$event']) keydownHandler(event: any) {\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)}${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  }\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    // tslint:disable-next-line:variable-name\n    protected _platform: Platform,\n    // tslint:disable-next-line:variable-name\n    @Optional() private _parentForm: NgForm,\n    // tslint:disable-next-line:variable-name\n    @Optional() private _matFormFiled: MatFormField,\n    // tslint:disable-next-line:variable-name\n    @Optional() private _parentFormGroup: FormGroupDirective,\n    // tslint:disable-next-line:variable-name\n    _defaultErrorStateMatcher: ErrorStateMatcher\n  ) {\n    this.id = this.id;\n\n    this.errorStateMatcher = _defaultErrorStateMatcher;\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n\n\n    if (_platform.IOS) {\n      zone.runOutsideAngular(() => {\n        elRef.nativeElement.addEventListener('keyup', (event: Event) => {\n          const el = event.target as HTMLInputElement;\n          if (!el.value && !el.selectionStart && !el.selectionEnd) {\n            // Note: Just setting `0, 0` doesn't fix the issue. Setting\n            // `1, 1` fixes it for the first time that you type text and\n            // then hold delete. Toggling to `1, 1` and then back to\n            // `0, 0` seems to completely fix it.\n            el.setSelectionRange(1, 1);\n            el.setSelectionRange(0, 0);\n          }\n        });\n      });\n    }\n\n    this._isServer = !this._platform.isBrowser;\n  }\n\n  setDescribedByIds(ids: string[]) {\n    this.describedBy = ids.join(' ');\n  }\n\n  onContainerClick(event: MouseEvent) {\n    if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n      this.elRef.nativeElement.focus();\n    }\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(([, c]) => c === this.ngControl.control);\n      const control = this.ngControl.control.parent.get(key);\n      this.required = !!control?.hasValidator(Validators.required);\n    } else if (this.ngControl) {\n      const control = (this.ngControl as FormControlName)?.formDirective?.control?.get(this.ngControl.path) || 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 (!(this.ngControl as any)._rawValidators.find((v) => v === this)) {\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  checkValidity(value: Date) {\n    if (!value) {\n      return false;\n    }\n    const hour = value.getHours();\n    const minutes = value.getMinutes();\n    const meridiem = this.isPm ? 'PM' : 'AM';\n    return isAllowed(\n      hour,\n      minutes,\n      this.minDate,\n      this.maxDate,\n      this.mode,\n      meridiem\n    );\n  }\n\n  writeValue(value: Date, 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 (+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) => {\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) => {\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();\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 { 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';\n\n@NgModule({\n    declarations: [\n        ClockComponent,\n        MatTimepickerDirective,\n        MatTimepickerComponentDialogComponent\n    ],\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        MatButtonModule,\n        MatToolbarModule,\n        MatIconModule,\n        MatInputModule\n    ],\n    exports: [\n        MatTimepickerDirective\n    ]\n})\nexport class MatTimepickerModule { }\n","/*\n * Public API Surface of mat-timepicker\n */\n\nexport * from './lib/timepicker.directive';\nexport * from './lib/mat-timepicker.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5.ClockComponent","i1"],"mappings":"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"}