{"version":3,"file":"ngx-bootstrap-datepicker.mjs","sources":["../../../../src/datepicker/bs-datepicker.config.ts","../../../../src/datepicker/datepicker-animations.ts","../../../../src/datepicker/base/bs-datepicker-container.ts","../../../../src/datepicker/reducer/bs-datepicker.actions.ts","../../../../src/datepicker/bs-locale.service.ts","../../../../src/datepicker/reducer/bs-datepicker.effects.ts","../../../../src/datepicker/reducer/_defaults.ts","../../../../src/datepicker/reducer/bs-datepicker.state.ts","../../../../src/datepicker/utils/bs-calendar-utils.ts","../../../../src/datepicker/utils/matrix-utils.ts","../../../../src/datepicker/engine/calc-days-calendar.ts","../../../../src/datepicker/engine/format-days-calendar.ts","../../../../src/datepicker/engine/flag-days-calendar.ts","../../../../src/datepicker/engine/view-mode.ts","../../../../src/datepicker/engine/format-months-calendar.ts","../../../../src/datepicker/engine/flag-months-calendar.ts","../../../../src/datepicker/engine/format-years-calendar.ts","../../../../src/datepicker/engine/flag-years-calendar.ts","../../../../src/datepicker/utils/copy-time-utils.ts","../../../../src/datepicker/reducer/bs-datepicker.reducer.ts","../../../../src/datepicker/reducer/bs-datepicker.store.ts","../../../../src/datepicker/themes/bs/bs-custom-dates-view.component.ts","../../../../src/datepicker/models/index.ts","../../../../src/datepicker/themes/bs/bs-current-date-view.component.ts","../../../../src/datepicker/themes/bs/bs-timepicker-view.component.ts","../../../../src/datepicker/themes/bs/bs-calendar-layout.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","../../../../src/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","../../../../src/datepicker/themes/bs/bs-days-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-months-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-years-calendar-view.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-container.component.ts","../../../../src/datepicker/themes/bs/bs-datepicker-view.html","../../../../src/datepicker/bs-datepicker.component.ts","../../../../src/datepicker/bs-datepicker-inline.config.ts","../../../../src/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","../../../../src/datepicker/bs-datepicker-inline.component.ts","../../../../src/datepicker/bs-daterangepicker-inline.config.ts","../../../../src/datepicker/themes/bs/bs-daterangepicker-container.component.ts","../../../../src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","../../../../src/datepicker/bs-daterangepicker-inline.component.ts","../../../../src/datepicker/bs-datepicker-input.directive.ts","../../../../src/datepicker/bs-daterangepicker.config.ts","../../../../src/datepicker/bs-daterangepicker.component.ts","../../../../src/datepicker/bs-daterangepicker-input.directive.ts","../../../../src/datepicker/bs-datepicker.module.ts","../../../../src/datepicker/ngx-bootstrap-datepicker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n  DatepickerRenderOptions,\n  BsDatepickerViewMode,\n  DatepickerDateCustomClasses,\n  DatepickerDateTooltipText\n} from './models';\nimport { BsCustomDates } from './themes/bs/bs-custom-dates-view.component';\n\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\n  /** sets use adaptive position */\n  adaptivePosition = false;\n  /** sets use UTC date time format */\n  useUtc = false;\n  /** turn on/off animation */\n  isAnimated = false;\n  value?: Date | Date[];\n  isDisabled?: boolean;\n  /**\n   * Default min date for all date/range pickers\n   */\n  minDate?: Date;\n  /**\n   * Default max date for all date/range pickers\n   */\n  maxDate?: Date;\n  /**\n   * The view that the datepicker should start in\n   */\n  startView: BsDatepickerViewMode = 'day';\n  /**\n   * Default date custom classes for all date/range pickers\n   */\n  dateCustomClasses?: DatepickerDateCustomClasses[];\n  /**\n   * Default tooltip text for all date/range pickers\n   */\n  dateTooltipTexts?: DatepickerDateTooltipText[];\n  /**\n   * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n   */\n  daysDisabled?: number[];\n  /**\n   * Disable specific dates\n   */\n  datesDisabled?: Date[];\n  /**\n   * Show one months for special cases (only for dateRangePicker)\n   * 1. maxDate is equal to today's date\n   * 2. minDate's month is equal to maxDate's month\n   */\n  displayOneMonthRange?: boolean;\n  /**\n   * Enable specific dates\n   */\n  datesEnabled?: Date[];\n  /**\n   * Makes dates from other months active\n   */\n  selectFromOtherMonth?: boolean;\n\n  /**\n   * Allows select first date of the week by click on week number\n   */\n  selectWeek?: boolean;\n\n  /**\n   * Allows select daterange as first and last day of week by click on week number (dateRangePicker only)\n   */\n  selectWeekDateRange?: boolean;\n\n  /**\n   * Shows previous and current month, instead of current and next (dateRangePicker only)\n   */\n  showPreviousMonth?: boolean;\n\n  /**\n   * Prevents change to next month for right calendar in two calendars view (dateRangePicker only)\n   */\n  preventChangeToNextMonth?: boolean;\n\n  /**\n   * Add class to current day\n   */\n  customTodayClass?: string;\n\n  /**\n   * Default mode for all date pickers\n   */\n  minMode?: BsDatepickerViewMode;\n\n  /**\n   * If true, returns focus to the datepicker / daterangepicker input after date selection\n   */\n  returnFocusToInput = false;\n\n  /** CSS class which will be applied to datepicker container,\n   * usually used to set color theme\n   */\n  containerClass = 'theme-green';\n\n  // DatepickerRenderOptions\n  displayMonths = 1;\n  /**\n   * Allows to hide week numbers in datepicker\n   */\n  showWeekNumbers = true;\n\n  dateInputFormat = 'L';\n  // range picker\n  rangeSeparator = ' - ';\n  /**\n   * Date format for date range input field\n   */\n  rangeInputFormat = 'L';\n\n  /**\n   * Predefined ranges\n   */\n  ranges?: BsCustomDates[];\n\n  /**\n   * Max Date Range in days\n   */\n  maxDateRange?: number;\n\n  // DatepickerFormatOptions\n  monthTitle = 'MMMM';\n  yearTitle = 'YYYY';\n  dayLabel = 'D';\n  monthLabel = 'MMMM';\n  yearLabel = 'YYYY';\n  weekNumbers = 'w';\n\n  /**\n   * Shows 'today' button\n   */\n  showTodayButton = false;\n\n  /**\n   * Shows clear button\n   */\n  showClearButton = false;\n\n  /**\n   * Positioning of 'today' button\n   */\n  todayPosition = 'center';\n\n  /**\n   * Positioning of 'clear' button\n   */\n  clearPosition = 'right';\n\n  /**\n   * Label for 'today' button\n   */\n  todayButtonLabel = 'Today';\n\n  /**\n   * Label for 'clear' button\n   */\n  clearButtonLabel = 'Clear';\n\n  /**\n   * Label for 'custom range' button\n   */\n  customRangeButtonLabel = 'Custom Range';\n\n  /**\n   * Shows timepicker under datepicker\n   */\n  withTimepicker = false;\n  /**\n   * Set current hours, minutes, seconds and milliseconds for bsValue\n   */\n  initCurrentTime?: boolean;\n  /**\n   * Set allowed positions of container.\n   */\n  allowedPositions = ['top', 'bottom'];\n  /**\n   * Set rule for datepicker closing. If value is true datepicker closes only if date is changed, if user changes only time datepicker doesn't close. It is available only if property withTimepicker is set true\n   * */\n  keepDatepickerOpened = false;\n  /**\n   * Allows keep invalid dates in range. Can be used with minDate, maxDate\n   * */\n  keepDatesOutOfRules = false;\n}\n","import {\n  animate,\n  style,\n  AnimationTriggerMetadata,\n  state,\n  transition,\n  trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n  trigger('datepickerAnimation', [\n    state('animated-down', style({ height: '*', overflow: 'hidden'})),\n    transition('* => animated-down', [\n      style({ height: 0, overflow: 'hidden' }),\n      animate(DATEPICKER_ANIMATION_TIMING)\n    ]),\n    state('animated-up', style({ height: '*', overflow: 'hidden'})),\n    transition('* => animated-up', [\n      style({ height: '*', overflow: 'hidden' }),\n      animate(DATEPICKER_ANIMATION_TIMING)\n    ]),\n    transition('* => unanimated', animate('0s'))\n  ]);\n","// datepicker container component\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n  BsDatepickerViewMode,\n  BsNavigationEvent,\n  CalendarCellViewModel,\n  CellHoverEvent,\n  DatepickerRenderOptions,\n  DatepickerDateCustomClasses,\n  DatepickerDateTooltipText,\n  DaysCalendarViewModel,\n  DayViewModel,\n  MonthsCalendarViewModel,\n  WeekViewModel,\n  YearsCalendarViewModel\n} from '../models';\n\nexport abstract class BsDatepickerAbstractComponent {\n  containerClass = '';\n  isOtherMonthsActive?: boolean;\n  showTodayBtn?: boolean;\n  todayBtnLbl?: string;\n  todayPos?: string;\n  showClearBtn?: boolean;\n  clearBtnLbl?: string;\n  clearPos?: string;\n\n  _effects?: BsDatepickerEffects;\n  customRanges: BsCustomDates[] = [];\n  customRangeBtnLbl?: string;\n  chosenRange: Date[] = [];\n\n  multipleCalendars?: boolean;\n\n  isRangePicker?: boolean;\n  withTimepicker?: boolean;\n\n  set minDate(value: Date|undefined) {\n    this._effects?.setMinDate(value);\n  }\n\n  set maxDate(value: Date|undefined) {\n    this._effects?.setMaxDate(value);\n  }\n  set daysDisabled(value: number[]|undefined) {\n    this._effects?.setDaysDisabled(value);\n  }\n  set datesDisabled(value: Date[]|undefined) {\n    this._effects?.setDatesDisabled(value);\n  }\n\n  set datesEnabled(value: Date[]|undefined) {\n    this._effects?.setDatesEnabled(value);\n  }\n\n  set isDisabled(value: boolean|undefined) {\n    this._effects?.setDisabled(value);\n  }\n\n  set dateCustomClasses(value: DatepickerDateCustomClasses[]|undefined) {\n    this._effects?.setDateCustomClasses(value);\n  }\n\n  set dateTooltipTexts(value: DatepickerDateTooltipText[]|undefined) {\n    this._effects?.setDateTooltipTexts(value);\n  }\n\n  viewMode?: Observable<BsDatepickerViewMode|undefined>;\n  monthsCalendar?: Observable<MonthsCalendarViewModel[]|undefined>;\n  yearsCalendar?: Observable<YearsCalendarViewModel[]|undefined>;\n  options$!: Observable<DatepickerRenderOptions|undefined>;\n\n  _daysCalendar$!: Observable<DaysCalendarViewModel[]|undefined>;\n  _daysCalendarSub = new Subscription();\n\n  set daysCalendar$(value: Observable<DaysCalendarViewModel[]|undefined>) {\n    this._daysCalendar$ = value;\n    this._daysCalendarSub.unsubscribe();\n    this._daysCalendarSub.add(this._daysCalendar$.subscribe(value => {\n      this.multipleCalendars = !!value && value.length > 1;\n    }));\n  }\n\n  get daysCalendar$(): Observable<DaysCalendarViewModel[]|undefined> {\n    return this._daysCalendar$;\n  }\n\n  selectedTime?: Observable<Date[]|undefined>;\n  selectedTimeSub = new Subscription();\n\n  // todo: valorkin fix\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\n  setViewMode(event: BsDatepickerViewMode): void {}\n\n  // eslint-disable-next-line\n  navigateTo(event: BsNavigationEvent): void {}\n\n  // eslint-disable-next-line\n  dayHoverHandler(event: CellHoverEvent): void {}\n\n  // eslint-disable-next-line\n  weekHoverHandler(event: WeekViewModel): void {}\n\n  // eslint-disable-next-line\n  monthHoverHandler(event: CellHoverEvent): void {}\n\n  // eslint-disable-next-line\n  yearHoverHandler(event: CellHoverEvent): void {}\n\n  // eslint-disable-next-line\n  timeSelectHandler(date: Date, index: number): void {}\n\n  // eslint-disable-next-line\n  daySelectHandler(day: DayViewModel): void {}\n\n  // eslint-disable-next-line\n  monthSelectHandler(event: CalendarCellViewModel): void {}\n\n  // eslint-disable-next-line\n  yearSelectHandler(event: CalendarCellViewModel): void {}\n\n  // eslint-disable-next-line\n  setRangeOnCalendar(dates: BsCustomDates): void {}\n\n  // eslint-disable-next-line\n  setToday(): void {}\n\n  // eslint-disable-next-line\n  clearDate(): void {}\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  _stopPropagation(event: any): void {\n    event.stopPropagation();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { TimeUnit } from 'ngx-bootstrap/chronos';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport {\n  BsDatepickerViewMode,\n  BsViewNavigationEvent,\n  CellHoverEvent,\n  DatepickerRenderOptions,\n  DatepickerDateCustomClasses,\n  DatepickerDateTooltipText\n} from '../models';\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerActions {\n  static readonly CALCULATE = '[datepicker] calculate dates matrix';\n  static readonly FORMAT = '[datepicker] format datepicker values';\n  static readonly FLAG = '[datepicker] set flags';\n  static readonly SELECT = '[datepicker] select date';\n  static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\n  static readonly NAVIGATE_TO = '[datepicker] change view date';\n  static readonly SET_OPTIONS = '[datepicker] update render options';\n  static readonly HOVER = '[datepicker] hover date';\n  static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\n\n  static readonly SET_MIN_DATE = '[datepicker] set min date';\n  static readonly SET_MAX_DATE = '[datepicker] set max date';\n  static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\n  static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\n  static readonly SET_DATESENABLED = '[datepicker] set dates enabled';\n  static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\n  static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n  static readonly SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\n  static readonly SET_LOCALE = '[datepicker] set datepicker locale';\n  static readonly SELECT_TIME = '[datepicker] select time';\n\n  static readonly SELECT_RANGE = '[daterangepicker] select dates range';\n\n  calculate(): Action {\n    return { type: BsDatepickerActions.CALCULATE };\n  }\n\n  format(): Action {\n    return { type: BsDatepickerActions.FORMAT };\n  }\n\n  flag(): Action {\n    return { type: BsDatepickerActions.FLAG };\n  }\n\n  select(date?: Date): Action {\n    return {\n      type: BsDatepickerActions.SELECT,\n      payload: date\n    };\n  }\n\n  selectTime(date: Date, index: number): Action {\n    return  {\n      type: BsDatepickerActions.SELECT_TIME,\n      payload: { date, index },\n    };\n  }\n\n  changeViewMode(event: BsDatepickerViewMode): Action {\n    return {\n      type: BsDatepickerActions.CHANGE_VIEWMODE,\n      payload: event\n    };\n  }\n\n  navigateTo(event: BsViewNavigationEvent): Action {\n    return {\n      type: BsDatepickerActions.NAVIGATE_TO,\n      payload: event\n    };\n  }\n\n  navigateStep(step?: TimeUnit): Action {\n    return {\n      type: BsDatepickerActions.NAVIGATE_OFFSET,\n      payload: step\n    };\n  }\n\n  setOptions(options: DatepickerRenderOptions): Action {\n    return {\n      type: BsDatepickerActions.SET_OPTIONS,\n      payload: options\n    };\n  }\n\n  // date range picker\n  selectRange(value?: (Date|undefined)[] | undefined): Action {\n    return {\n      type: BsDatepickerActions.SELECT_RANGE,\n      payload: value\n    };\n  }\n\n  hoverDay(event: CellHoverEvent): Action {\n    return {\n      type: BsDatepickerActions.HOVER,\n      payload: event.isHovered ? event.cell.date : null\n    };\n  }\n\n  minDate(date?: Date): Action {\n    return {\n      type: BsDatepickerActions.SET_MIN_DATE,\n      payload: date\n    };\n  }\n\n  maxDate(date?: Date): Action {\n    return {\n      type: BsDatepickerActions.SET_MAX_DATE,\n      payload: date\n    };\n  }\n\n  daysDisabled(days?: number[]): Action {\n    return {\n      type: BsDatepickerActions.SET_DAYSDISABLED,\n      payload: days\n    };\n  }\n\n  datesDisabled(dates?: Date[]): Action {\n    return {\n      type: BsDatepickerActions.SET_DATESDISABLED,\n      payload: dates\n    };\n  }\n\n  datesEnabled(dates?: Date[]): Action {\n    return {\n      type: BsDatepickerActions.SET_DATESENABLED,\n      payload: dates\n    };\n  }\n\n  isDisabled(value?: boolean): Action {\n    return {\n      type: BsDatepickerActions.SET_IS_DISABLED,\n      payload: value\n    };\n  }\n\n  setDateCustomClasses(value?: DatepickerDateCustomClasses[]): Action {\n    return {\n      type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\n      payload: value\n    };\n  }\n\n  setDateTooltipTexts(value?: DatepickerDateTooltipText[]): Action {\n    return {\n      type: BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS,\n      payload: value\n    };\n  }\n\n  setLocale(locale: string): Action {\n    return {\n      type: BsDatepickerActions.SET_LOCALE,\n      payload: locale\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({providedIn: 'platform'})\nexport class BsLocaleService {\n  private _defaultLocale = 'en';\n  private _locale = new BehaviorSubject<string>(this._defaultLocale);\n  private _localeChange: Observable<string> = this._locale.asObservable();\n\n  get locale(): BehaviorSubject<string> {\n    return this._locale;\n  }\n\n  get localeChange(): Observable<string> {\n    return this._localeChange;\n  }\n\n  get currentLocale(): string {\n    return this._locale.getValue();\n  }\n\n  use(locale: string): void {\n    if (locale === this.currentLocale) {\n      return;\n    }\n\n    this._locale.next(locale);\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n  BsDatepickerViewMode,\n  BsNavigationEvent,\n  CellHoverEvent,\n  DatepickerDateCustomClasses,\n  DatepickerDateTooltipText,\n  DatepickerRenderOptions,\n  DaysCalendarViewModel,\n  DayViewModel,\n  MonthsCalendarViewModel,\n  YearsCalendarViewModel\n} from '../models';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsDatepickerStore } from './bs-datepicker.store';\n\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerEffects {\n  viewMode?: Observable<BsDatepickerViewMode>;\n  daysCalendar?: Observable<DaysCalendarViewModel[]>;\n  monthsCalendar?: Observable<MonthsCalendarViewModel[]>;\n  yearsCalendar?: Observable<YearsCalendarViewModel[]>;\n  options?: Observable<DatepickerRenderOptions>;\n\n  private _store?: BsDatepickerStore;\n  private _subs: Subscription[] = [];\n\n  constructor(private _actions: BsDatepickerActions,\n              private _localeService: BsLocaleService) {\n  }\n\n  init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\n    this._store = _bsDatepickerStore;\n\n    return this;\n  }\n\n  /** setters */\n\n  setValue(value?: Date): void {\n    this._store?.dispatch(this._actions.select(value));\n  }\n\n  setRangeValue(value?: (Date|undefined)[] | undefined): void {\n    this._store?.dispatch(this._actions.selectRange(value));\n  }\n\n  setMinDate(value?: Date): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.minDate(value));\n\n    return this;\n  }\n\n  setMaxDate(value?: Date): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.maxDate(value));\n\n    return this;\n  }\n\n  setDaysDisabled(value?: number[]): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.daysDisabled(value));\n\n    return this;\n  }\n\n  setDatesDisabled(value?: Date[]): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.datesDisabled(value));\n\n    return this;\n  }\n\n  setDatesEnabled(value?: Date[]): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.datesEnabled(value));\n\n    return this;\n  }\n\n  setDisabled(value?: boolean): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.isDisabled(value));\n\n    return this;\n  }\n\n  setDateCustomClasses(value?: DatepickerDateCustomClasses[]): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.setDateCustomClasses(value));\n\n    return this;\n  }\n\n  setDateTooltipTexts(value?: DatepickerDateTooltipText[]): BsDatepickerEffects {\n    this._store?.dispatch(this._actions.setDateTooltipTexts(value));\n\n    return this;\n  }\n\n  /* Set rendering options */\n  setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\n    const _options = Object.assign({ locale: this._localeService.currentLocale }, _config);\n    this._store?.dispatch(this._actions.setOptions(_options));\n\n    return this;\n  }\n\n  /** view to mode bindings */\n  setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n    if (!this._store) {\n      return this;\n    }\n\n    container.selectedTime = this._store.select(state => state.selectedTime)\n      .pipe(filter(times => !!times));\n\n    container.daysCalendar$ = this._store.select(state => state.flaggedMonths)\n      .pipe(filter(months => !!months));\n\n    // month calendar\n    container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar)\n      .pipe(filter(months => !!months));\n\n    // year calendar\n    container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged)\n      .pipe(filter(years => !!years));\n\n    container.viewMode = this._store.select(state => state.view?.mode);\n\n    container.options$ = combineLatest([\n      this._store.select(state => state.showWeekNumbers),\n      this._store.select(state => state.displayMonths)\n    ])\n      .pipe(map((latest) => ({\n          showWeekNumbers: latest[0],\n          displayMonths: latest[1]\n        })\n      ));\n\n    return this;\n  }\n\n  /** event handlers */\n  setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n    container.setViewMode = (event: BsDatepickerViewMode): void => {\n      this._store?.dispatch(this._actions.changeViewMode(event));\n    };\n\n    container.navigateTo = (event: BsNavigationEvent): void => {\n      this._store?.dispatch(this._actions.navigateStep(event.step));\n    };\n\n    container.dayHoverHandler = (event: CellHoverEvent): void => {\n      const _cell = event.cell as DayViewModel;\n      if (_cell.isOtherMonth || _cell.isDisabled) {\n        return;\n      }\n\n      this._store?.dispatch(this._actions.hoverDay(event));\n      _cell.isHovered = event.isHovered;\n    };\n\n    container.monthHoverHandler = (event: CellHoverEvent): void => {\n      event.cell.isHovered = event.isHovered;\n    };\n\n    container.yearHoverHandler = (event: CellHoverEvent): void => {\n      event.cell.isHovered = event.isHovered;\n    };\n\n    return this;\n  }\n\n  registerDatepickerSideEffects(): BsDatepickerEffects {\n    if (!this._store) {\n      return this;\n    }\n\n    this._subs.push(\n      this._store.select(state => state.view).subscribe(() => {\n        this._store?.dispatch(this._actions.calculate());\n      })\n    );\n\n    // format calendar values on month model change\n    this._subs.push(\n      this._store\n        .select(state => state.monthsModel)\n        .pipe(\n          filter(monthModel => !!monthModel)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.format()))\n    );\n\n    // flag day values\n    this._subs.push(\n      this._store\n        .select(state => state.formattedMonths)\n        .pipe(\n          filter(month => !!month)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // flag day values\n    this._subs.push(\n      this._store\n        .select(state => state.selectedDate)\n        .pipe(\n          filter(selectedDate => !!selectedDate)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // flag for date range picker\n    this._subs.push(\n      this._store\n        .select(state => state.selectedRange)\n        .pipe(\n          filter(selectedRange => !!selectedRange)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // monthsCalendar\n    this._subs.push(\n      this._store\n        .select(state => state.monthsCalendar)\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // years calendar\n    this._subs.push(\n      this._store\n        .select(state => state.yearsCalendarModel)\n        .pipe(\n          filter(state => !!state)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // on hover\n    this._subs.push(\n      this._store\n        .select(state => state.hoveredDate)\n        .pipe(\n          filter(hoveredDate => !!hoveredDate)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // date custom classes\n    this._subs.push(\n      this._store\n        .select(state => state.dateCustomClasses)\n        .pipe(\n          filter(dateCustomClasses => !!dateCustomClasses)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // date tooltip texts\n    this._subs.push(\n      this._store\n        .select(state => state.dateTooltipTexts)\n        .pipe(\n          filter(dateTooltipTexts => !!dateTooltipTexts)\n        )\n        .subscribe(() => this._store?.dispatch(this._actions.flag()))\n    );\n\n    // on locale change\n    this._subs.push(\n      this._localeService.localeChange\n        .subscribe(locale => this._store?.dispatch(this._actions.setLocale(locale)))\n    );\n\n    return this;\n  }\n\n  destroy(): void {\n    for (const sub of this._subs) {\n      sub.unsubscribe();\n    }\n  }\n}\n","import {\n  MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n  width: 7,\n  height: 6\n};\n\nexport const dayInMilliseconds = 24 * 60 * 60 * 1000;\n","import {\n  BsDatepickerViewMode,\n  DatepickerFormatOptions,\n  DatepickerRenderOptions,\n  DatepickerDateCustomClasses,\n  DatepickerDateTooltipText,\n  DaysCalendarModel,\n  DaysCalendarViewModel,\n  MonthsCalendarViewModel,\n  MonthViewOptions,\n  YearsCalendarViewModel\n} from '../models';\nimport { defaultMonthOptions } from './_defaults';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\n\nexport interface BsDatepickerViewState {\n  date: Date;\n  mode: BsDatepickerViewMode;\n}\n\nexport class BsDatepickerState\n  implements DatepickerRenderOptions, DatepickerFormatOptions {\n  // date picker\n  selectedDate?: Date;\n  // daterange picker\n  selectedRange?: Date[];\n  // time picker\n  selectedTime?: Date[];\n\n  // initial date of calendar, today by default\n  view?: BsDatepickerViewState;\n\n  isDisabled?: boolean;\n  // bounds\n  minDate?: Date;\n  maxDate?: Date;\n  daysDisabled?: number[];\n  datesDisabled?: Date[];\n  datesEnabled?: Date[];\n  minMode?: BsDatepickerViewMode;\n  dateCustomClasses?: DatepickerDateCustomClasses[];\n  dateTooltipTexts?: DatepickerDateTooltipText[];\n\n  hoveredDate?: Date;\n  hoveredMonth?: Date;\n  hoveredYear?: Date;\n\n  // days calendar\n  monthsModel?: DaysCalendarModel[];\n  formattedMonths?: DaysCalendarViewModel[];\n  flaggedMonths?: DaysCalendarViewModel[];\n  selectFromOtherMonth?: boolean;\n  showPreviousMonth?: boolean; // dateRangePicker only;\n  preventChangeToNextMonth?: boolean; // dateRangePicker only;\n  displayOneMonthRange?: boolean; // dateRangePicker only;\n\n  // months calendar\n  monthsCalendar?: MonthsCalendarViewModel[];\n  flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n  // years calendar\n  yearsCalendarModel?: YearsCalendarViewModel[];\n  yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n  // options\n  monthViewOptions?: MonthViewOptions;\n\n  // DatepickerRenderOptions\n  showWeekNumbers = true;\n  displayMonths = 1;\n\n  // DatepickerFormatOptions\n  locale?: string;\n\n  monthTitle?: string;\n  yearTitle?: string;\n\n  dayLabel?: string;\n  monthLabel?: string;\n  yearLabel?: string;\n\n  weekNumbers?: string;\n}\n\nconst _initialView: BsDatepickerViewState = { date: new Date(), mode: 'day' };\n\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\n  new BsDatepickerConfig(),\n  {\n    locale: 'en',\n    view: _initialView,\n    selectedRange: [],\n    selectedTime: [],\n    monthViewOptions: defaultMonthOptions\n  }\n);\n","import {\n  getDay,\n  isFirstDayOfWeek,\n  isAfter,\n  isBefore,\n  shiftDate,\n  endOf,\n  startOf,\n  isArray,\n  isSame\n} from 'ngx-bootstrap/chronos';\nimport { BsDatepickerState } from '../reducer/bs-datepicker.state';\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\n\nexport function getStartingDayOfCalendar(date: Date,\n                                         options: { firstDayOfWeek?: number }): Date {\n  if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n    return date;\n  }\n\n  const weekDay = getDay(date);\n  const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n  return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset?: number): number {\n  const _startingDayOffset = Number(startingDayOffset);\n  if (isNaN(_startingDayOffset)) {\n    return 0;\n  }\n\n  if (_startingDayOffset === 0) {\n    return weekday;\n  }\n\n  const offset = weekday - _startingDayOffset % 7;\n\n  return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min?: Date, max?: Date): boolean {\n  const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n  const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n\n  return minBound || maxBound || false;\n}\n\nexport function isYearDisabled(date: Date, min?: Date, max?: Date): boolean {\n  const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n  const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n\n  return minBound || maxBound || false;\n}\n\nexport function isDisabledDate(date?: Date, datesDisabled?: Date[], unit?: 'year' | 'date' | 'month'): boolean {\n  if (!datesDisabled  || !isArray(datesDisabled) || !datesDisabled.length) {\n    return false;\n  }\n\n  if (unit && unit === 'year' && !datesDisabled[0].getDate()) {\n    return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'year'));\n  }\n\n  return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function isEnabledDate(date?: Date, datesEnabled?: Date[], unit?: 'year' | 'date' | 'month'): boolean {\n  if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n    return false;\n  }\n\n  return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, unit || 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date | undefined {\n  const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n  return model?.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n\nexport function checkRangesWithMaxDate(ranges?: BsCustomDates[], maxDate?: Date): BsCustomDates[] | undefined {\n  if (!ranges) return ranges;\n  if (!maxDate) return ranges;\n  if (!ranges.length && !ranges[0].value) return  ranges;\n\n  ranges.forEach((item: BsCustomDates) => {\n    if (!item || !item.value) return ranges;\n    if (item.value instanceof Date) return  ranges;\n    if (!(item.value instanceof Array && item.value.length) ) return ranges;\n    item.value = compareDateWithMaxDateHelper(item.value, maxDate);\n    return ranges;\n  });\n  return ranges;\n}\n\nexport function checkBsValue(date?: Array<Date> | Date | (Date | undefined)[], maxDate?: Date): Array<Date> | Date | (Date|undefined)[] | undefined {\n  if (!date) return date;\n  if (!maxDate) return date;\n  if (date instanceof Array && !date.length) return date;\n  if (date instanceof Date) return  date;\n  return compareDateWithMaxDateHelper(date, maxDate);\n}\n\nfunction compareDateWithMaxDateHelper <T>(date: T, maxDate: Date): T | Date[] {\n  if (date instanceof Array) {\n    const editedValues = date.map(item => {\n      if (!item) return  item;\n      if (isAfter(item, maxDate, 'date')) item = maxDate;\n      return item;\n    });\n    return editedValues;\n  }\n  return date;\n}\n\nexport function setCurrentTimeOnDateSelect(value?: Date): Date | undefined {\n  if (!value) return value;\n\n  return setCurrentTimeHelper(value);\n}\n\nexport function setDateRangesCurrentTimeOnDateSelect(value?: (Date|undefined)[]): (Date|undefined)[] | undefined {\n  if (!value?.length) return value;\n\n  value.map((date) => {\n    if (!date) {\n      return date;\n    }\n    return setCurrentTimeHelper(date);\n  });\n\n  return value;\n}\n\nfunction setCurrentTimeHelper(date: Date): Date {\n  const now = new Date();\n  date.setMilliseconds(now.getMilliseconds());\n  date.setSeconds(now.getSeconds());\n  date.setMinutes(now.getMinutes());\n  date.setHours(now.getHours());\n  return date;\n}\n","import { TimeUnit, shiftDate } from 'ngx-bootstrap/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n  height: number;\n  width: number;\n  initialDate: Date;\n  shift: TimeUnit;\n}\n\nexport function createMatrix<T>(\n  options: MatrixOptions,\n  fn: CreateMatrixCb<T>\n): T[][] {\n  let prevValue = options.initialDate;\n  const matrix: T[][] = new Array(options.height);\n  for (let i = 0; i < options.height; i++) {\n    matrix[i] = new Array(options.width);\n    for (let j = 0; j < options.width; j++) {\n      matrix[i][j] = fn(prevValue);\n      prevValue = shiftDate(prevValue, options.shift);\n    }\n  }\n\n  return matrix;\n}\n","// user and model input should handle parsing and validating input values\nimport { getFirstDayOfMonth } from 'ngx-bootstrap/chronos';\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix, MatrixOptions } from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(\n  startingDate: Date,\n  options: MonthViewOptions\n): DaysCalendarModel {\n  const firstDay = getFirstDayOfMonth(startingDate);\n  const initialDate = getStartingDayOfCalendar(firstDay, options);\n\n  // todo test\n  const matrixOptions: MatrixOptions = {\n    width: options.width || 0,\n    height: options.height || 0,\n    initialDate,\n    shift: { day: 1 }\n  };\n  const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\n\n  return {\n    daysMatrix,\n    month: firstDay\n  };\n}\n","import {\n  DatepickerFormatOptions,\n  DaysCalendarModel,\n  DaysCalendarViewModel\n} from '../models';\nimport { formatDate, getLocale } from 'ngx-bootstrap/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\n                                   formatOptions: DatepickerFormatOptions,\n                                   monthIndex: number): DaysCalendarViewModel {\n  return {\n    month: daysCalendar.month,\n    monthTitle: formatDate(\n      daysCalendar.month,\n      formatOptions.monthTitle,\n      formatOptions.locale\n    ),\n    yearTitle: formatDate(\n      daysCalendar.month,\n      formatOptions.yearTitle,\n      formatOptions.locale\n    ),\n    weekNumbers: getWeekNumbers(\n      daysCalendar.daysMatrix,\n      formatOptions.weekNumbers,\n      formatOptions.locale\n    ),\n    weekdays: getShiftedWeekdays(formatOptions.locale),\n    weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n      days: week.map((date: Date, dayIndex: number) => ({\n        date,\n        label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n        monthIndex,\n        weekIndex,\n        dayIndex\n      }))\n    })),\n    hideLeftArrow: false,\n    hideRightArrow: false,\n    disableLeftArrow: false,\n    disableRightArrow: false\n  };\n}\n\nexport function getWeekNumbers(daysMatrix: Date[][],\n                               format?: string,\n                               locale?: string): string[] {\n  return daysMatrix.map(\n    (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\n  );\n}\n\nexport function getShiftedWeekdays(locale?: string): string[] {\n  const _locale = getLocale(locale);\n  const weekdays = _locale.weekdaysShort() as string[];\n  const firstDayOfWeek = _locale.firstDayOfWeek();\n\n  return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n","import {\n  DaysCalendarViewModel,\n  DayViewModel,\n  WeekViewModel,\n  DatepickerDateCustomClasses,\n  DatepickerDateTooltipText\n} from '../models';\n\nimport {\n  isAfter,\n  isBefore,\n  isDisabledDay,\n  isSameDay,\n  isSameMonth,\n  shiftDate\n} from 'ngx-bootstrap/chronos';\n\nimport { isMonthDisabled, isDisabledDate, isEnabledDate } from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n  isDisabled: boolean;\n  minDate: Date;\n  maxDate: Date;\n  daysDisabled: number[];\n  datesDisabled: Date[];\n  datesEnabled: Date[];\n  hoveredDate: Date;\n  selectedDate: Date;\n  selectedRange: Date[];\n  displayMonths: number;\n  monthIndex: number;\n  dateCustomClasses: DatepickerDateCustomClasses[];\n  dateTooltipTexts: DatepickerDateTooltipText[];\n}\n\nexport function flagDaysCalendar(\n  formattedMonth: DaysCalendarViewModel,\n  options: Partial<FlagDaysCalendarOptions>\n): DaysCalendarViewModel {\n  formattedMonth.weeks.forEach((week: WeekViewModel) => {\n        week.days.forEach((day: DayViewModel, dayIndex: number) => {\n      // datepicker\n      const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n\n      const isHovered =\n        !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n      // date range picker\n      const isSelectionStart =\n        !isOtherMonth &&\n        options.selectedRange &&\n        isSameDay(day.date, options.selectedRange[0]);\n      const isSelectionEnd =\n        !isOtherMonth &&\n        options.selectedRange &&\n        isSameDay(day.date, options.selectedRange[1]);\n\n      const isSelected =\n        (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n        isSelectionStart ||\n        isSelectionEnd;\n\n      const isInRange =\n        !isOtherMonth &&\n        options.selectedRange &&\n        isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n\n      const isDisabled =\n        options.isDisabled ||\n        isBefore(day.date, options.minDate, 'day') ||\n        isAfter(day.date, options.maxDate, 'day') ||\n        isDisabledDay(day.date, options.daysDisabled) ||\n        isDisabledDate(day.date, options.datesDisabled) ||\n        isEnabledDate(day.date, options.datesEnabled);\n\n      const currentDate = new Date();\n      const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n\n      const customClasses = options.dateCustomClasses && options.dateCustomClasses\n        .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n        .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n        .join(' ')\n        || '';\n\n      const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\n          .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\n          .reduce((previousValue, currentValue) => {\n            previousValue.push(currentValue);\n            return previousValue;\n          }, [] as string[])\n          .join(' ')\n        || '';\n\n      // decide update or not\n      const newDay = Object.assign({}, day, {\n        isOtherMonth,\n        isHovered,\n        isSelected,\n        isSelectionStart,\n        isSelectionEnd,\n        isInRange,\n        isDisabled,\n        isToday,\n        customClasses,\n        tooltipText\n      });\n\n      if (\n        day.isOtherMonth !== newDay.isOtherMonth ||\n        day.isHovered !== newDay.isHovered ||\n        day.isSelected !== newDay.isSelected ||\n        day.isSelectionStart !== newDay.isSelectionStart ||\n        day.isSelectionEnd !== newDay.isSelectionEnd ||\n        day.isDisabled !== newDay.isDisabled ||\n        day.isInRange !== newDay.isInRange ||\n        day.customClasses !== newDay.customClasses ||\n        day.tooltipText !== newDay.tooltipText\n      ) {\n        week.days[dayIndex] = newDay;\n      }\n    });\n  });\n\n  // todo: add check for linked calendars\n  formattedMonth.hideLeftArrow =\n    options.isDisabled ||\n    (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n  formattedMonth.hideRightArrow =\n    options.isDisabled ||\n    ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths &&\n      options.monthIndex + 1 !== options.displayMonths);\n\n  formattedMonth.disableLeftArrow = isMonthDisabled(\n    shiftDate(formattedMonth.month, { month: -1 }),\n    options.minDate,\n    options.maxDate\n  );\n  formattedMonth.disableRightArrow = isMonthDisabled(\n    shiftDate(formattedMonth.month, { month: 1 }),\n    options.minDate,\n    options.maxDate\n  );\n  return formattedMonth;\n}\n\nfunction isDateInRange(\n  date: Date,\n  selectedRange?: Date[],\n  hoveredDate?: Date\n): boolean {\n  if (!date || !selectedRange || !selectedRange[0]) {\n    return false;\n  }\n\n  if (selectedRange[1]) {\n    return date > selectedRange[0] && date <= selectedRange[1];\n  }\n\n  if (hoveredDate) {\n    return date > selectedRange[0] && date <= hoveredDate;\n  }\n\n  return false;\n}\n","import { BsDatepickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\n  return minMode ? mode >= minMode : true;\n}\n","import {\n  DatepickerFormatOptions,\n  MonthsCalendarViewModel,\n  CalendarCellViewModel\n} from '../models';\nimport { startOf, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\n\nexport function formatMonthsCalendar(\n  viewDate: Date,\n  formatOptions: DatepickerFormatOptions\n): MonthsCalendarViewModel {\n  const initialDate = startOf(viewDate, 'year');\n  const matrixOptions = { width, height, initialDate, shift };\n  const monthMatrix = createMatrix<\n    CalendarCellViewModel\n  >(matrixOptions, date => ({\n    date,\n    label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n  }));\n\n  return {\n    months: monthMatrix,\n    monthTitle: '',\n    yearTitle: formatDate(\n      viewDate,\n      formatOptions.yearTitle,\n      formatOptions.locale\n    ),\n    hideRightArrow: false,\n    hideLeftArrow: false,\n    disableRightArrow: false,\n    disableLeftArrow: false\n  };\n}\n","import { isSameMonth, shiftDate } from 'ngx-bootstrap/chronos';\nimport {\n  MonthsCalendarViewModel,\n  CalendarCellViewModel\n} from '../models';\nimport { isDisabledDate, isEnabledDate, isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n  isDisabled: boolean;\n  minDate: Date;\n  maxDate: Date;\n  hoveredMonth: Date;\n  selectedDate: Date;\n  selectedRange: Date[];\n  datesDisabled: Date[];\n  datesEnabled: Date[];\n  displayMonths: number;\n  monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n  monthCalendar: MonthsCalendarViewModel,\n  options: Partial<FlagMonthCalendarOptions>\n): MonthsCalendarViewModel {\n  monthCalendar.months.forEach(\n    (months: CalendarCellViewModel[], rowIndex: number) => {\n      months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n        let isSelected: boolean;\n        const isHovered = isSameMonth(month.date, options.hoveredMonth);\n        const isDisabled =\n          options.isDisabled ||\n          isDisabledDate(month.date, options.datesDisabled) ||\n          isEnabledDate(month.date, options.datesEnabled, 'month') ||\n          isMonthDisabled(month.date, options.minDate, options.maxDate);\n\n        if (!options.selectedDate && options.selectedRange) {\n          isSelected = isSameMonth(month.date, options.selectedRange[0]);\n          if (!isSelected) {\n            isSelected = isSameMonth(month.date, options.selectedRange[1]);\n          }\n        } else {\n          isSelected = isSameMonth(month.date, options.selectedDate);\n        }\n        const newMonth = Object.assign(/*{},*/ month, {\n          isHovered,\n          isDisabled,\n          isSelected\n        });\n        if (\n          month.isHovered !== newMonth.isHovered ||\n          month.isDisabled !== newMonth.isDisabled ||\n          month.isSelected !== newMonth.isSelected\n        ) {\n          monthCalendar.months[rowIndex][monthIndex] = newMonth;\n        }\n      });\n    }\n  );\n\n  // todo: add check for linked calendars\n  monthCalendar.hideLeftArrow =\n    !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n\n  monthCalendar.hideRightArrow =\n    (!!options.monthIndex || options.monthIndex === 0 )\n    && (!!options.displayMonths || options.displayMonths === 0)\n    && options.monthIndex < options.displayMonths\n    && options.monthIndex + 1 !== options.displayMonths;\n\n  monthCalendar.disableLeftArrow = isYearDisabled(\n    shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\n    options.minDate,\n    options.maxDate\n  );\n  monthCalendar.disableRightArrow = isYearDisabled(\n    shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\n    options.minDate,\n    options.maxDate\n  );\n\n  return monthCalendar;\n}\n","import {\n  DatepickerFormatOptions,\n  YearsCalendarViewModel,\n  CalendarCellViewModel\n} from '../models';\nimport { shiftDate, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\n\nexport function formatYearsCalendar(\n  viewDate: Date,\n  formatOptions: DatepickerFormatOptions,\n  previousInitialDate?: Date\n): YearsCalendarViewModel {\n  const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n  const matrixOptions = { width, height, initialDate, shift };\n  const yearsMatrix = createMatrix<\n    CalendarCellViewModel\n  >(matrixOptions, date => ({\n    date,\n    label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n  }));\n  const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n\n  return {\n    years: yearsMatrix,\n    monthTitle: '',\n    yearTitle,\n    hideLeftArrow: false,\n    hideRightArrow: false,\n    disableLeftArrow: false,\n    disableRightArrow: false\n  };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n  if (previousInitialDate\n    && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n    && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n    return previousInitialDate;\n  }\n\n  return shiftDate(viewDate, { year: initialYearShift });\n}\n\nfunction formatYearRangeTitle(\n  yearsMatrix: CalendarCellViewModel[][],\n  formatOptions: DatepickerFormatOptions\n): string {\n  const from = formatDate(\n    yearsMatrix[0][0].date,\n    formatOptions.yearTitle,\n    formatOptions.locale\n  );\n  const to = formatDate(\n    yearsMatrix[height - 1][width - 1].date,\n    formatOptions.yearTitle,\n    formatOptions.locale\n  );\n\n  return `${from} - ${to}`;\n}\n","import { isSameYear, shiftDate } from 'ngx-bootstrap/chronos';\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\nimport { isDisabledDate, isEnabledDate, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n  isDisabled: boolean;\n  minDate: Date;\n  maxDate: Date;\n  hoveredYear: Date;\n  selectedDate: Date;\n  selectedRange: Date[];\n  datesDisabled: Date[];\n  datesEnabled: Date[];\n  displayMonths: number;\n  yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n  yearsCalendar: YearsCalendarViewModel,\n  options: Partial<FlagYearsCalendarOptions>\n): YearsCalendarViewModel {\n  yearsCalendar.years.forEach(\n    (years: CalendarCellViewModel[], rowIndex: number) => {\n      years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n        let isSelected: boolean;\n        const isHovered = isSameYear(year.date, options.hoveredYear);\n        const isDisabled =\n          options.isDisabled ||\n          isDisabledDate(year.date, options.datesDisabled, 'year') ||\n          isEnabledDate(year.date, options.datesEnabled, 'year') ||\n          isYearDisabled(year.date, options.minDate, options.maxDate);\n\n        if (!options.selectedDate && options.selectedRange) {\n          isSelected = isSameYear(year.date, options.selectedRange[0]);\n          if (!isSelected) {\n            isSelected = isSameYear(year.date, options.selectedRange[1]);\n          }\n        } else {\n          isSelected = isSameYear(year.date, options.selectedDate);\n        }\n\n        const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n        if (\n          year.isHovered !== newMonth.isHovered ||\n          year.isDisabled !== newMonth.isDisabled ||\n          year.isSelected !== newMonth.isSelected\n        ) {\n          yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n        }\n      });\n    }\n  );\n\n  // todo: add check for linked calendars\n  yearsCalendar.hideLeftArrow =\n    !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n  yearsCalendar.hideRightArrow =\n    !!options.yearIndex && !!options.displayMonths &&\n    options.yearIndex < options.displayMonths &&\n    options.yearIndex + 1 !== options.displayMonths;\n\n  yearsCalendar.disableLeftArrow = isYearDisabled(\n    shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\n    options.minDate,\n    options.maxDate\n  );\n  const i = yearsCalendar.years.length - 1;\n  const j = yearsCalendar.years[i].length - 1;\n  yearsCalendar.disableRightArrow = isYearDisabled(\n    shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\n    options.minDate,\n    options.maxDate\n  );\n\n  return yearsCalendar;\n}\n","export function copyTime(sourceDate: Date, time: Date) {\n  if (!sourceDate || !isNaN(sourceDate.getTime())) {\n    return;\n  }\n\n  sourceDate.setHours(time.getHours());\n  sourceDate.setMinutes(time.getMinutes());\n  sourceDate.setSeconds(time.getSeconds());\n  sourceDate.setMilliseconds(time.getMilliseconds());\n}\n","import { BsDatepickerState, BsDatepickerViewState, initialDatepickerState } from './bs-datepicker.state';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport {\n  setFullDate,\n  shiftDate,\n  isArray,\n  isDateValid,\n  startOf,\n  getLocale,\n  isAfter,\n  isBefore,\n  isSame\n} from 'ngx-bootstrap/chronos';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { BsViewNavigationEvent, DatepickerFormatOptions, BsDatepickerViewMode } from '../models';\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\nimport { copyTime } from '../utils/copy-time-utils';\n\n\nexport function bsDatepickerReducer(state: BsDatepickerState = initialDatepickerState,\n                                    action: Action): BsDatepickerState {\n  switch (action.type) {\n    case BsDatepickerActions.CALCULATE: {\n      return calculateReducer(state);\n    }\n\n    case BsDatepickerActions.FORMAT: {\n      return formatReducer(state);\n    }\n\n    case BsDatepickerActions.FLAG: {\n      return flagReducer(state);\n    }\n\n    case BsDatepickerActions.NAVIGATE_OFFSET: {\n      return navigateOffsetReducer(state, action);\n    }\n\n    case BsDatepickerActions.NAVIGATE_TO: {\n      const payload: BsViewNavigationEvent = action.payload;\n      if (!state.view || !payload.unit) {\n        return state;\n      }\n\n      const date = setFullDate(state.view.date, payload.unit);\n      let newState;\n      let mode: BsDatepickerViewMode;\n      if (canSwitchMode(payload.viewMode, state.minMode)) {\n        mode = payload.viewMode;\n        newState = { view: { date, mode } };\n      } else {\n        mode = state.view.mode;\n        newState = { selectedDate: date, view: { date, mode } };\n      }\n\n      return Object.assign({}, state, newState);\n    }\n\n    case BsDatepickerActions.CHANGE_VIEWMODE: {\n      if (!canSwitchMode(action.payload, state.minMode) || !state.view) {\n        return state;\n      }\n\n      const date = state.view.date;\n      const mode = action.payload;\n      const newState = { view: { date, mode } };\n\n      return Object.assign({}, state, newState);\n    }\n\n    case BsDatepickerActions.HOVER: {\n      return Object.assign({}, state, { hoveredDate: action.payload });\n    }\n\n    case BsDatepickerActions.SELECT: {\n      if (!state.view) {\n        return state;\n      }\n\n      const newState = {\n        selectedDate: action.payload,\n        view: state.view\n      };\n\n      if (Array.isArray(state.selectedTime)) {\n        const _time = state.selectedTime[0];\n        if (newState.selectedDate && _time) {\n          copyTime(newState.selectedDate, _time);\n        }\n      }\n\n      const mode = state.view.mode;\n      const _date = action.payload || state.view.date;\n      const date = getViewDate(_date, state.minDate, state.maxDate);\n      newState.view = { mode, date };\n\n      return Object.assign({}, state, newState);\n    }\n\n    case BsDatepickerActions.SELECT_TIME: {\n      const {date, index} = action.payload;\n      const selectedTime = state.selectedTime ? [...state.selectedTime] : [];\n      selectedTime[index] = date;\n      return Object.assign({}, state, { selectedTime });\n    }\n\n    case BsDatepickerActions.SET_OPTIONS: {\n      if (!state.view) {\n        return state;\n      }\n\n      const newState = action.payload;\n      // preserve view mode\n      const mode = newState.minMode ? newState.minMode : state.view.mode;\n      const _viewDate = isDateValid(newState.value) && newState.value\n        || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n        || state.view.date;\n      const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n      newState.view = { mode, date };\n      // update selected value\n      if (newState.value) {\n        // if new value is array we work with date range\n        if (isArray(newState.value)) {\n          newState.selectedRange = newState.value;\n          newState.selectedTime = newState.value.map((i: Date) => i);\n        }\n\n        // if new value is a date -> datepicker\n        if (newState.value instanceof Date) {\n          newState.selectedDate = newState.value;\n          newState.selectedTime = [newState.value];\n        }\n\n        // provided value is not supported :)\n        // need to report it somehow\n      }\n\n      return Object.assign({}, state, newState);\n    }\n\n    // date range picker\n    case BsDatepickerActions.SELECT_RANGE: {\n      if (!state.view) {\n        return state;\n      }\n\n      const newState = {\n        selectedRange: action.payload,\n        view: state.view\n      };\n      newState.selectedRange?.forEach((dte: Date, index: number) => {\n        if (Array.isArray(state.selectedTime)) {\n          const _time = state.selectedTime[index];\n          if (_time) {\n            copyTime(dte, _time);\n          }\n        }\n      });\n\n      const mode = state.view.mode;\n      const _date = action.payload && action.payload[0] || state.view.date;\n      const date = getViewDate(_date, state.minDate, state.maxDate);\n      newState.view = { mode, date };\n\n      return Object.assign({}, state, newState);\n    }\n\n    case BsDatepickerActions.SET_MIN_DATE: {\n      return Object.assign({}, state, {\n        minDate: action.payload\n      });\n    }\n    case BsDatepickerActions.SET_MAX_DATE: {\n      return Object.assign({}, state, {\n        maxDate: action.payload\n      });\n    }\n    case BsDatepickerActions.SET_IS_DISABLED: {\n      return Object.assign({}, state, {\n        isDisabled: action.payload\n      });\n    }\n    case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\n      return Object.assign({}, state, {\n        dateCustomClasses: action.payload\n      });\n    }\n    case BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS: {\n      return Object.assign({}, state, {\n        dateTooltipTexts: action.payload\n      });\n    }\n\n    default:\n      return state;\n  }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n  if (!state.view) {\n    return state;\n  }\n\n  // how many calendars\n  let displayMonths: number | undefined;\n  if (state.displayOneMonthRange &&\n    isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) {\n    displayMonths = 1;\n  } else {\n    displayMonths = state.displayMonths || 1;\n  }\n\n  // use selected date on initial rendering if set\n  let viewDate = state.view.date;\n\n  if (state.view.mode === 'day' && state.monthViewOptions) {\n    if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\n      viewDate = shiftDate(viewDate, { month: -1 });\n    }\n\n    state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n    let monthsModel = new Array(displayMonths);\n    for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n      // todo: for unlinked calendars it will be harder\n      monthsModel[monthIndex] = calcDaysCalendar(\n        viewDate,\n        state.monthViewOptions\n      );\n      viewDate = shiftDate(viewDate, { month: 1 });\n    }\n    // Check if parameter enabled and check if it's not months navigation event\n    if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\n      const viewMonth = calcDaysCalendar(state.view.date, state.monthViewOptions);\n      // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\n      if (state.flaggedMonths.length && state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\n        monthsModel = state.flaggedMonths\n          .map(item => {\n            if (state.monthViewOptions) {\n              return calcDaysCalendar(\n                item.month,\n                state.monthViewOptions\n              );\n            }\n            return null;\n          })\n          .filter(item => item !== null);\n      }\n    }\n\n    return Object.assign({}, state, { monthsModel });\n  }\n\n  if (state.view.mode === 'month') {\n    const monthsCalendar = new Array(displayMonths);\n    for (\n      let calendarIndex = 0;\n      calendarIndex < displayMonths;\n      calendarIndex++\n    ) {\n      // todo: for unlinked calendars it will be harder\n      monthsCalendar[calendarIndex] = formatMonthsCalendar(\n        viewDate,\n        getFormatOptions(state)\n      );\n      viewDate = shiftDate(viewDate, { year: 1 });\n    }\n\n    return Object.assign({}, state, { monthsCalendar });\n  }\n\n  if (state.view.mode === 'year') {\n    const yearsCalendarModel = new Array(displayMonths);\n\n    for (\n      let calendarIndex = 0;\n      calendarIndex < displayMonths;\n      calendarIndex++\n    ) {\n      // todo: for unlinked calendars it will be harder\n      yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n        viewDate,\n        getFormatOptions(state),\n        state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\n      );\n      viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n    }\n\n    return Object.assign({}, state, { yearsCalendarModel });\n  }\n\n  return state;\n}\n\nfunction formatReducer(state: BsDatepickerState): BsDatepickerState {\n  if (!state.view) {\n    return state;\n  }\n\n  if (state.view.mode === 'day' && state.monthsModel) {\n    const formattedMonths = state.monthsModel.map((month, monthIndex) =>\n      formatDaysCalendar(month, getFormatOptions(state), monthIndex)\n    );\n\n    return Object.assign({}, state, { formattedMonths });\n  }\n\n  // how many calendars\n  const displayMonths = state.displayMonths || 1;\n  // check initial rendering\n  // use selected date on initial rendering if set\n  let viewDate = state.view.date;\n\n  if (state.view.mode === 'month') {\n    const monthsCalendar = new Array(displayMonths);\n    for (\n      let calendarIndex = 0;\n      calendarIndex < displayMonths;\n      calendarIndex++\n    ) {\n      // todo: for unlinked calendars it will be harder\n      monthsCalendar[calendarIndex] = formatMonthsCalendar(\n        viewDate,\n        getFormatOptions(state)\n      );\n      viewDate = shiftDate(viewDate, { year: 1 });\n    }\n\n    return Object.assign({}, state, { monthsCalendar });\n  }\n\n  if (state.view.mode === 'year') {\n    const yearsCalendarModel = new Array(displayMonths);\n    for (\n      let calendarIndex = 0;\n      calendarIndex < displayMonths;\n      calendarIndex++\n    ) {\n      // todo: for unlinked calendars it will be harder\n      yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n        viewDate,\n        getFormatOptions(state)\n      );\n      viewDate = shiftDate(viewDate, { year: 16 });\n    }\n\n    return Object.assign({}, state, { yearsCalendarModel });\n  }\n\n  return state;\n}\n\nfunction flagReducer(state: BsDatepickerState): BsDatepickerState {\n  if (!state.view) {\n    return state;\n  }\n\n  const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n  if (state.formattedMonths && state.view.mode === 'day') {\n    const flaggedMonths = state.formattedMonths.map(\n      (formattedMonth, monthIndex) =>\n        flagDaysCalendar(formattedMonth, {\n          isDisabled: state.isDisabled,\n          minDate: state.minDate,\n          maxDate: state.maxDate,\n          daysDisabled: state.daysDisabled,\n          datesDisabled: state.datesDisabled,\n          datesEnabled: state.datesEnabled,\n          hoveredDate: state.hoveredDate,\n          selectedDate: state.selectedDate,\n          selectedRange: state.selectedRange,\n          displayMonths,\n          dateCustomClasses: state.dateCustomClasses,\n          dateTooltipTexts: state.dateTooltipTexts,\n          monthIndex\n        })\n    );\n\n    return Object.assign({}, state, { flaggedMonths });\n  }\n\n  if (state.view.mode === 'month' && state.monthsCalendar) {\n    const flaggedMonthsCalendar = state.monthsCalendar.map(\n      (formattedMonth, monthIndex) =>\n        flagMonthsCalendar(formattedMonth, {\n          isDisabled: state.isDisabled,\n          minDate: state.minDate,\n          maxDate: state.maxDate,\n          hoveredMonth: state.hoveredMonth,\n          selectedDate: state.selectedDate,\n          datesDisabled: state.datesDisabled,\n          datesEnabled: state.datesEnabled,\n          selectedRange: state.selectedRange,\n          displayMonths,\n          monthIndex\n        })\n    );\n\n    return Object.assign({}, state, { flaggedMonthsCalendar });\n  }\n\n  if (state.view.mode === 'year' && state.yearsCalendarModel) {\n    const yearsCalendarFlagged = state.yearsCalendarModel.map(\n      (formattedMonth, yearIndex) =>\n        flagYearsCalendar(formattedMonth, {\n          isDisabled: state.isDisabled,\n          minDate: state.minDate,\n          maxDate: state.maxDate,\n          hoveredYear: state.hoveredYear,\n          selectedDate: state.selectedDate,\n          datesDisabled: state.datesDisabled,\n          datesEnabled: state.datesEnabled,\n          selectedRange: state.selectedRange,\n          displayMonths,\n          yearIndex\n        })\n    );\n\n    return Object.assign({}, state, { yearsCalendarFlagged });\n  }\n\n  return state;\n}\n\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\n  if (!state.view) {\n    return state;\n  }\n\n  const date = shiftViewDate(state, action);\n  if (!date) {\n    return state;\n  }\n\n  const newState: {view: BsDatepickerViewState} = {\n    view: {\n      mode: state.view.mode,\n      date\n    }\n  };\n\n  return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date | undefined {\n  if (!state.view) {\n    return undefined;\n  }\n\n  if (state.view.mode === 'year' && state.minMode === 'year') {\n    const initialDate = getYearsCalendarInitialDate(state, 0);\n    if (initialDate) {\n      const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n      return shiftDate(middleDate, action.payload);\n    }\n  }\n\n  return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\n  return {\n    locale: state.locale,\n\n    monthTitle: state.monthTitle,\n    yearTitle: state.yearTitle,\n\n    dayLabel: state.dayLabel,\n    monthLabel: state.monthLabel,\n    yearLabel: state.yearLabel,\n\n    weekNumbers: state.weekNumbers\n  };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate?: Date, maxDate?: Date) {\n  const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n  if (minDate && isAfter(minDate, _date, 'day')) {\n    return minDate;\n  }\n\n  if (maxDate && isBefore(maxDate, _date, 'day')) {\n    return maxDate;\n  }\n\n  return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate?: Date, maxDate?: Date) {\n  if (maxDate && isSame(maxDate, viewDate, 'day')) {\n    return true;\n  }\n\n  return minDate && maxDate && minDate.getMonth() === maxDate.getMonth();\n}\n","import { Injectable } from '@angular/core';\nimport { MiniStore, Action, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { bsDatepickerReducer } from './bs-datepicker.reducer';\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\n  constructor() {\n    const _dispatcher = new BehaviorSubject<Action>({\n      type: '[datepicker] dispatcher init'\n    });\n    const state = new MiniState<BsDatepickerState>(\n      initialDatepickerState,\n      _dispatcher,\n      bsDatepickerReducer\n    );\n    super(_dispatcher, bsDatepickerReducer, state);\n  }\n}\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface BsCustomDates {\n  label: string;\n  value: Date | Date[];\n}\n\n@Component({\n  selector: 'bs-custom-date-view',\n  template: `\n    <div class=\"bs-datepicker-predefined-btns\">\n      <button *ngFor=\"let range of ranges\"\n        type=\"button\"\n        class=\"btn\"\n        (click)=\"selectFromRanges(range)\"\n        [class.selected]=\"range.value === selectedRange\">\n        {{ range.label }}\n      </button>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n  @Input() ranges?: BsCustomDates[];\n  @Input() selectedRange?: Date[];\n  @Input() customRangeLabel?: string;\n  @Output() onSelect = new EventEmitter<BsCustomDates>();\n\n  selectFromRanges(range?: BsCustomDates) {\n    this.onSelect.emit(range);\n  }\n}\n","import { TimeUnit } from 'ngx-bootstrap/chronos';\n\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n  monthTitle: string;\n  yearTitle: string;\n  hideLeftArrow: boolean;\n  hideRightArrow: boolean;\n  disableLeftArrow: boolean;\n  disableRightArrow: boolean;\n}\n\nexport interface CalendarCellViewModel {\n  date: Date;\n  label: string;\n  isDisabled?: boolean;\n  isHovered?: boolean;\n  isSelected?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n  isOtherMonthHovered?: boolean;\n  isOtherMonth?: boolean;\n  isInRange?: boolean;\n  isSelectionStart?: boolean;\n  isSelectionEnd?: boolean;\n  isToday?: boolean;\n  customClasses?: string;\n  tooltipText?: string;\n  // day index\n  monthIndex?: number;\n  weekIndex?: number;\n  dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n  days: DayViewModel[];\n  isHovered?: boolean;\n}\n\n// todo: split navigation settings\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n  weeks: WeekViewModel[];\n  // additional information\n  month: Date;\n  weekNumbers: string[];\n  weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n  months: CalendarCellViewModel[][];\n}\n\n/** *************** */\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n  years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// math model\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n  daysMatrix: Date[][];\n  month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n  width?: number;\n  height?: number;\n  firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatepickerFormatOptions {\n  locale?: string;\n\n  monthTitle?: string;\n  yearTitle?: string;\n\n  dayLabel?: string;\n  monthLabel?: string;\n  yearLabel?: string;\n\n  weekNumbers?: string;\n}\n\nexport interface DatepickerRenderOptions {\n  showWeekNumbers: boolean;\n  displayMonths: number;\n}\n\nexport interface DatepickerDateCustomClasses {\n  date: Date;\n  classes: string[];\n}\n\nexport interface DatepickerDateTooltipText {\n  date: Date;\n  tooltipText: string;\n}\n\n/** *************** */\n// events\n/** *************** */\nexport enum BsNavigationDirection {\n  UP,\n  DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n  direction?: BsNavigationDirection;\n  step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n  unit?: TimeUnit;\n  viewMode: BsDatepickerViewMode;\n}\n\nexport interface CellHoverEvent {\n  cell: CalendarCellViewModel;\n  isHovered: boolean;\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'bs-current-date',\n  template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n})\nexport class BsCurrentDateViewComponent {\n  @Input() title?: string;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'bs-timepicker',\n  template: `\n    <div class=\"bs-timepicker-container\">\n      <div class=\"bs-timepicker-controls\">\n        <button class=\"bs-decrease\" type=\"button\">-</button>\n        <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n        <button class=\"bs-increase\" type=\"button\">+</button>\n      </div>\n      <div class=\"bs-timepicker-controls\">\n        <button class=\"bs-decrease\" type=\"button\">-</button>\n        <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n        <button class=\"bs-increase\" type=\"button\">+</button>\n      </div>\n      <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\n        <img\n          src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n          alt=\"\">\n      </button>\n    </div>\n  `\n})\nexport class BsTimepickerViewComponent {\n  ampm = 'ok';\n  hours = 0;\n  minutes = 0;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'bs-calendar-layout',\n  template: `\n    <!-- current date, will be added in nearest releases -->\n    <bs-current-date title=\"hey there\" *ngIf=\"false\"></bs-current-date>\n\n    <!--navigation-->\n    <div class=\"bs-datepicker-head\">\n      <ng-content select=\"bs-datepicker-navigation-view\"></ng-content>\n    </div>\n\n    <div class=\"bs-datepicker-body\">\n      <ng-content></ng-content>\n    </div>\n\n    <!--timepicker-->\n    <bs-timepicker *ngIf=\"false\"></bs-timepicker>\n  `\n})\nexport class BsCalendarLayoutComponent {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  Renderer2\n} from '@angular/core';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\n\n@Component({\n  selector: '[bsDatepickerDayDecorator]',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.disabled]': 'day.isDisabled',\n    '[class.is-highlighted]': 'day.isHovered',\n    '[class.is-other-month]': 'day.isOtherMonth',\n    '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n    '[class.in-range]': 'day.isInRange',\n    '[class.select-start]': 'day.isSelectionStart',\n    '[class.select-end]': 'day.isSelectionEnd',\n    '[class.selected]': 'day.isSelected'\n  },\n  template: `{{ day && day.label || '' }}`\n})\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\n  @Input() day: DayViewModel = { date: new Date(), label: '' };\n\n  constructor(\n    private _config: BsDatepickerConfig,\n    private _elRef: ElementRef,\n    private _renderer: Renderer2\n  ) { }\n\n  ngOnInit(): void {\n\n    if (this.day?.isToday && this._config && this._config.customTodayClass) {\n      this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n    }\n\n    if (typeof this.day?.customClasses === 'string') {\n      this.day?.customClasses.split(' ')\n        .filter((className: string) => className)\n        .forEach((className: string) => {\n          this._renderer.addClass(this._elRef.nativeElement, className);\n        });\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BsDatepickerViewMode, BsNavigationDirection, NavigationViewModel } from '../../models';\n\n@Component({\n  selector: 'bs-datepicker-navigation-view',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <button class=\"previous\"\n            [disabled]=\"calendar.disableLeftArrow\"\n            [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n            type=\"button\"\n            (click)=\"navTo(true)\">\n      <span>&lsaquo;</span>\n    </button>\n\n    <ng-container *ngIf=\"calendar && calendar.monthTitle\">\n      &#8203;  <!-- zero-width space needed for correct alignment\n                  with preserveWhitespaces: false in Angular -->\n\n      <button class=\"current\"\n            type=\"button\"\n              (click)=\"view('month')\"\n              [disabled]=\"isDisabled\"\n      ><span>{{ calendar.monthTitle }}</span>\n      </button>\n    </ng-container>\n\n    &#8203;  <!-- zero-width space needed for correct alignment\n                  with preserveWhitespaces: false in Angular -->\n\n    <button\n      class=\"current\"\n      (click)=\"view('year')\"\n      type=\"button\"\n      [disabled]=\"isDisabled\"\n    >\n      <span>{{ calendar.yearTitle }}</span>\n    </button>\n\n    &#8203;  <!-- zero-width space needed for correct alignment\n                  with preserveWhitespaces: false in Angular -->\n\n    <button class=\"next\"\n            [disabled]=\"calendar.disableRightArrow\"\n            [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n            type=\"button\"\n            (click)=\"navTo(false)\"><span>&rsaquo;</span>\n    </button>\n  `\n})\nexport class BsDatepickerNavigationViewComponent {\n  @Input() calendar!: NavigationViewModel;\n  @Input() isDisabled = false;\n\n  @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n  @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n  navTo(down: boolean): void {\n    this.onNavigate.emit(\n      down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\n    );\n  }\n\n  view(viewMode: BsDatepickerViewMode): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    this.onViewMode.emit(viewMode);\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\n\nimport { isSameDay } from 'ngx-bootstrap/chronos';\n\nimport {\n  BsDatepickerViewMode,\n  BsNavigationDirection,\n  BsNavigationEvent,\n  CellHoverEvent, DatepickerDateTooltipText,\n  DatepickerRenderOptions,\n  DaysCalendarViewModel,\n  DayViewModel, WeekViewModel\n} from '../../models';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\n\n@Component({\n  selector: 'bs-days-calendar-view',\n  // changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <bs-calendar-layout>\n      <bs-datepicker-navigation-view\n        [calendar]=\"calendar\"\n        [isDisabled]=\"!!isDisabled\"\n        (onNavigate)=\"navigateTo($event)\"\n        (onViewMode)=\"changeViewMode($event)\"\n      ></bs-datepicker-navigation-view>\n      <!--days matrix-->\n      <table role=\"grid\" class=\"days weeks\">\n        <thead>\n        <tr>\n          <!--if show weeks-->\n          <th *ngIf=\"options && options.showWeekNumbers\"></th>\n          <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n              aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n          </th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n          <td class=\"week\" [class.active-week]=\"isWeekHovered\"  *ngIf=\"options && options.showWeekNumbers\">\n            <span *ngIf=\"isiOS\" (click)=\"selectWeek(week)\">{{ calendar.weekNumbers[i] }}</span>\n            <span *ngIf=\"!isiOS\"\n                (click)=\"selectWeek(week)\"\n                (mouseenter)=\"weekHoverHandler(week, true)\"\n                (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\n          </td>\n          <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n\n            <!-- When we want to show tooltips for dates -->\n            <span *ngIf=\"!isiOS && isShowTooltip\" bsDatepickerDayDecorator\n                [day]=\"day\"\n                (click)=\"selectDay(day)\"\n                tooltip=\"{{day.tooltipText}}\"\n                (mouseenter)=\"hoverDay(day, true)\"\n                (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 3</span>\n            <!-- When tooltips for dates are disabled -->\n            <span *ngIf=\"!isiOS && !isShowTooltip\" bsDatepickerDayDecorator\n                  [day]=\"day\"\n                  (click)=\"selectDay(day)\"\n                  (mouseenter)=\"hoverDay(day, true)\"\n                  (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 2</span>\n\n            <!-- For mobile iOS view, tooltips are not needed -->\n            <span *ngIf=\"isiOS\" bsDatepickerDayDecorator\n                  [day]=\"day\"\n                  (click)=\"selectDay(day)\">{{ day.label }} 1</span>\n          </td>\n        </tr>\n        </tbody>\n      </table>\n\n    </bs-calendar-layout>\n  `\n})\nexport class BsDaysCalendarViewComponent  {\n  @Input() calendar!: DaysCalendarViewModel;\n  @Input() options?: DatepickerRenderOptions | null;\n  @Input() isDisabled?: boolean;\n\n  @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n  @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n  @Output() onSelect = new EventEmitter<DayViewModel>();\n  @Output() onHover = new EventEmitter<CellHoverEvent>();\n  @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\n\n  isWeekHovered?: boolean;\n  isiOS: boolean;\n  isShowTooltip?: boolean;\n\n  constructor(private _config: BsDatepickerConfig) {\n    this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n      (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n    if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\n      this.isShowTooltip = true;\n    }\n  }\n\n  navigateTo(event: BsNavigationDirection): void {\n    const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n    this.onNavigate.emit({ step: { month: step } });\n  }\n\n  changeViewMode(event: BsDatepickerViewMode): void {\n    this.onViewMode.emit(event);\n  }\n\n  selectDay(event: DayViewModel): void {\n    this.onSelect.emit(event);\n  }\n\n  selectWeek(week: WeekViewModel): void {\n    if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n      return;\n    }\n\n    if (week.days.length === 0) {\n      return;\n    }\n\n    if (this._config.selectWeek && week.days[0]\n        && !week.days[0].isDisabled\n        && this._config.selectFromOtherMonth) {\n\n        this.onSelect.emit(week.days[0]);\n\n        return;\n    }\n\n    const selectedDay = week.days.find((day: DayViewModel) => {\n      return this._config.selectFromOtherMonth\n        ? !day.isDisabled\n        : !day.isOtherMonth && !day.isDisabled;\n    });\n\n    this.onSelect.emit(selectedDay);\n\n    if (this._config.selectWeekDateRange) {\n      const days = week.days.slice(0);\n      const lastDayOfRange = days.reverse().find((day: DayViewModel) => {\n        return this._config.selectFromOtherMonth\n          ? !day.isDisabled\n          : !day.isOtherMonth && !day.isDisabled;\n      });\n\n      this.onSelect.emit(lastDayOfRange);\n    }\n  }\n\n  weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n    if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n      return;\n    }\n\n    const hasActiveDays = cell.days.find((day: DayViewModel) => {\n      return this._config.selectFromOtherMonth\n        ? !day.isDisabled\n        : !day.isOtherMonth && !day.isDisabled;\n    });\n\n    if (hasActiveDays) {\n      cell.isHovered = isHovered;\n      this.isWeekHovered = isHovered;\n      this.onHoverWeek.emit(cell);\n    }\n  }\n\n  hoverDay(cell: DayViewModel, isHovered: boolean): void {\n    if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n      cell.isOtherMonthHovered = isHovered;\n    }\n\n    if (this._config.dateTooltipTexts) {\n      cell.tooltipText = '';\n      this._config.dateTooltipTexts.forEach((dateData: DatepickerDateTooltipText) => {\n\n        if (isSameDay(dateData.date, cell.date)) {\n          cell.tooltipText = dateData.tooltipText;\n\n          return;\n        }\n      });\n    }\n\n    this.onHover.emit({ cell, isHovered });\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n  BsDatepickerViewMode,\n  BsNavigationDirection,\n  BsNavigationEvent,\n  CellHoverEvent,\n  MonthsCalendarViewModel,\n  CalendarCellViewModel\n} from '../../models';\n\n@Component({\n  selector: 'bs-month-calendar-view',\n  template: `\n    <bs-calendar-layout>\n      <bs-datepicker-navigation-view\n        [calendar]=\"calendar\"\n        (onNavigate)=\"navigateTo($event)\"\n        (onViewMode)=\"changeViewMode($event)\"\n      ></bs-datepicker-navigation-view>\n\n      <table role=\"grid\" class=\"months\">\n        <tbody>\n        <tr *ngFor=\"let row of calendar?.months\">\n          <td *ngFor=\"let month of row\" role=\"gridcell\"\n              (click)=\"viewMonth(month)\"\n              (mouseenter)=\"hoverMonth(month, true)\"\n              (mouseleave)=\"hoverMonth(month, false)\"\n              [class.disabled]=\"month.isDisabled\"\n              [class.is-highlighted]=\"month.isHovered\">\n            <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\n          </td>\n        </tr>\n        </tbody>\n      </table>\n    </bs-calendar-layout>\n  `\n})\nexport class BsMonthCalendarViewComponent {\n  @Input() calendar!: MonthsCalendarViewModel;\n\n  @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n  @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n  @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n  @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n  navigateTo(event: BsNavigationDirection): void {\n    const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n    this.onNavigate.emit({ step: { year: step } });\n  }\n\n  viewMonth(month: CalendarCellViewModel) {\n    this.onSelect.emit(month);\n  }\n\n  hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n    this.onHover.emit({ cell, isHovered });\n  }\n\n  changeViewMode(event: BsDatepickerViewMode): void {\n    this.onViewMode.emit(event as BsDatepickerViewMode);\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport {\n  BsDatepickerViewMode,\n  BsNavigationDirection,\n  BsNavigationEvent,\n  CalendarCellViewModel,\n  CellHoverEvent,\n  YearsCalendarViewModel\n} from '../../models';\n\n@Component({\n  selector: 'bs-years-calendar-view',\n  template: `\n    <bs-calendar-layout>\n      <bs-datepicker-navigation-view\n        [calendar]=\"calendar\"\n        (onNavigate)=\"navigateTo($event)\"\n        (onViewMode)=\"changeViewMode($event)\"\n      ></bs-datepicker-navigation-view>\n\n      <table role=\"grid\" class=\"years\">\n        <tbody>\n        <tr *ngFor=\"let row of calendar?.years\">\n          <td *ngFor=\"let year of row\" role=\"gridcell\"\n              (click)=\"viewYear(year)\"\n              (mouseenter)=\"hoverYear(year, true)\"\n              (mouseleave)=\"hoverYear(year, false)\"\n              [class.disabled]=\"year.isDisabled\"\n              [class.is-highlighted]=\"year.isHovered\">\n            <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\n          </td>\n        </tr>\n        </tbody>\n      </table>\n    </bs-calendar-layout>\n  `\n})\nexport class BsYearsCalendarViewComponent {\n  @Input() calendar!: YearsCalendarViewModel;\n\n  @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n  @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n  @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n  @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n  navigateTo(event: BsNavigationDirection): void {\n    const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n    this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n  }\n\n  viewYear(year: CalendarCellViewModel) {\n    this.onSelect.emit(year);\n  }\n\n  hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n    this.onHover.emit({ cell, isHovered });\n  }\n\n  changeViewMode(event: BsDatepickerViewMode): void {\n    this.onViewMode.emit(event);\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter, HostBinding,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild\n} from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { TimepickerComponent } from 'ngx-bootstrap/timepicker';\n\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\n@Component({\n  selector: 'bs-datepicker-container',\n  providers: [BsDatepickerStore, BsDatepickerEffects],\n  templateUrl: './bs-datepicker-view.html',\n  host: {\n    class: 'bottom',\n    '(click)': '_stopPropagation($event)',\n    role: 'dialog',\n    'aria-label': 'calendar',\n  },\n  animations: [datepickerAnimation]\n})\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent\n  implements OnInit, AfterViewInit, OnDestroy {\n\n  valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n  animationState = 'void';\n  override isRangePicker = false;\n  _subs: Subscription[] = [];\n\n  @ViewChild('startTP') startTimepicker?: TimepickerComponent;\n\n  set value(value: Date|undefined) {\n    this._effects?.setValue(value);\n  }\n\n  get isDatePickerDisabled(): boolean {\n    return !!this._config.isDisabled;\n  }\n\n  @HostBinding ('attr.disabled') get isDatepickerDisabled() {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  @HostBinding ('attr.readonly') get isDatepickerReadonly() {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  constructor(\n    _renderer: Renderer2,\n    private _config: BsDatepickerConfig,\n    private _store: BsDatepickerStore,\n    private _element: ElementRef,\n    private _actions: BsDatepickerActions,\n    _effects: BsDatepickerEffects,\n    private _positionService: PositioningService\n  ) {\n    super();\n    this._effects = _effects;\n\n    _renderer.setStyle(_element.nativeElement, 'display', 'block');\n    _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n  }\n\n  ngOnInit(): void {\n    this._positionService.setOptions({\n      modifiers: {\n        flip: {\n          enabled: this._config.adaptivePosition\n        },\n        preventOverflow: {\n          enabled: this._config.adaptivePosition\n        }\n      },\n      allowedPositions: this._config.allowedPositions\n    });\n\n    this._positionService.event$?.pipe(take(1))\n      .subscribe(() => {\n        this._positionService.disable();\n\n        if (this._config.isAnimated) {\n          this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n          return;\n        }\n\n        this.animationState = 'unanimated';\n      });\n\n    this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n    this.containerClass = this._config.containerClass;\n    this.showTodayBtn = this._config.showTodayButton;\n    this.todayBtnLbl = this._config.todayButtonLabel;\n    this.todayPos = this._config.todayPosition;\n    this.showClearBtn = this._config.showClearButton;\n    this.clearBtnLbl = this._config.clearButtonLabel;\n    this.clearPos = this._config.clearPosition;\n    this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n    this.withTimepicker = this._config.withTimepicker;\n    this._effects?.init(this._store)\n      // intial state options\n      .setOptions(this._config)\n      // data binding view --> model\n      .setBindings(this)\n      // set event handlers\n      .setEventHandlers(this)\n      .registerDatepickerSideEffects();\n\n    let currentDate: Date;\n    // todo: move it somewhere else\n    // on selected date change\n    this._subs.push(\n      this._store.select((state: any) => state.selectedDate).subscribe((date: any) => {\n        currentDate = date;\n        this.valueChange.emit(date);\n      })\n    );\n    this._subs.push(\n      this._store.select((state: any) => state.selectedTime).subscribe((time: any) => {\n        if (!time[0] || !(time[0] instanceof Date) || time[0] === currentDate) {\n          return;\n        }\n\n          this.valueChange.emit(time[0]);\n      })\n    );\n\n    this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n  }\n\n  ngAfterViewInit(): void {\n    this.selectedTimeSub.add(this.selectedTime?.subscribe((val) => {\n      if (Array.isArray(val) && val.length >= 1) {\n        this.startTimepicker?.writeValue(val[0]);\n      }\n    }));\n    this.startTimepicker?.registerOnChange((val: any) => {\n      this.timeSelectHandler(val, 0);\n    });\n  }\n\n  get isTopPosition(): boolean {\n    return this._element.nativeElement.classList.contains('top');\n  }\n\n  positionServiceEnable(): void {\n    this._positionService.enable();\n  }\n\n  override timeSelectHandler(date: Date, index: number) {\n    this._store.dispatch(this._actions.selectTime(date, index));\n  }\n\n  override daySelectHandler(day: DayViewModel): void {\n    if (!day) {\n     return;\n    }\n\n    const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n    if (isDisabled) {\n      return;\n    }\n\n    this._store.dispatch(this._actions.select(day.date));\n  }\n\n  override monthSelectHandler(day: CalendarCellViewModel): void {\n    if (!day || day.isDisabled) {\n      return;\n    }\n\n    this._store.dispatch(\n      this._actions.navigateTo({\n        unit: {\n          month: getMonth(day.date),\n          year: getFullYear(day.date)\n        },\n        viewMode: 'day'\n      })\n    );\n  }\n\n  override yearSelectHandler(day: CalendarCellViewModel): void {\n    if (!day || day.isDisabled) {\n      return;\n    }\n\n    this._store.dispatch(\n      this._actions.navigateTo({\n        unit: {\n          year: getFullYear(day.date)\n        },\n        viewMode: 'month'\n      })\n    );\n  }\n\n  override setToday(): void {\n    this._store.dispatch(this._actions.select(new Date()));\n  }\n\n  override clearDate(): void {\n    this._store.dispatch(this._actions.select(undefined));\n  }\n\n  ngOnDestroy(): void {\n    for (const sub of this._subs) {\n      sub.unsubscribe();\n    }\n    this.selectedTimeSub.unsubscribe();\n    this._effects?.destroy();\n  }\n}\n","<!-- days calendar view mode -->\n<div class=\"bs-datepicker\" [ngClass]=\"containerClass\" *ngIf=\"viewMode | async\">\n  <div class=\"bs-datepicker-container\"\n    [@datepickerAnimation]=\"animationState\"\n    (@datepickerAnimation.done)=\"positionServiceEnable()\">\n    <!--calendars-->\n    <div class=\"bs-calendar-container\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n      <!--days calendar-->\n      <ng-container *ngSwitchCase=\"'day'\">\n        <div class=\"bs-media-container\">\n          <bs-days-calendar-view\n            *ngFor=\"let calendar of daysCalendar$ | async\"\n            [class.bs-datepicker-multiple]=\"multipleCalendars\"\n            [calendar]=\"calendar\"\n            [isDisabled]=\"isDatePickerDisabled\"\n            [options]=\"options$ | async\"\n            (onNavigate)=\"navigateTo($event)\"\n            (onViewMode)=\"setViewMode($event)\"\n            (onHover)=\"dayHoverHandler($event)\"\n            (onHoverWeek)=\"weekHoverHandler($event)\"\n            (onSelect)=\"daySelectHandler($event)\">\n          </bs-days-calendar-view>\n        </div>\n        <div *ngIf=\"withTimepicker\" class=\"bs-timepicker-in-datepicker-container\">\n          <timepicker #startTP [disabled]=\"isDatePickerDisabled\"></timepicker>\n          <timepicker #endTP *ngIf=\"isRangePicker\" [disabled]=\"isDatePickerDisabled\"></timepicker>\n        </div>\n      </ng-container>\n\n      <!--months calendar-->\n      <div *ngSwitchCase=\"'month'\" class=\"bs-media-container\">\n        <bs-month-calendar-view\n          *ngFor=\"let calendar of monthsCalendar | async\"\n          [class.bs-datepicker-multiple]=\"multipleCalendars\"\n          [calendar]=\"calendar\"\n          (onNavigate)=\"navigateTo($event)\"\n          (onViewMode)=\"setViewMode($event)\"\n          (onHover)=\"monthHoverHandler($event)\"\n          (onSelect)=\"monthSelectHandler($event)\">\n        </bs-month-calendar-view>\n      </div>\n\n      <!--years calendar-->\n      <div *ngSwitchCase=\"'year'\" class=\"bs-media-container\">\n        <bs-years-calendar-view\n          *ngFor=\"let calendar of yearsCalendar | async\"\n          [class.bs-datepicker-multiple]=\"multipleCalendars\"\n          [calendar]=\"calendar\"\n          (onNavigate)=\"navigateTo($event)\"\n          (onViewMode)=\"setViewMode($event)\"\n          (onHover)=\"yearHoverHandler($event)\"\n          (onSelect)=\"yearSelectHandler($event)\">\n        </bs-years-calendar-view>\n      </div>\n    </div>\n\n    <!--applycancel buttons-->\n    <div class=\"bs-datepicker-buttons\" *ngIf=\"false\">\n      <button class=\"btn btn-success\" type=\"button\">Apply</button>\n      <button class=\"btn btn-default\" type=\"button\">Cancel</button>\n    </div>\n\n    <div class=\"bs-datepicker-buttons\" *ngIf=\"showTodayBtn || showClearBtn\">\n      <div class=\"btn-today-wrapper\"\n           [class.today-left]=\"todayPos === 'left'\"\n           [class.today-right]=\"todayPos === 'right'\"\n           [class.today-center]=\"todayPos === 'center'\"\n           *ngIf=\"showTodayBtn\">\n        <button class=\"btn btn-success\" (click)=\"setToday()\">{{todayBtnLbl}}</button>\n      </div>\n\n        <div class=\"btn-clear-wrapper\"\n        [class.clear-left]=\"clearPos === 'left'\"\n        [class.clear-right]=\"clearPos === 'right'\"\n        [class.clear-center]=\"clearPos === 'center'\"\n        *ngIf=\"showClearBtn\">\n          <button class=\"btn btn-success\" (click)=\"clearDate()\">{{clearBtnLbl}}</button>\n        </div>\n    </div>\n\n  </div>\n\n  <!--custom dates or date ranges picker-->\n  <div class=\"bs-datepicker-custom-range\" *ngIf=\"customRanges && customRanges.length > 0\">\n    <bs-custom-date-view\n      [selectedRange]=\"chosenRange\"\n      [ranges]=\"customRanges\"\n      [customRangeLabel]=\"customRangeBtnLbl\"\n      (onSelect)=\"setRangeOnCalendar($event)\">\n    </bs-custom-date-view>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter, HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses, DatepickerDateTooltipText } from './models';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { copyTime } from './utils/copy-time-utils';\nimport { checkBsValue, setCurrentTimeOnDateSelect } from './utils/bs-calendar-utils';\n\nexport let previousDate: Date | Date[] | undefined;\n\n@Directive({\n  selector: '[bsDatepicker]',\n  exportAs: 'bsDatepicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n  /**\n   * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n   */\n  @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n  /**\n   * Specifies events that should trigger. Supports a space separated list of\n   * event names.\n   */\n  @Input() triggers = 'click';\n  /**\n   * Close datepicker on outside click\n   */\n  @Input() outsideClick = true;\n  /**\n   * A selector specifying the element the datepicker should be appended to.\n   */\n  @Input() container = 'body';\n\n  @Input() outsideEsc = true;\n  /**\n   * Emits an event when the datepicker is shown\n   */\n  @Output() onShown: EventEmitter<unknown>;\n  /**\n   * Emits an event when the datepicker is hidden\n   */\n  @Output() onHidden: EventEmitter<unknown>;\n  isOpen$: BehaviorSubject<boolean>;\n  isDestroy$ = new Subject();\n  /**\n   * Indicates whether datepicker's content is enabled or not\n   */\n  @Input() isDisabled = false;\n  /**\n   * Minimum date which is available for selection\n   */\n  @Input() minDate?: Date;\n  /**\n   * Maximum date which is available for selection\n   */\n  @Input() maxDate?: Date;\n  /**\n   * Minimum view mode : day, month, or year\n   */\n  @Input() minMode?: BsDatepickerViewMode;\n  /**\n   * Disable Certain days in the week\n   */\n  @Input() daysDisabled?: number[];\n  /**\n   * Disable specific dates\n   */\n  @Input() datesDisabled?: Date[];\n  /**\n   * Enable specific dates\n   */\n  @Input() datesEnabled?: Date[];\n  /**\n   * Date custom classes\n   */\n  @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n  /**\n   * Date tooltip text\n   */\n  @Input() dateTooltipTexts?: DatepickerDateTooltipText[];\n  /**\n   * Emits when datepicker value has been changed\n   */\n  @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n  @HostBinding ('attr.readonly') get readonlyValue () {\n    return this.isDisabled ? '' : null;\n  }\n\n  protected _subs: Subscription[] = [];\n  private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n  private _datepickerRef?: ComponentRef<BsDatepickerContainerComponent>;\n  private readonly _dateInputFormat$ = new Subject<string | undefined>();\n\n  constructor(public _config: BsDatepickerConfig,\n              private  _elementRef: ElementRef,\n              private  _renderer: Renderer2,\n              _viewContainerRef: ViewContainerRef,\n              cis: ComponentLoaderFactory) {\n    // todo: assign only subset of fields\n    Object.assign(this, this._config);\n    this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(\n      _elementRef,\n      _viewContainerRef,\n      _renderer\n    );\n    this.onShown = this._datepicker.onShown;\n    this.onHidden = this._datepicker.onHidden;\n    this.isOpen$ = new BehaviorSubject(this.isOpen);\n  }\n\n  /**\n   * Returns whether or not the datepicker is currently being shown\n   */\n  @Input()\n  get isOpen(): boolean {\n    return this._datepicker.isShown;\n  }\n\n  set isOpen(value: boolean) {\n    this.isOpen$.next(value);\n  }\n\n  _bsValue?: Date;\n\n  /**\n   * Initial value of datepicker\n   */\n  @Input()\n  set bsValue(value: Date | undefined) {\n    if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n      return;\n    }\n\n    if (!this._bsValue && value && !this._config.withTimepicker) {\n      const now = new Date();\n      copyTime(value, now);\n    }\n\n    if (value && this.bsConfig?.initCurrentTime) {\n      value = setCurrentTimeOnDateSelect(value);\n    }\n\n    this.initPreviousValue();\n    this._bsValue = value;\n    this.bsValueChange.emit(value);\n  }\n\n  get dateInputFormat$(): Observable<string | undefined> {\n    return this._dateInputFormat$;\n  }\n\n  /**\n   * Config object for datepicker\n   */\n  @Input() bsConfig?: Partial<BsDatepickerConfig>;\n\n  ngOnInit(): void {\n    this._datepicker.listen({\n      outsideClick: this.outsideClick,\n      outsideEsc: this.outsideEsc,\n      triggers: this.triggers,\n      show: () => this.show()\n    });\n    this.setConfig();\n    this.initPreviousValue();\n  }\n\n  initPreviousValue() {\n    previousDate = this._bsValue;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes[\"bsConfig\"]) {\n      if (changes[\"bsConfig\"].currentValue?.initCurrentTime && changes[\"bsConfig\"].currentValue?.initCurrentTime !== changes[\"bsConfig\"].previousValue?.initCurrentTime && this._bsValue) {\n        this.initPreviousValue();\n        this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\n        this.bsValueChange.emit(this._bsValue);\n      }\n\n      this.setConfig();\n      this._dateInputFormat$.next(this.bsConfig && this.bsConfig.dateInputFormat);\n    }\n\n    if (!this._datepickerRef || !this._datepickerRef.instance) {\n      return;\n    }\n\n    if (changes[\"minDate\"]) {\n      this._datepickerRef.instance.minDate = this.minDate;\n    }\n\n    if (changes[\"maxDate\"]) {\n      this._datepickerRef.instance.maxDate = this.maxDate;\n    }\n\n    if (changes[\"daysDisabled\"]) {\n      this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n    }\n\n    if (changes[\"datesDisabled\"]) {\n      this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n    }\n\n    if (changes[\"datesEnabled\"]) {\n      this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n    }\n\n    if (changes[\"isDisabled\"]) {\n      this._datepickerRef.instance.isDisabled = this.isDisabled;\n    }\n\n    if (changes[\"dateCustomClasses\"]) {\n      this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n    }\n\n    if (changes[\"dateTooltipTexts\"]) {\n      this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n    }\n  }\n\n  initSubscribes() {\n    // if date changes from external source (model -> view)\n    this._subs.push(\n      this.bsValueChange.subscribe((value: Date) => {\n        if (this._datepickerRef) {\n          this._datepickerRef.instance.value = value;\n        }\n      })\n    );\n\n    // if date changes from picker (view -> model)\n    if (this._datepickerRef) {\n      this._subs.push(\n        this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n          this.initPreviousValue();\n          this.bsValue = value;\n          if (this.keepDatepickerModalOpened()) {\n            return;\n          }\n\n          this.hide();\n        })\n      );\n    }\n  }\n\n  keepDatepickerModalOpened(): boolean {\n    if (!previousDate || !this.bsConfig?.keepDatepickerOpened || !this._config.withTimepicker) {\n      return false;\n    }\n\n    return this.isDateSame();\n  }\n\n  isDateSame(): boolean {\n    return (previousDate instanceof Date\n      && (this._bsValue?.getDate() === previousDate?.getDate())\n      && (this._bsValue?.getMonth() === previousDate?.getMonth())\n      && (this._bsValue?.getFullYear() === previousDate?.getFullYear()));\n  }\n\n  ngAfterViewInit(): void {\n    this.isOpen$.pipe(\n      filter(isOpen => isOpen !== this.isOpen),\n      takeUntil(this.isDestroy$)\n    )\n      .subscribe(() => this.toggle());\n  }\n\n  /**\n   * Opens an element’s datepicker. This is considered a “manual” triggering of\n   * the datepicker.\n   */\n  show(): void {\n    if (this._datepicker.isShown) {\n      return;\n    }\n\n    this.setConfig();\n\n    this._datepickerRef = this._datepicker\n      .provide({ provide: BsDatepickerConfig, useValue: this._config })\n      .attach(BsDatepickerContainerComponent)\n      .to(this.container)\n      .position({ attachment: this.placement })\n      .show({ placement: this.placement });\n\n    this.initSubscribes();\n  }\n\n  /**\n   * Closes an element’s datepicker. This is considered a “manual” triggering of\n   * the datepicker.\n   */\n  hide(): void {\n    if (this.isOpen) {\n      this._datepicker.hide();\n    }\n    for (const sub of this._subs) {\n      sub.unsubscribe();\n    }\n\n    if (this._config.returnFocusToInput) {\n      this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n    }\n  }\n\n  /**\n   * Toggles an element’s datepicker. This is considered a “manual” triggering\n   * of the datepicker.\n   */\n  toggle(): void {\n    if (this.isOpen) {\n      return this.hide();\n    }\n\n    this.show();\n  }\n\n  /**\n   * Set config for datepicker\n   */\n  setConfig(): void {\n    this._config = Object.assign({}, this._config, this.bsConfig, {\n      value: this._config.keepDatesOutOfRules ? this._bsValue : checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n      isDisabled: this.isDisabled,\n      minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n      maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n      daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n      dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n      dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n      datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n      datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n      minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n      initCurrentTime: this.bsConfig?.initCurrentTime,\n      keepDatepickerOpened: this.bsConfig?.keepDatepickerOpened,\n      keepDatesOutOfRules: this.bsConfig?.keepDatesOutOfRules\n    });\n  }\n\n  unsubscribeSubscriptions() {\n    if (this._subs?.length) {\n      this._subs.map(sub => sub.unsubscribe());\n      this._subs.length = 0;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._datepicker.dispose();\n    this.isOpen$.next(false);\n    if (this.isDestroy$) {\n      this.isDestroy$.next(null);\n      this.isDestroy$.complete();\n    }\n    this.unsubscribeSubscriptions();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\n","import {Component, ElementRef, HostBinding, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport { BsDatepickerContainerComponent } from './bs-datepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n  selector: 'bs-datepicker-inline-container',\n  providers: [BsDatepickerStore, BsDatepickerEffects],\n  templateUrl: './bs-datepicker-view.html',\n  host: {\n    '(click)': '_stopPropagation($event)'\n  },\n  animations: [datepickerAnimation]\n})\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent\n  implements OnInit, OnDestroy {\n\n  @HostBinding ('attr.disabled') get disabledValue () {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  @HostBinding ('attr.readonly') get readonlyValue () {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n  constructor(\n    _renderer: Renderer2,\n    _config: BsDatepickerConfig,\n    _store: BsDatepickerStore,\n    _element: ElementRef,\n    _actions: BsDatepickerActions,\n    _effects: BsDatepickerEffects,\n    _positioningService: PositioningService\n  ) {\n    super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n    _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n    _renderer.setStyle(_element.nativeElement, 'position', 'static');\n  }\n}\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { DatepickerDateCustomClasses, DatepickerDateTooltipText } from './models';\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { copyTime } from './utils/copy-time-utils';\nimport { checkBsValue, setCurrentTimeOnDateSelect } from './utils/bs-calendar-utils';\n\n@Directive({\n  selector: 'bs-datepicker-inline',\n  exportAs: 'bsDatepickerInline'\n})\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n  /**\n   * Config object for datepicker\n   */\n  @Input() bsConfig?: Partial<BsDatepickerInlineConfig>;\n  /**\n   * Indicates whether datepicker is enabled or not\n   */\n  @Input() isDisabled = false;\n  /**\n   * Minimum date which is available for selection\n   */\n  @Input() minDate?: Date;\n  /**\n   * Maximum date which is available for selection\n   */\n  @Input() maxDate?: Date;\n  /**\n   * Date custom classes\n   */\n  @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n  /**\n   * Date tooltip text\n   */\n  @Input() dateTooltipTexts?: DatepickerDateTooltipText[];\n  /**\n   * Disable specific dates\n   */\n  @Input() datesEnabled?: Date[];\n  /**\n   * Enable specific dates\n   */\n  @Input() datesDisabled?: Date[];\n  /**\n   * Emits when datepicker value has been changed\n   */\n  @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n  protected _subs: Subscription[] = [];\n  private readonly _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\n  private _datepickerRef?: ComponentRef<BsDatepickerInlineContainerComponent>;\n\n  constructor(\n    public _config: BsDatepickerInlineConfig,\n    private _elementRef: ElementRef,\n    _renderer: Renderer2,\n    _viewContainerRef: ViewContainerRef,\n    cis: ComponentLoaderFactory\n  ) {\n    // todo: assign only subset of fields\n    Object.assign(this, this._config);\n    this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(\n      _elementRef,\n      _viewContainerRef,\n      _renderer\n    );\n  }\n\n  _bsValue?: Date;\n\n  /**\n   * Initial value of datepicker\n   */\n  @Input()\n  set bsValue(value: Date | undefined) {\n    if (this._bsValue === value) {\n      return;\n    }\n\n     if (!this._bsValue && value && !this._config.withTimepicker) {\n       const now = new Date();\n       copyTime(value, now);\n     }\n\n    if (value && this.bsConfig?.initCurrentTime) {\n      value = setCurrentTimeOnDateSelect(value);\n     }\n\n    this._bsValue = value;\n    this.bsValueChange.emit(value);\n  }\n\n  ngOnInit(): void {\n    this.setConfig();\n    this.initSubscribes();\n  }\n\n  initSubscribes() {\n    this.unsubscribeSubscriptions();\n    this._subs.push(\n      this.bsValueChange.subscribe((value: Date) => {\n        if (this._datepickerRef) {\n          this._datepickerRef.instance.value = value;\n        }\n      })\n    );\n\n    if (this._datepickerRef) {\n      this._subs.push(\n        this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n          this.bsValue = value;\n        })\n      );\n    }\n  }\n\n  unsubscribeSubscriptions() {\n    if (this._subs?.length) {\n      this._subs.map(sub => sub.unsubscribe());\n      this._subs.length = 0;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes[\"bsConfig\"]) {\n      if (changes[\"bsConfig\"].currentValue?.initCurrentTime && changes[\"bsConfig\"].currentValue?.initCurrentTime !== changes[\"bsConfig\"].previousValue?.initCurrentTime && this._bsValue) {\n        this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\n        this.bsValueChange.emit(this._bsValue);\n      }\n    }\n\n    if (!this._datepickerRef || !this._datepickerRef.instance) {\n      return;\n    }\n\n    if (changes[\"minDate\"]) {\n      this._datepickerRef.instance.minDate = this.minDate;\n    }\n\n    if (changes[\"maxDate\"]) {\n      this._datepickerRef.instance.maxDate = this.maxDate;\n    }\n\n    if (changes[\"datesDisabled\"]) {\n      this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n    }\n\n    if (changes[\"datesEnabled\"]) {\n      this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n      this._datepickerRef.instance.value = this._bsValue;\n    }\n\n    if (changes[\"isDisabled\"]) {\n      this._datepickerRef.instance.isDisabled = this.isDisabled;\n    }\n\n    if (changes[\"dateCustomClasses\"]) {\n      this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n    }\n\n    if (changes[\"dateTooltipTexts\"]) {\n      this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n    }\n\n    this.setConfig();\n  }\n\n  /**\n   * Set config for datepicker\n   */\n  setConfig(): void {\n    if (this._datepicker) {\n      this._datepicker.hide();\n    }\n\n    this._config = Object.assign({}, this._config, this.bsConfig, {\n      value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n      isDisabled: this.isDisabled,\n      minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n      maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n      dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n      dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n      datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n      datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n      initCurrentTime: this.bsConfig?.initCurrentTime\n    });\n\n\n    this._datepickerRef = this._datepicker\n      .provide({ provide: BsDatepickerConfig, useValue: this._config })\n      .attach(BsDatepickerInlineContainerComponent)\n      .to(this._elementRef)\n      .show();\n\n    this.initSubscribes();\n  }\n\n  ngOnDestroy() {\n    this._datepicker.dispose();\n    this.unsubscribeSubscriptions();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n    // DatepickerRenderOptions\n  override displayMonths = 2;\n    /** turn on/off animation */\n  override isAnimated = false;\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter, HostBinding,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild\n} from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { TimepickerComponent } from 'ngx-bootstrap/timepicker';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { BsCustomDates } from './bs-custom-dates-view.component';\nimport { dayInMilliseconds } from '../../reducer/_defaults';\n\n@Component({\n  selector: 'bs-daterangepicker-container',\n  providers: [BsDatepickerStore, BsDatepickerEffects],\n  templateUrl: './bs-datepicker-view.html',\n  host: {\n    class: 'bottom',\n    '(click)': '_stopPropagation($event)',\n    role: 'dialog',\n    'aria-label': 'calendar'\n  },\n  animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent\n  implements OnInit, OnDestroy, AfterViewInit {\n\n  set value(value: (Date|undefined)[] | undefined) {\n    this._effects?.setRangeValue(value);\n  }\n\n  valueChange = new EventEmitter<Date[]>();\n  animationState = 'void';\n\n  _rangeStack: Date[] = [];\n  override chosenRange: Date[] = [];\n  _subs: Subscription[] = [];\n  override isRangePicker = true;\n\n  @ViewChild('startTP') startTimepicker?: TimepickerComponent;\n  @ViewChild('endTP') endTimepicker?: TimepickerComponent;\n\n  get isDatePickerDisabled(): boolean {\n    return !!this._config.isDisabled;\n  }\n\n  @HostBinding ('attr.disabled') get isDatepickerDisabled() {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  @HostBinding ('attr.readonly') get isDatepickerReadonly() {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  constructor(\n    _renderer: Renderer2,\n    private _config: BsDatepickerConfig,\n    private _store: BsDatepickerStore,\n    private _element: ElementRef,\n    private _actions: BsDatepickerActions,\n    _effects: BsDatepickerEffects,\n    private _positionService: PositioningService\n  ) {\n    super();\n    this._effects = _effects;\n\n    this.customRanges = this._config.ranges || [];\n    this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n\n    _renderer.setStyle(_element.nativeElement, 'display', 'block');\n    _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n  }\n\n  ngOnInit(): void {\n    this._positionService.setOptions({\n      modifiers: {\n        flip: {\n          enabled: this._config.adaptivePosition\n        },\n        preventOverflow: {\n          enabled: this._config.adaptivePosition\n        }\n      },\n      allowedPositions: this._config.allowedPositions\n    });\n\n    this._positionService.event$?.pipe(take(1))\n      .subscribe(() => {\n        this._positionService.disable();\n\n        if (this._config.isAnimated) {\n          this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n          return;\n        }\n\n        this.animationState = 'unanimated';\n      });\n    this.containerClass = this._config.containerClass;\n    this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n    this.withTimepicker = this._config.withTimepicker;\n    this._effects?.init(this._store)\n      // intial state options\n      // todo: fix this, split configs\n      .setOptions(this._config)\n      // data binding view --> model\n      .setBindings(this)\n      // set event handlers\n      .setEventHandlers(this)\n      .registerDatepickerSideEffects();\n    let currentDate: Date[] | undefined;\n    // todo: move it somewhere else\n    // on selected date change\n    this._subs.push(\n      this._store\n        .select(state => state.selectedRange)\n        .subscribe(dateRange => {\n          currentDate = dateRange;\n          this.valueChange.emit(dateRange);\n          this.chosenRange = dateRange || [];\n        })\n    );\n\n    this._subs.push(\n      this._store\n        .select(state => state.selectedTime)\n        .subscribe((time:any) => {\n          if ((!time[0] || !time[1]) ||\n             (!(time[0] instanceof Date) || !(time[1] instanceof Date)) ||\n             (currentDate && (time[0] === currentDate[0] && time[1] === currentDate[1]))\n          ) {\n            return;\n          }\n\n          this.valueChange.emit(time);\n          this.chosenRange = time || [];\n        })\n    );\n  }\n\n  ngAfterViewInit(): void {\n    this.selectedTimeSub.add(this.selectedTime?.subscribe((val) => {\n      if (Array.isArray(val) && val.length >= 2) {\n        this.startTimepicker?.writeValue(val[0]);\n        this.endTimepicker?.writeValue(val[1]);\n      }\n    }));\n    this.startTimepicker?.registerOnChange((val) => {\n      this.timeSelectHandler(val, 0);\n    });\n    this.endTimepicker?.registerOnChange((val) => {\n      this.timeSelectHandler(val, 1);\n    });\n  }\n\n  get isTopPosition(): boolean {\n    return this._element.nativeElement.classList.contains('top');\n  }\n\n  positionServiceEnable(): void {\n    this._positionService.enable();\n  }\n\n  override timeSelectHandler(date: Date, index: number): void {\n    this._store.dispatch(this._actions.selectTime(date, index));\n  }\n\n  override daySelectHandler(day: DayViewModel): void {\n    if (!day) {\n      return;\n    }\n    const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n    if (isDisabled) {\n      return;\n    }\n    this.rangesProcessing(day);\n  }\n\n  override monthSelectHandler(day: CalendarCellViewModel): void {\n    if (!day || day.isDisabled) {\n      return;\n    }\n\n    day.isSelected = true;\n\n    if (this._config.minMode !== 'month') {\n      if (day.isDisabled) {\n        return;\n      }\n      this._store.dispatch(\n        this._actions.navigateTo({\n          unit: {\n            month: getMonth(day.date),\n            year: getFullYear(day.date)\n          },\n          viewMode: 'day'\n        })\n      );\n\n      return;\n    }\n    this.rangesProcessing(day);\n  }\n\n  override yearSelectHandler(day: CalendarCellViewModel): void {\n    if (!day || day.isDisabled) {\n      return;\n    }\n\n    day.isSelected = true;\n\n    if (this._config.minMode !== 'year') {\n      if (day.isDisabled) {\n        return;\n      }\n      this._store.dispatch(\n        this._actions.navigateTo({\n          unit: {\n            year: getFullYear(day.date)\n          },\n          viewMode: 'month'\n        })\n      );\n\n      return;\n    }\n    this.rangesProcessing(day);\n  }\n\n  rangesProcessing(day: CalendarCellViewModel): void {\n    // if only one date is already selected\n    // and user clicks on previous date\n    // start selection from new date\n    // but if new date is after initial one\n    // than finish selection\n\n    if (this._rangeStack.length === 1) {\n      this._rangeStack =\n        day.date >= this._rangeStack[0]\n          ? [this._rangeStack[0], day.date]\n          :  [day.date];\n    }\n\n    if (this._config.maxDateRange) {\n      this.setMaxDateRangeOnCalendar(day.date);\n    }\n\n    if (this._rangeStack.length === 0) {\n      this._rangeStack = [day.date];\n\n      if (this._config.maxDateRange) {\n        this.setMaxDateRangeOnCalendar(day.date);\n      }\n    }\n\n    this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n    if (this._rangeStack.length === 2) {\n      this._rangeStack = [];\n    }\n  }\n\n  ngOnDestroy(): void {\n    for (const sub of this._subs) {\n      sub.unsubscribe();\n    }\n    this.selectedTimeSub.unsubscribe();\n    this._effects?.destroy();\n  }\n\n  override setRangeOnCalendar(dates: BsCustomDates): void {\n    if (dates) {\n      this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\n    }\n    this._store.dispatch(this._actions.selectRange(this._rangeStack));\n  }\n\n  setMaxDateRangeOnCalendar(currentSelection: Date): void {\n    let maxDateRange = new Date(currentSelection);\n\n    if (this._config.maxDate) {\n      const maxDateValueInMilliseconds = this._config.maxDate.getTime();\n      const maxDateRangeInMilliseconds = currentSelection.getTime() + ((this._config.maxDateRange || 0) * dayInMilliseconds );\n      maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ?\n        new Date(this._config.maxDate) :\n        new Date(maxDateRangeInMilliseconds);\n    } else {\n      maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\n    }\n\n    this._effects?.setMaxDate(maxDateRange);\n  }\n}\n","import {OnInit, OnDestroy, ElementRef, Component, Renderer2, HostBinding} from '@angular/core';\nimport { BsDaterangepickerContainerComponent } from './bs-daterangepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n  selector: 'bs-daterangepicker-inline-container',\n  providers: [BsDatepickerStore, BsDatepickerEffects],\n  templateUrl: './bs-datepicker-view.html',\n  host: {\n    '(click)': '_stopPropagation($event)'\n  },\n  animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent\n  implements OnInit, OnDestroy {\n  @HostBinding ('attr.disabled') get disabledValue () {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  @HostBinding ('attr.readonly') get readonlyValue () {\n    return this.isDatePickerDisabled ? '' : null;\n  }\n\n  constructor(\n    _renderer: Renderer2,\n    _config: BsDatepickerConfig,\n    _store: BsDatepickerStore,\n    _element: ElementRef,\n    _actions: BsDatepickerActions,\n    _effects: BsDatepickerEffects,\n    _positioningService: PositioningService\n  ) {\n    super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n    _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n    _renderer.setStyle(_element.nativeElement, 'position', 'static');\n  }\n}\n","import {\n  ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n  OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\nimport {\n  checkBsValue,\n  checkRangesWithMaxDate,\n  setDateRangesCurrentTimeOnDateSelect\n} from './utils/bs-calendar-utils';\n\n@Directive({\n    selector: 'bs-daterangepicker-inline',\n    exportAs: 'bsDaterangepickerInline'\n})\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n    _bsValue?: (Date|undefined)[] | undefined;\n    /**\n     * Initial value of datepicker\n     */\n    @Input()\n    set bsValue(value: (Date|undefined)[] | undefined) {\n      if (this._bsValue === value) {\n        return;\n      }\n\n      if (value && this.bsConfig?.initCurrentTime) {\n        value = setDateRangesCurrentTimeOnDateSelect(value);\n      }\n\n      this._bsValue = value;\n      this.bsValueChange.emit(value);\n    }\n\n    /**\n     * Config object for datepicker\n     */\n    @Input() bsConfig?: Partial<BsDaterangepickerInlineConfig>;\n    /**\n     * Indicates whether datepicker is enabled or not\n     */\n    @Input() isDisabled = false;\n    /**\n     * Minimum date which is available for selection\n     */\n    @Input() minDate?: Date;\n    /**\n     * Maximum date which is available for selection\n     */\n    @Input() maxDate?: Date;\n    /**\n     * Date custom classes\n     */\n    @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n    /**\n     * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n     */\n    @Input() daysDisabled?: number[];\n    /**\n     * Disable specific dates\n     */\n    @Input() datesDisabled?: Date[];\n    /**\n     * Disable specific dates\n     */\n    @Input() datesEnabled?: Date[];\n    /**\n     * Emits when daterangepicker value has been changed\n     */\n    @Output() bsValueChange: EventEmitter<(Date|undefined)[] | undefined> = new EventEmitter();\n\n    protected _subs: Subscription[] = [];\n\n    private readonly _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\n    private _datepickerRef?: ComponentRef<BsDaterangepickerInlineContainerComponent>;\n\n    constructor(\n      public _config: BsDaterangepickerInlineConfig,\n      private _elementRef: ElementRef,\n      _renderer: Renderer2,\n      _viewContainerRef: ViewContainerRef,\n      cis: ComponentLoaderFactory\n    ) {\n      // todo: assign only subset of fields\n      Object.assign(this, this._config);\n      this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(\n        _elementRef,\n        _viewContainerRef,\n        _renderer\n      );\n    }\n\n    ngOnInit(): void {\n        this.setConfig();\n        this.initSubscribes();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n      if (changes[\"bsConfig\"]) {\n        if (changes[\"bsConfig\"].currentValue.initCurrentTime && changes[\"bsConfig\"].currentValue.initCurrentTime !== changes[\"bsConfig\"].previousValue.initCurrentTime && this._bsValue) {\n          this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\n          this.bsValueChange.emit(this._bsValue);\n        }\n      }\n\n      if (!this._datepickerRef || !this._datepickerRef.instance) {\n        return;\n      }\n\n      if (changes[\"minDate\"]) {\n        this._datepickerRef.instance.minDate = this.minDate;\n      }\n\n      if (changes[\"maxDate\"]) {\n        this._datepickerRef.instance.maxDate = this.maxDate;\n      }\n\n      if (changes[\"datesEnabled\"]) {\n        this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n        this._datepickerRef.instance.value = this._bsValue;\n      }\n\n      if (changes[\"datesDisabled\"]) {\n        this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n      }\n\n      if (changes[\"daysDisabled\"]) {\n        this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n      }\n\n      if (changes[\"isDisabled\"]) {\n        this._datepickerRef.instance.isDisabled = this.isDisabled;\n      }\n\n      if (changes[\"dateCustomClasses\"]) {\n        this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n      }\n\n      this.setConfig();\n    }\n\n    /**\n     * Set config for datepicker\n     */\n    setConfig(): void {\n      if (this._datepicker) {\n        this._datepicker.hide();\n      }\n\n      this._config = Object.assign({}, this._config, this.bsConfig, {\n        value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n        isDisabled: this.isDisabled,\n        minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n        maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n        daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n        dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n        datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n        datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n        ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n        maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n        initCurrentTime: this.bsConfig?.initCurrentTime\n      });\n\n      this._datepickerRef = this._datepicker\n        .provide({provide: BsDatepickerConfig, useValue: this._config})\n        .attach(BsDaterangepickerInlineContainerComponent)\n        .to(this._elementRef)\n        .show();\n\n      this.initSubscribes();\n    }\n\n  initSubscribes() {\n    this.unsubscribeSubscriptions();\n    // if date changes from external source (model -> view)\n    this._subs.push(\n      this.bsValueChange.subscribe((value: Date[]) => {\n        if (this._datepickerRef) {\n          this._datepickerRef.instance.value = value;\n        }\n      })\n    );\n\n    // if date changes from picker (view -> model)\n    if (this._datepickerRef) {\n      this._subs.push(\n        this._datepickerRef.instance.valueChange\n          .pipe(\n            filter((range: Date[]) => range && range[0] && !!range[1])\n          )\n          .subscribe((value: Date[]) => {\n            this.bsValue = value;\n          })\n      );\n    }\n  }\n\n  unsubscribeSubscriptions() {\n    if (this._subs?.length) {\n      this._subs.map(sub => sub.unsubscribe());\n      this._subs.length = 0;\n    }\n  }\n\n    ngOnDestroy() {\n      this._datepicker.dispose();\n      this.unsubscribeSubscriptions();\n    }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  Host,\n  OnDestroy,\n  OnInit,\n  Provider,\n  Renderer2\n} from '@angular/core';\n\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\n\nimport {\n  formatDate,\n  getLocale,\n  isAfter,\n  isBefore,\n  isDate,\n  isDateValid,\n  parseDate,\n  utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => BsDatepickerInputDirective),\n  multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n  provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => BsDatepickerInputDirective),\n  multi: true\n};\n\n@Directive({\n  selector: `input[bsDatepicker]`,\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: {\n    '(change)': 'onChange($event)',\n    '(keyup.esc)': 'hide()',\n    '(keydown)': 'onKeydownEvent($event)',\n    '(blur)': 'onBlur()'\n  },\n  providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class BsDatepickerInputDirective\n  implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n  private _onChange = Function.prototype;\n  private _onTouched = Function.prototype;\n    private _validatorChange = Function.prototype;\n  private _value?: Date;\n  private _subs = new Subscription();\n\n  constructor(@Host() private _picker: BsDatepickerDirective,\n              private _localeService: BsLocaleService,\n              private _renderer: Renderer2,\n              private _elRef: ElementRef,\n              private changeDetection: ChangeDetectorRef) {}\n\n  ngOnInit() {\n    const setBsValue = (value: Date) => {\n      this._setInputValue(value);\n      if (this._value !== value) {\n        this._value = value;\n        this._onChange(value);\n        this._onTouched();\n      }\n      this.changeDetection.markForCheck();\n    };\n\n    // if value set via [bsValue] it will not get into value change\n    if (this._picker._bsValue) {\n      setBsValue(this._picker._bsValue);\n    }\n\n    // update input value on datepicker value update\n    this._subs.add(\n      this._picker.bsValueChange.subscribe(setBsValue)\n    );\n\n    // update input value on locale change\n    this._subs.add(\n      this._localeService.localeChange.subscribe(() => {\n        this._setInputValue(this._value);\n      })\n    );\n\n    this._subs.add(\n    this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n      this._setInputValue(this._value);\n    })\n  );\n}\n\n  ngOnDestroy() {\n    this._subs.unsubscribe();\n  }\n\n  onKeydownEvent(event: KeyboardEvent): void {\n    if (event.keyCode === 13 || event.code === 'Enter') {\n      this.hide();\n    }\n  }\n\n  _setInputValue(value?: Date): void {\n    const initialDate = !value ? ''\n      : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n    this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n  }\n\n  onChange(event: Event) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    this.writeValue((event.target as any).value);\n    this._onChange(this._value);\n    if (this._picker._config.returnFocusToInput) {\n      this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n    }\n    this._onTouched();\n  }\n\n  validate(c: AbstractControl): ValidationErrors | null {\n    const _value: Date | string = c.value;\n\n        if (_value === null || _value === undefined || _value === '') {\n      return null;\n    }\n\n    if (isDate(_value)) {\n      const _isDateValid = isDateValid(_value);\n      if (!_isDateValid) {\n        return { bsDate: { invalid: _value } };\n      }\n\n      if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n        this.writeValue(this._picker.minDate);\n\n        return { bsDate: { minDate: this._picker.minDate } };\n      }\n\n      if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n        this.writeValue(this._picker.maxDate);\n\n        return { bsDate: { maxDate: this._picker.maxDate } };\n      }\n    }\n\n    return null;\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorChange = fn;\n  }\n\n  writeValue(value: Date | string) {\n    if (!value) {\n      this._value = void 0;\n    } else {\n      const _localeKey = this._localeService.currentLocale;\n      const _locale = getLocale(_localeKey);\n      if (!_locale) {\n        throw new Error(\n          `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n        );\n      }\n\n      this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n      if (this._picker._config.useUtc) {\n        this._value = utcAsLocal(this._value);\n      }\n    }\n\n    this._picker.bsValue = this._value;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._picker.isDisabled = isDisabled;\n    if (isDisabled) {\n      this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n      return;\n    }\n    this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n  }\n\n  registerOnChange(fn: () => void): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  onBlur() {\n    this._onTouched();\n  }\n\n  hide() {\n    this._picker.hide();\n    this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n    if (this._picker._config.returnFocusToInput) {\n      this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n  // DatepickerRenderOptions\n  override displayMonths = 2;\n}\n","import {\n  AfterViewInit, ComponentRef,\n  Directive, ElementRef, EventEmitter, HostBinding,\n  Input, OnChanges, OnDestroy, OnInit,\n  Output, Renderer2, SimpleChanges,\n  ViewContainerRef\n} from '@angular/core';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { ComponentLoaderFactory, ComponentLoader } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { DatepickerDateCustomClasses } from './models';\nimport {\n  checkBsValue,\n  checkRangesWithMaxDate,\n  setDateRangesCurrentTimeOnDateSelect\n} from './utils/bs-calendar-utils';\n\nexport let previousDate: (Date | undefined)[] | undefined;\n\n\n@Directive({\n  selector: '[bsDaterangepicker]',\n  exportAs: 'bsDaterangepicker'\n})\nexport class BsDaterangepickerDirective\n  implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n  /**\n   * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n   */\n  @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n  /**\n   * Specifies events that should trigger. Supports a space separated list of\n   * event names.\n   */\n  @Input() triggers = 'click';\n  /**\n   * Close daterangepicker on outside click\n   */\n  @Input() outsideClick = true;\n  /**\n   * A selector specifying the element the daterangepicker should be appended to.\n   */\n  @Input() container = 'body';\n\n  @Input() outsideEsc = true;\n\n  /**\n   * Returns whether or not the daterangepicker is currently being shown\n   */\n  @Input()\n  get isOpen(): boolean {\n    return this._datepicker.isShown;\n  }\n\n  set isOpen(value: boolean) {\n    this.isOpen$.next(value);\n  }\n\n  /**\n   * Emits an event when the daterangepicker is shown\n   */\n  @Output() onShown: EventEmitter<unknown>;\n  /**\n   * Emits an event when the daterangepicker is hidden\n   */\n  @Output() onHidden: EventEmitter<unknown>;\n\n  _bsValue?: (Date|undefined)[];\n  isOpen$: BehaviorSubject<boolean>;\n  isDestroy$ = new Subject();\n\n  /**\n   * Initial value of daterangepicker\n   */\n  @Input()\n  set bsValue(value: (Date|undefined)[] | undefined) {\n    if (this._bsValue === value) {\n      return;\n    }\n\n    if (value && this.bsConfig?.initCurrentTime) {\n      value = setDateRangesCurrentTimeOnDateSelect(value);\n    }\n    this.initPreviousValue();\n    this._bsValue = value;\n    this.bsValueChange.emit(value);\n  }\n\n  /**\n   * Config object for daterangepicker\n   */\n  @Input() bsConfig?: Partial<BsDaterangepickerConfig>;\n  /**\n   * Indicates whether daterangepicker's content is enabled or not\n   */\n  @Input() isDisabled = false;\n  /**\n   * Minimum date which is available for selection\n   */\n  @Input() minDate?: Date;\n  /**\n   * Maximum date which is available for selection\n   */\n  @Input() maxDate?: Date;\n  /**\n   * Date custom classes\n   */\n  @Input() dateCustomClasses?: DatepickerDateCustomClasses[];\n  /**\n   * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n   */\n  @Input() daysDisabled?: number[];\n  /**\n   * Disable specific dates\n   */\n  @Input() datesDisabled?: Date[];\n\n  /**\n   * Enable specific dates\n   */\n  @Input() datesEnabled?: Date[];\n  /**\n   * Emits when daterangepicker value has been changed\n   */\n  @Output() bsValueChange = new EventEmitter<((Date|undefined)[]|undefined)>();\n\n  @HostBinding ('attr.readonly') get isDatepickerReadonly() {\n    return this.isDisabled ? '' : null;\n  }\n\n  get rangeInputFormat$(): Observable<string> {\n    return this._rangeInputFormat$;\n  }\n\n  protected _subs: Subscription[] = [];\n  private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n  private _datepickerRef?: ComponentRef<BsDaterangepickerContainerComponent>;\n  private readonly _rangeInputFormat$ = new Subject<string>();\n\n  constructor(public _config: BsDaterangepickerConfig,\n              private  _elementRef: ElementRef,\n              private  _renderer: Renderer2,\n              _viewContainerRef: ViewContainerRef,\n              cis: ComponentLoaderFactory) {\n    this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(\n      _elementRef,\n      _viewContainerRef,\n      _renderer\n    );\n    Object.assign(this, _config);\n    this.onShown = this._datepicker.onShown;\n    this.onHidden = this._datepicker.onHidden;\n    this.isOpen$ = new BehaviorSubject(this.isOpen);\n  }\n\n  ngOnInit(): void {\n    this.isDestroy$ = new Subject();\n    this._datepicker.listen({\n      outsideClick: this.outsideClick,\n      outsideEsc: this.outsideEsc,\n      triggers: this.triggers,\n      show: () => this.show()\n    });\n    this.initPreviousValue();\n    this.setConfig();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes[\"bsConfig\"]) {\n      if (changes[\"bsConfig\"].currentValue?.initCurrentTime && changes[\"bsConfig\"].currentValue?.initCurrentTime !== changes[\"bsConfig\"].previousValue?.initCurrentTime && this._bsValue) {\n        this.initPreviousValue();\n        this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\n        this.bsValueChange.emit(this._bsValue);\n      }\n\n      this.setConfig();\n      this._rangeInputFormat$.next(changes[\"bsConfig\"].currentValue && changes[\"bsConfig\"].currentValue.rangeInputFormat);\n    }\n\n\n    if (!this._datepickerRef || !this._datepickerRef.instance) {\n      return;\n    }\n    if (changes[\"minDate\"]) {\n      this._datepickerRef.instance.minDate = this.minDate;\n    }\n    if (changes[\"maxDate\"]) {\n      this._datepickerRef.instance.maxDate = this.maxDate;\n    }\n    if (changes[\"datesDisabled\"]) {\n      this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n    }\n    if (changes[\"datesEnabled\"]) {\n      this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n    }\n    if (changes[\"daysDisabled\"]) {\n      this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n    }\n    if (changes[\"isDisabled\"]) {\n      this._datepickerRef.instance.isDisabled = this.isDisabled;\n    }\n    if (changes[\"dateCustomClasses\"]) {\n      this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.isOpen$.pipe(\n      filter(isOpen => isOpen !== this.isOpen),\n      takeUntil(this.isDestroy$)\n    )\n      .subscribe(() => this.toggle());\n  }\n\n  /**\n   * Opens an element’s datepicker. This is considered a “manual” triggering of\n   * the datepicker.\n   */\n  show(): void {\n    if (this._datepicker.isShown) {\n      return;\n    }\n\n    this.setConfig();\n\n    this._datepickerRef = this._datepicker\n      .provide({ provide: BsDatepickerConfig, useValue: this._config })\n      .attach(BsDaterangepickerContainerComponent)\n      .to(this.container)\n      .position({ attachment: this.placement })\n      .show({ placement: this.placement });\n\n    this.initSubscribes();\n  }\n\n  initSubscribes() {\n    // if date changes from external source (model -> view)\n    this._subs.push(\n      this.bsValueChange.subscribe((value: Date[]) => {\n        if (this._datepickerRef) {\n          this._datepickerRef.instance.value = value;\n        }\n      })\n    );\n\n    // if date changes from picker (view -> model)\n    if (this._datepickerRef) {\n      this._subs.push(\n        this._datepickerRef.instance.valueChange\n          .pipe(\n            filter((range: Date[]) => range && range[0] && !!range[1])\n          )\n          .subscribe((value: Date[]) => {\n            this.initPreviousValue();\n            this.bsValue = value;\n            if (this.keepDatepickerModalOpened()) {\n              return;\n            }\n\n            this.hide();\n          })\n      );\n    }\n  }\n\n  initPreviousValue() {\n    previousDate = this._bsValue;\n  }\n\n  keepDatepickerModalOpened(): boolean {\n    if (!previousDate || !this.bsConfig?.keepDatepickerOpened || !this._config.withTimepicker) {\n      return false;\n    }\n\n    return this.isDateSame();\n  }\n\n  isDateSame(): boolean {\n    return ((this._bsValue?.[0]?.getDate() === previousDate?.[0]?.getDate())\n      && (this._bsValue?.[0]?.getMonth() === previousDate?.[0]?.getMonth())\n      && (this._bsValue?.[0]?.getFullYear() === previousDate?.[0]?.getFullYear())\n      && (this._bsValue?.[1]?.getDate() === previousDate?.[1]?.getDate())\n      && (this._bsValue?.[1]?.getMonth() === previousDate?.[1]?.getMonth())\n      && (this._bsValue?.[1]?.getFullYear() === previousDate?.[1]?.getFullYear())\n    );\n  }\n\n  /**\n   * Set config for daterangepicker\n   */\n  setConfig() {\n    this._config = Object.assign(\n      {},\n      this._config,\n      this.bsConfig,\n      {\n        value: this.bsConfig?.keepDatesOutOfRules ? this._bsValue : checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n        isDisabled: this.isDisabled,\n        minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n        maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n        daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n        dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n        datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n        datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n        ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n        maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n        initCurrentTime: this.bsConfig?.initCurrentTime,\n        keepDatepickerOpened: this.bsConfig?.keepDatepickerOpened,\n        keepDatesOutOfRules: this.bsConfig?.keepDatesOutOfRules\n      }\n    );\n  }\n\n  /**\n   * Closes an element’s datepicker. This is considered a “manual” triggering of\n   * the datepicker.\n   */\n  hide(): void {\n    if (this.isOpen) {\n      this._datepicker.hide();\n    }\n    for (const sub of this._subs) {\n      sub.unsubscribe();\n    }\n\n    if (this._config.returnFocusToInput) {\n      this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n    }\n  }\n\n  /**\n   * Toggles an element’s datepicker. This is considered a “manual” triggering\n   * of the datepicker.\n   */\n  toggle(): void {\n    if (this.isOpen) {\n      return this.hide();\n    }\n\n    this.show();\n  }\n\n  unsubscribeSubscriptions() {\n    if (this._subs?.length) {\n      this._subs.map(sub => sub.unsubscribe());\n      this._subs.length = 0;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._datepicker.dispose();\n    this.isOpen$.next(false);\n    if (this.isDestroy$) {\n      this.isDestroy$.next(null);\n      this.isDestroy$.complete();\n    }\n\n    this.unsubscribeSubscriptions();\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  Host,\n  OnDestroy,\n  OnInit,\n  Provider,\n  Renderer2\n} from '@angular/core';\n\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\n\nimport {\n  parseDate,\n  formatDate,\n  getLocale,\n  isAfter,\n  isBefore,\n  isArray,\n  isDateValid,\n  utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n  multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n  multi: true\n};\n\n\n@Directive({\n  selector: `input[bsDaterangepicker]`,\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: {\n    '(change)': 'onChange($event)',\n    '(keyup.esc)': 'hide()',\n    '(keydown)': 'onKeydownEvent($event)',\n    '(blur)': 'onBlur()'\n  },\n  providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class BsDaterangepickerInputDirective\n  implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n  private _onChange = Function.prototype;\n  private _onTouched = Function.prototype;\n  private _validatorChange = Function.prototype;\n  private _value?: (Date|undefined)[];\n  private _subs = new Subscription();\n\n  constructor(@Host() private _picker: BsDaterangepickerDirective,\n              private _localeService: BsLocaleService,\n              private _renderer: Renderer2,\n              private _elRef: ElementRef,\n              private changeDetection: ChangeDetectorRef) {\n  }\n\n  ngOnInit() {\n    const setBsValue = (value: (Date|undefined)[]) => {\n      this._setInputValue(value);\n      if (this._value !== value) {\n        this._value = value;\n        this._onChange(value);\n        this._onTouched();\n      }\n      this.changeDetection.markForCheck();\n    };\n\n    // if value set via [bsValue] it will not get into value change\n    if (this._picker._bsValue) {\n      setBsValue(this._picker._bsValue);\n    }\n\n    // update input value on datepicker value update\n    this._subs.add(\n      this._picker.bsValueChange.subscribe((value: Date[]) => {\n        this._setInputValue(value);\n        if (this._value !== value) {\n          this._value = value;\n          this._onChange(value);\n          this._onTouched();\n        }\n        this.changeDetection.markForCheck();\n      }));\n\n    // update input value on locale change\n    this._subs.add(this._localeService.localeChange.subscribe(() => {\n      this._setInputValue(this._value);\n    }));\n\n    this._subs.add(\n      // update input value on format change\n      this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n        this._setInputValue(this._value);\n      }));\n  }\n\n  ngOnDestroy() {\n    this._subs.unsubscribe();\n  }\n\n  onKeydownEvent(event: KeyboardEvent) {\n    if (event.keyCode === 13 || event.code === 'Enter') {\n      this.hide();\n    }\n  }\n\n  _setInputValue(date?: (Date|undefined)[]): void {\n    let range = '';\n    if (date) {\n      const start: string = !date[0] ? ''\n        : formatDate(date[0],\n          this._picker._config.rangeInputFormat,\n          this._localeService.currentLocale\n        );\n      const end: string = !date[1] ? ''\n        : formatDate(\n          date[1],\n          this._picker._config.rangeInputFormat,\n          this._localeService.currentLocale\n        );\n      range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n    }\n    this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n  }\n\n  onChange(event: Event) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    this.writeValue((event.target as any).value);\n    this._onChange(this._value);\n    if (this._picker._config.returnFocusToInput) {\n      this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n    }\n    this._onTouched();\n  }\n\n  validate(c: AbstractControl): ValidationErrors | null {\n    let _value: [Date, Date] = c.value;\n    const errors: Record<string, unknown>[] = [];\n\n    if (_value === null || _value === undefined || !isArray(_value)) {\n      return null;\n    }\n\n    _value = _value.slice().sort((a, b) => a.getTime() - b.getTime()) as [Date, Date];\n\n    const _isFirstDateValid = isDateValid(_value[0]);\n    const _isSecondDateValid = isDateValid(_value[1]);\n\n    if (!_isFirstDateValid) {\n      return { bsDate: { invalid: _value[0] } };\n    }\n\n    if (!_isSecondDateValid) {\n      return { bsDate: { invalid: _value[1] } };\n    }\n\n    if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n      _value[0] = this._picker.minDate;\n      errors.push({ bsDate: { minDate: this._picker.minDate } });\n    }\n\n    if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n      _value[1] = this._picker.maxDate;\n      errors.push({ bsDate: { maxDate: this._picker.maxDate } });\n    }\n    if (errors.length > 0) {\n      this.writeValue(_value);\n\n      return errors;\n    }\n\n    return null;\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorChange = fn;\n  }\n\n  writeValue(value: Date[] | string) {\n    if (!value) {\n      this._value = void 0;\n    } else {\n      const _localeKey = this._localeService.currentLocale;\n      const _locale = getLocale(_localeKey);\n      if (!_locale) {\n        throw new Error(\n          `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n        );\n      }\n\n      let _input: (string | Date)[] = [];\n      if (typeof value === 'string') {\n        const trimmedSeparator = this._picker._config.rangeSeparator.trim();\n        if (value.replace(/[^-]/g, '').length > 1) {\n          _input = value.split(this._picker._config.rangeSeparator);\n        } else {\n          _input = value\n            .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\n            .map(_val => _val.trim());\n        }\n      }\n\n      if (Array.isArray(value)) {\n        _input = value;\n      }\n\n      this._value = _input\n        .map((_val: string | Date): Date => {\n            if (this._picker._config.useUtc) {\n              return utcAsLocal(\n                parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale)\n              );\n            }\n\n            return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n          }\n        )\n        .map((date: Date) => (isNaN(date.valueOf()) ? void 0 : date));\n    }\n\n    this._picker.bsValue = this._value;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._picker.isDisabled = isDisabled;\n    if (isDisabled) {\n      this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n      return;\n    }\n    this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  registerOnChange(fn: () => void): void {\n    this._onChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  onBlur() {\n    this._onTouched();\n  }\n\n  hide() {\n    this._picker.hide();\n    this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n\n    if (this._picker._config.returnFocusToInput) {\n      this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { TimepickerModule, TimepickerActions } from 'ngx-bootstrap/timepicker';\n\nimport { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\n\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\n\nimport { BsLocaleService } from './bs-locale.service';\nimport { BsDatepickerActions } from './reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from './reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from './reducer/bs-datepicker.store';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\n\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\n\nimport { BsDaterangepickerInlineDirective } from './bs-daterangepicker-inline.component';\n\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { BsDatepickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { BsDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\n\n@NgModule({\n    imports: [CommonModule, TooltipModule, TimepickerModule],\n    declarations: [\n        BsCalendarLayoutComponent,\n        BsCurrentDateViewComponent,\n        BsCustomDatesViewComponent,\n        BsDatepickerDayDecoratorComponent,\n        BsDatepickerNavigationViewComponent,\n        BsDaysCalendarViewComponent,\n        BsMonthCalendarViewComponent,\n        BsTimepickerViewComponent,\n        BsYearsCalendarViewComponent,\n        BsDatepickerContainerComponent,\n        BsDatepickerDirective,\n        BsDatepickerInlineContainerComponent,\n        BsDatepickerInlineDirective,\n        BsDatepickerInputDirective,\n        BsDaterangepickerContainerComponent,\n        BsDaterangepickerDirective,\n        BsDaterangepickerInlineContainerComponent,\n        BsDaterangepickerInlineDirective,\n        BsDaterangepickerInputDirective\n    ],\n    exports: [\n        BsDatepickerContainerComponent,\n        BsDatepickerDirective,\n        BsDatepickerInlineContainerComponent,\n        BsDatepickerInlineDirective,\n        BsDatepickerInputDirective,\n        BsDaterangepickerContainerComponent,\n        BsDaterangepickerDirective,\n        BsDaterangepickerInlineContainerComponent,\n        BsDaterangepickerInlineDirective,\n        BsDaterangepickerInputDirective\n    ]\n})\nexport class BsDatepickerModule {\n  static forRoot(): ModuleWithProviders<BsDatepickerModule> {\n    return {\n      ngModule: BsDatepickerModule,\n      providers: [\n        ComponentLoaderFactory,\n        PositioningService,\n        BsDatepickerStore,\n        BsDatepickerActions,\n        BsDatepickerEffects,\n        BsLocaleService,\n        TimepickerActions\n      ]\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.BsDatepickerActions","i2.BsLocaleService","height","width","shift","i1","i2.BsCurrentDateViewComponent","i3.BsTimepickerViewComponent","i1.BsDatepickerConfig","i2","i4.BsCalendarLayoutComponent","i5.BsDatepickerDayDecoratorComponent","i6.BsDatepickerNavigationViewComponent","i2.BsCalendarLayoutComponent","i3.BsDatepickerNavigationViewComponent","i2.BsDatepickerStore","i3.BsDatepickerActions","i4.BsDatepickerEffects","i8.BsCustomDatesViewComponent","i9.BsDaysCalendarViewComponent","i10.BsMonthCalendarViewComponent","i11.BsYearsCalendarViewComponent","previousDate","i1.BsDatepickerInlineConfig","i1.BsDaterangepickerInlineConfig","i1.BsDatepickerDirective","i1.BsDaterangepickerConfig","i1.BsDaterangepickerDirective"],"mappings":"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"}