{"version":3,"file":"ngx-daterangepicker-bootstrap.mjs","sources":["../../../projects/ngx-daterangepicker-bootstrap/src/lib/enums/side.enum.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/ranges/ranges.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/ranges/ranges.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/calendar/calendar.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/calendar/calendar.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/actions/actions.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/actions/actions.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/utils/ngx-daterangepicker-locale.config.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/services/ngx-daterangepicker-locale.service.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/daterangepicker/ngx-daterangepicker-bootstrap.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/daterangepicker/ngx-daterangepicker-bootstrap.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/directives/ngx-daterangepicker-bootstrap.directive.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/modules/ngx-daterangepicker-bootstrap.module.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/utils/ngx-daterangepicker-locale.provider.ts","../../../projects/ngx-daterangepicker-bootstrap/src/public-api.ts","../../../projects/ngx-daterangepicker-bootstrap/src/ngx-daterangepicker-bootstrap.ts"],"sourcesContent":["export enum SideEnum {\r\n  left = 'left',\r\n  right = 'right'\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\nimport {Dayjs} from \"dayjs\";\r\n\r\n@Component({\r\n  selector: 'ranges',\r\n  standalone: true,\r\n  imports: [\r\n    NgClass\r\n  ],\r\n  templateUrl: './ranges.component.html',\r\n  styleUrl: './ranges.component.scss'\r\n})\r\nexport class RangesComponent {\r\n  @Input() rangesArray: Array<any> = [];\r\n  @Input() chosenRange: any;\r\n  @Input() locale: any;\r\n  @Input() ranges: any;\r\n  @Input() _minDate: any;\r\n  @Input() _maxDate: any;\r\n  @Output() rangeEvent: EventEmitter<{ $event: MouseEvent, label: string }> = new EventEmitter();\r\n\r\n  clickRange($event: MouseEvent, label: string) {\r\n    this.rangeEvent.emit({$event: $event, label: label})\r\n  }\r\n\r\n  /**\r\n   * Find out if the selected range should be disabled if it doesn't\r\n   * fit into minDate and maxDate limitations.\r\n   */\r\n  disableRange(range: any) {\r\n    if (range === this.locale.customRangeLabel) {\r\n      return false;\r\n    }\r\n    const rangeMarkers = this.ranges[range];\r\n    const areBothBefore = rangeMarkers.every((date: any) => {\r\n      if (!this.getMinDate()) {\r\n        return false;\r\n      }\r\n      return date.isBefore(this.getMinDate());\r\n    });\r\n    const areBothAfter = rangeMarkers.every((date: any) => {\r\n      if (!this.getMaxDate()) {\r\n        return false;\r\n      }\r\n      return date.isAfter(this.getMaxDate());\r\n    });\r\n    return (areBothBefore || areBothAfter);\r\n  }\r\n\r\n  getMinDate(): Dayjs | null | undefined {\r\n    return this._minDate;\r\n  }\r\n\r\n  getMaxDate(): Dayjs | null | undefined {\r\n    return this._maxDate;\r\n  }\r\n\r\n}\r\n","@if (rangesArray.length) {\r\n  <div class='ranges'>\r\n    <ul>\r\n      @for (range of rangesArray; track $index) {\r\n        <li>\r\n          <button type='button'\r\n                  (click)='clickRange($event, range)'\r\n                  [disabled]='disableRange(range)'\r\n                  [ngClass]=\"{'active': range === chosenRange}\">\r\n            {{ range }}\r\n          </button>\r\n        </li>\r\n      }\r\n    </ul>\r\n  </div>\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {SideEnum} from \"../../enums/side.enum\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {NgClass} from \"@angular/common\";\r\n\r\n@Component({\r\n  selector: 'calendar',\r\n  standalone: true,\r\n  imports: [\r\n    FormsModule,\r\n    NgClass\r\n  ],\r\n  templateUrl: './calendar.component.html',\r\n  styleUrl: './calendar.component.scss'\r\n})\r\nexport class CalendarComponent {\r\n\r\n  protected readonly sideEnum = SideEnum;\r\n\r\n  @Input() showCalInRanges: any;\r\n  @Input() singleDatePicker: any;\r\n  @Input() calendarVariables: any;\r\n  @Input() showWeekNumbers: any;\r\n  @Input() showISOWeekNumbers: any;\r\n  @Input() linkedCalendars: any;\r\n  @Input() showDropdowns: any;\r\n  @Input() locale: any;\r\n  @Input() timePicker: any;\r\n  @Input() startDate: any;\r\n  @Input() timepickerVariables: any;\r\n  @Input() timePickerSeconds: any;\r\n  @Input() timePicker24Hour: any;\r\n  @Output() prevEvent: EventEmitter<{ $event: MouseEvent, side: SideEnum }> = new EventEmitter();\r\n  @Output() nextEvent: EventEmitter<{ $event: MouseEvent, side: SideEnum }> = new EventEmitter();\r\n  @Output() monthChangedEvent: EventEmitter<{ $event: Event, side: SideEnum }> = new EventEmitter();\r\n  @Output() yearChangedEvent: EventEmitter<{ $event: Event, side: SideEnum }> = new EventEmitter();\r\n  @Output() dateEvent: EventEmitter<{ $event: Event, side: SideEnum, row: number, col: number }> = new EventEmitter();\r\n  @Output() hoverDateEvent: EventEmitter<{\r\n    $event: Event,\r\n    side: SideEnum,\r\n    row: number,\r\n    col: number\r\n  }> = new EventEmitter();\r\n  @Output() timeChangedEvent: EventEmitter<{ $event: Event, side: SideEnum }> = new EventEmitter();\r\n\r\n  clickPrev($event: MouseEvent, side: SideEnum) {\r\n    this.prevEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  clickNext($event: MouseEvent, side: SideEnum) {\r\n    this.nextEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  monthChanged($event: Event, side: SideEnum) {\r\n    this.monthChangedEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  yearChanged($event: Event, side: SideEnum) {\r\n    this.yearChangedEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  clickDate($event: Event, side: SideEnum, row: number, col: number) {\r\n    this.dateEvent.emit({$event: $event, side: side, row: row, col: col})\r\n  }\r\n\r\n  hoverDate($event: Event, side: SideEnum, row: number, col: number) {\r\n    this.hoverDateEvent.emit({$event: $event, side: side, row: row, col: col})\r\n  }\r\n\r\n  timeChanged($event: Event, side: SideEnum) {\r\n    this.timeChangedEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n}\r\n","@if (showCalInRanges) {\r\n  <div class='calendar' [ngClass]='{right: singleDatePicker, left: !singleDatePicker}'>\r\n    @if (calendarVariables) {\r\n      <table class='table-condensed calendar-table'>\r\n        <thead>\r\n        <tr>\r\n          @if (showWeekNumbers || showISOWeekNumbers) {\r\n            <th></th>\r\n          }\r\n          @if (!calendarVariables.left.minDate || calendarVariables.left.minDate.isBefore(calendarVariables.left.calendar.firstDay) && (!this.linkedCalendars || true)) {\r\n            <th (click)='clickPrev($event, sideEnum.left)' class='prev available'></th>\r\n          }\r\n          @if (!(!calendarVariables.left.minDate || calendarVariables.left.minDate.isBefore(calendarVariables.left.calendar.firstDay) && (!this.linkedCalendars || true))) {\r\n            <th></th>\r\n          }\r\n          <th colspan='5' class='month drp-animate'>\r\n            @if (showDropdowns && calendarVariables.left.dropdowns) {\r\n              <div class='dropdowns'>\r\n                {{ this.locale.monthNames[calendarVariables.left.calendar?.[1][1].month()] }}\r\n                <select class='monthselect' (change)='monthChanged($event, sideEnum.left)'>\r\n                  @for (m of calendarVariables.left.dropdowns.monthArrays; track $index) {\r\n                    <option [selected]='calendarVariables.left.dropdowns.currentMonth == m' [value]='m'\r\n                            [disabled]='(calendarVariables.left.dropdowns.inMinYear && m < calendarVariables.left.minDate.month())\r\n                              || (calendarVariables.left.dropdowns.inMaxYear && m > calendarVariables.left.maxDate.month())'>\r\n                      {{ locale.monthNames[m] }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n              <div class='dropdowns'>\r\n                {{ calendarVariables.left.calendar?.[1][1].format(\" YYYY\") }}\r\n                <select class='yearselect' (change)='yearChanged($event, sideEnum.left)'>\r\n                  @for (y of calendarVariables.left.dropdowns.yearArrays; track $index) {\r\n                    <option [selected]='y === calendarVariables.left.dropdowns.currentYear'>\r\n                      {{ y }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n            }\r\n            @if (!showDropdowns || !calendarVariables.left.dropdowns) {\r\n              {{ this.locale.monthNames[calendarVariables.left.calendar?.[1][1].month()] }}  {{ calendarVariables.left.calendar?.[1][1].format(\" YYYY\") }}\r\n            }\r\n          </th>\r\n          @if ((!calendarVariables.left.maxDate || calendarVariables.left.maxDate.isAfter(calendarVariables.left.calendar.lastDay)) && (!linkedCalendars || singleDatePicker)) {\r\n            <th class='next available' (click)='clickNext($event, sideEnum.left)'></th>\r\n          }\r\n          @if (!((!calendarVariables.left.maxDate || calendarVariables.left.maxDate.isAfter(calendarVariables.left.calendar.lastDay)) && (!linkedCalendars || singleDatePicker))) {\r\n            <th></th>\r\n          }\r\n        </tr>\r\n        <tr class='week-days'>\r\n          @if (showWeekNumbers || showISOWeekNumbers) {\r\n            <th class='week'>\r\n              <span>{{ this.locale.weekLabel }}</span>\r\n            </th>\r\n          }\r\n          @for (dayofweek of locale.daysOfWeek; track $index) {\r\n            <th>\r\n              <span>{{ dayofweek }}</span>\r\n            </th>\r\n          }\r\n        </tr>\r\n        </thead>\r\n        <tbody class='drp-animate'>\r\n          @for (row of calendarVariables.left.calRows; track $index) {\r\n            <tr [class]='calendarVariables.left.classes[row].classList'>\r\n              <!-- add week number -->\r\n              @if (showWeekNumbers) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables.left.calendar?.[row][0].week() }}</span>\r\n                </td>\r\n              }\r\n              @if (showISOWeekNumbers) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables.left.calendar?.[row][0].isoWeek() }}</span>\r\n                </td>\r\n              }\r\n              <!-- cal -->\r\n              @for (col of calendarVariables.left.calCols; track $index) {\r\n                <td [class]='calendarVariables.left.classes[row][col]'\r\n                    (click)='clickDate($event, sideEnum.left, row, col)'\r\n                    (mouseenter)='hoverDate($event, sideEnum.left, row, col)'>\r\n                  <span>{{ calendarVariables.left.calendar?.[row][col].date() }}</span>\r\n                </td>\r\n              }\r\n            </tr>\r\n          }\r\n        </tbody>\r\n      </table>\r\n    }\r\n    @if (timePicker) {\r\n      <div class='calendar-time'>\r\n        <div class='select'>\r\n          <select class='hourselect select-item' [disabled]='!startDate'\r\n                  [(ngModel)]='timepickerVariables.left.selectedHour'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n            @for (i of timepickerVariables.left.hours; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables.left.disabledHours.indexOf(i) > -1'>\r\n                {{ i }}\r\n              </option>\r\n            }\r\n          </select>\r\n        </div>\r\n        :\r\n        <div class='select'>\r\n          <select class='select-item minuteselect' [disabled]='!startDate'\r\n                  [(ngModel)]='timepickerVariables.left.selectedMinute'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n            @for (i of timepickerVariables.left.minutes; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables.left.disabledMinutes.indexOf(i) > -1'>\r\n                {{ timepickerVariables.left.minutesLabel[$index] }}\r\n              </option>\r\n            }\r\n          </select>\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        :\r\n        <div class='select'>\r\n          @if (timePickerSeconds) {\r\n            <select class='select-item secondselect' [disabled]='!startDate'\r\n                    [(ngModel)]='timepickerVariables.left.selectedSecond'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n              @for (i of timepickerVariables.left.seconds; track $index) {\r\n                <option [value]='i' [disabled]='timepickerVariables.left.disabledSeconds.indexOf(i) > -1'>\r\n                  {{ timepickerVariables.left.secondsLabel[$index] }}\r\n                </option>\r\n              }\r\n            </select>\r\n          }\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        @if (!timePicker24Hour) {\r\n          <div class='select'>\r\n            <select class='select-item ampmselect'\r\n                    [(ngModel)]='timepickerVariables.left.ampmModel'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n              <option value='AM' [disabled]='timepickerVariables.left.amDisabled'>AM</option>\r\n              <option value='PM' [disabled]='timepickerVariables.left.pmDisabled'>PM</option>\r\n            </select>\r\n            <span class='select-highlight'></span>\r\n            <span class='select-bar'></span>\r\n          </div>\r\n        }\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n@if (showCalInRanges && !singleDatePicker) {\r\n  <div class='calendar right'>\r\n    @if (calendarVariables) {\r\n      <table class='table-condensed calendar-table'>\r\n        <thead>\r\n        <tr>\r\n          @if (showWeekNumbers || showISOWeekNumbers) {\r\n            <th></th>\r\n          }\r\n          @if ((!calendarVariables.right.minDate || calendarVariables.right.minDate.isBefore(calendarVariables.right.calendar.firstDay)) && (!this.linkedCalendars)) {\r\n            <th (click)='clickPrev($event, sideEnum.right)' class='prev available'></th>\r\n          }\r\n          @if (!((!calendarVariables.right.minDate || calendarVariables.right.minDate.isBefore(calendarVariables.right.calendar.firstDay)) && (!this.linkedCalendars))) {\r\n            <th></th>\r\n          }\r\n          <th colspan='5' class='month'>\r\n            @if (showDropdowns && calendarVariables.right.dropdowns) {\r\n              <div class='dropdowns'>\r\n                {{ this.locale.monthNames[calendarVariables.right.calendar?.[1][1].month()] }}\r\n                <select class='monthselect' (change)='monthChanged($event, sideEnum.right)'>\r\n                  @for (m of calendarVariables.right.dropdowns.monthArrays; track $index) {\r\n                    <option [selected]='calendarVariables.right.dropdowns.currentMonth == m' [value]='m'\r\n                            [disabled]='(calendarVariables.right.dropdowns.inMinYear && calendarVariables.right.minDate && m < calendarVariables.right.minDate.month())\r\n                          || (calendarVariables.right.dropdowns.inMaxYear && calendarVariables.right.maxDate && m > calendarVariables.right.maxDate.month())'>\r\n                      {{ locale.monthNames[m] }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n              <div class='dropdowns'>\r\n                {{ calendarVariables.right.calendar?.[1][1].format(\" YYYY\") }}\r\n                <select class='yearselect' (change)='yearChanged($event, sideEnum.right)'>\r\n                  @for (y of calendarVariables.right.dropdowns.yearArrays; track $index) {\r\n                    <option [selected]='y === calendarVariables.right.dropdowns.currentYear'>\r\n                      {{ y }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n            }\r\n            @if (!showDropdowns || !calendarVariables.right.dropdowns) {\r\n              {{ this.locale.monthNames[calendarVariables.right.calendar?.[1][1].month()] }}  {{ calendarVariables.right.calendar?.[1][1].format(\" YYYY\") }}\r\n            }\r\n          </th>\r\n          @if (!calendarVariables.right.maxDate || calendarVariables.right.maxDate.isAfter(calendarVariables.right.calendar.lastDay) && (!linkedCalendars || singleDatePicker || true)) {\r\n            <th class='next available' (click)='clickNext($event, sideEnum.right)'></th>\r\n          }\r\n          @if (!(!calendarVariables.right.maxDate || calendarVariables.right.maxDate.isAfter(calendarVariables.right.calendar.lastDay) && (!linkedCalendars || singleDatePicker || true))) {\r\n            <th></th>\r\n          }\r\n        </tr>\r\n        <tr class='week-days'>\r\n          @if (showWeekNumbers || showISOWeekNumbers) {\r\n            <th class='week'>\r\n              <span>{{ this.locale.weekLabel }}</span>\r\n            </th>\r\n          }\r\n          @for (dayofweek of locale.daysOfWeek; track $index) {\r\n            <th>\r\n              <span>{{ dayofweek }}</span>\r\n            </th>\r\n          }\r\n        </tr>\r\n        </thead>\r\n        <tbody>\r\n          @for (row of calendarVariables.right.calRows; track $index) {\r\n            <tr [class]='calendarVariables.right.classes[row].classList'>\r\n              @if (showWeekNumbers) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables.right.calendar?.[row][0].week() }}</span>\r\n                </td>\r\n              }\r\n              @if (showISOWeekNumbers) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables.right.calendar?.[row][0].isoWeek() }}</span>\r\n                </td>\r\n              }\r\n              @for (col of calendarVariables.right.calCols; track $index) {\r\n                <td [class]='calendarVariables.right.classes[row][col]'\r\n                    (click)='clickDate($event, sideEnum.right, row, col)'\r\n                    (mouseenter)='hoverDate($event, sideEnum.right, row, col)'>\r\n                  <span>{{ calendarVariables.right.calendar?.[row][col].date() }}</span>\r\n                </td>\r\n              }\r\n            </tr>\r\n          }\r\n        </tbody>\r\n      </table>\r\n    }\r\n    @if (timePicker) {\r\n      <div class='calendar-time'>\r\n        <div class='select'>\r\n          <select class='select-item hourselect' [disabled]='!startDate'\r\n                  [(ngModel)]='timepickerVariables.right.selectedHour'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n            @for (i of timepickerVariables.right.hours; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables.right.disabledHours.indexOf(i) > -1'>\r\n                {{ i }}\r\n              </option>\r\n            }\r\n          </select>\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        :\r\n        <div class='select'>\r\n          <select class='select-item minuteselect' [disabled]='!startDate'\r\n                  [(ngModel)]='timepickerVariables.right.selectedMinute'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n            @for (i of timepickerVariables.right.minutes; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables.right.disabledMinutes.indexOf(i) > -1'>\r\n                {{ timepickerVariables.right.minutesLabel[$index] }}\r\n              </option>\r\n            }\r\n          </select>\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        :\r\n        <div class='select'>\r\n          @if (timePickerSeconds) {\r\n            <select class='select-item secondselect' [disabled]='!startDate'\r\n                    [(ngModel)]='timepickerVariables.right.selectedSecond'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n              @for (i of timepickerVariables.right.seconds; track $index) {\r\n                <option [value]='i' [disabled]='timepickerVariables.right.disabledSeconds.indexOf(i) > -1'>\r\n                  {{ timepickerVariables.right.secondsLabel[$index] }}\r\n                </option>\r\n              }\r\n            </select>\r\n          }\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        @if (!timePicker24Hour) {\r\n          <div class='select'>\r\n            <select class='select-item ampmselect'\r\n                    [(ngModel)]='timepickerVariables.right.ampmModel'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n              <option value='AM' [disabled]='timepickerVariables.right.amDisabled'>AM</option>\r\n              <option value='PM' [disabled]='timepickerVariables.right.pmDisabled'>PM</option>\r\n            </select>\r\n            <span class='select-highlight'></span>\r\n            <span class='select-bar'></span>\r\n          </div>\r\n        }\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'actions',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './actions.component.html',\r\n  styleUrl: './actions.component.scss'\r\n})\r\nexport class ActionsComponent {\r\n\r\n  @Input() rangesArray: Array<any> = [];\r\n  @Input() autoApply: any;\r\n  @Input() showCalInRanges: any;\r\n  @Input() singleDatePicker: any;\r\n  @Input() chosenLabel: any;\r\n  @Input() applyBtn: any;\r\n  @Input() locale: any;\r\n  @Input() showCancel: any;\r\n  @Input() showClearButton: any;\r\n  @Output() applyEvent: EventEmitter<MouseEvent> = new EventEmitter();\r\n  @Output() cancelEvent: EventEmitter<MouseEvent> = new EventEmitter();\r\n  @Output() clearEvent: EventEmitter<MouseEvent> = new EventEmitter();\r\n\r\n  clickApply($event: any) {\r\n    this.applyEvent.emit($event)\r\n  }\r\n\r\n  clickCancel($event: any) {\r\n    this.cancelEvent.emit($event)\r\n  }\r\n\r\n  clickClear($event: any) {\r\n    this.clearEvent.emit($event)\r\n  }\r\n\r\n}\r\n","@if (!autoApply && (!rangesArray.length || (showCalInRanges && !singleDatePicker))) {\r\n  <div class=\"card-footer\">\r\n    <span style=\"display: inline-block; padding: 7px;\">{{ chosenLabel }}</span>\r\n    <button type='button'\r\n            class='btn btn-primary float-end'\r\n            (click)='clickApply($event)'\r\n            [disabled]='applyBtn.disabled'>\r\n      {{ locale.applyLabel }}\r\n    </button>\r\n    @if (showCancel) {\r\n      <button type='button'\r\n              class='btn btn-secondary me-2 float-end'\r\n              (click)='clickCancel($event)'>\r\n        {{ locale.cancelLabel }}\r\n      </button>\r\n    }\r\n    @if (showClearButton) {\r\n      <button type='button'\r\n              class='btn btn-outline-dark me-2 float-end'\r\n              (click)='clickClear($event)'\r\n              [title]='locale.clearLabel'>\r\n        {{ locale.clearLabel }}\r\n      </button>\r\n    }\r\n  </div>\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport localeData from 'dayjs/plugin/localeData';\r\n\r\ndayjs.extend(localeData);\r\n\r\nexport const LOCALE_CONFIG = new InjectionToken<LocaleConfig>('daterangepicker.config');\r\n\r\n/**\r\n *  LocaleConfig Interface\r\n */\r\nexport interface LocaleConfig {\r\n  direction?: string;\r\n  separator?: string;\r\n  weekLabel?: string;\r\n  applyLabel?: string;\r\n  cancelLabel?: string;\r\n  clearLabel?: string;\r\n  customRangeLabel?: string;\r\n  daysOfWeek?: string[];\r\n  monthNames?: string[];\r\n  firstDay?: number;\r\n  format?: string;\r\n  displayFormat?: string;\r\n  startDate?: string;\r\n  endDate?: string;\r\n}\r\n\r\n/**\r\n *  DefaultLocaleConfig\r\n */\r\nexport const DefaultLocaleConfig: LocaleConfig = {\r\n  direction: 'ltr',\r\n  separator: ' - ',\r\n  weekLabel: 'W',\r\n  applyLabel: 'Apply',\r\n  cancelLabel: 'Cancel',\r\n  clearLabel: 'Clear',\r\n  customRangeLabel: 'Custom range',\r\n  daysOfWeek: dayjs.weekdaysMin(),\r\n  monthNames: dayjs.monthsShort(),\r\n  firstDay: dayjs.localeData().firstDayOfWeek()\r\n};\r\n","import {Inject, Injectable} from '@angular/core';\r\nimport {DefaultLocaleConfig, LOCALE_CONFIG, LocaleConfig} from \"../utils/ngx-daterangepicker-locale.config\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgxDaterangepickerLocaleService {\r\n\r\n  constructor(@Inject(LOCALE_CONFIG) private _config: LocaleConfig) {\r\n  }\r\n\r\n  get config() {\r\n    if (!this._config) {\r\n      return DefaultLocaleConfig;\r\n    }\r\n    return {...DefaultLocaleConfig, ...this._config};\r\n  }\r\n\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport {FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {LocaleConfig} from \"../../utils/ngx-daterangepicker-locale.config\";\r\nimport {NgxDaterangepickerLocaleService} from \"../../services/ngx-daterangepicker-locale.service\";\r\nimport dayjs, {Dayjs} from \"dayjs\";\r\nimport localeData from \"dayjs/plugin/localeData\";\r\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\r\nimport isoWeek from 'dayjs/plugin/isoWeek';\r\nimport week from 'dayjs/plugin/weekOfYear';\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport {NgClass} from \"@angular/common\";\r\nimport {SideEnum} from \"../../enums/side.enum\";\r\nimport {RangesComponent} from \"../ranges/ranges.component\";\r\nimport {CalendarComponent} from \"../calendar/calendar.component\";\r\nimport {ActionsComponent} from \"../actions/actions.component\";\r\n\r\ndayjs.extend(localeData);\r\ndayjs.extend(LocalizedFormat);\r\ndayjs.extend(isoWeek);\r\ndayjs.extend(week);\r\ndayjs.extend(customParseFormat);\r\n\r\n@Component({\r\n  selector: 'ngx-daterangepicker-bootstrap',\r\n  styleUrls: ['./ngx-daterangepicker-bootstrap.component.scss'],\r\n  templateUrl: './ngx-daterangepicker-bootstrap.component.html',\r\n  host: {\r\n    '(click)': 'handleInternalClick($event)'\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: true,\r\n  imports: [\r\n    NgClass,\r\n    FormsModule,\r\n    RangesComponent,\r\n    CalendarComponent,\r\n    ActionsComponent,\r\n  ],\r\n  providers: [{\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => NgxDaterangepickerBootstrapComponent),\r\n    multi: true\r\n  }]\r\n})\r\nexport class NgxDaterangepickerBootstrapComponent implements OnInit, OnChanges {\r\n\r\n  public $event: any;\r\n  public chosenLabel?: string;\r\n  public calendarVariables: { left: any, right: any } = {left: {}, right: {}};\r\n  public timepickerVariables: { left: any, right: any } = {left: {}, right: {}};\r\n  public applyBtn: { disabled: boolean } = {disabled: false};\r\n  public chosenRange?: string | null;\r\n  public rangesArray: Array<any> = [];\r\n  public isShown: Boolean = false;\r\n  public inline = true;\r\n  public showCalInRanges: Boolean = false;\r\n  private tooltiptext: any = [];  // for storing tooltiptext\r\n  private leftCalendar: any = {};\r\n  private rightCalendar: any = {};\r\n  private nowHoveredDate: null = null;\r\n  private pickingDate: Boolean = false;\r\n  private _old: { start: any, end: any } = {start: null, end: null};\r\n  public _minDate?: Dayjs | null;\r\n  public _maxDate?: Dayjs | null;\r\n  private _locale: LocaleConfig = {};\r\n  private _ranges: any = {};\r\n\r\n  @Input() startDate: Dayjs | undefined | null = dayjs().startOf('day');\r\n  @Input() endDate: Dayjs | undefined | null = dayjs().endOf('day');\r\n  @Input() dateLimit: number | null = null;\r\n  @Input() autoApply: Boolean = false;\r\n  @Input() singleDatePicker: Boolean = false;\r\n  @Input() showDropdowns: Boolean = false;\r\n  @Input() showWeekNumbers: Boolean = false;\r\n  @Input() showISOWeekNumbers: Boolean = false;\r\n  @Input() linkedCalendars: Boolean = false;\r\n  @Input() autoUpdateInput: Boolean = true;\r\n  @Input() alwaysShowCalendars: Boolean = false;\r\n  @Input() maxSpan: Boolean = false;\r\n  @Input() lockStartDate: Boolean = false;\r\n  @Input() timePicker: Boolean = false;\r\n  @Input() timePicker24Hour: Boolean = false;\r\n  @Input() timePickerIncrement = 1;\r\n  @Input() timePickerSeconds: Boolean = false;\r\n  @Input() showClearButton: Boolean = false;\r\n  @Input() firstMonthDayClass: string | null | undefined = null;\r\n  @Input() lastMonthDayClass: string | null | undefined = null;\r\n  @Input() emptyWeekRowClass: string | null | undefined = null;\r\n  @Input() emptyWeekColumnClass: string | null | undefined = null;\r\n  @Input() firstDayOfNextMonthClass: string | null | undefined = null;\r\n  @Input() lastDayOfPreviousMonthClass: string | null | undefined = null;\r\n  @Input() showCustomRangeLabel?: boolean;\r\n  @Input() showCancel = false;\r\n  @Input() keepCalendarOpeningWithRange = false;\r\n  @Input() showRangeLabelOnInput = false;\r\n  @Input() customRangeDirection = false;\r\n  @Input() drops?: string;\r\n  @Input() opens?: string;\r\n  @Input() closeOnAutoApply = true;\r\n\r\n  @Input() set minDate(value: Dayjs | string) { // accessors\r\n    if (dayjs.isDayjs(value)) {\r\n      this._minDate = value;\r\n    } else {\r\n      this._minDate = dayjs(value);\r\n    }\r\n  }\r\n\r\n  @Input() set maxDate(value: Dayjs | string) {\r\n    if (dayjs.isDayjs(value)) {\r\n      this._maxDate = value;\r\n    } else {\r\n      this._maxDate = dayjs(value);\r\n    }\r\n  }\r\n\r\n  @Input() set locale(value) {\r\n    this._locale = {...this._localeService.config, ...value};\r\n  }\r\n\r\n  @Input() set ranges(value) { // custom ranges\r\n    this._ranges = value;\r\n    this.renderRanges();\r\n  }\r\n\r\n  @Output() chosenDate: EventEmitter<Object>;\r\n  @Output() rangeClicked: EventEmitter<Object>;\r\n  @Output() datesUpdated: EventEmitter<Object>;\r\n  @Output() startDateChanged: EventEmitter<Object>;\r\n  @Output() endDateChanged: EventEmitter<Object>;\r\n  @Output() cancelClicked: EventEmitter<Object>;\r\n  @Output() clearClicked: EventEmitter<void>;\r\n  @ViewChild('pickerContainer', {static: true}) pickerContainer?: ElementRef;\r\n\r\n  getMinDate(): Dayjs | null | undefined {\r\n    return this._minDate;\r\n  }\r\n\r\n  getMaxDate(): Dayjs | null | undefined {\r\n    return this._maxDate;\r\n  }\r\n\r\n  get locale(): any {\r\n    return this._locale;\r\n  }\r\n\r\n  get ranges(): any {\r\n    return this._ranges;\r\n  }\r\n\r\n  constructor(private el: ElementRef,\r\n              private _ref: ChangeDetectorRef,\r\n              private _localeService: NgxDaterangepickerLocaleService) {\r\n    this.chosenDate = new EventEmitter();\r\n    this.rangeClicked = new EventEmitter();\r\n    this.datesUpdated = new EventEmitter();\r\n    this.startDateChanged = new EventEmitter();\r\n    this.endDateChanged = new EventEmitter();\r\n    this.cancelClicked = new EventEmitter();\r\n    this.clearClicked = new EventEmitter();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if ((changes['startDate'] || changes['endDate']) && this.inline) {\r\n      this.updateView();\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._buildLocale();\r\n    const daysOfWeek = [...this.locale.daysOfWeek];\r\n    this.locale.firstDay = this.locale.firstDay % 7;\r\n    if (this.locale.firstDay !== 0) {\r\n      let iterator = this.locale.firstDay;\r\n      while (iterator > 0) {\r\n        daysOfWeek.push(daysOfWeek.shift());\r\n        iterator--;\r\n      }\r\n    }\r\n    this.locale.daysOfWeek = daysOfWeek;\r\n    if (this.inline) {\r\n      this.applyBtn.disabled = true;\r\n      this._old.start = this.startDate?.clone();\r\n      this._old.end = this.endDate?.clone();\r\n    }\r\n    if (this.startDate && this.timePicker) {\r\n      this.setStartDate(this.startDate);\r\n      this.renderTimePicker(SideEnum.left);\r\n    }\r\n    if (this.endDate && this.timePicker) {\r\n      this.setEndDate(this.endDate);\r\n      this.renderTimePicker(SideEnum.right);\r\n    }\r\n    this.updateMonthsInView();\r\n    this.renderCalendar(SideEnum.left);\r\n    this.renderCalendar(SideEnum.right);\r\n    this.renderRanges();\r\n  }\r\n\r\n  renderRanges() {\r\n    this.rangesArray = [];\r\n    let start: any, end: any;\r\n    if (typeof this.ranges === 'object') {\r\n      for (const range in this.ranges) {\r\n        if (this.ranges[range]) {\r\n          if (typeof this.ranges[range][0] === 'string') {\r\n            start = dayjs(this.ranges[range][0], this.locale.format);\r\n          } else {\r\n            start = dayjs(this.ranges[range][0]);\r\n          }\r\n          if (typeof this.ranges[range][1] === 'string') {\r\n            end = dayjs(this.ranges[range][1], this.locale.format);\r\n          } else {\r\n            end = dayjs(this.ranges[range][1]);\r\n          }\r\n          // If the start or end date exceed those allowed by the minDate or maxSpan\r\n          // options, shorten the range to the allowable period.\r\n          if (this.getMinDate() && start.isBefore(this.getMinDate())) {\r\n            start = this.getMinDate()?.clone();\r\n          }\r\n          let maxDate = this.getMaxDate();\r\n          if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate)) {\r\n            maxDate = start.clone().add(this.maxSpan);\r\n          }\r\n          if (maxDate && end.isAfter(maxDate)) {\r\n            end = maxDate.clone();\r\n          }\r\n          // If the end of the range is before the minimum or the start of the range is\r\n          // after the maximum, don't display this range option at all.\r\n          if ((this.getMinDate() && end.isBefore(this.getMinDate(), this.timePicker ? 'minute' : 'day'))\r\n            || (maxDate && start.isAfter(maxDate, this.timePicker ? 'minute' : 'day'))) {\r\n            continue;\r\n          }\r\n          // Support unicode chars in the range names.\r\n          const elem = document.createElement('textarea');\r\n          elem.innerHTML = range;\r\n          const rangeHtml = elem.value;\r\n          this.ranges[rangeHtml] = [start, end];\r\n        }\r\n      }\r\n      for (const range in this.ranges) {\r\n        if (this.ranges[range]) {\r\n          this.rangesArray.push(range);\r\n        }\r\n      }\r\n      if (this.showCustomRangeLabel) {\r\n        this.rangesArray.push(this.locale.customRangeLabel);\r\n      }\r\n      this.showCalInRanges = (!this.rangesArray.length) || this.alwaysShowCalendars;\r\n      if (!this.timePicker) {\r\n        this.startDate = this.startDate?.startOf('day');\r\n        this.endDate = this.endDate?.endOf('day');\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n  renderTimePicker(side: SideEnum) {\r\n    let selected: any, minDate: any;\r\n    const maxDate = this.getMaxDate();\r\n    if (side === SideEnum.left) {\r\n      selected = this.startDate?.clone();\r\n      minDate = this.getMinDate();\r\n    } else if (side === SideEnum.right && this.endDate) {\r\n      selected = this.endDate.clone();\r\n      minDate = this.startDate;\r\n    } else if (side === SideEnum.right && !this.endDate) {\r\n      // don't have an end date, use the start date then put the selected time for the right side as the time\r\n      selected = this._getDateWithTime(this.startDate, SideEnum.right);\r\n      if (selected.isBefore(this.startDate)) {\r\n        selected = this.startDate?.clone();  // set it back to the start date the time was backwards\r\n      }\r\n      minDate = this.startDate;\r\n    }\r\n    const start = this.timePicker24Hour ? 0 : 1;\r\n    const end = this.timePicker24Hour ? 23 : 12;\r\n    this.timepickerVariables[side] = {\r\n      hours: [],\r\n      minutes: [],\r\n      minutesLabel: [],\r\n      seconds: [],\r\n      secondsLabel: [],\r\n      disabledHours: [],\r\n      disabledMinutes: [],\r\n      disabledSeconds: [],\r\n      selectedHour: 0,\r\n      selectedMinute: 0,\r\n      selectedSecond: 0\r\n    };\r\n    // generate hours\r\n    for (let i = start; i <= end; i++) {\r\n      let i_in_24 = i;\r\n      if (!this.timePicker24Hour) {\r\n        i_in_24 = selected.hour() >= 12 ? (i === 12 ? 12 : i + 12) : (i === 12 ? 0 : i);\r\n      }\r\n      const time = selected.clone().hour(i_in_24);\r\n      let disabled = false;\r\n      if (minDate && time.minute(59).isBefore(minDate)) {\r\n        disabled = true;\r\n      }\r\n      if (maxDate && time.minute(0).isAfter(maxDate)) {\r\n        disabled = true;\r\n      }\r\n      this.timepickerVariables[side].hours.push(i);\r\n      if (i_in_24 === selected.hour() && !disabled) {\r\n        this.timepickerVariables[side].selectedHour = i;\r\n      } else if (disabled) {\r\n        this.timepickerVariables[side].disabledHours.push(i);\r\n      }\r\n    }\r\n    // generate minutes\r\n    for (let i = 0; i < 60; i += this.timePickerIncrement) {\r\n      const padded = i < 10 ? '0' + i : i;\r\n      const time = selected.clone().minute(i);\r\n\r\n      let disabled = false;\r\n      if (minDate && time.second(59).isBefore(minDate)) {\r\n        disabled = true;\r\n      }\r\n      if (maxDate && time.second(0).isAfter(maxDate)) {\r\n        disabled = true;\r\n      }\r\n      this.timepickerVariables[side].minutes.push(i);\r\n      this.timepickerVariables[side].minutesLabel.push(padded);\r\n      if (selected.minute() === i && !disabled) {\r\n        this.timepickerVariables[side].selectedMinute = i;\r\n      } else if (disabled) {\r\n        this.timepickerVariables[side].disabledMinutes.push(i);\r\n      }\r\n    }\r\n    // generate seconds\r\n    if (this.timePickerSeconds) {\r\n      for (let i = 0; i < 60; i++) {\r\n        const padded = i < 10 ? '0' + i : i;\r\n        const time = selected.clone().second(i);\r\n        let disabled = false;\r\n        if (minDate && time.isBefore(minDate)) {\r\n          disabled = true;\r\n        }\r\n        if (maxDate && time.isAfter(maxDate)) {\r\n          disabled = true;\r\n        }\r\n        this.timepickerVariables[side].seconds.push(i);\r\n        this.timepickerVariables[side].secondsLabel.push(padded);\r\n        if (selected.second() === i && !disabled) {\r\n          this.timepickerVariables[side].selectedSecond = i;\r\n        } else if (disabled) {\r\n          this.timepickerVariables[side].disabledSeconds.push(i);\r\n        }\r\n      }\r\n    }\r\n    // generate AM/PM\r\n    if (!this.timePicker24Hour) {\r\n      if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) {\r\n        this.timepickerVariables[side].amDisabled = true;\r\n      }\r\n      if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) {\r\n        this.timepickerVariables[side].pmDisabled = true;\r\n      }\r\n      if (selected.hour() >= 12) {\r\n        this.timepickerVariables[side].ampmModel = 'PM';\r\n      } else {\r\n        this.timepickerVariables[side].ampmModel = 'AM';\r\n      }\r\n    }\r\n    this.timepickerVariables[side].selected = selected;\r\n  }\r\n\r\n  renderCalendar(side: SideEnum) { // side enums\r\n    const mainCalendar: any = (side === SideEnum.left) ? this.leftCalendar : this.rightCalendar;\r\n    const month = mainCalendar.month.month();\r\n    const year = mainCalendar.month.year();\r\n    const hour = mainCalendar.month.hour();\r\n    const minute = mainCalendar.month.minute();\r\n    const second = mainCalendar.month.second();\r\n    const daysInMonth = dayjs(new Date(year, month)).daysInMonth();\r\n    const firstDay = dayjs(new Date(year, month, 1));\r\n    const lastDay = dayjs(new Date(year, month, daysInMonth));\r\n    const lastMonth = dayjs(firstDay).subtract(1, 'month').month();\r\n    const lastYear = dayjs(firstDay).subtract(1, 'month').year();\r\n    const daysInLastMonth = dayjs(new Date(lastYear, lastMonth)).daysInMonth();\r\n    const dayOfWeek = firstDay.day();\r\n    // initialize a 6 rows x 7 columns array for the calendar\r\n    const calendar: any = [];\r\n    calendar.firstDay = firstDay;\r\n    calendar.lastDay = lastDay;\r\n    for (let i = 0; i < 6; i++) calendar[i] = [];\r\n    // populate the calendar with date objects\r\n    let startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\r\n    if (startDay > daysInLastMonth) startDay -= 7;\r\n    if (dayOfWeek === this.locale.firstDay) startDay = daysInLastMonth - 6;\r\n    let curDate = dayjs(new Date(lastYear, lastMonth, startDay, 12, minute, second));\r\n    for (let i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = dayjs(curDate).add(24, 'hour')) {\r\n      if (i > 0 && col % 7 === 0) {\r\n        col = 0;\r\n        row++;\r\n      }\r\n      calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\r\n      curDate = curDate.hour(12);\r\n      if (this.getMinDate() && calendar[row][col].format('YYYY-MM-DD') === this.getMinDate()?.format('YYYY-MM-DD') &&\r\n        calendar[row][col].isBefore(this.getMinDate()) && side === 'left') {\r\n        calendar[row][col] = this.getMinDate()?.clone();\r\n      }\r\n      if (this.getMaxDate() && calendar[row][col].format('YYYY-MM-DD') === this.getMaxDate()?.format('YYYY-MM-DD') &&\r\n        calendar[row][col].isAfter(this.getMaxDate()) && side === 'right') {\r\n        calendar[row][col] = this.getMaxDate()?.clone();\r\n      }\r\n    }\r\n    // make the calendar object available to hoverDate/clickDate\r\n    if (side === SideEnum.left) {\r\n      this.leftCalendar.calendar = calendar;\r\n    } else {\r\n      this.rightCalendar.calendar = calendar;\r\n    }\r\n    //\r\n    // Display the calendar\r\n    //\r\n    let minDate = side === 'left' ? this.getMinDate() : this.startDate;\r\n    let maxDate = this.getMaxDate();\r\n    // adjust maxDate to reflect the dateLimit setting in order to\r\n    // grey out end dates beyond the dateLimit\r\n    if (this.endDate === null && this.dateLimit) {\r\n      const maxLimit = this.startDate?.clone().add(this.dateLimit, 'day').endOf('day');\r\n      if (!maxDate || maxLimit?.isBefore(maxDate)) maxDate = maxLimit;\r\n      if (this.customRangeDirection) {\r\n        minDate = this.getMinDate();\r\n        const minLimit = this.startDate?.clone().subtract(this.dateLimit, 'day').endOf('day');\r\n        if (!minDate || minLimit?.isAfter(minDate)) {\r\n          minDate = minLimit;\r\n        }\r\n      }\r\n    }\r\n    this.calendarVariables[side] = {\r\n      month: month,\r\n      year: year,\r\n      hour: hour,\r\n      minute: minute,\r\n      second: second,\r\n      daysInMonth: daysInMonth,\r\n      firstDay: firstDay,\r\n      lastDay: lastDay,\r\n      lastMonth: lastMonth,\r\n      lastYear: lastYear,\r\n      daysInLastMonth: daysInLastMonth,\r\n      dayOfWeek: dayOfWeek,\r\n      // other vars\r\n      calRows: Array.from(Array(6).keys()),\r\n      calCols: Array.from(Array(7).keys()),\r\n      classes: {},\r\n      minDate: minDate,\r\n      maxDate: maxDate,\r\n      calendar: calendar\r\n    };\r\n    if (this.showDropdowns) {\r\n      const currentMonth = calendar[1][1].month();\r\n      const currentYear = calendar[1][1].year();\r\n      const realCurrentYear = dayjs().year();\r\n      const maxYear = (maxDate && maxDate.year()) || (realCurrentYear + 5);\r\n      const minYear = (minDate && minDate.year()) || (realCurrentYear - 50);\r\n      const inMinYear = currentYear === minYear;\r\n      const inMaxYear = currentYear === maxYear;\r\n      const years = [];\r\n      for (let y = minYear; y <= maxYear; y++) years.push(y);\r\n      this.calendarVariables[side].dropdowns = {\r\n        currentMonth: currentMonth,\r\n        currentYear: currentYear,\r\n        maxYear: maxYear,\r\n        minYear: minYear,\r\n        inMinYear: inMinYear,\r\n        inMaxYear: inMaxYear,\r\n        monthArrays: Array.from(Array(12).keys()),\r\n        yearArrays: years\r\n      };\r\n    }\r\n    this._buildCells(calendar, side);\r\n  }\r\n\r\n  setStartDate(startDate: any) {\r\n    if (typeof startDate === 'string') this.startDate = dayjs(startDate, this.locale.format);\r\n    if (typeof startDate === 'object') {\r\n      this.pickingDate = true;\r\n      this.startDate = dayjs(startDate);\r\n    }\r\n    if (!this.timePicker) {\r\n      this.pickingDate = true;\r\n      this.startDate = this.startDate?.startOf('day');\r\n    }\r\n    if (this.timePicker && this.timePickerIncrement) {\r\n      this.startDate = this.startDate?.minute(\r\n        Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement\r\n      );\r\n    }\r\n    if (this.getMinDate() && this.startDate?.isBefore(this.getMinDate())) {\r\n      this.startDate = this.getMinDate()?.clone();\r\n      if (this.timePicker && this.timePickerIncrement) {\r\n        this.startDate = this.startDate?.minute(\r\n          Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement\r\n        );\r\n      }\r\n    }\r\n    if (this.getMaxDate() && this.startDate?.isAfter(this.getMaxDate())) {\r\n      this.startDate = this.getMaxDate()?.clone();\r\n      if (this.timePicker && this.timePickerIncrement) {\r\n        this.startDate = this.startDate?.minute(\r\n          Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement\r\n        );\r\n      }\r\n    }\r\n    if (!this.isShown) {\r\n      this.updateElement();\r\n    }\r\n    this.startDateChanged.emit({startDate: this.startDate});\r\n    this.updateMonthsInView();\r\n  }\r\n\r\n  setEndDate(endDate: any) {\r\n    if (typeof endDate === 'string') {\r\n      this.endDate = dayjs(endDate, this.locale.format);\r\n    }\r\n    if (typeof endDate === 'object') {\r\n      this.pickingDate = false;\r\n      this.endDate = dayjs(endDate);\r\n    }\r\n    if (!this.timePicker) {\r\n      this.pickingDate = false;\r\n      this.endDate = this.endDate?.add(1, 'd').startOf('day').subtract(1, 'second');\r\n    }\r\n    if (this.timePicker && this.timePickerIncrement) {\r\n      this.endDate?.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n    }\r\n    if (this.endDate?.isBefore(this.startDate)) {\r\n      this.endDate = this.startDate?.clone();\r\n    }\r\n    if (this.getMaxDate() && this.endDate?.isAfter(this.getMaxDate())) {\r\n      this.endDate = this.getMaxDate()?.clone();\r\n    }\r\n    if (this.dateLimit && this.startDate?.clone().add(this.dateLimit, 'day').isBefore(this.endDate)) {\r\n      this.endDate = this.startDate.clone().add(this.dateLimit, 'day');\r\n    }\r\n    if (!this.isShown) {\r\n      // this.updateElement();\r\n    }\r\n    this.endDateChanged.emit({endDate: this.endDate});\r\n    this.updateMonthsInView();\r\n  }\r\n\r\n  @Input()\r\n  isInvalidDate(date: any): any {\r\n    return false;\r\n  }\r\n\r\n  @Input()\r\n  isCustomDate(date: any): any {\r\n    return false;\r\n  }\r\n\r\n  @Input()\r\n  isTooltipDate(date: any): any {\r\n    return null;\r\n  }\r\n\r\n  updateView() {\r\n    if (this.timePicker) {\r\n      this.renderTimePicker(SideEnum.left);\r\n      this.renderTimePicker(SideEnum.right);\r\n    }\r\n    this.updateMonthsInView();\r\n    this.updateCalendars();\r\n  }\r\n\r\n  updateMonthsInView() {\r\n    if (this.endDate) {\r\n      // if both dates are visible already, do nothing\r\n      if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\r\n        ((this.startDate && this.leftCalendar && this.startDate.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM')) ||\r\n          (this.startDate && this.rightCalendar && this.startDate.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM')))\r\n        &&\r\n        (this.endDate.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM') ||\r\n          this.endDate.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM'))\r\n      ) {\r\n        return;\r\n      }\r\n      if (this.startDate) {\r\n        this.leftCalendar.month = this.startDate.clone().date(2);\r\n        if (!this.linkedCalendars && (this.endDate.month() !== this.startDate.month() ||\r\n          this.endDate.year() !== this.startDate.year())) {\r\n          this.rightCalendar.month = this.endDate.clone().date(2);\r\n        } else {\r\n          this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n        }\r\n      }\r\n    } else {\r\n      if (this.leftCalendar.month.format('YYYY-MM') !== this.startDate?.format('YYYY-MM') &&\r\n        this.rightCalendar.month.format('YYYY-MM') !== this.startDate?.format('YYYY-MM')) {\r\n        this.leftCalendar.month = this.startDate?.clone().date(2);\r\n        this.rightCalendar.month = this.startDate?.clone().date(2).add(1, 'month');\r\n      }\r\n    }\r\n    if (this.getMaxDate() && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > <Dayjs>this.getMaxDate()) {\r\n      this.rightCalendar.month = this.getMaxDate()?.clone().date(2);\r\n      this.leftCalendar.month = this.getMaxDate()?.clone().date(2).subtract(1, 'month');\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  This is responsible for updating the calendars\r\n   */\r\n  updateCalendars() {\r\n    this.renderCalendar(SideEnum.left);\r\n    this.renderCalendar(SideEnum.right);\r\n    if (this.endDate === null) {\r\n      return;\r\n    }\r\n    this.calculateChosenLabel();\r\n  }\r\n\r\n  updateElement() {\r\n    const format = this.locale.displayFormat ? this.locale.displayFormat : this.locale.format;\r\n    if (!this.singleDatePicker && this.autoUpdateInput) {\r\n      if (this.startDate && this.endDate) {\r\n        // if we use ranges and should show range label on input\r\n        if (this.rangesArray.length && this.showRangeLabelOnInput && this.chosenRange &&\r\n          this.locale.customRangeLabel !== this.chosenRange) {\r\n          this.chosenLabel = this.chosenRange;\r\n        } else {\r\n          this.chosenLabel = this.startDate.format(format) +\r\n            this.locale.separator + this.endDate.format(format);\r\n        }\r\n      }\r\n    } else if (this.autoUpdateInput) {\r\n      this.chosenLabel = this.startDate?.format(format);\r\n    }\r\n  }\r\n\r\n  remove() {\r\n    this.isShown = false;\r\n  }\r\n\r\n  /**\r\n   * this should calculate the label\r\n   */\r\n  calculateChosenLabel() {\r\n    if (!this.locale || !this.locale.separator) {\r\n      this._buildLocale();\r\n    }\r\n    let customRange = true;\r\n    let i = 0;\r\n    if (this.rangesArray.length > 0) {\r\n      for (const range in this.ranges) {\r\n        if (this.ranges[range]) {\r\n          if (this.timePicker) {\r\n            const format = this.timePickerSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';\r\n            // ignore times when comparing dates if time picker seconds is not enabled\r\n            if (this.startDate?.format(format) === this.ranges[range][0].format(format)\r\n              && this.endDate?.format(format) === this.ranges[range][1].format(format)) {\r\n              customRange = false;\r\n              this.chosenRange = this.rangesArray[i];\r\n              break;\r\n            }\r\n          } else {\r\n            // ignore times when comparing dates if time picker is not enabled\r\n            if (this.startDate?.format('YYYY-MM-DD') === this.ranges[range][0].format('YYYY-MM-DD')\r\n              && this.endDate?.format('YYYY-MM-DD') === this.ranges[range][1].format('YYYY-MM-DD')) {\r\n              customRange = false;\r\n              this.chosenRange = this.rangesArray[i];\r\n              break;\r\n            }\r\n          }\r\n          i++;\r\n        }\r\n      }\r\n      if (customRange) {\r\n        if (this.showCustomRangeLabel) {\r\n          this.chosenRange = this.locale.customRangeLabel;\r\n        } else {\r\n          this.chosenRange = null;\r\n        }\r\n        // if custom label: show calendar\r\n        this.showCalInRanges = true;\r\n      }\r\n    }\r\n    this.updateElement();\r\n  }\r\n\r\n  clickApply(e?: any) {\r\n    if (this.inline) this.applyBtn.disabled = true;\r\n    if (!this.singleDatePicker && this.startDate && !this.endDate) {\r\n      this.endDate = this._getDateWithTime(this.startDate, SideEnum.right);\r\n      this.calculateChosenLabel();\r\n    }\r\n    if (this.startDate && this.endDate) {\r\n      // get if there are invalid date between range\r\n      let d = this.startDate.clone();\r\n      while (d.isBefore(this.endDate)) {\r\n        if (this.isInvalidDate(d)) {\r\n          this.endDate = d.subtract(1, 'days');\r\n          this.calculateChosenLabel();\r\n          break;\r\n        }\r\n        d = d.add(1, 'days');\r\n      }\r\n    }\r\n    if (this.chosenLabel) {\r\n      this.chosenDate.emit({chosenLabel: this.chosenLabel, startDate: this.startDate, endDate: this.endDate});\r\n    }\r\n    this.datesUpdated.emit({startDate: this.startDate, endDate: this.endDate, label: this.chosenRange});\r\n    if (e || (this.closeOnAutoApply && !e)) {\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  clickCancel(e: any) {\r\n    this.startDate = this._old.start;\r\n    this.endDate = this._old.end;\r\n    if (this.inline) {\r\n      this.updateView();\r\n    }\r\n    this.cancelClicked.emit();\r\n    this.hide();\r\n    this.clearIncompleteDateSelection();\r\n  }\r\n\r\n  /**\r\n   * called when month is changed\r\n   * @param object get month value in $event.target.value / side left or right\r\n   */\r\n  monthChanged(object: { $event: any, side: SideEnum }) {\r\n    const {$event, side} = object;\r\n    const year = this.calendarVariables[side].dropdowns.currentYear;\r\n    const month = parseInt($event.target.value, 10);\r\n    this.monthOrYearChanged(month, year, side);\r\n  }\r\n\r\n  /**\r\n   * called when year is changed\r\n   * @param object get year value in $event.target.value / side left or right\r\n   */\r\n  yearChanged(object: { $event: any, side: SideEnum }) {\r\n    const {$event, side} = object;\r\n    const month = this.calendarVariables[side].dropdowns.currentMonth;\r\n    const year = parseInt($event.target.value, 10);\r\n    this.monthOrYearChanged(month, year, side);\r\n  }\r\n\r\n  /**\r\n   * called when time is changed\r\n   * @param object time $event / side left or right\r\n   */\r\n  timeChanged(object: { $event: any, side: SideEnum }) {\r\n    const {$event, side} = object;\r\n    let hour = parseInt(this.timepickerVariables[side].selectedHour, 10);\r\n    const minute = parseInt(this.timepickerVariables[side].selectedMinute, 10);\r\n    const second = this.timePickerSeconds ? parseInt(this.timepickerVariables[side].selectedSecond, 10) : 0;\r\n    if (!this.timePicker24Hour) {\r\n      const ampm = this.timepickerVariables[side].ampmModel;\r\n      if (ampm === 'PM' && hour < 12) {\r\n        hour += 12;\r\n      }\r\n      if (ampm === 'AM' && hour === 12) {\r\n        hour = 0;\r\n      }\r\n    }\r\n    if (side === SideEnum.left) {\r\n      let start = this.startDate?.clone();\r\n      start = start?.hour(hour);\r\n      start = start?.minute(minute);\r\n      start = start?.second(second);\r\n      this.setStartDate(start);\r\n      if (this.singleDatePicker) {\r\n        this.endDate = this.startDate?.clone();\r\n      } else if (this.endDate && this.endDate.format('YYYY-MM-DD') === start?.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\r\n        this.setEndDate(start.clone());\r\n      } else if (!this.endDate && this.timePicker) {\r\n        const startClone = this._getDateWithTime(start, SideEnum.right);\r\n        if (startClone.isBefore(start)) {\r\n          this.timepickerVariables[SideEnum.right].selectedHour = hour;\r\n          this.timepickerVariables[SideEnum.right].selectedMinute = minute;\r\n          this.timepickerVariables[SideEnum.right].selectedSecond = second;\r\n        }\r\n      }\r\n    } else if (this.endDate) {\r\n      let end = this.endDate.clone();\r\n      end = end.hour(hour);\r\n      end = end.minute(minute);\r\n      end = end.second(second);\r\n      this.setEndDate(end);\r\n    }\r\n    // update the calendars so all clickable dates reflect the new time component\r\n    this.updateCalendars();\r\n    // re-render the time pickers because changing one selection can affect what's enabled in another\r\n    this.renderTimePicker(SideEnum.left);\r\n    this.renderTimePicker(SideEnum.right);\r\n    if (this.autoApply) {\r\n      this.clickApply();\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  call when month or year changed\r\n   * @param month month number 0 -11\r\n   * @param year year eg: 1995\r\n   * @param side left or right\r\n   */\r\n  monthOrYearChanged(month: number, year: number, side: SideEnum) {\r\n    const isLeft = side === SideEnum.left;\r\n    if (!isLeft) {\r\n      if (year < this.startDate!.year() || (year === this.startDate!.year() && month < this.startDate!.month())) {\r\n        month = this.startDate!.month();\r\n        year = this.startDate!.year();\r\n      }\r\n    }\r\n    if (this.getMinDate()) {\r\n      if (year < this.getMinDate()!.year() || (year === this.getMinDate()!.year() && month < this.getMinDate()!.month())) {\r\n        month = this.getMinDate()!.month();\r\n        year = this.getMinDate()!.year();\r\n      }\r\n    }\r\n    if (this.getMaxDate()) {\r\n      if (year > this.getMaxDate()!.year() || (year === this.getMaxDate()!.year() && month > this.getMaxDate()!.month())) {\r\n        month = this.getMaxDate()!.month();\r\n        year = this.getMaxDate()!.year();\r\n      }\r\n    }\r\n    this.calendarVariables[side].dropdowns.currentYear = year;\r\n    this.calendarVariables[side].dropdowns.currentMonth = month;\r\n    if (isLeft) {\r\n      this.leftCalendar.month = this.leftCalendar.month.month(month).year(year);\r\n      if (this.linkedCalendars) {\r\n        this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\r\n      }\r\n    } else {\r\n      this.rightCalendar.month = this.rightCalendar.month.month(month).year(year);\r\n      if (this.linkedCalendars) {\r\n        this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\r\n      }\r\n    }\r\n    this.updateCalendars();\r\n  }\r\n\r\n  /**\r\n   * Click on previous month\r\n   * @param object previous $event / side left or right calendar\r\n   */\r\n  clickPrev(object: { $event: MouseEvent, side: SideEnum }) {\r\n    const {$event, side} = object;\r\n    if (side === SideEnum.left) {\r\n      this.leftCalendar.month = this.leftCalendar.month.subtract(1, 'month');\r\n      if (this.linkedCalendars) {\r\n        this.rightCalendar.month = this.rightCalendar.month.subtract(1, 'month');\r\n      }\r\n    } else {\r\n      this.rightCalendar.month = this.rightCalendar.month.subtract(1, 'month');\r\n    }\r\n    this.updateCalendars();\r\n  }\r\n\r\n  /**\r\n   * Click on next month\r\n   * @param object next $event / side left or right calendar\r\n   */\r\n  clickNext(object: { $event: MouseEvent, side: SideEnum }) {\r\n    const {$event, side} = object;\r\n    if (side === SideEnum.left) {\r\n      this.leftCalendar.month = this.leftCalendar.month.add(1, 'month');\r\n    } else {\r\n      this.rightCalendar.month = this.rightCalendar.month.add(1, 'month');\r\n      if (this.linkedCalendars) {\r\n        this.leftCalendar.month = this.leftCalendar.month.add(1, 'month');\r\n      }\r\n    }\r\n    this.updateCalendars();\r\n  }\r\n\r\n  /**\r\n   * When hovering a date\r\n   * @param object get value by $event.target.value / side left or right / row or col position of the current date clicked\r\n   */\r\n  hoverDate(object: { $event: any, side: SideEnum, row: number, col: number }) {\r\n    const {$event, side, row, col} = object;\r\n    const leftCalDate = this.calendarVariables.left.calendar[row][col];\r\n    const rightCalDate = this.calendarVariables.right.calendar[row][col];\r\n    if (this.pickingDate) {\r\n      this.nowHoveredDate = side === SideEnum.left ? leftCalDate : rightCalDate;\r\n      this.renderCalendar(SideEnum.left);\r\n      this.renderCalendar(SideEnum.right);\r\n    }\r\n    const tooltip: any = side === SideEnum.left ? this.tooltiptext[leftCalDate] : this.tooltiptext[rightCalDate];\r\n    if (tooltip.length > 0) {\r\n      $event.target.setAttribute('title', tooltip);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * When selecting a date\r\n   * @param object get value by $event.target.value / side left or right / row or col position of the current date clicked\r\n   */\r\n  clickDate(object: { $event: any, side: SideEnum, row: number, col: number }) {\r\n    const {$event, side, row, col} = object;\r\n    if ($event.target.tagName === 'TD') {\r\n      if (!$event.target.classList.contains('available')) return;\r\n    } else if ($event.target.tagName === 'SPAN') {\r\n      if (!$event.target.parentElement.classList.contains('available')) return;\r\n    }\r\n    if (this.rangesArray.length) {\r\n      this.chosenRange = this.locale.customRangeLabel;\r\n    }\r\n    let date = side === SideEnum.left ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n    if ((this.endDate || (date.isBefore(this.startDate, 'day') && !this.customRangeDirection)) && !this.lockStartDate) { // picking start\r\n      this.applyBtn.disabled = true;\r\n      if (this.timePicker) {\r\n        date = this._getDateWithTime(date, SideEnum.left);\r\n      }\r\n      this.endDate = null;\r\n      this.setStartDate(date.clone());\r\n    } else if (!this.endDate && date.isBefore(this.startDate) && !this.customRangeDirection) {\r\n      // special case: clicking the same date for start/end,\r\n      // but the time of the end date is before the start date\r\n      this.setEndDate(this.startDate?.clone());\r\n    } else { // picking end\r\n      this.applyBtn.disabled = false;\r\n      if (this.timePicker) {\r\n        date = this._getDateWithTime(date, SideEnum.right);\r\n      }\r\n      if (date.isBefore(this.startDate, 'day') === true && this.customRangeDirection) {\r\n        this.setEndDate(this.startDate);\r\n        this.setStartDate(date.clone());\r\n      } else {\r\n        this.setEndDate(date.clone());\r\n      }\r\n      if (this.autoApply) {\r\n        this.calculateChosenLabel();\r\n      }\r\n    }\r\n    if (this.singleDatePicker) {\r\n      this.applyBtn.disabled = false;\r\n      this.setEndDate(this.startDate);\r\n      this.updateElement();\r\n      if (this.autoApply) {\r\n        this.clickApply();\r\n      }\r\n    }\r\n    this.updateView();\r\n    if (this.autoApply && this.startDate && this.endDate) {\r\n      this.clickApply();\r\n    }\r\n    // This is to cancel the blur event handler if the mouse was in one of the inputs\r\n    $event.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   *  Click on the custom range\r\n   * @param object $event / label\r\n   */\r\n  clickRange(object: { $event: MouseEvent, label: string }) {\r\n    const {$event, label} = object;\r\n    this.chosenRange = label;\r\n    if (label === this.locale.customRangeLabel) {\r\n      this.isShown = true; // show calendars\r\n      this.showCalInRanges = true;\r\n    } else {\r\n      const dates = this.ranges[label];\r\n      this.startDate = dates[0].clone();\r\n      this.endDate = dates[1].clone();\r\n      if (this.showRangeLabelOnInput && label !== this.locale.customRangeLabel) {\r\n        this.chosenLabel = label;\r\n      } else {\r\n        this.calculateChosenLabel();\r\n      }\r\n      this.showCalInRanges = (!this.rangesArray.length) || this.alwaysShowCalendars;\r\n      if (!this.timePicker) {\r\n        this.startDate = this.startDate?.startOf('day');\r\n        this.endDate = this.endDate?.endOf('day');\r\n      }\r\n      if (!this.alwaysShowCalendars) {\r\n        this.isShown = false; // hide calendars\r\n      }\r\n      this.rangeClicked.emit({label: label, dates: dates});\r\n      if (!this.keepCalendarOpeningWithRange || this.autoApply) {\r\n        this.clickApply();\r\n      } else {\r\n        if (!this.alwaysShowCalendars) {\r\n          return this.clickApply();\r\n        }\r\n        if (this.getMaxDate() && this.getMaxDate()?.isSame(dates[0], 'month')) {\r\n          this.rightCalendar.month = this.rightCalendar.month.month(dates[0].month());\r\n          this.rightCalendar.month = this.rightCalendar.month.year(dates[0].year());\r\n          this.leftCalendar.month = this.leftCalendar.month.month(dates[0].month() - 1);\r\n          this.leftCalendar.month = this.leftCalendar.month.year(dates[1].year());\r\n        } else {\r\n          this.leftCalendar.month = this.leftCalendar.month.month(dates[0].month());\r\n          this.leftCalendar.month = this.leftCalendar.month.year(dates[0].year());\r\n          // get the next year\r\n          const nextMonth = dates[0].clone().add(1, 'month');\r\n          this.rightCalendar.month = this.rightCalendar.month.month(nextMonth.month());\r\n          this.rightCalendar.month = this.rightCalendar.month.year(nextMonth.year());\r\n        }\r\n        this.updateCalendars();\r\n        if (this.timePicker) {\r\n          this.renderTimePicker(SideEnum.left);\r\n          this.renderTimePicker(SideEnum.right);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  show(e?: any) {\r\n    if (this.isShown) return;\r\n    this._old.start = this.startDate?.clone();\r\n    this._old.end = this.endDate?.clone();\r\n    this.isShown = true;\r\n    this.applyBtn.disabled = true;\r\n    this.updateView();\r\n  }\r\n\r\n  hide(e?: any) {\r\n    if (!this.isShown) return;\r\n    // incomplete date selection, revert to last values\r\n    if (!this.endDate) {\r\n      if (this._old.start) this.startDate = this._old.start.clone();\r\n      if (this._old.end) this.endDate = this._old.end.clone();\r\n      this.clearIncompleteDateSelection();\r\n    }\r\n    // if a new date range was selected, invoke the user callback function\r\n    if (!this.startDate?.isSame(this._old.start) || !this.endDate?.isSame(this._old.end)) {\r\n      // this.callback(this.startDate, this.endDate, this.chosenLabel);\r\n    }\r\n    // if picker is attached to a text input, update it\r\n    this.updateElement();\r\n    this.isShown = false;\r\n    this.applyBtn.disabled = true;\r\n    this._ref.detectChanges();\r\n  }\r\n\r\n  clearIncompleteDateSelection() {\r\n    this.nowHoveredDate = null;\r\n    this.pickingDate = false;\r\n  }\r\n\r\n  /**\r\n   * handle click on all element in the component, useful for outside of click\r\n   * @param e event\r\n   */\r\n  handleInternalClick(e: any) {\r\n    e.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   * update the locale options\r\n   * @param locale\r\n   */\r\n  updateLocale(locale: any) {\r\n    for (const key in locale) {\r\n      if (locale.hasOwnProperty(key)) {\r\n        this.locale[key] = locale[key];\r\n        if (key === 'customRangeLabel') {\r\n          this.renderRanges();\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  clear the daterange picker\r\n   */\r\n  clickClear($event: any) {\r\n    this.startDate = dayjs().startOf('day');\r\n    this.endDate = dayjs().endOf('day');\r\n    this.chosenDate.emit({chosenLabel: '', startDate: null, endDate: null});\r\n    this.datesUpdated.emit({startDate: null, endDate: null});\r\n    this.clearClicked.emit();\r\n    this.hide();\r\n  }\r\n\r\n  /**\r\n   * Find out if the selected range should be disabled if it doesn't\r\n   * fit into minDate and maxDate limitations.\r\n   */\r\n  disableRange(range: any) {\r\n    if (range === this.locale.customRangeLabel) {\r\n      return false;\r\n    }\r\n    const rangeMarkers = this.ranges[range];\r\n    const areBothBefore = rangeMarkers.every((date: any) => {\r\n      if (!this.getMinDate()) {\r\n        return false;\r\n      }\r\n      return date.isBefore(this.getMinDate());\r\n    });\r\n    const areBothAfter = rangeMarkers.every((date: any) => {\r\n      if (!this.getMaxDate()) {\r\n        return false;\r\n      }\r\n      return date.isAfter(this.getMaxDate());\r\n    });\r\n    return (areBothBefore || areBothAfter);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param date the date to add time\r\n   * @param side left or right\r\n   */\r\n  private _getDateWithTime(date: any, side: SideEnum): Dayjs {\r\n    let hour = parseInt(this.timepickerVariables[side].selectedHour, 10);\r\n    if (!this.timePicker24Hour) {\r\n      const ampm = this.timepickerVariables[side].ampmModel;\r\n      if (ampm === 'PM' && hour < 12) hour += 12;\r\n      if (ampm === 'AM' && hour === 12) hour = 0;\r\n    }\r\n    const minute = parseInt(this.timepickerVariables[side].selectedMinute, 10);\r\n    const second = this.timePickerSeconds ? parseInt(this.timepickerVariables[side].selectedSecond, 10) : 0;\r\n    return date.clone().hour(hour).minute(minute).second(second);\r\n  }\r\n\r\n  /**\r\n   *  build the locale config\r\n   */\r\n  private _buildLocale() {\r\n    this.locale = {...this._localeService.config, ...this.locale};\r\n    if (!this.locale.format) {\r\n      if (this.timePicker) {\r\n        this.locale.format = dayjs.localeData().longDateFormat('lll');\r\n      } else {\r\n        this.locale.format = dayjs.localeData().longDateFormat('L');\r\n      }\r\n    }\r\n  }\r\n\r\n  private _buildCells(calendar: any, side: SideEnum) {\r\n    for (let row = 0; row < 6; row++) {\r\n      this.calendarVariables[side].classes[row] = {};\r\n      const rowClasses = [];\r\n      if (\r\n        this.emptyWeekRowClass &&\r\n        Array.from(Array(7).keys()).some(i => calendar[row][i].month() !== this.calendarVariables[side].month)\r\n      ) {\r\n        rowClasses.push(this.emptyWeekRowClass);\r\n      }\r\n      for (let col = 0; col < 7; col++) {\r\n        const classes = [];\r\n        // empty week row class\r\n        if (this.emptyWeekColumnClass) {\r\n          if (calendar[row][col].month() !== this.calendarVariables[side].month) {\r\n            classes.push(this.emptyWeekColumnClass);\r\n          }\r\n        }\r\n        // highlight today's date\r\n        if (calendar[row][col].isSame(new Date(), 'day')) classes.push('today');\r\n        // highlight weekends\r\n        if (calendar[row][col].isoWeekday() > 5) classes.push('weekend');\r\n        // grey out the dates in other months displayed at beginning and end of this calendar\r\n        if (calendar[row][col].month() !== calendar[1][1].month()) {\r\n          classes.push('off');\r\n          // mark the last day of the previous month in this calendar\r\n          if (\r\n            this.lastDayOfPreviousMonthClass && (calendar[row][col].month() < calendar[1][1].month() ||\r\n              calendar[1][1].month() === 0) && calendar[row][col].date() === this.calendarVariables[side].daysInLastMonth\r\n          ) {\r\n            classes.push(this.lastDayOfPreviousMonthClass);\r\n          }\r\n          // mark the first day of the next month in this calendar\r\n          if (\r\n            this.firstDayOfNextMonthClass && (calendar[row][col].month() > calendar[1][1].month() ||\r\n              calendar[row][col].month() === 0) && calendar[row][col].date() === 1\r\n          ) {\r\n            classes.push(this.firstDayOfNextMonthClass);\r\n          }\r\n        }\r\n        // mark the first day of the current month with a custom class\r\n        if (\r\n          this.firstMonthDayClass && calendar[row][col].month() === calendar[1][1].month() &&\r\n          calendar[row][col].date() === calendar.firstDay.date()\r\n        ) {\r\n          classes.push(this.firstMonthDayClass);\r\n        }\r\n        // mark the last day of the current month with a custom class\r\n        if (\r\n          this.lastMonthDayClass && calendar[row][col].month() === calendar[1][1].month() &&\r\n          calendar[row][col].date() === calendar.lastDay.date()) {\r\n          classes.push(this.lastMonthDayClass);\r\n        }\r\n        // don't allow selection of dates before the minimum date\r\n        if (this.getMinDate() && calendar[row][col].isBefore(this.getMinDate(), 'day')) {\r\n          classes.push('off', 'disabled');\r\n        }\r\n        // don't allow selection of dates after the maximum date\r\n        if (this.calendarVariables[side].maxDate && calendar[row][col].isAfter(this.calendarVariables[side].maxDate, 'day')) {\r\n          classes.push('off', 'disabled');\r\n        }\r\n        // don't allow selection of date if a custom function decides it's invalid\r\n        if (this.isInvalidDate(calendar[row][col])) {\r\n          classes.push('off', 'disabled', 'invalid');\r\n        }\r\n        // highlight the currently selected start date\r\n        if (this.startDate && calendar[row][col].format('YYYY-MM-DD') === this.startDate.format('YYYY-MM-DD')) {\r\n          classes.push('active', 'start-date');\r\n        }\r\n        // highlight the currently selected end date\r\n        if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') === this.endDate.format('YYYY-MM-DD')) {\r\n          classes.push('active', 'end-date');\r\n        }\r\n        // highlight dates in-between the selected dates\r\n        if (\r\n          (\r\n            (this.nowHoveredDate != null && this.pickingDate) || this.endDate != null\r\n          ) &&\r\n          (\r\n            calendar[row][col] > <Dayjs>this.startDate &&\r\n            (\r\n              calendar[row][col] < <Dayjs>this.endDate || (calendar[row][col] < <any>this.nowHoveredDate && this.pickingDate)\r\n            )\r\n          ) &&\r\n          (\r\n            !classes.find(el => el === 'off')\r\n          )\r\n        ) {\r\n          classes.push('in-range');\r\n        }\r\n        // apply custom classes for this date\r\n        const isCustom = this.isCustomDate(calendar[row][col]);\r\n        if (isCustom !== false) {\r\n          if (typeof isCustom === 'string') {\r\n            classes.push(isCustom);\r\n          } else {\r\n            Array.prototype.push.apply(classes, isCustom);\r\n          }\r\n        }\r\n        // apply custom tooltip for this date\r\n        const isTooltip = this.isTooltipDate(calendar[row][col]);\r\n        if (isTooltip) {\r\n          if (typeof isTooltip === 'string') {\r\n            this.tooltiptext[calendar[row][col]] = isTooltip; // setting tooltiptext for custom date\r\n          } else {\r\n            this.tooltiptext[calendar[row][col]] = 'Put the tooltip as the returned value of isTooltipDate';\r\n          }\r\n        } else {\r\n          this.tooltiptext[calendar[row][col]] = '';\r\n        }\r\n        // store classes var\r\n        let cname = '', disabled = false;\r\n        for (let i = 0; i < classes.length; i++) {\r\n          cname += classes[i] + ' ';\r\n          if (classes[i] === 'disabled') {\r\n            disabled = true;\r\n          }\r\n        }\r\n        if (!disabled) {\r\n          cname += 'available';\r\n        }\r\n        this.calendarVariables[side].classes[row][col] = cname.replace(/^\\s+|\\s+$/g, '');\r\n      }\r\n      this.calendarVariables[side].classes[row].classList = rowClasses.join(' ');\r\n    }\r\n  }\r\n\r\n}\r\n","<div #pickerContainer\r\n     class='card daterangepicker'\r\n     [class]=\"drops + ' ' + opens\"\r\n     [ngClass]=\"{\r\n    'show-ranges': rangesArray.length,\r\n    'shown': isShown || inline,\r\n    'hidden': !isShown && !inline,\r\n    'double': !singleDatePicker && showCalInRanges,\r\n    'inline': inline,\r\n    'ltr': locale.direction === 'ltr',\r\n    'rtl': this.locale.direction === 'rtl'\r\n    }\">\r\n\r\n  <div class=\"card-body p-2\">\r\n    <ranges\r\n      [rangesArray]=\"rangesArray\"\r\n      [chosenRange]=\"chosenRange\"\r\n      [locale]=\"locale\"\r\n      [ranges]=\"ranges\"\r\n      [_minDate]=\"_minDate\"\r\n      [_maxDate]=\"_maxDate\"\r\n      (rangeEvent)='clickRange($event)'\r\n    />\r\n    <calendar\r\n      [showCalInRanges]=\"showCalInRanges\"\r\n      [singleDatePicker]=\"singleDatePicker\"\r\n      [calendarVariables]=\"calendarVariables\"\r\n      [showWeekNumbers]=\"showWeekNumbers\"\r\n      [showISOWeekNumbers]=\"showISOWeekNumbers\"\r\n      [linkedCalendars]=\"linkedCalendars\"\r\n      [showDropdowns]=\"showDropdowns\"\r\n      [locale]=\"locale\"\r\n      [timePicker]=\"timePicker\"\r\n      [startDate]=\"startDate\"\r\n      [timepickerVariables]=\"timepickerVariables\"\r\n      [timePickerSeconds]=\"timePickerSeconds\"\r\n      [timePicker24Hour]=\"timePicker24Hour\"\r\n      (prevEvent)='clickPrev($event)'\r\n      (nextEvent)='clickNext($event)'\r\n      (monthChangedEvent)='monthChanged($event)'\r\n      (yearChangedEvent)='yearChanged($event)'\r\n      (dateEvent)='clickDate($event)'\r\n      (hoverDateEvent)='hoverDate($event)'\r\n      (timeChangedEvent)='timeChanged($event)'\r\n    />\r\n  </div>\r\n  <actions\r\n    [autoApply]=\"autoApply\"\r\n    [rangesArray]=\"rangesArray\"\r\n    [showCalInRanges]=\"showCalInRanges\"\r\n    [singleDatePicker]=\"singleDatePicker\"\r\n    [chosenLabel]=\"chosenLabel\"\r\n    [applyBtn]=\"applyBtn\"\r\n    [locale]=\"locale\"\r\n    [showCancel]=\"showCancel\"\r\n    [showClearButton]=\"showClearButton\"\r\n    (applyEvent)='clickApply($event)'\r\n    (cancelEvent)='clickCancel($event)'\r\n    (clearEvent)='clickClear($event)'\r\n  />\r\n</div>\r\n","import {\r\n  AfterViewChecked,\r\n  AfterViewInit,\r\n  ApplicationRef,\r\n  ChangeDetectorRef,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  EmbeddedViewRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  HostListener,\r\n  Injector,\r\n  Input,\r\n  KeyValueDiffer,\r\n  KeyValueDiffers,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  reflectComponentType,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport {NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport dayjs from 'dayjs';\r\nimport {NgxDaterangepickerBootstrapComponent} from \"../components/daterangepicker/ngx-daterangepicker-bootstrap.component\";\r\nimport {LocaleConfig} from \"../utils/ngx-daterangepicker-locale.config\";\r\nimport {NgxDaterangepickerLocaleService} from \"../services/ngx-daterangepicker-locale.service\";\r\n\r\n@Directive({\r\n  selector: 'input[ngxDaterangepickerBootstrap]',\r\n  host: {\r\n    '(click)': 'open()',\r\n    '(keyup.esc)': 'hide()',\r\n    '(blur)': 'onBlur()',\r\n    '(keyup)': 'inputChanged($event)'\r\n  },\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => NgxDaterangepickerBootstrapDirective), multi: true\r\n    }\r\n  ]\r\n})\r\nexport class NgxDaterangepickerBootstrapDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit, AfterViewChecked {\r\n\r\n  public $event: any;\r\n  public daterangepicker: NgxDaterangepickerBootstrapComponent | any;\r\n  private daterangepickerRef: ComponentRef<any>;\r\n  private readonly daterangepickerElement: HTMLElement;\r\n  private localeDiffer?: KeyValueDiffer<string, any>;\r\n  private firstMonthDayClass?: string;\r\n  private _onChange = Function.prototype;\r\n  private _onTouched = Function.prototype;\r\n  private _disabled?: boolean;\r\n  private _value: any;\r\n  private _startKey!: string;\r\n  private _endKey!: string;\r\n  private _locale: LocaleConfig = {};\r\n  private _resizeObserver?: ResizeObserver;\r\n\r\n  @Input() minDate?: dayjs.Dayjs;\r\n  @Input() maxDate?: dayjs.Dayjs;\r\n  @Input() autoApply?: boolean;\r\n  @Input() alwaysShowCalendars?: boolean;\r\n  @Input() showCustomRangeLabel?: boolean;\r\n  @Input() linkedCalendars?: boolean;\r\n  @Input() dateLimit: number | null = null;\r\n  @Input() singleDatePicker?: boolean;\r\n  @Input() showWeekNumbers?: boolean;\r\n  @Input() showISOWeekNumbers?: boolean;\r\n  @Input() showDropdowns?: boolean;\r\n  @Input() isInvalidDate?: Function;\r\n  @Input() isCustomDate?: Function;\r\n  @Input() isTooltipDate?: Function;\r\n  @Input() showClearButton?: boolean;\r\n  @Input() customRangeDirection?: boolean;\r\n  @Input() ranges: any;\r\n  @Input() opens: string;\r\n  @Input() drops: string;\r\n  @Input() lastMonthDayClass?: string;\r\n  @Input() emptyWeekRowClass?: string;\r\n  @Input() emptyWeekColumnClass?: string;\r\n  @Input() firstDayOfNextMonthClass?: string;\r\n  @Input() lastDayOfPreviousMonthClass?: string;\r\n  @Input() keepCalendarOpeningWithRange?: boolean;\r\n  @Input() showRangeLabelOnInput?: boolean;\r\n  @Input() showCancel: Boolean = false;\r\n  @Input() lockStartDate: Boolean = false;\r\n  @Input() closeOnAutoApply = true;\r\n  @Input() timePicker: Boolean = false;\r\n  @Input() timePicker24Hour: Boolean = false;\r\n  @Input() timePickerIncrement: Number = 1;\r\n  @Input() timePickerSeconds: Boolean = false;\r\n  @Input() formlyCustomField: Boolean = false; // if you use ngx-formly and create custom field this library\r\n\r\n  @Input() set startKey(value: any) {\r\n    if (value !== null) {\r\n      this._startKey = value;\r\n    } else {\r\n      this._startKey = 'startDate';\r\n    }\r\n  }\r\n\r\n  @Input() set endKey(value: any) {\r\n    if (value !== null) {\r\n      this._endKey = value;\r\n    } else {\r\n      this._endKey = 'endDate';\r\n    }\r\n  }\r\n\r\n  @Input() set locale(value) {\r\n    this._locale = {...this._localeService.config, ...value};\r\n  }\r\n\r\n  @HostBinding('disabled') get disabled() {\r\n    return this._disabled;\r\n  }\r\n\r\n  get locale(): any {\r\n    return this._locale;\r\n  }\r\n\r\n  @Output() change: EventEmitter<Object> = new EventEmitter();\r\n  @Output() rangeClicked: EventEmitter<Object> = new EventEmitter();\r\n  @Output() datesUpdated: EventEmitter<Object> = new EventEmitter();\r\n  @Output() startDateChanged: EventEmitter<Object> = new EventEmitter();\r\n  @Output() endDateChanged: EventEmitter<Object> = new EventEmitter();\r\n  @Output() clearClicked: EventEmitter<void> = new EventEmitter();\r\n\r\n  notForChangesProperty: Array<string> = [\r\n    'locale',\r\n    'endKey',\r\n    'startKey'\r\n  ];\r\n\r\n  get value() {\r\n    return this._value || null;\r\n  }\r\n\r\n  set value(val) {\r\n    this._value = val;\r\n    this._onChange(val);\r\n    this._changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  constructor(private viewContainerRef: ViewContainerRef,\r\n              private injector: Injector,\r\n              private applicationRef: ApplicationRef,\r\n              private differs: KeyValueDiffers,\r\n              private elementRef: ElementRef,\r\n              private _changeDetectorRef: ChangeDetectorRef,\r\n              private _el: ElementRef,\r\n              private _renderer: Renderer2,\r\n              private _localeService: NgxDaterangepickerLocaleService) {\r\n    this.endKey = 'endDate';\r\n    this.startKey = 'startDate';\r\n    this.drops = 'down';\r\n    this.opens = 'right';\r\n    viewContainerRef.clear();\r\n    this.daterangepickerRef = this.viewContainerRef.createComponent(NgxDaterangepickerBootstrapComponent, {injector: this.injector});\r\n    this.daterangepickerElement = (this.daterangepickerRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n    CSS.supports('display', 'contents') // unwrap or hide daterangepickerElement from DOM body, to fix clickOutside\r\n      ? this.daterangepickerElement.classList.add('unwrap', 'on')\r\n      : this.daterangepickerElement.classList.add('unwrap', 'off');\r\n    document.body.appendChild(this.daterangepickerElement); // add daterangepickerElement to DOM body, to fix position top left issues\r\n    this.daterangepicker = (<NgxDaterangepickerBootstrapComponent>this.daterangepickerRef.instance);\r\n    this.daterangepicker.inline = false; // set inline to false for all directive usage\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.daterangepicker.rangeClicked.asObservable().subscribe((range: any) => {\r\n      this.rangeClicked.emit(range);\r\n    });\r\n    this.daterangepicker.datesUpdated.asObservable().subscribe((range: any) => {\r\n      this.datesUpdated.emit(range);\r\n    });\r\n    this.daterangepicker.startDateChanged.asObservable().subscribe((itemChanged: any) => {\r\n      this.startDateChanged.emit(itemChanged);\r\n    });\r\n    this.daterangepicker.endDateChanged.asObservable().subscribe((itemChanged: any) => {\r\n      this.endDateChanged.emit(itemChanged);\r\n    });\r\n    this.daterangepicker.clearClicked.asObservable().subscribe(() => {\r\n      this.clearClicked.emit();\r\n    });\r\n    this.daterangepicker.chosenDate.asObservable().subscribe((change: any) => {\r\n      if (change) {\r\n        const value = {} as any;\r\n        value[this._startKey] = change.startDate;\r\n        value[this._endKey] = change.endDate;\r\n        this.value = value;\r\n        this.change.emit(value);\r\n        if (typeof change.chosenLabel === 'string') {\r\n          this._el.nativeElement.value = change.chosenLabel;\r\n        }\r\n      }\r\n    });\r\n    this.pickerResizeObserver();\r\n    this.daterangepicker.firstMonthDayClass = this.firstMonthDayClass;\r\n    this.daterangepicker.lastMonthDayClass = this.lastMonthDayClass;\r\n    this.daterangepicker.emptyWeekRowClass = this.emptyWeekRowClass;\r\n    this.daterangepicker.emptyWeekColumnClass = this.emptyWeekColumnClass;\r\n    this.daterangepicker.firstDayOfNextMonthClass = this.firstDayOfNextMonthClass;\r\n    this.daterangepicker.lastDayOfPreviousMonthClass = this.lastDayOfPreviousMonthClass;\r\n    this.daterangepicker.drops = this.drops;\r\n    this.daterangepicker.opens = this.opens;\r\n    this.localeDiffer = this.differs.find(this.locale).create();\r\n    this.daterangepicker.closeOnAutoApply = this.closeOnAutoApply;\r\n    if (this.localeDiffer) {\r\n      const changes = this.localeDiffer.diff(this.locale);\r\n      if (changes) {\r\n        this.daterangepicker.updateLocale(this.locale);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._resizeObserver?.unobserve(this.daterangepicker.pickerContainer.nativeElement);\r\n    const reflectComponent = reflectComponentType(NgxDaterangepickerBootstrapComponent);\r\n    const selector = document.querySelector(reflectComponent!.selector);\r\n    if (selector !== null) document.body.removeChild(selector);\r\n    this.applicationRef.detachView(this.daterangepickerRef.hostView);\r\n    this.daterangepickerRef.destroy();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.formlyCustomField) this.writeValue(this.locale); // If you use ngx-formly custom field, remove [(ngModel)]\r\n    // from the input and set [formlyCustomField]='true' instead, to avoid Expression has changed after it was checked.\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    for (const change in changes) {\r\n      if (changes.hasOwnProperty(change)) {\r\n        if (this.notForChangesProperty.indexOf(change) === -1) {\r\n          this.daterangepicker[change] = changes[change].currentValue;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  onBlur() {\r\n    this._onTouched();\r\n  }\r\n\r\n  open(event?: any) {\r\n    if (this.disabled) return;\r\n    this.daterangepicker.show(event);\r\n    if (this.daterangepicker.isShown) this.setPosition();\r\n  }\r\n\r\n  hide(e?: any) {\r\n    this.daterangepicker.hide(e);\r\n  }\r\n\r\n  toggle(e?: any) {\r\n    this.daterangepicker.isShown ? this.hide(e) : this.open(e);\r\n  }\r\n\r\n  clear() {\r\n    this.daterangepicker.clickClear();\r\n  }\r\n\r\n  writeValue(value: any) {\r\n    this.setValue(value);\r\n  }\r\n\r\n  registerOnChange(fn: any) {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any) {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(state: boolean): void {\r\n    this._disabled = state;\r\n  }\r\n\r\n  private setValue(val: any) {\r\n    if (val) {\r\n      this.value = val;\r\n      if (val[this._startKey]) {\r\n        this.daterangepicker.setStartDate(val[this._startKey]);\r\n      }\r\n      if (val[this._endKey]) {\r\n        this.daterangepicker.setEndDate(val[this._endKey]);\r\n      }\r\n      this.daterangepicker.calculateChosenLabel();\r\n      if (this.daterangepicker.chosenLabel) {\r\n        this._el.nativeElement.value = this.daterangepicker.chosenLabel;\r\n      }\r\n    } else {\r\n      this.daterangepicker.clickClear();\r\n    }\r\n  }\r\n\r\n  ngAfterViewChecked() {\r\n    if (this.daterangepicker.isShown) this.setPosition();\r\n  }\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  onWindowResize() {\r\n    if (this.daterangepicker.isShown) this.setPosition();\r\n  }\r\n\r\n  pickerResizeObserver() {\r\n    this._resizeObserver = new ResizeObserver(() => {\r\n      // if (this.daterangepicker.isShown) this.setPosition();\r\n    });\r\n    this._resizeObserver.observe(this.daterangepicker.pickerContainer.nativeElement);\r\n  }\r\n\r\n  /**\r\n   * Set position of the calendar, this works as expected only if you add daterangepickerElement to DOM body\r\n   */\r\n  setPosition() {\r\n    const pickerContainer = this.daterangepicker.pickerContainer.nativeElement;\r\n    const inputOffset = this.getOffset(this._el.nativeElement);\r\n    let containerTop;\r\n    let containerBottom;\r\n    if (this.drops && this.drops === 'down') {\r\n      containerTop = inputOffset.top + inputOffset.height + 'px';\r\n      containerBottom = 'auto'\r\n    }\r\n    if (this.drops && this.drops === 'up') {\r\n      containerTop = 'auto'\r\n      containerBottom = window.innerHeight - inputOffset.top + 'px';\r\n    }\r\n    let style;\r\n    if (this.opens === 'right') {\r\n      style = {\r\n        top: containerTop,\r\n        right: 'auto',\r\n        bottom: containerBottom,\r\n        left: inputOffset.left + 'px',\r\n      };\r\n    }\r\n    if (this.opens === 'center') {\r\n      style = {\r\n        top: containerTop,\r\n        right: 'auto',\r\n        bottom: containerBottom,\r\n        left: inputOffset.left + (inputOffset.width - pickerContainer.offsetWidth) / 2 + 'px',\r\n      };\r\n    }\r\n    if (this.opens === 'left') {\r\n      style = {\r\n        top: containerTop,\r\n        right: window.innerWidth - (inputOffset.left + inputOffset.width) + 'px',\r\n        bottom: containerBottom,\r\n        left: 'auto',\r\n      };\r\n    }\r\n    if (style) {\r\n      /* inset: top right bottom left */\r\n      this._renderer.setStyle(pickerContainer, 'top', style.top);\r\n      this._renderer.setStyle(pickerContainer, 'right', style.right);\r\n      this._renderer.setStyle(pickerContainer, 'bottom', style.bottom);\r\n      this._renderer.setStyle(pickerContainer, 'left', style.left);\r\n    }\r\n  }\r\n\r\n  getOffset(element: any) {\r\n    const rect = element.getBoundingClientRect();\r\n    return {\r\n      top: rect.top + window.scrollY,\r\n      left: rect.left + window.scrollX,\r\n      height: rect.height,\r\n      width: rect.width,\r\n    };\r\n  }\r\n\r\n  inputChanged(e: any) {\r\n    if (e.target.tagName.toLowerCase() !== 'input') return;\r\n    if (!e.target.value.length) return;\r\n    const dateString = e.target.value.split(this.daterangepicker.locale.separator);\r\n    let start = null, end = null;\r\n    if (dateString.length === 2) {\r\n      start = dayjs(dateString[0], this.daterangepicker.locale.format);\r\n      end = dayjs(dateString[1], this.daterangepicker.locale.format);\r\n    }\r\n    if (this.singleDatePicker || start === null || end === null) {\r\n      start = dayjs(e.target.value, this.daterangepicker.locale.format);\r\n      end = start;\r\n    }\r\n    if (!start.isValid() || !end.isValid()) return;\r\n    this.daterangepicker.setStartDate(start);\r\n    this.daterangepicker.setEndDate(end);\r\n    this.daterangepicker.updateView();\r\n  }\r\n\r\n  /**\r\n   * For click outside of the calendar's container\r\n   * @param event event object\r\n   */\r\n  @HostListener('document:click', ['$event'])\r\n  outsideClick(event: any): void {\r\n    if (!event.target || event.target.classList.contains('ngx-daterangepicker-action')) return;\r\n    if (!this.elementRef.nativeElement.contains(event.target)) this.hide();\r\n  }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {NgxDaterangepickerBootstrapComponent} from \"../components/daterangepicker/ngx-daterangepicker-bootstrap.component\";\r\nimport {NgxDaterangepickerBootstrapDirective} from \"../directives/ngx-daterangepicker-bootstrap.directive\";\r\nimport {LOCALE_CONFIG, LocaleConfig} from \"../utils/ngx-daterangepicker-locale.config\";\r\nimport {NgxDaterangepickerLocaleService} from \"../services/ngx-daterangepicker-locale.service\";\r\n\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxDaterangepickerBootstrapComponent,\r\n    NgxDaterangepickerBootstrapDirective\r\n  ],\r\n  exports: [\r\n    NgxDaterangepickerBootstrapComponent,\r\n    NgxDaterangepickerBootstrapDirective\r\n  ]\r\n})\r\nexport class NgxDaterangepickerBootstrapModule {\r\n\r\n  static forRoot(config: LocaleConfig = {}): ModuleWithProviders<NgxDaterangepickerBootstrapModule> {\r\n    return {\r\n      ngModule: NgxDaterangepickerBootstrapModule,\r\n      providers: [\r\n        {provide: LOCALE_CONFIG, useValue: config},\r\n        {provide: NgxDaterangepickerLocaleService, useClass: NgxDaterangepickerLocaleService, deps: [LOCALE_CONFIG]}\r\n      ]\r\n    };\r\n  }\r\n\r\n}\r\n","import {EnvironmentProviders, makeEnvironmentProviders} from \"@angular/core\";\r\nimport {LOCALE_CONFIG, LocaleConfig} from \"./ngx-daterangepicker-locale.config\";\r\nimport {NgxDaterangepickerLocaleService} from \"../services/ngx-daterangepicker-locale.service\";\r\n\r\nexport function provideDaterangepickerLocale(config: LocaleConfig = {}): EnvironmentProviders {\r\n  return makeEnvironmentProviders([\r\n    {provide: LOCALE_CONFIG, useValue: config},\r\n    {provide: NgxDaterangepickerLocaleService, useClass: NgxDaterangepickerLocaleService, deps: [LOCALE_CONFIG]}\r\n  ]);\r\n}\r\n","/*\r\n * Public API Surface of ngx-daterangepicker-bootstrap\r\n */\r\n\r\nexport * from './lib/components/daterangepicker/ngx-daterangepicker-bootstrap.component';\r\nexport * from './lib/directives/ngx-daterangepicker-bootstrap.directive';\r\nexport * from './lib/modules/ngx-daterangepicker-bootstrap.module';\r\nexport * from './lib/services/ngx-daterangepicker-locale.service';\r\nexport * from './lib/utils/ngx-daterangepicker-locale.provider';\r\nexport * from './lib/utils/ngx-daterangepicker-locale.config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxDaterangepickerLocaleService"],"mappings":"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"}