{"version":3,"file":"index.mjs","sources":["../src/libs/useClickOutside.ts","../src/components/DisplayYears.tsx","../src/assets/chevron-left.svg?react","../src/assets/chevron-right.svg?react","../src/components/Header.tsx","../src/constant/theme.ts","../src/constant/constants.ts","../src/libs/classNames.ts","../src/libs/dayjs-config.ts","../src/libs/getDayFormat.ts","../src/libs/handleDayKeyDown.ts","../src/libs/isMobile.ts","../src/rangePicker/Day.tsx","../src/components/TitleOfWeek.tsx","../src/datePicker/datePicker.style.tsx","../src/libs/createCalendar.ts","../src/libs/sliceDaysOfMonthToWeeks.ts","../src/rangePicker/Months.tsx","../src/components/DisplayMonths.tsx","../src/libs/mergeObjects.ts","../src/libs/dayjsLocalized.ts","../src/libs/useCalendarController.ts","../src/libs/useControlled.ts","../src/rangePicker/RangePicker.tsx","../src/datePicker/Day.tsx","../src/datePicker/Months.tsx","../src/datePicker/DatePicker.tsx","../src/calendar/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\ntype Event = MouseEvent | TouchEvent;\n\nexport const useOnClickOutside = <T extends HTMLElement = HTMLElement>(\n  handler: (event: Event) => void,\n) => {\n  const ref = useRef<T>(null);\n\n  useEffect(() => {\n    const listener = (event: Event) => {\n      const el = ref.current;\n      if (!el || el.contains(event.target as Node)) {\n        return;\n      }\n      handler(event);\n    };\n\n    document.addEventListener(\"mousedown\", listener);\n    document.addEventListener(\"touchstart\", listener);\n\n    return () => {\n      document.removeEventListener(\"mousedown\", listener);\n      document.removeEventListener(\"touchstart\", listener);\n    };\n  }, [handler]);\n\n  return { ref };\n};\n","import dayjs, { Dayjs } from \"dayjs\";\nimport { Dispatch, SetStateAction } from \"react\";\nimport styled from \"styled-components\";\n\nimport { useOnClickOutside } from \"../libs/useClickOutside\";\n\ntype Props = {\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  setDisplayYears: Dispatch<SetStateAction<boolean>>;\n};\n\nconst YEAR_COUNT = 120;\n\nexport const DisplayYears = ({ setDisplayYears, setSource }: Props) => {\n  const { ref } = useOnClickOutside<HTMLDivElement>(() =>\n    setDisplayYears(false),\n  );\n\n  const years = [];\n  for (let i = 0; i < YEAR_COUNT; i++) {\n    const label = dayjs().subtract(i, \"year\").format(\"YYYY\");\n    years.push(\n      <button\n        type=\"button\"\n        key={label}\n        onClick={() => {\n          setSource(prev => prev.set(\"year\", Number(label)));\n          setDisplayYears(open => !open);\n        }}\n      >\n        {label}\n      </button>,\n    );\n  }\n\n  return (\n    <Wrapper\n      className=\"tp-calendar-year-select\"\n      ref={ref}\n      role=\"listbox\"\n      aria-label=\"Choose year\"\n    >\n      {years}\n    </Wrapper>\n  );\n};\n\nconst Wrapper = styled.div`\n  display: flex;\n  flex-direction: column;\n  position: absolute;\n  top: 20px;\n  left: 0;\n  right: 0;\n  margin: auto;\n  width: 80px;\n  height: 40vh;\n  background: #fff;\n  overflow: auto;\n  padding: 10px 0px;\n  border-radius: ${({ theme }) => theme.shape.borderRadius}px;\n  z-index: 10;\n\n  > button {\n    display: block;\n    margin: 0;\n    padding: 6px 0;\n    text-align: center;\n    width: 100%;\n    color: ${({ theme }) => theme.grey[900]};\n    border: 0;\n    background: transparent;\n    font: inherit;\n    cursor: pointer;\n\n    &:hover,\n    &:focus-visible {\n      background-color: ${({ theme }) => theme.primary.light};\n      outline: none;\n    }\n  }\n`;\n","import * as React from \"react\";\nconst SvgChevronLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 4.876, height: 7.908, viewBox: \"0 0 4.876 7.908\", fill: \"currentColor\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"ic_keyboard_arrow_down_24px_1_\", d: \"M241.923 1911.5l3.031 3.031 3.031-3.031.923.923-3.954 3.954-3.954-3.954z\", className: \"semi-dark\", transform: \"rotate(90 1078.688 837.689)\" }));\nexport default SvgChevronLeft;\n","import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 4.877, height: 7.91, viewBox: \"0 0 4.877 7.91\", fill: \"currentColor\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"ic_keyboard_arrow_down_24px_1_\", d: \"M241.923 1911.5l3.031 3.031 3.031-3.031.923.923-3.954 3.954-3.954-3.954z\", transform: \"rotate(-90 -831.296 1080.205)\" }));\nexport default SvgChevronRight;\n","import { Dayjs } from \"dayjs\";\nimport { Dispatch, SetStateAction, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { DisplayYears } from \"./DisplayYears\";\nimport ArrowLeft from \"../assets/chevron-left.svg?react\";\nimport ArrowRight from \"../assets/chevron-right.svg?react\";\nimport { InitialComponents } from \"../constant\";\n\ntype Props = {\n  displayMonths: boolean;\n  jalali: boolean;\n  numberOfMonths: number;\n  source: Dayjs;\n  components?: InitialComponents;\n  setDisplayMonths: Dispatch<SetStateAction<boolean>>;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n};\n\nexport const Header = ({\n  jalali,\n  source,\n  setSource,\n  components,\n  displayMonths,\n  numberOfMonths,\n  setDisplayMonths,\n}: Props) => {\n  const [displayYears, setDisplayYears] = useState(false);\n\n  const prev = () => {\n    setSource(source.subtract(1, displayMonths ? \"year\" : \"month\"));\n  };\n\n  const next = () => {\n    setSource(source.add(1, displayMonths ? \"year\" : \"month\"));\n  };\n\n  const prevLabel = displayMonths\n    ? `Previous year, ${source.format(\"YYYY\")}`\n    : `Previous month, ${source.format(\"MMMM YYYY\")}`;\n  const nextLabel = displayMonths\n    ? `Next year, ${source.format(\"YYYY\")}`\n    : `Next month, ${source.format(\"MMMM YYYY\")}`;\n\n  const renderTitles = () => {\n    if (displayMonths) {\n      return (\n        <>\n          <button\n            type=\"button\"\n            className=\"tp-calendar-header-title\"\n            onClick={() => setDisplayYears(open => !open)}\n            aria-label={`Choose year, ${source.format(\"YYYY\")}`}\n          >\n            {source.format(\n              components?.header?.format ??\n                (displayMonths ? \"YYYY\" : \"YYYY-MMMM\"),\n            )}\n          </button>\n          {displayYears && (\n            <DisplayYears\n              setDisplayYears={setDisplayYears}\n              setSource={setSource}\n            />\n          )}\n        </>\n      );\n    }\n\n    const titles = [];\n    for (let i = 0; i < numberOfMonths; i++) {\n      const monthSource = source.add(i, \"month\");\n      titles.push(\n        <button\n          type=\"button\"\n          key={i}\n          className=\"tp-calendar-header-title\"\n          onClick={() => setDisplayMonths(open => !open)}\n          aria-label={`Choose month, ${monthSource.format(\"MMMM YYYY\")}`}\n        >\n          {monthSource.format(components?.header?.format ?? \"YYYY MMMM\")}\n        </button>,\n      );\n    }\n    return titles;\n  };\n\n  return (\n    <Wrapper\n      className=\"tp-calendar-header\"\n      $numberOfMonths={numberOfMonths}\n      $jalali={jalali}\n      $displayMonths={displayMonths}\n    >\n      <button\n        type=\"button\"\n        aria-label={prevLabel}\n        className={components?.header?.monthIcons?.left ? \"\" : \"action left\"}\n        onClick={prev}\n      >\n        {components?.header?.monthIcons?.left &&\n          !displayMonths &&\n          components.header.monthIcons.left}\n        {components?.header?.yearIcons?.left &&\n          displayMonths &&\n          components.header.yearIcons.left}\n        {!components?.header?.monthIcons?.left && (\n          <>\n            <ArrowLeft />\n            {displayMonths ? <ArrowLeft /> : null}\n          </>\n        )}\n      </button>\n      {renderTitles()}\n      <button\n        type=\"button\"\n        aria-label={nextLabel}\n        className={components?.header?.monthIcons?.right ? \"\" : \"action right\"}\n        onClick={next}\n      >\n        {components?.header?.monthIcons?.right &&\n          !displayMonths &&\n          components.header.monthIcons.right}\n        {components?.header?.yearIcons?.right &&\n          displayMonths &&\n          components.header.yearIcons.right}\n        {!components?.header?.monthIcons?.right && (\n          <>\n            <ArrowRight />\n            {displayMonths ? <ArrowRight /> : null}\n          </>\n        )}\n      </button>\n    </Wrapper>\n  );\n};\n\ntype WrapperProps = {\n  $jalali: boolean;\n  $numberOfMonths: number;\n  $displayMonths: boolean;\n};\n\nconst Wrapper = styled.div<WrapperProps>`\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  height: 55px;\n  position: relative;\n  background-color: ${({ theme }) => theme.primary.main};\n  flex-direction: ${({ $jalali }) => ($jalali ? \"row-reverse\" : \"row\")};\n  border-radius: ${({ theme }) => theme.shape.borderRadius}px;\n\n  .tp-calendar-header-title {\n    color: #fff;\n    text-align: center;\n    cursor: pointer;\n    border: 0;\n    background: transparent;\n    font: inherit;\n    border-radius: ${({ theme }) => theme.shape.borderRadius}px;\n    direction: ${({ $jalali }) => ($jalali ? \"ltr\" : \"rtl\")};\n    width: ${({ $numberOfMonths, $displayMonths }) =>\n      $displayMonths ? \"120px\" : `${100 / $numberOfMonths}% `};\n    margin: auto;\n\n    &:focus-visible {\n      outline: 2px solid #fff;\n      outline-offset: 2px;\n    }\n  }\n\n  button.action {\n    position: absolute;\n    height: 55px;\n    width: 55px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    border: 0;\n    background: transparent;\n    color: #fff;\n\n    &:focus-visible {\n      outline: 2px solid #fff;\n      outline-offset: 2px;\n    }\n\n    &.right {\n      transform: ${({ $jalali }) =>\n        !$jalali ? \"rotate(0deg)\" : \"rotate(180deg)\"};\n      ${({ $jalali }) => ($jalali ? \"left:0;\" : \"right: 0;\")}\n    }\n    &.left {\n      transform: ${({ $jalali }) =>\n        !$jalali ? \"rotate(0deg)\" : \"rotate(180deg)\"};\n      ${({ $jalali }) => ($jalali ? \"right:0;\" : \"left: 0;\")}\n    }\n  }\n\n  svg {\n    width: 10px;\n    height: 15px;\n    color: ${({ theme }) => theme.background.default};\n  }\n`;\n","export const theme = {\n  primary: {\n    light: \"#d0f4f0\",\n    main: \"#13c8b5\",\n    dark: \"#12baa9\",\n  },\n  grey: {\n    700: \"#707070\",\n    900: \"#1b1b1d\",\n  },\n  background: {\n    default: \"#f5f5f5\",\n  },\n  text: {\n    disabled: \"#BABABA\",\n  },\n  shape: {\n    borderRadius: 4,\n  },\n};\n\nexport interface Theme {\n  primary: {\n    light: string;\n    main: string;\n    dark: string;\n  };\n  grey: {\n    700: string;\n    900: string;\n  };\n  background: {\n    default: string;\n  };\n  text: {\n    disabled: string;\n  };\n  shape: {\n    borderRadius: number;\n  };\n}\n","export const FORMAT_DATE = \"YYYY-MM-DD\";\n","type ClassValue =\n  | string\n  | number\n  | false\n  | null\n  | undefined\n  | Record<string, unknown>;\n\nexport const classNames = (...args: ClassValue[]) => {\n  const classes: Array<string | number> = [];\n  for (const arg of args) {\n    if (!arg) continue;\n    const argType = typeof arg;\n    if (argType === \"string\" || argType === \"number\") {\n      classes.push(arg as string | number);\n    } else if (argType === \"object\") {\n      const obj = arg as Record<string, unknown> & { toString?: () => string };\n      if (obj.toString && obj.toString !== Object.prototype.toString) {\n        classes.push(obj.toString());\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key) && obj[key]) {\n            classes.push(key);\n          }\n        }\n      }\n    }\n  }\n  return classes.join(\" \");\n};\n","/**\n * dayjs is configured here once for the entire library.\n *\n * Two ordering constraints have to be respected, in this order:\n *\n *   1. Locale modules (`dayjs/locale/*`) must register themselves on\n *      `dayjs.Ls` BEFORE `dayjs.extend(jalaliPlugin)` runs.\n *   2. Each locale module is imported via a default-binding so the\n *      bundler keeps the module in the graph and its registration\n *      side-effect actually executes; bare `import \"dayjs/locale/X\"`\n *      forms get tree-shaken in production.\n *\n * Why the order matters: the jalali plugin's `extend` callback re-\n * registers the `fa` locale merged with its Persian-calendar\n * `jmonths` array. If a `dayjs/locale/fa.js` registration ran later,\n * it would overwrite the augmented entry and strip `jmonths`, and\n * `format(\"MMMM\")` on a Jalali date would crash with\n * \"Cannot read properties of undefined (reading '2')\".\n */\nimport jalaliPlugin from \"@zoomit/dayjs-jalali-plugin\";\nimport _dayjs from \"dayjs\";\nimport deLocale from \"dayjs/locale/de\";\nimport esLocale from \"dayjs/locale/es\";\nimport faLocale from \"dayjs/locale/fa\";\nimport frLocale from \"dayjs/locale/fr\";\nimport itLocale from \"dayjs/locale/it\";\nimport jaLocale from \"dayjs/locale/ja\";\nimport ruLocale from \"dayjs/locale/ru\";\nimport trLocale from \"dayjs/locale/tr\";\nimport zhLocale from \"dayjs/locale/zh\";\nimport isBetween from \"dayjs/plugin/isBetween\";\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\n\nconst REGISTERED_LOCALES = [\n  deLocale,\n  esLocale,\n  faLocale,\n  frLocale,\n  itLocale,\n  jaLocale,\n  ruLocale,\n  trLocale,\n  zhLocale,\n];\nif (REGISTERED_LOCALES.length === 0) {\n  throw new Error(\"react-trip-date: locale registration failed.\");\n}\n\n_dayjs.extend(jalaliPlugin);\n_dayjs.extend(isBetween);\n_dayjs.extend(isSameOrBefore);\n\nconst dayjs: (\n  date?: _dayjs.ConfigType,\n  format?:\n    | string\n    | {\n        locale?: string;\n        format?: string;\n        utc?: boolean;\n        jalali?: boolean;\n      }\n    | string[],\n  strict?: boolean,\n) => _dayjs.Dayjs = _dayjs;\n\nexport { dayjs };\n","import { Dayjs } from \"dayjs\";\n\nimport { dayjs } from \"./dayjs-config\";\n\nexport const getDayFormat = (day: Dayjs, jalali?: boolean) => {\n  return dayjs(day, { jalali: jalali, format: \"YYYY-MM-DD\" })\n    .calendar(\"gregory\")\n    .format(\"YYYY-MM-DD\");\n};\n","import { Dayjs } from \"dayjs\";\nimport { KeyboardEvent } from \"react\";\n\ntype Options = {\n  day: Dayjs;\n  source: Dayjs;\n  setSource: (next: Dayjs) => void;\n  setFocusedDate: (date: string) => void;\n  requestFocus?: (date: string) => void;\n};\n\nconst FMT = \"YYYY-MM-DD\";\n\nexport function handleDayKeyDown(\n  event: KeyboardEvent<HTMLElement>,\n  { day, source, setSource, setFocusedDate, requestFocus }: Options,\n): boolean {\n  let next: Dayjs | undefined;\n\n  switch (event.key) {\n    case \"ArrowLeft\":\n      next = day.subtract(1, \"day\");\n      break;\n    case \"ArrowRight\":\n      next = day.add(1, \"day\");\n      break;\n    case \"ArrowUp\":\n      next = day.subtract(1, \"week\");\n      break;\n    case \"ArrowDown\":\n      next = day.add(1, \"week\");\n      break;\n    case \"Home\":\n      next = day.startOf(\"week\");\n      break;\n    case \"End\":\n      next = day.endOf(\"week\");\n      break;\n    case \"PageUp\":\n      next = event.shiftKey\n        ? day.subtract(1, \"year\")\n        : day.subtract(1, \"month\");\n      break;\n    case \"PageDown\":\n      next = event.shiftKey ? day.add(1, \"year\") : day.add(1, \"month\");\n      break;\n    default:\n      return false;\n  }\n\n  event.preventDefault();\n  event.stopPropagation();\n\n  const nextStr = next.format(FMT);\n  requestFocus?.(nextStr);\n  setFocusedDate(nextStr);\n\n  if (next.month() !== source.month() || next.year() !== source.year()) {\n    setSource(next.startOf(\"month\"));\n  }\n\n  return true;\n}\n","/* eslint-disable */\nexport const isMobile = () => {\n  return (\n    /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n      navigator.userAgent || navigator.vendor || (window as any).opera,\n    ) ||\n    /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n      (navigator.userAgent || navigator.vendor || (window as any).opera).substr(\n        0,\n        4,\n      ),\n    )\n  );\n};\n","import { Dayjs } from \"dayjs\";\nimport {\n  Dispatch,\n  KeyboardEvent,\n  MouseEvent,\n  MutableRefObject,\n  SetStateAction,\n  useEffect,\n  useRef,\n} from \"react\";\nimport styled from \"styled-components\";\n\nimport { FORMAT_DATE } from \"../constant\";\nimport {\n  RangePickerComponents,\n  RangePickerSelectedDays,\n} from \"./rangePicker.type\";\nimport { classNames } from \"../libs/classNames\";\nimport { dayjs } from \"../libs/dayjs-config\";\nimport { getDayFormat } from \"../libs/getDayFormat\";\nimport { handleDayKeyDown } from \"../libs/handleDayKeyDown\";\nimport { isMobile } from \"../libs/isMobile\";\n\ninterface Props {\n  day: Dayjs;\n  source: Dayjs;\n  jalali: boolean;\n  hoverDay?: string;\n  disabled: boolean;\n  numberOfMonth: number;\n  disabledDays: string[];\n  disabledBeforeToday: boolean;\n  disabledBeforeDate?: string;\n  disabledAfterDate?: string;\n  allowDisabledDaysSpan: boolean;\n  components?: RangePickerComponents;\n  selectedDays?: RangePickerSelectedDays;\n  setHoverDay: Dispatch<SetStateAction<string | undefined>>;\n  setSelectedDays: Dispatch<SetStateAction<RangePickerSelectedDays>>;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  dayClasses?: (day: Dayjs) => string[];\n  focusedDate: string;\n  setFocusedDate: (date: string) => void;\n  focusRef: MutableRefObject<string | null>;\n  requestFocus: (date: string) => void;\n}\n\nconst TODAY_GREG = () => dayjs().format(FORMAT_DATE);\n\nexport const Day = ({\n  day,\n  source,\n  setSource,\n  jalali,\n  selectedDays,\n  disabledDays,\n  allowDisabledDaysSpan,\n  hoverDay,\n  disabled,\n  components,\n  setHoverDay,\n  setSelectedDays,\n  numberOfMonth,\n  disabledBeforeToday,\n  disabledBeforeDate,\n  disabledAfterDate,\n  dayClasses,\n  focusedDate,\n  setFocusedDate,\n  focusRef,\n  requestFocus,\n}: Props) => {\n  const ref = useRef<HTMLButtonElement>(null);\n  const dateFormat = getDayFormat(day, jalali);\n  const isFocused = focusedDate === dateFormat;\n\n  const effectiveBefore = (() => {\n    if (!disabledBeforeToday) return disabledBeforeDate;\n    const today = TODAY_GREG();\n    return disabledBeforeDate && dayjs(disabledBeforeDate).isAfter(today)\n      ? disabledBeforeDate\n      : today;\n  })();\n\n  const isDisabledDate = (target: string): boolean => {\n    if (disabledDays.includes(target)) return true;\n    if (effectiveBefore && dayjs(target).isBefore(effectiveBefore)) return true;\n    if (disabledAfterDate && dayjs(target).isAfter(disabledAfterDate))\n      return true;\n    return false;\n  };\n\n  useEffect(() => {\n    if (\n      isFocused &&\n      ref.current &&\n      focusRef.current === dateFormat &&\n      document.activeElement !== ref.current\n    ) {\n      ref.current.focus({ preventScroll: true });\n      focusRef.current = null;\n    }\n  }, [isFocused, dateFormat, focusRef]);\n\n  const commit = (next: RangePickerSelectedDays) => {\n    setSelectedDays(next);\n  };\n\n  const handleChangeState = (from: string, to: string) => {\n    if (disabled) return;\n    if (dayjs(from).isBefore(to)) {\n      commit({ from, to });\n    } else {\n      commit({ from: to, to: from });\n    }\n  };\n\n  const handleSelect = () => {\n    if (disabled || isDisabledDate(dateFormat)) return;\n\n    // First click — set the \"from\" date.\n    if (!selectedDays?.from && !selectedDays?.to) {\n      setHoverDay(\"\");\n      commit({ from: dateFormat, to: \"\" });\n      return;\n    }\n\n    // Second click — set the \"to\" date.\n    if (selectedDays?.from && !selectedDays?.to) {\n      const disables = disabledDays.filter(item =>\n        dayjs(item).isBetween(selectedDays.from, dateFormat, null, \"[]\"),\n      );\n      if (disables.length && !allowDisabledDaysSpan) {\n        const probe = hoverDay ?? dateFormat;\n        const sorted = [...disables].sort((prev, next) =>\n          dayjs(disables[0]).isBefore(probe)\n            ? dayjs(prev).isSameOrBefore(next)\n              ? -1\n              : 1\n            : dayjs(prev).isSameOrBefore(next)\n              ? 1\n              : -1,\n        );\n        const clamp = sorted[0];\n        if (dayjs(clamp).isBefore(probe)) {\n          handleChangeState(\n            selectedDays.from,\n            getDayFormat(dayjs(clamp).subtract(1, \"day\"), jalali),\n          );\n        } else {\n          handleChangeState(\n            selectedDays.from,\n            getDayFormat(dayjs(clamp).add(1, \"day\"), jalali),\n          );\n        }\n      } else {\n        handleChangeState(selectedDays.from, dateFormat);\n      }\n      return;\n    }\n\n    // Third click — reset.\n    setHoverDay(\"\");\n    commit({ from: dateFormat, to: \"\" });\n  };\n\n  const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    if (disabled) return;\n    setFocusedDate(dateFormat);\n    handleSelect();\n  };\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n    if (\n      handleDayKeyDown(event, {\n        day,\n        source,\n        setSource,\n        setFocusedDate,\n        requestFocus,\n      })\n    ) {\n      return;\n    }\n    if (event.key === \"Enter\" || event.key === \" \") {\n      event.preventDefault();\n      handleSelect();\n    }\n  };\n\n  const hoverOnDay = () => {\n    if (!selectedDays?.to && selectedDays?.from) {\n      setHoverDay(dateFormat);\n    }\n  };\n\n  const getEndDateForClasses = () => {\n    if (!selectedDays) return \"\";\n    if (selectedDays.to) return selectedDays.to;\n    if (hoverDay) return hoverDay;\n    return selectedDays.from;\n  };\n\n  const isRangeSelected = (): boolean => {\n    if (!selectedDays || !selectedDays.from) return false;\n    if (dateFormat === selectedDays.from) return true;\n    const endDate = getEndDateForClasses();\n    if (isDisabledDate(endDate)) return false;\n    return dayjs(dateFormat).isBetween(selectedDays.from, endDate, null, \"[]\");\n  };\n\n  const isInactiveMonth =\n    day.month() !== source.add(numberOfMonth, \"month\").month();\n  const isToday =\n    dayjs()\n      .calendar(jalali ? \"jalali\" : \"gregory\")\n      .format(FORMAT_DATE) === day.format(FORMAT_DATE);\n\n  const disabledClass = isDisabledDate(dateFormat) && !isRangeSelected();\n  const startDateClass =\n    !!selectedDays &&\n    dateFormat ===\n      (dayjs(selectedDays.from).isSameOrBefore(getEndDateForClasses())\n        ? selectedDays.from\n        : selectedDays.to);\n  const endDateClass =\n    !!selectedDays &&\n    dateFormat ===\n      (dayjs(selectedDays.from).isSameOrBefore(getEndDateForClasses())\n        ? selectedDays.to\n        : selectedDays.from);\n\n  const DayComponent = components?.days;\n  const extraDayClasses = dayClasses ? dayClasses(day).join(\" \") : \"\";\n\n  return (\n    <Wrapper\n      ref={ref}\n      type=\"button\"\n      data-test={day.format(FORMAT_DATE)}\n      onClick={handleClick}\n      onKeyDown={handleKeyDown}\n      onMouseEnter={isMobile() ? undefined : hoverOnDay}\n      tabIndex={isFocused ? 0 : -1}\n      role=\"gridcell\"\n      aria-selected={startDateClass || endDateClass || isRangeSelected()}\n      aria-disabled={disabledClass || disabled || undefined}\n      aria-current={isToday ? \"date\" : undefined}\n      aria-label={day.format(\"dddd, MMMM D, YYYY\")}\n      disabled={disabled}\n      className={classNames(\n        {\n          inactive: isInactiveMonth,\n          disabled: disabledClass,\n          \"range-select\": isRangeSelected(),\n          jalali,\n          disable: disabled,\n          same:\n            !!selectedDays && dayjs(selectedDays.from).isSame(selectedDays.to),\n          \"start-date\": startDateClass,\n          \"end-date\": endDateClass,\n          today: isToday,\n        },\n        extraDayClasses,\n        \"tp-calendar-day\",\n      )}\n    >\n      {DayComponent ? (\n        <DayComponent day={day.format(FORMAT_DATE)} jalali={jalali} />\n      ) : (\n        day.format(\"DD\")\n      )}\n    </Wrapper>\n  );\n};\n\nconst Wrapper = styled.button`\n  border: 0;\n  background: transparent;\n  font: inherit;\n  width: 40px;\n  height: 40px;\n  transition: all 0.15s ease-in-out;\n  text-align: center;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-direction: column;\n  margin-bottom: 5px;\n  cursor: pointer;\n  color: ${({ theme }) => theme.grey[900]};\n\n  &:focus-visible {\n    outline: 2px solid ${({ theme }) => theme.primary.dark};\n    outline-offset: 2px;\n  }\n\n  &:hover {\n    background-color: ${({ theme }) => theme.primary.light};\n    color: ${({ theme }) => theme.grey[700]};\n    &.disable {\n      background-color: transparent;\n      color: ${({ theme }) => theme.grey[900]};\n      cursor: default;\n    }\n  }\n\n  &.inactive {\n    color: transparent;\n    visibility: hidden;\n  }\n\n  &.today {\n    border: 1px solid #e2e2e2;\n    border-radius: 50%;\n  }\n\n  &.disabled {\n    color: ${({ theme }) => theme.text.disabled};\n    position: relative;\n    cursor: not-allowed;\n\n    &:hover {\n      background-color: transparent;\n      color: ${({ theme }) => theme.text.disabled};\n    }\n\n    &::after {\n      position: absolute;\n      content: \"\";\n      width: 15px;\n      height: 2px;\n      background-color: ${({ theme }) => theme.text.disabled};\n      transform: rotate(-20deg);\n    }\n  }\n\n  &.range-select {\n    background-color: ${({ theme }) => theme.primary.dark};\n    color: #fff;\n    border: 0;\n    border-radius: 0;\n\n    &:hover {\n      background-color: ${({ theme }) => theme.primary.dark};\n      color: #fff;\n    }\n    box-shadow: 0px 10px 30px -12px ${({ theme }) => theme.primary.dark};\n\n    &.jalali {\n      box-shadow: 0px 10px 30px -12px ${({ theme }) => theme.primary.dark};\n    }\n\n    &.end-date {\n      border-top-right-radius: 25px;\n      border-bottom-right-radius: 25px;\n\n      &.jalali {\n        border-top-left-radius: 25px;\n        border-bottom-left-radius: 25px;\n        border-top-right-radius: 0px;\n        border-bottom-right-radius: 0px;\n      }\n    }\n\n    &.start-date {\n      border-top-left-radius: 25px;\n      border-bottom-left-radius: 25px;\n\n      &.jalali {\n        border-top-left-radius: 0px;\n        border-bottom-left-radius: 0px;\n        border-top-right-radius: 25px;\n        border-bottom-right-radius: 25px;\n      }\n    }\n  }\n\n  &.same {\n    border-top-left-radius: 25px !important;\n    border-bottom-left-radius: 25px !important;\n    border-top-right-radius: 25px !important;\n    border-bottom-right-radius: 25px !important;\n  }\n`;\n","import { ElementType } from \"react\";\nimport styled from \"styled-components\";\n\ntype Props = {\n  jalali: boolean;\n  startOfWeek: number;\n  components?: {\n    titles?: string[];\n    wrapper?: ElementType<{ jalali: boolean; startOfWeek: number }>;\n  };\n};\n\nexport const TitleOfWeek = ({ jalali, startOfWeek, components }: Props) => {\n  let titles = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\n  if (components?.titles) titles = [...components.titles];\n  else if (jalali) titles = [\"ش\", \"ی\", \"د\", \"س\", \"چ\", \"پ\", \"ج\"];\n\n  if (!jalali) {\n    let sow = startOfWeek % 7;\n    if (sow > 0) while (sow--) titles.push(titles.shift()!);\n  }\n\n  if (components?.wrapper) {\n    const WrapperC = components.wrapper;\n    return <WrapperC jalali={jalali} startOfWeek={startOfWeek} />;\n  }\n\n  return (\n    <Wrapper className=\"tp-calendar-week-titles\" $jalali={jalali} role=\"row\">\n      {titles.map(item => (\n        // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n        <p key={item} role=\"columnheader\" aria-label={item}>\n          {item}\n        </p>\n      ))}\n    </Wrapper>\n  );\n};\n\nconst Wrapper = styled.div<{ $jalali: boolean }>`\n  display: flex;\n  text-align: center;\n  justify-content: center;\n  flex-direction: ${({ $jalali }) => ($jalali ? \"row-reverse\" : \"row\")};\n  border-bottom: 1px solid #e2e2e2;\n  margin: 30px 0 15px 0;\n  p {\n    width: 38px;\n    margin-bottom: 15px;\n    margin-left: 5px;\n  }\n`;\n","import styled, { css } from \"styled-components\";\n\ntype DirectionalProps = {\n  $jalali: boolean;\n};\n\ntype MonthProps = {\n  $numberOfMonths: number;\n};\n\nexport const Wrapper = styled.div<DirectionalProps>`\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  position: relative;\n  flex-direction: ${({ $jalali }) => ($jalali ? \"row-reverse\" : \"row\")};\n`;\n\nexport const Month = styled.div<MonthProps>`\n  height: 350px;\n  display: flex;\n  position: relative;\n  align-items: center;\n  flex-direction: column;\n  width: ${({ $numberOfMonths }) => css`calc(${100 / $numberOfMonths}%)`};\n`;\n\nexport const Weeks = styled.div<DirectionalProps>`\n  display: flex;\n  align-items: center;\n  position: relative;\n  flex-direction: ${({ $jalali }) => ($jalali ? \"row-reverse\" : \"row\")};\n`;\n","import { Dayjs } from \"dayjs\";\n\nconst createCalendar = ({\n  source,\n  startOfWeek,\n}: CreateCalendarType): Dayjs[] => {\n  const days: Dayjs[] = [];\n  const daysInMonth = source.daysInMonth();\n  const firstDay = source.startOf(\"month\").day();\n\n  const sow = startOfWeek < 0 ? 0 : startOfWeek % 7;\n  let shift = 0;\n  if (firstDay > sow) shift = firstDay - sow;\n  else if (sow > firstDay) shift = 7 - (sow - firstDay);\n\n  let tmpDay = source.startOf(\"month\").subtract(shift, \"day\");\n  let totalDays = daysInMonth + shift;\n  const remaining = totalDays % 7;\n  if (remaining > 0) totalDays += 7 - remaining;\n  for (let i = 0; i < totalDays; i++) {\n    days.push(tmpDay);\n    tmpDay = tmpDay.add(1, \"day\");\n  }\n  return days;\n};\n\nexport { createCalendar };\n\ninterface CreateCalendarType {\n  source: Dayjs;\n  startOfWeek: number;\n}\n","import { Dayjs } from \"dayjs\";\n\nexport const sliceDaysOfMonthToWeeks = (days: Dayjs[], len: number) => {\n  let i = 0;\n  const weeks: Dayjs[][] = [];\n  while (i * len < days.length) {\n    weeks.push(days.slice(i * len, ++i * len));\n  }\n  return weeks;\n};\n","import { Dayjs } from \"dayjs\";\nimport { Dispatch, SetStateAction, useRef, useState } from \"react\";\n\nimport { Day } from \"./Day\";\nimport {\n  RangePickerComponents,\n  RangePickerSelectedDays,\n} from \"./rangePicker.type\";\nimport { TitleOfWeek } from \"../components/TitleOfWeek\";\nimport { Month, Weeks, Wrapper } from \"../datePicker/datePicker.style\";\nimport { createCalendar } from \"../libs/createCalendar\";\nimport { sliceDaysOfMonthToWeeks } from \"../libs/sliceDaysOfMonthToWeeks\";\n\ninterface Props {\n  source: Dayjs;\n  jalali: boolean;\n  startOfWeek: number;\n  hoverDay?: string;\n  numberOfMonths: number;\n  selectedDays?: RangePickerSelectedDays;\n  disabledDays: string[];\n  disabledBeforeToday: boolean;\n  disabledBeforeDate?: string;\n  disabledAfterDate?: string;\n  disabled: boolean;\n  allowDisabledDaysSpan: boolean;\n  components?: RangePickerComponents;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  setHoverDay: Dispatch<SetStateAction<string | undefined>>;\n  setSelectedDays: Dispatch<SetStateAction<RangePickerSelectedDays>>;\n  dayClasses?: (day: Dayjs) => string[];\n}\n\nconst FMT = \"YYYY-MM-DD\";\nconst monthKey = (source: Dayjs) => source.format(\"YYYY-MM\");\nconst weekKey = (firstDay: Dayjs) => firstDay.format(FMT);\n\nexport const Months = ({\n  allowDisabledDaysSpan,\n  numberOfMonths,\n  startOfWeek,\n  selectedDays,\n  disabledDays,\n  hoverDay,\n  setHoverDay,\n  components,\n  setSelectedDays,\n  disabledBeforeToday,\n  disabledBeforeDate,\n  disabledAfterDate,\n  jalali,\n  disabled,\n  source: sourceProp,\n  setSource,\n  dayClasses,\n}: Props) => {\n  const [focusedDate, setFocusedDate] = useState<string>(\n    () => selectedDays?.from ?? sourceProp.format(FMT),\n  );\n  const focusRef = useRef<string | null>(null);\n  const requestFocus = (date: string) => {\n    focusRef.current = date;\n  };\n\n  const months = [];\n  for (let i = 0; i < numberOfMonths; i++) {\n    const monthSource = sourceProp.add(i, \"month\");\n    const weeksDays: Dayjs[][] = sliceDaysOfMonthToWeeks(\n      createCalendar({\n        source: monthSource,\n        startOfWeek: jalali ? 6 : startOfWeek,\n      }),\n      7,\n    );\n\n    months.push(\n      <Month\n        className=\"tp-calendar-month\"\n        $numberOfMonths={numberOfMonths || 1}\n        key={monthKey(monthSource)}\n        data-test={monthKey(monthSource)}\n        role=\"grid\"\n        aria-label={monthSource.format(\"MMMM YYYY\")}\n      >\n        <TitleOfWeek\n          jalali={jalali}\n          startOfWeek={startOfWeek}\n          components={components?.titleOfWeek}\n        />\n        {weeksDays.map(week => (\n          <Weeks\n            className=\"tp-calendar-week\"\n            $jalali={jalali}\n            data-test={weekKey(week[0])}\n            key={weekKey(week[0])}\n            role=\"row\"\n          >\n            {week.map(day => (\n              <Day\n                day={day}\n                jalali={jalali}\n                numberOfMonth={i}\n                hoverDay={hoverDay}\n                setHoverDay={setHoverDay}\n                components={components}\n                source={sourceProp}\n                setSource={setSource}\n                disabled={disabled}\n                disabledDays={disabledDays}\n                key={day.format(FMT)}\n                selectedDays={selectedDays}\n                setSelectedDays={setSelectedDays}\n                disabledBeforeToday={disabledBeforeToday}\n                allowDisabledDaysSpan={allowDisabledDaysSpan}\n                disabledBeforeDate={disabledBeforeDate}\n                disabledAfterDate={disabledAfterDate}\n                dayClasses={dayClasses}\n                focusedDate={focusedDate}\n                setFocusedDate={setFocusedDate}\n                focusRef={focusRef}\n                requestFocus={requestFocus}\n              />\n            ))}\n          </Weeks>\n        ))}\n      </Month>,\n    );\n  }\n\n  return (\n    <Wrapper className=\"tp-calendar-months\" $jalali={jalali}>\n      {months}\n    </Wrapper>\n  );\n};\n","import { Dayjs } from \"dayjs\";\nimport { Dispatch, SetStateAction } from \"react\";\nimport styled from \"styled-components\";\n\ntype Props = {\n  source: Dayjs;\n  jalali: boolean;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  setDisplayMonths: Dispatch<SetStateAction<boolean>>;\n};\n\nexport const DisplayMonths = ({\n  source,\n  setSource,\n  setDisplayMonths,\n  jalali,\n}: Props) => {\n  const selectMonth = (next: Dayjs) => {\n    setSource(next.month(+next.format(\"M\") - 1));\n    setDisplayMonths(false);\n  };\n\n  // Anchor the day at 1 before changing month — otherwise dayjs rolls a\n  // day-of-month like 31 into the next month when the target month is\n  // shorter, producing duplicates / skips when the source falls late in\n  // its month.\n  const firstOfMonth = source.date(1);\n  const months: Dayjs[] = [];\n  for (let i = 0; i < 12; i++) {\n    months[i] = firstOfMonth.month(i);\n  }\n\n  return (\n    <Wrapper\n      className=\"tp-calendar-month-select\"\n      $jalali={jalali}\n      role=\"listbox\"\n      aria-label=\"Choose month\"\n    >\n      {months.map((item, index) => (\n        <div\n          key={index}\n          onClick={() => selectMonth(item)}\n          onKeyDown={event => {\n            if (event.key === \"Enter\" || event.key === \" \") {\n              event.preventDefault();\n              selectMonth(item);\n            }\n          }}\n          role=\"option\"\n          aria-selected={source.month() === item.month()}\n          tabIndex={0}\n          data-testid=\"month-item-to-select\"\n        >\n          <p>{item.format(\"MMMM\")}</p>\n        </div>\n      ))}\n    </Wrapper>\n  );\n};\n\nconst Wrapper = styled.div<{ $jalali: boolean }>`\n  margin-top: 15px;\n  display: flex;\n  flex: 1 1;\n  height: 350px;\n  flex-wrap: wrap;\n  flex-direction: ${({ $jalali }) => ($jalali ? \"row-reverse\" : \"row\")};\n  > div {\n    flex-basis: calc(25% - 4px);\n    justify-content: center;\n    text-align: center;\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n    border: 2px solid #fff;\n    background-color: ${({ theme }) => theme.primary.main};\n    border-radius: ${({ theme }) => theme.shape.borderRadius}px;\n\n    &:focus-visible {\n      outline: 2px solid ${({ theme }) => theme.primary.dark};\n      outline-offset: 2px;\n    }\n\n    p {\n      color: #fff;\n    }\n  }\n`;\n","type AnyRecord = Record<string, unknown>;\n\nconst isPlainObject = (value: unknown): value is AnyRecord =>\n  typeof value === \"object\" &&\n  value !== null &&\n  !Array.isArray(value) &&\n  Object.getPrototypeOf(value) === Object.prototype;\n\n/**\n * Recursively merge plain objects without mutating any source. Arrays are\n * concatenated and deduped. Anything that is not a plain object is replaced.\n */\nexport const deepMerge = (\n  target: AnyRecord,\n  ...sources: ReadonlyArray<AnyRecord | undefined>\n): AnyRecord => {\n  let result: AnyRecord = isPlainObject(target) ? { ...target } : {};\n\n  for (const source of sources) {\n    if (!isPlainObject(source)) continue;\n    const next: AnyRecord = { ...result };\n    for (const key of Object.keys(source)) {\n      const srcValue = source[key];\n      const tgtValue = next[key];\n      if (isPlainObject(srcValue)) {\n        next[key] = deepMerge(\n          isPlainObject(tgtValue) ? tgtValue : {},\n          srcValue,\n        );\n      } else if (Array.isArray(srcValue) && Array.isArray(tgtValue)) {\n        next[key] = Array.from(new Set([...tgtValue, ...srcValue]));\n      } else {\n        next[key] = srcValue;\n      }\n    }\n    result = next;\n  }\n\n  return result;\n};\n","import { Dayjs } from \"dayjs\";\n\nimport { dayjs } from \"./dayjs-config\";\n\nexport const dayjsLocalized = (\n  jalali: boolean = false,\n  date?: string,\n  locale: string = \"en\",\n): Dayjs => {\n  return dayjs(date)\n    .calendar(jalali ? \"jalali\" : \"gregory\")\n    .locale(jalali ? \"fa\" : locale || \"en\");\n};\n","import { Dayjs } from \"dayjs\";\nimport {\n  Dispatch,\n  RefObject,\n  SetStateAction,\n  useEffect,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { dayjsLocalized } from \"./dayjsLocalized\";\nimport { getDayFormat } from \"./getDayFormat\";\n\nconst SINGLE_MONTH_BREAKPOINT = 580;\nconst MONTH_WIDTH = 320;\n\nexport type DateWindow = { start: string; end: string };\n\nexport interface UseCalendarControllerOptions {\n  autoResponsive: boolean;\n  initialMonthAndYear: string | undefined;\n  jalali: boolean;\n  locale: string | undefined;\n  numberOfMonthsProp: number;\n  onRangeDateInScreen?: (window: DateWindow) => void;\n  initialFocusDate?: string;\n}\n\nexport interface CalendarController {\n  ref: RefObject<HTMLDivElement>;\n  source: Dayjs;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  numberOfMonths: number;\n  displayMonths: boolean;\n  setDisplayMonths: Dispatch<SetStateAction<boolean>>;\n}\n\nexport function useCalendarController({\n  autoResponsive,\n  initialMonthAndYear,\n  jalali,\n  locale,\n  numberOfMonthsProp,\n  onRangeDateInScreen,\n  initialFocusDate,\n}: UseCalendarControllerOptions): CalendarController {\n  const ref = useRef<HTMLDivElement>(null);\n\n  const [source, setSource] = useState<Dayjs>(() =>\n    dayjsLocalized(jalali, initialMonthAndYear ?? initialFocusDate, locale),\n  );\n  const [displayMonths, setDisplayMonths] = useState(false);\n  const [numberOfMonths, setNumberOfMonths] = useState(numberOfMonthsProp);\n\n  useEffect(() => {\n    if (initialMonthAndYear) {\n      setSource(dayjsLocalized(jalali, initialMonthAndYear, locale));\n    }\n  }, [initialMonthAndYear, jalali, locale]);\n\n  useEffect(() => {\n    if (!autoResponsive) {\n      setNumberOfMonths(numberOfMonthsProp);\n      return;\n    }\n\n    if (typeof window === \"undefined\") return;\n\n    const element = ref.current;\n    if (!element) return;\n\n    const apply = (width: number) => {\n      if (width < SINGLE_MONTH_BREAKPOINT) {\n        setNumberOfMonths(1);\n      } else {\n        setNumberOfMonths(Math.max(1, Math.floor(width / MONTH_WIDTH)));\n      }\n    };\n\n    apply(element.clientWidth);\n\n    if (typeof ResizeObserver === \"undefined\") return;\n    const observer = new ResizeObserver(entries => {\n      for (const entry of entries) {\n        apply(entry.contentRect.width);\n      }\n    });\n    observer.observe(element);\n    return () => observer.disconnect();\n  }, [autoResponsive, numberOfMonthsProp]);\n\n  const onRangeDateInScreenRef = useRef(onRangeDateInScreen);\n  onRangeDateInScreenRef.current = onRangeDateInScreen;\n\n  useEffect(() => {\n    if (!onRangeDateInScreenRef.current) return;\n    const months = Math.max(0, numberOfMonths - 1);\n    let endDate = source.add(months, \"month\");\n    endDate = endDate.date(endDate.daysInMonth());\n    const startDate = source.date(1);\n    onRangeDateInScreenRef.current({\n      start: getDayFormat(startDate, jalali),\n      end: getDayFormat(endDate, jalali),\n    });\n  }, [jalali, numberOfMonths, source]);\n\n  return {\n    ref,\n    source,\n    setSource,\n    numberOfMonths,\n    displayMonths,\n    setDisplayMonths,\n  };\n}\n","import { Dispatch, SetStateAction, useCallback, useRef, useState } from \"react\";\n\n// `process` may be undefined in browser-only consumers that don't replace\n// `process.env.NODE_ENV` at bundle time. Resolve once at module load.\nconst IS_DEV =\n  typeof process !== \"undefined\" &&\n  typeof process.env !== \"undefined\" &&\n  process.env.NODE_ENV !== \"production\";\n\n/**\n * Controlled/uncontrolled state helper. If `controlled` is defined the value\n * is sourced from the parent each render and `onChange` is invoked when the\n * setter is called. Otherwise internal state is used.\n *\n * The controlled/uncontrolled mode is locked in on mount; switching modes\n * after that is unsupported and will warn in development.\n */\nexport function useControlled<T>(\n  controlled: T | undefined,\n  defaultValue: T,\n  onChange?: (value: T) => void,\n): [T, Dispatch<SetStateAction<T>>] {\n  const isControlled = controlled !== undefined;\n  const { current: wasControlled } = useRef(isControlled);\n\n  if (IS_DEV && isControlled !== wasControlled) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      \"[react-trip-date] A controlled prop was switched between controlled and uncontrolled. Pick one for the lifetime of the component.\",\n    );\n  }\n\n  const [internal, setInternal] = useState<T>(defaultValue);\n  const value = isControlled ? (controlled as T) : internal;\n\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  const setValue: Dispatch<SetStateAction<T>> = useCallback(\n    next => {\n      if (!wasControlled) {\n        setInternal(prev => {\n          const resolved =\n            typeof next === \"function\" ? (next as (p: T) => T)(prev) : next;\n          onChangeRef.current?.(resolved);\n          return resolved;\n        });\n      } else {\n        const resolved =\n          typeof next === \"function\"\n            ? (next as (p: T) => T)(controlled as T)\n            : next;\n        onChangeRef.current?.(resolved);\n      }\n    },\n    [wasControlled, controlled],\n  );\n\n  return [value, setValue];\n}\n","import { useState } from \"react\";\nimport { DefaultTheme, ThemeProvider } from \"styled-components\";\n\nimport { Header } from \"../components\";\nimport { Months } from \"./Months\";\nimport { DisplayMonths } from \"../components/DisplayMonths\";\nimport { theme } from \"../constant\";\nimport { RangePickerProps, RangePickerSelectedDays } from \"./rangePicker.type\";\nimport { deepMerge } from \"../libs/mergeObjects\";\nimport { useCalendarController } from \"../libs/useCalendarController\";\nimport { useControlled } from \"../libs/useControlled\";\n\nconst EMPTY_RANGE: RangePickerSelectedDays = { from: \"\", to: \"\" };\n\nexport const RangePicker = ({\n  autoResponsive = true,\n  allowDisabledDaysSpan = false,\n  components,\n  disabled = false,\n  dayClasses,\n  disabledAfterDate,\n  disabledBeforeToday = false,\n  disabledBeforeDate,\n  disabledDays = [],\n  initialMonthAndYear,\n  jalali = false,\n  locale,\n  numberOfMonths: numberOfMonthsProp = 1,\n  onChange,\n  onRangeDateInScreen,\n  selectedDays: selectedDaysProp,\n  startOfWeek = 1,\n  theme: themeProp,\n}: RangePickerProps) => {\n  const [selectedDays, setSelectedDays] =\n    useControlled<RangePickerSelectedDays>(\n      selectedDaysProp,\n      selectedDaysProp ?? EMPTY_RANGE,\n      onChange,\n    );\n  const [hoverDay, setHoverDay] = useState<string>();\n\n  const initialFocusDate =\n    !initialMonthAndYear && selectedDays?.from ? selectedDays.from : undefined;\n\n  const {\n    ref,\n    source,\n    setSource,\n    numberOfMonths,\n    displayMonths,\n    setDisplayMonths,\n  } = useCalendarController({\n    autoResponsive,\n    initialMonthAndYear,\n    jalali,\n    locale,\n    numberOfMonthsProp,\n    onRangeDateInScreen,\n    initialFocusDate,\n  });\n\n  const mergedTheme = themeProp\n    ? (deepMerge(theme, themeProp) as unknown as DefaultTheme)\n    : (theme as DefaultTheme);\n\n  return (\n    <div\n      className=\"tp-calendar\"\n      ref={ref}\n      role=\"group\"\n      aria-label=\"Date range picker\"\n    >\n      <ThemeProvider theme={mergedTheme}>\n        <Header\n          jalali={jalali}\n          source={source}\n          setSource={setSource}\n          components={components}\n          displayMonths={displayMonths}\n          numberOfMonths={numberOfMonths}\n          setDisplayMonths={setDisplayMonths}\n        />\n        {displayMonths ? (\n          <DisplayMonths\n            jalali={jalali}\n            setDisplayMonths={setDisplayMonths}\n            setSource={setSource}\n            source={source}\n          />\n        ) : (\n          <Months\n            source={source}\n            jalali={jalali}\n            disabled={disabled}\n            setSource={setSource}\n            hoverDay={hoverDay}\n            components={components}\n            setHoverDay={setHoverDay}\n            startOfWeek={startOfWeek}\n            disabledDays={disabledDays}\n            selectedDays={selectedDays}\n            numberOfMonths={numberOfMonths}\n            setSelectedDays={setSelectedDays}\n            disabledBeforeToday={disabledBeforeToday}\n            disabledBeforeDate={disabledBeforeDate}\n            disabledAfterDate={disabledAfterDate}\n            allowDisabledDaysSpan={allowDisabledDaysSpan}\n            dayClasses={dayClasses}\n          />\n        )}\n      </ThemeProvider>\n    </div>\n  );\n};\n","import { Dayjs } from \"dayjs\";\nimport {\n  Dispatch,\n  KeyboardEvent,\n  MouseEvent,\n  MutableRefObject,\n  SetStateAction,\n  useEffect,\n  useRef,\n} from \"react\";\nimport styled from \"styled-components\";\n\nimport { FORMAT_DATE } from \"../constant\";\nimport { DatePickerComponents } from \"./datePicker.type\";\nimport { classNames } from \"../libs/classNames\";\nimport { dayjs } from \"../libs/dayjs-config\";\nimport { getDayFormat } from \"../libs/getDayFormat\";\nimport { handleDayKeyDown } from \"../libs/handleDayKeyDown\";\n\ntype Props = {\n  day: Dayjs;\n  source: Dayjs;\n  jalali: boolean;\n  disabled: boolean;\n  numberOfMonth: number;\n  selectedDays: string[];\n  disabledDays: string[];\n  numberOfSelectableDays: number;\n  disabledBeforeToday: boolean;\n  disabledBeforeDate?: string;\n  disabledAfterDate?: string;\n  components?: DatePickerComponents;\n  setSelectedDays: Dispatch<SetStateAction<string[]>>;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  dayClasses?: (day: Dayjs) => string[];\n  focusedDate: string;\n  setFocusedDate: (date: string) => void;\n  focusRef: MutableRefObject<string | null>;\n  requestFocus: (date: string) => void;\n};\n\nconst TODAY_GREG = () => dayjs().format(FORMAT_DATE);\n\nexport const Day = ({\n  day,\n  jalali,\n  source,\n  setSource,\n  disabled,\n  components,\n  selectedDays,\n  disabledDays,\n  numberOfMonth,\n  setSelectedDays,\n  disabledBeforeToday,\n  numberOfSelectableDays,\n  disabledBeforeDate,\n  disabledAfterDate,\n  dayClasses,\n  focusedDate,\n  setFocusedDate,\n  focusRef,\n  requestFocus,\n}: Props) => {\n  const ref = useRef<HTMLButtonElement>(null);\n  const date = getDayFormat(day, jalali);\n  const isFocused = focusedDate === date;\n  const isSelected = selectedDays.includes(date);\n\n  const effectiveBefore = (() => {\n    if (!disabledBeforeToday) return disabledBeforeDate;\n    const today = TODAY_GREG();\n    return disabledBeforeDate && dayjs(disabledBeforeDate).isAfter(today)\n      ? disabledBeforeDate\n      : today;\n  })();\n\n  const isDisabled = (() => {\n    if (disabled) return true;\n    if (disabledDays.includes(date)) return true;\n    if (effectiveBefore && dayjs(date).isBefore(effectiveBefore)) return true;\n    if (disabledAfterDate && dayjs(date).isAfter(disabledAfterDate))\n      return true;\n    return false;\n  })();\n\n  useEffect(() => {\n    if (\n      isFocused &&\n      ref.current &&\n      focusRef.current === date &&\n      document.activeElement !== ref.current\n    ) {\n      ref.current.focus({ preventScroll: true });\n      focusRef.current = null;\n    }\n  }, [isFocused, date, focusRef]);\n\n  const isInactiveMonth =\n    day.month() !== source.add(numberOfMonth, \"month\").month();\n  const isToday =\n    dayjs()\n      .calendar(jalali ? \"jalali\" : \"gregory\")\n      .format(FORMAT_DATE) === day.format(FORMAT_DATE);\n\n  const commit = (next: string[]) => {\n    setSelectedDays(next);\n  };\n\n  const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    if (disabled) return;\n    setFocusedDate(date);\n\n    if (selectedDays.includes(date)) {\n      commit(selectedDays.filter(d => d !== date));\n      return;\n    }\n\n    // Clicking a disabled (but not selected) day must not fire onChange.\n    if (isDisabled) return;\n\n    if (numberOfSelectableDays === 1) {\n      commit([date]);\n      return;\n    }\n\n    if (\n      numberOfSelectableDays > 0 &&\n      selectedDays.length >= numberOfSelectableDays\n    ) {\n      return;\n    }\n\n    commit([...selectedDays, date]);\n  };\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n    if (\n      handleDayKeyDown(event, {\n        day,\n        source,\n        setSource,\n        setFocusedDate,\n        requestFocus,\n      })\n    ) {\n      return;\n    }\n    if (event.key === \"Enter\" || event.key === \" \") {\n      event.preventDefault();\n      handleClick(event as unknown as MouseEvent<HTMLButtonElement>);\n    }\n  };\n\n  const DayComponent = components?.days;\n  const extraDayClasses = dayClasses ? dayClasses(day).join(\" \") : \"\";\n\n  return (\n    <Wrapper\n      ref={ref}\n      type=\"button\"\n      data-test={day.format(FORMAT_DATE)}\n      onClick={handleClick}\n      onKeyDown={handleKeyDown}\n      tabIndex={isFocused ? 0 : -1}\n      role=\"gridcell\"\n      aria-selected={isSelected}\n      aria-disabled={isDisabled || undefined}\n      aria-current={isToday ? \"date\" : undefined}\n      aria-label={day.format(\"dddd, MMMM D, YYYY\")}\n      disabled={disabled}\n      className={classNames(\n        {\n          inactive: isInactiveMonth,\n          selected: isSelected,\n          disabled: isDisabled,\n          disable: disabled,\n          today: isToday,\n        },\n        extraDayClasses,\n        \"tp-calendar-day\",\n      )}\n    >\n      {DayComponent ? (\n        <DayComponent day={day.format(FORMAT_DATE)} jalali={jalali} />\n      ) : (\n        day.format(\"DD\")\n      )}\n    </Wrapper>\n  );\n};\n\nconst Wrapper = styled.button`\n  border: 0;\n  background: transparent;\n  border-radius: 50%;\n  margin-left: 5px;\n  margin-bottom: 5px;\n  width: 38px;\n  height: 38px;\n  transition: all 0.15s ease-in-out;\n  text-align: center;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-direction: column;\n  cursor: pointer;\n  color: ${({ theme }) => theme.grey[900]};\n  user-select: none;\n  font: inherit;\n\n  &:focus-visible {\n    outline: 2px solid ${({ theme }) => theme.primary.dark};\n    outline-offset: 2px;\n  }\n\n  &:hover {\n    background-color: ${({ theme }) => theme.primary.light};\n    color: ${({ theme }) => theme.grey[700]};\n    &.disable {\n      cursor: default;\n      background-color: transparent;\n      color: ${({ theme }) => theme.grey[900]};\n    }\n  }\n\n  &.inactive {\n    color: transparent;\n    visibility: hidden;\n  }\n\n  &.today {\n    border: 1px solid #e2e2e2;\n  }\n\n  &.disabled {\n    color: ${({ theme }) => theme.text.disabled};\n    position: relative;\n    cursor: not-allowed;\n\n    &:hover {\n      background-color: transparent;\n      color: ${({ theme }) => theme.text.disabled};\n    }\n\n    &::after {\n      position: absolute;\n      content: \"\";\n      width: 15px;\n      height: 2px;\n      background-color: ${({ theme }) => theme.text.disabled};\n      transform: rotate(-20deg);\n    }\n  }\n\n  &.selected {\n    color: #fff;\n    background-color: ${({ theme }) => theme.primary.dark};\n    box-shadow: 0px 10px 30px -12px ${({ theme }) => theme.primary.main};\n\n    &:hover {\n      background-color: ${({ theme }) => theme.primary.main};\n      &.disable {\n        color: #fff;\n      }\n    }\n\n    p {\n      color: #fff;\n    }\n  }\n`;\n","import { Dayjs } from \"dayjs\";\nimport { Dispatch, SetStateAction, useRef, useState } from \"react\";\n\nimport { Month, Weeks, Wrapper } from \"./datePicker.style\";\nimport { DatePickerComponents } from \"./datePicker.type\";\nimport { Day } from \"./Day\";\nimport { TitleOfWeek } from \"../components/TitleOfWeek\";\nimport { createCalendar } from \"../libs/createCalendar\";\nimport { sliceDaysOfMonthToWeeks } from \"../libs/sliceDaysOfMonthToWeeks\";\n\ninterface Props {\n  source: Dayjs;\n  jalali: boolean;\n  disabled: boolean;\n  startOfWeek: number;\n  numberOfMonths: number;\n  selectedDays: string[];\n  disabledDays: string[];\n  disabledBeforeToday: boolean;\n  disabledBeforeDate?: string;\n  disabledAfterDate?: string;\n  numberOfSelectableDays: number;\n  components?: DatePickerComponents;\n  setSource: Dispatch<SetStateAction<Dayjs>>;\n  setSelectedDays: Dispatch<SetStateAction<string[]>>;\n  dayClasses?: (day: Dayjs) => string[];\n}\n\nconst FMT = \"YYYY-MM-DD\";\nconst monthKey = (source: Dayjs) => source.format(\"YYYY-MM\");\nconst weekKey = (firstDay: Dayjs) => firstDay.format(FMT);\n\nexport const Months = ({\n  numberOfSelectableDays,\n  numberOfMonths,\n  startOfWeek,\n  selectedDays,\n  disabledDays,\n  setSelectedDays,\n  components,\n  disabledBeforeToday,\n  disabledBeforeDate,\n  disabledAfterDate,\n  jalali,\n  disabled,\n  source: sourceProp,\n  setSource,\n  dayClasses,\n}: Props) => {\n  const [focusedDate, setFocusedDate] = useState<string>(\n    () => selectedDays[0] ?? sourceProp.format(FMT),\n  );\n  const focusRef = useRef<string | null>(null);\n  const requestFocus = (date: string) => {\n    focusRef.current = date;\n  };\n\n  const months = [];\n  for (let i = 0; i < numberOfMonths; i++) {\n    const monthSource = sourceProp.add(i, \"month\");\n    const weeksDays: Dayjs[][] = sliceDaysOfMonthToWeeks(\n      createCalendar({\n        source: monthSource,\n        startOfWeek: jalali ? 6 : startOfWeek,\n      }),\n      7,\n    );\n    months.push(\n      <Month\n        className=\"tp-calendar-month\"\n        $numberOfMonths={numberOfMonths || 1}\n        key={monthKey(monthSource)}\n        data-test={monthKey(monthSource)}\n        role=\"grid\"\n        aria-label={monthSource.format(\"MMMM YYYY\")}\n      >\n        <TitleOfWeek\n          jalali={jalali}\n          startOfWeek={startOfWeek}\n          components={components?.titleOfWeek}\n        />\n        {weeksDays.map(week => (\n          <Weeks\n            className=\"tp-calendar-week\"\n            $jalali={jalali}\n            data-test={weekKey(week[0])}\n            key={weekKey(week[0])}\n            role=\"row\"\n          >\n            {week.map(day => (\n              <Day\n                day={day}\n                jalali={jalali}\n                numberOfMonth={i}\n                disabled={disabled}\n                source={sourceProp}\n                setSource={setSource}\n                components={components}\n                disabledDays={disabledDays}\n                key={day.format(FMT)}\n                selectedDays={selectedDays}\n                setSelectedDays={setSelectedDays}\n                disabledBeforeToday={disabledBeforeToday}\n                disabledBeforeDate={disabledBeforeDate}\n                disabledAfterDate={disabledAfterDate}\n                numberOfSelectableDays={numberOfSelectableDays}\n                dayClasses={dayClasses}\n                focusedDate={focusedDate}\n                setFocusedDate={setFocusedDate}\n                focusRef={focusRef}\n                requestFocus={requestFocus}\n              />\n            ))}\n          </Weeks>\n        ))}\n      </Month>,\n    );\n  }\n\n  return (\n    <Wrapper className=\"tp-calendar-months\" $jalali={jalali}>\n      {months}\n    </Wrapper>\n  );\n};\n","import { DefaultTheme, ThemeProvider } from \"styled-components\";\n\nimport { Header } from \"../components\";\nimport { DatePickerProps } from \"./datePicker.type\";\nimport { DisplayMonths } from \"../components/DisplayMonths\";\nimport { theme } from \"../constant\";\nimport { Months } from \"./Months\";\nimport { deepMerge } from \"../libs/mergeObjects\";\nimport { useCalendarController } from \"../libs/useCalendarController\";\nimport { useControlled } from \"../libs/useControlled\";\n\nexport const DatePicker = ({\n  autoResponsive = true,\n  components,\n  dayClasses,\n  disabled = false,\n  disabledBeforeToday = false,\n  disabledAfterDate,\n  disabledBeforeDate,\n  disabledDays = [],\n  initialMonthAndYear,\n  jalali = false,\n  locale,\n  numberOfMonths: numberOfMonthsProp = 1,\n  numberOfSelectableDays = 0,\n  onChange,\n  onRangeDateInScreen,\n  selectedDays: selectedDaysProp,\n  startOfWeek = 1,\n  theme: themeProp,\n}: DatePickerProps) => {\n  const [selectedDays, setSelectedDays] = useControlled<string[]>(\n    selectedDaysProp,\n    selectedDaysProp ?? [],\n    onChange,\n  );\n\n  const initialFocusDate =\n    !initialMonthAndYear && selectedDays.length > 0\n      ? selectedDays[0]\n      : undefined;\n\n  const {\n    ref,\n    source,\n    setSource,\n    numberOfMonths,\n    displayMonths,\n    setDisplayMonths,\n  } = useCalendarController({\n    autoResponsive,\n    initialMonthAndYear,\n    jalali,\n    locale,\n    numberOfMonthsProp,\n    onRangeDateInScreen,\n    initialFocusDate,\n  });\n\n  const mergedTheme = themeProp\n    ? (deepMerge(theme, themeProp) as unknown as DefaultTheme)\n    : (theme as DefaultTheme);\n\n  return (\n    <div\n      className=\"tp-calendar\"\n      ref={ref}\n      role=\"group\"\n      aria-label=\"Date picker\"\n    >\n      <ThemeProvider theme={mergedTheme}>\n        <Header\n          jalali={jalali}\n          source={source}\n          setSource={setSource}\n          components={components}\n          displayMonths={displayMonths}\n          numberOfMonths={numberOfMonths}\n          setDisplayMonths={setDisplayMonths}\n        />\n        {displayMonths ? (\n          <DisplayMonths\n            jalali={jalali}\n            setDisplayMonths={setDisplayMonths}\n            setSource={setSource}\n            source={source}\n          />\n        ) : (\n          <Months\n            source={source}\n            jalali={jalali}\n            disabled={disabled}\n            setSource={setSource}\n            components={components}\n            startOfWeek={startOfWeek}\n            disabledDays={disabledDays}\n            selectedDays={selectedDays}\n            numberOfMonths={numberOfMonths}\n            setSelectedDays={setSelectedDays}\n            disabledAfterDate={disabledAfterDate}\n            disabledBeforeDate={disabledBeforeDate}\n            disabledBeforeToday={disabledBeforeToday}\n            numberOfSelectableDays={numberOfSelectableDays}\n            dayClasses={dayClasses}\n          />\n        )}\n      </ThemeProvider>\n    </div>\n  );\n};\n","import { Dayjs } from \"dayjs\";\n\nimport { CalendarProps } from \"./calendar.type\";\nimport { createCalendar } from \"../libs/createCalendar\";\nimport { dayjs } from \"../libs/dayjs-config\";\nimport { sliceDaysOfMonthToWeeks } from \"../libs/sliceDaysOfMonthToWeeks\";\n\nexport const Calendar = ({\n  jalali,\n  startOfWeek = 1,\n  children,\n}: CalendarProps) => {\n  const source = dayjs().calendar(jalali ? \"jalali\" : \"gregory\");\n  const weeks: Dayjs[][] = sliceDaysOfMonthToWeeks(\n    createCalendar({\n      source,\n      startOfWeek: jalali ? 6 : startOfWeek,\n    }),\n    7,\n  );\n  return <>{children(weeks)}</>;\n};\n"],"names":["useOnClickOutside","handler","ref","useRef","useEffect","listener","event","el","YEAR_COUNT","DisplayYears","setDisplayYears","setSource","years","i","label","dayjs","jsx","prev","open","Wrapper","styled","theme","SvgChevronLeft","props","React","SvgChevronRight","Header","jalali","source","components","displayMonths","numberOfMonths","setDisplayMonths","displayYears","useState","next","prevLabel","nextLabel","renderTitles","jsxs","Fragment","_a","titles","monthSource","_b","_d","_c","_f","_e","_h","_g","ArrowLeft","_j","_i","_l","_k","_n","_m","_p","_o","ArrowRight","$jalali","$numberOfMonths","$displayMonths","FORMAT_DATE","classNames","args","classes","arg","argType","obj","key","REGISTERED_LOCALES","deLocale","esLocale","faLocale","frLocale","itLocale","jaLocale","ruLocale","trLocale","zhLocale","_dayjs","jalaliPlugin","isBetween","isSameOrBefore","getDayFormat","day","FMT","handleDayKeyDown","setFocusedDate","requestFocus","nextStr","isMobile","TODAY_GREG","Day","selectedDays","disabledDays","allowDisabledDaysSpan","hoverDay","disabled","setHoverDay","setSelectedDays","numberOfMonth","disabledBeforeToday","disabledBeforeDate","disabledAfterDate","dayClasses","focusedDate","focusRef","dateFormat","isFocused","effectiveBefore","today","isDisabledDate","target","commit","handleChangeState","from","to","handleSelect","disables","item","probe","clamp","handleClick","handleKeyDown","hoverOnDay","getEndDateForClasses","isRangeSelected","endDate","isInactiveMonth","isToday","disabledClass","startDateClass","endDateClass","DayComponent","extraDayClasses","TitleOfWeek","startOfWeek","sow","WrapperC","Month","css","Weeks","createCalendar","days","daysInMonth","firstDay","shift","tmpDay","totalDays","remaining","sliceDaysOfMonthToWeeks","len","weeks","monthKey","weekKey","Months","sourceProp","date","months","weeksDays","week","DisplayMonths","selectMonth","firstOfMonth","index","isPlainObject","value","deepMerge","sources","result","srcValue","tgtValue","dayjsLocalized","locale","SINGLE_MONTH_BREAKPOINT","MONTH_WIDTH","useCalendarController","autoResponsive","initialMonthAndYear","numberOfMonthsProp","onRangeDateInScreen","initialFocusDate","setNumberOfMonths","element","apply","width","observer","entries","entry","onRangeDateInScreenRef","startDate","IS_DEV","useControlled","controlled","defaultValue","onChange","isControlled","wasControlled","internal","setInternal","onChangeRef","setValue","useCallback","resolved","EMPTY_RANGE","RangePicker","selectedDaysProp","themeProp","mergedTheme","ThemeProvider","numberOfSelectableDays","isSelected","isDisabled","d","DatePicker","Calendar","children"],"mappings":"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"}