{"version":3,"file":"firestitch-datepicker.mjs","sources":["../../src/libs/common/enums/picker-view-type.enum.ts","../../src/libs/common/enums/scroll-picker-view-type.enum.ts","../../src/libs/common/enums/week-day.enum.ts","../../src/libs/dialog/helpers/get-days-in-month.ts","../../src/libs/dialog/helpers/get-disabled-dates.ts","../../src/libs/dialog/helpers/get-disabled-times.ts","../../src/libs/dialog/helpers/get-first-day-of-first-year-week.ts","../../src/libs/dialog/classes/dialog-model.ts","../../src/libs/dialog/classes/overlay-ref.ts","../../src/libs/dialog/classes/dialog-ref.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/header-month-range/header-month-range.component.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/header-month-range/header-month-range.component.html","../../src/libs/common/helpers/get-start-day-date.ts","../../src/libs/common/helpers/split-date-by-components.ts","../../src/libs/calendar/consts/week-days.ts","../../src/libs/common/helpers/is-date-in-range.ts","../../src/libs/common/helpers/is-day-disabled.ts","../../src/libs/calendar/models/period.ts","../../src/libs/common/helpers/get-period-id.ts","../../src/libs/calendar/models/week.ts","../../src/libs/calendar/models/month.ts","../../src/libs/calendar/components/calendar/calendar.component.ts","../../src/libs/calendar/components/calendar/calendar.component.html","../../src/libs/calendar/components/time/time.component.ts","../../src/libs/calendar/components/time/time.component.html","../../src/libs/components/action-buttons/action-buttons.component.ts","../../src/libs/components/action-buttons/action-buttons.component.html","../../src/libs/dialog/modules/desktop-dialog-container/components/month-range-picker/month-range-picker.component.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/month-range-picker/month-range-picker.component.html","../../src/libs/calendar/consts/months.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/header/header.component.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/header/header.component.html","../../src/libs/dialog/modules/desktop-dialog-container/components/date-picker/date-picker.component.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/date-picker/date-picker.component.html","../../src/libs/dialog/modules/desktop-dialog-container/components/desktop-dialog/desktop-dialog.component.ts","../../src/libs/dialog/modules/desktop-dialog-container/components/desktop-dialog/desktop-dialog.component.html","../../src/libs/dialog/modules/mobile-dialog-container/components/virtual-scroll-calendar/helpers.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/virtual-scroll-calendar/calendar-scroll-strategy.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/virtual-scroll-calendar/calendar-data-source.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/header/header.component.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/header/header.component.html","../../src/libs/dialog/modules/mobile-dialog-container/components/header-month-range/header-month-range.component.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/header-month-range/header-month-range.component.html","../../src/libs/dialog/modules/mobile-dialog-container/components/virtual-scroll-calendar/virtual-scroll-calendar.component.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/virtual-scroll-calendar/virtual-scroll-calendar.component.html","../../src/libs/dialog/modules/mobile-dialog-container/components/time-picker/time-picker.component.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/time-picker/time-picker.component.html","../../src/libs/dialog/modules/mobile-dialog-container/components/date-time-picker/date-time-picker.component.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/date-time-picker/date-time-picker.component.html","../../src/libs/dialog/modules/mobile-dialog-container/components/mobile-dialog/mobile-dialog.component.ts","../../src/libs/dialog/modules/mobile-dialog-container/components/mobile-dialog/mobile-dialog.component.html","../../src/libs/dialog/modules/scroll-picker-dialog-container/consts/months.ts","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker/date-scroll-picker.component.ts","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker/date-scroll-picker.component.html","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker-base/date-scroll-picker-base.component.ts","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker-desktop/date-scroll-picker-desktop.component.ts","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker-desktop/date-scroll-picker-desktop.component.html","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker-mobile/date-scroll-picker-mobile.component.ts","../../src/libs/dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker-mobile/date-scroll-picker-mobile.component.html","../../src/libs/dialog/services/dialog-factory.service.ts","../../src/libs/dialog/dialog.module.ts","../../src/app/providers/datepicker-config.provider.ts","../../src/app/components/calendar-picker/calendar-picker.component.ts","../../src/app/components/calendar-picker/calendar-picker.component.html","../../src/app/helpers/parse-date.ts","../../src/app/classes/picker-base-component.ts","../../src/app/classes/date-picker-base-component.ts","../../src/app/helpers/create-date-from-value.ts","../../src/app/helpers/format-date-time.ts","../../src/app/components/date-picker-trigger/date-picker-trigger.component.ts","../../src/app/components/date-picker-trigger/date-picker-trigger.component.html","../../src/app/components/date-picker/date-picker.component.ts","../../src/app/components/date-scroll-picker/date-scroll-picker.component.ts","../../src/app/components/date-picker-birthday/date-picker-birthday.component.ts","../../src/app/components/date-range-separator/date-range-separator.component.ts","../../src/app/components/date-time-picker/date-time-picker.component.ts","../../src/libs/common/helpers/format-period-object.ts","../../src/app/components/date-week-picker/date-week-picker.component.ts","../../src/libs/common/helpers/is-same-date.ts","../../src/app/components/range-picker/base/range-picker-base.component.ts","../../src/libs/common/helpers/clone-date.ts","../../src/libs/common/helpers/is-date-after.ts","../../src/app/classes/range-picker-ref.ts","../../src/app/services/range-picker-store.service.ts","../../src/app/components/range-picker/base/range-picker-from.component.ts","../../src/app/components/range-picker/base/range-picker-to.component.ts","../../src/app/components/range-picker/from/date-range-picker-from.component.ts","../../src/app/components/range-picker/from/date-time-range-picker-from.component.ts","../../src/app/components/range-picker/from/month-range-picker-from.component.ts","../../src/app/components/range-picker/from/time-range-picker-from.component.ts","../../src/app/components/range-picker/to/date-range-picker-to.component.ts","../../src/app/components/range-picker/to/date-time-range-picker-to.component.ts","../../src/app/components/range-picker/to/month-range-picker-to.component.ts","../../src/app/components/range-picker/to/time-range-picker-to.component.ts","../../src/app/components/time-picker/time-picker.component.ts","../../src/app/components/time-select/time-select.component.ts","../../src/app/components/time-select/time-select.component.html","../../src/app/components/weekday-select/weekday-select.component.ts","../../src/app/components/weekday-select/weekday-select.component.html","../../src/app/datepicker.module.ts","../../src/libs/common/helpers/get-weeks-diff-for-period.ts","../../src/libs/common/helpers/get-period-for-date.ts","../../src/public_api.ts","../../src/firestitch-datepicker.ts"],"sourcesContent":["export enum PickerViewType {\n  Date = 'date',\n  DateTime = 'datetime',\n  Time = 'time',\n  Week = 'week',\n  MonthRange = 'monthrange',\n}\n","export enum ScrollPickerViewType {\n  Date = 'date',\n  Month = 'month',\n  Year = 'year',\n  MonthDay = 'monthday',\n  MonthYear = 'monthyear',\n}\n","export enum WeekDay {\n  Sunday,\n  Monday,\n  Tuesday,\n  Wednesday,\n  Thursday,\n  Friday,\n  Saturday,\n}\n","export function getDaysInMonth(date: Date): number {\n  return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n}\n","import { addDays, addYears, subDays, subYears } from 'date-fns';\n\n\nexport function getDisabledDates(\n  minDate: Date,\n  maxDate: Date,\n  minYear: number,\n  maxYear: number,\n): [Date, Date][] {\n  const result = [];\n\n  if (minDate) {\n    const from = subYears(new Date(), minYear);\n    const to = subDays(minDate, 1);\n\n    result.push([from, to]);\n  }\n\n  if (maxDate) {\n    result.push([addDays(maxDate, 1), addYears(new Date(), maxYear)]);\n  }\n\n  return result;\n}\n","import { isSameDay } from 'date-fns';\nimport { PickerViewType } from '../../common/enums';\n\n\nexport function getDisabledTimes(model: Date | null, minDate: Date, view: PickerViewType): [Date, Date][] {\n  const arr = [];\n  if (\n    (view === PickerViewType.Time && minDate) ||\n    (view === PickerViewType.DateTime && minDate && model && isSameDay(minDate, model))\n  ) {\n    const from = (minDate.getMinutes()) + ((minDate.getHours()) * 60);\n    arr.push([0, from]);\n  }\n\n  return arr;\n}\n","/**\n * According to ISO 8601 first week in the year is not just first Monday in the year\n *\n * The first calendar week of a year is that one which includes the first Thursday of that year\n * and the last calendar week of a calendar year is the week immediately preceding the first calendar week of the next calendar year.\n *\n * https://webspace.science.uu.nl/~gent0113/calendar/isocalendar_text_2.htm\n *\n */\nexport function getFirstDayOfFirstYearWeek(date: Date): Date {\n  const startOfYear = new Date((date.getFullYear()), 0, 1);\n  const currentDay = startOfYear.getDay();\n\n  if (currentDay > 4) {\n    const daysToNextMonday = (7 - currentDay) + 1; // +1 because currentDay count starts from 0\n\n    return new Date(startOfYear.getFullYear(), 0, startOfYear.getDate() + daysToNextMonday);\n  } else {\n    const daysToPrevMonday = currentDay - 1;\n\n    return new Date(startOfYear.getFullYear(), 0, startOfYear.getDate() - daysToPrevMonday);\n  }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport {\n  addDays,\n  addMinutes,\n  addMonths,\n  isBefore,\n  isDate,\n  isValid,\n  setMonth,\n  setYear,\n  startOfDay,\n  subMonths,\n} from 'date-fns';\n\n\nimport { RangePickerRef } from '../../../app/classes/range-picker-ref';\nimport { WeekDay } from '../../../libs/common/enums';\nimport { PickerViewType } from '../../common/enums';\nimport { IDatePickerPeriod } from '../../common/interfaces/period.interface';\nimport { WeekDays } from '../../common/types/week-days.type';\nimport { getDisabledTimes } from '../../dialog/helpers';\nimport { IDialogFactoryOptions } from '../../dialog/interfaces';\nimport { getDisabledDates, getFirstDayOfFirstYearWeek } from '../helpers';\n\n\nexport class FsDatePickerDialogModel {\n\n  /**\n   * year | month | date\n   *\n   * Current mode of calendar. For ranges consist values for both: start and end date\n   */\n  public dateMode: 'datetime' | 'year' | 'time' | 'date' | 'month' = null;\n  public minDate = null;\n  public maxDate = null;\n  public rangeStart: Date = null;\n  public startOfDay = true;\n  public seedDate = null;\n  public periodWeeks = null;\n  public minutes = true;\n  public showNow = true;\n  public weekStartsOn: WeekDays;\n\n  private _minYear = null;\n  private _maxYear = null;\n  private _pickerOptions: IDialogFactoryOptions;\n  private _model$ = new BehaviorSubject<Date | null>(null);\n  private _period$ = new BehaviorSubject<IDatePickerPeriod | null>(null);\n  private _now$ = new BehaviorSubject<Date>(new Date());\n  private _disabledDates$ = new BehaviorSubject<[Date, Date][]>([]);\n  private _disabledTimes$ = new BehaviorSubject<[Date, Date][]>([]);\n  private _calendarDate$ = new BehaviorSubject<Date>(this.now);\n  private _calendarMode$ = new BehaviorSubject<string>('date');\n  private _timeExpanded$ = new BehaviorSubject<boolean>(false);\n\n  /**\n   * date | datetime | time | week\n   * View is options selected on init. Can't be changed manually\n   */\n  private _view$ = new BehaviorSubject<string>('date');\n\n  constructor(\n    pickerOptions: IDialogFactoryOptions,\n  ) {\n    this._initCalendar(pickerOptions);\n    this._updateDisabled();\n  }\n\n  public get now(): Date {\n    return this._now$.value;\n  }\n\n  public set calendarDate(value: Date) {\n    this._calendarDate$.next(value);\n  }\n\n  public get calendarDate(): Date {\n    return this._calendarDate$.value;\n  }\n\n  public get calendarDate$(): Observable<Date> {\n    return this._calendarDate$;\n  }\n\n  public get view$(): Observable<string> {\n    return this._view$.asObservable();\n  }\n\n  public get view(): string {\n    return this._view$.value;\n  }\n\n  public set view(view) {\n    this._view$.next(view);\n  }\n\n  public get isDateView(): boolean {\n    return this.view === PickerViewType.Date;\n  }\n\n  public get isDateTimeView(): boolean {\n    return this.view === PickerViewType.DateTime;\n  }\n\n  public get isTimeView(): boolean {\n    return this.view === PickerViewType.Time;\n  }\n\n  public get isWeekView(): boolean {\n    return this.view === PickerViewType.Week;\n  }\n\n  public get isMonthRangeView(): boolean {\n    return this.view === PickerViewType.MonthRange;\n  }\n\n  public get calendarMode$(): Observable<string> {\n    return this._calendarMode$;\n  }\n\n  public get calendarMode(): string {\n    return this._calendarMode$.value;\n  }\n\n  public get isPickerRangeFrom(): boolean {\n    return this._pickerOptions.rangeType === 'from';\n  }\n\n  public get isPickerRangeTo(): boolean {\n    return this._pickerOptions.rangeType === 'to';\n  }\n\n  public set model(value: Date | null) {\n    if (isValid(value)) {\n      if (this.isDateView && this.startOfDay) {\n        value = startOfDay(value);\n      }\n\n      /**\n       * For cases when we have datetime view type and have opened \"To\" date picker.\n       * If \"From\" date is already selected it means that we have some Time range to be disabled.\n       * When user select \"To\" date without time (only clicks on date) we have to pull up time for selected date.\n       */\n      if (this.isDateTimeView\n        && this._pickerOptions.rangeType === 'to'\n        && !this.model\n        && value\n      ) {\n        if (isBefore(value, this.rangePickerRef.startDate)) {\n          value = new Date(this.rangePickerRef.startDate);\n        }\n      }\n    } else {\n      value = null;\n    }\n\n    this._model$.next(value);\n\n    this._updateDisabledTimes();\n  }\n\n  public get model(): Date | null {\n    return this._model$.value;\n  }\n\n  public get model$(): Observable<Date | null> {\n    return this._model$;\n  }\n\n  public set period(value: IDatePickerPeriod | null) {\n    this._period$.next(value);\n  }\n\n  public get period(): IDatePickerPeriod | null {\n    return this._period$.value;\n  }\n\n  public get period$(): Observable<IDatePickerPeriod | null> {\n    return this._period$;\n  }\n\n  public set disabledDates(value: [Date, Date][]) {\n    this._disabledDates$.next(value);\n  }\n\n  public get disabledDates$(): Observable<[Date, Date][]> {\n    return this._disabledDates$;\n  }\n\n  public set disabledTimes(value: [Date, Date][]) {\n    this._disabledTimes$.next(value);\n  }\n\n  public get disabledTimes$(): Observable<[Date, Date][]> {\n    return this._disabledTimes$;\n  }\n\n  public set minYear(minYear) {\n    this._minYear = minYear || (new Date().getFullYear() - 100);\n  }\n\n  public get minYear() {\n    return this._minYear;\n  }\n\n  public set maxYear(maxYear) {\n    this._maxYear = maxYear || (new Date().getFullYear() + 100);\n  }\n\n  public get maxYear() {\n    return this._maxYear;\n  }\n\n  private set _calendarMode(value: string) {\n    this._calendarMode$.next(value);\n  }\n\n  public get timeExpanded$(): Observable<boolean> {\n    return this._timeExpanded$.asObservable();\n  }\n\n  public get timeExpanded(): boolean {\n    return this._timeExpanded$.value;\n  }\n\n  public set timeExpanded(flag: boolean) {\n    this._timeExpanded$.next(flag);\n  }\n\n  public get rangePickerRef(): RangePickerRef | null {\n    return this._pickerOptions.pickerRef;\n  }\n\n  public setCalendarMonth(month: number) {\n    this.goToMongth(month);\n  }\n\n  public setCalendarYear(year: number) {\n    this.goToYear(year);\n\n    this._updateDisabled();\n  }\n\n  public goToMongth(month: number): void {\n    this.calendarDate = setMonth(this.calendarDate, month);\n  }\n\n  public goToYear(year: number): void {\n    this.calendarDate = setYear(this.calendarDate, year);\n  }\n\n  public nextMonth() {\n    this.calendarDate = addMonths(this.calendarDate, 1);\n  }\n\n  public prevMonth() {\n    this.calendarDate = subMonths(this.calendarDate, 1);\n  }\n\n  public setCalendarMode(mode: string) {\n    this._calendarMode = mode;\n  }\n\n  private _initCalendar(options: IDialogFactoryOptions) {\n    this._pickerOptions = { ...options };\n    this.view = options.view;\n    this._calendarMode = options.view;\n    this.minYear = options.minYear;\n    this.maxYear = options.maxYear;\n    this.minDate = options.minDate;\n    this.maxDate = options.maxDate;\n    this.rangeStart = options.rangeStart;\n    this.weekStartsOn = options.weekStartsOn ?? WeekDay.Sunday;\n\n    if (this._pickerOptions.rangeType === 'to' && this.minDate < this.rangeStart) {\n      this.minDate = this.rangeStart;\n    }\n\n    this.startOfDay = options.startOfDay;\n    this.minutes = options.minutes === undefined\n      ? true\n      : options.minutes;\n    this.showNow = options.showNow === undefined\n      ? true\n      : options.showNow;\n\n    this.seedDate = !isDate(options.seedDate) || !isValid(options.seedDate) ?\n      getFirstDayOfFirstYearWeek(new Date()) :\n      options.seedDate;\n    this.periodWeeks = options.periodWeeks;\n\n    this._initCalendarDate(options);\n    this._updateDisabledDates();\n    this._updateCalendarDate();\n  }\n\n  private _initCalendarDate(options: IDialogFactoryOptions) {\n    switch (this.view) {\n      case PickerViewType.Week: {\n        this.period = (options.modelValue as IDatePickerPeriod);\n        this.calendarDate = (options.modelValue as IDatePickerPeriod)?.from || new Date();\n      } break;\n\n      case PickerViewType.MonthRange: {\n        this.calendarDate = (options.modelValue as Date) || new Date();\n      } break;\n\n      default: {\n        this.model = (options.modelValue as Date);\n        this.calendarDate = (options.modelValue as Date) || new Date();\n      }\n    }\n  }\n\n  private _updateDisabled() {\n    this._updateDisabledDates();\n    this._updateDisabledTimes();\n  }\n\n  private _updateDisabledDates() {\n    this.disabledDates = getDisabledDates(this.minDate, this.maxDate, this.minYear, this.maxYear);\n  }\n\n  private _updateCalendarDate() {\n    if (this.minDate && isDate(this.minDate) && isValid(this.minDate)) {\n      const pickerView = this.view;\n\n      if (!this.model) {\n        // Add days because it was substructed by 1 day in DatePicker component\n        if ([PickerViewType.Date, PickerViewType.Week].includes(pickerView as PickerViewType)) {\n          this.calendarDate = addDays(this.minDate, 1);\n        } else if ([PickerViewType.DateTime, PickerViewType.Time].includes(pickerView as PickerViewType)) {\n          this.calendarDate = addDays(addMinutes(this.minDate, 5), 1);\n        }\n      }\n    }\n  }\n\n  private _updateDisabledTimes() {\n    const pickerView = this.view;\n\n    if (pickerView !== PickerViewType.DateTime && pickerView !== PickerViewType.Time) {\n      return;\n    }\n\n    if (this._pickerOptions.rangeType) {\n      if (this._pickerOptions.rangeType === 'to') {\n        this.disabledTimes = getDisabledTimes(\n          this.calendarDate,\n          this._pickerOptions.pickerRef.startDate,\n          pickerView,\n        );\n      }\n    } else {\n      this.disabledTimes = getDisabledTimes(\n        this.calendarDate,\n        this.minDate,\n        pickerView,\n      );\n    }\n  }\n\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\n\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\n\nimport { BehaviorSubject, merge } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\n\nexport class FsDatePickerOverlayRef {\n\n  private _activeOverlayRef$ = new BehaviorSubject<OverlayRef | MatBottomSheetRef | null>(null);\n\n  public get destroy$() {\n    return this._activeOverlayRef$\n      .pipe(\n        filter((ref) => !!ref),\n        switchMap((ref) => {\n          if (ref instanceof OverlayRef) {\n            return merge(\n              ref.detachments(),\n              ref.backdropClick(),\n            );\n          } else {\n            return merge(\n              ref.afterDismissed(),\n              ref.backdropClick(),\n            );\n          }\n        }),\n      );\n  }\n\n  public get activeOverlayRef(): OverlayRef | MatBottomSheetRef | null {\n    return this._activeOverlayRef$.getValue();\n  }\n\n  public setActiveOverlay(ref: OverlayRef | MatBottomSheetRef): void {\n    this._activeOverlayRef$.next(ref);\n  }\n\n  public close(): void {\n    if (this.activeOverlayRef instanceof OverlayRef) {\n      this.activeOverlayRef?.detach();\n      this.activeOverlayRef?.dispose();\n    }\n\n    if (this.activeOverlayRef instanceof MatBottomSheetRef) {\n      this.activeOverlayRef?.dismiss();\n    }\n\n    this.setActiveOverlay(null);\n  }\n\n}\n","import { Observable, Subject } from 'rxjs';\nimport { skip } from 'rxjs/operators';\n\nimport { forEach, isEqual } from 'lodash-es';\n\nimport { IDatePickerPeriod } from '../../common/interfaces/period.interface';\nimport { IFsDatePickerDialogComponents } from '../interfaces/dialog-components.interface';\nimport { IDialogFactoryOptions } from '../interfaces/dialog-factory-data.interface';\n\nimport { FsDatePickerDialogModel } from './dialog-model';\nimport { FsDatePickerOverlayRef } from './overlay-ref';\n\n\nexport class FsDatePickerDialogRef {\n\n  public opened = true;\n\n  private _overlayRef = new FsDatePickerOverlayRef();\n  private _dialogModel: FsDatePickerDialogModel;\n  private _close$ = new Subject<void>();\n  private _value$: Observable<Date | null | IDatePickerPeriod>;\n\n  /**\n   * Visual components. Can be changed by summary widget but only if _view allowed to do this.\n   */\n  private _componentsDefault: IFsDatePickerDialogComponents = {\n    calendarStart: false,\n    calendarEnd: false,\n    timeStart: false,\n    timeEnd: false,\n  };\n\n  private _components: IFsDatePickerDialogComponents = null;\n\n  constructor(\n    private _pickerOptions: IDialogFactoryOptions,\n  ) {\n    this._init();\n  }\n\n  public get pickerModel(): FsDatePickerDialogModel {\n    return this._dialogModel;\n  }\n\n  public get options(): IDialogFactoryOptions {\n    return this._pickerOptions;\n  }\n\n  public get value$(): Observable<Date | IDatePickerPeriod | null> {\n    return this._value$;\n  }\n\n  public get pickerOverlayRef(): FsDatePickerOverlayRef {\n    return this._overlayRef;\n  }\n\n  public get close$() {\n    return this._close$.asObservable();\n  }\n\n  public get components() {\n    return this._components;\n  }\n\n  public updateValue(value) {\n    this._dialogModel.model = value;\n  }\n\n  public close(): void {\n    this.pickerOverlayRef.close();\n    this._close$.next(null);\n    this._close$.complete();\n    this.opened = false;\n  }\n\n  private _init(): void {\n    this._initComponents();\n    this._initModel();\n  }\n\n  private _initModel(): void {\n    this._dialogModel = new FsDatePickerDialogModel(\n      this._pickerOptions,\n    );\n\n    this._initValue();\n  }\n\n  private _initValue(): void {\n    this._value$ = String(this.options.view) === 'week' ? this._dialogModel.period$\n      .pipe(\n        skip(1),\n      ) : this._dialogModel.model$\n      .pipe(\n        skip(1),\n      );\n  }\n\n  private _initComponents(): void {\n    const value = {\n      ...this._componentsDefault,\n      ...this._pickerOptions.components || {},\n    };\n    const tempData = { ...value };\n    const allowable = [];\n\n    if (['week', 'date', 'datetime', 'monthrange'].indexOf(this._pickerOptions.view) !== -1) {\n      allowable.push('calendarStart');\n      allowable.push('calendarEnd');\n    }\n\n    if (['time', 'datetime'].indexOf(this._pickerOptions.view) !== -1) {\n      allowable.push('timeStart');\n      allowable.push('timeEnd');\n    }\n\n    forEach(tempData, (item, index) => {\n      tempData[index] = allowable.indexOf(index) !== -1 ? item : false;\n    });\n\n    // Updating components only if all value object is valid\n    if (isEqual(value, tempData)) {\n      this._components = value;\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { MatIconAnchor } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsDateModule } from '@firestitch/date';\n\n\n@Component({\n    selector: 'fs-date-picker-header-month-range',\n    templateUrl: './header-month-range.component.html',\n    styleUrls: [\n        './header-month-range.component.scss',\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        MatIconAnchor,\n        MatIcon,\n        FsDateModule,\n    ],\n})\nexport class FsDatePickerHeaderMonthRangeComponent {\n\n  @Input()\n  public calendarDate: Date;\n\n  @Input()\n  public nextCalendarDate: Date;\n\n  @Output()\n  public goNextMonth = new EventEmitter<void>();\n\n  @Output()\n  public goPrevMonth = new EventEmitter<void>();\n\n  public get calendarMonth(): number {\n    return this.calendarDate?.getMonth();\n  }\n\n  public get calendarYear(): number {\n    return this.calendarDate?.getFullYear();\n  }\n\n  public get calendarDay(): number {\n    return this.calendarDate?.getDate();\n  }\n\n  public nextMonth(): void {\n    this.goNextMonth.emit();\n  }\n\n  public prevMonth(): void {\n    this.goPrevMonth.emit();\n  }\n}\n","<div class=\"current-month-header heading-container\">\n  <div class=\"actions\">\n    <a\n        mat-icon-button\n        (click)=\"prevMonth()\"\n        class=\"nav-action\">\n      <mat-icon>\n        navigate_before\n      </mat-icon>\n    </a>\n  </div>\n  <span class=\"month-name\">\n    {{ calendarDate | fsDateFormat: 'full-date-dayless' }}\n  </span>\n</div>\n<div class=\"next-month-header heading-container\">\n  <span class=\"month-name\">\n    {{ nextCalendarDate | fsDateFormat: 'full-date-dayless' }}\n  </span>\n  <div class=\"actions\">\n    <a\n        mat-icon-button\n        (click)=\"nextMonth()\"\n        class=\"nav-action\">\n      <mat-icon>\n        navigate_next\n      </mat-icon>\n    </a>\n  </div>\n</div>","import { startOfDay } from 'date-fns';\n\n\nexport function getStartDayDate() {\n  return startOfDay(new Date());\n}\n","import { isDate, isValid, lightFormat } from 'date-fns';\n\n\nexport function splitDateByComponents(date: Date) {\n  if (date && isValid(date) && isDate(date)) {\n    return {\n      date: lightFormat(date, 'yyyy-MM-dd'),\n      hour: date.getHours(),\n      minute: date.getMinutes(),\n      year: date.getFullYear(),\n      month: date.getMonth(),\n      day: date.getDate(),\n    };\n  } else {\n    return {\n      date: null,\n      hour: null,\n      minute: null,\n      year: null,\n      month: null,\n      day: null,\n    };\n  }\n}\n","export const WEEKDAYS = [\n  'Sun',\n  'Mon',\n  'Tue',\n  'Wed',\n  'Thu',\n  'Fri',\n  'Sat',\n];\n","import { isEqual, isWithinInterval } from 'date-fns';\n\nexport function isDateInRange(dates: Date[][], start: Date, end: Date) {\n  if (!dates || !dates.length) {\n    return false;\n  }\n\n  for (let i = 0; i < dates.length; i++) {\n    const startDate = dates[i][0];\n    const endDate = dates[i][1];\n\n    if(\n      (\n        (\n          isWithinInterval(start, { start: startDate, end: endDate }) || isEqual(start, startDate)\n        ) && (\n          isWithinInterval(end, { start: startDate, end: endDate }) || isEqual(end, endDate)\n        )\n      )\n    ) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","import { endOfDay, startOfDay } from 'date-fns';\n\nimport { isDateInRange } from './is-date-in-range';\n\nexport function isDayInRange(dates: Date[][], date) {\n  const startDay = startOfDay(date);\n  const endDay = endOfDay(date);\n\n  dates = (dates || [])\n    .map((item) => (\n      [\n        startOfDay(item[0]),\n        endOfDay(item[1]),\n      ]\n    ));\n\n  return isDateInRange(dates, startDay, endDay);\n}\n","import {\n  addSeconds,\n  addWeeks,\n  differenceInCalendarYears,\n} from 'date-fns';\n\nimport { Week } from './week';\n\nexport class Period {\n\n  public mouseOver = false;\n\n  private _weeks: Week[] = [];\n  private _countOfWeeks = 0;\n  private _from: Date;\n  private _to: Date;\n  private _year: number;\n\n  constructor(\n    public periodId: number,\n    public startDate: Date,\n    public periodWeeks: number,\n    private _selected = false,\n  ) {\n    this._updatePeriodInterval();\n  }\n\n  public get countOfWeeks() {\n    return this._countOfWeeks;\n  }\n\n  public get selected() {\n    return this._selected;\n  }\n\n  public get from() {\n    return this._from;\n  }\n\n  public get to() {\n    return this._to;\n  }\n\n  public get year() {\n    return this._year;\n  }\n\n  public set year(value: number) {\n    this._year = value;\n  }\n\n  public set selected(value: boolean) {\n    this._selected = value;\n\n    this._weeks.forEach((week) => {\n      week.days.forEach((day) => {\n        day.selected = value;\n      })\n    })\n  }\n\n  public addWeek(week: Week) {\n    this._weeks.push(week);\n\n    if (this.periodWeeks) {\n      this._sortWeeks();\n\n      if (this._weeks.length === 1) {\n        week.setPeriodVisibility(true);\n      }\n    }\n\n    this._countOfWeeks = this._weeks.length;\n  }\n\n  /**\n   * Mark weeks with special flags to be able to draw borders\n   */\n  public markFirstLastWeeks() {\n    const firstWeek = this._weeks[0];\n    const lastWeek = this._weeks[this._weeks.length - 1];\n\n    firstWeek.markAsFirstVisiblePeriodWeek();\n    lastWeek.markAsLastVisiblePeriodWeek();\n  }\n\n  private _sortWeeks() {\n    this._weeks.sort((a, b) => {\n      if (a.dateStart < b.dateStart) {\n        return -1\n      } else if (a.dateStart > b.dateStart) {\n        return 1;\n      } else {\n        return 0;\n      }\n    })\n  }\n\n  /**\n   * Calc from, to, year params based on period date start\n   */\n  private _updatePeriodInterval() {\n    this._from = this.startDate;\n    this._to = addSeconds(addWeeks(this._from, this.periodWeeks), -1);\n    this._year = this._from.getFullYear();\n  }\n}\n","import {\n  differenceInCalendarYears,\n} from 'date-fns';\nimport { WeekDays } from '../../common/types/week-days.type';\nimport { WeekDay } from '../enums/week-day.enum';\n\n/**\n * Calculate period ID based on week date start and seed date\n */\nexport function getPeriodId(\n  dateStart: Date,\n  seedDate: Date,\n  periodWeeks: number,\n  weekStartsOn: WeekDays,\n) {\n  // Copy date objects to UTC to avoid timezone issues\n  dateStart = new Date(\n    Date.UTC(dateStart.getFullYear(),\n      dateStart.getMonth(),\n      dateStart.getDate(),\n    ),\n  );\n  seedDate = new Date(\n    Date.UTC(\n      seedDate.getFullYear(),\n      seedDate.getMonth(),\n      seedDate.getDate(),\n    ),\n  );\n\n  // Set to nearest Thursday: current date + 4 - current day number\n  // Make Sunday's day number 7\n  dateStart.setUTCDate(dateStart.getUTCDate() + 4 - (dateStart.getUTCDay() || 7));\n\n  const diffInYears = differenceInCalendarYears(dateStart, seedDate);\n  seedDate.setUTCFullYear(seedDate.getUTCFullYear() + diffInYears);\n\n  // If dateStart is still before seedDate after year adjustment, go back one more year\n  if (dateStart.getTime() < seedDate.getTime()) {\n    seedDate.setUTCFullYear(seedDate.getUTCFullYear() - 1);\n  }\n\n  // Calculate full weeks to nearest Thursday\n  let weekNumber = Math.ceil((((dateStart.getTime() - seedDate.getTime()) / 86400000) + 1) / 7);\n\n  // Only for case when week starts on Sunday\n  if (weekStartsOn === WeekDay.Sunday) {\n    weekNumber += 1;\n  }\n\n  return Math.ceil(weekNumber / periodWeeks);\n}\n","import { addWeeks } from 'date-fns';\n\nimport { getPeriodId } from '../../common/helpers/get-period-id';\nimport { WeekDays } from '../../common/types/week-days.type';\nimport { DayItem } from '../interfaces/day-item.interface';\n\nimport { Period } from './period';\n\n\nexport class Week {\n\n  public days: DayItem[] = [];\n  public period: Period;\n  public periodId: number;\n\n  public firstWeekInPeriod = false;\n  public lastWeekInPeriod = false;\n\n  private _periodVisible = false;\n  private _dateEnd: Date;\n\n  constructor(\n    private _dateStart: Date,\n    private _seedDate: Date,\n    private _periodWeeks: number,\n    private _weekStartsOn: WeekDays,\n  ) {\n    if (this._seedDate && this._periodWeeks) {\n      this.periodId = getPeriodId(this._dateStart, this._seedDate, this._periodWeeks, this._weekStartsOn);\n    }\n\n    this._dateEnd = addWeeks(this._dateStart, 1);\n  }\n\n  public get dateStart() {\n    return this._dateStart;\n  }\n\n  public get dateEnd() {\n    return this._dateEnd;\n  }\n\n  public get periodLableVisible() {\n    return this._periodVisible;\n  }\n\n  /**\n   * Add related day\n   *\n   * @param day\n   */\n  public addDay(day: DayItem) {\n    this.days.push(day);\n  }\n\n  /**\n   * Add related period\n   *\n   * @param period\n   */\n  public addPeriod(period: Period) {\n    this.period = period;\n  }\n\n  /**\n   * Set visibility for period label\n   *\n   * @param flag\n   */\n  public setPeriodVisibility(flag: boolean) {\n    this._periodVisible = flag;\n  }\n\n  /**\n   * To be able to draw borders for week\n   */\n  public markAsFirstVisiblePeriodWeek() {\n    this.firstWeekInPeriod = true;\n  }\n\n  public markAsLastVisiblePeriodWeek() {\n    this.lastWeekInPeriod = true;\n  }\n\n}\n","import {\n  addDays,\n  format,\n  getDaysInMonth,\n  lightFormat,\n  startOfDay,\n  subDays,\n} from 'date-fns';\n\nimport { isDayInRange } from '../../common/helpers/is-day-disabled';\nimport { WeekDays } from '../../common/types/week-days.type';\n\nimport { Period } from './period';\nimport { Week } from './week';\n\nconst CALENDAR_DAYS_NUMBER = 42;\n\nexport class Month {\n\n  public name;\n  public number;\n  public year;\n  public monthAndYear;\n  public months;\n  public years;\n  public weeks: Week[] = [];\n  public weeksByPeriod: Map<number, Period>;\n\n  private _prevMonthDaysCount: number;\n  private _monthStartDay: number;\n  private _daysInMonth: number;\n\n  constructor(\n    public date: Date,\n    public seedDate: Date,\n    public periodWeeks: number,\n    private _enabledDates: [Date, Date][],\n    private _disabledDates: [Date, Date][],\n    private _hideExtraDays: boolean,\n    private _weekStartsOn: WeekDays,\n    private _minDate: Date,\n    private _maxDate: Date,\n  ) {\n    this._initMonth(date);\n    this._countTotalDaysInMonth();\n  }\n\n  /**\n   * Render days and weeks\n   */\n  public renderDays() {\n    let currentDate = startOfDay(subDays(this.date, this._prevMonthDaysCount));\n\n    let daysToBeRendered = this._hideExtraDays\n      ? getDaysInMonth(this.date) + this._prevMonthDaysCount\n      : CALENDAR_DAYS_NUMBER;\n\n    // only for week mode in mobile view!\n    if (this._hideExtraDays && this.periodWeeks) {\n      daysToBeRendered += 7 - (daysToBeRendered % 7);\n    }\n\n    let week: Week;\n\n    for (let d = 0; d < daysToBeRendered; d++) {\n      const dayNumber = lightFormat(currentDate, 'd');\n\n      if (d % 7 === 0) {\n        week = new Week(currentDate, this.seedDate, this.periodWeeks, this._weekStartsOn);\n\n        this.weeks.push(week);\n      }\n\n      const dayMuted = d - this._prevMonthDaysCount < 0\n        || d >= this._daysInMonth + this._prevMonthDaysCount;\n\n      const enabled = this._enabledDates ? isDayInRange(this._enabledDates, currentDate) : false;\n      const disabled = !!this._enabledDates && !enabled ? true : isDayInRange(this._disabledDates, currentDate);\n\n      week.addDay({\n        surrounding: dayMuted,\n        date: lightFormat(currentDate, 'yyyy-MM-dd'),\n        number: dayNumber,\n        month: currentDate.getMonth(),\n        year: currentDate.getFullYear(),\n        disabled,\n        enabled,\n      });\n\n      currentDate = addDays(currentDate, 1);\n    }\n\n    if (this.seedDate && this.periodWeeks) {\n      this._groupWeeks();\n      this._markFirstAndLastWeeks();\n    }\n  }\n\n  public getPeriodById(id: number) {\n    if (!this.weeksByPeriod.has(id)) {\n      return false;\n    }\n\n    return this.weeksByPeriod.get(id);\n  }\n\n  /**\n   * Input period means that instance of period is not same instance\n   * that was created for month.\n   * It means that period and weeksByPeriod can have same periodIds but different object refs\n   *\n   * @param period\n   */\n  public updateSelectionForPeriod(period: Period) {\n    const p = this.getPeriodById(period.periodId);\n\n    if (p && p.year === period.year) {\n      p.selected = period.selected;\n\n      return p;\n    }\n\n    return false;\n\n  }\n\n  /**\n   * Init base month field\n   *\n   * @param date\n   */\n  private _initMonth(date: Date) {\n    this.date = new Date(date);\n    this.date.setDate(1);\n    this._monthStartDay = this.date.getDay();\n    this._daysInMonth = getDaysInMonth(this.date);\n    this.name = format(this.date, 'MMMM');\n    this.number = this.date.getMonth();\n    this.year = this.date.getFullYear();\n    this.monthAndYear = `${this.date.getFullYear()}-${this.date.getMonth()}`;\n    this.months = [{ name: format(this.date, 'MMMM'), value: this.date.getMonth() }];\n    this.years = [this.date.getFullYear()];\n\n    if(this._minDate) {\n      this._disabledDates = this._disabledDates || [];\n      this._disabledDates\n        .push([new Date(0),this._minDate]);\n    } \n\n    if(this._maxDate) {\n      this._disabledDates = this._disabledDates || [];\n      this._disabledDates\n        .push([this._maxDate, new Date(9999,0,1)]);\n    }\n  }\n\n  /**\n   * Depends on week day start it counts total number of days in month\n   */\n  private _countTotalDaysInMonth() {\n    this._prevMonthDaysCount = this._monthStartDay >= this._weekStartsOn ? this._monthStartDay - this._weekStartsOn : 7 - (this._weekStartsOn - this._monthStartDay);\n  }\n\n  /**\n   * Just for easy usage\n   */\n  private _groupWeeks() {\n    this.weeksByPeriod = new Map();\n\n    this.weeks.forEach((week) => {\n      if (!this.weeksByPeriod.has(week.periodId)) {\n        const newPeriod = new Period(\n          week.periodId,\n          week.dateStart,\n          this.periodWeeks,\n        );\n\n        this.weeksByPeriod.set(week.periodId, newPeriod);\n      }\n\n      const period = this.weeksByPeriod\n        .get(week.periodId);\n\n      period.addWeek(week);\n      week.addPeriod(period);\n    });\n  }\n\n  private _markFirstAndLastWeeks() {\n    this.weeksByPeriod.forEach((period) => {\n      period.markFirstLastWeeks();\n    });\n  }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, inject } from '@angular/core';\n\nimport {\n  eachDayOfInterval,\n  format,\n  isAfter,\n  lightFormat,\n  startOfDay,\n} from 'date-fns';\n\nimport { getStartDayDate } from '../../../common/helpers/get-start-day-date';\nimport { splitDateByComponents } from '../../../common/helpers/split-date-by-components';\nimport { IDatePickerPeriod } from '../../../common/interfaces/period.interface';\nimport { WeekDays } from '../../../common/types/week-days.type';\nimport { WEEKDAYS } from '../../consts/week-days';\nimport { DayItem } from '../../interfaces/day-item.interface';\nimport { Month } from '../../models/month';\nimport { Period } from '../../models/period';\nimport { Week } from '../../models/week';\n\n\n@Component({\n    selector: 'fs-date-picker-calendar',\n    templateUrl: './calendar.component.html',\n    styleUrls: ['./calendar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fs-date-picker-calendar',\n    },\n    standalone: true,\n})\nexport class FsDatePickerCalendarComponent implements OnInit, OnChanges {\n  element = inject(ElementRef);\n\n\n  @Input()\n  public date: Date = null;\n\n  @Input()\n  public period: IDatePickerPeriod = null;\n\n  @Input()\n  public rangeFrom: Date = null;\n\n  @Input()\n  public rangeTo: Date = null;\n\n  @Input()\n  public highlightStartDate: Date = null;\n\n  @Input()\n  public highlightEndDate: Date = null;\n\n  @Input()\n  public dateMode: string = null;\n\n  @Input()\n  public enabledDates: [Date, Date][] = null;\n\n  @Input()\n  public disabledDates: [Date, Date][] = null;\n\n  @Input()\n  public calendarDate: Date = null;\n\n  @Input()\n  public seedDate;\n\n  @Input()\n  public weekStartsOn: WeekDays;\n\n  @Input()\n  public periodWeeks;\n\n  @Input()\n  public showSurroundingDays = false;\n\n  @Input()\n  public hideExtraDays = false;\n\n  @Input()\n  public showToday = true;\n\n  @Input()\n  public daySize;\n\n  @Input()\n  public maxDate;\n\n  @Input()\n  public minDate;\n\n  @Output()\n  public change = new EventEmitter<Date>();\n\n  @Output()\n  public rangeChange = new EventEmitter<Date>();\n\n  @Output()\n  public periodChange = new EventEmitter<IDatePickerPeriod>();\n\n  @Output()\n  public hoverDay = new EventEmitter<any>();\n\n  public selected: any = {};\n  public selectedPeriod: Period;\n  public selectedRange: { from?: string; to?: string } = {};\n  public month: Month = null;\n\n  public weekDaysList = [];\n\n  public currentDate = new Date();\n  public today: any = {\n    date: format(this.currentDate, 'yyyy-MM-dd'),\n    month: this.currentDate.getMonth(),\n    year: this.currentDate.getFullYear(),\n  };\n\n  public highlightedRangeDays = null;\n\n  public ngOnInit() {\n    this.daySize = this.daySize ?? 43;\n\n    if (this.dateMode === 'week') {\n      if (this.period && this.seedDate) {\n        this.selectedPeriod = new Period(this.period.period, this.period.from, this.periodWeeks, true);\n        this.selectedPeriod.year = this.period.from.getFullYear();\n\n        const selectedPeriod = this.month.updateSelectionForPeriod(this.selectedPeriod);\n\n        if (selectedPeriod) {\n          this.selectedPeriod = selectedPeriod;\n        }\n      }\n    } else if (this.date) {\n      this.selected = splitDateByComponents(this.date);\n    }\n  }\n\n  public ngOnChanges(changes) {\n    if (changes) {\n      if (changes.date) {\n        this.selected = splitDateByComponents(this.date);\n        this.updateDaysHighlighted();\n      } else if (changes.highlightStartDate || changes.highlightEndDate) {\n        this.updateDaysHighlighted();\n      }\n\n      if (changes.calendarDate || changes.enabledDates) {\n        this.drawMonths();\n      }\n\n      if (changes.rangeFrom || changes.rangeTo) {\n        this.selectedRange = {\n          from: this.rangeFrom && lightFormat(this.rangeFrom, 'yyyy-MM-dd') || null,\n          to: this.rangeTo && lightFormat(this.rangeTo, 'yyyy-MM-dd') || null,\n        };\n      }\n    }\n  }\n\n  public onMouseEnterDay(day) {\n    this.hoverDay.emit(day);\n  }\n\n  public mouseEnterWeek(week: Week) {\n    if (this.dateMode === 'week') {\n      week.period.mouseOver = true;\n    }\n  }\n\n  public mouseLeaveWeek(week: Week) {\n    if (this.dateMode === 'week') {\n      week.period.mouseOver = false;\n    }\n  }\n\n  public updateDaysHighlighted() {\n    this.highlightedRangeDays = {\n      data: {},\n      min: null,\n      max: null,\n    };\n\n    let start = null;\n    let end = null;\n\n    if (this.highlightStartDate && this.highlightEndDate) {\n      if (isAfter(this.highlightStartDate, this.highlightEndDate)) {\n        start = this.highlightEndDate;\n        end = this.highlightStartDate;\n      } else {\n        start = this.highlightStartDate;\n        end = this.highlightEndDate;\n      }\n\n      start = startOfDay(start);\n      end = startOfDay(end);\n\n      const range = Array.from(eachDayOfInterval({ start, end }));\n\n      if (!range.length) {\n        return;\n      }\n\n      for (const day of range) {\n        this.highlightedRangeDays.data[lightFormat(day, 'yyyy-MM-dd')] = true;\n      }\n\n      this.highlightedRangeDays.min = lightFormat(range[0], 'yyyy-MM-dd');\n      this.highlightedRangeDays.max = lightFormat(range[range.length - 1], 'yyyy-MM-dd');\n    }\n  }\n\n  public createModel() {\n    if (!this.date) {\n      this.date = getStartDayDate();\n    }\n  }\n\n  public setDate(date) {\n    this.date = date;\n    this.change.emit(date);\n  }\n\n  /**\n   *\n   * @param day\n   * @param week\n   * @param event\n   */\n  public dayClick(day, week) {\n    if (this.dateMode === 'week') {\n      this.selectPeriod(week.period);\n    } else if (this.dateMode === 'monthrange') {\n      this.selectMonthRange(day);\n    } else {\n      this.selectDay(day);\n    }\n  }\n\n  public selectDay(day) {\n    if (day.disabled) {\n      return;\n    }\n\n    if (!this.date) {\n      this.createModel();\n    }\n\n    const date = new Date(\n      day.year,\n      day.month,\n      day.number,\n      this.date.getHours(),\n      this.date.getMinutes(),\n      this.date.getSeconds(),\n    );\n\n    this.setDate(date);\n  }\n\n  public selectMonthRange(day: DayItem) {\n    const date = new Date(\n      day.year,\n      day.month,\n      +day.number,\n      0,\n      0,\n      0,\n    );\n\n    this.setDate(date);\n  }\n\n  public selectPeriod(period: Period) {\n    if (this.selectedPeriod) {\n      if (this.selectedPeriod === period) {\n        this.selectedPeriod.selected = !this.selectedPeriod.selected;\n      } else {\n        this.selectedPeriod.selected = false;\n        period.selected = true;\n        this.selectedPeriod = period;\n      }\n    } else {\n      period.selected = true;\n      this.selectedPeriod = period;\n    }\n\n    if (this.selectedPeriod.selected) {\n      this.periodChange.emit({\n        period: this.selectedPeriod.periodId,\n        from: this.selectedPeriod.from,\n        to: this.selectedPeriod.to,\n      });\n    } else {\n      this.periodChange.emit(null);\n    }\n  }\n\n  public drawMonths() {\n    this.month = this.createMonth(this.calendarDate);\n  }\n\n  public createMonth(date: Date) {\n    const month = new Month(\n      date,\n      this.seedDate,\n      this.periodWeeks,\n      this.enabledDates,\n      this.disabledDates,\n      this.hideExtraDays,\n      this.weekStartsOn,\n      this.minDate,\n      this.maxDate,\n    );\n\n    this.weekDaysList = this.weekStartsOn !== undefined ? WEEKDAYS.map((_, i, arr) => {\n      return arr[(i + this.weekStartsOn) % 7];\n    }) : WEEKDAYS.slice();\n\n    month.renderDays();\n\n    if (this.dateMode === 'week' && this.selectedPeriod) {\n      const selectedPeriod = month.updateSelectionForPeriod(this.selectedPeriod);\n\n      if (selectedPeriod) {\n        this.selectedPeriod = selectedPeriod;\n      }\n    }\n\n    return month;\n  }\n\n}\n","<table\n  [class.month-range]=\"dateMode === 'monthrange'\"\n  [class.range-selected]=\"!!selectedRange.from && !!selectedRange.to\">\n  <thead>\n    <tr>\n      @if (seedDate && periodWeeks) {\n        <th class=\"heading\">#</th>\n      }\n      @for (wd of weekDaysList; track wd) {\n        <th class=\"heading\">{{wd}}</th>\n      }\n    </tr>\n  </thead>\n\n  <tbody class=\"calendar calendar-{{ month.monthAndYear }}\" >\n    @for (week of month.weeks; track week) {\n      <tr class=\"week\"\n        [class.first-period-week]=\"week.firstWeekInPeriod\"\n        [class.last-period-week]=\"week.lastWeekInPeriod\"\n        [class.hover]=\"week.period?.mouseOver\"\n        (mouseenter)=\"mouseEnterWeek(week)\"\n        (mouseleave)=\"mouseLeaveWeek(week)\">\n        @if (week.periodLableVisible) {\n          <td class=\"period\"\n            [rowSpan]=\"week.period.countOfWeeks\"\n            [class.selected]=\"week.period.selected\"\n            (click)=\"selectPeriod(week.period)\">\n            {{ week.period.periodId }}\n          </td>\n        }\n        @for (day of week.days; track day) {\n          <td\n            class=\"tile day\"\n            [class.highlight]=\"!day.disabled && !day.surrounding && !!highlightedRangeDays.data[day.date]\"\n            [class.highlight-from]=\"day.date === selectedRange.from && !day.surrounding && selectedRange.from !== selectedRange.to\"\n            [class.highlight-to]=\"day.date === selectedRange.to && !day.surrounding && selectedRange.from !== selectedRange.to\">\n            @if (!day.surrounding || (showSurroundingDays && day.surrounding)) {\n              <div\n                class=\"tile-content\"\n                [style.width]=\"daySize + 'px'\"\n                [style.height]=\"daySize + 'px'\"\n                [class.hidden-day]=\"hideExtraDays && day.surrounding\"\n                [class.now]=\"today.date === day.date && showToday\"\n                [class.enabled]=\"day.enabled\"\n                [class.surrounding]=\"day.surrounding\"\n                [class.selected]=\"(day.selected || day.date === selected.date && !day.surrounding)\"\n                [class.range-from]=\"day.date === selectedRange.from && !day.surrounding && selectedRange.from !== selectedRange.to\"\n                [class.range-to]=\"day.date === selectedRange.to && !day.surrounding && selectedRange.from !== selectedRange.to\"\n                [class.same-range-dates]=\"(hideExtraDays && !day.surrounding) && selectedRange.from === day.date && selectedRange.from === selectedRange.to\"\n                [class.week-mode]=\"dateMode === 'week'\"\n                [class.disabled]=\"day.disabled\"\n                (mouseenter)=\"onMouseEnterDay(day)\"\n                (click)=\"dayClick(day, week)\">\n                {{ day.number }}\n              </div>\n            } @else {\n              <div\n                class=\"empty-tile\"\n                [style.width]=\"daySize + 'px'\"\n                [style.height]=\"daySize + 'px'\">\n              </div>\n            }\n          </td>\n        }\n      </tr>\n    }\n  </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, DoCheck, ElementRef, EventEmitter, Input, IterableDiffers, OnChanges, OnInit, Output, inject } from '@angular/core';\n\nimport { getStartDayDate } from '../../../common/helpers/get-start-day-date';\nimport { splitDateByComponents } from '../../../common/helpers/split-date-by-components';\nimport { NgClass, DatePipe } from '@angular/common';\n\n\n@Component({\n    selector: 'fs-date-picker-time',\n    templateUrl: './time.component.html',\n    styleUrls: ['./time.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgClass, DatePipe],\n})\nexport class FsDatePickerTimeComponent implements OnInit, OnChanges, DoCheck {\n  element = inject(ElementRef);\n  private _iterableDiffers = inject(IterableDiffers);\n\n\n  @Input() public date = null;\n  @Input() public disabledMinutes = [];\n  @Input() public disabledHours = [];\n  @Input() public disabledTimes = [];\n  @Input() public showHeading = false;\n  @Input() public expanded = false;\n  @Input() public minutes = true;\n  @Input() public showNotSelected = true;\n  @Input() public showNow = true;\n\n  @Output() public onChange = new EventEmitter<any>();\n\n  public selected: any = {};\n  public disabledTimeMinutes: any = {};\n  public disabledTimeHours: any = {};\n  public disabledGroupedMinutes: any = {};\n  public nowHour;\n  public nowMinute;\n  public timeHoursCollapsed = [\n    [\n      [0, 1, 2, 3],\n      [4, 5, 6, 7],\n      [8, 9, 10, 11],\n    ],\n    [\n      [12, 13, 14, 15],\n      [16, 17, 18, 19],\n      [20, 21, 22, 23],\n    ],\n  ];\n\n  public timeMinutesCollapsed = [\n    [0, 5],\n    [10, 15],\n    [20, 25],\n    [30, 35],\n    [40, 45],\n    [50, 55],\n  ];\n\n  public timeHoursExpanded = [\n    [0, 12],\n    [1, 13],\n    [2, 14],\n    [3, 15],\n    [4, 16],\n    [5, 17],\n    [6, 18],\n    [7, 19],\n    [8, 20],\n    [9, 21],\n    [10, 22],\n    [11, 23],\n  ];\n\n  public timeMinutesExpanded = [\n    [0, 1, 2, 3, 4],\n    [5, 6, 7, 8, 9],\n    [10, 11, 12, 13, 14],\n    [15, 16, 17, 18, 19],\n    [20, 21, 22, 23, 24],\n    [25, 26, 27, 28, 29],\n    [30, 31, 32, 33, 34],\n    [35, 36, 37, 38, 39],\n    [40, 41, 42, 43, 44],\n    [45, 46, 47, 48, 49],\n    [50, 51, 52, 53, 54],\n    [55, 56, 57, 58, 59],\n  ];\n\n  private disabledMinutesDiffer = null;\n  private disabledHoursDiffer = null;\n  private disabledTimesDiffer = null;\n\n  constructor() {\n    this.disabledHoursDiffer = this._iterableDiffers.find([]).create(null);\n    this.disabledMinutesDiffer = this._iterableDiffers.find([]).create(null);\n    this.disabledTimesDiffer = this._iterableDiffers.find([]).create(null);\n  }\n\n  public ngOnInit() {\n    this.checkDisabledTime();\n    this.nowHour = (new Date()).getHours();\n    this.nowMinute = this.minutes\n      ? (new Date()).getMinutes()\n      : 0;\n  }\n\n  public ngOnChanges(changes) {\n    if (changes) {\n      if(changes.date) {\n        this.selected = splitDateByComponents(this.date);\n        if (!this.minutes) {\n          this.selected.minute = 0;\n\n          if (this.date) {\n            this.date.setMinutes(0);\n          }\n        }\n      }\n\n      if(changes.expanded?.firstChange === false) {\n        setTimeout(() => {\n          const els = this.element.nativeElement.querySelectorAll('.tile.selected');\n\n          els.forEach((el, index) => {\n            setTimeout(() => {\n              el.scrollIntoView({ behavior: 'instant' });\n            });\n          });\n        });\n      }\n    }\n  }\n\n  public ngDoCheck() {\n    if (this.disabledHoursDiffer.diff(this.disabledHours) ||\n    this.disabledMinutesDiffer.diff(this.disabledMinutes) ||\n    this.disabledTimesDiffer.diff(this.disabledTimes)\n    ) {\n      this.checkDisabledTime();\n    }\n  }\n\n  public checkDisabledTime() {\n\n    this.disabledTimeMinutes = {};\n    this.disabledTimeHours = {};\n    this.disabledGroupedMinutes = {};\n\n    if (this.disabledMinutes !== undefined) {\n      for (const range of this.disabledMinutes) {\n        this.addDisabledMinutes(range);\n      }\n    }\n\n    if (this.disabledHours !== undefined) {\n      for (const range of this.disabledHours) {\n        this.addDisabledHours(range);\n      }\n    }\n\n    if (this.disabledTimes !== undefined) {\n      for (const range of this.disabledTimes) {\n\n        const min = Math.min(range[0], range[1]);\n        const max = Math.max(range[0], range[1]);\n\n        const minMinutes = min % 60;\n        const maxMinutes = max % 60;\n\n        const minHour = Math.floor(min / 60);\n        const maxHour = Math.floor(max / 60);\n\n        for (let h = 0; h <= 24; h++) {\n\n          this.disabledGroupedMinutes[h] = {};\n\n          if (h > minHour && h < maxHour)  {\n            this.addDisabledHours(h);\n          } else if (h == minHour && !minMinutes && minHour != maxHour) {\n            this.addDisabledHours(h);\n          }\n\n          if (h >= minHour && h <= maxHour) {\n            for (let m = minMinutes; m < maxMinutes; m++) {\n              const minute = h * m;\n              if (minute >= range[0] && minute <= range[1]) {\n                this.disabledGroupedMinutes[h][m] = true;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  public addDisabledMinutes(range) {\n    const min = Math.min(range[0], range[1]);\n    const max = Math.max(range[0], range[1]);\n    if (Array.isArray(range)) {\n      for (let i = min; i <= max; i++) {\n        this.disabledTimeMinutes[i] = true;\n      }\n    } else {\n      this.disabledTimeMinutes[range] = true;\n    }\n  }\n\n  public addDisabledHours(range) {\n    const min = Math.min(range[0], range[1]);\n    const max = Math.max(range[0], range[1]);\n    if (Array.isArray(range)) {\n      for (let i = min; i <= max; i++) {\n        this.disabledTimeHours[i] = true;\n      }\n    } else {\n      this.disabledTimeHours[range] = true;\n    }\n  }\n\n  public createModel() {\n    if (!this.date) {\n      this.setDate(getStartDayDate());\n    }\n  }\n\n  public setDate(date) {\n    this.date = date;\n    this.onChange.emit(date);\n  }\n\n  public hourClick(hour) {\n    if (this.disabledTimeHours[hour]) {\n      return;\n    }\n\n    let newDate: Date;\n\n    newDate = !this.date ? getStartDayDate() : new Date(this.date);\n\n    newDate.setHours(hour);\n\n    this.setDate(newDate);\n  }\n\n  public minuteClick(minute) {\n    if (this.disabledTimeMinutes[minute]\n      || (this.disabledGroupedMinutes[this.selected.hour] && this.disabledGroupedMinutes[this.selected.hour][minute])\n    ) {\n      return;\n    }\n\n    let newDate: Date;\n\n    newDate = !this.date ? getStartDayDate() : new Date(this.date);\n\n    newDate.setMinutes(minute);\n\n    this.setDate(newDate);\n  }\n\n}\n","@if (showHeading && minutes && showNotSelected) {\n  <div class=\"heading-container\">\n    @if (date) {\n      {{ date | date:'h:mm aa'}}\n    } @else {\n      Time Not Selected\n    }\n  </div>\n}\n\n<div class=\"time-container\">\n  <div class=\"hours-container\">\n    @if (minutes) {\n      <div class=\"heading\">Hour</div>\n    }\n    <div class=\"scroll-container\">\n      @if (expanded) {\n        <table>\n          @for (hours of timeHoursExpanded; track hours) {\n            <tr>\n              @for (hour of hours; track hour) {\n                <td\n                  class=\"tile number hour\">\n                  <div\n                    class=\"tile-content\"\n                    (click)=\"hourClick(hour)\"\n                  [ngClass]=\"{\n                    disabled: disabledTimeHours[hour],\n                    now: showNow && nowHour === hour,\n                    selected: hour === selected.hour\n                  }\">\n                    @if (hour < 12) {\n                      <span>{{ hour ? hour : 12 }}<span class=\"am-pm\">am</span></span>\n                    }\n                    @if (hour >= 12) {\n                      <span>{{ hour === 12 ? 12 : hour-12 }}<span class=\"am-pm\">pm</span></span>\n                    }\n                  </div>\n                </td>\n              }\n            </tr>\n          }\n        </table>\n      }\n      @if (!expanded) {\n        <table>\n          @for (group of timeHoursCollapsed; track group; let i = $index) {\n            <tbody>\n              @for (hours of group; track hours) {\n                <tr>\n                  @for (hour of hours; track hour) {\n                    <td\n                      class=\"tile number hour\">\n                      <div\n                        class=\"tile-content\"\n                        (click)=\"hourClick(hour)\"\n                    [ngClass]=\"{\n                      disabled: disabledTimeHours[hour],\n                      selected: hour === selected.hour,\n                      now: showNow && nowHour === hour\n                    }\">\n                        @if (hour < 12) {\n                          <span>{{ hour ? hour : 12 }}<span class=\"am-pm\">am</span></span>\n                        }\n                        @if (hour >= 12) {\n                          <span>{{ hour === 12 ? 12 : hour-12 }}<span class=\"am-pm\">pm</span></span>\n                        }\n                      </div>\n                    </td>\n                  }\n                </tr>\n              }\n            </tbody>\n          }\n        </table>\n      }\n    </div>\n  </div>\n  @if (minutes) {\n    <div class=\"minutes-container\">\n      <div class=\"heading\">Minute</div>\n      <div class=\"scroll-container\">\n        @if (expanded) {\n          <table>\n            @for (minutes of timeMinutesExpanded; track minutes) {\n              <tr>\n                @for (minute of minutes; track minute) {\n                  <td\n                    class=\"tile number minute\">\n                    <div\n                      class=\"tile-content\"\n                      [ngClass]=\"{\n                        disabled: disabledTimeMinutes[minute] || (disabledGroupedMinutes[selected.hour] && disabledGroupedMinutes[selected.hour][minute]),\n                        selected: minute === selected.minute,\n                        now: showNow && nowMinute === minute\n                      }\"\n                      (click)=\"minuteClick(minute)\">\n                      {{ minute }}\n                    </div>\n                  </td>\n                }\n              </tr>\n            }\n          </table>\n        }\n        @if (!expanded) {\n          <table>\n            @for (minutes of timeMinutesCollapsed; track minutes) {\n              <tr>\n                @for (minute of minutes; track minute) {\n                  <td\n                    class=\"tile number minute\">\n                    <div\n                      class=\"tile-content\"\n                    [ngClass]=\"{\n                      disabled: disabledTimeMinutes[minute] || (disabledGroupedMinutes[selected.hour] && disabledGroupedMinutes[selected.hour][minute]),\n                      selected: minute === selected.minute,\n                      now: showNow && nowMinute === minute\n                    }\"\n                      (click)=\"minuteClick(minute)\">\n                      {{ minute }}\n                    </div>\n                  </td>\n                }\n              </tr>\n            }\n          </table>\n        }\n      </div>\n    </div>\n  }\n</div>","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n\n@Component({\n  selector: 'app-action-buttons',\n  templateUrl: './action-buttons.component.html',\n  styleUrls: ['./action-buttons.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ActionButtonsComponent  {\n\n}\n","<div class=\"button-actions\">\n  <ng-content></ng-content>\n</div>","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport {\n  map,\n  shareReplay,\n} from 'rxjs/operators';\n\nimport { addMonths, isBefore } from 'date-fns';\n\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\nimport { FsDatePickerDialogRef } from '../../../../classes/dialog-ref';\nimport { FsDatePickerHeaderMonthRangeComponent } from '../header-month-range/header-month-range.component';\nimport { FsDatePickerCalendarComponent } from '../../../../../calendar/components/calendar/calendar.component';\nimport { FsDatePickerTimeComponent } from '../../../../../calendar/components/time/time.component';\nimport { ActionButtonsComponent } from '../../../../../components/action-buttons/action-buttons.component';\nimport { MatAnchor } from '@angular/material/button';\nimport { AsyncPipe } from '@angular/common';\n\n\n@Component({\n    selector: 'fs-datepicker-month-range-picker',\n    templateUrl: './month-range-picker.component.html',\n    styleUrls: ['./month-range-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FsDatePickerHeaderMonthRangeComponent,\n        FsDatePickerCalendarComponent,\n        FsDatePickerTimeComponent,\n        ActionButtonsComponent,\n        MatAnchor,\n        AsyncPipe,\n    ],\n})\nexport class FsMonthRangePickerComponent implements OnChanges {\n\n  @Input()\n  public dialogRef: FsDatePickerDialogRef;\n\n  @Input()\n  public datePickerModel: FsDatePickerDialogModel;\n\n  public leftCalendarDate$: Observable<Date>;\n  public rightCalendarDate$: Observable<Date>;\n\n  public modelFrom$: Observable<Date>;\n  public modelTo$: Observable<Date>;\n\n  constructor() {}\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes.datePickerModel?.currentValue\n      && changes.datePickerModel?.firstChange\n      && this.datePickerModel.view === 'monthrange'\n    ) {\n      this._initMonthRangeModels();\n    }\n  }\n\n  /*public viewModeChanged(mode: string) {\n    this.datePickerModel.setCalendarMode(mode);\n  }\n\n  public monthChanged(month: number) {\n    this.datePickerModel.setCalendarMonth(month);\n  }\n\n  public yearChanged(year: number) {\n    this.datePickerModel.setCalendarYear(year);\n  }*/\n\n  public nextMonth(): void {\n    this.datePickerModel.nextMonth();\n  }\n\n  public prevMonth(): void {\n    this.datePickerModel.prevMonth();\n  }\n\n  public dateChanged(date): void {\n    const rangeRef = this.datePickerModel.rangePickerRef;\n    const { startDate, endDate } = rangeRef;\n\n    if (!startDate && !endDate) {\n      rangeRef.updateStartDate(date);\n    } else if (startDate && !endDate) {\n      if (isBefore(date, startDate)) {\n        rangeRef.updateStartDate(date);\n        rangeRef.updateEndDate(null);\n      } else {\n        rangeRef.updateEndDate(date);\n      }\n    } else if (startDate && endDate) {\n      rangeRef.updateStartDate(date);\n      rangeRef.updateEndDate(null);\n    }\n  }\n\n  public periodChanged(date): void {\n    this.datePickerModel.period = date;\n\n    this.close();\n  }\n\n  public setDateMode(mode) {\n    this.datePickerModel.dateMode = mode;\n  }\n\n  public close(): void {\n    this.dialogRef.close();\n  }\n\n  private _initMonthRangeModels(): void {\n    this.leftCalendarDate$ = this.datePickerModel.calendarDate$;\n    this.rightCalendarDate$ = this.datePickerModel.calendarDate$\n      .pipe(\n        map((value) => value && addMonths(value, 1) || null),\n      );\n\n    this.modelFrom$ = this.datePickerModel\n      .rangePickerRef\n      .startDate$\n      .pipe(\n        shareReplay(),\n      );\n\n    this.modelTo$ = this.datePickerModel\n      .rangePickerRef\n      .endDate$\n      .pipe(\n        shareReplay(),\n      );\n  }\n}\n","<div class=\"calendar-container\">\n  <div class=\"date-time\">\n    <div class=\"calendar-view\">\n      <fs-date-picker-header-month-range\n        [calendarDate]=\"leftCalendarDate$ | async\"\n        [nextCalendarDate]=\"rightCalendarDate$ | async\"\n        (goNextMonth)=\"nextMonth()\"\n        (goPrevMonth)=\"prevMonth()\">\n      </fs-date-picker-header-month-range>\n      <div class=\"month-range-container\">\n        <fs-date-picker-calendar\n          [rangeFrom]=\"modelFrom$ | async\"\n          [rangeTo]=\"modelTo$ | async\"\n          [calendarDate]=\"leftCalendarDate$ | async\"\n          [dateMode]=\"datePickerModel.calendarMode$ | async\"\n          [highlightStartDate]=\"modelFrom$ | async\"\n          [highlightEndDate]=\"modelTo$ | async\"\n          [disabledDates]=\"datePickerModel.disabledDates$ | async\"\n          [weekStartsOn]=\"datePickerModel.weekStartsOn\"\n          [showToday]=\"datePickerModel.showNow\"\n          (change)=\"dateChanged($event)\">\n        </fs-date-picker-calendar>\n        <fs-date-picker-calendar\n          [rangeFrom]=\"modelFrom$ | async\"\n          [rangeTo]=\"modelTo$ | async\"\n          [highlightStartDate]=\"modelFrom$ | async\"\n          [highlightEndDate]=\"modelTo$ | async\"\n          [calendarDate]=\"rightCalendarDate$ | async\"\n          [dateMode]=\"datePickerModel.calendarMode$ | async\"\n          [disabledDates]=\"datePickerModel.disabledDates$ | async\"\n          [weekStartsOn]=\"datePickerModel.weekStartsOn\"\n          [showToday]=\"datePickerModel.showNow\"\n          (change)=\"dateChanged($event)\">\n        </fs-date-picker-calendar>\n      </div>\n    </div>\n    @if (datePickerModel.dateMode !== 'year' && datePickerModel.dateMode !== 'month') {\n      @if (datePickerModel.view === 'datetime' || datePickerModel.view === 'time') {\n        <fs-date-picker-time\n          [date]=\"datePickerModel.model$ | async\"\n          [minutes]=\"datePickerModel.minutes\"\n          [showHeading]=\"true\"\n          [disabledTimes]=\"datePickerModel.disabledTimes$ | async\"\n          [showNow]=\"datePickerModel.showNow\"\n          (onChange)=\"dateChanged($event)\">\n        </fs-date-picker-time>\n      }\n    }\n  </div>\n  <app-action-buttons>\n    <a\n      class=\"button-done\"\n      mat-button\n      color=\"primary\"\n      (click)=\"close()\">\n      Done\n    </a>\n  </app-action-buttons>\n</div>","export const MONTHS = [\n  { value: 0, name: 'January', abr: 'Jan' },\n  { value: 1, name: 'February', abr: 'Feb' },\n  { value: 2, name: 'March', abr: 'Mar' },\n  { value: 3, name: 'April', abr: 'Apr' },\n  { value: 4, name: 'May', abr: 'May' },\n  { value: 5, name: 'June', abr: 'June' },\n  { value: 6, name: 'July', abr: 'July' },\n  { value: 7, name: 'August', abr: 'Aug' },\n  { value: 8, name: 'September', abr: 'Sept' },\n  { value: 9, name: 'October', abr: 'Oct' },\n  { value: 10, name: 'November', abr: 'Nov' },\n  { value: 11, name: 'December', abr: 'Dec' }\n];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\n\nimport { MONTHS } from '../../../../../calendar/consts/months';\nimport { NgClass } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconAnchor } from '@angular/material/button';\nimport { FsDateModule } from '@firestitch/date';\n\ninterface IYearListItem {\n  value: number;\n}\n\ninterface IMonthListItem {\n  value: number;\n  name: string;\n  abr: string;\n}\n\n\n@Component({\n    selector: 'fs-date-picker-header',\n    templateUrl: './header.component.html',\n    styleUrls: [\n        './header.component.scss',\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        NgClass,\n        MatIcon,\n        MatIconAnchor,\n        FsDateModule,\n    ],\n})\nexport class FsDatePickerHeaderComponent implements AfterViewInit {\n  private _elRef = inject(ElementRef);\n\n\n  @Input()\n  public viewMode: string;\n\n  @Input()\n  public layout: 'center' | 'left' = 'left';\n\n  @Input()\n  public minYear: number;\n\n  @Input()\n  public maxYear: number;\n\n  @Input()\n  public calendarDate: Date;\n\n  @Input()\n  public monthYearConfigurable = true;\n\n  @Output()\n  public monthChange = new EventEmitter<number>();\n\n  @Output()\n  public yearChange = new EventEmitter<number>();\n\n  @Output()\n  public goNextMonth = new EventEmitter<void>();\n\n  @Output()\n  public goPrevMonth = new EventEmitter<void>();\n\n  @Output()\n  public viewModeChange = new EventEmitter<string>();\n\n  public readonly now = new Date();\n  public readonly monthNow = this.now.getMonth();\n  public readonly yearNow = this.now.getFullYear();\n\n  public yearsList: IYearListItem[] = [];\n  public monthList: IMonthListItem[] = [];\n\n  // this is viewMode that was selected before view was changed to selecting month/year\n  // this logic MUST be moved out of this component to the DialogModel in case when such functionality\n  // will be not only in this component\n  private _mainViewMode: string;\n\n  public get calendarMonth(): number {\n    return this.calendarDate?.getMonth();\n  }\n\n  public get calendarYear(): number {\n    return this.calendarDate?.getFullYear();\n  }\n\n  public get calendarDay(): number {\n    return this.calendarDate?.getDate();\n  }\n\n  public ngAfterViewInit(): void {\n    this._createMonthsList();\n    this._createYearsList();\n  }\n\n  public selectMonth(month: number): void {\n    this.monthChange.emit(month);\n\n    this.setViewMode(this._mainViewMode);\n    this._mainViewMode = null;\n  }\n\n  public selectYear(year: number): void {\n    this.yearChange.emit(year);\n\n    this.setViewMode(this._mainViewMode);\n    this._mainViewMode = null;\n  }\n\n  public setViewMode(mode: string): void {\n    if (mode === 'month') {\n      this._mainViewMode = this.viewMode;\n    }\n\n    this.viewModeChange.emit(mode);\n\n    this._scrollToSelectedYear();\n    this._scrollToSelectedMonth();\n  }\n\n  public nextMonth(): void {\n    this.goNextMonth.emit();\n  }\n\n  public prevMonth(): void {\n    this.goPrevMonth.emit();\n  }\n\n  private _createYearsList(): void {\n    this.yearsList = [];\n\n    for (let y: number = this.minYear; y < this.maxYear; y++) {\n      // const year = new Date().setFullYear(y);\n      this.yearsList.push({ value: y /*disabled: this._isYearDisabled(year)*/ });\n    }\n  }\n\n  private _createMonthsList(): void {\n\n    this.monthList = [];\n\n    for (const item of MONTHS) {\n      const monthItem = {\n        ...item,\n      };\n\n      this.monthList.push(monthItem);\n    }\n  }\n\n  private _scrollToSelectedYear(): void {\n    setTimeout(() => {\n      const years = this._elRef.nativeElement.querySelector('.years');\n      if(years) {\n        const selected = years.querySelector('.year .selected');\n\n        if (selected) {\n          selected.scrollIntoView({ behavior: 'auto', block: 'center' });\n        }\n      }\n    });\n  }\n\n  private _scrollToSelectedMonth(): void {\n    setTimeout(() => {\n      const years = this._elRef.nativeElement.querySelector('.months');\n      if(years) {\n        const selected = years.querySelector('.month .selected');\n\n        if (selected) {\n          selected.scrollIntoView({ behavior: 'auto', block: 'center' });\n        }\n      }\n    });\n  }\n\n}\n","@if (viewMode === 'week' || viewMode === 'date' || viewMode === 'datetime' || viewMode === 'monthrange') {\n  <div\n    class=\"calendar\">\n    <div class=\"heading-container\" [ngClass]=\"{ 'layout-center': layout === 'center' }\">\n      <div class=\"month-year-name\">\n        <a (click)=\"setViewMode('month')\" [ngClass]=\"{ 'not-configurable': !monthYearConfigurable}\">\n          {{ calendarDate | fsDateFormat: 'full-date-dayless-yearless' }}\n          {{ calendarYear }}\n          @if (monthYearConfigurable) {\n            <mat-icon class=\"nav-action\">arrow_drop_down</mat-icon>\n          }\n        </a>\n      </div>\n      <a\n        mat-icon-button\n        (click)=\"prevMonth()\"\n        class=\"nav-action prev\">\n        <mat-icon>navigate_before</mat-icon>\n      </a>\n      <a\n        mat-icon-button\n        (click)=\"nextMonth()\"\n        class=\"nav-action next\">\n        <mat-icon>navigate_next</mat-icon>\n      </a>\n    </div>\n  </div>\n}\n@if (viewMode === 'month' || viewMode === 'year') {\n  <div class=\"months-years\">\n    <div class=\"months\">\n      @for (month of monthList; track month) {\n        <div\n          class=\"month\">\n          <div\n            class=\"tile-content\"\n            (click)=\"selectMonth(month.value)\"\n            [ngClass]=\"{ selected: calendarMonth === month.value }\">\n            {{ month.abr }}\n          </div>\n        </div>\n      }\n    </div>\n    <div class=\"years\">\n      @for (year of yearsList; track year) {\n        <div\n          class=\"year data-year-{{ year.value }}\">\n          <div\n            class=\"tile-content\"\n            (click)=\"selectYear(year.value)\"\n            [class.selected]=\"calendarYear === year.value\">\n            {{ year.value }}\n          </div>\n        </div>\n      }\n      <div class=\"clear\"></div>\n    </div>\n  </div>\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\n\nimport { ThemePalette } from '@angular/material/core';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil, tap } from 'rxjs/operators';\n\nimport { FsDatePickerCalendarComponent } from '../../../../../../libs/calendar/components';\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\nimport { FsDatePickerDialogRef } from '../../../../classes/dialog-ref';\nimport { FsDatePickerHeaderComponent } from '../header/header.component';\nimport { FsDatePickerCalendarComponent as FsDatePickerCalendarComponent_1 } from '../../../../../calendar/components/calendar/calendar.component';\nimport { FsDatePickerTimeComponent } from '../../../../../calendar/components/time/time.component';\nimport { ActionButtonsComponent } from '../../../../../components/action-buttons/action-buttons.component';\nimport { NgTemplateOutlet, AsyncPipe } from '@angular/common';\nimport { MatAnchor } from '@angular/material/button';\n\n\n@Component({\n    selector: 'fs-datepicker-desktop-datepicker',\n    templateUrl: './date-picker.component.html',\n    styleUrls: ['./date-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FsDatePickerHeaderComponent,\n        FsDatePickerCalendarComponent_1,\n        FsDatePickerTimeComponent,\n        ActionButtonsComponent,\n        NgTemplateOutlet,\n        MatAnchor,\n        AsyncPipe,\n    ],\n})\nexport class FsDesktopDatePickerComponent implements AfterViewInit, OnDestroy {\n\n  @ViewChild(FsDatePickerCalendarComponent, { read: ElementRef })\n  public datePickerCalendar: ElementRef;\n\n  @Input()\n  public dialogRef: FsDatePickerDialogRef;\n\n  @Input()\n  public datePickerModel: FsDatePickerDialogModel;\n\n  public timePickerExpanded = false;\n\n  private _destroy$ = new Subject();\n  private _wheelDelta = 0;\n\n  public get doneBtnClass(): ThemePalette {\n    if (this.datePickerModel.isPickerRangeFrom) {\n      return undefined;\n    }\n\n    return 'primary';\n  }\n\n  public viewModeChanged(mode: string) {\n    this.datePickerModel.setCalendarMode(mode);\n  }\n\n  public monthChanged(month: number) {\n    this.datePickerModel.setCalendarMonth(month);\n  }\n\n  public yearChanged(year: number) {\n    this.datePickerModel.setCalendarYear(year);\n  }\n\n  public nextMonth(): void {\n    this.datePickerModel.nextMonth();\n  }\n\n  public prevMonth(): void {\n    this.datePickerModel.prevMonth();\n  }\n\n  public nextCalendar(): void {\n    this.datePickerModel.rangePickerRef.activateToPicker();\n\n    this.close();\n  }\n\n  public prevCalendar(): void {\n    this.datePickerModel.rangePickerRef.activateFromPicker();\n\n    this.close();\n  }\n\n  public dateChanged(date): void {\n    this.datePickerModel.model = date;\n\n    // Keep the dialog open while the user still has time components to pick:\n    // any datetime view, or a time view that includes minutes. An hours-only\n    // time view is complete after a single hour selection, so close it.\n    const keepOpen = this.datePickerModel.isDateTimeView\n      || (this.datePickerModel.isTimeView && this.datePickerModel.minutes);\n\n    if (!keepOpen) {\n      this.close();\n    }\n  }\n\n  public periodChanged(date): void {\n    this.datePickerModel.period = date;\n\n    this.close();\n  }\n\n  public toggleTimeExpand() {\n    this.timePickerExpanded = !this.timePickerExpanded;\n  }\n\n  public setDateMode(mode) {\n    this.datePickerModel.dateMode = mode;\n  }\n\n  public close(): void {\n    this.dialogRef.close();\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n\n  public ngAfterViewInit(): void {\n    if(this.datePickerCalendar) {\n      fromEvent(this.datePickerCalendar.nativeElement, 'wheel')\n        .pipe(\n          tap((event: any) => {\n            event.preventDefault();\n            event.stopPropagation(); \n          }),\n          filter((event: any) => {\n            this._wheelDelta += Math.abs(event.wheelDeltaY);\n\n            return this._wheelDelta > 13;\n          }), \n          takeUntil(this._destroy$),\n        )\n        .subscribe((event) => {\n          this._wheelDelta = 0;\n          if(event.deltaY > 0) {\n            this.nextMonth();\n          } else {\n            this.prevMonth();\n          }\n        });\n    }\n  }\n}\n","<div class=\"calendar-container\">\n  <div class=\"date-time\">\n    <div class=\"calendar-view\">\n      <fs-date-picker-header\n        [calendarDate]=\"datePickerModel.calendarDate$ | async\"\n        [minYear]=\"datePickerModel.minYear\"\n        [maxYear]=\"datePickerModel.maxYear\"\n        [viewMode]=\"datePickerModel.calendarMode$ | async\"\n        (viewModeChange)=\"viewModeChanged($event)\"\n        (monthChange)=\"monthChanged($event)\"\n        (yearChange)=\"yearChanged($event)\"\n        (goNextMonth)=\"nextMonth()\"\n        (goPrevMonth)=\"prevMonth()\">\n      </fs-date-picker-header>\n      @if (dialogRef.components.calendarStart) {\n        <fs-date-picker-calendar\n          [date]=\"datePickerModel.model$ | async\"\n          [calendarDate]=\"datePickerModel.calendarDate$ | async\"\n          [dateMode]=\"datePickerModel.calendarMode$ | async\"\n          [disabledDates]=\"datePickerModel.disabledDates$ | async\"\n          [period]=\"datePickerModel.period\"\n          [seedDate]=\"datePickerModel.seedDate\"\n          [weekStartsOn]=\"datePickerModel.weekStartsOn\"\n          [periodWeeks]=\"datePickerModel.periodWeeks\"\n          [showToday]=\"datePickerModel.showNow\"\n          (change)=\"dateChanged($event)\"\n          (periodChange)=\"periodChanged($event)\">\n        </fs-date-picker-calendar>\n      }\n    </div>\n    @if (datePickerModel.dateMode !== 'year' && datePickerModel.dateMode !== 'month') {\n      @if (datePickerModel.view === 'datetime' || datePickerModel.view === 'time') {\n        <fs-date-picker-time\n          [date]=\"datePickerModel.model$ | async\"\n          [minutes]=\"datePickerModel.minutes\"\n          [disabledTimes]=\"datePickerModel.disabledTimes$ | async\"\n          [expanded]=\"timePickerExpanded\"\n          [showHeading]=\"datePickerModel.view !== 'time'\"\n          [showNow]=\"datePickerModel.showNow\"\n          (onChange)=\"dateChanged($event)\">\n        </fs-date-picker-time>\n      }\n    }\n  </div>\n  <app-action-buttons>\n    @if (!datePickerModel.rangePickerRef) {\n      <ng-container [ngTemplateOutlet]=\"done\"></ng-container>\n    }\n    @if (datePickerModel.rangePickerRef) {\n      @if (datePickerModel.isPickerRangeFrom) {\n        <a\n          mat-button\n          color=\"primary\"\n          (click)=\"nextCalendar()\">\n          Continue\n        </a>\n      }\n      <ng-container [ngTemplateOutlet]=\"done\"></ng-container>\n      @if (datePickerModel.isPickerRangeTo) {\n        <a\n          mat-button\n          (click)=\"prevCalendar()\">\n          Back\n        </a>\n      }\n    }\n    <ng-template #done>\n      <a\n        class=\"button-done\"\n        mat-button\n        [color]=\"doneBtnClass\"\n        (click)=\"close()\">\n        Done\n      </a>\n    </ng-template>\n    @if (datePickerModel.minutes\n      && (datePickerModel.view === 'datetime' || datePickerModel.view === 'time')\n      && !(datePickerModel.view === 'datetime' && datePickerModel.dateMode === 'date')) {\n      <a\n        mat-button\n        class=\"button-more\"\n        (click)=\"toggleTimeExpand()\">\n        @if (!timePickerExpanded) {\n          More\n        } @else {\n          Less\n        }\n      </a>\n    }\n  </app-action-buttons>\n</div>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\n\nimport { FsDatePickerDialogRef } from '../../../../classes/dialog-ref';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { FsMonthRangePickerComponent } from '../month-range-picker/month-range-picker.component';\nimport { FsDesktopDatePickerComponent } from '../date-picker/date-picker.component';\n\n\n@Component({\n    templateUrl: './desktop-dialog.component.html',\n    styleUrls: ['./desktop-dialog.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        NgClass,\n        FsMonthRangePickerComponent,\n        FsDesktopDatePickerComponent,\n        AsyncPipe,\n    ],\n})\nexport class FsDesktopCalendarDialogComponent {\n  protected _dialogRef = inject(FsDatePickerDialogRef);\n\n\n  public get datePickerModel(): FsDatePickerDialogModel {\n    return this._dialogRef.pickerModel;\n  }\n\n  public get dialogRef(): FsDatePickerDialogRef {\n    return this._dialogRef;\n  }\n\n}\n","<div\n  class=\"fs-date-picker-dialog fs-date-picker-container fs-date-picker-dialog-shadow opened {{ 'dialog-view-' + datePickerModel.view }}\"\n  tabindex=\"0\"\n  [ngClass]=\"{\n      'has-view-date': datePickerModel.view === 'date' || datePickerModel.view === 'datetime',\n      'has-view-time': datePickerModel.view === 'time' || datePickerModel.view === 'datetime',\n      'date-mode-date-time': (datePickerModel.calendarMode$ | async) === 'datetime',\n      'date-mode-date': (datePickerModel.calendarMode$ | async) === 'date',\n      'date-mode-time': (datePickerModel.calendarMode$ | async) === 'time',\n      'date-mode-month': (datePickerModel.calendarMode$ | async) === 'month',\n      'date-mode-year': (datePickerModel.calendarMode$ | async) === 'year',\n      'date-mode-week': (datePickerModel.calendarMode$ | async) === 'week'\n    }\">\n\n  @if (datePickerModel.view === 'monthrange') {\n    <fs-datepicker-month-range-picker\n      [dialogRef]=\"dialogRef\"\n      [datePickerModel]=\"datePickerModel\">\n    </fs-datepicker-month-range-picker>\n  } @else {\n    <fs-datepicker-desktop-datepicker\n      [dialogRef]=\"dialogRef\"\n      [datePickerModel]=\"datePickerModel\">\n    </fs-datepicker-desktop-datepicker>\n  }\n\n</div>\n","export function getYearsCycle(\n  monthLabelHeight: number,\n  weekHeight: number,\n  startCycleYear: number,\n): ReadonlyArray<ReadonlyArray<number>> {\n  // Create array of 28 years.\n  // Calendar repeats every 28 years\n  return Array.from(\n    { length: 28 },\n    (_, i) => {\n      // Create array of 12 months for every year\n      return Array.from(\n        { length: 12 },\n        (__, month) => {\n          // Calculate total height of calendar for every month\n          return monthLabelHeight + weekCount(i, month, startCycleYear) * weekHeight\n        });\n    }\n  );\n}\n\n/**\n * Calculate total height of calendars from 0 year to lastYear\n */\nexport function reduceCycle(\n  yearsCycle: ReadonlyArray<ReadonlyArray<number>>,\n  lastYear = 28,\n  lastMonth = 12,\n): number {\n  return yearsCycle.reduce(\n    (total, year, yearIndex) => {\n      if (yearIndex <= lastYear) {\n        const heightOfMonthsInYear = year.reduce((sum, month, monthIndex) => {\n          if (yearIndex < lastYear || (yearIndex === lastYear && monthIndex < lastMonth)) {\n            sum += month;\n          }\n\n          return sum;\n        }, 0);\n\n        total += heightOfMonthsInYear;\n      }\n\n      return total;\n    }, 0);\n}\n\n/**\n * Returns number of weeks for given month\n */\nfunction weekCount(yearCycleIndex: number, month: number, startCycleYear: number): number {\n  const firstOfMonth = new Date(yearCycleIndex + startCycleYear, month, 1);\n  const lastOfMonth = new Date(yearCycleIndex + startCycleYear, month + 1, 0);\n  const days = firstOfMonth.getDay() + lastOfMonth.getDate();\n\n  return Math.ceil(days / 7);\n}\n","import { CdkVirtualScrollViewport, VirtualScrollStrategy } from '@angular/cdk/scrolling';\n\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { getYearsCycle, reduceCycle } from './helpers';\nimport { Injectable } from \"@angular/core\";\n\nexport const YEARS_TO_BE_RENDERED = 200;\nexport const START_CYCLE_YEAR = 1900;\n\nconst RENDER_BUFFER = 500;\n\n// height of month label and week days line\nconst MONTH_LABEL_HEIGHT = 50;\n// height of week row\n// current week height increased to fix centering\nconst WEEK_HEIGHT = 49;\n\nexport interface FsCalendarMobileScrollStrategy extends VirtualScrollStrategy {\n  setInitialDate(date: Date): void;\n  scrollToDate(date: Date, behavior?: ScrollBehavior): void;\n}\n\n\n/**\n * Implementation has been taken from Alex Inkin article, adopted and modified a bit\n * https://indepth.dev/posts/1091/writing-custom-virtual-scroll-strategy\n */\n@Injectable()\nexport class CalendarScrollStrategy implements FsCalendarMobileScrollStrategy {\n\n  private readonly _index$ = new Subject<number>();\n\n  public readonly scrolledIndexChange = this._index$.pipe(distinctUntilChanged());\n\n  private _viewport: CdkVirtualScrollViewport | null = null;\n  private _initialDate: Date;\n  private _firstTimeRender = true;\n\n  private readonly yearsCycle = getYearsCycle(MONTH_LABEL_HEIGHT, WEEK_HEIGHT, START_CYCLE_YEAR);\n  // Total height of 28 years cycle\n  private readonly yearsCycleHeight = reduceCycle(this.yearsCycle);\n\n  public attach(viewport: CdkVirtualScrollViewport): void {\n    this._viewport = viewport;\n\n    // Here is \"7\" is number of \"cycles\" in years range\n    // We are rendering 200 years from 1900 to 2100\n    // Year calendar repeat itself every 28 years\n    // 200 / 28 = 7.14\n    this._viewport.setTotalContentSize(this.yearsCycleHeight * 7);\n  }\n\n  public detach(): void {\n    this._index$.complete();\n    this._viewport = null;\n  }\n\n  public onContentScrolled(): void {\n    if (this._viewport) {\n      this._updateRenderedRange();\n    }\n  }\n\n  public onDataLengthChanged(): void {}\n  public onContentRendered(): void {}\n  public onRenderedOffsetChanged(): void {}\n\n  /**\n   * Initial Date for render can be set on initialization step to reduce calculations\n   */\n  public setInitialDate(date: Date): void {\n    this._initialDate = date;\n  }\n\n  /**\n   * Does scroll to month with provided index\n   */\n  public scrollToIndex(index: number, behavior: ScrollBehavior): void {\n    if (this._viewport) {\n      this._viewport.scrollToOffset(this._getOffsetForIndex(index), behavior);\n    }\n  }\n\n  /**\n   * Does the same thing as scrollToIndex(), but for date\n   */\n  public scrollToDate(date: Date, behavior?: ScrollBehavior): void {\n    if (this._viewport) {\n      this._viewport.scrollToOffset(this._getOffsetForDate(date), behavior);\n    }\n  }\n\n  /**\n   * Update the viewport's rendered range.\n   */\n  private _updateRenderedRange(): void {\n    if (!this._viewport) {\n      return;\n    }\n\n    // This is for support setInitialDate() method.\n    // Should be called only once at first render\n    if (this._firstTimeRender) {\n      if (this._initialDate) {\n        this.scrollToDate(this._initialDate);\n      }\n\n      this._firstTimeRender = false;\n    }\n\n    const currentScrollOffset = this._viewport.measureScrollOffset();\n    const { start: currentStart, end: currentEnd } = this._viewport.getRenderedRange();\n    const viewportSize = this._viewport.getViewportSize();\n    const dataLength = this._viewport.getDataLength();\n    const firstVisibleIndex = this._getIndexForOffset(currentScrollOffset);\n\n    // Usually we are rendering a bit more months than available in view port\n    // It works when user scrolls fast, so we have a bit time to render new months while will scroll over \"buffer\"\n    // So this is why rendered top offset is different from current scroll offset\n    const topScrollBuffer = currentScrollOffset - this._getOffsetForIndex(currentStart)\n\n    let newStart = currentStart;\n    let newEnd = currentEnd;\n\n    if (topScrollBuffer < RENDER_BUFFER && currentStart !== 0) {\n      // Here we have multiplication by 2 because we want to double our render buffer\n      newStart = Math.max(0, this._getIndexForOffset(currentScrollOffset - RENDER_BUFFER * 2))\n      newEnd = Math.min(\n        dataLength,\n        this._getIndexForOffset(currentScrollOffset + viewportSize + RENDER_BUFFER)\n      );\n    } else {\n      const bottomScrollBuffer = this._getOffsetForIndex(currentEnd) - currentScrollOffset - viewportSize;\n\n      if (bottomScrollBuffer < RENDER_BUFFER && currentEnd !== dataLength) {\n        newStart = Math.max(0, this._getIndexForOffset(currentScrollOffset - RENDER_BUFFER));\n\n        newEnd = Math.min(\n          dataLength,\n          // Here we have multiplication by 2 because we want to double our render buffer\n          this._getIndexForOffset(currentScrollOffset + viewportSize + RENDER_BUFFER * 2)\n        );\n      }\n    }\n\n    this._viewport.setRenderedRange({ start: newStart, end: newEnd });\n    this._viewport.setRenderedContentOffset(this._getOffsetForIndex(newStart));\n\n    this._index$.next(firstVisibleIndex);\n  }\n\n  private _getOffsetForIndex(index: number): number {\n    const month = index % 12;\n    const year = (index - month) / 12;\n\n    return this._computeHeight(year, month);\n  }\n\n  private _getIndexForOffset(offset: number): number {\n    // the remaining number of pixels that cannot make up a complete cycle\n    const remainder = offset % this.yearsCycleHeight;\n    const numberOfFullCycles  = (offset - remainder) / this.yearsCycleHeight;\n    const years = numberOfFullCycles * 28; // years from START_CYCLE_YEAR to current offset\n\n    let heightAccumulator = 0;\n\n    // Cycle through every year and month in 28 year cycle\n    for (let year = 0; year < this.yearsCycle.length; year++) {\n      for (let month = 0; month < this.yearsCycle[year].length; month++) {\n        heightAccumulator += this.yearsCycle[year][month];\n\n        if (heightAccumulator - this.yearsCycle[year][month] / 2 > remainder) {\n          return Math.max((years + year) * 12 + month, 0);\n        }\n      }\n    }\n\n    return YEARS_TO_BE_RENDERED;\n  }\n\n  private _getOffsetForDate(date: Date): number {\n    if (!date) {\n      return 0;\n    }\n\n    const year = date.getFullYear();\n    const month = date.getMonth();\n    const index = (year - START_CYCLE_YEAR) * 12 + month;\n\n    return this._getOffsetForIndex(index);\n  }\n\n  // Compute height for given year and month, but year starts from 0 to YEARS_TO_BE_RENDERED\n  private _computeHeight(year: number, month?: number): number {\n    const remainder = year % 28; // number of year in cycle of 28 repeated years\n    const remainderHeight = reduceCycle(this.yearsCycle, remainder, month);\n    const fullCycles = (year - remainder) / 28;\n    const fullCyclesHeight = fullCycles * this.yearsCycleHeight;\n\n    return fullCyclesHeight + remainderHeight;\n  }\n}\n","import { CollectionViewer, DataSource } from '@angular/cdk/collections';\n\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport {\n  YEARS_TO_BE_RENDERED,\n  START_CYCLE_YEAR\n} from './calendar-scroll-strategy';\n\n\nexport class FsCalendarDataSource extends DataSource<Date> {\n\n  private _cachedMonths: Date[] = [];\n  private _fetchedPages = new Set<number>();\n\n  private readonly _dataStream = new BehaviorSubject<Date[]>(this._cachedMonths);\n  private readonly _subscription = new Subscription();\n\n  constructor() {\n    super();\n\n    this._prepareMonthsList();\n    this._dataStream.next(this._cachedMonths);\n  }\n\n  public connect(collectionViewer: CollectionViewer): Observable<Date[]> {\n    const sub = collectionViewer\n      .viewChange\n      .subscribe((range) => {\n        for (let i = range.start; i <= range.end; i++) {\n          this._fetchPage(i);\n        }\n      });\n\n    this._subscription.add(sub);\n\n    return this._dataStream;\n  }\n\n  disconnect(): void {\n    this._subscription.unsubscribe();\n  }\n\n  private _fetchPage(page: number) {\n    if (this._fetchedPages.has(page)) {\n      return;\n    }\n\n    this._fetchedPages.add(page);\n\n    const yearOffset = Math.floor(page / 12);\n    const monthOffset = page % 12;\n\n    const month = new Date(\n      yearOffset + START_CYCLE_YEAR,\n      monthOffset,\n      1\n    );\n\n    this._cachedMonths.splice(\n      page,\n      1,\n      month,\n    );\n\n    this._dataStream.next(this._cachedMonths);\n  }\n\n  private _prepareMonthsList(): void {\n    this._cachedMonths = Array\n      .from(\n        {length: YEARS_TO_BE_RENDERED * 12 }, // number of rendered years multiply by number of months in year\n        (_, i) => {\n          return new Date(Math.floor(i / 12) + START_CYCLE_YEAR, i % 12, 1);\n        }\n      );\n\n  }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\n\n\nimport { MONTHS } from '../../../../../calendar/consts/months';\nimport { NgClass } from '@angular/common';\n\ninterface IYearListItem {\n  value: number;\n}\n\ninterface IMonthListItem {\n  value: number;\n  name: string;\n  abr: string;\n}\n\n\n@Component({\n    selector: 'fs-date-picker-mobile-header',\n    templateUrl: './header.component.html',\n    styleUrls: [\n        './header.component.scss',\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgClass],\n})\nexport class FsDatePickerMobileHeaderComponent implements AfterViewInit {\n  private _elRef = inject(ElementRef);\n\n\n  @Input()\n  public viewMode: string;\n\n  @Input()\n  public minYear: number;\n\n  @Input()\n  public maxYear: number;\n\n  @Input()\n  public disabledDates: [Date, Date][];\n\n  @Input()\n  public calendarDate: Date;\n\n  @Output()\n  public monthChange = new EventEmitter<number>();\n\n  @Output()\n  public yearChange = new EventEmitter<number>();\n\n  @Output()\n  public goNextMonth = new EventEmitter<void>();\n\n  @Output()\n  public goPrevMonth = new EventEmitter<void>();\n\n  @Output()\n  public viewModeChange = new EventEmitter<string>();\n\n  public readonly now = new Date();\n  public readonly monthNow = this.now.getMonth();\n  public readonly yearNow = this.now.getFullYear();\n\n  public yearsList: IYearListItem[] = [];\n  public monthList: IMonthListItem[] = [];\n\n  public get calendarMonth(): number {\n    return this.calendarDate?.getMonth();\n  }\n\n  public get calendarYear(): number {\n    return this.calendarDate?.getFullYear();\n  }\n\n  public get calendarDay(): number {\n    return this.calendarDate?.getDate();\n  }\n\n  public ngAfterViewInit(): void {\n    this._createMonthsList();\n    this._createYearsList();\n  }\n\n  public selectMonth(month: number): void {\n    this.monthChange.emit(month);\n\n    this.setViewMode('date');\n  }\n\n  public selectYear(year: number): void {\n    this.yearChange.emit(year);\n\n    this.setViewMode('date');\n  }\n\n  public setViewMode(mode: string): void {\n    this.viewModeChange.emit(mode);\n\n    if (mode === 'year') {\n      this._scrollToSelectedYear();\n    }\n  }\n\n  public nextMonth(): void {\n    this.goNextMonth.emit();\n  }\n\n  public prevMonth(): void {\n    this.goPrevMonth.emit();\n  }\n\n  private _createYearsList(): void {\n    this.yearsList = [];\n\n    for (let y: number = this.minYear; y < this.maxYear; y++) {\n      this.yearsList.push({ value: y });\n    }\n  }\n\n  private _createMonthsList(): void {\n    this.monthList = [];\n\n    for (const item of MONTHS) {\n      const monthItem = {\n        ...item,\n      };\n\n      this.monthList.push(monthItem);\n    }\n  }\n\n  private _scrollToSelectedYear(): void {\n    setTimeout(() => {\n      const years = this._elRef.nativeElement.querySelector('.years');\n      if(years) {\n        const selected = years.querySelector('.year.selected');\n\n        if (selected) {\n          years.scrollTop = selected.offsetTop;\n        }\n      }\n    }, 50);\n  }\n\n}\n","@if (viewMode === 'month') {\n  <div class=\"months\">\n    @for (month of monthList; track month) {\n      <div>\n        <div\n          class=\"tile-content\"\n          (click)=\"selectMonth(month.value)\"\n          class=\"month\"\n        [ngClass]=\"{\n            now: monthNow === month.value,\n            selected: calendarMonth === month.value\n          }\">\n          {{ month.abr }}\n        </div>\n      </div>\n    }\n  </div>\n}\n\n@if (viewMode === 'year') {\n  <div class=\"years\">\n    @for (year of yearsList; track year) {\n      <div\n        class=\"year data-year-{{ year.value }}\">\n        <div\n          class=\"tile-content\"\n          (click)=\"selectYear(year.value)\"\n          [class.now]=\"yearNow === year.value\"\n          [class.selected]=\"calendarYear === year.value\">\n          {{ year.value }}\n        </div>\n      </div>\n    }\n    <div class=\"clear\"></div>\n  </div>\n}\n","import { ChangeDetectionStrategy, Component, Input, ElementRef, inject } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsDateModule } from '@firestitch/date';\n\n\n@Component({\n    selector: 'fs-date-picker-mobile-header-month-range',\n    templateUrl: './header-month-range.component.html',\n    styleUrls: [\n        './header-month-range.component.scss',\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [MatIcon, FsDateModule],\n})\nexport class FsDatePickerMobileHeaderMonthRangeComponent {\n  private _elRef = inject(ElementRef);\n\n\n  @Input()\n  public rangeFrom: Date;\n\n  @Input()\n  public rangeTo: Date;\n\n}\n","@if (rangeFrom || rangeTo) {\n  @if (rangeFrom) {\n    {{ rangeFrom | fsDateFormat: 'day-date' }}\n  } @else {\n    Not Selected\n  }\n  &nbsp;\n  @if (rangeTo) {\n    <mat-icon>\n      arrow_forward\n    </mat-icon>\n    &nbsp;\n    {{ rangeTo | fsDateFormat: 'day-date' }}\n  }\n} @else {\n  Not Selected\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild, inject } from '@angular/core';\n\nimport { CdkVirtualScrollViewport, VIRTUAL_SCROLL_STRATEGY, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatTabGroup } from '@angular/material/tabs';\n\nimport { Observable, Subject } from 'rxjs';\nimport {\n  delay,\n  filter,\n  shareReplay,\n  takeUntil,\n} from 'rxjs/operators';\n\nimport { isBefore } from 'date-fns';\n\nimport { RangePickerRef } from '../../../../../../app/classes/range-picker-ref';\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\nimport { FsDatePickerDialogRef } from '../../../../classes/dialog-ref';\n\nimport { FsCalendarDataSource } from './calendar-data-source';\nimport { CalendarScrollStrategy, FsCalendarMobileScrollStrategy } from './calendar-scroll-strategy';\nimport { FsDatePickerMobileHeaderComponent } from '../header/header.component';\nimport { FsDatePickerMobileHeaderMonthRangeComponent } from '../header-month-range/header-month-range.component';\nimport { FsDatePickerCalendarComponent } from '../../../../../calendar/components/calendar/calendar.component';\nimport { AsyncPipe } from '@angular/common';\nimport { FsDateModule } from '@firestitch/date';\n\n\n@Component({\n    selector: 'fs-datepicker-mobile-scroll-calendar',\n    templateUrl: './virtual-scroll-calendar.component.html',\n    styleUrls: ['./virtual-scroll-calendar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: VIRTUAL_SCROLL_STRATEGY,\n            useClass: CalendarScrollStrategy,\n        },\n    ],\n    standalone: true,\n    imports: [\n        FsDatePickerMobileHeaderComponent,\n        FsDatePickerMobileHeaderMonthRangeComponent,\n        CdkVirtualScrollViewport,\n        CdkVirtualForOf,\n        FsDatePickerCalendarComponent,\n        AsyncPipe,\n        FsDateModule,\n    ],\n})\nexport class FsDatePickerVirtualScrollCalendarComponent implements OnInit, OnChanges, OnDestroy {\n  private _el = inject(ElementRef);\n  private _bottomSheetRef = inject(MatBottomSheetRef);\n  private _scrollStrategy = inject<FsCalendarMobileScrollStrategy>(VIRTUAL_SCROLL_STRATEGY);\n\n\n  @Input()\n  public datePickerModel: FsDatePickerDialogModel;\n\n  @Input()\n  public autoClose = true;\n\n  @Input()\n  public parentTabGroup: MatTabGroup;\n\n  @Input()\n  public parentTabIndex: number;\n\n  @ViewChild(CdkVirtualScrollViewport, { static: true })\n  public virtualScroll: CdkVirtualScrollViewport;\n\n  public modelFrom$: Observable<Date>;\n  public modelTo$: Observable<Date>;\n\n  public dataSource = new FsCalendarDataSource();\n\n  private _dialogRef: FsDatePickerDialogRef;\n  private _activeScrollIndex: number;\n  private _destroy$ = new Subject<void>();\n\n  public get dialogRef(): FsDatePickerDialogRef {\n    return this._dialogRef;\n  }\n\n  public get rangePickerRef(): RangePickerRef | null {\n    return this.datePickerModel.rangePickerRef;\n  }\n\n  public ngOnInit() {\n    this._scrollStrategy.setInitialDate(this.datePickerModel.model || new Date());\n    // this._scrollToClosestMonth();\n\n    if (this.parentTabGroup) {\n      this._listenTabIndexChange();\n    }\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.datePickerModel?.currentValue\n      && changes.datePickerModel?.firstChange\n      && this.datePickerModel.view === 'monthrange') {\n      this._initMonthRangeModels();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n\n  public dateChanged(date): void {\n\n    if (this.datePickerModel.view !== 'monthrange') {\n      this.datePickerModel.model = date;\n      this.close();\n    } else {\n      this.monthRangeChange(date);\n    }\n  }\n\n  public monthRangeChange(date): void {\n    const rangeRef = this.rangePickerRef;\n    const { startDate, endDate } = rangeRef;\n\n    if (!startDate && !endDate) {\n      rangeRef.updateStartDate(date);\n    } else if (startDate && !endDate) {\n      if (isBefore(date, startDate)) {\n        rangeRef.updateStartDate(date);\n        rangeRef.updateEndDate(null);\n      } else {\n        rangeRef.updateEndDate(date);\n      }\n    } else if (startDate && endDate) {\n      rangeRef.updateStartDate(date);\n      rangeRef.updateEndDate(null);\n    }\n  }\n\n  public close(): void {\n    if (this.autoClose) {\n      this._bottomSheetRef.dismiss();\n    }\n  }\n\n  public scollIndexChange(activeIndex: number): void {\n    this._activeScrollIndex = activeIndex;\n  }\n\n  /*\n  // Best feature ever :( but it was decided to disable it...\n  private _scrollToClosestMonth(): void {\n    const touchstart$ = fromEvent(\n      this.virtualScroll.elementRef.nativeElement,\n      'touchstart',\n    );\n\n    const touchend$ = fromEvent(\n      this.virtualScroll.elementRef.nativeElement,\n      'touchend',\n    );\n\n    const scrollDebounceTime = 80;\n\n    touchstart$\n      .pipe(\n        switchMap(() => touchend$),\n        switchMap(() =>\n          race<unknown>(\n            this.virtualScroll.elementScrolled(),\n            timer(scrollDebounceTime),\n          ).pipe(\n            debounceTime(scrollDebounceTime * 2),\n            take(1),\n            takeUntil(touchstart$),\n          ),\n        ),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.virtualScroll.scrollToIndex(this._activeScrollIndex, 'smooth');\n      });\n  }\n*/\n\n  private _initMonthRangeModels(): void {\n    this.modelFrom$ = this.datePickerModel\n      .rangePickerRef\n      .startDate$\n      .pipe(\n        shareReplay(),\n      );\n\n    this.modelTo$ = this.datePickerModel\n      .rangePickerRef\n      .endDate$\n      .pipe(\n        shareReplay(),\n      );\n  }\n\n  private _listenTabIndexChange(): void {\n    this.parentTabGroup.selectedIndexChange\n      .pipe(\n        filter((index) => index === this.parentTabIndex),\n        delay(0),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this._scrollStrategy.scrollToDate(this.datePickerModel.model || new Date());\n      });\n  }\n}\n","<div class=\"header\">\n  @if (datePickerModel.view !== 'monthrange') {\n    <fs-date-picker-mobile-header\n      [calendarDate]=\"datePickerModel.model$ | async\"\n      [minYear]=\"datePickerModel.minYear\"\n      [maxYear]=\"datePickerModel.maxYear\"\n      [viewMode]=\"datePickerModel.calendarMode$ | async\"\n      [disabledDates]=\"datePickerModel.disabledDates$ | async\">\n    </fs-date-picker-mobile-header>\n  } @else {\n    <fs-date-picker-mobile-header-month-range\n      [rangeFrom]=\"modelFrom$ | async\"\n      [rangeTo]=\"modelTo$ | async\">\n    </fs-date-picker-mobile-header-month-range>\n  }\n\n</div>\n\n<cdk-virtual-scroll-viewport class=\"view-port\" (scrolledIndexChange)=\"scollIndexChange($event)\">\n  <div *cdkVirtualFor=\"let item of dataSource\">\n    <div class=\"month-header\">\n      {{ item | fsDateFormat: 'full-date-dayless' }}\n    </div>\n    <fs-date-picker-calendar\n      [date]=\"datePickerModel.model$ | async\"\n      [calendarDate]=\"item\"\n      [rangeFrom]=\"modelFrom$ | async\"\n      [rangeTo]=\"modelTo$ | async\"\n      [highlightStartDate]=\"modelFrom$ | async\"\n      [highlightEndDate]=\"modelTo$ | async\"\n      [dateMode]=\"datePickerModel.calendarMode$ | async\"\n      [disabledDates]=\"datePickerModel.disabledDates$ | async\"\n      [hideExtraDays]=\"true\"\n      [period]=\"datePickerModel.period\"\n      [seedDate]=\"datePickerModel.seedDate\"\n      [weekStartsOn]=\"datePickerModel.weekStartsOn\"\n      [periodWeeks]=\"datePickerModel.periodWeeks\"\n      [showToday]=\"datePickerModel.showNow\"\n      (change)=\"dateChanged($event)\">\n    </fs-date-picker-calendar>\n  </div>\n</cdk-virtual-scroll-viewport>\n","import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\n\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\n\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\nimport { FsDatePickerTimeComponent } from '../../../../../calendar/components/time/time.component';\nimport { AsyncPipe } from '@angular/common';\n\n\n@Component({\n    selector: 'fs-datepicker-mobile-timepicker',\n    templateUrl: './time-picker.component.html',\n    styleUrls: ['./time-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [FsDatePickerTimeComponent, AsyncPipe],\n})\nexport class FsMobileTimePickerComponent {\n  private _bottomSheet = inject(MatBottomSheetRef);\n\n\n  @Input()\n  public datePickerModel: FsDatePickerDialogModel;\n\n  @Input()\n  public autoClose = true;\n\n  @Input()\n  public showNotSelected = true;\n\n  public dateChanged(date): void {\n    this.datePickerModel.model = date;\n\n    // Hours-only time view is complete after a single hour selection, so close.\n    if (!this.datePickerModel.minutes) {\n      this.close();\n    }\n  }\n\n  public close(): void {\n    if (this.autoClose) {\n      this._bottomSheet.dismiss();\n    }\n  }\n\n}\n","<fs-date-picker-time\n  class=\"fs-date-picker-dialog fs-date-picker-container\"\n  [date]=\"datePickerModel.model$ | async\"\n  [minutes]=\"datePickerModel.minutes\"\n  [disabledTimes]=\"datePickerModel.disabledTimes$ | async\"\n  [expanded]=\"datePickerModel.timeExpanded$ | async\"\n  [showNotSelected]=\"showNotSelected\"\n  [showNow]=\"datePickerModel.showNow\"\n  (onChange)=\"dateChanged($event)\">\n</fs-date-picker-time>\n","import {\n  ChangeDetectionStrategy,\n  Component, EventEmitter,\n  Input, Output,\n} from '@angular/core';\n\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\nimport { MatTabGroup, MatTab, MatTabLabel } from '@angular/material/tabs';\nimport { FsDatePickerVirtualScrollCalendarComponent } from '../virtual-scroll-calendar/virtual-scroll-calendar.component';\nimport { FsMobileTimePickerComponent } from '../time-picker/time-picker.component';\nimport { AsyncPipe, LowerCasePipe, DatePipe } from '@angular/common';\n\n@Component({\n    selector: 'fs-datepicker-mobile-datetime-picker',\n    templateUrl: './date-time-picker.component.html',\n    styleUrls: ['./date-time-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        MatTabGroup,\n        MatTab,\n        MatTabLabel,\n        FsDatePickerVirtualScrollCalendarComponent,\n        FsMobileTimePickerComponent,\n        AsyncPipe,\n        LowerCasePipe,\n        DatePipe,\n    ],\n})\nexport class FDatePickerMobileDatetimePickerComponent {\n\n  @Input()\n  public datePickerModel: FsDatePickerDialogModel;\n\n  @Output()\n  public tabChange = new EventEmitter<number>();\n\n  public selectedDateTimeTabChange(index: number): void {\n    this.tabChange.emit(index);\n  }\n\n}\n","<mat-tab-group\n  mat-stretch-tabs\n  dynamicHeight\n  (selectedIndexChange)=\"selectedDateTimeTabChange($event)\"\n  #tabGroup>\n  <mat-tab>\n    <ng-template mat-tab-label>\n      @if (datePickerModel.model$ | async; as model) {\n        {{ model | date: 'MMM d, yyyy' }}\n      } @else {\n        Date\n      }\n    </ng-template>\n    <fs-datepicker-mobile-scroll-calendar\n      [datePickerModel]=\"datePickerModel\"\n      [autoClose]=\"false\"\n      [parentTabGroup]=\"tabGroup\"\n      [parentTabIndex]=\"0\">\n    </fs-datepicker-mobile-scroll-calendar>\n  </mat-tab>\n  <mat-tab>\n    <ng-template mat-tab-label>\n      @if (datePickerModel.model$ | async; as model) {\n        {{ model | date: 'h:mm' }}\n        {{ model | date: 'aaa' | lowercase }}\n      } @else {\n        Time\n      }\n    </ng-template>\n    <fs-datepicker-mobile-timepicker\n      [datePickerModel]=\"datePickerModel\"\n      [autoClose]=\"false\"\n      [showNotSelected]=\"false\">\n    </fs-datepicker-mobile-timepicker>\n  </mat-tab>\n</mat-tab-group>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\n\nimport { FsDatePickerDialogModel } from '../../../../../dialog/classes/dialog-model';\nimport { FsDatePickerDialogRef } from '../../../../classes/dialog-ref';\nimport { FsDatePickerVirtualScrollCalendarComponent } from '../virtual-scroll-calendar/virtual-scroll-calendar.component';\nimport { FsMobileTimePickerComponent } from '../time-picker/time-picker.component';\nimport { FDatePickerMobileDatetimePickerComponent } from '../date-time-picker/date-time-picker.component';\nimport { ActionButtonsComponent } from '../../../../../components/action-buttons/action-buttons.component';\nimport { MatAnchor } from '@angular/material/button';\nimport { AsyncPipe } from '@angular/common';\n\n\n@Component({\n    templateUrl: './mobile-dialog.component.html',\n    styleUrls: ['./mobile-dialog.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FsDatePickerVirtualScrollCalendarComponent,\n        FsMobileTimePickerComponent,\n        FDatePickerMobileDatetimePickerComponent,\n        ActionButtonsComponent,\n        MatAnchor,\n        AsyncPipe,\n    ],\n})\nexport class FsMobileCalendarDialogComponent {\n  private _data = inject(MAT_BOTTOM_SHEET_DATA);\n  private _bottomSheetRef = inject(MatBottomSheetRef);\n\n\n  public selectedDateTimeTab = 0;\n\n  private readonly _dialogRef: FsDatePickerDialogRef;\n\n  constructor() {\n    this._dialogRef = this._data.dateDialogRef;\n  }\n\n  public get datePickerModel(): FsDatePickerDialogModel {\n    return this._dialogRef.pickerModel;\n  }\n\n  public get dialogRef(): FsDatePickerDialogRef {\n    return this._dialogRef;\n  }\n\n  public toggleTimeExpand() {\n    this.datePickerModel.timeExpanded = !this.datePickerModel.timeExpanded;\n  }\n\n  public selectedDateTimeTabChange(index) {\n    this.selectedDateTimeTab = index;\n  }\n\n  public close(): void {\n    this._bottomSheetRef.dismiss();\n  }\n\n  public datetimeTabChanged(index: number) {\n    this.selectedDateTimeTab = index;\n  }\n}\n","<div class=\"fs-date-picker-dialog fs-date-picker-container\">\n  <div class=\"calendar-container\">\n    @switch (datePickerModel.view) {\n      @case ('date') {\n        <fs-datepicker-mobile-scroll-calendar [datePickerModel]=\"datePickerModel\"></fs-datepicker-mobile-scroll-calendar>\n      }\n      @case ('week') {\n        <fs-datepicker-mobile-scroll-calendar [datePickerModel]=\"datePickerModel\"></fs-datepicker-mobile-scroll-calendar>\n      }\n      @case ('monthrange') {\n        <fs-datepicker-mobile-scroll-calendar [datePickerModel]=\"datePickerModel\"></fs-datepicker-mobile-scroll-calendar>\n      }\n      @case ('time') {\n        <fs-datepicker-mobile-timepicker [datePickerModel]=\"datePickerModel\"></fs-datepicker-mobile-timepicker>\n      }\n      @case ('datetime') {\n        <fs-datepicker-mobile-datetime-picker\n          [datePickerModel]=\"datePickerModel\"\n          (tabChange)=\"datetimeTabChanged($event)\">\n        </fs-datepicker-mobile-datetime-picker>\n      }\n    }\n  </div>\n</div>\n<app-action-buttons>\n  <a\n    mat-button\n    (click)=\"close()\"\n    color=\"primary\">\n    Done\n  </a>\n  @if (datePickerModel.minutes &&\n    ((datePickerModel.isDateTimeView && selectedDateTimeTab !== 0) ||\n    datePickerModel.isTimeView\n    )) {\n    <a\n      (click)=\"toggleTimeExpand()\"\n      mat-button\n      class=\"button-more\">\n      {{ (datePickerModel.timeExpanded$ | async) ? 'Less' : 'More' }}\n    </a>\n  }\n</app-action-buttons>","export const MONTHS = [\n  { value: 0, name: 'January', abr: 'Jan' },\n  { value: 1, name: 'February', abr: 'Feb' },\n  { value: 2, name: 'March', abr: 'Mar' },\n  { value: 3, name: 'April', abr: 'Apr' },\n  { value: 4, name: 'May', abr: 'May' },\n  { value: 5, name: 'June', abr: 'June' },\n  { value: 6, name: 'July', abr: 'July' },\n  { value: 7, name: 'August', abr: 'Aug' },\n  { value: 8, name: 'September', abr: 'Sept' },\n  { value: 9, name: 'October', abr: 'Oct' },\n  { value: 10, name: 'November', abr: 'Nov' },\n  { value: 11, name: 'December', abr: 'Dec' }\n];\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild, inject } from '@angular/core';\n\nimport { ScrollPickerComponent, FsScrollPickerModule } from '@firestitch/scroll-picker';\n\nimport { getDaysInMonth, isValid, startOfDay } from 'date-fns';\n\nimport { MONTHS } from '../../consts/months';\nimport { FormsModule } from '@angular/forms';\n\n\n@Component({\n    selector: 'fs-date-scroll-picker',\n    templateUrl: './date-scroll-picker.component.html',\n    styleUrls: ['./date-scroll-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [FsScrollPickerModule, FormsModule],\n})\nexport class FsDateScrollPickerDialogComponent implements OnInit, OnDestroy {\n  element = inject(ElementRef);\n  private _cdRef = inject(ChangeDetectorRef);\n  private _renderer = inject(Renderer2);\n  private _document = inject(DOCUMENT);\n\n\n  @Input()\n  public model: Date | null;\n\n  @Input()\n  public showMonth: boolean;\n\n  @Input()\n  public showDay: boolean;\n\n  @Input()\n  public showYear: boolean;\n\n  @Input()\n  public minYear: number;\n\n  @Input()\n  public maxYear: number;\n\n  private _maxDate: Date;\n  private _minDate: Date;\n\n  @Input()\n  public set maxDate(value: Date) {\n    this._maxDate = value && startOfDay(value);\n  }\n\n  @Input()\n  public set minDate(value: Date) {\n    this._minDate = value && startOfDay(value);\n  }\n\n  @Output()\n  public changed = new EventEmitter<Date>();\n\n  @ViewChild('monthRef')\n  public monthRef: ScrollPickerComponent;\n\n  @ViewChild('yearRef')\n  public yearRef: ScrollPickerComponent;\n\n  @ViewChild('dayRef')\n  public dayRef: ScrollPickerComponent;\n\n  public years: any[] = [];\n  public months: any[] = [];\n\n  public month;\n  public day;\n  public year;\n  public maxDay = 0;\n  public minDay = 1;\n  public disabledMinYear = null;\n  public disabledMaxYear = null;\n  public disabledMinMonth = null;\n  public disabledMaxMonth = null;\n  public disabledMinDay = null;\n  public disabledMaxDay = null;\n\n  public get disabledValue(): boolean {\n    return this.monthRef?.valueDisabled\n        || this.yearRef?.valueDisabled\n        || this.dayRef?.valueDisabled;\n  }\n\n  public get maxDate(): Date {\n    return this._maxDate;\n  }\n\n  public get minDate(): Date {\n    return this._minDate;\n  }\n\n  public ngOnInit(): void {\n    const modelValue: Date = this.model;\n\n    this._generateYearsArray();\n    this._generateMonthArray();\n    this._generateDaysArray();\n\n    if (modelValue && isValid(modelValue)) {\n      this._setDate(modelValue);\n    } else {\n\n      const date = new Date();\n\n      if (!this.showDay) {\n        date.setDate(1);\n      }\n\n      if (!this.showMonth) {\n        date.setMonth(1);\n      }\n\n      if (!this.showYear) {\n        date.setFullYear(0);\n      }\n\n      this._setDate(date);\n    }\n\n    this._pullToRefreshDisable();\n  }\n\n  public ngOnDestroy(): void {\n    this._pullToRefreshDefault();\n  }\n\n  public change() {\n    if (!this.year) {\n      this.year = this.showYear ? this.years[0] : 0;\n    }\n\n    if (!this.month) {\n      this.month = this.months[0].value;\n    }\n\n    if (!this.day) {\n      this.day = 1;\n    }\n\n    const daysInMonth = getDaysInMonth(new Date(this.year, this.month));\n    if (this.day > daysInMonth) {\n      this.day = daysInMonth;\n    }\n\n    const date = new Date(this.year, this.month, this.day);\n\n    this.changed.emit(date);\n\n    this._cdRef.markForCheck();\n  }\n\n  public changeMonth() {\n    this._generateDaysArray();\n    this.change();\n  }\n\n  public changeYear() {\n    this._generateDaysArray();\n    if (this.maxDate) {\n      this._generateMonthArray();\n    }\n    this.change();\n  }\n\n  private _generateDaysArray() {\n    this.dayRef?.updateValues();\n\n    this._generateMaxDaysArray();\n    this._generateMinDaysArray();\n  }\n\n  private _generateMaxDaysArray() {\n    this.maxDay = 0;\n\n    const maxDate = this.maxDate;\n    const maxDay = maxDate && maxDate.getDate();\n    const maxMonth = maxDate && maxDate.getMonth();\n    const maxYear = maxDate && maxDate.getFullYear();\n\n    this.disabledMaxDay = undefined;\n    if (this.maxDate) {\n      if (maxYear === this.year && maxMonth === this.month) {\n        this.disabledMaxDay = maxDay;\n      } else {\n        this._setMaxDay(maxDay, maxMonth, maxYear);\n\n        if(this.year === this.maxDate?.getFullYear() && this.month > this.maxDate?.getMonth()) {\n          this.disabledMaxDay = 0;\n        }\n      }\n    } else {\n      this._setMaxDay(maxDay, maxMonth, maxYear);\n    }\n\n    if (!this.maxDay) {\n      this.maxDay = 31;\n    }\n  }\n\n  private _generateMinDaysArray() {\n    const minDate = this.minDate;\n    const minDay = minDate && minDate.getDate();\n    const minMonth = minDate && minDate.getMonth();\n    const minYear = minDate && minDate.getFullYear();\n\n    this.disabledMinDay = undefined;\n    if (this.minDate) {\n      if (minYear === this.year && minMonth === this.month) {\n        this.disabledMinDay = minDay;\n      } else {\n        if (this.year < this.minDate?.getFullYear()) {\n          this.disabledMaxDay = 1;\n        }\n\n        this.disabledMinDay = 1;\n      }\n    }\n  }\n\n  private _setDate(date: Date) {\n    if (date) {\n      this.day = date.getDate();\n      this.year = date.getFullYear();\n      this.month = date.getMonth();\n    }\n  }\n\n  private _setMaxDay(maxDay, maxMonth, maxYear): void {\n    if (this.month) {\n      if (maxDay && maxMonth === this.month.value && maxYear === this.year) {\n        this.maxDay = maxDay;\n      } else {\n        const daysInMonth = getDaysInMonth(new Date(this.year, this.month));\n        this.maxDay = daysInMonth;\n      }\n    }\n  }\n\n  private _generateMonthArray() {\n    this.months = MONTHS;\n\n    if (this.maxDate) {\n      if (this.maxDate?.getFullYear() === this.year) {\n        const maxMonth = this.maxDate.getMonth();\n\n        this.disabledMaxMonth = maxMonth;\n\n      } else if (this.year > this.maxDate?.getFullYear()) {\n        this.disabledMaxMonth = 0;\n      } else {\n        this.disabledMaxMonth = 12;\n      }\n    } else {\n      this.disabledMaxMonth = 12;\n    }\n\n    if (this.minDate) {\n      if (this.minDate.getFullYear() === this.year) {\n        const minMonth = this.minDate.getMonth();\n        this.disabledMinMonth = minMonth;\n      } else {\n        if (this.year < this.minDate.getFullYear()) {\n          this.disabledMaxMonth = -1;\n          this.disabledMaxDay = -1;\n        }\n        this.disabledMinMonth = null;\n      }\n    }\n  }\n\n  private _generateYearsArray() {\n    let minYear = this.minYear;\n    const maxYear = this.maxYear;\n\n    this.disabledMaxYear = this.maxDate ? this.maxDate?.getFullYear() : maxYear;\n\n    this.disabledMinYear = this.minDate ? this.minDate?.getFullYear() : minYear;\n\n    for ( minYear; minYear <= maxYear; minYear++ ) {\n      this.years.push({\n        name: minYear,\n        value: minYear,\n      });\n    }\n  }\n\n  private _pullToRefreshDisable(): void {\n    this._renderer.addClass(this._document.body, 'fs-date-picker-prevent-pull-to-refresh');\n  }\n\n  private _pullToRefreshDefault(): void {\n    this._renderer.removeClass(this._document.body, 'fs-date-picker-prevent-pull-to-refresh');\n  }\n\n}\n","<div class=\"scroll-pickers\">\n  @if (showMonth) {\n    <fs-scroll-picker\n      #monthRef\n      class=\"month\"\n      name=\"month\"\n      [values]=\"months\"\n      [disabledMin]=\"disabledMinMonth - 1\"\n      [disabledMax]=\"disabledMaxMonth + 1\"\n      [(ngModel)]=\"month\"\n      (ngModelChange)=\"changeMonth()\">\n    </fs-scroll-picker>\n  }\n  @if (showDay) {\n    <fs-scroll-picker\n      #dayRef\n      class=\"day\"\n      name=\"day\"\n      [valuesMin]=\"minDay\"\n      [valuesMax]=\"maxDay\"\n      [disabledMin]=\"disabledMinDay - 1\"\n      [disabledMax]=\"disabledMaxDay + 1\"\n      [(ngModel)]=\"day\"\n      (ngModelChange)=\"change()\">\n    </fs-scroll-picker>\n  }\n  @if (showYear) {\n    <fs-scroll-picker\n      #yearRef\n      class=\"year\"\n      name=\"year\"\n      [values]=\"years\"\n      [disabledMin]=\"disabledMinYear - 1\"\n      [disabledMax]=\"disabledMaxYear + 1\"\n      [(ngModel)]=\"year\"\n      (ngModelChange)=\"changeYear()\">\n    </fs-scroll-picker>\n  }\n</div>\n","import {\n  Component,\n  ViewChild\n} from '@angular/core';\n\nimport { FsDateScrollPickerDialogComponent } from '../date-scroll-picker';\n\n\n@Component({ template: '' })\nexport class FsDateScrollPickerBaseComponent {\n  \n  public disabledSubmit = false;\n\n  @ViewChild('scrollPickerRef')\n  public scrollPickerRef: FsDateScrollPickerDialogComponent;\n\n  protected _date: Date | null;\n\n  public change(date: Date | null) {\n    this._date = date;\n\n    if (this.scrollPickerRef?.maxDate && date > this.scrollPickerRef?.maxDate) {\n      this.disabledSubmit = true;\n    } else if (this.scrollPickerRef?.minDate && date < this.scrollPickerRef?.minDate) {\n      this.disabledSubmit = true;\n    } else {\n      this.disabledSubmit = false;\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { MatAnchor } from '@angular/material/button';\n\nimport { ActionButtonsComponent } from '../../../../../components/action-buttons/action-buttons.component';\nimport { FsDatePickerDialogRef } from '../../../../../dialog/classes/dialog-ref';\nimport { FsDateScrollPickerBaseComponent } from '../date-scroll-picker-base';\nimport { FsDateScrollPickerDialogComponent } from '../date-scroll-picker/date-scroll-picker.component';\n\n\n@Component({\n  templateUrl: './date-scroll-picker-desktop.component.html',\n  styleUrls: ['./date-scroll-picker-desktop.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsDateScrollPickerDialogComponent,\n    ActionButtonsComponent,\n    MatAnchor,\n  ],\n})\nexport class FsDateScrollPickerDesktopComponent extends FsDateScrollPickerBaseComponent {\n  protected _dialogRef = inject(FsDatePickerDialogRef);\n\n\n  public get dialogRef(): FsDatePickerDialogRef {\n    return this._dialogRef;\n  }\n\n  public close(save = false) {\n    if (save) {\n      this._dialogRef.updateValue(this._date);\n    }\n\n    this._dialogRef.close();\n  }\n\n}\n","<div\n    class=\"fs-date-picker-dialog fs-date-picker-container fs-date-picker-dialog-shadow fs-date-picker-range\"\n    tabindex=\"0\">\n  <div class=\"wrap\">\n    <fs-date-scroll-picker\n      #scrollPickerRef\n      [model]=\"dialogRef.pickerModel.model\"\n      [minYear]=\"dialogRef.options.minYear\"\n      [minDate]=\"dialogRef.options.minDate\"\n      [maxDate]=\"dialogRef.options.maxDate\"\n      [maxYear]=\"dialogRef.options.maxYear\"\n      [showDay]=\"dialogRef.options.showDay\"\n      [showMonth]=\"dialogRef.options.showMonth\"\n      [showYear]=\"dialogRef.options.showYear\"\n      (changed)=\"change($event)\">\n    </fs-date-scroll-picker>\n    <app-action-buttons>\n      <a\n          mat-button\n          color=\"primary\"\n          [disabled]=\"disabledSubmit\"\n          (click)=\"close(true)\">\n        Select\n      </a>\n      <a\n          mat-button\n          (click)=\"close(false)\">\n        Cancel\n      </a>\n    </app-action-buttons>\n  </div>\n</div>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\n\nimport { FsDatePickerDialogRef } from '../../../../classes/dialog-ref';\nimport { FsDateScrollPickerBaseComponent } from '../date-scroll-picker-base';\nimport { FsDateScrollPickerDialogComponent } from '../date-scroll-picker/date-scroll-picker.component';\nimport { MatAnchor } from '@angular/material/button';\n\n\n@Component({\n    templateUrl: './date-scroll-picker-mobile.component.html',\n    styleUrls: ['./date-scroll-picker-mobile.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [FsDateScrollPickerDialogComponent, MatAnchor],\n})\nexport class FsDateScrollPickerMobileComponent extends FsDateScrollPickerBaseComponent {\n  private _data = inject(MAT_BOTTOM_SHEET_DATA);\n  private _bottomSheetRef = inject<MatBottomSheetRef<any>>(MatBottomSheetRef);\n\n  \n  private readonly _dialogRef: FsDatePickerDialogRef;\n\n  constructor() {\n    super();\n    this._dialogRef = this._data.dateDialogRef;\n  }\n\n  public get dialogRef(): FsDatePickerDialogRef {\n    return this._dialogRef;\n  }\n\n  public close(save = false) {\n    if (save) {\n      this._dialogRef.updateValue(this._date);\n    }\n\n    this._bottomSheetRef.dismiss();\n  }\n\n}\n","<div\n    class=\"fs-date-picker-dialog fs-date-picker-container fs-date-picker-range\"\n    tabindex=\"0\">\n  <div class=\"wrap\">\n    <fs-date-scroll-picker\n      #scrollPickerRef\n      [model]=\"dialogRef.pickerModel.model\"\n      [minYear]=\"dialogRef.options.minYear\"\n      [maxDate]=\"dialogRef.options.maxDate\"\n      [maxYear]=\"dialogRef.options.maxYear\"\n      [showDay]=\"dialogRef.options.showDay\"\n      [showMonth]=\"dialogRef.options.showMonth\"\n      [showYear]=\"dialogRef.options.showYear\"\n      (changed)=\"change($event)\">\n    </fs-date-scroll-picker>\n    <div class=\"buttton-actions\">\n      <a\n          mat-button\n          color=\"primary\"\n          (click)=\"close(true)\"\n          [disabled]=\"disabledSubmit\">\n        Select\n      </a>\n      <a\n          mat-button\n          (click)=\"close(false)\">\n        Cancel\n      </a>\n    </div>\n  </div>\n</div>","import { DOCUMENT } from '@angular/common';\nimport { createEnvironmentInjector, ElementRef, EnvironmentInjector, Injectable, Injector, inject } from '@angular/core';\n\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { MatBottomSheet, MatBottomSheetRef } from '@angular/material/bottom-sheet';\n\nimport { fromEvent, Observable } from 'rxjs';\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  finalize,\n  map,\n  skip,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n} from 'rxjs/operators';\n\nimport { FsDesktopCalendarDialogComponent } from '../../dialog/modules/desktop-dialog-container/components/desktop-dialog/desktop-dialog.component';\nimport { FsMobileCalendarDialogComponent } from '../../dialog/modules/mobile-dialog-container/components/mobile-dialog/mobile-dialog.component';\nimport { FsDateScrollPickerDesktopComponent } from '../../dialog/modules/scroll-picker-dialog-container/components/date-scroll-picker-desktop';\nimport { FsDatePickerDialogRef } from '../classes/dialog-ref';\nimport { IDialogFactoryOptions } from '../interfaces/dialog-factory-data.interface';\nimport { FsDateScrollPickerMobileComponent } from '../modules/scroll-picker-dialog-container/components/date-scroll-picker-mobile';\n\nconst mobileBreakpoint = '(max-width: 737px)';\n\n\n@Injectable()\nexport class FsDatePickerDialogFactory {\n  private _overlay = inject(Overlay);\n  private _breakpointObserver = inject(BreakpointObserver);\n  private _bottomSheet = inject(MatBottomSheet, { optional: true });\n  private _document = inject(DOCUMENT);\n\n\n  private _targetElRef: ElementRef;\n  private _resolutionChanged = false;\n\n  private get _escapeKeyPressed$(): Observable<any> {\n    return fromEvent(this._document, 'keydown')\n      .pipe(\n        filter((event: any) => {\n          return event.code === 'Escape';\n        }),\n      );\n  }\n\n  public openDatePicker(\n    el: ElementRef,\n    injector: Injector,\n    options: IDialogFactoryOptions,\n  ): FsDatePickerDialogRef {\n    this._targetElRef = el;\n\n    const dateDialogRef = new FsDatePickerDialogRef(options);\n\n    this._openDatePicker(injector, 'date', dateDialogRef);\n\n    return dateDialogRef;\n  }\n\n  public openDateScrollPicker(\n    el: ElementRef,\n    injector: Injector,\n    options: IDialogFactoryOptions,\n  ): FsDatePickerDialogRef {\n    this._targetElRef = el;\n\n    const dateDialogRef = new FsDatePickerDialogRef(options);\n\n    this._openDatePicker(injector, 'scroll', dateDialogRef);\n\n    return dateDialogRef;\n  }\n\n  private _openDatePicker(\n    injector: Injector,\n    type: 'date' | 'scroll',\n    dialogRef: FsDatePickerDialogRef,\n  ): void {\n    const layoutChanges = this._breakpointObserver\n      .observe([\n        mobileBreakpoint,\n      ])\n      .pipe(\n        map((result) => {\n          return result.breakpoints[mobileBreakpoint];\n        }),\n      );\n\n    layoutChanges\n      .pipe(\n        map((mobile) => {\n          return this._openDatePickerComponent(\n            mobile,\n            injector,\n            type,\n            dialogRef,\n          );\n        }),\n        tap((ref) => {\n          dialogRef.pickerOverlayRef.setActiveOverlay(ref);\n        }),\n        take(1),\n        switchMap(() => {\n          return layoutChanges\n            .pipe(\n              skip(1),\n            );\n        }),\n        debounceTime(100),\n        distinctUntilChanged(),\n        tap(() => {\n          this._resolutionChanged = true;\n        }),\n        tap(() => {\n          dialogRef.pickerOverlayRef.close();\n        }),\n        map((mobile) => {\n          return this._openDatePickerComponent(\n            mobile,\n            injector,\n            type,\n            dialogRef,\n          );\n        }),\n        tap((ref) => {\n          dialogRef.pickerOverlayRef.setActiveOverlay(ref);\n        }),\n        tap(() => {\n          this._resolutionChanged = false;\n        }),\n        finalize(() => {\n          dialogRef.close();\n        }),\n        takeUntil(\n          dialogRef.pickerOverlayRef.destroy$\n            .pipe(\n              filter(() => !this._resolutionChanged),\n            ),\n        ),\n        takeUntil(dialogRef.close$),\n        takeUntil(this._escapeKeyPressed$),\n      )\n      .subscribe();\n  }\n\n  private _openDatePickerComponent(\n    mobile: boolean,\n    injector: Injector,\n    type: 'date' | 'scroll',\n    dialogRef: FsDatePickerDialogRef,\n  ): OverlayRef | MatBottomSheetRef {\n    if (mobile) {\n      if (type === 'date') {\n        return this._openDatePickerMobile(dialogRef);\n      }\n\n      return this._openDateScrollPickerMobile(dialogRef);\n\n    }\n    if (type === 'date') {\n      return this._openDatePickerDesktop(injector, dialogRef);\n    }\n\n    return this._openDateScrollPickerDesktop(injector, dialogRef);\n  }\n\n  private _createOverlay(el: ElementRef, config: OverlayConfig = {}) {\n    config = {\n      ...config,\n      positionStrategy: this._createPopupPositionStrategy(el),\n      scrollStrategy: this._overlay.scrollStrategies.reposition(),\n      hasBackdrop: true,\n      backdropClass: [],\n      panelClass: 'fs-datepicker-overlay-pane',\n    };\n\n    const overlayConfig = new OverlayConfig(config);\n\n    return this._overlay.create(overlayConfig);\n  }\n\n  private _createInjector(\n    parentInjector: Injector,\n    previewRef: FsDatePickerDialogRef,\n  ): Injector {\n    const providers = [\n      { provide: FsDatePickerDialogRef, useValue: previewRef },\n    ];\n\n    return createEnvironmentInjector(providers, parentInjector as EnvironmentInjector);\n  }\n\n  /**\n   * The `fsDatePicker` directive lives on the `<input>`, which is inset from the\n   * mat-form-field border by the field's padding — and that padding differs between\n   * appearances (`outline` vs `fill`), so anchoring the overlay to the input makes\n   * the visible gap inconsistent.\n   *\n   * We keep the input as the connected origin but measure the distance from each\n   * input edge to the corresponding edge of the field box (`.mat-mdc-text-field-wrapper`),\n   * then offset the overlay by that distance. This aligns the panel with the visible\n   * field border on every side, consistently across appearances.\n   *\n   * Returns zero offsets when there is no form field (e.g. a bare trigger).\n   */\n  private _getFieldOffsets(el: ElementRef): { start: number; end: number; top: number; bottom: number } {\n    const nativeEl = el?.nativeElement as HTMLElement;\n    const wrapper = nativeEl?.closest?.('.mat-mdc-text-field-wrapper');\n\n    if (!wrapper) {\n      return { start: 0, end: 0, top: 0, bottom: 0 };\n    }\n\n    const inputRect = nativeEl.getBoundingClientRect();\n    const wrapperRect = wrapper.getBoundingClientRect();\n\n    return {\n      // negative: shifts a left-aligned overlay out to the field's left border\n      start: wrapperRect.left - inputRect.left,\n      // positive: shifts a right-aligned overlay out to the field's right border\n      end: wrapperRect.right - inputRect.right,\n      // negative: lifts an above-the-field overlay up to the field's top border\n      top: wrapperRect.top - inputRect.top,\n      // positive: drops a below-the-field overlay down to the field's bottom border\n      bottom: wrapperRect.bottom - inputRect.bottom,\n    };\n  }\n\n  private _createPopupPositionStrategy(el: ElementRef): PositionStrategy {\n    const field = this._getFieldOffsets(el);\n    // Consistent gap between the field box and the panel, measured from the\n    // visible field border (not the input) so it looks the same on every appearance.\n    const gap = 4;\n\n    return this._createBasePopupPositionStrategy(el)\n      .withPositions([\n        /**\n         * Preferred: drop below the field, left edge aligned with the form-field border.\n         * |[field]         |\n         * |[overlay        |\n         * |        ]       |\n         */\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetX: field.start,\n          offsetY: field.bottom + gap,\n        },\n        /**\n         * Below the field, right edge aligned with the form-field border —\n         * used when a left-aligned overlay would run off the right edge.\n         * |         [field]|\n         * |        overlay]|\n         * |       [        |\n         */\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top',\n          offsetX: field.end,\n          offsetY: field.bottom + gap,\n        },\n        /**\n         * Above the field, left aligned — used when there is no room below.\n         * |       [        |\n         * |        ]       |\n         * |[field]         |\n         */\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n          offsetX: field.start,\n          offsetY: field.top - gap,\n        },\n        /**\n         * Above the field, right aligned — no room below and close to the right edge.\n         * |       [        |\n         * |        ]       |\n         * |         [field]|\n         */\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom',\n          offsetX: field.end,\n          offsetY: field.top - gap,\n        },\n        /**\n         * Last resort: not enough vertical room either way — center next to the field.\n         * |     [field]    |\n         */\n        {\n          originX: 'end',\n          originY: 'center',\n          overlayX: 'center',\n          overlayY: 'center',\n        },\n      ]);\n  }\n\n  private _createBasePopupPositionStrategy(el: ElementRef): FlexibleConnectedPositionStrategy {\n    return this._overlay.position()\n      .flexibleConnectedTo(el)\n      .withGrowAfterOpen(false)\n      .withFlexibleDimensions(false)\n      .withPush(false);\n  }\n\n  private _openDatePickerDesktop (\n    parentInjector: Injector,\n    previewRef: FsDatePickerDialogRef,\n  ): OverlayRef {\n    const overlayRef = this._createOverlay(\n      this._targetElRef,\n      {\n        positionStrategy: this._createBasePopupPositionStrategy(this._targetElRef),\n      },\n    );\n    const injector = this._createInjector(parentInjector, previewRef);\n    const containerPortal = new ComponentPortal(FsDesktopCalendarDialogComponent, undefined, injector);\n    overlayRef.attach(containerPortal);\n\n    return overlayRef;\n  }\n\n  private _openDatePickerMobile(dialogRef: FsDatePickerDialogRef): MatBottomSheetRef {\n    return this._bottomSheet.open(FsMobileCalendarDialogComponent, {\n      data: {\n        dateDialogRef: dialogRef,\n      },\n      restoreFocus: false,\n    });\n  }\n\n  private _openDateScrollPickerDesktop (\n    parentInjector: Injector,\n    previewRef: FsDatePickerDialogRef,\n  ): OverlayRef {\n    const overlayRef = this._createOverlay(\n      this._targetElRef,\n      { scrollStrategy: this._overlay.scrollStrategies.block() },\n    );\n    const injector = this._createInjector(parentInjector, previewRef);\n    const containerPortal = new ComponentPortal(FsDateScrollPickerDesktopComponent, undefined, injector);\n    overlayRef.attach(containerPortal);\n\n    return overlayRef;\n  }\n\n  private _openDateScrollPickerMobile(dialogRef: FsDatePickerDialogRef): MatBottomSheetRef {\n    return this._bottomSheet.open(FsDateScrollPickerMobileComponent, {\n      data: {\n        dateDialogRef: dialogRef,\n      },\n      restoreFocus: false,\n    });\n  }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\n\n\n\nimport { FsDatePickerDialogFactory } from './services/dialog-factory.service';\n\n\n@NgModule({\n  imports: [],\n})\nexport class FsDatePickerDialogModule {\n  public static forRoot(): ModuleWithProviders<FsDatePickerDialogModule> {\n    return {\n      ngModule: FsDatePickerDialogModule,\n      providers: [\n        FsDatePickerDialogFactory,\n      ],\n    };\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { IFsDatePickerConfig } from '../interfaces/datepicker-config.interface';\nimport { WeekDay } from '../../libs/common/enums/week-day.enum';\n\n\nexport const FS_DATEPICKER_CONFIG = new InjectionToken<IFsDatePickerConfig>('fs.datepicker-config', {\n  providedIn: 'root',\n  factory: () => {\n    return {\n      weekStartsOn: WeekDay.Sunday,\n    }\n  }\n});\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { isDate, isValid, setDate, startOfDay } from 'date-fns';\n\nimport { PickerViewType } from '../../../libs/common/enums/picker-view-type.enum';\nimport { WeekDays } from '../../../libs/common/types/week-days.type';\nimport { FsDatePickerDialogModel } from '../../../libs/dialog/classes/dialog-model';\nimport { IFsDatePickerConfig } from '../../interfaces/datepicker-config.interface';\nimport { FS_DATEPICKER_CONFIG } from '../../providers/datepicker-config.provider';\nimport { FsDatePickerHeaderComponent } from '../../../libs/dialog/modules/desktop-dialog-container/components/header/header.component';\nimport { FsDatePickerCalendarComponent } from '../../../libs/calendar/components/calendar/calendar.component';\nimport { AsyncPipe } from '@angular/common';\n\n\n@Component({\n    selector: 'fs-date-calendar-picker',\n    templateUrl: './calendar-picker.component.html',\n    styleUrls: [\n        './calendar-picker.component.scss',\n    ],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => FsDateCalendarPickerComponent),\n            multi: true,\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        FsDatePickerHeaderComponent,\n        FsDatePickerCalendarComponent,\n        AsyncPipe,\n    ],\n})\nexport class FsDateCalendarPickerComponent implements OnInit, OnChanges, ControlValueAccessor {\n  private _globalConfig = inject<IFsDatePickerConfig>(FS_DATEPICKER_CONFIG, { optional: true });\n\n\n  @Input()\n  public today = true;\n\n  @Input()\n  public disabledDates: [Date, Date][];\n\n  @Input()\n  public enabledDates: [Date, Date][];\n\n  @Input()\n  public daySize;\n\n  @Input()\n  public headerLayout: 'center' | 'left' = 'center';\n\n  @Input()\n  public weekStartsOn: WeekDays;\n\n  @Input()\n  public focusDate: Date;\n\n  @Input() \n  public minDate = null;\n\n  @Input() \n  public maxDate = null;\n\n  @Output()\n  public monthChange = new EventEmitter<Date>();\n\n  private readonly _datePickerModel =\n    new FsDatePickerDialogModel({ view: PickerViewType.Date });\n\n  private _onChange: (value: Date | null) => void;\n  private _onTouch: () => void;\n\n  public ngOnInit(): void {\n    this._init();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.focusDate && changes.focusDate.currentValue !== changes.focusDate.previousValue) {\n      this._goToFocusDate();\n    }\n  }\n\n  public writeValue(date: Date | null) {\n    this._datePickerModel.model = date;\n  }\n\n  public registerOnChange(fn: (value: Date | null) => void) {\n    this._onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void) {\n    this._onTouch = fn;\n  }\n\n  public get datePickerModel(): FsDatePickerDialogModel {\n    return this._datePickerModel;\n  }\n\n  public dateChanged(date: Date): void {\n    this.datePickerModel.model = date;\n    this._onChange(this.datePickerModel.model);\n  }\n\n  public nextMonth(): void {\n    this.datePickerModel.nextMonth();\n    this.monthChange.emit(setDate(startOfDay(this.datePickerModel.calendarDate),1));\n  }\n\n  public prevMonth(): void {\n    this.datePickerModel.prevMonth();\n    this.monthChange.emit(setDate(startOfDay(this.datePickerModel.calendarDate),1));\n  }\n\n  private _init(): void {\n    this._datePickerModel.weekStartsOn =\n      this.weekStartsOn ?? this._globalConfig.weekStartsOn;\n  }\n\n  private _goToFocusDate(): void {\n    if (isDate(this.focusDate) && isValid(this.focusDate)) {\n      this._datePickerModel.goToMongth(this.focusDate.getMonth());\n      this._datePickerModel.goToYear(this.focusDate.getFullYear());\n    }\n  }\n}\n","<div class=\"fs-date-picker-container calendar-container\">\n  <fs-date-picker-header\n    [calendarDate]=\"datePickerModel.calendarDate$ | async\"\n    [minYear]=\"datePickerModel.minYear\"\n    [maxYear]=\"datePickerModel.maxYear\"\n    [viewMode]=\"datePickerModel.calendarMode$ | async\"\n    [monthYearConfigurable]=\"false\"\n    [layout]=\"headerLayout\"\n    (goNextMonth)=\"nextMonth()\"\n    (goPrevMonth)=\"prevMonth()\">\n  </fs-date-picker-header>\n  <fs-date-picker-calendar\n    [date]=\"datePickerModel.model$ | async\"\n    [calendarDate]=\"datePickerModel.calendarDate$ | async\"\n    [dateMode]=\"datePickerModel.calendarMode$ | async\"\n    [period]=\"datePickerModel.period\"\n    [seedDate]=\"datePickerModel.seedDate\"\n    [weekStartsOn]=\"datePickerModel.weekStartsOn\"\n    [periodWeeks]=\"datePickerModel.periodWeeks\"\n    [showToday]=\"today\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    [daySize]=\"daySize\"\n    [enabledDates]=\"enabledDates\"\n    [disabledDates]=\"disabledDates\"\n    (change)=\"dateChanged($event)\">\n  </fs-date-picker-calendar>\n</div>\n","import { isValid } from 'date-fns';\n\nexport function parseDate(value: string): Date | null {\n  let parsedDate = new Date(Date.parse(value));\n\n  if (isValid(parsedDate)) {\n    return parsedDate;\n  }\n\n  parsedDate = new Date(Date.parse(value));\n\n  if (isValid(parsedDate)) {\n    return parsedDate;\n  }\n\n  return null;\n}\n","import {\n  ChangeDetectorRef, Directive, ElementRef, HostBinding, inject,\n  Injector, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges,\n} from '@angular/core';\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { WeekDays } from '../../libs/common/types/week-days.type';\nimport { FsDatePickerDialogRef } from '../../libs/dialog/classes/dialog-ref';\nimport { IFsDatePickerConfig } from '../interfaces/datepicker-config.interface';\nimport { FS_DATEPICKER_CONFIG } from '../providers/datepicker-config.provider';\n\n\n@Directive()\nexport class FsPickerBaseComponent implements OnInit, OnChanges, OnDestroy {\n\n  @HostBinding('class.fs-input-disabled')\n  public disabled = false;\n\n  @Input()\n  @HostBinding('class.fs-input-readonly')\n  public readonly = false;\n\n  @HostBinding('class.fs-input-editable')\n  @Input()\n  public editable = true;\n\n  @Input()\n  public weekStartsOn: WeekDays;\n\n  /**\n   * Show the \"now\" indicator (the dot marking today's date and the current\n   * hour/minute). Inherited by every picker so it works across all scenarios.\n   */\n  @Input()\n  public showNow = true;\n\n  @Input()\n  public width: string;\n\n  @Input()\n  public icon = true;\n\n  @Input()\n  public clear = true;\n\n  protected _formField = inject(MatFormField);\n  protected _renderer: Renderer2;\n  protected _elementRef: ElementRef;\n  protected readonly _globalConfig: IFsDatePickerConfig;\n  protected _dateDialogRef: FsDatePickerDialogRef;\n  protected _cdRef: ChangeDetectorRef;\n  protected _focusAfterClose = false;\n  protected _fm = inject(FocusMonitor);\n  protected _injector = inject(Injector);\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n  ) {\n    this._renderer = this._injector.get(Renderer2);\n    this._cdRef = this._injector.get(ChangeDetectorRef);\n    this._elementRef = this. _injector.get(ElementRef);\n    this._globalConfig = this._injector.get(FS_DATEPICKER_CONFIG);\n    this._elementRef.nativeElement.setAttribute('autocomplete', 'off');\n  }\n\n  public get destroy$(): Observable<void> {\n    return this._destroy$.asObservable();\n  }\n\n  public get matInput(): MatInput {\n    return this._injector.get(MatInput);\n  }\n\n  public get el(): HTMLInputElement {\n    return this._elementRef.nativeElement;\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.editable) {\n      this.matInput.readonly = !changes.editable.currentValue;\n    }\n  }\n\n  public ngOnInit(): void {\n    if (!this.editable) {\n      this.matInput.readonly = true;\n    }\n\n    this._init();\n  }\n\n  public ngOnDestroy() {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n\n  protected _doFocus(): void {\n    this._fm.focusVia(this._elementRef, 'program');\n  }\n\n  protected close() {\n    if (this._dateDialogRef) {\n      this._dateDialogRef.close();\n    }\n  }\n\n  protected _init(): void {\n    this.weekStartsOn = this.weekStartsOn ?? this._globalConfig.weekStartsOn;\n  }\n\n  protected _applyWidth(): void {\n    if (!this.width) {\n      return;\n    }\n\n    const el = this._formField.getConnectedOverlayOrigin().nativeElement;\n\n    if (this.width.endsWith('%')) {\n      el.style.width = this.width;\n    } else {\n      let width = parseInt(this.width, 10);\n\n      if (this.clear) {\n        width += 48;\n      }\n\n      if (this.icon) {\n        width += 32;\n      }\n\n      el.style.width = `${width}px`;\n    }\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\n\nimport { fromEvent } from 'rxjs';\nimport { filter, take, takeUntil, tap } from 'rxjs/operators';\n\n\nimport { isEqual, isValid } from 'date-fns';\nimport { fromZonedTime } from 'date-fns-tz';\n\n\nimport { parseDate } from '../helpers/parse-date';\n\nimport { FsPickerBaseComponent } from './picker-base-component';\n\n\n@Directive()\nexport abstract class FsDatePickerBaseComponent<D = any> extends FsPickerBaseComponent\n  implements Validator, ControlValueAccessor, OnDestroy, OnInit {\n\n  @Input() public ngModelOptions: {\n    name?: string;\n    standalone?: boolean;\n    updateOn?: 'change' | 'blur' | 'submit';\n  };\n\n  @Input()\n  public set timezone(value: string) {\n    this._timezone = value;\n\n    this.writeValue(this._originValue);\n  }\n\n  public get timezone(): string {\n    return this._timezone;\n  }\n\n  @Output('change')\n  public change$ = new EventEmitter<Date>();\n\n  @Output('selected')\n  public selected$ = new EventEmitter<Date>();\n\n  @Output('closed')\n  public closed$ = new EventEmitter<void>();\n\n  @Output('blured')\n  public blured$ = new EventEmitter<Date>();\n\n  public opened = false;\n\n  protected _timezone: string;\n  protected _originValue: Date | null; // before timezone\n  protected _value;\n  protected _onChange: (value: any) => void;\n  protected _onTouch: () => void;\n  protected _validator: ValidatorFn | null;\n\n  private _validatorOnChange: () => void;\n  private _lastValueValid = false;\n\n  public registerOnChange(fn: (value: any) => any): void {\n    this._onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => any): void {\n    this._onTouch = fn;\n  }\n\n  public registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this._applyWidth();\n    this._validator = Validators.compose([this._parseValidator]);\n    fromEvent(this.el, 'focus')\n      .pipe(\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.open();\n        this._doFocus();\n      });\n\n    fromEvent(this.el, 'keydown')\n      .pipe(\n        filter(() => this.editable),\n        tap(() => this.close()),\n        filter((event: KeyboardEvent) => ['Tab', 'Enter', 'Escape'].includes(event.key)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        if (event.key === 'Enter') {\n          this.inputChange(this.el.value);\n        }\n\n        this.close();\n        this.el.blur();\n      });\n  }\n\n  public get value() {\n    return this._value;\n  }\n\n  public writeValue(obj: any): void {\n    //\n  }\n\n  public get dateDialogRef() {\n    return this._dateDialogRef;\n  }\n\n  public cleared(event) {\n    event.stopPropagation();\n    event.preventDefault();\n\n    this.updateValue(null);\n    this.clearInput();\n    this.selected$.next(null);\n  }\n\n  public ngOnDestroy() {\n    super.ngOnDestroy();\n    this.close();\n  }\n\n  public setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this._cdRef.markForCheck();\n  }\n\n  public validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  public open() {\n    this._renderer.addClass(document.body, 'fs-date-picker-open');\n    this.opened = true;\n\n    this._dateDialogRef.value$\n      .pipe(\n        takeUntil(this._dateDialogRef.close$),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: Date) => {\n        this.updateValue(value);\n        this.selected$.emit(this.value);\n      });\n\n    this._dateDialogRef.close$\n      .pipe(\n        take(1),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this._dateDialogRef = null;\n        this.opened = false;\n\n        this._renderer.removeClass(document.body, 'fs-date-picker-open');\n\n        this.closed$.emit();\n        this._cdRef.markForCheck();\n      });\n  }\n\n  public clearInput() {\n    this.el.value = null;\n  }\n\n  public triggerClick(): void {\n    this.el.focus();\n    this.el.select();\n\n    this.open();\n  }\n\n  @HostListener('blur', ['$event.target.value'])\n  public _inputBlur(value: string): void {\n    if(!this.opened) {\n      this.inputChange(value);\n      this.updateInput(this.value);\n      this.blured$.emit(this.value);\n    }\n  }\n\n  public inputChange(value: string): void {\n    if (value) {\n      const lastValueWasValid = this._lastValueValid;\n      const date = parseDate(value);\n\n      this.validateDate(date);\n\n      if (!isEqual(date, this._value)) {\n        this.updateValue(date);\n      } else if (lastValueWasValid !== this._lastValueValid) {\n        this._validatorOnChange();\n      }\n    } else if (this.value != null) {\n      this.updateValue(null);\n    }\n  }\n\n  public updateValue(date): void {\n    if (date && this.timezone) {\n      date = fromZonedTime(date, this.timezone);\n    }\n\n    this._value = date;\n    this._lastValueValid = !date || isValid(date);\n\n    this.updateInput(this.value);\n\n    this._onChange(this.value);\n    this._onTouch();\n\n    this.change$.emit(this.value);\n  }\n\n  /** The form control validator for whether the input parses. */\n  protected _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this._lastValueValid\n      ? null\n      : { fsDatepickerParse: 'Invalid Date' };\n  };\n\n  protected validateDate(date: Date | undefined) {\n    this._lastValueValid = !date || isValid(date);\n  }\n\n  public abstract updateInput(value: Date): void;\n\n}\n","import { isDate, isValid } from 'date-fns';\nimport { toZonedTime } from 'date-fns-tz';\n\n\nexport function createDateFromValue(value, timezone: string) {\n  if (value && !isDate(value)) {\n    value = new Date(value);\n\n    if (!isValid(value)) {\n      value = null;\n    }\n  } if (value && isDate(value) && !isValid(value)) {\n    value = null;\n  }\n\n  if (value && timezone) {\n    return toZonedTime(value, timezone);\n  }\n\n  return value;\n}\n","import { format as fsFormat } from '@firestitch/date';\n\nimport { format, isValid } from 'date-fns';\nimport { isNumber } from 'lodash-es';\n\nimport { PickerViewType } from '../../libs/common/enums/picker-view-type.enum';\nimport { ScrollPickerViewType } from '../../libs/common/enums/scroll-picker-view-type.enum';\n\n\nexport function formatDateTime(\n  value,\n  dateFormat: PickerViewType | ScrollPickerViewType = PickerViewType.Date,\n  customDateFormat = '',\n  timezone?: string,\n) {\n\n  if (isNumber(value)) {\n    value = new Date(value);\n  } else if (typeof value === 'string') {\n    value = new Date(value);\n    if (!isValid(value)) {\n      value = Date.parse(value);\n    }\n  }\n\n  if (value && isValid(value)) {\n    const formats = [];\n\n    if (customDateFormat) {\n      return fsFormat(value, customDateFormat, { timezone });\n    } \n\n    if (([\n      PickerViewType.Date,\n      PickerViewType.MonthRange,\n      PickerViewType.DateTime,\n    ] as unknown[]).indexOf(dateFormat) != -1) {\n      formats.push('MMM d, yyyy');\n    }\n\n    if (([PickerViewType.Time, PickerViewType.DateTime] as unknown[]).indexOf(dateFormat) != -1) {\n      formats.push('h:mm aa');\n    }\n\n    switch (dateFormat) {\n      case ScrollPickerViewType.MonthDay: {\n        formats.push('MMMM d');\n\n    \n        break;\n      }\n      case ScrollPickerViewType.MonthYear: {\n        formats.push('MMMM yyyy');\n\n    \n        break;\n      }\n      case ScrollPickerViewType.Year: {\n        formats.push('yyyy');\n\n    \n        break;\n      }\n      case ScrollPickerViewType.Month: {\n        formats.push('MMMM');\n    \n        break;\n      }\n    // No default\n    }\n    \n\n    return format(value, formats.join(' '));\n  }\n\n  return '';\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\n\nimport { MatFormField } from '@angular/material/form-field';\n\nimport { PickerViewType, ScrollPickerViewType } from '../../../libs/common/enums';\nimport { NgClass } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\n\n\n@Component({\n    selector: 'fs-datepicker-trigger',\n    templateUrl: './date-picker-trigger.component.html',\n    styleUrls: ['./date-picker-trigger.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [NgClass, MatIcon],\n})\nexport class FsDatePickerTriggerComponent implements AfterViewInit {\n  matFormField = inject(MatFormField, { optional: true });\n  private _el = inject(ElementRef);\n\n\n  @Input()\n  public disabled: boolean;\n\n  @Input()\n  public value;\n\n  @Input()\n  public view: PickerViewType | ScrollPickerViewType;\n\n  @Output()\n  public click = new EventEmitter<void>();\n\n  public get isTimeView(): boolean {\n    return this.view === PickerViewType.Time;\n  }\n  \n  public ngAfterViewInit() {\n    const el = this._getFormFieldFlex(this._el.nativeElement);\n\n    if(el) {\n      const suffix = document.createElement('div');\n      suffix.classList.add('mat-mdc-form-field-icon-suffix');\n\n      el.prepend(suffix);\n\n      suffix.appendChild(this._el.nativeElement);\n    }\n  }\n\n  public triggerClick(event: UIEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.click.emit();\n  }\n\n  private _getFormFieldFlex(el: Element) {\n    if (el.classList.contains('mat-mdc-form-field-flex')) {\n      return el;\n    }\n\n    return el.parentElement ? this._getFormFieldFlex(el.parentElement) : null;\n  }\n\n}\n","<div class=\"fs-date-picker-trigger\" [ngClass]=\"{ disabled: disabled, hide: !value }\">\n  <mat-icon (click)=\"triggerClick($event)\" >\n    @if (isTimeView) {\n      schedule\n    } @else {\n      calendar_today\n    }\n  </mat-icon>\n</div>\n","\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { isValid, startOfDay } from 'date-fns';\n\nimport { PickerViewType } from '../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerDialogFactory } from '../../../libs/dialog/services/dialog-factory.service';\nimport { FsDatePickerBaseComponent } from '../../classes/date-picker-base-component';\nimport { createDateFromValue } from '../../helpers/create-date-from-value';\nimport { formatDateTime } from '../../helpers/format-date-time';\nimport { FsDatePickerTriggerComponent } from '../date-picker-trigger/date-picker-trigger.component';\n\n\n@Component({\n  selector: '[fsDatePicker]',\n  template: FsDatePickerComponent.template,\n  styleUrl: './date-picker.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => FsDatePickerComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => FsDatePickerComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class FsDatePickerComponent extends FsDatePickerBaseComponent implements OnInit {\n\n  public static template = `\n    <fs-clear [show]=\"!disabled && !readonly && clear\" (clear)=\"cleared($event)\" [visible]=\"value\"></fs-clear>\n    @if (icon) {\n      <fs-datepicker-trigger (click)=\"triggerClick()\" [disabled]=\"disabled || readonly\" [view]=\"view\" [value]=\"value\"></fs-datepicker-trigger>\n    }\n  `;\n\n  @Input() public minYear = null;\n  @Input() public maxYear = null;\n  @Input() public minDate = null;\n  @Input() public maxDate = null;\n  @Input() public startOfDay = true;\n  @Input() public view = PickerViewType.Date;\n  @Input() public format: string;\n  @Input() public minutes = true;\n  @Input() public width = '120px';\n\n  @Output('change')\n  public change$ = new EventEmitter<any>();\n\n  private _fsDatepickerFactory = inject(FsDatePickerDialogFactory);\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n\n    const el = this._formField.getConnectedOverlayOrigin().nativeElement;\n    el.classList.add(`fs-date-picker-view-${this.view}`);\n  }\n\n  public writeValue(value: any): void {\n    this._originValue = value;\n    this._value = createDateFromValue(value, this.timezone);\n    this.validateDate(this.value);\n    this.updateInput(this.value);\n\n    this._cdRef.markForCheck();\n  }\n\n  public updateInput(value) {\n    if (!this.minutes && value) {\n      value.setMinutes(0);\n    }\n\n    this._elementRef.nativeElement.value = formatDateTime(value, this.view, this.format, this.timezone);\n  }\n\n  public open() {\n    if (this.disabled || this.readonly || this._dateDialogRef) {\n      return;\n    }\n\n    const modelValue = isValid(this.value) ? this.value : null;\n\n    this._dateDialogRef = this._fsDatepickerFactory\n      .openDatePicker(\n        this._elementRef,\n        this._injector,\n        {\n          modelValue,\n          view: this.view,\n          minutes: this.minutes,\n          minYear: this.minYear,\n          maxYear: this.maxYear,\n          minDate: this.minDate,\n          maxDate: this.maxDate,\n          startOfDay: this.startOfDay,\n          components: this._getDefaultComponents(),\n          weekStartsOn: this.weekStartsOn,\n          showNow: this.showNow,\n        });\n\n    super.open();\n  }\n\n  public updateValue(value) {\n    if (this.view === PickerViewType.Time && isValid(this._value) && isValid(value)) {\n      this._value.setHours(value.getHours());\n      this._value.setMinutes(value.getMinutes());\n      this._value.setSeconds(value.getSeconds());\n\n      value = new Date(this._value.getTime());\n    }\n\n    if (\n      this.view !== PickerViewType.Time && \n      this.view !== PickerViewType.DateTime && \n      isValid(value)\n    ) {\n      value = startOfDay(value);\n    }\n\n    super.updateValue(value);\n  }\n\n  private _getDefaultComponents() {\n    if (this.view === PickerViewType.Time) {\n      return { timeStart: true };\n    }\n\n    return { calendarStart: true };\n\n  }\n}\n","\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  forwardRef,\n  inject,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { isValid, startOfDay } from 'date-fns';\n\nimport { ScrollPickerViewType } from '../../../libs/common/enums/scroll-picker-view-type.enum';\nimport { FsDatePickerDialogFactory } from '../../../libs/dialog/services/dialog-factory.service';\nimport { FsDatePickerBaseComponent } from '../../classes/date-picker-base-component';\nimport { createDateFromValue } from '../../helpers/create-date-from-value';\nimport { formatDateTime } from '../../helpers/format-date-time';\nimport { FsDatePickerTriggerComponent } from '../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../date-picker/date-picker.component';\n\n@Component({\n  selector: '[fsDateScrollPicker]',\n  template: FsDatePickerComponent.template,\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => FsDateScrollPickerComponent),\n    multi: true,\n  }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class FsDateScrollPickerComponent extends FsDatePickerBaseComponent\n  implements ControlValueAccessor, OnInit {\n\n  @Input() public minYear;\n  @Input() public maxYear;\n  @Input() public minDate;\n  @Input() public maxDate;\n  @Input() public showMonth = true;\n  @Input() public showYear = true;\n  @Input() public showDay = true;\n\n  @Input() public width = '120px';\n\n  public view = ScrollPickerViewType.Date;\n\n  private _datepickerFactory = inject(FsDatePickerDialogFactory);\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n\n    if(!this.minYear) {\n      this.minYear = (new Date()).getFullYear() - 50;\n    }\n\n    if(!this.maxYear) {\n      this.maxYear = (new Date()).getFullYear() + 50;\n    }\n  }\n\n  public writeValue(value: any): void {\n    this._originValue = value;\n    this._value = createDateFromValue(value, this.timezone);\n    this.validateDate(this.value);\n    this.updateInput(value);\n\n    this._cdRef.markForCheck();\n  }\n\n  public updateInput(value) {\n    let format = ScrollPickerViewType.Date;\n\n    if (this.showYear && this.showMonth && !this.showDay) {\n      format = ScrollPickerViewType.MonthYear;\n\n    } else if (!this.showYear && this.showMonth && this.showDay) {\n      format = ScrollPickerViewType.MonthDay;\n\n    } else if (!this.showYear && this.showMonth && !this.showDay) {\n      format = ScrollPickerViewType.Month;\n\n    } else if (this.showYear && !this.showMonth && !this.showDay) {\n      format = ScrollPickerViewType.Year;\n    }\n\n    this.el.value = formatDateTime(value, format);\n  }\n\n  public open() {\n    if (this._dateDialogRef || this.disabled || this.readonly) {\n      return;\n    }\n\n    this._dateDialogRef = this._datepickerFactory.openDateScrollPicker(\n      this._elementRef,\n      this._injector,\n      {\n        modelValue: this.value,\n        minYear: this.minYear,\n        maxYear: this.maxYear,\n        minDate: this.minDate,\n        maxDate: this.maxDate,\n        showMonth: this.showMonth,\n        showDay: this.showDay,\n        showYear: this.showYear,\n        view: this.view,\n      },\n    );\n\n    super.open();\n  }\n\n  public updateValue(date: Date | null): void {\n    if (isValid(date)) {\n      date = startOfDay(date);\n    }\n\n    super.updateValue(date);\n  }\n}\n","\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  forwardRef,\n  Input,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { FsDatePickerTriggerComponent } from '../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../date-picker/date-picker.component';\nimport { FsDateScrollPickerComponent } from '../date-scroll-picker/date-scroll-picker.component';\n\n\n@Component({\n  selector: '[fsDatePickerBirthday]',\n  template: FsDatePickerComponent.template,\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => FsDatePickerBirthdayComponent),\n    multi: true,\n  }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent\n],\n})\nexport  class FsDatePickerBirthdayComponent extends FsDateScrollPickerComponent {\n\n  @Input()\n  public minYear = (new Date()).getFullYear() - 120;\n\n  @Input()\n  public maxYear = (new Date()).getFullYear();\n\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'fs-date-range-separator',\n    template: 'to',\n    styleUrls: ['./date-range-separator.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n})\nexport class DateRangeSeparatorComponent {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  forwardRef,\n  Input,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { PickerViewType } from '../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../date-picker/date-picker.component';\n\n\n@Component({\n  selector: '[fsDateTimePicker]',\n  template: FsDatePickerComponent.template,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => FsDateTimePickerComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => FsDateTimePickerComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class FsDateTimePickerComponent extends FsDatePickerComponent {\n\n  @Input() public view = PickerViewType.DateTime;\n  @Input() public width = '200px';\n}\n","import { format, isDate } from 'date-fns';\n\nimport { IDatePickerPeriod } from '../../common/interfaces/period.interface';\n\nexport function formatPeriodObject(period: IDatePickerPeriod): string {\n  if (period && isDate(period.from) && isDate(period.to)) {\n    if (period.from.getFullYear() == period.to.getFullYear()) {\n      const from = format(period.from, 'MMM d');\n      const to = format(period.to, 'MMM d yyyy');\n      return `#${period.period}: ${from} - ${to}`;\n    } else {\n      const from = format(period.from, 'MMM d yyyy');\n      const to = format(period.to, 'MMM d yyyy');\n      return `#${period.period}: ${from} - ${to}`;\n    }\n  } else {\n    return '';\n  }\n}\n","\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  Output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { endOfDay, startOfDay } from 'date-fns';\n\nimport { PickerViewType } from '../../../libs/common/enums/picker-view-type.enum';\nimport { formatPeriodObject } from '../../../libs/common/helpers/format-period-object';\nimport { IDatePickerPeriod } from '../../../libs/common/interfaces/period.interface';\nimport { FsDatePickerDialogFactory } from '../../../libs/dialog/services/dialog-factory.service';\nimport { FsDatePickerBaseComponent } from '../../classes/date-picker-base-component';\nimport { FsDatePickerTriggerComponent } from '../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../date-picker/date-picker.component';\n\n\n@Component({\n  selector: '[fsDateWeekPicker]',\n  template: FsDatePickerComponent.template,\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => FsDateWeekPickerComponent),\n    multi: true,\n  }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent\n],\n})\nexport class FsDateWeekPickerComponent extends FsDatePickerBaseComponent {\n\n  @Input() public minYear = null;\n  @Input() public maxYear = null;\n  @Input() public minDate = null;\n  @Input() public maxDate = null;\n  @Input() public seedDate = null;\n  @Input() public period = 1;\n  @Input() public view = PickerViewType.Week;\n\n  @Output('change')\n  public change$ = new EventEmitter<any>();\n\n  protected _fsDatepickerFactory = inject(FsDatePickerDialogFactory);\n\n  constructor( ) {\n    super();\n    this.editable = false;\n  }\n\n  public writeValue(value: IDatePickerPeriod): void {\n    this._value = value;\n    this.validateDate(this.value);\n    this.updateInput(value);\n\n    this._cdRef.markForCheck();\n  }\n\n  public updateInput(value) {\n    this._elementRef.nativeElement.value = formatPeriodObject(value);\n  }\n\n  public open() {\n    if (this._dateDialogRef) {\n      return;\n    }\n\n    this._dateDialogRef = this._fsDatepickerFactory.openDatePicker(\n      this._elementRef,\n      this._injector,\n      {\n        modelValue: this.value,\n        view: this.view,\n        minYear: this.minYear,\n        maxYear: this.maxYear,\n        minDate: this.minDate,\n        maxDate: this.maxDate,\n        components: this._getDefaultComponents(),\n        seedDate: this.seedDate,\n        periodWeeks: this.period,\n        weekStartsOn: this.weekStartsOn,\n      },\n    );\n\n    super.open();\n  }\n\n  public updateValue(period): void {\n    if (period) {\n      period.from = startOfDay(period.from);\n      period.to = endOfDay(period.to);\n    }\n\n    this._value = period;\n\n    this._onChange(this.value);\n    this._onTouch();\n\n    this.updateInput(period);\n\n    this.change$.emit(this.value);\n  }\n\n  private _getDefaultComponents() {\n    if (this.view === 'time') {\n      return { timeStart: true };\n    }\n\n    return { calendarStart: true };\n\n  }\n}\n","import { lightFormat } from 'date-fns';\n\nexport function isSameDate(startDate, endDate) {\n  return lightFormat(startDate, 'yyyy-MM-dd') === lightFormat(endDate, 'yyyy-MM-dd');\n}\n","import {\n  Directive,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, pairwise, skip, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { isDate, isEqual, isValid } from 'date-fns';\nimport { fromZonedTime } from 'date-fns-tz';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { isSameDate } from '../../../../libs/common/helpers/is-same-date';\nimport { FsDatePickerDialogFactory } from '../../../../libs/dialog/services/dialog-factory.service';\nimport { FsPickerBaseComponent } from '../../../classes/picker-base-component';\nimport { RangePickerRef } from '../../../classes/range-picker-ref';\nimport { createDateFromValue } from '../../../helpers/create-date-from-value';\nimport { formatDateTime } from '../../../helpers/format-date-time';\nimport { parseDate } from '../../../helpers/parse-date';\n\n\n@Directive()\nexport abstract class RangePickerComponent<D = any> extends FsPickerBaseComponent\n  implements ControlValueAccessor, OnInit {\n\n  @Input()\n  public view = PickerViewType.Date;\n\n  @Input()\n  public minYear: number = null;\n\n  @Input()\n  public maxYear: number = null;\n\n  @Input()\n  public minDate: Date = null;\n\n  @Input()\n  public maxDate: Date = null;\n\n  @Input()\n  public format: string;\n\n  @Input() public ngModelOptions: {\n    name?: string;\n    standalone?: boolean;\n    updateOn?: 'change' | 'blur' | 'submit';\n  };\n\n  @Input()\n  public set timezone(value: string) {\n    this._timezone = value;\n\n    this._tzChanged(this._originValue);\n  }\n\n  public get timezone(): string {\n    return this._timezone;\n  }\n\n  @Output('closed')\n  public closed$ = new EventEmitter<void>();\n\n  @Output('blured')\n  public blured$ = new EventEmitter<Date>();\n\n  public onChange: (value) => void;\n  public onTouch: (value) => void;\n\n  public get name() {\n    return this._name;\n  }\n\n  protected _pickerRef: RangePickerRef;\n  protected _value;\n  protected _originValue: Date | null; // before timezone\n  protected _name;\n  protected _type;\n  protected _timezone: string;\n  protected _datepickerFactory = inject(FsDatePickerDialogFactory);\n  protected _ngControl = inject(NgControl);\n\n  private _lastValueValid = false;\n\n  protected constructor() {\n    super();\n    this._ngControl.valueAccessor = this;\n    this.editable = false;\n  }\n\n  public set value(value) {\n    if (this._value !== value) {\n      this._value = value;\n\n      this.onChange(value);\n      this.onTouch(value);\n    }\n  }\n\n  public get value() {\n    return this._value;\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this._listenActivePicker();\n    this._listenKeydown();\n\n    const control = this._ngControl.control;\n    const validators = control.validator\n      ? [control.validator, this._parseValidator]\n      : this._parseValidator;\n\n    control.setValidators(validators);\n    control.updateValueAndValidity();\n\n    this._applyWidth();\n  }\n\n  public get dateDialogRef() {\n    return this._dateDialogRef;\n  }\n\n  public writeValue(value) {\n    value = this._processInputDate(value);\n\n    this._originValue = value;\n\n    this.validateDate(value);\n\n    const [valuesAreDates] = this._checkValuesEquality(value, this.value);\n\n    if ((valuesAreDates) || (!valuesAreDates && this.value !== value)) {\n      this._value = value;\n      this.updateInput(this._value);\n\n      this._cdRef.markForCheck();\n    }\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._cdRef.markForCheck();\n  }\n\n  @HostListener('focus')\n  public open() {\n    if (this._dateDialogRef || this.disabled || this.readonly) {\n      return;\n    }\n\n    if (this._focusAfterClose) {\n      this._focusAfterClose = false;\n\n      return;\n    }\n\n    const modelValue = this.value\n      || (this._type === 'to' ? this._pickerRef.startDate : this._pickerRef.endDate);\n\n    this._dateDialogRef = this._datepickerFactory.openDatePicker(\n      this._elementRef,\n      this._injector,\n      {\n        view: this.view,\n        minYear: this.minYear,\n        maxYear: this.maxYear,\n        minDate: this.minDate,\n        maxDate: this.maxDate,\n        rangeStart: this._getPickerStartDate() || null,\n        components: this._getDefaultComponents(),\n        modelValue: modelValue,\n        pickerRef: this._pickerRef,\n        rangeType: this._type,\n        weekStartsOn: this.weekStartsOn,\n        showNow: this.showNow,\n      },\n    );\n\n    this._doFocus();\n\n    this._listenDialogValueChanges();\n\n    this._dateDialogRef.close$\n      .pipe(\n        take(1),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.closed$.emit();\n        this._dateDialogRef = null;\n        this._enableInput();\n\n        this._cdRef.markForCheck();\n      });\n  }\n\n  /**\n   * Set value which was selected in dialog\n   *\n   * @param value\n   */\n  public updateValueFromDialog(value: Date) {\n    this.updateValue(value);\n    // this.writeValue(value);\n  }\n\n  public updateValue(value): void {\n    if (this.view === PickerViewType.Time && isValid(this._value) && isValid(value)) {\n      this._value.setHours(value.getHours());\n      this._value.setMinutes(value.getMinutes());\n      this._value.setSeconds(value.getSeconds());\n\n      value = new Date(this._value);\n    }\n\n    this._value = value;\n    this.updateInput(this._value);\n\n    if (value && this.timezone) {\n      value = fromZonedTime(value, this.timezone);\n    }\n\n    this.onChange(value);\n    this.onTouch(value);\n  }\n\n  public updateInput(value) {\n    this._elementRef.nativeElement.value = formatDateTime(\n      value,\n      this.view,\n      this.format,\n      this.timezone,\n    );\n  }\n\n  @HostListener('keyup', ['$event', '$event.target.value'])\n  public _inputKeyup(event: KeyboardEvent, value: string): void {\n    if(event.key === 'Enter') {\n      this.inputChange(value);\n    }\n  }\n\n  @HostListener('input', ['$event.target.value', '$event.target'])\n  public _inputChange(value: string): void {\n    if (this.ngModelOptions?.updateOn !== 'blur')  {\n      this.inputChange(value);\n    }\n  }\n\n  public inputChange(value: string): void {\n    const lastValueWasValid = this._lastValueValid;\n    const date = parseDate(value);\n\n    this._lastValueValid = !date || isValid(date);\n\n    if (!isEqual(date, this._value)) {\n      this.updateValue(date);\n    } else if (lastValueWasValid !== this._lastValueValid) {\n      this._ngControl.control.updateValueAndValidity();\n    }\n  }\n\n  @HostListener('blur', ['$event.target.value'])\n  public _inputBlur(value: string): void {\n\n    if(!this._dateDialogRef?.opened) {\n\n      if (this.ngModelOptions?.updateOn === 'blur')  {\n        this.inputChange(value);\n      }\n\n      this.updateInput(this.value);\n      this.blured$.emit(this.value);\n    }\n  }\n\n  public registerOnChange(fn) {\n    this.onChange = fn;\n  }\n  public registerOnTouched(fn) {\n    this.onTouch = fn;\n  }\n\n  public triggerClick(): void {\n    this._elementRef.nativeElement.focus();\n    this._elementRef.nativeElement.select();\n\n    this.open();\n  }\n\n  protected _processInputDate(date: Date | null): Date | null {\n    if (!date) {\n      return null;\n    }\n\n    return createDateFromValue(date, this.timezone);\n  }\n\n  protected _getDefaultComponents() {\n    if (this.view === 'time') {\n      return { timeStart: true };\n    }\n\n    return { calendarStart: true, calendarEnd: true };\n  }\n\n  protected _enableInput() {\n    this.disabled = false;\n  }\n\n  protected _disableInput() {\n    this.disabled = true;\n  }\n\n  protected _tzChanged(originDate: Date | null) {\n    this._value = createDateFromValue(originDate, this.timezone);\n    this.updateInput(this._value);\n\n    this._cdRef.markForCheck();\n  }\n\n  protected _listenDialogValueChanges(): void {\n    this._dateDialogRef.value$\n      .pipe(\n        takeUntil(this._dateDialogRef.close$),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: Date) => {\n        this.updateValueFromDialog(value);\n      });\n  }\n\n  protected _checkValuesEquality(newValue, prevValue) {\n    const valuesAreDates = isDate(newValue) && isDate(prevValue) && isValid(newValue) && isValid(prevValue);\n    const valuesDatesEquals = valuesAreDates\n      && isSameDate(newValue, prevValue);\n\n    return [valuesAreDates, valuesDatesEquals];\n  }\n\n  /**\n   * We need picker start date to be able to limit \"Date To\" picker\n   */\n  protected _getPickerStartDate() {\n    if (\n      this.view !== PickerViewType.MonthRange\n      && isDate(this._pickerRef.startDate)\n      && isValid(this._pickerRef.startDate)\n    ) {\n      return this._pickerRef.startDate;\n    }\n\n    return false;\n  }\n\n  /** The form control validator for whether the input parses. */\n  protected _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this._lastValueValid\n      ? null\n      : { fsDatepickerParse: 'Invalid Date' };\n  };\n\n  protected validateDate(date: Date | unknown) {\n    this._lastValueValid = !date || isValid(date);\n  }\n\n  protected _pickerRefUpdates$(target: Observable<Date | null>): Observable<Date | any> {\n    return target\n      .pipe(\n        skip(1),\n        pairwise(),\n        filter((changes: [Date | null, Date | null]) => {\n          const prevValue = changes[0]?.getTime();\n          const newValue = changes[1]?.getTime();\n\n          return prevValue !== newValue\n            && this.value?.getTime() !== newValue;\n        }),\n        map((changes) => changes[1]),\n      );\n  }\n\n  private _listenActivePicker(): void {\n    this._pickerRef.activePicker$\n      .pipe(\n        filter((pickerType) => {\n          return pickerType === this._type;\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        setTimeout(() => {\n          this._doFocus();\n        });\n      });\n  }\n\n  private _listenKeydown(): void {\n    fromEvent(this.el, 'keydown')\n      .pipe(\n        tap(() => this.close()),\n        filter((event: KeyboardEvent) => ['Tab', 'Enter', 'Escape'].includes(event.key)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        if (event.key === 'Enter') {\n          this.inputChange(this.el.value);\n        }\n\n        this.close();\n        this.el.blur();\n      });\n  }\n\n}\n","import { isDate } from 'date-fns';\n\nexport function cloneDate(fromDate: Date): Date | null {\n  if (!isDate(fromDate)) {\n    return null;\n  }\n\n  return new Date(fromDate.getTime());\n}\n","import { isAfter, isEqual, isValid } from 'date-fns';\n\nimport { PickerViewType } from '../../common/enums/picker-view-type.enum';\n\nimport { cloneDate } from './clone-date';\nimport { isSameDate } from './is-same-date';\n\n\nexport function isDateAfter(target, from, view: PickerViewType): boolean {\n  let startDate, endDate;\n\n  if (view === PickerViewType.Time) {\n    if (from) {\n      startDate = cloneDate(from);\n    }\n\n    if (target) {\n      endDate = cloneDate(target);\n    }\n  } else {\n    startDate = from;\n    endDate = target;\n  }\n\n  if (!startDate || !endDate) {\n    return true;\n  }\n\n  if (view === PickerViewType.Date && isValid(startDate) && isValid(endDate) && isSameDate(startDate, endDate)) {\n    return true;\n  }\n\n  if ((view === PickerViewType.DateTime || view === PickerViewType.Time) && isEqual(startDate, endDate)) {\n    return true;\n  }\n\n  return isAfter(endDate, startDate);\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { endOfDay, startOfDay } from 'date-fns';\n\nimport { PickerViewType } from '../../libs/common/enums/picker-view-type.enum';\nimport { isDateAfter } from '../../libs/common/helpers/is-date-after';\n\n\nexport class RangePickerRef {\n\n  private _startDatePickerExists = false;\n  private _endDatePickerExists = false;\n\n  private _startDate$ = new BehaviorSubject<Date | null>(null);\n  private _endDate$ = new BehaviorSubject<Date | null>(null);\n  private _activePicker$ = new Subject<'from' | 'to' | null>();\n\n  private _startDate: Date = null;\n  private _endDate: Date = null;\n\n  constructor(public view: string) {}\n\n  public get startDate(): Date {\n    return this._startDate;\n  }\n\n  public get endDate(): Date {\n    return this._endDate;\n  }\n\n  public get activePicker$(): Observable<'from' | 'to' | null> {\n    return this._activePicker$.asObservable();\n  }\n\n  public get startDate$(): Observable<Date> {\n    return this._startDate$.asObservable();\n  }\n\n  public get endDate$(): Observable<Date> {\n    return this._endDate$.asObservable();\n  }\n\n  public get startDatePickerExists() {\n    return this._startDatePickerExists;\n  }\n\n  public get endDatePickerExists() {\n    return this._endDatePickerExists;\n  }\n\n  public get isRangeValid() {\n    return isDateAfter(this._endDate, this._startDate, this.view as PickerViewType);\n  }\n\n  /**\n   * Update start date and change end date if needed\n   * @param value\n   */\n  public updateStartDate(value: Date) {\n    this._startDatePickerExists = true;\n\n    if (!!value\n      && (this.view === PickerViewType.Date || this.view === PickerViewType.MonthRange)\n    ) {\n      value = startOfDay(value);\n    }\n\n    this._startDate = value && new Date(value) || null;\n    this._startDate$.next(this._startDate);\n  }\n\n  /**\n   * Update end date\n   * @param value\n   */\n  public updateEndDate(value: Date) {\n    if (!!value\n      && (this.view === PickerViewType.Date || this.view === PickerViewType.MonthRange)\n    ) {\n      value = endOfDay(value);\n    }\n\n    this._endDate = value && new Date(value) || null;\n    this._endDatePickerExists = true;\n\n    this._endDate$.next(this._endDate);\n  }\n\n  public sameAsStartDate(value: Date): boolean {\n    if (!!value\n      && (this.view === PickerViewType.Date || this.view === PickerViewType.MonthRange)\n    ) {\n      value = startOfDay(value);\n    }\n\n    return this._startDate === value;\n  }\n\n  public sameAsEndDate(value: Date): boolean {\n    if (!!value\n      && (this.view === PickerViewType.Date || this.view === PickerViewType.MonthRange)\n    ) {\n      value = endOfDay(value);\n    }\n\n    return this._endDate === value;\n  }\n\n  public activateFromPicker(): void {\n    this._activePicker$.next('from');\n  }\n\n  public activateToPicker(): void {\n    this._activePicker$.next('to');\n  }\n\n  /**\n   * Mark start date picker as destroyed\n   */\n  public destroyStartDatePicker() {\n    this._startDatePickerExists = false;\n  }\n\n  /**\n   * Mark end date picker as destroyed\n   */\n  public destroyEndDatePicker() {\n    this._endDatePickerExists = false;\n  }\n\n  /**\n   * destroy everything related with picker\n   */\n  public destroy() {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { RangePickerRef } from '../classes/range-picker-ref';\n\n\n@Injectable()\nexport class FsRangePickerStoreService {\n  private _store = new Map<string, RangePickerRef>();\n\n  constructor() {\n  }\n\n  public registerPickerFrom(name, value, view) {\n    this._createIfNotExistsPicker(name, view);\n\n    const pickerRef = this._store.get(name);\n\n    // pickerRef.updateStartDate(value);\n\n    return pickerRef;\n  }\n\n  public destroyStartDatePicker(name: string) {\n    const pickerRef = this._store.get(name);\n\n    if (pickerRef) {\n      pickerRef.destroyStartDatePicker();\n\n      this._destroyRefIfRelatedDestroyed(name, pickerRef);\n    }\n  }\n\n  public destroyEndDatePicker(name: string) {\n    const pickerRef = this._store.get(name);\n\n    if (pickerRef) {\n      pickerRef.destroyEndDatePicker();\n\n      this._destroyRefIfRelatedDestroyed(name, pickerRef);\n    }\n  }\n\n  public registerPickerTo(name, value, view): RangePickerRef {\n    this._createIfNotExistsPicker(name, view);\n\n    const pickerRef = this._store.get(name);\n\n    // pickerRef.updateEndDate(value);\n\n    return pickerRef;\n  }\n\n  private _createIfNotExistsPicker(name: string, view: string) {\n    if (!this._store.has(name)) {\n      this._store.set(name, new RangePickerRef(view));\n    }\n  }\n\n  private _destroyRefIfRelatedDestroyed(name, ref) {\n    if (!ref.startDatePickerExists && !ref.endDatePickerExists) {\n      ref.destroy();\n      this._store.delete(name);\n    }\n  }\n}\n","import {\n  Directive,\n  OnDestroy,\n  OnInit,\n  inject,\n} from '@angular/core';\n\n\nimport { startOfDay } from 'date-fns';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsRangePickerStoreService } from '../../../services/range-picker-store.service';\nimport { RangePickerComponent } from '../base/range-picker-base.component';\n\n\n@Directive()\nexport abstract class RangePickerFromComponent extends RangePickerComponent implements OnInit, OnDestroy {\n\n  protected _rangePickerStore = inject(FsRangePickerStoreService);\n\n  constructor() {\n    super();\n    this._type = 'from';\n  }\n\n  public ngOnInit() {\n    this.registerPicker();\n    super.ngOnInit();\n  }\n\n  public ngOnDestroy() {\n    super.ngOnDestroy();\n    this._rangePickerStore.destroyStartDatePicker(this.name);\n  }\n\n  public registerPicker() {\n    this._pickerRef = this._rangePickerStore.registerPickerFrom(this.name, this.value, this.view);\n  }\n\n  public writeValue(value) {\n    // Hot fix while angular has ongoing issue\n    // https://github.com/angular/angular/issues/29218\n    if (!this.onChange) {\n      return;\n    }\n\n    super.writeValue(value);\n\n    const [valuesAreDates] = this._checkValuesEquality(this.value, this._pickerRef.startDate);\n\n    if ((valuesAreDates && !this._pickerRef.sameAsStartDate(this.value)) || (!valuesAreDates)) {\n      this._pickerRef.updateStartDate(this.value);\n    }\n  }\n\n  public cleared(event) {\n    event.stopPropagation();\n    event.preventDefault();\n    this.writeValue(null);\n\n    this.onChange(this.value);\n    this.onTouch(this.value);\n  }\n\n  /**\n   * Set value which was selected in dialog\n   * @param value\n   */\n  // public updateValueFromDialog(value: Date) {\n  //   this.updateValue(value);\n  //\n  //   super.updateValueFromDialog(value);\n  // }\n\n  public updateValue(value): void {\n    if (this.view === PickerViewType.Date) {\n      value = startOfDay(value);\n    }\n\n    this._pickerRef.updateStartDate(value);\n\n    super.updateValue(value);\n  }\n\n  protected _tzChanged(originDate: Date | null): void {\n    super._tzChanged(originDate);\n\n    this._pickerRef?.updateStartDate(this.value);\n  }\n\n  protected _processInputDate(date: Date | null): Date | null {\n    date = super._processInputDate(date);\n\n    if (this.view === PickerViewType.Date && date) {\n      date = startOfDay(date);\n    }\n\n    return date;\n  }\n}\n","import {\n  Directive,\n  OnDestroy,\n  OnInit,\n  inject,\n} from '@angular/core';\nimport { ValidationErrors, ValidatorFn } from '@angular/forms';\n\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { endOfDay } from 'date-fns';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsRangePickerStoreService } from '../../../services/range-picker-store.service';\nimport { RangePickerComponent } from '../base/range-picker-base.component';\n\n\n@Directive()\nexport abstract class RangePickerToComponent extends RangePickerComponent implements OnInit, OnDestroy {\n  \n  private _rangePickerStore = inject(FsRangePickerStoreService);\n\n  constructor() {\n    super();\n    this._type = 'to';\n  }\n\n  public ngOnInit() {\n    this.registerPicker();\n    this._subscribeToPickerRefUpdates();\n\n    super.ngOnInit();\n  }\n\n  public ngOnDestroy() {\n    super.ngOnDestroy();\n    this._rangePickerStore.destroyEndDatePicker(this.name);\n  }\n\n  public registerPicker() {\n    this._pickerRef = this._rangePickerStore.registerPickerTo(this.name, this.value, this.view);\n  }\n\n  public writeValue(value) {\n    // Hot fix while angular has ongoing issue\n    // https://github.com/angular/angular/issues/29218\n    if (!this.onChange) {\n      return;\n    }\n\n    super.writeValue(value);\n\n    const [valuesAreDates] = this._checkValuesEquality(this.value, this._pickerRef.endDate);\n\n    if ((valuesAreDates && !this._pickerRef.sameAsEndDate(this.value)) || !valuesAreDates) {\n      this._pickerRef.updateEndDate(this.value);\n    }\n  }\n\n  public cleared(event?) {\n    if (event) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    this.writeValue(null);\n\n    this.onChange(this.value);\n    this.onTouch(this.value);\n  }\n\n  /**\n   * Set value which was selected in dialog\n   * @param value\n   */\n  // public updateValueFromDialog(value) {\n  //   this.updateValue(value);\n  //\n  //   super.updateValueFromDialog(this._pickerRef.endDate);\n  // }\n\n  public updateValue(value: Date) {\n    if (this.view === PickerViewType.Date) {\n      value = endOfDay(value);\n    }\n\n    this._pickerRef.updateEndDate(value);\n\n    super.updateValue(value);\n  }\n\n  protected _tzChanged(originDate: Date | null): void {\n    super._tzChanged(originDate);\n\n    this._pickerRef?.updateEndDate(this.value);\n  }\n\n  /** The form control validator for whether the input parses. */\n  protected _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this._pickerRef.isRangeValid\n      ? null\n      : { fsDatepickerRange: 'Invalid Range' };\n  };\n\n  protected _processInputDate(date: Date | null): Date | null {\n    date = super._processInputDate(date);\n\n    if (this.view === PickerViewType.Date && date) {\n      date = endOfDay(date);\n    }\n\n    return date;\n  }\n\n  protected _subscribeToPickerRefUpdates() {\n    this._pickerRefUpdates$(this._pickerRef.startDate$)\n      .pipe(\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        if (!this._pickerRef.isRangeValid) {\n          this.cleared();\n        }\n\n        if (this.value) {\n          this._ngControl.control.markAsDirty();\n          this._ngControl.control.updateValueAndValidity();\n        }\n\n        this._cdRef.markForCheck();\n      });\n  }\n\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerFromComponent } from '../base/range-picker-from.component';\n\n\n@Component({\n  selector: '[fsDateRangeFrom],[fsDateRangeFromPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class DateRangePickerFromComponent extends RangePickerFromComponent {\n\n  @Input() public set fsDateRangeFrom(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsDateRangeFromPicker(value) {\n    this._name = value;\n  }\n\n  @Input() public width = '120px';\n\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerFromComponent } from '../base/range-picker-from.component';\n\n\n@Component({\n  selector: '[fsDateTimeRangeFrom],[fsDateTimeRangeFromPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class DateTimeRangePickerFromComponent extends RangePickerFromComponent {\n\n  @Input() public set fsDateTimeRangeFrom(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsDateTimeRangeFromPicker(value) {\n    this._name = value;\n  }\n\n  @Input() public width = '200px';\n\n  @Input()\n  public view = PickerViewType.DateTime;\n\n  public updateValue(value): void {\n    this._pickerRef.updateStartDate(value);\n\n    super.updateValue(value);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnInit,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { startOfDay } from 'date-fns';\nimport { fromZonedTime } from 'date-fns-tz';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerFromComponent } from '../base/range-picker-from.component';\n\n\n@Component({\n  selector: '[fsMonthRangeFrom],[fsMonthRangeFromPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class MonthRangePickerFromComponent extends RangePickerFromComponent implements OnInit {\n\n  @Input() public set fsMonthRangeFrom(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsMonthRangeFromPicker(value) {\n    this._name = value;\n  }\n\n  @Input() public width = '120px';\n\n  public view = PickerViewType.MonthRange;\n\n  private _skipUpdateValue = false;\n\n  public ngOnInit() {\n    super.ngOnInit();\n\n    this._subscribeToPickerRefUpdates();\n  }\n\n  public cleared(event) {\n    super.cleared(event);\n\n    this._pickerRef.updateEndDate(null);\n  }\n\n  public updateValue(value: Date) {\n    value = startOfDay(value);\n\n    this._value = value;\n    this.updateInput(this._value);\n\n    if (value && this.timezone) {\n      value = fromZonedTime(value, this.timezone);\n    }\n\n    this.onChange(value);\n    this.onTouch(value);\n  }\n\n  protected _tzChanged(originDate: Date | null) {\n    this._skipUpdateValue = true;\n\n    super._tzChanged(originDate);\n  }\n\n  protected _processInputDate(date: Date | null): Date | null {\n    date = super._processInputDate(date);\n\n    if (date) {\n      date = startOfDay(date);\n    }\n\n    return date;\n  }\n\n  /**\n   * When it's month range picker - we have to listen changes over rangePickerRef\n   */\n  protected _listenDialogValueChanges() {\n    // NOOP\n  }\n\n  protected _subscribeToPickerRefUpdates() {\n    this._pickerRefUpdates$(this._pickerRef.startDate$)\n      .pipe(\n        takeUntil(this.destroy$),\n      )\n      .subscribe((newValue: Date | null) => {\n        if (this._skipUpdateValue) {\n          this._skipUpdateValue = false;\n\n          return;\n        }\n\n        this.updateValue(newValue);\n\n        this._ngControl.control.markAsDirty();\n        this._ngControl.control.updateValueAndValidity();\n        this._cdRef.markForCheck();\n      });\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerFromComponent } from '../base/range-picker-from.component';\n\n\n@Component({\n  selector: '[fsTimeRangeFrom],[fsTimeRangeFromPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class TimeRangePickerFromComponent extends RangePickerFromComponent {\n\n  @Input() public set fsTimeRangeFrom(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsTimeRangeFromPicker(value) {\n    this._name = value;\n  }\n\n  @Input() public width = '120px';\n\n  @Input()\n  public view = PickerViewType.Time;\n\n  public updateValue(value): void {\n    this._pickerRef.updateStartDate(value);\n\n    super.updateValue(value);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerToComponent } from '../base/range-picker-to.component';\n\n\n@Component({\n  selector: '[fsDateRangeTo],[fsDateRangeToPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class DateRangePickerToComponent extends RangePickerToComponent {\n\n  @Input() public set fsDateRangeTo(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsDateRangeToPicker(value) {\n    this._name = value;\n  }\n\n  @Input() public width = '120px';\n\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerToComponent } from '../base/range-picker-to.component';\n\n\n@Component({\n  selector: '[fsDateTimeRangeTo],[fsDateTimeRangeToPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class DateTimeRangePickerToComponent extends RangePickerToComponent {\n\n  @Input() public set fsDateTimeRangeTo(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsDateTimeRangeToPicker(value) {\n    this._name = value;\n  }\n\n  @Input()\n  public view = PickerViewType.DateTime;\n\n  @Input() public width = '200px';\n\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { endOfDay } from 'date-fns';\nimport { fromZonedTime } from 'date-fns-tz';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerToComponent } from '../base/range-picker-to.component';\n\n\n@Component({\n  selector: '[fsMonthRangeTo],[fsMonthRangeToPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class MonthRangePickerToComponent extends RangePickerToComponent {\n\n  @Input() public width = '120px';\n\n  @Input() public set fsMonthRangeTo(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsMonthRangeToPicker(value) {\n    this._name = value;\n  }\n\n  public view = PickerViewType.MonthRange;\n\n  private _skipUpdateValue = false;\n\n  public updateValue(value: Date) {\n    if (value) {\n      value = endOfDay(value);\n    }\n\n    this._value = value;\n    this.updateInput(this._value);\n\n    if (value && this.timezone) {\n      value = fromZonedTime(value, this.timezone);\n    }\n\n    this.onChange(value);\n    this.onTouch(value);\n  }\n\n  protected _tzChanged(originDate: Date | null) {\n    this._skipUpdateValue = true;\n\n    super._tzChanged(originDate);\n  }\n\n  protected _processInputDate(date: Date | null): Date | null {\n    date = super._processInputDate(date);\n\n    if (date) {\n      date = endOfDay(date);\n    }\n\n    return date;\n  }\n\n  /**\n   * When it's month range picker - we have to listen changes over rangePickerRef\n   */\n  protected _listenDialogValueChanges() {\n    // NOOP\n  }\n\n  protected _subscribeToPickerRefUpdates() {\n    this._pickerRefUpdates$(this._pickerRef.endDate$)\n      .pipe(\n        takeUntil(this.destroy$),\n      )\n      .subscribe((newValue: Date | null) => {\n        if (this._skipUpdateValue) {\n          this._skipUpdateValue = false;\n\n          return;\n        }\n\n        this.updateValue(newValue);\n\n        this._ngControl.control.markAsDirty();\n        this._ngControl.control.updateValueAndValidity();\n        this._cdRef.markForCheck();\n      });\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n} from '@angular/core';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { PickerViewType } from '../../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../../date-picker/date-picker.component';\nimport { RangePickerToComponent } from '../base/range-picker-to.component';\n\n\n@Component({\n  selector: '[fsTimeRangeTo],[fsTimeRangeToPicker]',\n  template: FsDatePickerComponent.template,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class TimeRangePickerToComponent extends RangePickerToComponent {\n\n  @Input() public set fsTimeRangeTo(value) {\n    this._name = value;\n  }\n\n  @Input() public set fsTimeRangeToPicker(value) {\n    this._name = value;\n  }\n\n  @Input() public width = '120px';\n\n  @Input()\n  public view = PickerViewType.Time;\n\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  forwardRef,\n  Input,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { FsClearModule } from '@firestitch/clear';\n\nimport { PickerViewType } from '../../../libs/common/enums/picker-view-type.enum';\nimport { FsDatePickerTriggerComponent } from '../date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from '../date-picker/date-picker.component';\n\n\n@Component({\n  selector: '[fsTimePicker]',\n  template: FsDatePickerComponent.template,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => FsTimePickerComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => FsTimePickerComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    FsClearModule,\n    FsDatePickerTriggerComponent,\n  ],\n})\nexport class FsTimePickerComponent extends FsDatePickerComponent {\n\n  @Input() public view = PickerViewType.Time;\n\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { guid } from '@firestitch/common';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { MatOption } from '@angular/material/core';\nimport { NgClass } from '@angular/common';\n\n\n@Component({\n    selector: 'fs-time-select',\n    templateUrl: './time-select.component.html',\n    styleUrls: ['./time-select.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => FsTimeSelectComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n    imports: [\n        MatFormField,\n        MatLabel,\n        MatSelect,\n        FormsModule,\n        MatOption,\n        NgClass,\n    ],\n})\nexport class FsTimeSelectComponent implements OnInit, ControlValueAccessor {\n\n  @Input() public label;\n  @Input() public required = false;\n  @Input() public fieldClass;\n  @Input() public initialHour;\n\n  public onChange: (value) => void;\n  public onTouch: (value) => void;\n  public name = `times${guid()}`;\n  public time = null;\n  public times = [];\n  \n  public writeValue(value: any): void {\n    this.time = value === undefined ? null : value;\n  }\n\n  public change(value): void {\n    this.onChange(value);\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n  \n  public registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  public setDisabledState?(isDisabled: boolean): void {\n    \n  }  \n\n  public openedChange(value) {\n    if(value && this.initialHour && (this.time === null)) {\n      const el = document.querySelector('.time-select-option-' + (this.initialHour * 60 * 60));\n      el?.scrollIntoView();\n    }\n  }\n  \n  public ngOnInit(): void {\n    for (let i=0; i < 24; i++) {\n\n      const meridiem = i >= 12 ? 'PM' : 'AM';\n      const hour = i > 12 ? i - 12 : (i ? i : 12);\n      this.times.push({\n        name: `${hour}:00 ${meridiem}`,\n        value: i * 60 * 60\n      });\n    }\n  }\n\n\n}\n","<mat-form-field [class]=\"fieldClass\">\n  <mat-label>{{label}}</mat-label>\n  <mat-select\n    [required]=\"required\"\n    (ngModelChange)=\"change($event)\"\n    (openedChange)=\"openedChange($event)\"\n    [(ngModel)]=\"time\"\n    [name]=\"name\">\n    @for (item of times; track item) {\n      <mat-option\n        [ngClass]=\"['time-select-option','time-select-option-' + item.value]\"\n        [attr.data-hour]=\"item\"\n        [value]=\"item.value\">\n        {{item.name}}\n      </mat-option>\n    }\n  </mat-select>\n</mat-form-field>","import { ChangeDetectionStrategy, Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\nimport { guid } from '@firestitch/common';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { MatOption } from '@angular/material/core';\n\n\n@Component({\n    selector: 'fs-weekday-select',\n    templateUrl: './weekday-select.component.html',\n    styleUrls: ['./weekday-select.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => FsWeekdaySelectComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n    imports: [\n        MatFormField,\n        MatLabel,\n        MatSelect,\n        FormsModule,\n        MatOption,\n    ],\n})\nexport class FsWeekdaySelectComponent implements ControlValueAccessor {\n\n  @Input() public label;\n  @Input() public required = false;\n  @Input() public fieldClass;\n\n  public onChange: (value) => void;\n  public onTouch: (value) => void;\n  public name = `weekday${guid()}`;\n  public weekday;\n  public weekdays = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];\n  \n  public writeValue(value: any): void {\n    this.weekday = value;\n  }\n\n  public change(value): void {\n    this.onChange(value);\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n  \n  public registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  public setDisabledState?(isDisabled: boolean): void {\n    \n  }\n\n}\n","<mat-form-field [class]=\"fieldClass\">\n  <mat-label>{{label}}</mat-label>\n  <mat-select\n    [required]=\"required\"\n    (ngModelChange)=\"change($event)\"\n    [(ngModel)]=\"weekday\"\n    [name]=\"name\">\n    @for (item of weekdays; track item; let index = $index) {\n      <mat-option\n        [value]=\"index\">\n        {{item}}\n      </mat-option>\n    }\n  </mat-select>\n</mat-form-field>","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { LayoutModule } from '@angular/cdk/layout';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsClearModule } from '@firestitch/clear';\nimport { FsScrollPickerModule } from '@firestitch/scroll-picker';\n\n\nimport { FsDatePickerDialogModule } from '../libs/dialog/dialog.module';\n\n\nimport { FsWeekdaySelectComponent } from './components';\nimport { FsDateCalendarPickerComponent } from './components/calendar-picker/calendar-picker.component';\nimport { FsDatePickerBirthdayComponent } from './components/date-picker-birthday/date-picker-birthday.component';\nimport { FsDatePickerTriggerComponent } from './components/date-picker-trigger/date-picker-trigger.component';\nimport { FsDatePickerComponent } from './components/date-picker/date-picker.component';\nimport { DateRangeSeparatorComponent } from './components/date-range-separator/date-range-separator.component';\nimport { FsDateScrollPickerComponent } from './components/date-scroll-picker/date-scroll-picker.component';\nimport { FsDateTimePickerComponent } from './components/date-time-picker/date-time-picker.component';\nimport { FsDateWeekPickerComponent } from './components/date-week-picker/date-week-picker.component';\nimport { DateRangePickerFromComponent } from './components/range-picker/from/date-range-picker-from.component';\nimport { DateTimeRangePickerFromComponent } from './components/range-picker/from/date-time-range-picker-from.component';\nimport { MonthRangePickerFromComponent } from './components/range-picker/from/month-range-picker-from.component';\nimport { TimeRangePickerFromComponent } from './components/range-picker/from/time-range-picker-from.component';\nimport { DateRangePickerToComponent } from './components/range-picker/to/date-range-picker-to.component';\nimport { DateTimeRangePickerToComponent } from './components/range-picker/to/date-time-range-picker-to.component';\nimport { MonthRangePickerToComponent } from './components/range-picker/to/month-range-picker-to.component';\nimport { TimeRangePickerToComponent } from './components/range-picker/to/time-range-picker-to.component';\nimport { FsTimePickerComponent } from './components/time-picker/time-picker.component';\nimport { FsTimeSelectComponent } from './components/time-select';\nimport { IFsDatePickerConfig } from './interfaces/datepicker-config.interface';\nimport { FS_DATEPICKER_CONFIG } from './providers/datepicker-config.provider';\nimport { FsRangePickerStoreService } from './services/range-picker-store.service';\n\n\n@NgModule({\n    imports: [\n    CommonModule,\n    FormsModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatMenuModule,\n    MatBottomSheetModule,\n    MatSelectModule,\n    LayoutModule,\n    FsClearModule,\n    FsScrollPickerModule,\n    FsDatePickerComponent,\n    DateRangeSeparatorComponent,\n    DateRangePickerFromComponent,\n    DateRangePickerToComponent,\n    FsDateScrollPickerComponent,\n    FsDatePickerBirthdayComponent,\n    FsDatePickerTriggerComponent,\n    FsDateWeekPickerComponent,\n    FsTimePickerComponent,\n    DateTimeRangePickerFromComponent,\n    DateTimeRangePickerToComponent,\n    FsDateTimePickerComponent,\n    TimeRangePickerFromComponent,\n    TimeRangePickerToComponent,\n    MonthRangePickerFromComponent,\n    MonthRangePickerToComponent,\n    FsDateCalendarPickerComponent,\n    FsWeekdaySelectComponent,\n    FsTimeSelectComponent,\n],\n    exports: [\n        FsDatePickerComponent,\n        DateRangeSeparatorComponent,\n        DateRangePickerFromComponent,\n        DateRangePickerToComponent,\n        FsDateScrollPickerComponent,\n        FsDatePickerBirthdayComponent,\n        FsDateWeekPickerComponent,\n        FsTimePickerComponent,\n        DateTimeRangePickerFromComponent,\n        DateTimeRangePickerToComponent,\n        FsDateTimePickerComponent,\n        TimeRangePickerFromComponent,\n        TimeRangePickerToComponent,\n        MonthRangePickerFromComponent,\n        MonthRangePickerToComponent,\n        FsDateCalendarPickerComponent,\n        FsWeekdaySelectComponent,\n        FsTimeSelectComponent,\n    ],\n})\nexport class FsDatePickerModule {\n  public static forRoot(config?: IFsDatePickerConfig): ModuleWithProviders<FsDatePickerModule> {\n    const providers: Provider[] = [];\n\n    if (!!config) {\n      providers.push(\n        {\n          provide: FS_DATEPICKER_CONFIG,\n          useValue: config,\n        },\n      )\n    }\n\n    return {\n      ngModule: FsDatePickerModule,\n      providers: [\n        [...FsDatePickerDialogModule.forRoot().providers],\n        FsRangePickerStoreService,\n        ...providers,\n      ],\n    };\n  }\n}\n","import { differenceInCalendarWeeks, isBefore } from 'date-fns';\nimport { WeekDays } from '../../common/types/week-days.type';\n\n\n/**\n * Calculate difference in weeks based on seedDate and periodWeeks\n */\nexport function getWeeksDiffForPeriod(dateStart, seedDate, periodWeeks, weekStartsOn: WeekDays = 1) {\n  /**\n   * If week date start before seed date\n   */\n  if (isBefore(dateStart, seedDate)) {\n    const weeksDiff = differenceInCalendarWeeks(\n      dateStart,\n      seedDate,\n      { weekStartsOn}\n    ) / periodWeeks;\n\n    // Sometimes weeksDiff can be integer and we use +0.1 for easy round\n    return Math.ceil(weeksDiff + 0.1);\n  } else {\n    const weeksDiff = differenceInCalendarWeeks(\n      dateStart,\n      seedDate,\n      { weekStartsOn}\n    ) / periodWeeks;\n\n    // Sometimes weeksDiff can be integer and we use +0.1 for easy round\n    return Math.ceil(weeksDiff + 0.1);\n  }\n}\n","import { addSeconds, addWeeks, startOfDay } from 'date-fns';\n\nimport { IDatePickerPeriod } from '../interfaces/period.interface';\nimport { getPeriodId } from '../../common/helpers/get-period-id';\nimport { getWeeksDiffForPeriod } from '../../common/helpers/get-weeks-diff-for-period';\nimport { WeekDays } from '../../common/types/week-days.type';\n\n\n/**\n * Calculate period based on week date start and seed date\n */\nexport function getPeriodForDate(dateStart: Date, seedDate: Date, periodWeeks: number, weekStartsOn: WeekDays = 1): IDatePickerPeriod {\n  const diffInWeeks = getWeeksDiffForPeriod(dateStart, seedDate, periodWeeks, weekStartsOn) - 1;\n  const pDateStart = startOfDay(addWeeks(seedDate, diffInWeeks));\n  const pId = getPeriodId(pDateStart, seedDate, periodWeeks, weekStartsOn);\n  const pDateEnd = addSeconds(addWeeks(pDateStart, periodWeeks), -1);\n\n  return {\n    from: pDateStart,\n    to: pDateEnd,\n    period: pId,\n  }\n}\n","/*\n * Public API Surface of fs-menu\n */\n\nexport { FsDatePickerModule } from './app/datepicker.module';\n\nexport {\n  DateRangePickerFromComponent, DateRangePickerToComponent, DateRangeSeparatorComponent, DateTimeRangePickerFromComponent, DateTimeRangePickerToComponent, FsDateCalendarPickerComponent, FsDatePickerBirthdayComponent, FsDatePickerComponent, FsDateScrollPickerComponent,\n  FsDateTimePickerComponent, FsDateWeekPickerComponent, FsTimePickerComponent, FsTimeSelectComponent, FsWeekdaySelectComponent, MonthRangePickerFromComponent, MonthRangePickerToComponent, TimeRangePickerFromComponent, TimeRangePickerToComponent\n} from './app/components';\n\nexport { WeekDay } from './libs/common/enums/week-day.enum';\nexport { formatPeriodObject } from './libs/common/helpers/format-period-object';\nexport { getPeriodForDate } from './libs/common/helpers/get-period-for-date';\nexport { getPeriodId } from './libs/common/helpers/get-period-id';\nexport { IDatePickerPeriod } from './libs/common/interfaces/period.interface';\nexport { WeekDays } from './libs/common/types/week-days.type';\nexport { getFirstDayOfFirstYearWeek } from './libs/dialog/helpers/get-first-day-of-first-year-week';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["isEqual","getDaysInMonth","MONTHS","FsDatePickerCalendarComponent_1","i2","fsFormat","i1"],"mappings":"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"}