{"version":3,"file":"ngx-bootstrap-timepicker.mjs","sources":["../../../../src/timepicker/reducer/timepicker.actions.ts","../../../../src/timepicker/timepicker.utils.ts","../../../../src/timepicker/timepicker-controls.util.ts","../../../../src/timepicker/timepicker.config.ts","../../../../src/timepicker/reducer/timepicker.reducer.ts","../../../../src/timepicker/reducer/timepicker.store.ts","../../../../src/timepicker/timepicker.component.ts","../../../../src/timepicker/timepicker.component.html","../../../../src/timepicker/timepicker.module.ts","../../../../src/timepicker/ngx-bootstrap-timepicker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport {\n  TimeChangeEvent,\n  TimepickerComponentState,\n  Time\n} from '../timepicker.models';\n\n@Injectable({providedIn: 'platform'})\nexport class TimepickerActions {\n  static readonly WRITE_VALUE = '[timepicker] write value from ng model';\n  static readonly CHANGE_HOURS = '[timepicker] change hours';\n  static readonly CHANGE_MINUTES = '[timepicker] change minutes';\n  static readonly CHANGE_SECONDS = '[timepicker] change seconds';\n  static readonly SET_TIME_UNIT = '[timepicker] set time unit';\n  static readonly UPDATE_CONTROLS = '[timepicker] update controls';\n\n  writeValue(value?: Date | string) {\n    return {\n      type: TimepickerActions.WRITE_VALUE,\n      payload: value\n    };\n  }\n\n  changeHours(event: TimeChangeEvent) {\n    return {\n      type: TimepickerActions.CHANGE_HOURS,\n      payload: event\n    };\n  }\n\n  changeMinutes(event: TimeChangeEvent) {\n    return {\n      type: TimepickerActions.CHANGE_MINUTES,\n      payload: event\n    };\n  }\n\n  changeSeconds(event: TimeChangeEvent): Action {\n    return {\n      type: TimepickerActions.CHANGE_SECONDS,\n      payload: event\n    };\n  }\n\n  setTime(value: Time): Action {\n    return {\n      type: TimepickerActions.SET_TIME_UNIT,\n      payload: value\n    };\n  }\n\n  updateControls(value: TimepickerComponentState): Action {\n    return {\n      type: TimepickerActions.UPDATE_CONTROLS,\n      payload: value\n    };\n  }\n}\n","import { Time, TimepickerComponentState } from './timepicker.models';\n\nconst dex = 10;\nconst hoursPerDay = 24;\nconst hoursPerDayHalf = 12;\nconst minutesPerHour = 60;\nconst secondsPerMinute = 60;\n\nexport function isValidDate(value?: string | Date): boolean {\n  if (!value) {\n    return false;\n  }\n\n  if (value instanceof Date && isNaN(value.getHours())) {\n    return false;\n  }\n\n  if (typeof value === 'string') {\n    return isValidDate(new Date(value));\n  }\n\n  return true;\n}\n\nexport function isValidLimit(controls: TimepickerComponentState, newDate: Date): boolean {\n  if (controls.min && newDate < controls.min) {\n    return false;\n  }\n\n  if (controls.max && newDate > controls.max) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function toNumber(value?: string | number): number {\n  if (typeof value === 'undefined') {\n    return NaN;\n  }\n\n  if (typeof value === 'number') {\n    return value;\n  }\n\n  return parseInt(value, dex);\n}\n\nexport function isNumber(value: string | number): value is number {\n  return !isNaN(toNumber(value));\n}\n\nexport function parseHours(\n  value?: string | number,\n  isPM = false\n): number {\n  const hour = toNumber(value);\n  if (\n    isNaN(hour) ||\n    hour < 0 ||\n    hour > (isPM ? hoursPerDayHalf : hoursPerDay)\n  ) {\n    return NaN;\n  }\n\n  return hour;\n}\n\nexport function parseMinutes(value?: string | number): number {\n  const minute = toNumber(value);\n  if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {\n    return NaN;\n  }\n\n  return minute;\n}\n\nexport function parseSeconds(value?: string | number): number {\n  const seconds = toNumber(value);\n  if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {\n    return NaN;\n  }\n\n  return seconds;\n}\n\nexport function parseTime(value?: string | Date): Date | undefined {\n  if (typeof value === 'string') {\n    return new Date(value);\n  }\n\n  return value;\n}\n\nexport function changeTime(value?: Date, diff?: Time): Date {\n  if (!value) {\n    return changeTime(createDate(new Date(), 0, 0, 0), diff);\n  }\n\n  if (!diff) {\n    return value;\n  }\n\n  let hour = value.getHours();\n  let minutes = value.getMinutes();\n  let seconds = value.getSeconds();\n\n  if (diff.hour) {\n    hour = hour + toNumber(diff.hour);\n  }\n\n  if (diff.minute) {\n    minutes = minutes + toNumber(diff.minute);\n  }\n\n  if (diff.seconds) {\n    seconds = seconds + toNumber(diff.seconds);\n  }\n\n  return createDate(value, hour, minutes, seconds);\n}\n\nexport function setTime(value: Date | undefined, opts: Time): Date | undefined {\n  let hour = parseHours(opts.hour);\n  const minute = parseMinutes(opts.minute);\n  const seconds = parseSeconds(opts.seconds) || 0;\n\n  if (opts.isPM && hour !== 12) {\n    hour += hoursPerDayHalf;\n  }\n\n  if (!value) {\n    if (!isNaN(hour) && !isNaN(minute)) {\n      return createDate(new Date(), hour, minute, seconds);\n    }\n\n    return value;\n  }\n\n  if (isNaN(hour) || isNaN(minute)) {\n    return value;\n  }\n\n  return createDate(value, hour, minute, seconds);\n}\n\nexport function createDate(\n  value: Date,\n  hours: number,\n  minutes: number,\n  seconds: number\n): Date {\n  const newValue = new Date(\n    value.getFullYear(),\n    value.getMonth(),\n    value.getDate(),\n    hours,\n    minutes,\n    seconds,\n    value.getMilliseconds()\n  );\n  // #3139 ensure date part remains unchanged\n  newValue.setFullYear(value.getFullYear());\n  newValue.setMonth(value.getMonth());\n  newValue.setDate(value.getDate());\n\n  return newValue;\n}\n\nexport function padNumber(value: number): string {\n  const _value = value.toString();\n  if (_value.length > 1) {\n    return _value;\n  }\n\n  return `0${_value}`;\n}\n\nexport function isHourInputValid(hours: string, isPM: boolean): boolean {\n  return !isNaN(parseHours(hours, isPM));\n}\n\nexport function isMinuteInputValid(minutes: string): boolean {\n  return !isNaN(parseMinutes(minutes));\n}\n\nexport function isSecondInputValid(seconds: string): boolean {\n  return !isNaN(parseSeconds(seconds));\n}\n\nexport function isInputLimitValid(diff: Time, max?: Date, min?: Date): boolean {\n  const newDate = setTime(new Date(), diff);\n\n  if (!newDate) {\n    return false;\n  }\n\n  if (max && newDate > max) {\n    return false;\n  }\n\n  if (min && newDate < min) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function isOneOfDatesEmpty(hours: string, minutes: string, seconds: string): boolean {\n  return hours.length === 0 || minutes.length === 0 || seconds.length === 0;\n}\n\nexport function isInputValid(\n  hours: string,\n  minutes = '0',\n  seconds = '0',\n  isPM: boolean\n): boolean {\n  return isHourInputValid(hours, isPM)\n    && isMinuteInputValid(minutes)\n    && isSecondInputValid(seconds);\n}\n","import { changeTime } from './timepicker.utils';\nimport {\n  TimeChangeEvent,\n  TimepickerComponentState,\n  TimepickerControls\n} from './timepicker.models';\n\nexport function canChangeValue(\n  state: TimepickerComponentState,\n  event?: TimeChangeEvent\n): boolean {\n  if (state.readonlyInput || state.disabled) {\n    return false;\n  }\n\n  if (event) {\n    if (event.source === 'wheel' && !state.mousewheel) {\n      return false;\n    }\n\n    if (event.source === 'key' && !state.arrowkeys) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport function canChangeHours(\n  event: TimeChangeEvent,\n  controls: TimepickerControls\n): boolean {\n  if (!event.step) {\n    return false;\n  }\n\n  if (event.step > 0 && !controls.canIncrementHours) {\n    return false;\n  }\n\n  if (event.step < 0 && !controls.canDecrementHours) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function canChangeMinutes(\n  event: TimeChangeEvent,\n  controls: TimepickerControls\n): boolean {\n  if (!event.step) {\n    return false;\n  }\n  if (event.step > 0 && !controls.canIncrementMinutes) {\n    return false;\n  }\n  if (event.step < 0 && !controls.canDecrementMinutes) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function canChangeSeconds(\n  event: TimeChangeEvent,\n  controls: TimepickerControls\n): boolean {\n  if (!event.step) {\n    return false;\n  }\n  if (event.step > 0 && !controls.canIncrementSeconds) {\n    return false;\n  }\n  if (event.step < 0 && !controls.canDecrementSeconds) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function getControlsValue(\n  state: TimepickerComponentState\n): TimepickerComponentState {\n  const {\n    hourStep,\n    minuteStep,\n    secondsStep,\n    readonlyInput,\n    disabled,\n    mousewheel,\n    arrowkeys,\n    showSpinners,\n    showMeridian,\n    showSeconds,\n    meridians,\n    min,\n    max\n  } = state;\n\n  return {\n    hourStep,\n    minuteStep,\n    secondsStep,\n    readonlyInput,\n    disabled,\n    mousewheel,\n    arrowkeys,\n    showSpinners,\n    showMeridian,\n    showSeconds,\n    meridians,\n    min,\n    max\n  };\n}\n\nexport function timepickerControls(value: Date | undefined, state: TimepickerComponentState): TimepickerControls {\n  const hoursPerDay = 24;\n  const hoursPerDayHalf = 12;\n  const { min, max, hourStep, minuteStep, secondsStep, showSeconds } = state;\n  const res: TimepickerControls = {\n    canIncrementHours: true,\n    canIncrementMinutes: true,\n    canIncrementSeconds: true,\n\n    canDecrementHours: true,\n    canDecrementMinutes: true,\n    canDecrementSeconds: true,\n\n    canToggleMeridian: true\n  };\n\n  if (!value) {\n    return res;\n  }\n\n  // compare dates\n  if (max) {\n    const _newHour = changeTime(value, { hour: hourStep });\n    res.canIncrementHours = max > _newHour && (value.getHours() + hourStep) < hoursPerDay;\n\n    if (!res.canIncrementHours) {\n      const _newMinutes = changeTime(value, { minute: minuteStep });\n      res.canIncrementMinutes = showSeconds\n        ? max > _newMinutes\n        : max >= _newMinutes;\n    }\n\n    if (!res.canIncrementMinutes) {\n      const _newSeconds = changeTime(value, { seconds: secondsStep });\n      res.canIncrementSeconds = max >= _newSeconds;\n    }\n\n    if (value.getHours() < hoursPerDayHalf) {\n      res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;\n    }\n  }\n\n  if (min) {\n    const _newHour = changeTime(value, { hour: -hourStep });\n    res.canDecrementHours = min < _newHour;\n\n    if (!res.canDecrementHours) {\n      const _newMinutes = changeTime(value, { minute: -minuteStep });\n      res.canDecrementMinutes = showSeconds\n        ? min < _newMinutes\n        : min <= _newMinutes;\n    }\n\n    if (!res.canDecrementMinutes) {\n      const _newSeconds = changeTime(value, { seconds: -secondsStep });\n      res.canDecrementSeconds = min <= _newSeconds;\n    }\n\n    if (value.getHours() >= hoursPerDayHalf) {\n      res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;\n    }\n  }\n\n  return res;\n}\n","import { Injectable } from '@angular/core';\n\n/** Provides default configuration values for timepicker */\n@Injectable({\n  providedIn: 'root'\n})\nexport class TimepickerConfig {\n  /** hours change step */\n  hourStep = 1;\n  /** minutes change step */\n  minuteStep = 5;\n  /** seconds changes step */\n  secondsStep = 10;\n  /** if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM */\n  showMeridian = true;\n  /** meridian labels based on locale */\n  meridians = ['AM', 'PM'];\n  /** if true hours and minutes fields will be readonly */\n  readonlyInput = false;\n  /** if true hours and minutes fields will be disabled */\n  disabled = false;\n  /** if true emptyTime is not marked as invalid */\n  allowEmptyTime = false;\n  /** if true scroll inside hours and minutes inputs will change time */\n  mousewheel = true;\n  /** if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard */\n  arrowkeys = true;\n  /** if true spinner arrows above and below the inputs will be shown */\n  showSpinners = true;\n  /** show seconds in timepicker */\n  showSeconds = false;\n  /** show minutes in timepicker */\n  showMinutes = true;\n  /** minimum time user can select */\n  min?: Date;\n  /** maximum time user can select */\n  max?: Date;\n  /** placeholder for hours field in timepicker */\n  hoursPlaceholder = 'HH';\n  /** placeholder for minutes field in timepicker */\n  minutesPlaceholder = 'MM';\n  /** placeholder for seconds field in timepicker */\n  secondsPlaceholder = 'SS';\n  /** hours aria label */\n  ariaLabelHours = 'hours';\n  /** minutes aria label */\n  ariaLabelMinutes = 'minutes';\n  /** seconds aria label */\n  ariaLabelSeconds = 'seconds';\n}\n","import { Action } from 'ngx-bootstrap/mini-ngrx';\nimport {\n  canChangeHours,\n  canChangeMinutes,\n  canChangeSeconds,\n  canChangeValue,\n  timepickerControls\n} from '../timepicker-controls.util';\nimport { TimepickerConfig } from '../timepicker.config';\nimport {\n  TimepickerComponentState,\n  TimepickerControls\n} from '../timepicker.models';\nimport { changeTime, setTime, isValidLimit } from '../timepicker.utils';\nimport { TimepickerActions } from './timepicker.actions';\n\nexport interface TimepickerState {\n  value?: Date;\n  config: TimepickerComponentState;\n  controls: TimepickerControls;\n}\n\nexport const initialState: TimepickerState = {\n  value: void 0,\n  config: new TimepickerConfig(),\n  controls: {\n    canIncrementHours: true,\n    canIncrementMinutes: true,\n    canIncrementSeconds: true,\n\n    canDecrementHours: true,\n    canDecrementMinutes: true,\n    canDecrementSeconds: true,\n\n    canToggleMeridian: true\n  }\n};\n\nexport function timepickerReducer(state = initialState, action: Action) {\n  switch (action.type) {\n    case TimepickerActions.WRITE_VALUE: {\n      return Object.assign({}, state, { value: action.payload });\n    }\n\n    case TimepickerActions.CHANGE_HOURS: {\n      if (\n        !canChangeValue(state.config, action.payload) ||\n        !canChangeHours(action.payload, state.controls)\n      ) {\n        return state;\n      }\n\n      const _newTime = changeTime(state.value, { hour: action.payload.step });\n\n      if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n          return state;\n      }\n\n      return Object.assign({}, state, { value: _newTime });\n    }\n\n    case TimepickerActions.CHANGE_MINUTES: {\n      if (\n        !canChangeValue(state.config, action.payload) ||\n        !canChangeMinutes(action.payload, state.controls)\n      ) {\n        return state;\n      }\n\n      const _newTime = changeTime(state.value, { minute: action.payload.step });\n\n      if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n        return state;\n      }\n\n      return Object.assign({}, state, { value: _newTime });\n    }\n\n    case TimepickerActions.CHANGE_SECONDS: {\n      if (\n        !canChangeValue(state.config, action.payload) ||\n        !canChangeSeconds(action.payload, state.controls)\n      ) {\n        return state;\n      }\n\n      const _newTime = changeTime(state.value, {\n        seconds: action.payload.step\n      });\n\n      if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n        return state;\n      }\n\n      return Object.assign({}, state, { value: _newTime });\n    }\n\n    case TimepickerActions.SET_TIME_UNIT: {\n      if (!canChangeValue(state.config)) {\n        return state;\n      }\n\n      const _newTime = setTime(state.value, action.payload);\n\n      return Object.assign({}, state, { value: _newTime });\n    }\n\n    case TimepickerActions.UPDATE_CONTROLS: {\n      const _newControlsState = timepickerControls(state.value, action.payload);\n      const _newState: TimepickerState = {\n        value: state.value,\n        config: action.payload,\n        controls: _newControlsState\n      };\n\n      if (state.config.showMeridian !== _newState.config.showMeridian) {\n        if (state.value) {\n          _newState.value = new Date(state.value);\n        }\n      }\n\n      return Object.assign({}, state, _newState);\n    }\n\n    default:\n      return state;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  timepickerReducer,\n  TimepickerState,\n  initialState\n} from './timepicker.reducer';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Action, MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';\n\n@Injectable({providedIn: 'platform'})\nexport class TimepickerStore extends MiniStore<TimepickerState> {\n  constructor() {\n    const _dispatcher = new BehaviorSubject<Action>({\n      type: '[mini-ngrx] dispatcher init'\n    });\n    const state = new MiniState<TimepickerState>(\n      initialState,\n      _dispatcher,\n      timepickerReducer\n    );\n    super(_dispatcher, timepickerReducer, state);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  OnChanges,\n  OnDestroy,\n  ViewEncapsulation,\n  input,\n  output\n} from '@angular/core';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\n\nimport { ControlValueAccessorModel } from './models';\n\nimport { TimepickerActions } from './reducer/timepicker.actions';\nimport { TimepickerStore } from './reducer/timepicker.store';\nimport { getControlsValue } from './timepicker-controls.util';\nimport { TimepickerConfig } from './timepicker.config';\n\nimport { TimeChangeSource, TimepickerComponentState, TimepickerControls } from './timepicker.models';\n\nimport {\n  isHourInputValid,\n  isInputLimitValid,\n  isInputValid,\n  isMinuteInputValid,\n  isOneOfDatesEmpty,\n  isSecondInputValid,\n  isValidDate,\n  padNumber,\n  parseTime\n} from './timepicker.utils';\n\n\nexport const TIMEPICKER_CONTROL_VALUE_ACCESSOR: ControlValueAccessorModel = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => TimepickerComponent),\n  multi: true\n};\n\n@Component({\n    selector: 'timepicker',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore, TimepickerActions],\n    templateUrl: './timepicker.component.html',\n    styles: [`\n    .bs-chevron {\n      border-style: solid;\n      display: block;\n      width: 9px;\n      height: 9px;\n      position: relative;\n      border-width: 3px 0px 0 3px;\n    }\n\n    .bs-chevron-up {\n      -webkit-transform: rotate(45deg);\n      transform: rotate(45deg);\n      top: 2px;\n    }\n\n    .bs-chevron-down {\n      -webkit-transform: rotate(-135deg);\n      transform: rotate(-135deg);\n      top: -2px;\n    }\n\n    .bs-timepicker-field {\n      width: 65px;\n      padding: .375rem .55rem;\n    }\n  `],\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: []\n})\nexport class TimepickerComponent\n  implements ControlValueAccessor,\n    TimepickerControls,\n    OnChanges,\n    OnDestroy {\n  /** hours change step */\n  hourStep = input<number>(this._config.hourStep);\n  /** minutes change step */\n  minuteStep = input<number>(this._config.minuteStep);\n  /** seconds change step */\n  secondsStep = input<number>(this._config.secondsStep);\n  /** if true hours and minutes fields will be readonly */\n  readonlyInput = input<boolean>(this._config.readonlyInput);\n  /** if true hours and minutes fields will be disabled */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  disabledInput = input<boolean>(this._config.disabled, { alias: 'disabled' });\n  /** if true scroll inside hours and minutes inputs will change time */\n  mousewheel = input<boolean>(this._config.mousewheel);\n  /** if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard */\n  arrowkeys = input<boolean>(this._config.arrowkeys);\n  /** if true spinner arrows above and below the inputs will be shown */\n  showSpinners = input<boolean>(this._config.showSpinners);\n  /** if true meridian button will be shown */\n  showMeridian = input<boolean>(this._config.showMeridian);\n  /** show minutes in timepicker */\n  showMinutes = input<boolean>(this._config.showMinutes);\n  /** show seconds in timepicker */\n  showSeconds = input<boolean>(this._config.showSeconds);\n  /** meridian labels based on locale */\n  meridians = input<string[]>(this._config.meridians);\n  /** minimum time user can select */\n  min = input<Date | undefined>(this._config.min);\n  /** maximum time user can select */\n  max = input<Date | undefined>(this._config.max);\n  /** placeholder for hours field in timepicker */\n  hoursPlaceholder = input<string>(this._config.hoursPlaceholder);\n  /** placeholder for minutes field in timepicker */\n  minutesPlaceholder = input<string>(this._config.minutesPlaceholder);\n  /** placeholder for seconds field in timepicker */\n  secondsPlaceholder = input<string>(this._config.secondsPlaceholder);\n  /** emits true if value is a valid date */\n  isValid = output<boolean>();\n  /** emits value of meridian*/\n  meridianChange = output<string>();\n  // ui variables\n  hours = '';\n  minutes = '';\n  seconds = '';\n  meridian = '';\n  disabled = false;\n  // min\\max validation for input fields\n  invalidHours = false;\n  invalidMinutes = false;\n  invalidSeconds = false;\n  // aria-label variables\n  labelHours = 'hours';\n  labelMinutes = 'minutes';\n  labelSeconds = 'seconds';\n  // time picker controls state\n  canIncrementHours = true;\n  canIncrementMinutes = true;\n  canIncrementSeconds = true;\n  canDecrementHours = true;\n  canDecrementMinutes = true;\n  canDecrementSeconds = true;\n  canToggleMeridian = true;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onChange = Function.prototype;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onTouched = Function.prototype;\n\n  config: TimepickerConfig;\n\n  // Helper method to convert input signals to TimepickerComponentState\n  private getComponentState(): TimepickerComponentState {\n    return {\n      hourStep: this.hourStep(),\n      minuteStep: this.minuteStep(),\n      secondsStep: this.secondsStep(),\n      readonlyInput: this.readonlyInput(),\n      disabled: this.disabled,\n      mousewheel: this.mousewheel(),\n      arrowkeys: this.arrowkeys(),\n      showSpinners: this.showSpinners(),\n      showMeridian: this.showMeridian(),\n      showSeconds: this.showSeconds(),\n      meridians: this.meridians(),\n      min: this.min(),\n      max: this.max()\n    };\n  }\n\n  // control value accessor methods\n  timepickerSub?: Subscription;\n  constructor(\n    private _config: TimepickerConfig,\n    private _cd: ChangeDetectorRef,\n    private _store: TimepickerStore,\n    private _timepickerActions: TimepickerActions\n  ) {\n    this.config = _config;\n    this.timepickerSub = _store.select(state => state.value)\n      .subscribe((value: Date | undefined) => {\n        // update UI values if date changed\n        this._renderTime(value);\n        this.onChange(value);\n\n        this._store.dispatch(\n          this._timepickerActions.updateControls(getControlsValue(this.getComponentState()))\n        );\n      });\n\n    _store.select(state => state.controls)\n      .subscribe((controlsState: TimepickerControls) => {\n        const isTimepickerInputValid = isInputValid(this.hours, this.minutes, this.seconds, this.isPM());\n        const isValidResult = this.config.allowEmptyTime?\n          this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n          : isTimepickerInputValid;\n        this.isValid.emit(isValidResult);\n        Object.assign(this, controlsState);\n        _cd.markForCheck();\n      });\n  }\n\n  /** @deprecated - please use `isEditable` instead */\n  get isSpinnersVisible(): boolean {\n    return this.showSpinners() && !this.readonlyInput();\n  }\n\n  get isEditable(): boolean {\n    return !(this.readonlyInput() || this.disabled);\n  }\n\n  resetValidation(): void {\n    this.invalidHours = false;\n    this.invalidMinutes = false;\n    this.invalidSeconds = false;\n  }\n\n  isPM(): boolean {\n    return this.showMeridian() && this.meridian === this.meridians()[1];\n  }\n\n  prevDef($event: Event) {\n    $event.preventDefault();\n  }\n\n  wheelSign($event: WheelEventInit): number {\n    return Math.sign($event.deltaY || 0) * -1;\n  }\n\n  ngOnChanges(): void {\n    this._store.dispatch(\n      this._timepickerActions.updateControls(getControlsValue(this.getComponentState()))\n    );\n  }\n\n  changeHours(step: number, source: TimeChangeSource = ''): void {\n    this.resetValidation();\n    this._store.dispatch(this._timepickerActions.changeHours({ step, source }));\n  }\n\n  changeMinutes(step: number, source: TimeChangeSource = ''): void {\n    this.resetValidation();\n    this._store.dispatch(\n      this._timepickerActions.changeMinutes({ step, source })\n    );\n  }\n\n  changeSeconds(step: number, source: TimeChangeSource = ''): void {\n    this.resetValidation();\n    this._store.dispatch(\n      this._timepickerActions.changeSeconds({ step, source })\n    );\n  }\n\n  updateHours(target?: Partial<EventTarget> | null): void {\n    this.resetValidation();\n    this.hours = (target as HTMLInputElement).value;\n\n    const isTimepickerInputValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();\n    const isValidResult = this.config.allowEmptyTime ?\n      this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n      : isTimepickerInputValid;\n\n    if (!isValidResult) {\n      this.invalidHours = true;\n      this.isValid.emit(false);\n      this.onChange(null);\n\n      return;\n    }\n\n    this._updateTime();\n  }\n\n  updateMinutes(target: Partial<EventTarget> | null) {\n    this.resetValidation();\n    this.minutes = (target as HTMLInputElement).value;\n\n    const isTimepickerInputValid = isMinuteInputValid(this.minutes) && this.isValidLimit();\n    const isValidResult = this.config.allowEmptyTime ?\n      this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n      : isTimepickerInputValid;\n\n    if (!isValidResult) {\n      this.invalidMinutes = true;\n      this.isValid.emit(false);\n      this.onChange(null);\n\n      return;\n    }\n\n    this._updateTime();\n  }\n\n  updateSeconds(target: Partial<EventTarget> | null) {\n    this.resetValidation();\n    this.seconds = (target as HTMLInputElement).value;\n\n    const isTimepickerInputValid = isSecondInputValid(this.seconds) && this.isValidLimit();\n    const isValidResult = this.config.allowEmptyTime ?\n      this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n      : isTimepickerInputValid;\n\n    if (!isValidResult) {\n      this.invalidSeconds = true;\n      this.isValid.emit(false);\n      this.onChange(null);\n\n      return;\n    }\n\n    this._updateTime();\n  }\n\n  isValidLimit(): boolean {\n    return isInputLimitValid({\n      hour: this.hours,\n      minute: this.minutes,\n      seconds: this.seconds,\n      isPM: this.isPM()\n    }, this.max(), this.min());\n  }\n\n  isOneOfDatesIsEmpty(): boolean {\n    return isOneOfDatesEmpty(\n      this.hours,\n      this.minutes,\n      this.seconds);\n  }\n\n  _updateTime() {\n    const _seconds = this.showSeconds() ? this.seconds : void 0;\n    const _minutes = this.showMinutes() ? this.minutes : void 0;\n    const isTimepickerInputValid = isInputValid(this.hours, _minutes, _seconds, this.isPM());\n    const isValidResult = this.config.allowEmptyTime ?\n      this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n      : isTimepickerInputValid;\n    if (!isValidResult) {\n      this.isValid.emit(false);\n      this.onChange(null);\n\n      return;\n    }\n\n    this._store.dispatch(\n      this._timepickerActions.setTime({\n        hour: this.hours,\n        minute: this.minutes,\n        seconds: this.seconds,\n        isPM: this.isPM()\n      })\n    );\n  }\n\n  toggleMeridian(): void {\n    if (!this.showMeridian() || !this.isEditable) {\n      return;\n    }\n\n    const _hoursPerDayHalf = 12;\n    this._store.dispatch(\n      this._timepickerActions.changeHours({\n        step: _hoursPerDayHalf,\n        source: ''\n      })\n    );\n  }\n\n  /**\n   * Write a new value to the element.\n   */\n  writeValue(obj?: string | Date): void {\n    if (isValidDate(obj)) {\n      this.resetValidation();\n      this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));\n    } else if (obj == null) {\n      this._store.dispatch(this._timepickerActions.writeValue());\n    }\n  }\n\n  /**\n   * Set the function to be called when the control receives a change event.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  registerOnChange(fn: (_: any) => void): void {\n    this.onChange = fn;\n  }\n\n  /**\n   * Set the function to be called when the control receives a touch event.\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * This function is called when the control status changes to or from \"disabled\".\n   * Depending on the value, it will enable or disable the appropriate DOM element.\n   *\n   * @param isDisabled\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._cd.markForCheck();\n  }\n\n  ngOnDestroy(): void {\n    this.timepickerSub?.unsubscribe();\n  }\n\n  private _renderTime(value?: string | Date): void {\n    if (!value || !isValidDate(value)) {\n      this.hours = '';\n      this.minutes = '';\n      this.seconds = '';\n      this.meridian = this.meridians()[0];\n      this.meridianChange.emit(this.meridian);\n      return;\n    }\n\n    const _value = parseTime(value);\n    if (!_value) {\n      return;\n    }\n\n    const _hoursPerDayHalf = 12;\n    let _hours = _value.getHours();\n\n    if (this.showMeridian()) {\n      this.meridian = this.meridians()[_hours >= _hoursPerDayHalf ? 1 : 0];\n      this.meridianChange.emit(this.meridian);\n      _hours = _hours % _hoursPerDayHalf;\n      // should be 12 PM, not 00 PM\n      if (_hours === 0) {\n        _hours = _hoursPerDayHalf;\n      }\n    }\n\n    this.hours = padNumber(_hours);\n    this.minutes = padNumber(_value.getMinutes());\n    this.seconds = padNumber(_value.getUTCSeconds());\n  }\n}\n","<table>\n  <tbody>\n  <tr class=\"text-center\" [hidden]=\"!showSpinners()\">\n    <!-- increment hours button-->\n    <td>\n      <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\"\n         (click)=\"changeHours(hourStep())\"\n         href=\"javascript:void(0);\"\n      ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n    </td>\n    <!-- divider -->\n    @if (showMinutes()) {\n      <td>&nbsp;&nbsp;&nbsp;</td>\n    }\n    <!-- increment minutes button -->\n    @if (showMinutes()) {\n      <td>\n        <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\"\n           (click)=\"changeMinutes(minuteStep())\"\n           href=\"javascript:void(0);\"\n        ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n      </td>\n    }\n    <!-- divider -->\n    @if (showSeconds()) {\n      <td>&nbsp;</td>\n    }\n    <!-- increment seconds button -->\n    @if (showSeconds()) {\n      <td>\n        <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\"\n           (click)=\"changeSeconds(secondsStep())\"\n           href=\"javascript:void(0);\"\n        >\n          <span class=\"bs-chevron bs-chevron-up\"></span>\n        </a>\n      </td>\n    }\n    <!-- space between -->\n    @if (showMeridian()) {\n      <td>&nbsp;&nbsp;&nbsp;</td>\n    }\n    <!-- meridian placeholder-->\n    @if (showMeridian()) {\n      <td></td>\n    }\n  </tr>\n  <tr>\n    <!-- hours -->\n    <td class=\"form-group mb-3\" [class.has-error]=\"invalidHours\">\n      <input type=\"text\" [class.is-invalid]=\"invalidHours\"\n             class=\"form-control text-center bs-timepicker-field\"\n             [placeholder]=\"hoursPlaceholder()\"\n             maxlength=\"2\"\n             [readonly]=\"readonlyInput()\"\n             [disabled]=\"disabled\"\n             [value]=\"hours\"\n             (wheel)=\"prevDef($event);changeHours(hourStep() * wheelSign($event), 'wheel')\"\n             (keydown.ArrowUp)=\"changeHours(hourStep(), 'key')\"\n             (keydown.ArrowDown)=\"changeHours(-hourStep(), 'key')\"\n             (change)=\"updateHours($event.target)\" [attr.aria-label]=\"labelHours\"></td>\n    <!-- divider -->\n    @if (showMinutes()) {\n      <td>&nbsp;:&nbsp;</td>\n    }\n    <!-- minutes -->\n    @if (showMinutes()) {\n      <td class=\"form-group mb-3\" [class.has-error]=\"invalidMinutes\">\n        <input type=\"text\" [class.is-invalid]=\"invalidMinutes\"\n               class=\"form-control text-center bs-timepicker-field\"\n               [placeholder]=\"minutesPlaceholder()\"\n               maxlength=\"2\"\n               [readonly]=\"readonlyInput()\"\n               [disabled]=\"disabled\"\n               [value]=\"minutes\"\n               (wheel)=\"prevDef($event);changeMinutes(minuteStep() * wheelSign($event), 'wheel')\"\n               (keydown.ArrowUp)=\"changeMinutes(minuteStep(), 'key')\"\n               (keydown.ArrowDown)=\"changeMinutes(-minuteStep(), 'key')\"\n               (change)=\"updateMinutes($event.target)\" [attr.aria-label]=\"labelMinutes\">\n      </td>\n    }\n    <!-- divider -->\n    @if (showSeconds()) {\n      <td>&nbsp;:&nbsp;</td>\n    }\n    <!-- seconds -->\n    @if (showSeconds()) {\n      <td class=\"form-group mb-3\" [class.has-error]=\"invalidSeconds\">\n        <input type=\"text\" [class.is-invalid]=\"invalidSeconds\"\n               class=\"form-control text-center bs-timepicker-field\"\n               [placeholder]=\"secondsPlaceholder()\"\n               maxlength=\"2\"\n               [readonly]=\"readonlyInput()\"\n               [disabled]=\"disabled\"\n               [value]=\"seconds\"\n               (wheel)=\"prevDef($event);changeSeconds(secondsStep() * wheelSign($event), 'wheel')\"\n               (keydown.ArrowUp)=\"changeSeconds(secondsStep(), 'key')\"\n               (keydown.ArrowDown)=\"changeSeconds(-secondsStep(), 'key')\"\n               (change)=\"updateSeconds($event.target)\" [attr.aria-label]=\"labelSeconds\">\n      </td>\n    }\n    <!-- space between -->\n    @if (showMeridian()) {\n      <td>&nbsp;&nbsp;&nbsp;</td>\n    }\n    <!-- meridian -->\n    @if (showMeridian()) {\n      <td>\n        <button type=\"button\" class=\"btn btn-default text-center\"\n                [disabled]=\"!isEditable || !canToggleMeridian\"\n                [class.disabled]=\"!isEditable || !canToggleMeridian\"\n                (click)=\"toggleMeridian()\"\n        >{{ meridian }}\n        </button>\n      </td>\n    }\n  </tr>\n  <tr class=\"text-center\" [hidden]=\"!showSpinners()\">\n    <!-- decrement hours button-->\n    <td>\n      <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\"\n         (click)=\"changeHours(-hourStep())\"\n         href=\"javascript:void(0);\"\n      >\n        <span class=\"bs-chevron bs-chevron-down\"></span>\n      </a>\n    </td>\n    <!-- divider -->\n    @if (showMinutes()) {\n      <td>&nbsp;&nbsp;&nbsp;</td>\n    }\n    <!-- decrement minutes button-->\n    @if (showMinutes()) {\n      <td>\n        <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\"\n           (click)=\"changeMinutes(-minuteStep())\"\n           href=\"javascript:void(0);\"\n        >\n          <span class=\"bs-chevron bs-chevron-down\"></span>\n        </a>\n      </td>\n    }\n    <!-- divider -->\n    @if (showSeconds()) {\n      <td>&nbsp;</td>\n    }\n    <!-- decrement seconds button-->\n    @if (showSeconds()) {\n      <td>\n        <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\"\n           (click)=\"changeSeconds(-secondsStep())\"\n           href=\"javascript:void(0);\"\n        >\n          <span class=\"bs-chevron bs-chevron-down\"></span>\n        </a>\n      </td>\n    }\n    <!-- space between -->\n    @if (showMeridian()) {\n      <td>&nbsp;&nbsp;&nbsp;</td>\n    }\n    <!-- meridian placeholder-->\n    @if (showMeridian()) {\n      <td></td>\n    }\n  </tr>\n  </tbody>\n</table>\n","import { NgModule } from '@angular/core';\n\nimport { TimepickerComponent } from './timepicker.component';\n\n@NgModule({\n    imports: [TimepickerComponent],\n    exports: [TimepickerComponent],\n})\nexport class TimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TimepickerConfig","i2.TimepickerStore","i3.TimepickerActions"],"mappings":"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"}