UNPKG

@period-year-norway/ngx-bootstrap

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