📄 useCalendarState.mjs.map
/home/palash/git/site/node_modules/react-stately/dist/private/calendar/useCalendarState.mjs.map
Language: map • Lines: 1
{"mappings":"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","sources":["packages/react-stately/src/calendar/useCalendarState.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n  alignCenter,\n  alignEnd,\n  alignStart,\n  constrainStart,\n  constrainValue,\n  isEqualDuration,\n  isInvalid,\n  previousAvailableDate\n} from './utils';\nimport {\n  Calendar,\n  CalendarDate,\n  CalendarIdentifier,\n  DateDuration,\n  DateFormatter,\n  endOfMonth,\n  endOfWeek,\n  getDayOfWeek,\n  getWeeksInMonth,\n  GregorianCalendar,\n  isEqualCalendar,\n  isSameDay,\n  startOfMonth,\n  startOfWeek,\n  toCalendar,\n  toCalendarDate,\n  today\n} from '@internationalized/date';\nimport {\n  CalendarPropsBase,\n  CalendarSelectionMode,\n  CalendarState,\n  CalendarValueType,\n  DateValue,\n  MappedDateValue\n} from './types';\nimport {useControlledState} from '../utils/useControlledState';\nimport {useMemo, useState} from 'react';\nimport {ValidationState, ValueBase} from '@react-types/shared';\n\nexport interface CalendarProps<T extends DateValue, M extends CalendarSelectionMode = 'single'>\n  extends\n    CalendarPropsBase,\n    ValueBase<CalendarValueType<T | null, M>, CalendarValueType<MappedDateValue<T>, M>> {\n  /**\n   * Whether single or multiple selection is enabled.\n   *\n   * @default 'single'\n   */\n  selectionMode?: M;\n  /**\n   * Callback that is called for each date of the calendar. If it returns true, then the date is\n   * unavailable.\n   */\n  isDateUnavailable?: (date: DateValue) => boolean;\n}\n\nexport interface CalendarStateOptions<\n  T extends DateValue = DateValue,\n  M extends CalendarSelectionMode = 'single'\n> extends CalendarProps<T, M> {\n  /** The locale to display and edit the value according to. */\n  locale: string;\n  /**\n   * A function that creates a [Calendar](../internationalized/date/Calendar.html)\n   * object for a given calendar identifier. Such a function may be imported from the\n   * `@internationalized/date` package, or manually implemented to include support for\n   * only certain calendars.\n   */\n  createCalendar: (name: CalendarIdentifier) => Calendar;\n  /**\n   * The amount of days that will be displayed at once. This affects how pagination works.\n   *\n   * @default { months: 1 }\n   */\n  visibleDuration?: DateDuration;\n  /**\n   * Determines the alignment of the visible months on initial render based on the current selection\n   * or current date if there is no selection.\n   *\n   * @default 'center'\n   */\n  selectionAlignment?: 'start' | 'center' | 'end';\n}\n/**\n * Provides state management for a calendar component.\n * A calendar displays one or more date grids and allows users to select a single date.\n */\nexport function useCalendarState<\n  T extends DateValue = DateValue,\n  M extends CalendarSelectionMode = 'single'\n>(props: CalendarStateOptions<T, M>): CalendarState<M> {\n  let defaultFormatter = useMemo(() => new DateFormatter(props.locale), [props.locale]);\n  let resolvedOptions = useMemo(() => defaultFormatter.resolvedOptions(), [defaultFormatter]);\n  let {\n    locale,\n    createCalendar,\n    visibleDuration = {months: 1},\n    minValue,\n    maxValue,\n    selectionAlignment,\n    isDateUnavailable,\n    pageBehavior = 'visible',\n    selectionMode = 'single' as M,\n    firstDayOfWeek,\n    weeksInMonth\n  } = props;\n  let calendar = useMemo(\n    () => createCalendar(resolvedOptions.calendar as CalendarIdentifier),\n    [createCalendar, resolvedOptions.calendar]\n  );\n\n  let [value, setControlledValue] = useControlledState<\n    T | T[] | null,\n    MappedDateValue<T> | MappedDateValue<T>[] | null\n  >(props.value as any, (props.defaultValue as any) ?? null, props.onChange as any);\n  let calendarDateValue = useMemo(() => {\n    if (Array.isArray(value)) {\n      return value.map(value => toCalendar(toCalendarDate(value), calendar));\n    } else {\n      return value ? toCalendar(toCalendarDate(value), calendar) : null;\n    }\n  }, [value, calendar]);\n  let timeZone = useMemo(() => {\n    let val = Array.isArray(value) ? value[0] : value;\n    return val && 'timeZone' in val ? val.timeZone : resolvedOptions.timeZone;\n  }, [value, resolvedOptions.timeZone]);\n  let focusedCalendarDate = useMemo(\n    () =>\n      props.focusedValue\n        ? constrainValue(\n            toCalendar(toCalendarDate(props.focusedValue), calendar),\n            minValue,\n            maxValue\n          )\n        : undefined,\n    [props.focusedValue, calendar, minValue, maxValue]\n  );\n  let defaultFocusedCalendarDate = useMemo(() => {\n    if (props.defaultFocusedValue) {\n      return constrainValue(\n        toCalendar(toCalendarDate(props.defaultFocusedValue), calendar),\n        minValue,\n        maxValue\n      );\n    }\n\n    if (calendarDateValue) {\n      return constrainValue(\n        Array.isArray(calendarDateValue) ? calendarDateValue[0] : calendarDateValue,\n        minValue,\n        maxValue\n      );\n    }\n\n    return constrainValue(toCalendar(today(timeZone), calendar), minValue, maxValue);\n  }, [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n  let [focusedDate, setFocusedDate] = useControlledState(\n    focusedCalendarDate,\n    defaultFocusedCalendarDate,\n    props.onFocusChange\n  );\n  let getStartDate = () => {\n    switch (selectionAlignment) {\n      case 'start':\n        return alignStart(focusedDate, visibleDuration, locale, minValue, maxValue);\n      case 'end':\n        return alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue);\n      case 'center':\n      default:\n        return alignCenter(focusedDate, visibleDuration, locale, minValue, maxValue);\n    }\n  };\n\n  let [startDate, setStartDate] = useState(getStartDate);\n  let [isFocused, setFocused] = useState(props.autoFocus || false);\n\n  let [lastVisibleDuration, setLastVisibleDuration] = useState(visibleDuration);\n  if (!isEqualDuration(visibleDuration, lastVisibleDuration)) {\n    setLastVisibleDuration(visibleDuration);\n    setStartDate(getStartDate());\n  }\n\n  let endDate = useMemo(() => {\n    let duration = {...visibleDuration};\n    if (duration.days) {\n      duration.days--;\n    } else {\n      duration.days = -1;\n    }\n    return startDate.add(duration);\n  }, [startDate, visibleDuration]);\n\n  // Reset focused date and visible range when calendar changes.\n  let [lastCalendar, setLastCalendar] = useState(calendar);\n  if (!isEqualCalendar(calendar, lastCalendar)) {\n    let newFocusedDate = toCalendar(focusedDate, calendar);\n    setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n    setFocusedDate(newFocusedDate);\n    setLastCalendar(calendar);\n  }\n\n  if (isInvalid(focusedDate, minValue, maxValue)) {\n    // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n    setFocusedDate(constrainValue(focusedDate, minValue, maxValue));\n  } else if (focusedDate.compare(startDate) < 0) {\n    setStartDate(alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue));\n  } else if (focusedDate.compare(endDate) > 0) {\n    setStartDate(alignStart(focusedDate, visibleDuration, locale, minValue, maxValue));\n  }\n\n  // Sets focus to a specific cell date\n  function focusCell(date: CalendarDate) {\n    date = constrainValue(date, minValue, maxValue);\n    setFocusedDate(date);\n  }\n\n  function normalizeValue(newValue: CalendarDate) {\n    let constrained = constrainValue(newValue, minValue, maxValue);\n    let prev = previousAvailableDate(constrained, startDate, isDateUnavailable);\n    if (!prev) {\n      return null;\n    }\n\n    // The display calendar should not have any effect on the emitted value.\n    // Emit dates in the same calendar as the original value, if any, otherwise gregorian.\n    let baseValue = Array.isArray(value) ? value[0] : value;\n    let calendarValue = toCalendar(prev, baseValue?.calendar || new GregorianCalendar());\n\n    // Preserve time if the input value had one.\n    if (baseValue && 'hour' in baseValue) {\n      return baseValue.set(calendarValue) as T;\n    }\n\n    return calendarValue as T;\n  }\n\n  function setValue(newValue: CalendarDate | CalendarDate[] | null) {\n    if (!props.isDisabled && !props.isReadOnly) {\n      if (newValue === null) {\n        setControlledValue(selectionMode === 'multiple' ? [] : null);\n        return;\n      }\n\n      if (Array.isArray(newValue)) {\n        setControlledValue(newValue.map(normalizeValue).filter(Boolean) as any);\n      } else {\n        let localValue = normalizeValue(newValue);\n        if (localValue) {\n          setControlledValue(localValue as any);\n        }\n      }\n    }\n  }\n\n  let isUnavailable = useMemo(() => {\n    if (!calendarDateValue) {\n      return false;\n    }\n\n    if (Array.isArray(calendarDateValue)) {\n      return calendarDateValue.some(\n        date => isDateUnavailable?.(date) || isInvalid(date, minValue, maxValue)\n      );\n    }\n\n    return (\n      isDateUnavailable?.(calendarDateValue) || isInvalid(calendarDateValue, minValue, maxValue)\n    );\n  }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n  let isValueInvalid = props.isInvalid || props.validationState === 'invalid' || isUnavailable;\n  let validationState: ValidationState | null = isValueInvalid ? 'invalid' : null;\n\n  let pageDuration = useMemo(() => {\n    if (pageBehavior === 'visible') {\n      return visibleDuration;\n    }\n\n    return unitDuration(visibleDuration);\n  }, [pageBehavior, visibleDuration]);\n\n  return {\n    isDisabled: props.isDisabled ?? false,\n    isReadOnly: props.isReadOnly ?? false,\n    value: calendarDateValue as any,\n    setValue: setValue as any,\n    selectionMode,\n    visibleDuration,\n    visibleRange: {\n      start: startDate,\n      end: endDate\n    },\n    minValue,\n    maxValue,\n    focusedDate,\n    timeZone,\n    validationState,\n    isValueInvalid,\n    setFocusedDate(date) {\n      focusCell(date);\n    },\n    focusNextDay() {\n      focusCell(focusedDate.add({days: 1}));\n    },\n    focusPreviousDay() {\n      focusCell(focusedDate.subtract({days: 1}));\n    },\n    focusNextRow() {\n      if (visibleDuration.days) {\n        this.focusNextPage();\n      } else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n        focusCell(focusedDate.add({weeks: 1}));\n      }\n    },\n    focusPreviousRow() {\n      if (visibleDuration.days) {\n        this.focusPreviousPage();\n      } else if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n        focusCell(focusedDate.subtract({weeks: 1}));\n      }\n    },\n    focusNextPage() {\n      let start = startDate.add(pageDuration);\n      setFocusedDate(constrainValue(focusedDate.add(pageDuration), minValue, maxValue));\n      setStartDate(\n        alignStart(\n          constrainStart(focusedDate, start, pageDuration, locale, minValue, maxValue),\n          pageDuration,\n          locale\n        )\n      );\n    },\n    focusPreviousPage() {\n      let start = startDate.subtract(pageDuration);\n      setFocusedDate(constrainValue(focusedDate.subtract(pageDuration), minValue, maxValue));\n      setStartDate(\n        alignStart(\n          constrainStart(focusedDate, start, pageDuration, locale, minValue, maxValue),\n          pageDuration,\n          locale\n        )\n      );\n    },\n    focusSectionStart() {\n      if (visibleDuration.days) {\n        focusCell(startDate);\n      } else if (visibleDuration.weeks) {\n        focusCell(startOfWeek(focusedDate, locale));\n      } else if (visibleDuration.months || visibleDuration.years) {\n        focusCell(startOfMonth(focusedDate));\n      }\n    },\n    focusSectionEnd() {\n      if (visibleDuration.days) {\n        focusCell(endDate);\n      } else if (visibleDuration.weeks) {\n        focusCell(endOfWeek(focusedDate, locale));\n      } else if (visibleDuration.months || visibleDuration.years) {\n        focusCell(endOfMonth(focusedDate));\n      }\n    },\n    focusNextSection(larger) {\n      if (!larger && !visibleDuration.days) {\n        focusCell(focusedDate.add(unitDuration(visibleDuration)));\n        return;\n      }\n\n      if (visibleDuration.days) {\n        this.focusNextPage();\n      } else if (visibleDuration.weeks) {\n        focusCell(focusedDate.add({months: 1}));\n      } else if (visibleDuration.months || visibleDuration.years) {\n        focusCell(focusedDate.add({years: 1}));\n      }\n    },\n    focusPreviousSection(larger) {\n      if (!larger && !visibleDuration.days) {\n        focusCell(focusedDate.subtract(unitDuration(visibleDuration)));\n        return;\n      }\n\n      if (visibleDuration.days) {\n        this.focusPreviousPage();\n      } else if (visibleDuration.weeks) {\n        focusCell(focusedDate.subtract({months: 1}));\n      } else if (visibleDuration.months || visibleDuration.years) {\n        focusCell(focusedDate.subtract({years: 1}));\n      }\n    },\n    selectFocusedDate() {\n      if (!(isDateUnavailable && isDateUnavailable(focusedDate))) {\n        this.selectDate(focusedDate);\n      }\n    },\n    selectDate(date) {\n      if (props.isDisabled || props.isReadOnly) {\n        return;\n      }\n\n      if (selectionMode === 'multiple' && date != null) {\n        let newDate = normalizeValue(date);\n        if (!newDate) {\n          return;\n        }\n\n        let baseValue: T[] = [];\n        if (Array.isArray(value)) {\n          baseValue = value;\n        } else if (value != null) {\n          baseValue = [value];\n        }\n\n        let index = baseValue.findIndex(value => isSameDay(value, newDate));\n        let newValue =\n          index >= 0\n            ? baseValue.slice(0, index).concat(baseValue.slice(index + 1))\n            : [...baseValue, newDate];\n        setControlledValue(newValue);\n      } else {\n        setValue(date);\n      }\n    },\n    isFocused,\n    setFocused,\n    isInvalid(date) {\n      return isInvalid(date, minValue, maxValue);\n    },\n    isSelected(date) {\n      if (!calendarDateValue || this.isCellDisabled(date) || this.isCellUnavailable(date)) {\n        return false;\n      }\n      return Array.isArray(calendarDateValue)\n        ? calendarDateValue.some(value => isSameDay(value, date))\n        : isSameDay(date, calendarDateValue);\n    },\n    isCellFocused(date) {\n      return isFocused && focusedDate && isSameDay(date, focusedDate);\n    },\n    isCellDisabled(date) {\n      return (\n        props.isDisabled ||\n        date.compare(startDate) < 0 ||\n        date.compare(endDate) > 0 ||\n        this.isInvalid(date)\n      );\n    },\n    isCellUnavailable(date) {\n      return props.isDateUnavailable ? props.isDateUnavailable(date) : false;\n    },\n    isPreviousVisibleRangeInvalid() {\n      let prev = startDate.subtract({days: 1});\n      return isSameDay(prev, startDate) || this.isInvalid(prev);\n    },\n    isNextVisibleRangeInvalid() {\n      // Adding may return the same date if we reached the end of time\n      // according to the calendar system (e.g. 9999-12-31).\n      let next = endDate.add({days: 1});\n      return isSameDay(next, endDate) || this.isInvalid(next);\n    },\n    getDatesInWeek(weekIndex, from = startDate) {\n      let date = from.add({weeks: weekIndex});\n      let dates: (CalendarDate | null)[] = [];\n\n      let days = visibleDuration.days && visibleDuration.days < 7 ? visibleDuration.days : 7;\n      if (days === 7) {\n        date = startOfWeek(date, locale, firstDayOfWeek);\n\n        // startOfWeek will clamp dates within the calendar system's valid range, which may\n        // start in the middle of a week. In this case, add null placeholders.\n        let dayOfWeek = getDayOfWeek(date, locale, firstDayOfWeek);\n        for (let i = 0; i < dayOfWeek; i++) {\n          dates.push(null);\n        }\n      }\n\n      while (dates.length < days) {\n        dates.push(date);\n        let nextDate = date.add({days: 1});\n        if (isSameDay(date, nextDate)) {\n          // If the next day is the same, we have hit the end of the calendar system.\n          break;\n        }\n        date = nextDate;\n      }\n\n      // Add null placeholders if at the end of the calendar system.\n      while (dates.length < days) {\n        dates.push(null);\n      }\n\n      return dates;\n    },\n    getWeeksInMonth(date = startDate) {\n      let weeks = weeksInMonth || getWeeksInMonth(date, locale, firstDayOfWeek);\n      if (visibleDuration.weeks || visibleDuration.days) {\n        weeks = visibleDuration.weeks ?? 0;\n        if (visibleDuration.days) {\n          weeks += Math.ceil(visibleDuration.days / 7);\n        }\n      }\n      return weeks;\n    }\n  };\n}\n\nfunction unitDuration(duration: DateDuration) {\n  let unit = {...duration};\n  for (let key in duration) {\n    unit[key] = 1;\n  }\n  return unit;\n}\n"],"names":[],"version":3,"file":"useCalendarState.mjs.map"}