{"version":3,"file":"index.esm.mjs","sources":["../src/utils/date.ts","../src/utils/excluded.ts","../src/constants.ts","../src/utils/get-calendar-month-params.ts","../src/utils/predicates.ts","../src/utils/config.ts","../src/utils/get-date-range-state.ts","../src/utils/create-calendars.ts","../src/utils/create-weekdays.ts","../src/use-calendars.ts","../src/state-reducer.ts","../src/utils/get-calendar-start-date.ts","../src/utils/get-current-year-position.ts","../src/utils/create-initial-state.ts","../src/use-date-picker-state.ts","../src/utils/call-all.ts","../src/utils/create-prop-getter.ts","../src/utils/get-multiple-dates.ts","../src/use-days.ts","../src/utils/create-months.ts","../src/use-months.ts","../src/utils/create-time.ts","../src/use-time.ts","../src/utils/create-years.ts","../src/use-years.ts","../src/use-date-picker.ts","../src/date-picker-provider.tsx","../src/date-picker-state-provider.tsx","../src/use-context-hooks.ts"],"sourcesContent":["import type {\n  DPDatePart,\n  DPDateParts,\n  DPLocaleConfig,\n  DPTimeLimit,\n} from '../types';\n\n// Year and Month is a minimum required arguments for creating a date\n// == null is intentional to check also for undefined\nexport const newDate = (Y?: number, M?: number, ...rest: number[]): Date =>\n  !Y || M == null ? new Date() : new Date(Y, M, ...rest);\n\nexport const getDateParts = (d: Date): DPDateParts => ({\n  D: d.getDate(),\n  M: d.getMonth(),\n  Y: d.getFullYear(),\n});\n\n// Days in order sun = 0 ... sat = 6\nexport const getDay = (d: Date): number => d.getDay();\n\n/*\n * We need this function to eliminate time from the comparison.\n * All date that comes to DP should go through this function.\n */\nexport const getCleanDate = (d: Date): Date =>\n  newDate(getDateParts(d).Y, getDateParts(d).M, getDateParts(d).D);\n\nexport const daysInMonth = (d: Date): number =>\n  newDate(getDateParts(d).Y, getDateParts(d).M + 1, 0).getDate();\n\nexport const getFirstDayOfTheMonth = (d: Date): Date =>\n  newDate(getDateParts(d).Y, getDateParts(d).M, 1);\n\nexport const addToDate = (d: Date, value: number, part: DPDatePart): Date => {\n  const { Y, M, D } = getDateParts(d);\n  // Cover case when offsetDate is 31 and next month doesn't have 31 days\n  // More details here https://github.com/rehookify/datepicker/issues/10\n  const nextDate =\n    part === 'date'\n      ? D + value\n      : part === 'month' && D > daysInMonth(newDate(Y, M + value, 1))\n      ? daysInMonth(newDate(Y, M + value, 1))\n      : D;\n\n  return newDate(\n    Y + (part === 'year' ? value : 0),\n    M + (part === 'month' ? value : 0),\n    nextDate,\n  );\n};\n\nexport const subtractFromDate = (\n  d: Date,\n  value: number,\n  part: DPDatePart,\n): Date => addToDate(d, 0 - value, part);\n\nexport const sortDatesAsc = (a: Date, b: Date): number => +a - +b;\n\nexport const toLocaleDateString = (\n  d: Date,\n  locale?: Intl.LocalesArgument,\n  options?: Intl.DateTimeFormatOptions,\n): string => d.toLocaleDateString(locale, options);\n\nexport const formatMonthName = (\n  d: Date,\n  { locale, monthName }: DPLocaleConfig,\n): string => toLocaleDateString(d, locale, { month: monthName });\n\nexport const formatDate = (\n  d: Date,\n  { locale, options }: DPLocaleConfig,\n): string => toLocaleDateString(d, locale, options);\n\nexport const getTimeDate = (\n  Y: number,\n  M: number,\n  D: number,\n  t?: DPTimeLimit,\n): Date | undefined =>\n  t && t.h != null && t.m != null ? newDate(Y, M, D, t.h, t.m) : undefined;\n\nexport const formatTime = (\n  d: Date,\n  { locale, hour, minute, second, hour12 }: DPLocaleConfig,\n): string =>\n  d.toLocaleTimeString(locale, {\n    hour,\n    minute,\n    second,\n    hour12,\n  });\n\nexport const addAndSortAsc = (dates: Date[], d: Date): Date[] =>\n  dates.concat(d).sort(sortDatesAsc);\n\nexport const sortMinMax = <T>(\n  min: T | undefined,\n  max: T | undefined,\n  sortFunction: (a: T, b: T) => number,\n): (T | undefined)[] => {\n  let [mN, mX] = [min, max];\n  if (min && max) {\n    [mN, mX] = [min, max].sort(sortFunction);\n  }\n\n  return [mN, mX];\n};\n","import type { DPDayInteger, DPExcludeConfig } from '../types';\nimport { getDateParts } from './date';\n\nexport const isExcludedDay = (d: number, eDays?: DPDayInteger[]): boolean =>\n  eDays ? eDays.includes(d as DPDayInteger) : false;\n\nexport const isExcludedDate = (d: Date, dates: Date[] = []): boolean => {\n  const { M, D } = getDateParts(d);\n  return dates.some((date: Date) => {\n    const { M: md, D: dd } = getDateParts(date);\n    return M === md && D === dd;\n  });\n};\n\nexport const isExcluded = (\n  d: Date,\n  { day, date }: DPExcludeConfig = {},\n): boolean => isExcludedDay(d.getDay(), day) || isExcludedDate(d, date);\n","import type {\n  DPCalendarConfig,\n  DPDatesConfig,\n  DPLocaleConfig,\n  DPTimeConfig,\n  DPYearsConfig,\n} from './types';\n\n/*\n * It is used for static 🗓 to cover all possible month start and end date combination\n * One month could take 6 rows by 7 days\n * 27 28 29 30 31 01 02\n * 03 04 05 06 07 08 09\n * 10 11 12 13 14 15 16\n * 17 18 19 20 21 22 23\n * 24 25 26 27 28 29 30\n * 31 01 02 03 04 05 06\n */\nexport const NUMBER_OF_STATIC_CALENDAR_DAYS = 42;\n\n//Weekdays array template, each index mimics its position\nexport const WEEK_DAYS = [0, 1, 2, 3, 4, 5, 6] as const;\nexport const NUMBER_OF_MONTHS = 12;\nexport const MINUTES_IN_THE_DAY = 60 * 24; // 1440 :)\n\n// Number of yearn by default to mimic number of month\n// It will be easy to reuse same layout for years picker\nconst DECADE_NUMBER_OF_YEARS = 12;\nexport const DEFAULT_YEARS_STEP = 10;\n\nexport const DEFAULT_CALENDAR_CONFIG: DPCalendarConfig = {\n  mode: 'static',\n  offsets: [0],\n  startDay: 0,\n};\n\nexport const DEFAULT_YEARS_CONFIG: DPYearsConfig = {\n  mode: 'decade',\n  numberOfYears: DECADE_NUMBER_OF_YEARS,\n  step: DEFAULT_YEARS_STEP,\n};\n\nexport const DEFAULT_DATES_CONFIG: Pick<\n  DPDatesConfig,\n  'mode' | 'toggle' | 'selectSameDate'\n> = {\n  mode: 'single',\n  toggle: false,\n  selectSameDate: false,\n};\n\nexport const DEFAULT_TIME_CONFIG: Pick<DPTimeConfig, 'interval'> = {\n  interval: 30,\n};\n\nexport const DEFAULT_LOCALE_CONFIG: DPLocaleConfig = {\n  locale: 'en-GB',\n  day: '2-digit',\n  year: 'numeric',\n  weekday: 'short',\n  monthName: 'long',\n  hour: '2-digit',\n  minute: '2-digit',\n  hour12: undefined,\n  second: undefined,\n};\n\nexport const SET_FOCUS_DATE_ACTION = 'SET_FOCUS_DATE';\nexport const SET_OFFSET_DATE_ACTION = 'SET_OFFSET_DATE';\nexport const SET_RANGE_END_ACTION = 'SET_RANGE_END';\nexport const SET_YEAR_ACTION = 'SET_YEAR';\n","import { NUMBER_OF_STATIC_CALENDAR_DAYS } from '../constants';\nimport type { DPCalendarConfig } from '../types';\nimport { daysInMonth, getDay, newDate } from './date';\n\nconst getStartOffset = (d: Date, startDay: number): number =>\n  (getDay(d) + 7 - startDay) % 7;\n\nexport const getCalendarMonthParams = (\n  month: number,\n  year: number,\n  { mode, startDay }: DPCalendarConfig,\n): {\n  start: number;\n  length: number;\n} => {\n  const firstMonthDay = newDate(year, month, 1);\n  const lastDay = daysInMonth(firstMonthDay);\n\n  const startOffset = getStartOffset(firstMonthDay, startDay);\n\n  const length =\n    mode === 'static'\n      ? NUMBER_OF_STATIC_CALENDAR_DAYS\n      : startOffset +\n        lastDay +\n        6 -\n        getStartOffset(newDate(year, month, lastDay), startDay);\n\n  return {\n    start: startOffset,\n    length,\n  };\n};\n","import { getCleanDate, getFirstDayOfTheMonth } from './date';\n\n// Converting Date to Number is equal of calling Date.getTime\nexport const isSame = (d1: Date, d2: Date): boolean => +d1 === +d2;\n\nexport const isBefore = (d1: Date, d2: Date): boolean => d1 < d2;\n\nexport const isAfter = (d1: Date, d2: Date): boolean => d1 > d2;\n\nexport const isBetween = (start: Date, d: Date, end: Date): boolean =>\n  (isAfter(d, start) && isBefore(d, end)) ||\n  (isBefore(d, start) && isAfter(d, end));\n\nexport const maxDateAndAfter = (\n  maxDate: Date | undefined,\n  date: Date,\n): boolean => !!maxDate && isAfter(date, maxDate);\n\nexport const minDateAndBefore = (\n  minDate: Date | undefined,\n  date: Date,\n): boolean => !!minDate && isBefore(date, minDate);\n\nexport const minDateAndBeforeFirstDay = (\n  minDate: Date | undefined,\n  date: Date,\n): boolean => !!minDate && isBefore(date, getFirstDayOfTheMonth(minDate));\n\nexport const includeDate = (dates: Date[], d: Date): boolean =>\n  dates.some((date) => isSame(getCleanDate(date), d));\n","import {\n  DEFAULT_CALENDAR_CONFIG,\n  DEFAULT_DATES_CONFIG,\n  DEFAULT_LOCALE_CONFIG,\n  DEFAULT_TIME_CONFIG,\n  DEFAULT_YEARS_CONFIG,\n} from '../constants';\nimport type { DPConfig, DPDatesMode, DPUserConfig } from '../types';\nimport { getCleanDate, sortDatesAsc, sortMinMax } from './date';\nimport { includeDate } from './predicates';\n\nexport const createConfig = ({\n  selectedDates = [],\n  focusDate = null,\n  offsetDate = null,\n  onDatesChange,\n  calendar = {},\n  dates = {},\n  locale,\n  time = {},\n  exclude = {},\n  years,\n}: DPUserConfig = {}): DPConfig => {\n  const { minDate, maxDate, ...restDates } = dates;\n  const { offsets = [], ...restCalendarParams } = calendar;\n  const { minTime, maxTime, ...restTime } = time;\n\n  const [minD, maxD] = sortMinMax(minDate, maxDate, sortDatesAsc);\n  const [minT, maxT] = sortMinMax(minTime, maxTime, (a, b) => a.h - b.h);\n\n  const focus =\n    focusDate && includeDate(selectedDates, focusDate) ? focusDate : null;\n\n  return {\n    selectedDates,\n    offsetDate,\n    focusDate: focus,\n    onDatesChange,\n    calendar: {\n      ...DEFAULT_CALENDAR_CONFIG,\n      ...restCalendarParams,\n      offsets: DEFAULT_CALENDAR_CONFIG.offsets.concat(offsets),\n    },\n    years: { ...DEFAULT_YEARS_CONFIG, ...years },\n    dates: {\n      ...DEFAULT_DATES_CONFIG,\n      ...restDates,\n      minDate: minD && getCleanDate(minD),\n      maxDate: maxD && getCleanDate(maxD),\n    },\n    locale: {\n      ...DEFAULT_LOCALE_CONFIG,\n      ...locale,\n    },\n    time: {\n      ...DEFAULT_TIME_CONFIG,\n      minTime: minT,\n      maxTime: maxT,\n      ...restTime,\n    },\n    exclude,\n  };\n};\n\nexport const isRange = (mode: DPDatesMode): boolean => mode === 'range';\n","import type { DPDatesMode, DPDayRange } from '../types';\nimport { isRange } from './config';\nimport { getCleanDate } from './date';\nimport { isBefore, isBetween, isSame } from './predicates';\n\nconst RANGE_START = 'range-start';\nconst RANGE_END = 'range-end';\nconst WILL_BE_IN_RANGE_START = 'will-be-range-start';\nconst WILL_BE_IN_RANGE_END = 'will-be-range-end';\n\nexport const getDateRangeState = (\n  date: Date,\n  rangeEnd: Date | null,\n  selectedDates: Date[],\n  mode: DPDatesMode,\n): DPDayRange => {\n  if (!isRange(mode) || selectedDates.length === 0) return '';\n  const [start, end] = selectedDates;\n\n  // We have completed range\n  if (start && end) {\n    if (isSame(date, getCleanDate(start))) {\n      return isSame(getCleanDate(start), getCleanDate(end))\n        ? `${RANGE_START} ${RANGE_END}`\n        : RANGE_START;\n    }\n    if (isSame(date, getCleanDate(end))) return RANGE_END;\n    return isBetween(getCleanDate(start), date, getCleanDate(end))\n      ? 'in-range'\n      : '';\n  }\n\n  // We have 1 date and rangeEnd date\n  if (!end && rangeEnd) {\n    if (isBetween(getCleanDate(start), date, rangeEnd))\n      return 'will-be-in-range';\n    // rangeEnd is before start\n    if (isBefore(rangeEnd, getCleanDate(start))) {\n      if (isSame(date, rangeEnd)) return WILL_BE_IN_RANGE_START;\n      return isSame(date, getCleanDate(start)) ? WILL_BE_IN_RANGE_END : '';\n    }\n\n    // rangeEnd is after start;\n    if (isSame(date, getCleanDate(start))) return WILL_BE_IN_RANGE_START;\n    return isSame(date, rangeEnd) ? WILL_BE_IN_RANGE_END : '';\n  }\n\n  return '';\n};\n","import type {\n  DPCalendar,\n  DPConfig,\n  DPDay,\n  DPReducerState,\n  DPState,\n} from '../types';\nimport {\n  addToDate,\n  formatMonthName,\n  getCleanDate,\n  getDateParts,\n  newDate,\n  toLocaleDateString,\n} from './date';\nimport { isExcluded } from './excluded';\nimport { getCalendarMonthParams } from './get-calendar-month-params';\nimport { getDateRangeState } from './get-date-range-state';\nimport {\n  includeDate,\n  isSame,\n  maxDateAndAfter,\n  minDateAndBefore,\n} from './predicates';\n\nconst createCalendar = (\n  offsetDate: Date,\n  selectedDates: Date[],\n  { rangeEnd }: DPReducerState,\n  config: DPConfig,\n): DPCalendar => {\n  const {\n    dates: { mode, minDate, maxDate },\n    locale,\n    calendar,\n    exclude,\n  } = config;\n  const { locale: localeStr, day, year } = locale;\n  const { M, Y } = getDateParts(offsetDate);\n  const { start, length } = getCalendarMonthParams(M, Y, calendar);\n\n  const days: DPDay[] = [];\n\n  for (let i = 1; i <= length; i++) {\n    const date = newDate(Y, M, i - start);\n\n    days.push({\n      $date: date,\n      day: toLocaleDateString(date, localeStr, { day }),\n      now: isSame(getCleanDate(newDate()), date),\n      range: getDateRangeState(date, rangeEnd, selectedDates, mode),\n      disabled:\n        minDateAndBefore(minDate, date) ||\n        maxDateAndAfter(maxDate, date) ||\n        isExcluded(date, exclude),\n      selected: includeDate(selectedDates, date),\n      inCurrentMonth: getDateParts(date).M === M,\n    });\n  }\n\n  return {\n    year: toLocaleDateString(offsetDate, localeStr, { year }),\n    month: formatMonthName(offsetDate, locale),\n    days,\n  };\n};\n\nexport const createCalendars = ({\n  selectedDates,\n  state,\n  config,\n}: DPState): DPCalendar[] => {\n  const { offsetDate } = state;\n  return config.calendar.offsets.map((offset) =>\n    createCalendar(\n      addToDate(offsetDate, offset, 'month'),\n      selectedDates,\n      state,\n      config,\n    ),\n  );\n};\n","import { WEEK_DAYS } from '../constants';\nimport type { DPCalendar, DPConfig } from '../types';\nimport { toLocaleDateString } from './date';\n\nexport const createWeekdays = (\n  { days }: DPCalendar,\n  { locale: { locale, weekday } }: DPConfig,\n): string[] =>\n  WEEK_DAYS.map((day: number) =>\n    toLocaleDateString(days[day].$date, locale, { weekday }),\n  );\n","import type { DPUseCalendars } from './types';\nimport { createCalendars } from './utils/create-calendars';\nimport { createWeekdays } from './utils/create-weekdays';\n\nexport const useCalendars: DPUseCalendars = (state) => {\n  const calendars = createCalendars(state);\n\n  return {\n    calendars,\n    weekDays: createWeekdays(calendars[0], state.config),\n  };\n};\n","import { Dispatch } from 'react';\n\nimport {\n  SET_FOCUS_DATE_ACTION,\n  SET_OFFSET_DATE_ACTION,\n  SET_RANGE_END_ACTION,\n  SET_YEAR_ACTION,\n} from './constants';\nimport type {\n  DPReducerAction,\n  DPReducerState,\n  DPSetFocusDate,\n  DPSetOffsetDate,\n  DPSetRangeEndAction,\n  DPSetYearAction,\n} from './types';\n\nexport const stateReducer = (\n  state: DPReducerState,\n  action: DPReducerAction,\n): DPReducerState => {\n  switch (action.type) {\n    case SET_FOCUS_DATE_ACTION:\n      return {\n        ...state,\n        focusDate: action.date,\n      };\n    case SET_OFFSET_DATE_ACTION:\n      return {\n        ...state,\n        offsetDate: action.date,\n      };\n    case SET_RANGE_END_ACTION:\n      return {\n        ...state,\n        rangeEnd: action.date,\n      };\n    case SET_YEAR_ACTION:\n      return {\n        ...state,\n        offsetYear: action.year,\n      };\n    default:\n      return state;\n  }\n};\n\nexport const setFocus = (\n  dispatch: Dispatch<DPSetFocusDate>,\n  date: DPReducerState['focusDate'],\n): void => dispatch({ type: SET_FOCUS_DATE_ACTION, date });\n\nexport const setOffset = (\n  dispatch: Dispatch<DPSetOffsetDate>,\n  date: Date,\n): void => dispatch({ type: SET_OFFSET_DATE_ACTION, date });\n\nexport const setRangeEnd = (\n  dispatch: Dispatch<DPSetRangeEndAction>,\n  date: DPReducerState['rangeEnd'],\n): void => dispatch({ type: SET_RANGE_END_ACTION, date });\n\nexport const setYear = (\n  dispatch: Dispatch<DPSetYearAction>,\n  year: number,\n): void => dispatch({ type: SET_YEAR_ACTION, year });\n","import { maxDateAndAfter, minDateAndBefore } from './predicates';\n\nexport const getCalendarStartDate = (\n  minDate: Date | undefined,\n  maxDate: Date | undefined,\n  NOW: Date,\n): Date => {\n  if (maxDateAndAfter(maxDate, NOW)) return maxDate as Date;\n  if (minDateAndBefore(minDate, NOW)) return minDate as Date;\n  return NOW;\n};\n","import type { DPYearsConfig, DPYearsMode } from '../types';\n\n/*\n * Default behavior years collection\n * It get start of the decade -1\n * It really comfortable to navigate through years\n * because you have links to the previous and next decade\n * 2019 2020 2021\n * 2022 2023 2024\n * 2025 2026 2027\n * 2028 2029 2030\n */\nexport const getStartDecadePosition = (year: number): number =>\n  year - (year % 10) - 1;\n\n/*\n * If number of the year is default = 12 and current year is 2022\n * It will show this matrix\n * 2017 2018 2019\n * 2020 2021 2022 👌\n * 2023 2024 2025\n * 2026 2027 2028\n * I think it is nicer to look at the future more ;)\n */\nexport const getFluidYearPosition = (\n  year: number,\n  numberOfYears: number,\n): number => year - (numberOfYears / 2 - (numberOfYears % 2 === 0 ? 1 : 0));\n\n/*\n * It will place offsetYear at the end of the collection\n * 2015 2016 2017\n * 2012 2013 2014\n * 2018 2019 2020\n * 2021 2022 2023\n */\nexport const getStartExactPosition = (\n  year: number,\n  numberOfYears: number,\n): number => year - numberOfYears + 1;\n\nexport const isExactMode = (mode: DPYearsMode): boolean => mode === 'exact';\n\nexport const getCurrentYearPosition = (\n  year: number,\n  { mode, numberOfYears }: DPYearsConfig,\n): number => {\n  if (isExactMode(mode)) return getStartExactPosition(year, numberOfYears);\n  return mode === 'decade'\n    ? getStartDecadePosition(year)\n    : getFluidYearPosition(year, numberOfYears);\n};\n","import type { DPConfig, DPReducerState } from '../types';\nimport { getCleanDate, getDateParts, newDate } from './date';\nimport { getCalendarStartDate } from './get-calendar-start-date';\nimport { getCurrentYearPosition } from './get-current-year-position';\n\nexport const createInitialState = (config: DPConfig): DPReducerState => {\n  const {\n    selectedDates,\n    offsetDate,\n    focusDate,\n    dates: { minDate, maxDate },\n    years,\n  } = config;\n\n  let initialOffsetDate = undefined;\n\n  if (offsetDate) {\n    initialOffsetDate = getCalendarStartDate(\n      minDate,\n      maxDate,\n      getCleanDate(offsetDate),\n    );\n  } else {\n    initialOffsetDate =\n      selectedDates.length > 0\n        ? selectedDates[selectedDates.length - 1]\n        : getCalendarStartDate(minDate, maxDate, getCleanDate(newDate()));\n  }\n\n  return {\n    focusDate,\n    rangeEnd: null,\n    offsetDate: initialOffsetDate,\n    offsetYear: getCurrentYearPosition(\n      getDateParts(initialOffsetDate).Y,\n      years,\n    ),\n  };\n};\n","import { Reducer, useReducer } from 'react';\n\nimport { stateReducer } from './state-reducer';\nimport type {\n  DPReducerAction,\n  DPReducerState,\n  DPState,\n  DPUserConfig,\n} from './types';\nimport { createConfig } from './utils/config';\nimport { createInitialState } from './utils/create-initial-state';\n\nexport const useDatePickerState = (config?: DPUserConfig): DPState => {\n  const dpConfig = createConfig(config);\n\n  const [state, dispatch] = useReducer<\n    Reducer<DPReducerState, DPReducerAction>\n  >(stateReducer, createInitialState(dpConfig));\n\n  return {\n    dispatch,\n    selectedDates: dpConfig.selectedDates,\n    state,\n    config: dpConfig,\n  };\n};\n","export const callAll =\n  <Args extends readonly unknown[]>(\n    ...fns: readonly (((...args: Args) => void) | undefined)[]\n  ) =>\n  (...args: Args): void =>\n    fns.forEach((fn) => fn?.(...args));\n\nexport const skipFirst =\n  <Arg1, Arg2>(fn: (arg: Arg2) => void) =>\n  (_arg1: Arg1, arg2: Arg2) =>\n    fn(arg2);\n\nexport const skipAll =\n  (fn: () => void) =>\n  (..._: unknown[]) => {\n    fn();\n    void _;\n  };\n","import { MouseEvent } from 'react';\n\nimport type { DPPropGetter, DPPropsGetterConfig } from '../types';\n\nexport const createPropGetter = (\n  isDisabled: boolean,\n  action: (evt: MouseEvent<HTMLElement>) => void,\n  props: DPPropsGetterConfig = {},\n  selected = false,\n): DPPropGetter => ({\n  role: 'button',\n  tabIndex: 0,\n  ...(isDisabled\n    ? {\n        disabled: true,\n        'aria-disabled': true,\n      }\n    : {\n        onClick(evt: MouseEvent<HTMLElement>) {\n          action(evt);\n        },\n      }),\n  ...(selected ? { 'aria-selected': true } : {}),\n  ...props,\n});\n","import type { DPDatesConfig } from '../types';\nimport { isRange } from './config';\nimport { addAndSortAsc, getCleanDate } from './date';\nimport { includeDate, isSame } from './predicates';\n\nexport const getMultipleDates = (\n  selectedDates: Date[],\n  date: Date,\n  { mode, toggle, limit }: DPDatesConfig,\n): Date[] => {\n  // If toggle is active and we have already selected this date\n  // Then filter it out in all modes\n  if (toggle && includeDate(selectedDates, date))\n    return selectedDates.filter((d) => !isSame(getCleanDate(d), date));\n\n  if (mode === 'multiple')\n    return !limit || selectedDates.length < limit\n      ? addAndSortAsc(selectedDates, date)\n      : selectedDates;\n\n  if (isRange(mode))\n    return selectedDates.length === 2\n      ? [date]\n      : addAndSortAsc(selectedDates, date);\n\n  // mode === 'single'\n  return [date];\n};\n","import { useCallback } from 'react';\n\nimport { setFocus, setRangeEnd as setRangeEndAction } from './state-reducer';\nimport type {\n  DPDay,\n  DPPropsGetterConfig,\n  DPUseDays,\n  DPUseDaysPropGetters,\n} from './types';\nimport { callAll, skipFirst } from './utils/call-all';\nimport { isRange } from './utils/config';\nimport { createPropGetter } from './utils/create-prop-getter';\nimport { formatDate, getCleanDate } from './utils/date';\nimport { getMultipleDates } from './utils/get-multiple-dates';\nimport { includeDate, isSame } from './utils/predicates';\n\nexport const useDays: DPUseDays = ({ selectedDates, config: { locale } }) => ({\n  selectedDates,\n  formattedDates: selectedDates.map((d: Date) => formatDate(d, locale)),\n});\n\nexport const useDaysPropGetters: DPUseDaysPropGetters = ({\n  config,\n  selectedDates,\n  dispatch,\n}) => {\n  const {\n    onDatesChange,\n    dates: { mode, toggle, selectSameDate },\n  } = config;\n\n  const dayButton = useCallback(\n    (\n      { $date, selected, disabled }: DPDay,\n      { onClick, disabled: disabledProps, ...rest }: DPPropsGetterConfig = {},\n    ) =>\n      createPropGetter(\n        disabled || !!disabledProps,\n        (evt) => {\n          if (selected && !toggle) {\n            selectedDates.forEach((d) => {\n              if (isSame(getCleanDate(d), $date)) setFocus(dispatch, d);\n            });\n\n            // Handle case when user could select same date in range mode\n            if (!isRange(mode) || !selectSameDate) return;\n          }\n          if (isRange(mode) && selectedDates.length === 1) {\n            setRangeEndAction(dispatch, null);\n          }\n          callAll(\n            onClick,\n            skipFirst((d: Date) => {\n              if (onDatesChange && typeof onDatesChange === 'function') {\n                const nextSelectedDates = getMultipleDates(\n                  selectedDates,\n                  d,\n                  config.dates,\n                );\n                setFocus(\n                  dispatch,\n                  includeDate(nextSelectedDates, d) ? d : null,\n                );\n                onDatesChange(nextSelectedDates);\n              }\n            }),\n          )(evt, $date);\n        },\n        {\n          ...rest,\n          ...(isRange(mode) &&\n            selectedDates.length === 1 && {\n              onMouseEnter() {\n                setRangeEndAction(dispatch, $date);\n              },\n            }),\n        },\n        selected,\n      ),\n    [\n      mode,\n      toggle,\n      config.dates,\n      onDatesChange,\n      selectedDates,\n      dispatch,\n      selectSameDate,\n    ],\n  );\n\n  return { dayButton };\n};\n","import { NUMBER_OF_MONTHS } from '../constants';\nimport type { DPDatesConfig, DPLocaleConfig, DPMonth } from '../types';\nimport {\n  formatMonthName,\n  getDateParts,\n  getFirstDayOfTheMonth,\n  newDate,\n} from './date';\nimport { maxDateAndAfter, minDateAndBeforeFirstDay } from './predicates';\n\nexport const createMonths = (\n  offsetDate: Date,\n  selectedDates: Date[],\n  locale: DPLocaleConfig,\n  { minDate, maxDate }: DPDatesConfig,\n): DPMonth[] => {\n  const months = [];\n  const { M, Y } = getDateParts(offsetDate);\n  const { Y: nY, M: nM } = getDateParts(newDate());\n\n  // Months in Date has values 0 - 11\n  for (let i = 0; i < NUMBER_OF_MONTHS; i++) {\n    const $date = newDate(Y, i, 1);\n\n    months.push({\n      $date,\n      month: formatMonthName($date, locale),\n      selected: selectedDates.some((d) => {\n        const { M: dM, Y: dY } = getDateParts(d);\n        return dY === Y && dM === i;\n      }),\n      active: M === i,\n      now: i === nM && Y === nY,\n      disabled:\n        minDateAndBeforeFirstDay(minDate, $date) ||\n        maxDateAndAfter(maxDate, getFirstDayOfTheMonth($date)),\n    });\n  }\n\n  return months;\n};\n","import { useCallback } from 'react';\n\nimport { setOffset } from './state-reducer';\nimport type {\n  DPMonth,\n  DPMonthsPropGettersConfig,\n  DPPropsGetterConfig,\n  DPUseMonths,\n  DPUseMonthsActions,\n  DPUseMonthsPropGetters,\n} from './types';\nimport { callAll, skipFirst } from './utils/call-all';\nimport { createMonths } from './utils/create-months';\nimport { createPropGetter } from './utils/create-prop-getter';\nimport {\n  addToDate,\n  getFirstDayOfTheMonth,\n  subtractFromDate,\n} from './utils/date';\nimport { maxDateAndAfter, minDateAndBeforeFirstDay } from './utils/predicates';\n\nexport const useMonths: DPUseMonths = ({\n  selectedDates,\n  state: { offsetDate },\n  config: { locale, dates },\n}) => ({\n  months: createMonths(offsetDate, selectedDates, locale, dates),\n});\n\nexport const useMonthsPropGetters: DPUseMonthsPropGetters = ({\n  state: { offsetDate },\n  config: { dates },\n  dispatch,\n}) => {\n  const { minDate, maxDate } = dates;\n\n  const callSetOffset = useCallback(\n    (d: Date) => setOffset(dispatch, d),\n    [dispatch],\n  );\n\n  const monthButton = useCallback(\n    (\n      { $date, disabled, selected }: DPMonth,\n      { onClick, disabled: disabledProps, ...rest }: DPPropsGetterConfig = {},\n    ) =>\n      createPropGetter(\n        !!disabledProps || disabled,\n        (evt) => callAll(onClick, skipFirst(callSetOffset))(evt, $date),\n        rest,\n        selected,\n      ),\n    [callSetOffset],\n  );\n\n  const nextMonthButton = useCallback(\n    ({\n      onClick,\n      disabled,\n      step = 1,\n      ...rest\n    }: DPMonthsPropGettersConfig = {}) => {\n      const nextMonth = addToDate(offsetDate, step, 'month');\n      const isDisabled =\n        !!disabled ||\n        maxDateAndAfter(maxDate, getFirstDayOfTheMonth(nextMonth));\n\n      return createPropGetter(\n        isDisabled,\n        (evt) => callAll(onClick, skipFirst(callSetOffset))(evt, nextMonth),\n        rest,\n      );\n    },\n    [offsetDate, maxDate, callSetOffset],\n  );\n\n  const previousMonthButton = useCallback(\n    ({\n      onClick,\n      disabled,\n      step = 1,\n      ...rest\n    }: DPMonthsPropGettersConfig = {}) => {\n      const nextMonth = subtractFromDate(offsetDate, step, 'month');\n      const isDisabled =\n        !!disabled || minDateAndBeforeFirstDay(minDate, nextMonth);\n\n      return createPropGetter(\n        isDisabled,\n        (evt) => callAll(onClick, skipFirst(callSetOffset))(evt, nextMonth),\n        rest,\n      );\n    },\n    [offsetDate, minDate, callSetOffset],\n  );\n\n  return { monthButton, nextMonthButton, previousMonthButton };\n};\n\nexport const useMonthsActions: DPUseMonthsActions = ({\n  state: { offsetDate },\n  dispatch,\n}) => {\n  const setMonth = useCallback((d: Date) => setOffset(dispatch, d), [dispatch]);\n\n  const setNextMonth = useCallback(\n    () => setMonth(addToDate(offsetDate, 1, 'month')),\n    [offsetDate, setMonth],\n  );\n\n  const setPreviousMonth = useCallback(\n    () => setMonth(subtractFromDate(offsetDate, 1, 'month')),\n    [offsetDate, setMonth],\n  );\n\n  return {\n    setMonth,\n    setNextMonth,\n    setPreviousMonth,\n  };\n};\n","import { MINUTES_IN_THE_DAY } from '../constants';\nimport type { DPConfig, DPTime } from '../types';\nimport { formatTime, getDateParts, getTimeDate, newDate } from './date';\nimport { isSame, maxDateAndAfter, minDateAndBefore } from './predicates';\n\nexport const createTime = (\n  d: Date | null,\n  { time, locale }: DPConfig,\n): DPTime[] => {\n  const NOW = newDate();\n  const { interval, minTime, maxTime } = time;\n  const { Y, M, D } = getDateParts(d || NOW);\n  const segments = MINUTES_IN_THE_DAY / interval;\n\n  const t = [];\n  const minDate = getTimeDate(Y, M, D, minTime);\n  const maxDate = getTimeDate(Y, M, D, maxTime);\n\n  for (let i = 0; i < segments; i++) {\n    const $date = newDate(Y, M, D, 0, i * interval);\n    const disabled =\n      !d || minDateAndBefore(minDate, $date) || maxDateAndAfter(maxDate, $date);\n\n    t.push({\n      $date,\n      disabled,\n      now: isSame($date, NOW),\n      selected: d ? isSame(d, $date) : false,\n      time: formatTime($date, locale),\n    });\n  }\n\n  return t;\n};\n","import { useCallback } from 'react';\n\nimport { setFocus } from './state-reducer';\nimport type {\n  DPPropsGetterConfig,\n  DPTime,\n  DPUseTime,\n  DPUseTimePropGetter,\n} from './types';\nimport { callAll, skipFirst } from './utils/call-all';\nimport { createPropGetter } from './utils/create-prop-getter';\nimport { createTime } from './utils/create-time';\nimport { isSame } from './utils/predicates';\n\nexport const useTime: DPUseTime = ({ state: { focusDate }, config }) => ({\n  time: createTime(focusDate, config),\n});\n\nexport const useTimePropGetter: DPUseTimePropGetter = ({\n  selectedDates,\n  state: { focusDate },\n  config: { onDatesChange },\n  dispatch,\n}) => {\n  const timeButton = useCallback(\n    (\n      { $date, selected, disabled }: DPTime,\n      { onClick, disabled: disabledProps, ...rest }: DPPropsGetterConfig = {},\n    ) =>\n      createPropGetter(\n        disabled || !!disabledProps,\n        (evt) => {\n          if (selected) return;\n          callAll(\n            onClick,\n            skipFirst((d: Date) => {\n              if (onDatesChange && typeof onDatesChange === 'function') {\n                const newSelected = selectedDates.map((selected) => {\n                  return isSame(focusDate as Date, selected) ? d : selected;\n                });\n                setFocus(dispatch, d);\n                onDatesChange(newSelected);\n              }\n            }),\n          )(evt, $date);\n        },\n        rest,\n        selected,\n      ),\n    [selectedDates, onDatesChange, dispatch, focusDate],\n  );\n\n  return { timeButton };\n};\n","import type { DPDatesConfig, DPYear, DPYearsConfig } from '../types';\nimport { getDateParts, getFirstDayOfTheMonth, newDate } from './date';\nimport { maxDateAndAfter, minDateAndBeforeFirstDay } from './predicates';\n\nexport const createYears = (\n  currentYear: number,\n  offsetDate: Date,\n  selectedDates: Date[],\n  { numberOfYears }: DPYearsConfig,\n  { minDate, maxDate }: DPDatesConfig,\n): DPYear[] => {\n  const { Y, M, D } = getDateParts(offsetDate);\n  const years = [];\n  const { Y: nY } = getDateParts(newDate());\n\n  for (let i = 0; i < numberOfYears; i++) {\n    const year = currentYear + i;\n    const $date = newDate(year, M, D);\n\n    years.push({\n      $date,\n      active: Y === year,\n      disabled:\n        minDateAndBeforeFirstDay(minDate, $date) ||\n        maxDateAndAfter(maxDate, getFirstDayOfTheMonth($date)),\n      now: year === nY,\n      selected: selectedDates.some((d) => getDateParts(d).Y === year),\n      year,\n    });\n  }\n\n  return years;\n};\n","import { useCallback } from 'react';\n\nimport { setOffset, setYear } from './state-reducer';\nimport type {\n  DPPropsGetterConfig,\n  DPUseYears,\n  DPUseYearsActions,\n  DPUseYearsPropGetters,\n  DPYear,\n} from './types';\nimport { callAll, skipAll, skipFirst } from './utils/call-all';\nimport { createPropGetter } from './utils/create-prop-getter';\nimport { createYears } from './utils/create-years';\nimport { getDateParts, newDate } from './utils/date';\nimport { isExactMode } from './utils/get-current-year-position';\nimport { isSame, maxDateAndAfter, minDateAndBefore } from './utils/predicates';\n\nexport const useYears: DPUseYears = ({\n  selectedDates,\n  state: { offsetDate, offsetYear },\n  config: { years, dates },\n}) => ({\n  years: createYears(offsetYear, offsetDate, selectedDates, years, dates),\n});\n\nexport const useYearsPropGetters: DPUseYearsPropGetters = ({\n  state: { offsetYear, offsetDate },\n  config: { dates, years: yearsConfig },\n  dispatch,\n}) => {\n  const { minDate, maxDate } = dates;\n  const { step, numberOfYears, mode } = yearsConfig;\n  const { D, M } = getDateParts(offsetDate);\n\n  const callSetOffset = useCallback(\n    (d: Date) => setOffset(dispatch, d),\n    [dispatch],\n  );\n\n  const yearButton = useCallback(\n    (\n      { $date, disabled, selected }: DPYear,\n      { onClick, disabled: disabledProps, ...rest }: DPPropsGetterConfig = {},\n    ) =>\n      createPropGetter(\n        !!disabledProps || disabled,\n        (evt) => callAll(onClick, skipFirst(callSetOffset))(evt, $date),\n        rest,\n        selected,\n      ),\n    [callSetOffset],\n  );\n\n  const nextYearsButton = useCallback(\n    ({ onClick, disabled, ...rest }: DPPropsGetterConfig = {}) => {\n      const endYearDate = newDate(offsetYear + numberOfYears - 1, M, D);\n      const isDisabled =\n        !!disabled ||\n        maxDateAndAfter(maxDate, endYearDate) ||\n        (isExactMode(mode) && !!maxDate && isSame(maxDate, endYearDate));\n\n      return createPropGetter(\n        isDisabled,\n        (evt) =>\n          callAll(\n            onClick,\n            skipAll(() => setYear(dispatch, offsetYear + step)),\n          )(evt),\n        rest,\n      );\n    },\n    [maxDate, dispatch, offsetYear, step, D, M, numberOfYears, mode],\n  );\n\n  const previousYearsButton = useCallback(\n    ({ onClick, disabled, ...rest }: DPPropsGetterConfig = {}) => {\n      const isDisabled =\n        !!disabled || minDateAndBefore(minDate, newDate(offsetYear, M, D));\n\n      return createPropGetter(\n        isDisabled,\n        (evt) =>\n          callAll(\n            onClick,\n            skipAll(() => setYear(dispatch, offsetYear - step)),\n          )(evt),\n        rest,\n      );\n    },\n    [minDate, dispatch, offsetYear, step, M, D],\n  );\n\n  return {\n    yearButton,\n    nextYearsButton,\n    previousYearsButton,\n  };\n};\n\nexport const useYearsActions: DPUseYearsActions = ({\n  state: { offsetYear },\n  config: { years },\n  dispatch,\n}) => {\n  const { step } = years;\n  const setYearAction = useCallback(\n    (d: Date) => setOffset(dispatch, d),\n    [dispatch],\n  );\n\n  const setNextYears = useCallback(\n    () => setYear(dispatch, offsetYear + step),\n    [offsetYear, step, dispatch],\n  );\n\n  const setPreviousYears = useCallback(\n    () => setYear(dispatch, offsetYear - step),\n    [offsetYear, step, dispatch],\n  );\n\n  return {\n    setYear: setYearAction,\n    setNextYears,\n    setPreviousYears,\n  };\n};\n","import type { DPUseDatePicker } from './types';\nimport { useCalendars } from './use-calendars';\nimport { useDatePickerState } from './use-date-picker-state';\nimport { useDays, useDaysPropGetters } from './use-days';\nimport {\n  useMonths,\n  useMonthsActions,\n  useMonthsPropGetters,\n} from './use-months';\nimport { useTime, useTimePropGetter } from './use-time';\nimport { useYears, useYearsActions, useYearsPropGetters } from './use-years';\n\nexport const useDatePicker: DPUseDatePicker = (config) => {\n  const dpState = useDatePickerState(config);\n\n  return {\n    data: {\n      ...useCalendars(dpState),\n      ...useDays(dpState),\n      ...useMonths(dpState),\n      ...useTime(dpState),\n      ...useYears(dpState),\n    },\n    propGetters: {\n      ...useDaysPropGetters(dpState),\n      ...useMonthsPropGetters(dpState),\n      ...useTimePropGetter(dpState),\n      ...useYearsPropGetters(dpState),\n    },\n    actions: {\n      ...useMonthsActions(dpState),\n      ...useYearsActions(dpState),\n    },\n  };\n};\n","import React, { createContext, FC, useContext } from 'react';\n\nimport { DatePickerContextValue, DatePickerProviderProps } from './types';\nimport { useDatePicker } from './use-date-picker';\n\nconst DatePickerContext = createContext<DatePickerContextValue>(\n  {} as DatePickerContextValue,\n);\n\nexport const useDatePickerContext = () => useContext(DatePickerContext);\n\nexport const DatePickerProvider: FC<DatePickerProviderProps> = ({\n  children,\n  config = {},\n}) => (\n  <DatePickerContext.Provider value={useDatePicker(config)}>\n    {children}\n  </DatePickerContext.Provider>\n);\n","import React, { createContext, FC, useContext } from 'react';\n\nimport type { DatePickerProviderProps, DPState } from './types';\nimport { useDatePickerState } from './use-date-picker-state';\n\nconst DatePickerStateContext = createContext<DPState>({} as DPState);\n\nexport const useDatePickerStateContext = () =>\n  useContext(DatePickerStateContext);\n\nexport const DatePickerStateProvider: FC<DatePickerProviderProps> = ({\n  children,\n  config = {},\n}) => (\n  <DatePickerStateContext.Provider value={useDatePickerState(config)}>\n    {children}\n  </DatePickerStateContext.Provider>\n);\n","import { useDatePickerStateContext } from './date-picker-state-provider';\nimport type {\n  DPUseContextCalendars,\n  DPUseContextDays,\n  DPUseContextDaysPropGetters,\n  DPUseContextMonths,\n  DPUseContextMonthsActions,\n  DPUseContextMonthsPropGetters,\n  DPUseContextTime,\n  DPUseContextTimePropGetters,\n  DPUseContextYears,\n  DPUseContextYearsActions,\n  DPUseContextYearsPropGetters,\n} from './types';\nimport { useCalendars } from './use-calendars';\nimport { useDays, useDaysPropGetters } from './use-days';\nimport {\n  useMonths,\n  useMonthsActions,\n  useMonthsPropGetters,\n} from './use-months';\nimport { useTime, useTimePropGetter } from './use-time';\nimport { useYears, useYearsActions, useYearsPropGetters } from './use-years';\n\nexport const useContextCalendars: DPUseContextCalendars = () =>\n  useCalendars(useDatePickerStateContext());\n\nexport const useContextDays: DPUseContextDays = () =>\n  useDays(useDatePickerStateContext());\n\nexport const useContextDaysPropGetters: DPUseContextDaysPropGetters = () =>\n  useDaysPropGetters(useDatePickerStateContext());\n\nexport const useContextMonths: DPUseContextMonths = () =>\n  useMonths(useDatePickerStateContext());\n\nexport const useContextMonthsPropGetters: DPUseContextMonthsPropGetters = () =>\n  useMonthsPropGetters(useDatePickerStateContext());\n\nexport const useContextMonthsActions: DPUseContextMonthsActions = () =>\n  useMonthsActions(useDatePickerStateContext());\n\nexport const useContextTime: DPUseContextTime = () =>\n  useTime(useDatePickerStateContext());\n\nexport const useContextTimePropGetters: DPUseContextTimePropGetters = () =>\n  useTimePropGetter(useDatePickerStateContext());\n\nexport const useContextYears: DPUseContextYears = () =>\n  useYears(useDatePickerStateContext());\n\nexport const useContextYearsPropGetters: DPUseContextYearsPropGetters = () =>\n  useYearsPropGetters(useDatePickerStateContext());\n\nexport const useContextYearsActions: DPUseContextYearsActions = () =>\n  useYearsActions(useDatePickerStateContext());\n"],"names":["setRangeEndAction"],"mappings":"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"}