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.cjs.map"}