{"version":3,"file":"philipab-angular-bootstrap-datetimepicker.mjs","sources":["../../src/lib/core/dl-date-adapter.ts","../../src/lib/core/dl-date-adapter-moment.ts","../../src/lib/core/dl-date-adapter-native.ts","../../src/lib/core/dl-date-adapter-number.ts","../../src/lib/core/dl-date-time-string-format.ts","../../src/lib/core/dl-date-adapter-string.ts","../../src/lib/core/dl-date-time-core.module.ts","../../src/lib/core/public-api.ts","../../src/lib/dl-date-time-input/dl-date-time-input-change.ts","../../src/lib/dl-date-time-input/dl-date-time-input.directive.ts","../../src/lib/dl-date-time-input/dl-date-time-input.module.ts","../../src/lib/dl-date-time-input/public-api.ts","../../src/lib/dl-date-time-picker/dl-date-time-picker-change.ts","../../src/lib/dl-date-time-picker/dl-date-time-picker-model.ts","../../src/lib/dl-date-time-picker/dl-model-provider-year.ts","../../src/lib/dl-date-time-picker/dl-model-provider-month.ts","../../src/lib/dl-date-time-picker/dl-model-provider-day.ts","../../src/lib/dl-date-time-picker/dl-model-provider-hour.ts","../../src/lib/dl-date-time-picker/dl-model-provider-minute.ts","../../src/lib/dl-date-time-picker/dl-date-time-picker.component.ts","../../src/lib/dl-date-time-picker/dl-date-time-picker.component.html","../../src/lib/dl-date-time-picker/dl-date-time-picker.module.ts","../../src/lib/dl-date-time-picker/dl-model-provider.ts","../../src/lib/dl-date-time-picker/public-api.ts","../../src/lib/public-api.ts","../../src/lib/index.ts","../../src/lib/philipab-angular-bootstrap-datetimepicker.ts"],"sourcesContent":["/**\r\n * Determines the model type of the Date/Time picker another type.\r\n */\r\nexport abstract class DlDateAdapter<D> {\r\n\r\n  /**\r\n   * Create a new instance of a `D` type from milliseconds.\r\n   * @param milliseconds\r\n   *  a moment in time value as milliseconds (local time zone)\r\n   * @returns\r\n   *  an instance of `D` for the specified moment in time.\r\n   */\r\n  abstract fromMilliseconds(milliseconds: number): D;\r\n\r\n  /**\r\n   * Returns a moment in time value as milliseconds (local time zone).\r\n   * @param value\r\n   *  a moment in time value as `D` or `null`.\r\n   * @returns\r\n   *  a moment in` for the specified value or `null`\r\n   */\r\n  abstract toMilliseconds(value: D | null): number | null;\r\n}\r\n","import moment from 'moment';\r\nimport {Moment} from 'moment';\r\nimport {DlDateAdapter} from './dl-date-adapter';\r\n\r\n/**\r\n * Adapts `moment` to be usable as a date by date/time components that work with dates.\r\n **/\r\nexport class DlDateAdapterMoment extends DlDateAdapter<Moment> {\r\n\r\n  /**\r\n   * Create a new instance of a `moment` type from milliseconds.\r\n   * @param milliseconds\r\n   *  a time value as milliseconds (local time zone)\r\n   * @returns\r\n   *  an instance of `moment` for the specified moment in time.\r\n   */\r\n  fromMilliseconds(milliseconds: number): Moment {\r\n    return moment(milliseconds);\r\n  }\r\n\r\n  /**\r\n   * Returns a moment in time value as milliseconds (local time zone).\r\n   * @param value\r\n   *  a moment or `null`.\r\n   * @returns\r\n   *  a `moment.valueOf()` result for the specified `moment` or `null`\r\n   */\r\n  toMilliseconds(value: Moment | null): number | null {\r\n    return (value) ? value.valueOf() : null;\r\n  }\r\n}\r\n","import {DlDateAdapter} from './dl-date-adapter';\r\n\r\n/**\r\n * Adapts `Date` to be usable as a date by date/time components that work with dates.\r\n **/\r\nexport class DlDateAdapterNative extends DlDateAdapter<Date> {\r\n  /**\r\n   * Create a new instance of a `moment` type from milliseconds.\r\n   * @param milliseconds\r\n   *  a time value as milliseconds (local time zone)\r\n   * @returns\r\n   *  an instance of `moment` for the specified moment in time.\r\n   */\r\n  fromMilliseconds(milliseconds: number): Date {\r\n    return new Date(milliseconds);\r\n  }\r\n\r\n\r\n  /**\r\n   * Returns a moment in time value as milliseconds (local time zone).\r\n   * @param value\r\n   *  a Date or null.\r\n   * @returns\r\n   *  a `value.getTime()` result for the specified `Date` or `null`.\r\n   */\r\n  toMilliseconds(value: Date | null): number | null {\r\n    return (value) ? value.getTime() : null;\r\n  }\r\n}\r\n","import {DlDateAdapter} from './dl-date-adapter';\r\n\r\n/**\r\n * Adapts `number` to be usable as a date by date/time components that work with dates.\r\n * No op adapter.\r\n **/\r\nexport class DlDateAdapterNumber extends DlDateAdapter<number> {\r\n  /**\r\n   * Returns the specified number.\r\n   * @param milliseconds\r\n   *  a moment time time.\r\n   * @returns\r\n   *  the specified moment in time.\r\n   */\r\n  fromMilliseconds(milliseconds: number): number {\r\n    return milliseconds;\r\n  }\r\n\r\n  /**\r\n   * Returns the specified number.\r\n   * @param value\r\n   *  a moment time time or `null`\r\n   * @returns\r\n   *  the specified moment in time or `null`\r\n   */\r\n  toMilliseconds(value: number | null): number | null {\r\n    return value;\r\n  }\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nimport * as moment from 'moment';\r\n\r\n/**\r\n * InjectionToken for string dates that can be used to override default model format.\r\n **/\r\nexport const DL_DATE_TIME_DISPLAY_FORMAT = new InjectionToken<string>('DL_DATE_TIME_DISPLAY_FORMAT');\r\n\r\n/**\r\n * `Moment`'s long date format `lll` used as the default output format\r\n * for string date's\r\n */\r\nexport const DL_DATE_TIME_DISPLAY_FORMAT_DEFAULT = moment.localeData().longDateFormat('lll');\r\n\r\n/**\r\n * InjectionToken for string dates that can be used to override default input formats.\r\n **/\r\nexport const DL_DATE_TIME_INPUT_FORMATS = new InjectionToken<string[]>('DL_DATE__TIME_INPUT_FORMATS');\r\n\r\n/**\r\n *  Default input format's used by `DlDateAdapterString`\r\n */\r\nexport const DL_DATE_TIME_INPUT_FORMATS_DEFAULT = [\r\n  'YYYY-MM-DDTHH:mm',\r\n  'YYYY-MM-DDTHH:mm:ss',\r\n  'YYYY-MM-DDTHH:mm:ss.SSS',\r\n  'YYYY-MM-DD',\r\n  'M/D/YYYY h:m:s A',\r\n  'M/D/YYYY h:m A',\r\n  'M/D/YYYY h:m A',\r\n  'M/D/YYYY hh:mm A',\r\n  'M/D/YYYY',\r\n  'M/D/YY h:m:s A',\r\n  'M/D/YY h:m A',\r\n  'M/D/YY h A',\r\n  'M/D/YY',\r\n  DL_DATE_TIME_DISPLAY_FORMAT_DEFAULT,\r\n  moment.ISO_8601,\r\n];\r\n\r\n/**\r\n * InjectionToken for string dates that can be used to override default model format.\r\n **/\r\nexport const DL_DATE_TIME_MODEL_FORMAT = new InjectionToken<string>('DL_DATE_TIME_MODEL_FORMAT');\r\n\r\n/**\r\n *  Default model format (ISO 8601)`\r\n */\r\nexport const DL_DATE_TIME_MODEL_FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ss.SSSZ';\r\n","import {Inject, Injectable} from '@angular/core';\r\nimport moment from 'moment';\r\nimport {DlDateAdapter} from './dl-date-adapter';\r\nimport {DL_DATE_TIME_INPUT_FORMATS, DL_DATE_TIME_MODEL_FORMAT} from './dl-date-time-string-format';\r\n\r\n/**\r\n * Adapts `string` to be usable as a date by date/time components that work with dates.\r\n **/\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DlDateAdapterString extends DlDateAdapter<string> {\r\n\r\n  private readonly inputFormats: string[];\r\n  private readonly modelFormat: string;\r\n\r\n  /**\r\n   *  Constructs a new instance of this class.\r\n   *\r\n   * @param inputFormats\r\n   *  see {@link DL_DATE_TIME_INPUT_FORMATS}\r\n   * @param modelFormat\r\n   *  see {@link DL_DATE_TIME_MODEL_FORMAT}\r\n   */\r\n  constructor(@Inject(DL_DATE_TIME_INPUT_FORMATS) inputFormats: string[],\r\n              @Inject(DL_DATE_TIME_MODEL_FORMAT) modelFormat: string) {\r\n    super();\r\n    this.inputFormats = inputFormats;\r\n    this.modelFormat = modelFormat;\r\n  }\r\n\r\n  /**\r\n   * Returns the specified number.\r\n   * @param milliseconds\r\n   *  a moment time time.\r\n   * @returns\r\n   *  the specified moment in time.\r\n   */\r\n  fromMilliseconds(milliseconds: number): string {\r\n    return moment(milliseconds).format(this.modelFormat);\r\n  }\r\n\r\n  /**\r\n   * Returns the specified number.\r\n   * @param value\r\n   *  a moment time time or `null`\r\n   * @returns\r\n   *  the milliseconds for the specified value or `null`\r\n   *  `null` is returned when value is not a valid input date string\r\n   */\r\n  toMilliseconds(value: string | null): number | null {\r\n    if (value !== undefined && value !== null) {\r\n      const newMoment = moment(value, this.inputFormats, true);\r\n      return newMoment.isValid() ? newMoment.valueOf() : null;\r\n    }\r\n    return null;\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {DlDateAdapter} from './dl-date-adapter';\r\nimport {DlDateAdapterMoment} from './dl-date-adapter-moment';\r\nimport {DlDateAdapterNative} from './dl-date-adapter-native';\r\nimport {DlDateAdapterNumber} from './dl-date-adapter-number';\r\nimport {DlDateAdapterString} from './dl-date-adapter-string';\r\nimport {\r\n  DL_DATE_TIME_DISPLAY_FORMAT,\r\n  DL_DATE_TIME_DISPLAY_FORMAT_DEFAULT,\r\n  DL_DATE_TIME_INPUT_FORMATS,\r\n  DL_DATE_TIME_INPUT_FORMATS_DEFAULT,\r\n  DL_DATE_TIME_MODEL_FORMAT,\r\n  DL_DATE_TIME_MODEL_FORMAT_DEFAULT\r\n} from './dl-date-time-string-format';\r\n\r\n/**\r\n * Import this module to supply your own `DateAdapter` provider.\r\n * @internal\r\n **/\r\n@NgModule({\r\n  providers: [\r\n    {provide: DL_DATE_TIME_DISPLAY_FORMAT, useValue: DL_DATE_TIME_DISPLAY_FORMAT_DEFAULT},\r\n    {provide: DL_DATE_TIME_INPUT_FORMATS, useValue: DL_DATE_TIME_INPUT_FORMATS_DEFAULT},\r\n    {provide: DL_DATE_TIME_MODEL_FORMAT, useValue: DL_DATE_TIME_MODEL_FORMAT_DEFAULT}\r\n  ]\r\n})\r\nexport class DlDateTimeCoreModule {\r\n}\r\n\r\n/**\r\n * Import this module to store `milliseconds` in the model.\r\n * @internal\r\n */\r\n@NgModule({\r\n  imports: [DlDateTimeCoreModule],\r\n  providers: [\r\n    {provide: DlDateAdapter, useClass: DlDateAdapterNumber}\r\n  ],\r\n  exports: [DlDateTimeCoreModule]\r\n})\r\nexport class DlDateTimeNumberModule {\r\n}\r\n\r\n/**\r\n * Import this module to store a native JavaScript `Date` in the model.\r\n * @internal\r\n */\r\n@NgModule({\r\n  imports: [DlDateTimeCoreModule],\r\n  providers: [\r\n    {provide: DlDateAdapter, useClass: DlDateAdapterNative}\r\n  ],\r\n})\r\nexport class DlDateTimeDateModule {\r\n}\r\n\r\n/**\r\n * Import this module to store a `moment` in the model.\r\n * @internal\r\n */\r\n@NgModule({\r\n  imports: [DlDateTimeCoreModule],\r\n  providers: [\r\n    {provide: DlDateAdapter, useClass: DlDateAdapterMoment}\r\n  ],\r\n})\r\nexport class DlDateTimeMomentModule {\r\n}\r\n\r\n/**\r\n * Import this module to store a `string` in the model.\r\n * @internal\r\n */\r\n@NgModule({\r\n  imports: [DlDateTimeCoreModule],\r\n  providers: [\r\n    {provide: DL_DATE_TIME_INPUT_FORMATS, useValue: DL_DATE_TIME_INPUT_FORMATS_DEFAULT},\r\n    {provide: DL_DATE_TIME_MODEL_FORMAT, useValue: DL_DATE_TIME_DISPLAY_FORMAT_DEFAULT},\r\n    {provide: DlDateAdapter, useClass: DlDateAdapterString}\r\n  ],\r\n})\r\nexport class DlDateTimeStringModule {\r\n}\r\n\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nexport * from './dl-date-adapter';\r\nexport * from './dl-date-adapter-moment';\r\nexport * from './dl-date-adapter-native';\r\nexport * from './dl-date-adapter-number';\r\nexport * from './dl-date-adapter-string';\r\nexport * from './dl-date-time-core.module';\r\nexport * from './dl-date-time-string-format';\r\n\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\n/**\r\n * Emitted when the value of a date/time input changes.\r\n */\r\nexport class DlDateTimeInputChange<D> {\r\n\r\n  /**\r\n   * The new value of the picker.\r\n   */\r\n  private readonly _value: D;\r\n\r\n  /**\r\n   * Constructs a new instance.\r\n   * @param newValue\r\n   *  the new value of the date/time picker.\r\n   */\r\n  constructor(newValue: D) {\r\n    this._value = newValue;\r\n  }\r\n\r\n  /**\r\n   * Get the new value of the date/time picker.\r\n   * @returns the new value or null.\r\n   */\r\n  get value(): D {\r\n    return this._value;\r\n  }\r\n}\r\n","import {Directive, ElementRef, EventEmitter, HostListener, Inject, Input, Output, Renderer2} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator,\r\n  ValidatorFn,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\nimport {DL_DATE_TIME_DISPLAY_FORMAT, DL_DATE_TIME_INPUT_FORMATS, DlDateAdapter} from '../core/public-api';\r\nimport {DlDateTimeInputChange} from './dl-date-time-input-change';\r\n\r\n/**\r\n *  This directive allows the user to enter dates, using the keyboard, into an input box and\r\n *  angular will then store a date value in the model.\r\n *\r\n *  The input format(s), display format, and model format are independent and fully customizable.\r\n */\r\n@Directive({\r\n  selector: 'input[dlDateTimeInput]',\r\n  providers: [\r\n    {provide: NG_VALUE_ACCESSOR, useExisting:  DlDateTimeInputDirective, multi: true},\r\n    {provide: NG_VALIDATORS, useExisting:  DlDateTimeInputDirective, multi: true}\r\n  ]\r\n})\r\nexport class DlDateTimeInputDirective<D> implements ControlValueAccessor, Validator {\r\n\r\n  /* tslint:disable:member-ordering */\r\n  private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n    return (this._inputFilter || (() => true))(this._value) ?\r\n      null : {'dlDateTimeInputFilter': {'value': control.value}};\r\n  }\r\n  private _inputFilter: (value: (D | null)) => boolean = () => true;\r\n  private _isValid = true;\r\n  private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\r\n    return this._isValid ?\r\n      null : {'dlDateTimeInputParse': {'text': this._elementRef.nativeElement.value}};\r\n  }\r\n  private _changed: ((value: D) => void)[] = [];\r\n  private _touched: (() => void)[] = [];\r\n  private _validator = Validators.compose([this._parseValidator, this._filterValidator]);\r\n  private _onValidatorChange: () => void = () => {};\r\n  private _value: D | undefined = undefined;\r\n\r\n  /**\r\n   * Emits when a `change` event when date/time is selected or\r\n   * the value of the date/time picker changes.\r\n   **/\r\n  @Output()\r\n  readonly dateChange = new EventEmitter<DlDateTimeInputChange<D>>();\r\n\r\n  /**\r\n   * Constructs a new instance of this directive.\r\n   * @param _renderer\r\n   *  reference to the renderer.\r\n   * @param _elementRef\r\n   *  reference to this element.\r\n   * @param _dateAdapter\r\n   *  date adapter for the date type in the model.\r\n   * @param _displayFormat\r\n   *  from `DL_DATE_TIME_DISPLAY_FORMAT`, which defines the format to use for a valid date/time value.\r\n   * @param _inputFormats\r\n   *  from `DL_DATE_TIME_INPUT_FORMATS`, which defines the input formats that allowed as valid date/time values.\r\n   *  NB: moment is always in strict parse mode for this directive.\r\n   */\r\n  constructor(\r\n    private _renderer: Renderer2,\r\n    private _elementRef: ElementRef,\r\n    private _dateAdapter: DlDateAdapter<D>,\r\n    @Inject(DL_DATE_TIME_DISPLAY_FORMAT) private readonly _displayFormat: string,\r\n    @Inject(DL_DATE_TIME_INPUT_FORMATS) private readonly _inputFormats: string[]\r\n  ) {}\r\n\r\n  /**\r\n   * Set a function used to determine whether or not the `value` entered by the user is allowed.\r\n   * @param inputFilterFunction\r\n   *   a function that returns `true` if the `value` entered by the user is allowed, otherwise `false`.\r\n   */\r\n  @Input()\r\n  set dlDateTimeInputFilter(inputFilterFunction: (value: D | null) => boolean) {\r\n    this._inputFilter = inputFilterFunction || (() => true);\r\n    this._onValidatorChange();\r\n  }\r\n\r\n  /* tslint:enable:member-ordering */\r\n\r\n  /**\r\n   * Returns `D` value of the date/time input or `undefined` | `null` if no value is set.\r\n   **/\r\n  get value(): D {\r\n    return this._value;\r\n  }\r\n\r\n  /**\r\n   * Set the value of the date/time input to a value of `D` | `undefined` | `null`;\r\n   * @param newValue\r\n   *  the new value of the date/time input\r\n   */\r\n\r\n  set value(newValue: D | null | undefined) {\r\n    if (newValue !== this._value) {\r\n      this._value = newValue;\r\n      this._changed.forEach(onChanged => onChanged(this._value));\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Emit a `change` event when the value of the input changes.\r\n   */\r\n  @HostListener('change') _onChange() {\r\n    this.dateChange.emit(new DlDateTimeInputChange(this._value));\r\n  }\r\n\r\n  /**\r\n   * Format the input text using {@link DL_DATE_TIME_DISPLAY_FORMAT} and mark the control as touched.\r\n   */\r\n  @HostListener('blur') _onBlur() {\r\n    if (this._value) {\r\n      this._setElementValue(this._value);\r\n    }\r\n    this._touched.forEach(onTouched => onTouched());\r\n  }\r\n\r\n  /**\r\n   * Parse the user input into a possibly valid date.\r\n   * The model value is not set if the input is NOT one of the {@link DL_DATE_TIME_INPUT_FORMATS}.\r\n   * @param value\r\n   *   Value of the input control.\r\n   */\r\n  @HostListener('input', ['$event.target.value']) _onInput(value: string | null | undefined): void {\r\n    const testDate = value === null || value === undefined || value === ''\r\n      ? undefined\r\n      : moment(value, this._inputFormats, true);\r\n\r\n    this._isValid = testDate && testDate.isValid();\r\n    this.value = this._isValid ? this._dateAdapter.fromMilliseconds(testDate.valueOf()) : undefined;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  private _setElementValue(value: D) {\r\n    if (value !== null && value !== undefined) {\r\n      this._renderer.setProperty(this._elementRef.nativeElement, 'value', moment(value).format(this._displayFormat));\r\n    }\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  registerOnChange(onChange: (value: any) => void): void {\r\n    this._changed.push(onChange);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  registerOnTouched(onTouched: () => void): void {\r\n    this._touched.push(onTouched);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  registerOnValidatorChange(validatorOnChange: () => void): void {\r\n    this._onValidatorChange = validatorOnChange;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    return this._validator(control);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  writeValue(value: D): void {\r\n    this._isValid = true;\r\n    this.value = value;\r\n    this._setElementValue(value);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\nimport {DlDateTimeInputDirective} from './dl-date-time-input.directive';\r\n\r\n/**\r\n * Import this module to allow date/time input.\r\n * @internal\r\n **/\r\n@NgModule({\r\n  declarations: [DlDateTimeInputDirective],\r\n  imports: [CommonModule],\r\n  exports: [DlDateTimeInputDirective],\r\n})\r\nexport class DlDateTimeInputModule {\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nexport * from './dl-date-time-input-change';\r\nexport * from './dl-date-time-input.directive';\r\nexport * from './dl-date-time-input.module';\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\n/**\r\n * Emitted when the value of a date/time picker changes.\r\n */\r\nexport class DlDateTimePickerChange<D> {\r\n\r\n  /**\r\n   * The new value of the picker.\r\n   */\r\n  private readonly _value: D;\r\n\r\n  /**\r\n   * Constructs a new instance.\r\n   * @param newValue\r\n   *  the new value of the date/time picker.\r\n   */\r\n  constructor(newValue: D) {\r\n    this._value = newValue;\r\n  }\r\n\r\n  /**\r\n   * Get the new value of the date/time picker.\r\n   * @returns the new value or null.\r\n   */\r\n  get value(): D {\r\n    return this._value;\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {DateButton} from './dl-date-time-picker-date-button';\r\n\r\n/**\r\n * Interface that represents the model for every view in a date/time picker.\r\n */\r\nexport interface DlDateTimePickerModel {\r\n  /**\r\n   * The date value of the currently active cell in the model.\r\n   */\r\n  activeDate: number;\r\n  /**\r\n   * Represent the configuration for the left button.\r\n   */\r\n  leftButton: {\r\n    /**\r\n     * The value for the model to the left of this model.\r\n     */\r\n    value: number;\r\n\r\n    /**\r\n     * The accessible label for the left button.\r\n     * Used by screen readers.\r\n     */\r\n    ariaLabel: string;\r\n\r\n    /**\r\n     * The classes to add to the left button\r\n     */\r\n    classes: {};\r\n  };\r\n  /**\r\n   * Represents the configuration for the right button.\r\n   */\r\n  rightButton: {\r\n\r\n    /**\r\n     * The value for the model to the right this model.\r\n     */\r\n    value: number;\r\n\r\n    /**\r\n     * The accessible label for the right button.\r\n     * Used by screen readers.\r\n     */\r\n    ariaLabel: string;\r\n\r\n    /**\r\n     * The classes to add to the up button\r\n     */\r\n    classes: {};\r\n  };\r\n  /**\r\n   * Optional row labels.\r\n   * Used to include the weekday labels in the `day` view\r\n   */\r\n  rowLabels?: string[];\r\n  /**\r\n   * The rows in the current view.\r\n   */\r\n  rows: Array<{\r\n    /**\r\n     * The cells in the current row.\r\n     */\r\n    cells: Array<DateButton>\r\n  }>;\r\n  /**\r\n   * Represent the configuration for the up button.\r\n   */\r\n  upButton?: {\r\n\r\n    /**\r\n     * The value for the model above this model.\r\n     */\r\n    value: number;\r\n\r\n    /**\r\n     * The accessible label for the up button.\r\n     * Used by screen readers.\r\n     */\r\n    ariaLabel: string;\r\n\r\n    /**\r\n     * The classes to add to the up button\r\n     */\r\n    classes: {};\r\n  };\r\n  /**\r\n   * The label displayed in the top-center of the date/time picker\r\n   */\r\n  viewLabel: string;\r\n  /**\r\n   * The name of the view represented by this model.\r\n   */\r\n  viewName: string;\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {SimpleChanges} from '@angular/core';\r\nimport moment, {Moment} from 'moment';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\nimport {DlModelProvider} from './dl-model-provider';\r\n\r\n/**\r\n * Default implementation for the `year` view.\r\n */\r\nexport class DlYearModelProvider implements DlModelProvider {\r\n\r\n  /**\r\n   * Create a moment at midnight january 1 at the start of the current decade.\r\n   * The start of the decade is always a year ending in zero.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the start of the decade will be determined.\r\n   * @returns\r\n   *  moment at midnight january 1 at the start of the current decade.\r\n   * @internal\r\n   */\r\n  private static getStartOfDecade(fromMilliseconds: number): Moment {\r\n    // Truncate the last digit from the current year to get the start of the decade\r\n    const startDecade = (Math.trunc(moment(fromMilliseconds).year() / 10) * 10);\r\n    return moment({year: startDecade}).startOf('year');\r\n  }\r\n\r\n  /**\r\n   * Receives input changes detected by Angular.\r\n   *\r\n   * @param changes\r\n   *  the input changes detected by Angular.\r\n   */\r\n  onChanges(\r\n    _changes: SimpleChanges\r\n  ): void {}\r\n\r\n  /**\r\n   * Returns the `year` model for the specified moment in `local` time with the\r\n   * `active` year set to January 1 of the specified year.\r\n   *\r\n   * The `year` model represents a decade (10 years) as two rows with five columns.\r\n   *\r\n   * The decade always starts on a year ending with zero.\r\n   *\r\n   * Each cell represents midnight January 1 of the indicated year.\r\n   *\r\n   * The `active` year will be the January 1 of year of the specified milliseconds.\r\n   *\r\n   * @param milliseconds\r\n   *  the moment in time from which the year model will be created.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  the model representing the specified moment in time.\r\n   */\r\n  getModel(milliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    const rowNumbers = [0, 1];\r\n    const columnNumbers = [0, 1, 2, 3, 4];\r\n\r\n    const startYear = moment(milliseconds).startOf('year');\r\n    const startDate = DlYearModelProvider.getStartOfDecade(milliseconds);\r\n\r\n    const futureYear = startDate.year() + 9;\r\n    const pastYear = startDate.year();\r\n    const activeValue = startYear.valueOf();\r\n    const selectedValue = selectedMilliseconds === null || selectedMilliseconds === undefined\r\n      ? selectedMilliseconds\r\n      : moment(selectedMilliseconds).startOf('year').valueOf();\r\n\r\n    return {\r\n      viewName: 'year',\r\n      viewLabel: `${pastYear}-${futureYear}`,\r\n      activeDate: activeValue,\r\n      leftButton: {\r\n        value: moment(startDate).subtract(10, 'years').valueOf(),\r\n        ariaLabel: `Go to ${pastYear - 10}-${pastYear - 1}`,\r\n        classes: {},\r\n      },\r\n      rightButton: {\r\n        value: moment(startDate).add(10, 'years').valueOf(),\r\n        ariaLabel: `Go to ${futureYear + 1}-${futureYear + 10}`,\r\n        classes: {},\r\n      },\r\n      rows: rowNumbers.map(rowOfYears.bind(this))\r\n    };\r\n\r\n    function rowOfYears(rowNumber) {\r\n\r\n      const currentMoment = moment();\r\n      const cells = columnNumbers.map((columnNumber) => {\r\n        const yearMoment = moment(startDate).add((rowNumber * columnNumbers.length) + columnNumber, 'years');\r\n        return {\r\n          display: yearMoment.format('YYYY'),\r\n          value: yearMoment.valueOf(),\r\n          classes: {\r\n            'dl-abdtp-active': activeValue === yearMoment.valueOf(),\r\n            'dl-abdtp-selected': selectedValue === yearMoment.valueOf(),\r\n            'dl-abdtp-now': yearMoment.isSame(currentMoment, 'year'),\r\n          }\r\n        };\r\n      });\r\n      return {cells};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Move the active `year` one row `down` from the specified moment in time.\r\n   *\r\n   * The `active` year will be the January 1 `five (5) years after` the specified milliseconds.\r\n   * This moves the `active` date one row `down` in the current `year` view.\r\n   *\r\n   * Moving `down` can result in the `active` year being part of a different decade than\r\n   * the specified `fromMilliseconds`, in this case the decade represented by the model\r\n   * will change to show the correct decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `year` model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `year` one row `down` from the specified moment in time.\r\n   */\r\n  goDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(5, 'year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `year` one row `up` from the specified moment in time.\r\n   *\r\n   * The `active` year will be the January 1 `five (5) years before` the specified milliseconds.\r\n   * This moves the `active` date one row `up` in the current `year` view.\r\n   *\r\n   * Moving `up` can result in the `active` year being part of a different decade than\r\n   * the specified `fromMilliseconds`, in this case the decade represented by the model\r\n   * will change to show the correct decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the previous `year` model `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `year` one row `up` from the specified moment in time.\r\n   */\r\n  goUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(5, 'year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `year` one (1) year to the `left` of the specified moment in time.\r\n   *\r\n   * The `active` year will be the January 1 `one (1) year before` the specified milliseconds.\r\n   * This moves the `active` date one year `left` in the current `year` view.\r\n   *\r\n   * Moving `left` can result in the `active` year being part of a different decade than\r\n   * the specified `fromMilliseconds`, in this case the decade represented by the model\r\n   * will change to show the correct decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `year` model to the `left` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `year` one year to the `left` of the specified moment in time.\r\n   */\r\n  goLeft(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `year` one (1) year to the `right` of the specified moment in time.\r\n   *\r\n   * The `active` year will be the January 1 `one (1) year after` the specified milliseconds.\r\n   * This moves the `active` date one year `right` in the current `year` view.\r\n   *\r\n   * Moving `right` can result in the `active` year being part of a different decade than\r\n   * the specified `fromMilliseconds`, in this case the decade represented by the model\r\n   * will change to show the correct decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `year` model to the `right` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `year` one year to the `right` of the specified moment in time.\r\n   */\r\n  goRight(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `year` one decade `down` from the specified moment in time.\r\n   *\r\n   * The `active` year will be the January 1 `ten (10) years after` the specified milliseconds.\r\n   * This moves the `active` date one `page` `down` from the current `year` view.\r\n   *\r\n   * Paging `down` will result in the `active` year being part of a different decade than\r\n   * the specified `fromMilliseconds`. As a result, the decade represented by the model\r\n   * will change to show the correct decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `year` model page `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `year` one decade `down` from the specified moment in time.\r\n   */\r\n  pageDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(10, 'year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `year` one decade `up` from the specified moment in time.\r\n   *\r\n   * The `active` year will be the January 1 `ten (10) years before` the specified milliseconds.\r\n   * This moves the `active` date one `page-up` from the current `year` view.\r\n   *\r\n   * Paging `up` will result in the `active` year being part of a different decade than\r\n   * the specified `fromMilliseconds`. As a result, the decade represented by the model\r\n   * will change to show the correct decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `year` model page `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `year` one decade `up` from the specified moment in time.\r\n   */\r\n  pageUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(10, 'year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `year` to the `last` year in the decade.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different decade than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `last` active `year` will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the `last` cell in the view as the active `year`.\r\n   */\r\n  goEnd(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(\r\n      DlYearModelProvider.getStartOfDecade(fromMilliseconds)\r\n        .add(9, 'years')\r\n        .endOf('year')\r\n        .valueOf(),\r\n      selectedMilliseconds\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `year` to the `first` year in the decade.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different decade than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `first` active `year` will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the `first` cell in the view as the active `year`.\r\n   */\r\n  goHome(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(\r\n      DlYearModelProvider.getStartOfDecade(fromMilliseconds)\r\n        .startOf('year')\r\n        .valueOf(),\r\n      selectedMilliseconds\r\n    );\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {SimpleChanges} from '@angular/core';\r\nimport moment from 'moment';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\nimport {DlModelProvider} from './dl-model-provider';\r\n\r\n/**\r\n * Default implementation for the `month` view.\r\n */\r\nexport class DlMonthModelProvider implements DlModelProvider {\r\n\r\n  /**\r\n   * Receives input changes detected by Angular.\r\n   *\r\n   * @param changes\r\n   *  the input changes detected by Angular.\r\n   */\r\n  onChanges(\r\n    _changes: SimpleChanges\r\n  ): void {}\r\n\r\n  /**\r\n   * Returns the `month` model for the specified moment in `local` time with the\r\n   * `active` month set to the first day of the specified month.\r\n   *\r\n   * The `month` model represents a year (12 months) as three rows with four columns.\r\n   *\r\n   * The year always starts in January.\r\n   *\r\n   * Each cell represents midnight on the 1st day of the month.\r\n   *\r\n   * The `active` month will be the January of year of the specified milliseconds.\r\n   *\r\n   * @param milliseconds\r\n   *  the moment in time from which the month model will be created.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  the model representing the specified moment in time.\r\n   */\r\n  getModel(milliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    const startDate = moment(milliseconds).startOf('year');\r\n\r\n    const rowNumbers = [0, 1, 2];\r\n    const columnNumbers = [0, 1, 2, 3];\r\n\r\n    const previousYear = moment(startDate).subtract(1, 'year');\r\n    const nextYear = moment(startDate).add(1, 'year');\r\n    const activeValue = moment(milliseconds).startOf('month').valueOf();\r\n    const selectedValue = selectedMilliseconds === null || selectedMilliseconds === undefined\r\n      ? selectedMilliseconds\r\n      : moment(selectedMilliseconds).startOf('month').valueOf();\r\n\r\n    return {\r\n      viewName: 'month',\r\n      viewLabel: startDate.format('YYYY'),\r\n      activeDate: activeValue,\r\n      leftButton: {\r\n        value: previousYear.valueOf(),\r\n        ariaLabel: `Go to ${previousYear.format('YYYY')}`,\r\n        classes: {},\r\n      },\r\n      upButton: {\r\n        value: startDate.valueOf(),\r\n        ariaLabel: `Go to ${startDate.format('YYYY')}`,\r\n        classes: {},\r\n      },\r\n      rightButton: {\r\n        value: nextYear.valueOf(),\r\n        ariaLabel: `Go to ${nextYear.format('YYYY')}`,\r\n        classes: {},\r\n      },\r\n      rows: rowNumbers.map(rowOfMonths)\r\n    };\r\n\r\n    function rowOfMonths(rowNumber) {\r\n\r\n      const currentMoment = moment();\r\n      const cells = columnNumbers.map((columnNumber) => {\r\n        const monthMoment = moment(startDate).add((rowNumber * columnNumbers.length) + columnNumber, 'months');\r\n        return {\r\n          display: monthMoment.format('MMM'),\r\n          ariaLabel: monthMoment.format('MMM YYYY'),\r\n          value: monthMoment.valueOf(),\r\n          classes: {\r\n            'dl-abdtp-active': activeValue === monthMoment.valueOf(),\r\n            'dl-abdtp-selected': selectedValue === monthMoment.valueOf(),\r\n            'dl-abdtp-now': monthMoment.isSame(currentMoment, 'month'),\r\n          }\r\n        };\r\n      });\r\n      return {cells};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Move the active `month` one row `down` from the specified moment in time.\r\n   *\r\n   * Moving `down` can result in the `active` month being part of a different year than\r\n   * the specified `fromMilliseconds`, in this case the year represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `month` model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one row `down` from the specified moment in time.\r\n   */\r\n  goDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(4, 'month').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `month` one row `up` from the specified moment in time.\r\n   *\r\n   * Moving `up` can result in the `active` month being part of a different year than\r\n   * the specified `fromMilliseconds`, in this case the year represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the previous `month` model `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one row `up` from the specified moment in time.\r\n   */\r\n  goUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(4, 'month').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `month` one (1) month to the `left` of the specified moment in time.\r\n   *\r\n   * Moving `left` can result in the `active` month being part of a different year than\r\n   * the specified `fromMilliseconds`, in this case the year represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `month` model to the `left` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one month to the `left` of the specified moment in time.\r\n   */\r\n  goLeft(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'month').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `month` one (1) month to the `right` of the specified moment in time.\r\n   *\r\n   * The `active` month will be `one (1) month after` the specified milliseconds.\r\n   * This moves the `active` date one month `right` in the current `month` view.\r\n   *\r\n   * Moving `right` can result in the `active` month being part of a different year than\r\n   * the specified `fromMilliseconds`, in this case the year represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `month` model to the `right` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one year to the `right` of the specified moment in time.\r\n   */\r\n  goRight(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'month').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `month` one year `down` from the specified moment in time.\r\n   *\r\n   * Paging `down` will result in the `active` month being part of a different year than\r\n   * the specified `fromMilliseconds`. As a result, the year represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `month` model page `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one year `down` from the specified moment in time.\r\n   */\r\n  pageDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(12, 'months').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `month` one year `down` from the specified moment in time.\r\n   *\r\n   * Paging `up` will result in the `active` month being part of a different year than\r\n   * the specified `fromMilliseconds`. As a result, the year represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `month` model page `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one year `up` from the specified moment in time.\r\n   */\r\n  pageUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(12, 'months').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `month` to `December` of the current year.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different year than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which `December 1` will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the `December` cell in the view as the active `month`.\r\n   */\r\n  goEnd(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).endOf('year').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `month` to `January` of the current year.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different year than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which `January 1` will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the `January` cell in the view as the active `month`.\r\n   */\r\n  goHome(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).startOf('year').valueOf(), selectedMilliseconds);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {SimpleChanges} from '@angular/core';\r\nimport moment from 'moment';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\nimport {DlModelProvider} from './dl-model-provider';\r\n\r\n/**\r\n * Default implementation for the `day` view.\r\n */\r\nexport class DlDayModelProvider implements DlModelProvider {\r\n\r\n  /**\r\n   * Receives input changes detected by Angular.\r\n   *\r\n   * @param changes\r\n   *  the input changes detected by Angular.\r\n   */\r\n  onChanges(\r\n    _changes: SimpleChanges\r\n  ): void {}\r\n\r\n  /**\r\n   * Returns the `day` model for the specified moment in `local` time with the\r\n   * `active` day set to the first day of the month.\r\n   *\r\n   * The `day` model represents a month (42 days) as six rows with seven columns\r\n   * and each cell representing one-day increments.\r\n   *\r\n   * The `day` always starts at midnight.\r\n   *\r\n   * Each cell represents a one-day increment at midnight.\r\n   *\r\n   * @param milliseconds\r\n   *  the moment in time from which the minute model will be created.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  the model representing the specified moment in time.\r\n   */\r\n  getModel(milliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n\r\n    const startOfMonth = moment(milliseconds).startOf('month');\r\n    const endOfMonth = moment(milliseconds).endOf('month');\r\n    const startOfView = moment(startOfMonth).subtract(Math.abs(startOfMonth.weekday()), 'days');\r\n\r\n    const rowNumbers = [0, 1, 2, 3, 4, 5];\r\n    const columnNumbers = [0, 1, 2, 3, 4, 5, 6];\r\n\r\n    const previousMonth = moment(startOfMonth).subtract(1, 'month');\r\n    const nextMonth = moment(startOfMonth).add(1, 'month');\r\n    const activeValue = moment(milliseconds).startOf('day').valueOf();\r\n    const selectedValue = selectedMilliseconds === null || selectedMilliseconds === undefined\r\n      ? selectedMilliseconds\r\n      : moment(selectedMilliseconds).startOf('day').valueOf();\r\n\r\n    return {\r\n      viewName: 'day',\r\n      viewLabel: startOfMonth.format('MMM YYYY'),\r\n      activeDate: activeValue,\r\n      leftButton: {\r\n        value: previousMonth.valueOf(),\r\n        ariaLabel: `Go to ${previousMonth.format('MMM YYYY')}`,\r\n        classes: {},\r\n      },\r\n      upButton: {\r\n        value: startOfMonth.valueOf(),\r\n        ariaLabel: `Go to month view`,\r\n        classes: {},\r\n      },\r\n      rightButton: {\r\n        value: nextMonth.valueOf(),\r\n        ariaLabel: `Go to ${nextMonth.format('MMM YYYY')}`,\r\n        classes: {},\r\n      },\r\n      rowLabels: columnNumbers.map((column) => moment().weekday(column).format('dd')),\r\n      rows: rowNumbers.map(rowOfDays)\r\n    };\r\n\r\n    function rowOfDays(rowNumber) {\r\n      const currentMoment = moment();\r\n      const cells = columnNumbers.map((columnNumber) => {\r\n        const dayMoment = moment(startOfView).add((rowNumber * columnNumbers.length) + columnNumber, 'days');\r\n        return {\r\n          display: dayMoment.format('D'),\r\n          ariaLabel: dayMoment.format('ll'),\r\n          value: dayMoment.valueOf(),\r\n          classes: {\r\n            'dl-abdtp-active': activeValue === dayMoment.valueOf(),\r\n            'dl-abdtp-future': dayMoment.isAfter(endOfMonth),\r\n            'dl-abdtp-past': dayMoment.isBefore(startOfMonth),\r\n            'dl-abdtp-selected': selectedValue === dayMoment.valueOf(),\r\n            'dl-abdtp-now': dayMoment.isSame(currentMoment, 'day'),\r\n          }\r\n        };\r\n      });\r\n      return {cells};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Move the active `day` one row `down` from the specified moment in time.\r\n   *\r\n   * Moving `down` can result in the `active` day being part of a different month than\r\n   * the specified `fromMilliseconds`, in this case the month represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `day` model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `day` one row `down` from the specified moment in time.\r\n   */\r\n  goDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(7, 'days').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `day` one row `up` from the specified moment in time.\r\n   *\r\n   * Moving `up` can result in the `active` day being part of a different month than\r\n   * the specified `fromMilliseconds`, in this case the month represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `day` model `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `day` one row `up` from the specified moment in time.\r\n   */\r\n  goUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(7, 'days').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` day one cell `left` in the current `day` view.\r\n   *\r\n   * Moving `left` can result in the `active` day being part of a different month than\r\n   * the specified `fromMilliseconds`, in this case the month represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `day` model to the `left` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `day` one cell to the `left` of the specified moment in time.\r\n   */\r\n  goLeft(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'day').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` day one cell `right` in the current `day` view.\r\n   *\r\n   * Moving `right` can result in the `active` day being part of a different month than\r\n   * the specified `fromMilliseconds`, in this case the month represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `day` model to the `right` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `day` one cell to the `right` of the specified moment in time.\r\n   */\r\n  goRight(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'day').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `day` one month `down` from the specified moment in time.\r\n   *\r\n   * Paging `down` will result in the `active` day being part of a different month than\r\n   * the specified `fromMilliseconds`. As a result, the month represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `day` model page `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `day` one month `down` from the specified moment in time.\r\n   */\r\n  pageDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'month').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `day` one month `up` from the specified moment in time.\r\n   *\r\n   * Paging `up` will result in the `active` day being part of a different month than\r\n   * the specified `fromMilliseconds`. As a result, the month represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `day` model page `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `day` one month `up` from the specified moment in time.\r\n   */\r\n  pageUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'month').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n\r\n  /**\r\n   * Move the `active` `day` to the last day of the month.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different day than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the last day of the month will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the last cell in the view as the active `day`.\r\n   */\r\n  goEnd(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds)\r\n      .endOf('month').startOf('day').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `day` to the first day of the month.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different day than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the first day of the month will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the first cell in the view as the active `day`.\r\n   */\r\n  goHome(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).startOf('month').valueOf(), selectedMilliseconds);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {SimpleChanges} from '@angular/core';\r\nimport moment from 'moment';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\nimport {DlModelProvider} from './dl-model-provider';\r\n\r\n/**\r\n * Default implementation for the `hour` view.\r\n */\r\nexport class DlHourModelProvider implements DlModelProvider {\r\n\r\n  /**\r\n   * Receives input changes detected by Angular.\r\n   *\r\n   * @param changes\r\n   *  the input changes detected by Angular.\r\n   */\r\n  onChanges(\r\n    _changes: SimpleChanges\r\n  ): void {}\r\n\r\n\r\n  /**\r\n   * Returns the `hour` model for the specified moment in `local` time with the\r\n   * `active` hour set to the beginning of the day.\r\n   *\r\n   * The `hour` model represents a day (24 hours) as six rows with four columns\r\n   * and each cell representing one-hour increments.\r\n   *\r\n   * The hour always starts at the beginning of the hour.\r\n   *\r\n   * Each cell represents a one-hour increment starting at midnight.\r\n   *\r\n   * @param milliseconds\r\n   *  the moment in time from which the minute model will be created.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  the model representing the specified moment in time.\r\n   */\r\n  getModel(milliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    const startDate = moment(milliseconds).startOf('day');\r\n\r\n    const rowNumbers = [0, 1, 2, 3, 4, 5];\r\n    const columnNumbers = [0, 1, 2, 3];\r\n\r\n    const previousDay = moment(startDate).subtract(1, 'day');\r\n    const nextDay = moment(startDate).add(1, 'day');\r\n    const activeValue = moment(milliseconds).startOf('hour').valueOf();\r\n    const selectedValue = selectedMilliseconds === null || selectedMilliseconds === undefined\r\n      ? selectedMilliseconds\r\n      : moment(selectedMilliseconds).startOf('hour').valueOf();\r\n\r\n    return {\r\n      viewName: 'hour',\r\n      viewLabel: startDate.format('ll'),\r\n      activeDate: activeValue,\r\n      leftButton: {\r\n        value: previousDay.valueOf(),\r\n        ariaLabel: `Go to ${previousDay.format('ll')}`,\r\n        classes: {},\r\n      },\r\n      upButton: {\r\n        value: startDate.valueOf(),\r\n        ariaLabel: `Go to ${startDate.format('MMM YYYY')}`,\r\n        classes: {},\r\n      },\r\n      rightButton: {\r\n        value: nextDay.valueOf(),\r\n        ariaLabel: `Go to ${nextDay.format('ll')}`,\r\n        classes: {},\r\n      },\r\n      rows: rowNumbers.map(rowOfHours)\r\n    };\r\n\r\n    function rowOfHours(rowNumber) {\r\n\r\n      const currentMoment = moment();\r\n      const cells = columnNumbers.map((columnNumber) => {\r\n        const hourMoment = moment(startDate).add((rowNumber * columnNumbers.length) + columnNumber, 'hours');\r\n        return {\r\n          display: hourMoment.format('LT'),\r\n          ariaLabel: hourMoment.format('LLL'),\r\n          value: hourMoment.valueOf(),\r\n          classes: {\r\n            'dl-abdtp-active': activeValue === hourMoment.valueOf(),\r\n            'dl-abdtp-selected': selectedValue === hourMoment.valueOf(),\r\n            'dl-abdtp-now': hourMoment.isSame(currentMoment, 'hour'),\r\n          }\r\n        };\r\n      });\r\n      return {cells};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Move the active `hour` one row `down` from the specified moment in time.\r\n   *\r\n   * Moving `down` can result in the `active` hour being part of a different day than\r\n   * the specified `fromMilliseconds`, in this case the day represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `hour` model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `hour` one row `down` from the specified moment in time.\r\n   */\r\n  goDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(4, 'hour').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `hour` one row `up` from the specified moment in time.\r\n   *\r\n   * Moving `up` can result in the `active` hour being part of a different day than\r\n   * the specified `fromMilliseconds`, in this case the day represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `hour` model `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `hour` one row `up` from the specified moment in time.\r\n   */\r\n  goUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(4, 'hour').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` hour one cell `left` in the current `hour` view.\r\n   *\r\n   * Moving `left` can result in the `active` hour being part of a different day than\r\n   * the specified `fromMilliseconds`, in this case the day represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `hour` model to the `left` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `hour` one cell to the `left` of the specified moment in time.\r\n   */\r\n  goLeft(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'hour').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` hour one cell `right` in the current `hour` view.\r\n   *\r\n   * Moving `right` can result in the `active` hour being part of a different day than\r\n   * the specified `fromMilliseconds`, in this case the day represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `hour` model to the `right` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `hour` one cell to the `right` of the specified moment in time.\r\n   */\r\n  goRight(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'hour').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `hour` one day `down` from the specified moment in time.\r\n   *\r\n   * Paging `down` will result in the `active` hour being part of a different day than\r\n   * the specified `fromMilliseconds`. As a result, the day represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `hour` model page `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `hour` one day `down` from the specified moment in time.\r\n   */\r\n  pageDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'day').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `hour` one day `up` from the specified moment in time.\r\n   *\r\n   * Paging `up` will result in the `active` hour being part of a different day than\r\n   * the specified `fromMilliseconds`. As a result, the day represented by the model\r\n   * will change to show the correct year.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `hour` model page `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `hour` one day `up` from the specified moment in time.\r\n   */\r\n  pageUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'day').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `hour` to `11:00 pm` of the current day.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different day than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which `11:00 pm` will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the `11:00 pm` cell in the view as the active `hour`.\r\n   */\r\n  goEnd(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment\r\n    (fromMilliseconds)\r\n      .endOf('day')\r\n      .startOf('hour')\r\n      .valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `hour` to `midnight` of the current day.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different day than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which `midnight` will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the `midnight` cell in the view as the active `hour`.\r\n   */\r\n  goHome(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).startOf('day').valueOf(), selectedMilliseconds);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {SimpleChanges} from '@angular/core';\r\nimport moment from 'moment';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\nimport {DlModelProvider} from './dl-model-provider';\r\n\r\n/**\r\n * Default implementation for the `minute` view.\r\n */\r\nexport class DlMinuteModelProvider implements DlModelProvider {\r\n\r\n  private step = 5;\r\n\r\n  /**\r\n   * Receives `minuteStep` configuration changes detected by Angular.\r\n   *\r\n   * Changes where the value has not changed are ignored.\r\n   *\r\n   * Setting `minuteStep` to `null` or `undefined` will result in a\r\n   * minuteStep of `5`.\r\n   *\r\n   * @param changes\r\n   *  the input changes detected by Angular.\r\n   */\r\n\r\n  onChanges(changes: SimpleChanges): void {\r\n\r\n    const minuteStepChange = changes['minuteStep'];\r\n\r\n    if (minuteStepChange\r\n      && (minuteStepChange.previousValue !== minuteStepChange.currentValue)\r\n    ) {\r\n      this.step = minuteStepChange.currentValue;\r\n      if (this.step === null || this.step === undefined) {\r\n        this.step = 5;\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  /**\r\n   * Returns the `minute` model for the specified moment in `local` time with the\r\n   * `active` minute set to the beginning of the hour.\r\n   *\r\n   * The `minute` model represents an hour (60 minutes) as three rows with four columns\r\n   * and each cell representing 5-minute increments.\r\n   *\r\n   * The hour always starts at midnight.\r\n   *\r\n   * Each cell represents a 5-minute increment starting at midnight.\r\n   *\r\n   * The `active` minute will be the 5-minute increments less than or equal to the specified milliseconds.\r\n   *\r\n   * @param milliseconds\r\n   *  the moment in time from which the minute model will be created.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  the model representing the specified moment in time.\r\n   */\r\n  getModel(milliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    const startDate = moment(milliseconds).startOf('hour');\r\n    const currentMilliseconds = moment().valueOf();\r\n\r\n    const minuteSteps = new Array(Math.ceil(60 / this.step)).fill(0).map((zero, index) => zero + index * this.step);\r\n    const minuteValues = minuteSteps.map((minutesToAdd) => moment(startDate).add(minutesToAdd, 'minutes').valueOf());\r\n    const activeValue = moment(minuteValues.filter((value) => value <= milliseconds).pop()).valueOf();\r\n\r\n    const nowValue = currentMilliseconds >= startDate.valueOf() && currentMilliseconds <= moment(startDate).endOf('hour').valueOf()\r\n      ? moment(minuteValues.filter((value) => value <= currentMilliseconds).pop()).valueOf()\r\n      : null;\r\n\r\n\r\n    const previousHour = moment(startDate).subtract(1, 'hour');\r\n    const nextHour = moment(startDate).add(1, 'hour');\r\n    const selectedValue = selectedMilliseconds === null || selectedMilliseconds === undefined\r\n      ? selectedMilliseconds\r\n      : moment(minuteValues.filter((value) => value <= selectedMilliseconds).pop()).valueOf();\r\n\r\n    const rows = new Array(Math.ceil(minuteSteps.length / 4))\r\n      .fill(0)\r\n      .map((zero, index) => zero + index)\r\n      .map((value) => {\r\n        return {cells: minuteSteps.slice((value * 4), (value * 4) + 4).map(rowOfMinutes)};\r\n      });\r\n\r\n    return {\r\n      viewName: 'minute',\r\n      viewLabel: startDate.format('lll'),\r\n      activeDate: activeValue,\r\n      leftButton: {\r\n        value: previousHour.valueOf(),\r\n        ariaLabel: `Go to ${previousHour.format('lll')}`,\r\n        classes: {},\r\n      },\r\n      upButton: {\r\n        value: startDate.valueOf(),\r\n        ariaLabel: `Go to ${startDate.format('ll')}`,\r\n        classes: {},\r\n      },\r\n      rightButton: {\r\n        value: nextHour.valueOf(),\r\n        ariaLabel: `Go to ${nextHour.format('lll')}`,\r\n        classes: {},\r\n      },\r\n      rows\r\n    };\r\n\r\n    function rowOfMinutes(stepMinutes): {\r\n      display: string;\r\n      ariaLabel: string;\r\n      value: number;\r\n      classes: {};\r\n    } {\r\n      const minuteMoment = moment(startDate).add(stepMinutes, 'minutes');\r\n      return {\r\n        display: minuteMoment.format('LT'),\r\n        ariaLabel: minuteMoment.format('LLL'),\r\n        value: minuteMoment.valueOf(),\r\n        classes: {\r\n          'dl-abdtp-active': activeValue === minuteMoment.valueOf(),\r\n          'dl-abdtp-selected': selectedValue === minuteMoment.valueOf(),\r\n          'dl-abdtp-now': nowValue === minuteMoment.valueOf(),\r\n        }\r\n      };\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Move the active `minute` one row `down` from the specified moment in time.\r\n   *\r\n   * Moving `down` can result in the `active` minute being part of a different hour than\r\n   * the specified `fromMilliseconds`, in this case the hour represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `minute` model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `minute` one row `down` from the specified moment in time.\r\n   */\r\n  goDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(this.step * 4, 'minutes').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `minute` one row `down` from the specified moment in time.\r\n   *\r\n   * Moving `down` can result in the `active` minute being part of a different hour than\r\n   * the specified `fromMilliseconds`, in this case the hour represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `minute` model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `minute` one row `down` from the specified moment in time.\r\n   */\r\n  goUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(this.step * 4, 'minutes').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` date one cell to `left` in the current `minute` view.\r\n   *\r\n   * Moving `left` can result in the `active` hour being part of a different hour than\r\n   * the specified `fromMilliseconds`, in this case the hour represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `minute` model to the `left` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `minute` one cell to the `left` of the specified moment in time.\r\n   */\r\n  goLeft(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(this.step, 'minutes').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move `active` minute one cell to `right` in the current `minute` view.\r\n   *\r\n   * Moving `right` can result in the `active` hour being part of a different hour than\r\n   * the specified `fromMilliseconds`, in this case the hour represented by the model\r\n   * will change to show the correct hour.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `minute` model to the `right` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `minute` one cell to the `right` of the specified moment in time.\r\n   */\r\n  goRight(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(this.step, 'minutes').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `minute` one hour `down` from the specified moment in time.\r\n   *\r\n   * The `active` minute will be `one (1) hour after` the specified milliseconds.\r\n   * This moves the `active` date one `page` `down` from the current `minute` view.\r\n   *\r\n   * The next cell `page-down` will be in a different hour than the currently\r\n   * displayed view and the model time range will include the new active cell.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `month` model page `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one year `down` from the specified moment in time.\r\n   */\r\n  pageDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).add(1, 'hour').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the active `minute` one hour `up` from the specified moment in time.\r\n   *\r\n   * The `active` minute will be `one (1) hour before` the specified milliseconds.\r\n   * This moves the `active` date one `page` `down` from the current `minute` view.\r\n   *\r\n   * The next cell `page-up` will be in a different hour than the currently\r\n   * displayed view and the model time range will include the new active cell.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next `month` model page `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  model containing an `active` `month` one year `down` from the specified moment in time.\r\n   */\r\n  pageUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).subtract(1, 'hour').valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `minute` to the last cell of the current hour.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different hour than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the last cell will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the last cell in the view as the active `minute`.\r\n   */\r\n  goEnd(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds)\r\n      .endOf('hour')\r\n      .valueOf(), selectedMilliseconds);\r\n  }\r\n\r\n  /**\r\n   * Move the `active` `minute` to the first cell of the current hour.\r\n   *\r\n   * The view or time range will not change unless the `fromMilliseconds` value\r\n   * is in a different hour than the displayed decade.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the first cell will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  a model with the first cell in the view as the active `minute`.\r\n   */\r\n  goHome(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel {\r\n    return this.getModel(moment(fromMilliseconds).startOf('hour').valueOf(), selectedMilliseconds);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport moment from 'moment';\r\nimport {take} from 'rxjs/operators';\r\nimport {DlDateAdapter} from '../core/public-api';\r\nimport {DlDateTimePickerChange} from './dl-date-time-picker-change';\r\nimport {DateButton} from './dl-date-time-picker-date-button';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\nimport {DlModelProvider} from './dl-model-provider';\r\nimport {DlDayModelProvider} from './dl-model-provider-day';\r\nimport {DlHourModelProvider} from './dl-model-provider-hour';\r\nimport {DlMinuteModelProvider} from './dl-model-provider-minute';\r\nimport {DlMonthModelProvider} from './dl-model-provider-month';\r\nimport {DlYearModelProvider} from './dl-model-provider-year';\r\n\r\n/**\r\n * Maps key codes to the model provider function name\r\n * that should be called to perform the action.\r\n *\r\n * @internal\r\n **/\r\n\r\nconst keyCodeToModelProviderMethod = {\r\n  'ArrowDown': 'goDown',\r\n  'ArrowLeft': 'goLeft',\r\n  'ArrowRight': 'goRight',\r\n  'ArrowUp': 'goUp',\r\n  'Down': 'goDown',\r\n  'End': 'goEnd',\r\n  'Home': 'goHome',\r\n  'Left': 'goLeft',\r\n  'PageDown': 'pageDown',\r\n  'PageUp': 'pageUp',\r\n  'Right': 'goRight',\r\n  'Up': 'goUp',\r\n  33: 'pageUp',\r\n  34: 'pageDown',\r\n  35: 'goEnd',\r\n  36: 'goHome',\r\n  37: 'goLeft',\r\n  38: 'goUp',\r\n  39: 'goRight',\r\n  40: 'goDown',\r\n};\r\n\r\n\r\n/**\r\n * List of view names for the calendar.\r\n *\r\n * This list must be in order from\r\n * smallest increment of time to largest increment of time.\r\n *\r\n * @internal\r\n **/\r\nconst VIEWS = [\r\n  'minute',\r\n  'hour',\r\n  'day',\r\n  'month',\r\n  'year'\r\n];\r\n\r\n/**\r\n * Component that provides all of the user facing functionality of the date/time picker.\r\n */\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  preserveWhitespaces: false,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: DlDateTimePickerComponent,\r\n      multi: true\r\n    }\r\n  ],\r\n  selector: 'dl-date-time-picker',\r\n  styleUrls: ['./dl-date-time-picker.component.scss'],\r\n  templateUrl: './dl-date-time-picker.component.html',\r\n})\r\nexport class DlDateTimePickerComponent<D> implements OnChanges, OnInit, ControlValueAccessor {\r\n\r\n  /**\r\n   * Change listener callback functions registered\r\n   * via `registerOnChange`\r\n   * @internal\r\n   **/\r\n  private _changed: ((value: D) => void)[] = [];\r\n  /**\r\n   * Model for the current view.\r\n   *\r\n   * @internal\r\n   **/\r\n  _model: DlDateTimePickerModel;\r\n  /**\r\n   * Maps view name to the next view (the view for the next smallest increment of time).\r\n   * @internal\r\n   **/\r\n  private _nextView = {\r\n    'year': 'month',\r\n    'month': 'day',\r\n    'day': 'hour',\r\n    'hour': 'minute'\r\n  };\r\n  /**\r\n   * Maps view name to the previous view (the view for the next largest increment of time).\r\n   * @internal\r\n   **/\r\n  private _previousView = {\r\n    'minute': 'hour',\r\n    'hour': 'day',\r\n    'day': 'month',\r\n    'month': 'year'\r\n  };\r\n  /**\r\n   * Touch listener callback functions registered\r\n   * via `registerOnChange`\r\n   * @internal\r\n   **/\r\n  private _touched: (() => void)[] = [];\r\n  /**\r\n   * Stores the selected value for this picker.\r\n   * @internal\r\n   **/\r\n  private _value: D;\r\n  /**\r\n   * Maps view name to the model provider for that view.\r\n   * @internal\r\n   **/\r\n  private readonly _viewToModelProvider: {\r\n    year: DlModelProvider;\r\n    month: DlModelProvider;\r\n    day: DlModelProvider;\r\n    hour: DlModelProvider;\r\n    minute: DlModelProvider;\r\n  };\r\n  /**\r\n   * Emits when a `change` event when date/time is selected or\r\n   * the value of the date/time picker changes.\r\n   **/\r\n  @Output() /* eslint-disable-next-line  @angular-eslint/no-output-native */\r\n  readonly change = new EventEmitter<DlDateTimePickerChange<D>>();\r\n  /**\r\n   * Specifies the classes used to display the left icon.\r\n   *\r\n   * This component uses OPENICONIC https://useiconic.com/open\r\n   * by default but any icon library may be used.\r\n   */\r\n  @Input()\r\n  leftIconClass: string | string[] | Set<string> | {} = [\r\n    'oi',\r\n    'oi-chevron-left'\r\n  ];\r\n  /**\r\n   * The highest view that the date/time picker can show.\r\n   * Setting this to a view less than year could make it more\r\n   * difficult for the end-user to navigate to certain dates.\r\n   */\r\n  @Input()\r\n  maxView: 'year' | 'month' | 'day' | 'hour' | 'minute' = 'year';\r\n  /**\r\n   * The view that will be used for date/time selection.\r\n   *\r\n   * The default of `minute  means that selection will not happen\r\n   * until the end-user clicks on a cell in the minute view.\r\n   *\r\n   * for example, if you want the end-user to select a only day (date),\r\n   * setting `minView` to `day` will cause selection to happen when the\r\n   * end-user selects a cell in the day view.\r\n   *\r\n   * NOTE: This must be set lower than or equal to `startView'\r\n   */\r\n  @Input()\r\n  minView: 'year' | 'month' | 'day' | 'hour' | 'minute' = 'minute';\r\n  /**\r\n   * The number of minutes between each `.dl-abdtp-minute` button.\r\n   *\r\n   * Must be greater than `0` and less than `60`.\r\n   */\r\n  @Input()\r\n  minuteStep = 5;\r\n  /**\r\n   * Specifies the classes used to display the right icon.\r\n   *\r\n   * This component uses OPENICONIC https://useiconic.com/open\r\n   * by default but any icon library may be used.\r\n   */\r\n  @Input()\r\n  rightIconClass = [\r\n    'oi',\r\n    'oi-chevron-right'\r\n  ];\r\n\r\n  /* tslint:disable:member-ordering */\r\n  /**\r\n   *  Determine whether or not the `DateButton` is selectable by the end user.\r\n   */\r\n  @Input()\r\n  selectFilter: (dateButton: DateButton, viewName: string) => boolean = () => true\r\n\r\n  /**\r\n   *  Start at the view containing startDate when no value is selected.\r\n   */\r\n  @Input()\r\n  startDate: number;\r\n\r\n  /**\r\n   * The initial view that the date/time picker will show.\r\n   * The picker will also return to this view after a date/time\r\n   * is selected.\r\n   *\r\n   * NOTE: This must be set lower than or equal to `maxView'\r\n   */\r\n  @Input()\r\n  startView: 'year' | 'month' | 'day' | 'hour' | 'minute' = 'day';\r\n\r\n  /**\r\n   * Specifies the classes used to display the up icon.\r\n   *\r\n   * This component uses OPENICONIC https://useiconic.com/open\r\n   * by default but any icon library may be used.\r\n   */\r\n  @Input()\r\n  upIconClass = [\r\n    'oi',\r\n    'oi-chevron-top'\r\n  ];\r\n\r\n  /**\r\n   * Used to construct a new instance of a date/time picker.\r\n   *\r\n   * @param _elementRef\r\n   *  reference to this element.\r\n   * @param _ngZone\r\n   *  reference to an NgZone instance used to select the active element outside of angular.\r\n   * @param _dateAdapter\r\n   *  date adapter for the date type in the model.\r\n   * @param yearModelComponent\r\n   *  provider for the year view model.\r\n   * @param monthModelComponent\r\n   *  provider for the month view model.\r\n   * @param dayModelComponent\r\n   *  provider for the day view model.\r\n   * @param hourModelComponent\r\n   *  provider for the hour view model.\r\n   * @param minuteModelComponent\r\n   *  provider for the minute view model.\r\n   */\r\n  constructor(private _elementRef: ElementRef,\r\n              private _ngZone: NgZone,\r\n              private _dateAdapter: DlDateAdapter<D>,\r\n              private yearModelComponent: DlYearModelProvider,\r\n              private monthModelComponent: DlMonthModelProvider,\r\n              private dayModelComponent: DlDayModelProvider,\r\n              private hourModelComponent: DlHourModelProvider,\r\n              private minuteModelComponent: DlMinuteModelProvider) {\r\n\r\n    this._viewToModelProvider = {\r\n      year: yearModelComponent,\r\n      month: monthModelComponent,\r\n      day: dayModelComponent,\r\n      hour: hourModelComponent,\r\n      minute: minuteModelComponent,\r\n    };\r\n  }\r\n\r\n  /* tslint:enable:member-ordering */\r\n  /**\r\n   * Set's the model for the current view after applying the selection filter.\r\n   *\r\n   * @internal\r\n   **/\r\n  private set model(model: DlDateTimePickerModel) {\r\n    this._model = this.applySelectFilter(model);\r\n  }\r\n\r\n  /**\r\n   * Returns `D` value of the date/time picker or undefined/null if no value is set.\r\n   **/\r\n  get value(): D {\r\n    return this._value;\r\n  }\r\n\r\n  /**\r\n   * Sets value of the date/time picker and emits a change event if the\r\n   * new value is different from the previous value.\r\n   **/\r\n  set value(value: D) {\r\n    if (this._value !== value) {\r\n      this._value = value;\r\n      this.model = this._viewToModelProvider[this._model.viewName].getModel(this.getStartDate(), this.valueOf);\r\n      this._changed.forEach(f => f(value));\r\n      this.change.emit(new DlDateTimePickerChange<D>(value));\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Returns `milliseconds` value of the date/time picker or undefined/null if no value is set.\r\n   **/\r\n  get valueOf(): number | null {\r\n    return this._dateAdapter.toMilliseconds(this._value);\r\n  }\r\n\r\n  /**\r\n   * Applies the `selectionFilter` by adding the `dl-abdtp-disabled`\r\n   * class to any `DateButton` where `selectFilter` returned false.\r\n   *\r\n   * @param model\r\n   *  the new model\r\n   *\r\n   * @returns\r\n   *  the supplied model with zero or more `DateButton`'s\r\n   *  having the `dl-abdtp-disabled` class set to `true` if the\r\n   *  selection for that date should be disabled.\r\n   *\r\n   * @internal\r\n   */\r\n  private applySelectFilter(model: DlDateTimePickerModel): DlDateTimePickerModel {\r\n    if (this.selectFilter) {\r\n      model.rows = model.rows.map((row) => {\r\n        row.cells.map((dateButton: DateButton) => {\r\n          const disabled = !this.selectFilter(dateButton, model.viewName);\r\n          dateButton.classes['dl-abdtp-disabled'] = disabled;\r\n          if (disabled) {\r\n            dateButton.classes['aria-disabled'] = true;\r\n          }\r\n          return dateButton;\r\n        });\r\n        return row;\r\n      });\r\n    }\r\n\r\n    return model;\r\n  }\r\n\r\n  /**\r\n   * Focuses the `.dl-abdtp-active` cell after the microtask queue is empty.\r\n   * @internal\r\n   **/\r\n  private focusActiveCell() {\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n        this._elementRef.nativeElement.querySelector('.dl-abdtp-active').focus();\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Determines the start date for the picker.\r\n   * @internal\r\n   **/\r\n  private getStartDate() {\r\n    if (hasValue(this._value)) {\r\n      return this._dateAdapter.toMilliseconds(this._value);\r\n    }\r\n    if (hasValue(this.startDate)) {\r\n      return this.startDate;\r\n    }\r\n    return moment().valueOf();\r\n  }\r\n\r\n  /**\r\n   * Determine the start view for the picker\r\n   * @returns\r\n   *  the largest time increment view between the `minView` or `minute` view and the `startView` or `day` view.\r\n   */\r\n  private getStartView(): string {\r\n    const startIndex = Math.max(VIEWS.indexOf(this.minView || 'minute'), VIEWS.indexOf(this.startView || 'day'));\r\n    return VIEWS[startIndex];\r\n  }\r\n\r\n  /**\r\n   * Calls all registered `touch` callback functions.\r\n   * @internal\r\n   **/\r\n  private onTouch() {\r\n    this._touched.forEach((onTouched) => onTouched());\r\n  }\r\n\r\n  /**\r\n   * Receives configuration changes detected by Angular and passes the changes on\r\n   * to the model providers so the provider is aware of any necessary configuration\r\n   * changes (i.e. minuteStep)\r\n   *\r\n   * @param changes\r\n   *  the input changes detected by Angular.\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    Object.values(this._viewToModelProvider).forEach((provider: DlModelProvider) => provider.onChanges(changes));\r\n\r\n    if (this._model) { // only update the model after ngOnInit has set it the first time.\r\n      this.model = this._viewToModelProvider[this._model.viewName].getModel(this._model.activeDate, this.valueOf);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Sets the initial model.\r\n   *\r\n   * @internal\r\n   **/\r\n  ngOnInit(): void {\r\n    this.model = this._viewToModelProvider[this.getStartView()].getModel(this.getStartDate(), this.valueOf);\r\n  }\r\n\r\n  /**\r\n   * Handles click (and enter & space key down) events on the date elements.\r\n   *\r\n   * If the current view is the minimum view then the date value is selected\r\n   * and the picker returns to the start view.\r\n   *\r\n   * Otherwise the picker displays the next view with the next\r\n   * smallest time increment.\r\n   *\r\n   * @internal\r\n   **/\r\n  _onDateClick(dateButton: DateButton) {\r\n    if (dateButton.classes['dl-abdtp-disabled']) {\r\n      return;\r\n    }\r\n\r\n    let nextView = this._nextView[this._model.viewName];\r\n\r\n    if ((this.minView || 'minute') === this._model.viewName) {\r\n      this.value = this._dateAdapter.fromMilliseconds(dateButton.value);\r\n      nextView = this.startView;\r\n    }\r\n\r\n    this.model = this._viewToModelProvider[nextView].getModel(dateButton.value, this.valueOf);\r\n\r\n    this.onTouch();\r\n  }\r\n\r\n  /**\r\n   * Handles click (and enter & space key down) events on the left button.\r\n   *\r\n   * Changes the displayed time range of the picker to the previous time range.\r\n   * For example, in year view, the previous decade is displayed.\r\n   *\r\n   * @internal\r\n   **/\r\n  _onLeftClick() {\r\n    this.model = this._viewToModelProvider[this._model.viewName].getModel(this._model.leftButton.value, this.valueOf);\r\n    this.onTouch();\r\n  }\r\n\r\n  /**\r\n   * Handles click (and enter & space key down) events on the up button.\r\n   *\r\n   * Changes the view of the picker to the next largest time increment.\r\n   * For example, in day view, the next view displayed will be month view.\r\n   *\r\n   * @internal\r\n   **/\r\n  _onUpClick() {\r\n    this.model = this._viewToModelProvider[this._previousView[this._model.viewName]].getModel(this._model.upButton.value, this.valueOf);\r\n  }\r\n\r\n  /**\r\n   * Handles click (and enter & space key down) events on the right button.\r\n   *\r\n   * Changes the displayed time range of the picker to the next time range.\r\n   * For example, in year view, the next decade is displayed.\r\n   *\r\n   * @internal\r\n   **/\r\n  _onRightClick() {\r\n    this.model = this._viewToModelProvider[this._model.viewName].getModel(this._model.rightButton.value, this.valueOf);\r\n    this.onTouch();\r\n  }\r\n\r\n  /**\r\n   * Handles various key down events to move the `active date` around the calendar.\r\n   *\r\n   * @internal\r\n   **/\r\n  _handleKeyDown($event: KeyboardEvent): void {\r\n    const functionName = keyCodeToModelProviderMethod[$event.key];\r\n\r\n    if (functionName) {\r\n      const modelProvider = this._viewToModelProvider[this._model.viewName];\r\n      this.model = modelProvider[functionName](this._model.activeDate, this.valueOf);\r\n\r\n      this.focusActiveCell();\r\n      // Prevent unexpected default actions such as form submission.\r\n      $event.preventDefault();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Implements ControlValueAccessor.registerOnChange to register change listeners.\r\n   * @internal\r\n   **/\r\n  registerOnChange(fn: (value: D) => void) {\r\n    this._changed.push(fn);\r\n  }\r\n\r\n  /**\r\n   * Implements ControlValueAccessor.registerOnTouched to register touch listeners.\r\n   * @internal\r\n   **/\r\n  registerOnTouched(fn: () => void) {\r\n    this._touched.push(fn);\r\n  }\r\n\r\n  /**\r\n   * Implements ControlValueAccessor.writeValue to store the value from the model.\r\n   * @internal\r\n   **/\r\n  writeValue(value: D) {\r\n    this.value = value;\r\n  }\r\n\r\n}\r\n\r\n/** @internal */\r\nfunction hasValue(value: any): boolean {\r\n  return (typeof value !== 'undefined') && (value !== null);\r\n}\r\n","<div class=\"text-center dl-abdtp-{{_model.viewName}}-view\" [attr.data-dl-abdtp-view]=\"_model.viewName\">\n  <div class=\"row align-items-center no-gutters\">\n    <button class=\"col dl-abdtp-left-button align-items-center\"\n      type=\"button\"\n      [attr.aria-label]=\"_model.leftButton.ariaLabel\"\n      [attr.dl-abdtp-value]=\"_model.leftButton.value\"\n      [attr.title]=\"_model.leftButton.ariaLabel\"\n      (click)=\"_onLeftClick()\"\n      ><span class=\"left-icon\" [ngClass]=\"leftIconClass\"></span>\n    </button>\n\n    @if (_model.viewName === (this.maxView || 'year')) {\n      <div class=\"col-10 dl-abdtp-view-label\">{{_model.viewLabel}}</div>\n    } @else {\n      <button class=\"col-10 dl-abdtp-view-label dl-abdtp-up-button\"\n        type=\"button\"\n        [attr.aria-label]=\"_model.upButton.ariaLabel\"\n        [attr.dl-abdtp-value]=\"_model.upButton.value\"\n        [attr.title]=\"_model.upButton.ariaLabel\"\n        (click)=\"_onUpClick()\"\n        [ngClass]=\"_model.upButton.classes\"\n        >{{_model.viewLabel}}&nbsp;<span class=\"up-icon\" [ngClass]=\"upIconClass\"></span>\n      </button>\n    }\n\n    <button class=\"col dl-abdtp-right-button\"\n      type=\"button\"\n      [attr.aria-label]=\"_model.rightButton.ariaLabel\"\n      [attr.dl-abdtp-value]=\"_model.rightButton.value\"\n      [attr.title]=\"_model.rightButton.ariaLabel\"\n      (click)=\"_onRightClick()\"\n      ><span class=\"right-icon\" [ngClass]=\"rightIconClass\"></span>\n    </button>\n  </div>\n  <div (keydown)=\"_handleKeyDown($event)\">\n    @if (_model.rowLabels?.length) {\n      <div class=\"row no-gutters\">\n        @for (label of _model.rowLabels; track label) {\n          <div\n          class=\"col align-items-center no-gutters dl-abdtp-col-label\">{{label}}</div>\n        }\n      </div>\n    }\n    @for (row of _model.rows; track row) {\n      <div class=\"row align-items-center no-gutters\">\n        @for (cell of row.cells; track cell) {\n          <div\n            role=\"gridcell\"\n            class=\"col dl-abdtp-date-button dl-abdtp-{{_model.viewName}}\"\n            [ngClass]=\"cell.classes\"\n            [attr.aria-label]=\"cell.ariaLabel\"\n            [attr.aria-disabled]=\"cell.classes['dl-abdtp-disabled']\"\n            [attr.dl-abdtp-value]=\"cell.value\"\n            [attr.tabindex]=\"cell.classes['dl-abdtp-active'] ? 0 : -1\"\n            (click)=\"_onDateClick(cell)\"\n            (keydown.space)=\"_onDateClick(cell)\"\n            (keydown.enter)=\"_onDateClick(cell)\"\n          >{{cell.display}}</div>\n        }\n      </div>\n    }\n  </div>\n</div>\n\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\nimport {DlDateTimePickerComponent} from './dl-date-time-picker.component';\r\nimport {DlDayModelProvider} from './dl-model-provider-day';\r\nimport {DlHourModelProvider} from './dl-model-provider-hour';\r\nimport {DlMinuteModelProvider} from './dl-model-provider-minute';\r\nimport {DlMonthModelProvider} from './dl-model-provider-month';\r\nimport {DlYearModelProvider} from './dl-model-provider-year';\r\n\r\n/**\r\n * Import this module to supply your own `DateAdapter` provider.\r\n * @internal\r\n **/\r\n@NgModule({\r\n  declarations: [DlDateTimePickerComponent],\r\n  imports: [CommonModule],\r\n  exports: [DlDateTimePickerComponent],\r\n  providers: [\r\n    DlYearModelProvider,\r\n    DlMonthModelProvider,\r\n    DlDayModelProvider,\r\n    DlHourModelProvider,\r\n    DlMinuteModelProvider\r\n  ],\r\n})\r\nexport class DlDateTimePickerModule {\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nimport {SimpleChanges} from '@angular/core';\r\nimport {DlDateTimePickerModel} from './dl-date-time-picker-model';\r\n\r\n/**\r\n * Implemented by classes that provide models for the date/time picker.\r\n *\r\n * The terms `left`, `right`, `up`, and `down` are used in place of\r\n * `previous`, `next`, etc so that the model provider is UI centric\r\n * rather than time direction centric.\r\n *\r\n * For example, another calendar implementation may render `future` dates to the `left`.\r\n *\r\n * Having the api method `goLeft` may move the `active` cell to a\r\n * future or past value depending on the calendar implementation,\r\n * but both operations are performed with the `left-arrow` key.\r\n */\r\nexport interface DlModelProvider {\r\n\r\n  /**\r\n   * Receives configuration changes detected by Angular. (i.e. minuteStep)\r\n   *\r\n   * @param changes\r\n   *  the changes detected by Angular.\r\n   */\r\n  onChanges(changes: SimpleChanges): void;\r\n\r\n  /**\r\n   * Returns the model for the specified moment in time.\r\n   * @param milliseconds\r\n   *  the moment in time the model should represent.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker.\r\n   * @returns\r\n   *  the model representing the specified moment in time.\r\n   */\r\n  getModel(milliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell one cell down from the specified moment in time.\r\n   *\r\n   * The next cell `down` might be in a different time range than the currently\r\n   * displayed view. In this case, the model time range will include the new active cell.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next model `down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  the model representing the next model `down` from the specified moment in time.\r\n   */\r\n  goDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell to the `last` cell from the specified moment in time.\r\n   *\r\n   * Typically the view or time range will not change. However, changes to the view\r\n   * or time rage are not specifically prohibited.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `last` active cell will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  a model with the `last` cell in the view as the active cell.\r\n   */\r\n  goEnd(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell to the `first` cell from the specified moment in time.\r\n   *\r\n   * Typically the view or time range will not change. However, changes to the view\r\n   * or time rage are not specifically prohibited.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the `first` active cell will be calculated.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  a model with the `first` cell in the view as the active cell.\r\n   */\r\n  goHome(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell one cell to the `left` from the specified moment in time.\r\n   *\r\n   * The next cell `left` might be in a different time range than the currently\r\n   * displayed view. In this case, the model time range will include the new active cell.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next model `left` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  the model representing the next model `left` from the specified moment in time.\r\n   */\r\n  goLeft(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell one cell to the `right` from the specified moment in time.\r\n   *\r\n   * The next cell `right` might be in a different time range than the currently\r\n   * displayed view. In this case, the model time range will include the new active cell.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next model `right` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  the model representing the next model `right` from the specified moment in time.\r\n   */\r\n  goRight(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell one cell `up` from the specified moment in time.\r\n   *\r\n   * The next cell `up` might be in a different time range than the currently\r\n   * displayed view. In this case, the model time range will include the new active cell.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next model `up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  the model representing the next model `up` from the specified moment in time.\r\n   */\r\n  goUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell one `page-down` from the specified moment in time.\r\n   *\r\n   * The next cell `page-down` will be in a different time range than the currently\r\n   * displayed view and the model time range will include the new active cell.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next model `page-down` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  the model representing the next model `page-down` from the specified moment in time.\r\n   */\r\n  pageDown(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n\r\n  /**\r\n   * Move the `active` cell one `page-up` from the specified moment in time.\r\n   *\r\n   * The next cell `page-up` will be in a different time range than the currently\r\n   * displayed view and the model time range will include the new active cell.\r\n   *\r\n   * What happens is determined entirely by the implementation and it\r\n   * varies from view-to-view.\r\n   *\r\n   * This is used for keyboard navigation.\r\n   *\r\n   * @param fromMilliseconds\r\n   *  the moment in time from which the next model `page-up` will be constructed.\r\n   * @param selectedMilliseconds\r\n   *  the current value of the date/time picker\r\n   * @returns\r\n   *  the model representing the next model `page-up` from the specified moment in time.\r\n   */\r\n  pageUp(fromMilliseconds: number, selectedMilliseconds: number): DlDateTimePickerModel;\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nexport * from './dl-date-time-picker-change';\r\nexport * from './dl-date-time-picker-date-button';\r\nexport * from './dl-date-time-picker-model';\r\nexport * from './dl-date-time-picker.component';\r\nexport * from './dl-date-time-picker.module';\r\nexport * from './dl-model-provider';\r\nexport * from './dl-model-provider-day';\r\nexport * from './dl-model-provider-hour';\r\nexport * from './dl-model-provider-minute';\r\nexport * from './dl-model-provider-month';\r\nexport * from './dl-model-provider-year';\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nexport * from './core/public-api';\r\nexport * from './dl-date-time-input/public-api';\r\nexport * from './dl-date-time-picker/public-api';\r\n\r\n\r\n","/**\r\n * @license\r\n * Copyright 2013-present Dale Lotts All Rights Reserved.\r\n * http://www.dalelotts.com\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/dalelotts/angular-bootstrap-datetimepicker/blob/master/LICENSE\r\n */\r\n\r\nexport * from './public-api';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["moment","i1.DlDateAdapter","i2.DlYearModelProvider","i3.DlMonthModelProvider","i4.DlDayModelProvider","i5.DlHourModelProvider","i6.DlMinuteModelProvider"],"mappings":"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"}