@react-stately/calendar 3.0.0-rc.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -121,10 +121,14 @@ function $6adad0c8536fc209$export$6d095e787d2b5e1f(props) {
121
121
  }
122
122
  });
123
123
  let [isFocused, setFocused] = $hEzMm$react.useState(props.autoFocus || false);
124
- let endDate = $hEzMm$react.useMemo(()=>startDate.add(visibleDuration).subtract({
125
- days: 1
126
- })
127
- , [
124
+ let endDate = $hEzMm$react.useMemo(()=>{
125
+ let duration = {
126
+ ...visibleDuration
127
+ };
128
+ if (duration.days) duration.days--;
129
+ else duration.days = -1;
130
+ return startDate.add(duration);
131
+ }, [
128
132
  startDate,
129
133
  visibleDuration
130
134
  ]);
@@ -139,7 +143,7 @@ function $6adad0c8536fc209$export$6d095e787d2b5e1f(props) {
139
143
  if ($4301262d71f567b9$export$eac50920cf2fd59a(focusedDate, minValue, maxValue)) // If the focused date was moved to an invalid value, it can't be focused, so constrain it.
140
144
  setFocusedDate($4301262d71f567b9$export$4f5203c0d889109e(focusedDate, minValue, maxValue));
141
145
  else if (focusedDate.compare(startDate) < 0) setStartDate($4301262d71f567b9$export$530edbfc915b2b04(focusedDate, visibleDuration, locale, minValue, maxValue));
142
- else if (focusedDate.compare(startDate.add(visibleDuration)) >= 0) setStartDate($4301262d71f567b9$export$144a00ba6044eb9(focusedDate, visibleDuration, locale, minValue, maxValue));
146
+ else if (focusedDate.compare(endDate) > 0) setStartDate($4301262d71f567b9$export$144a00ba6044eb9(focusedDate, visibleDuration, locale, minValue, maxValue));
143
147
  // Sets focus to a specific cell date
144
148
  function focusCell(date) {
145
149
  date = $4301262d71f567b9$export$4f5203c0d889109e(date, minValue, maxValue);
@@ -279,14 +283,41 @@ function $6adad0c8536fc209$export$6d095e787d2b5e1f(props) {
279
283
  return props.isDateUnavailable && props.isDateUnavailable(date);
280
284
  },
281
285
  isPreviousVisibleRangeInvalid () {
282
- return this.isInvalid(startDate.subtract({
286
+ let prev = startDate.subtract({
283
287
  days: 1
284
- }), minValue, maxValue);
288
+ });
289
+ return $hEzMm$internationalizeddate.isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);
285
290
  },
286
291
  isNextVisibleRangeInvalid () {
287
- return this.isInvalid(endDate.add({
292
+ // Adding may return the same date if we reached the end of time
293
+ // according to the calendar system (e.g. 9999-12-31).
294
+ let next = endDate.add({
288
295
  days: 1
289
- }), minValue, maxValue);
296
+ });
297
+ return $hEzMm$internationalizeddate.isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);
298
+ },
299
+ getDatesInWeek (weekIndex, from = startDate) {
300
+ // let date = startOfWeek(from, locale);
301
+ let date = from.add({
302
+ weeks: weekIndex
303
+ });
304
+ let dates = [];
305
+ date = $hEzMm$internationalizeddate.startOfWeek(date, locale);
306
+ // startOfWeek will clamp dates within the calendar system's valid range, which may
307
+ // start in the middle of a week. In this case, add null placeholders.
308
+ let dayOfWeek = $hEzMm$internationalizeddate.getDayOfWeek(date, locale);
309
+ for(let i = 0; i < dayOfWeek; i++)dates.push(null);
310
+ while(dates.length < 7){
311
+ dates.push(date);
312
+ let nextDate = date.add({
313
+ days: 1
314
+ });
315
+ if ($hEzMm$internationalizeddate.isSameDay(date, nextDate)) break;
316
+ date = nextDate;
317
+ }
318
+ // Add null placeholders if at the end of the calendar system.
319
+ while(dates.length < 7)dates.push(null);
320
+ return dates;
290
321
  }
291
322
  };
292
323
  }
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/useRangeCalendarState.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\nexport {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n","/*\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 {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from './types';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface CalendarStateOptions extends CalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration,\n /** Determines how to align the initial selection relative to the visible date range. */\n selectionAlignment?: 'start' | 'center' | 'end'\n}\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(props: CalendarStateOptions): CalendarState {\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 } = props;\n\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue>(props.value, props.defaultValue, props.onChange);\n let calendarDateValue = useMemo(() => value ? toCalendar(toCalendarDate(value), calendar) : null, [value, calendar]);\n let timeZone = useMemo(() => value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [value, resolvedOptions.timeZone]);\n let focusedCalendarDate = useMemo(() => (\n props.focusedValue\n ? constrainValue(toCalendar(toCalendarDate(props.focusedValue), calendar), minValue, maxValue)\n : undefined\n ), [props.focusedValue, calendar, minValue, maxValue]);\n let defaultFocusedCalendarDate = useMemo(() => (\n constrainValue(\n props.defaultFocusedValue\n ? toCalendar(toCalendarDate(props.defaultFocusedValue), calendar)\n : calendarDateValue || toCalendar(today(timeZone), calendar),\n minValue,\n maxValue\n )\n ), [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [focusedDate, setFocusedDate] = useControlledState(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);\n let [startDate, setStartDate] = useState(() => {\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 let [isFocused, setFocused] = useState(props.autoFocus || false);\n\n let endDate = useMemo(() => startDate.add(visibleDuration).subtract({days: 1}), [startDate, visibleDuration]);\n\n // Reset focused date and visible range when calendar changes.\n let lastCalendarIdentifier = useRef(calendar.identifier);\n if (calendar.identifier !== lastCalendarIdentifier.current) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n lastCalendarIdentifier.current = calendar.identifier;\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(startDate.add(visibleDuration)) >= 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 setValue(newValue: CalendarDate) {\n if (!props.isDisabled && !props.isReadOnly) {\n newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\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 newValue = toCalendar(newValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(newValue));\n } else {\n setControlledValue(newValue);\n }\n }\n }\n\n let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\n\n return {\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n value: calendarDateValue,\n setValue,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\n setFocusedDate(date) {\n focusCell(date);\n setFocused(true);\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(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.add(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\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 setValue(focusedDate);\n },\n selectDate(date) {\n setValue(date);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n return calendarDateValue != null && isSameDay(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable && props.isDateUnavailable(date);\n },\n isPreviousVisibleRangeInvalid() {\n return this.isInvalid(startDate.subtract({days: 1}), minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n return this.isInvalid(endDate.add({days: 1}), minValue, maxValue);\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","/*\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 */\nimport {\n CalendarDate,\n DateDuration,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate\n} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\n\nexport function isInvalid(date: DateValue, minValue: DateValue, maxValue: DateValue) {\n return (minValue != null && date.compare(minValue) < 0) ||\n (maxValue != null && date.compare(maxValue) > 0);\n}\n\nexport function alignCenter(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let halfDuration: DateDuration = {};\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2);\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--;\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignStart(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n // align to the start of the largest unit\n let aligned = date;\n if (duration.years) {\n aligned = startOfYear(date);\n } else if (duration.months) {\n aligned = startOfMonth(date);\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale);\n }\n\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignEnd(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let d = {...duration};\n // subtract 1 from the smallest unit\n if (duration.days) {\n d.days--;\n } else if (duration.weeks) {\n d.weeks--;\n } else if (duration.months) {\n d.months--;\n } else if (duration.years) {\n d.years--;\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function constrainStart(\n date: CalendarDate,\n aligned: CalendarDate,\n duration: DateDuration,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue) {\n if (minValue && date.compare(minValue) >= 0) {\n aligned = maxDate(\n aligned,\n alignStart(toCalendarDate(minValue), duration, locale)\n );\n }\n\n if (maxValue && date.compare(maxValue) <= 0) {\n aligned = minDate(\n aligned,\n alignEnd(toCalendarDate(maxValue), duration, locale)\n );\n }\n\n return aligned;\n}\n\nexport function constrainValue(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue));\n }\n\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue));\n }\n\n return date;\n}\n\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\n }\n}\n","/*\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 {alignCenter, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {Calendar, CalendarDate, DateDuration, GregorianCalendar, isEqualDay, maxDate, minDate, toCalendar, toCalendarDate} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from './types';\nimport {DateRange, DateValue} from '@react-types/calendar';\nimport {RangeCalendarProps} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\nimport {useCalendarState} from './useCalendarState';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration\n}\n\n/**\n * Provides state management for a range calendar component.\n * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.\n */\nexport function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {\n let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;\n let [value, setValue] = useControlledState<DateRange>(\n valueProp,\n defaultValue || null,\n onChange\n );\n\n let [anchorDate, setAnchorDateState] = useState(null);\n let alignment: 'center' | 'start' = 'center';\n if (value && value.start && value.end) {\n let start = alignCenter(toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);\n let end = start.add(visibleDuration).subtract({days: 1});\n\n if (value.end.compare(end) > 0) {\n alignment = 'start';\n }\n }\n\n // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.\n let availableRangeRef = useRef<RangeValue<DateValue>>(null);\n let [availableRange, setAvailableRange] = useState<RangeValue<DateValue>>(null);\n let min = useMemo(() => maxDate(minValue, availableRange?.start), [minValue, availableRange]);\n let max = useMemo(() => minDate(maxValue, availableRange?.end), [maxValue, availableRange]);\n\n let calendar = useCalendarState({\n ...calendarProps,\n value: value && value.start,\n createCalendar,\n locale,\n visibleDuration,\n minValue: min,\n maxValue: max,\n selectionAlignment: alignment\n });\n\n let updateAvailableRange = (date) => {\n if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {\n availableRangeRef.current = {\n start: nextUnavailableDate(date, calendar, -1),\n end: nextUnavailableDate(date, calendar, 1)\n };\n setAvailableRange(availableRangeRef.current);\n } else {\n availableRangeRef.current = null;\n setAvailableRange(null);\n }\n };\n\n // If the visible range changes, we need to update the available range.\n let lastVisibleRange = useRef(calendar.visibleRange);\n if (!isEqualDay(calendar.visibleRange.start, lastVisibleRange.current.start) || !isEqualDay(calendar.visibleRange.end, lastVisibleRange.current.end)) {\n updateAvailableRange(anchorDate);\n lastVisibleRange.current = calendar.visibleRange;\n }\n\n let setAnchorDate = (date: CalendarDate) => {\n if (date) {\n setAnchorDateState(date);\n updateAvailableRange(date);\n } else {\n setAnchorDateState(null);\n updateAvailableRange(null);\n }\n };\n\n let highlightedRange = anchorDate ? makeRange(anchorDate, calendar.focusedDate) : value && makeRange(value.start, value.end);\n let selectDate = (date: CalendarDate) => {\n if (props.isReadOnly) {\n return;\n }\n\n date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\n return;\n }\n\n if (!anchorDate) {\n setAnchorDate(date);\n } else {\n let range = makeRange(anchorDate, date);\n setValue({\n start: convertValue(range.start, value?.start),\n end: convertValue(range.end, value?.end)\n });\n setAnchorDate(null);\n }\n };\n\n let [isDragging, setDragging] = useState(false);\n\n let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\n selectFocusedDate() {\n selectDate(calendar.focusedDate);\n },\n selectDate,\n highlightDate(date) {\n if (anchorDate) {\n calendar.setFocusedDate(date);\n }\n },\n isSelected(date) {\n return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);\n },\n isInvalid(date) {\n return calendar.isInvalid(date) || isInvalid(date, availableRangeRef.current?.start, availableRangeRef.current?.end);\n },\n isDragging,\n setDragging\n };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate> {\n if (!start || !end) {\n return null;\n }\n\n if (end.compare(start) < 0) {\n [start, end] = [end, start];\n }\n\n return {start: toCalendarDate(start), end: toCalendarDate(end)};\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue) {\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 newValue = toCalendar(newValue, oldValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (oldValue && 'hour' in oldValue) {\n return oldValue.set(newValue);\n }\n\n return newValue;\n}\n\nfunction nextUnavailableDate(anchorDate: CalendarDate, state: CalendarState, dir: number) {\n let nextDate = anchorDate.add({days: dir});\n while (\n (dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) &&\n !state.isCellUnavailable(nextDate)\n ) {\n nextDate = nextDate.add({days: dir});\n }\n\n if (state.isCellUnavailable(nextDate)) {\n return nextDate.add({days: -dir});\n }\n\n return null;\n}\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/useRangeCalendarState.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\nexport {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n","/*\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 {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from './types';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface CalendarStateOptions extends CalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration,\n /** Determines how to align the initial selection relative to the visible date range. */\n selectionAlignment?: 'start' | 'center' | 'end'\n}\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(props: CalendarStateOptions): CalendarState {\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 } = props;\n\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue>(props.value, props.defaultValue, props.onChange);\n let calendarDateValue = useMemo(() => value ? toCalendar(toCalendarDate(value), calendar) : null, [value, calendar]);\n let timeZone = useMemo(() => value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [value, resolvedOptions.timeZone]);\n let focusedCalendarDate = useMemo(() => (\n props.focusedValue\n ? constrainValue(toCalendar(toCalendarDate(props.focusedValue), calendar), minValue, maxValue)\n : undefined\n ), [props.focusedValue, calendar, minValue, maxValue]);\n let defaultFocusedCalendarDate = useMemo(() => (\n constrainValue(\n props.defaultFocusedValue\n ? toCalendar(toCalendarDate(props.defaultFocusedValue), calendar)\n : calendarDateValue || toCalendar(today(timeZone), calendar),\n minValue,\n maxValue\n )\n ), [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [focusedDate, setFocusedDate] = useControlledState(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);\n let [startDate, setStartDate] = useState(() => {\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 let [isFocused, setFocused] = useState(props.autoFocus || false);\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 lastCalendarIdentifier = useRef(calendar.identifier);\n if (calendar.identifier !== lastCalendarIdentifier.current) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n lastCalendarIdentifier.current = calendar.identifier;\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 setValue(newValue: CalendarDate) {\n if (!props.isDisabled && !props.isReadOnly) {\n newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\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 newValue = toCalendar(newValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(newValue));\n } else {\n setControlledValue(newValue);\n }\n }\n }\n\n let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\n\n return {\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n value: calendarDateValue,\n setValue,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\n setFocusedDate(date) {\n focusCell(date);\n setFocused(true);\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(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.add(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\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 setValue(focusedDate);\n },\n selectDate(date) {\n setValue(date);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n return calendarDateValue != null && isSameDay(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable && props.isDateUnavailable(date);\n },\n isPreviousVisibleRangeInvalid() {\n let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);\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, minValue, maxValue);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n // let date = startOfWeek(from, locale);\n let date = from.add({weeks: weekIndex});\n let dates = [];\n\n date = startOfWeek(date, locale);\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);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n\n while (dates.length < 7) {\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 < 7) {\n dates.push(null);\n }\n\n return dates;\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","/*\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 */\nimport {\n CalendarDate,\n DateDuration,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate\n} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\n\nexport function isInvalid(date: DateValue, minValue: DateValue, maxValue: DateValue) {\n return (minValue != null && date.compare(minValue) < 0) ||\n (maxValue != null && date.compare(maxValue) > 0);\n}\n\nexport function alignCenter(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let halfDuration: DateDuration = {};\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2);\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--;\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignStart(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n // align to the start of the largest unit\n let aligned = date;\n if (duration.years) {\n aligned = startOfYear(date);\n } else if (duration.months) {\n aligned = startOfMonth(date);\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale);\n }\n\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignEnd(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let d = {...duration};\n // subtract 1 from the smallest unit\n if (duration.days) {\n d.days--;\n } else if (duration.weeks) {\n d.weeks--;\n } else if (duration.months) {\n d.months--;\n } else if (duration.years) {\n d.years--;\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function constrainStart(\n date: CalendarDate,\n aligned: CalendarDate,\n duration: DateDuration,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue) {\n if (minValue && date.compare(minValue) >= 0) {\n aligned = maxDate(\n aligned,\n alignStart(toCalendarDate(minValue), duration, locale)\n );\n }\n\n if (maxValue && date.compare(maxValue) <= 0) {\n aligned = minDate(\n aligned,\n alignEnd(toCalendarDate(maxValue), duration, locale)\n );\n }\n\n return aligned;\n}\n\nexport function constrainValue(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue));\n }\n\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue));\n }\n\n return date;\n}\n\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\n }\n}\n","/*\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 {alignCenter, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {Calendar, CalendarDate, DateDuration, GregorianCalendar, isEqualDay, maxDate, minDate, toCalendar, toCalendarDate} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from './types';\nimport {DateRange, DateValue} from '@react-types/calendar';\nimport {RangeCalendarProps} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\nimport {useCalendarState} from './useCalendarState';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration\n}\n\n/**\n * Provides state management for a range calendar component.\n * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.\n */\nexport function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {\n let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;\n let [value, setValue] = useControlledState<DateRange>(\n valueProp,\n defaultValue || null,\n onChange\n );\n\n let [anchorDate, setAnchorDateState] = useState(null);\n let alignment: 'center' | 'start' = 'center';\n if (value && value.start && value.end) {\n let start = alignCenter(toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);\n let end = start.add(visibleDuration).subtract({days: 1});\n\n if (value.end.compare(end) > 0) {\n alignment = 'start';\n }\n }\n\n // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.\n let availableRangeRef = useRef<RangeValue<DateValue>>(null);\n let [availableRange, setAvailableRange] = useState<RangeValue<DateValue>>(null);\n let min = useMemo(() => maxDate(minValue, availableRange?.start), [minValue, availableRange]);\n let max = useMemo(() => minDate(maxValue, availableRange?.end), [maxValue, availableRange]);\n\n let calendar = useCalendarState({\n ...calendarProps,\n value: value && value.start,\n createCalendar,\n locale,\n visibleDuration,\n minValue: min,\n maxValue: max,\n selectionAlignment: alignment\n });\n\n let updateAvailableRange = (date) => {\n if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {\n availableRangeRef.current = {\n start: nextUnavailableDate(date, calendar, -1),\n end: nextUnavailableDate(date, calendar, 1)\n };\n setAvailableRange(availableRangeRef.current);\n } else {\n availableRangeRef.current = null;\n setAvailableRange(null);\n }\n };\n\n // If the visible range changes, we need to update the available range.\n let lastVisibleRange = useRef(calendar.visibleRange);\n if (!isEqualDay(calendar.visibleRange.start, lastVisibleRange.current.start) || !isEqualDay(calendar.visibleRange.end, lastVisibleRange.current.end)) {\n updateAvailableRange(anchorDate);\n lastVisibleRange.current = calendar.visibleRange;\n }\n\n let setAnchorDate = (date: CalendarDate) => {\n if (date) {\n setAnchorDateState(date);\n updateAvailableRange(date);\n } else {\n setAnchorDateState(null);\n updateAvailableRange(null);\n }\n };\n\n let highlightedRange = anchorDate ? makeRange(anchorDate, calendar.focusedDate) : value && makeRange(value.start, value.end);\n let selectDate = (date: CalendarDate) => {\n if (props.isReadOnly) {\n return;\n }\n\n date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\n return;\n }\n\n if (!anchorDate) {\n setAnchorDate(date);\n } else {\n let range = makeRange(anchorDate, date);\n setValue({\n start: convertValue(range.start, value?.start),\n end: convertValue(range.end, value?.end)\n });\n setAnchorDate(null);\n }\n };\n\n let [isDragging, setDragging] = useState(false);\n\n let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\n selectFocusedDate() {\n selectDate(calendar.focusedDate);\n },\n selectDate,\n highlightDate(date) {\n if (anchorDate) {\n calendar.setFocusedDate(date);\n }\n },\n isSelected(date) {\n return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);\n },\n isInvalid(date) {\n return calendar.isInvalid(date) || isInvalid(date, availableRangeRef.current?.start, availableRangeRef.current?.end);\n },\n isDragging,\n setDragging\n };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate> {\n if (!start || !end) {\n return null;\n }\n\n if (end.compare(start) < 0) {\n [start, end] = [end, start];\n }\n\n return {start: toCalendarDate(start), end: toCalendarDate(end)};\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue) {\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 newValue = toCalendar(newValue, oldValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (oldValue && 'hour' in oldValue) {\n return oldValue.set(newValue);\n }\n\n return newValue;\n}\n\nfunction nextUnavailableDate(anchorDate: CalendarDate, state: CalendarState, dir: number) {\n let nextDate = anchorDate.add({days: dir});\n while (\n (dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) &&\n !state.isCellUnavailable(nextDate)\n ) {\n nextDate = nextDate.add({days: dir});\n }\n\n if (state.isCellUnavailable(nextDate)) {\n return nextDate.add({days: -dir});\n }\n\n return null;\n}\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import {DateFormatter as $keQhS$DateFormatter, toCalendar as $keQhS$toCalendar, toCalendarDate as $keQhS$toCalendarDate, today as $keQhS$today, GregorianCalendar as $keQhS$GregorianCalendar, startOfWeek as $keQhS$startOfWeek, startOfMonth as $keQhS$startOfMonth, endOfWeek as $keQhS$endOfWeek, endOfMonth as $keQhS$endOfMonth, isSameDay as $keQhS$isSameDay, startOfYear as $keQhS$startOfYear, maxDate as $keQhS$maxDate, minDate as $keQhS$minDate, isEqualDay as $keQhS$isEqualDay} from "@internationalized/date";
1
+ import {DateFormatter as $keQhS$DateFormatter, toCalendar as $keQhS$toCalendar, toCalendarDate as $keQhS$toCalendarDate, today as $keQhS$today, GregorianCalendar as $keQhS$GregorianCalendar, startOfWeek as $keQhS$startOfWeek, startOfMonth as $keQhS$startOfMonth, endOfWeek as $keQhS$endOfWeek, endOfMonth as $keQhS$endOfMonth, isSameDay as $keQhS$isSameDay, getDayOfWeek as $keQhS$getDayOfWeek, startOfYear as $keQhS$startOfYear, maxDate as $keQhS$maxDate, minDate as $keQhS$minDate, isEqualDay as $keQhS$isEqualDay} from "@internationalized/date";
2
2
  import {useControlledState as $keQhS$useControlledState} from "@react-stately/utils";
3
3
  import {useMemo as $keQhS$useMemo, useState as $keQhS$useState, useRef as $keQhS$useRef} from "react";
4
4
 
@@ -115,10 +115,14 @@ function $131cf43a05231e1e$export$6d095e787d2b5e1f(props) {
115
115
  }
116
116
  });
117
117
  let [isFocused, setFocused] = $keQhS$useState(props.autoFocus || false);
118
- let endDate = $keQhS$useMemo(()=>startDate.add(visibleDuration).subtract({
119
- days: 1
120
- })
121
- , [
118
+ let endDate = $keQhS$useMemo(()=>{
119
+ let duration = {
120
+ ...visibleDuration
121
+ };
122
+ if (duration.days) duration.days--;
123
+ else duration.days = -1;
124
+ return startDate.add(duration);
125
+ }, [
122
126
  startDate,
123
127
  visibleDuration
124
128
  ]);
@@ -133,7 +137,7 @@ function $131cf43a05231e1e$export$6d095e787d2b5e1f(props) {
133
137
  if ($f62d864046160412$export$eac50920cf2fd59a(focusedDate, minValue, maxValue)) // If the focused date was moved to an invalid value, it can't be focused, so constrain it.
134
138
  setFocusedDate($f62d864046160412$export$4f5203c0d889109e(focusedDate, minValue, maxValue));
135
139
  else if (focusedDate.compare(startDate) < 0) setStartDate($f62d864046160412$export$530edbfc915b2b04(focusedDate, visibleDuration, locale, minValue, maxValue));
136
- else if (focusedDate.compare(startDate.add(visibleDuration)) >= 0) setStartDate($f62d864046160412$export$144a00ba6044eb9(focusedDate, visibleDuration, locale, minValue, maxValue));
140
+ else if (focusedDate.compare(endDate) > 0) setStartDate($f62d864046160412$export$144a00ba6044eb9(focusedDate, visibleDuration, locale, minValue, maxValue));
137
141
  // Sets focus to a specific cell date
138
142
  function focusCell(date) {
139
143
  date = $f62d864046160412$export$4f5203c0d889109e(date, minValue, maxValue);
@@ -273,14 +277,41 @@ function $131cf43a05231e1e$export$6d095e787d2b5e1f(props) {
273
277
  return props.isDateUnavailable && props.isDateUnavailable(date);
274
278
  },
275
279
  isPreviousVisibleRangeInvalid () {
276
- return this.isInvalid(startDate.subtract({
280
+ let prev = startDate.subtract({
277
281
  days: 1
278
- }), minValue, maxValue);
282
+ });
283
+ return $keQhS$isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);
279
284
  },
280
285
  isNextVisibleRangeInvalid () {
281
- return this.isInvalid(endDate.add({
286
+ // Adding may return the same date if we reached the end of time
287
+ // according to the calendar system (e.g. 9999-12-31).
288
+ let next = endDate.add({
282
289
  days: 1
283
- }), minValue, maxValue);
290
+ });
291
+ return $keQhS$isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);
292
+ },
293
+ getDatesInWeek (weekIndex, from = startDate) {
294
+ // let date = startOfWeek(from, locale);
295
+ let date = from.add({
296
+ weeks: weekIndex
297
+ });
298
+ let dates = [];
299
+ date = $keQhS$startOfWeek(date, locale);
300
+ // startOfWeek will clamp dates within the calendar system's valid range, which may
301
+ // start in the middle of a week. In this case, add null placeholders.
302
+ let dayOfWeek = $keQhS$getDayOfWeek(date, locale);
303
+ for(let i = 0; i < dayOfWeek; i++)dates.push(null);
304
+ while(dates.length < 7){
305
+ dates.push(date);
306
+ let nextDate = date.add({
307
+ days: 1
308
+ });
309
+ if ($keQhS$isSameDay(date, nextDate)) break;
310
+ date = nextDate;
311
+ }
312
+ // Add null placeholders if at the end of the calendar system.
313
+ while(dates.length < 7)dates.push(null);
314
+ return dates;
284
315
  }
285
316
  };
286
317
  }
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/useRangeCalendarState.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\nexport {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n","/*\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 {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from './types';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface CalendarStateOptions extends CalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration,\n /** Determines how to align the initial selection relative to the visible date range. */\n selectionAlignment?: 'start' | 'center' | 'end'\n}\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(props: CalendarStateOptions): CalendarState {\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 } = props;\n\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue>(props.value, props.defaultValue, props.onChange);\n let calendarDateValue = useMemo(() => value ? toCalendar(toCalendarDate(value), calendar) : null, [value, calendar]);\n let timeZone = useMemo(() => value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [value, resolvedOptions.timeZone]);\n let focusedCalendarDate = useMemo(() => (\n props.focusedValue\n ? constrainValue(toCalendar(toCalendarDate(props.focusedValue), calendar), minValue, maxValue)\n : undefined\n ), [props.focusedValue, calendar, minValue, maxValue]);\n let defaultFocusedCalendarDate = useMemo(() => (\n constrainValue(\n props.defaultFocusedValue\n ? toCalendar(toCalendarDate(props.defaultFocusedValue), calendar)\n : calendarDateValue || toCalendar(today(timeZone), calendar),\n minValue,\n maxValue\n )\n ), [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [focusedDate, setFocusedDate] = useControlledState(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);\n let [startDate, setStartDate] = useState(() => {\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 let [isFocused, setFocused] = useState(props.autoFocus || false);\n\n let endDate = useMemo(() => startDate.add(visibleDuration).subtract({days: 1}), [startDate, visibleDuration]);\n\n // Reset focused date and visible range when calendar changes.\n let lastCalendarIdentifier = useRef(calendar.identifier);\n if (calendar.identifier !== lastCalendarIdentifier.current) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n lastCalendarIdentifier.current = calendar.identifier;\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(startDate.add(visibleDuration)) >= 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 setValue(newValue: CalendarDate) {\n if (!props.isDisabled && !props.isReadOnly) {\n newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\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 newValue = toCalendar(newValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(newValue));\n } else {\n setControlledValue(newValue);\n }\n }\n }\n\n let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\n\n return {\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n value: calendarDateValue,\n setValue,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\n setFocusedDate(date) {\n focusCell(date);\n setFocused(true);\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(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.add(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\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 setValue(focusedDate);\n },\n selectDate(date) {\n setValue(date);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n return calendarDateValue != null && isSameDay(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable && props.isDateUnavailable(date);\n },\n isPreviousVisibleRangeInvalid() {\n return this.isInvalid(startDate.subtract({days: 1}), minValue, maxValue);\n },\n isNextVisibleRangeInvalid() {\n return this.isInvalid(endDate.add({days: 1}), minValue, maxValue);\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","/*\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 */\nimport {\n CalendarDate,\n DateDuration,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate\n} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\n\nexport function isInvalid(date: DateValue, minValue: DateValue, maxValue: DateValue) {\n return (minValue != null && date.compare(minValue) < 0) ||\n (maxValue != null && date.compare(maxValue) > 0);\n}\n\nexport function alignCenter(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let halfDuration: DateDuration = {};\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2);\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--;\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignStart(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n // align to the start of the largest unit\n let aligned = date;\n if (duration.years) {\n aligned = startOfYear(date);\n } else if (duration.months) {\n aligned = startOfMonth(date);\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale);\n }\n\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignEnd(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let d = {...duration};\n // subtract 1 from the smallest unit\n if (duration.days) {\n d.days--;\n } else if (duration.weeks) {\n d.weeks--;\n } else if (duration.months) {\n d.months--;\n } else if (duration.years) {\n d.years--;\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function constrainStart(\n date: CalendarDate,\n aligned: CalendarDate,\n duration: DateDuration,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue) {\n if (minValue && date.compare(minValue) >= 0) {\n aligned = maxDate(\n aligned,\n alignStart(toCalendarDate(minValue), duration, locale)\n );\n }\n\n if (maxValue && date.compare(maxValue) <= 0) {\n aligned = minDate(\n aligned,\n alignEnd(toCalendarDate(maxValue), duration, locale)\n );\n }\n\n return aligned;\n}\n\nexport function constrainValue(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue));\n }\n\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue));\n }\n\n return date;\n}\n\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\n }\n}\n","/*\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 {alignCenter, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {Calendar, CalendarDate, DateDuration, GregorianCalendar, isEqualDay, maxDate, minDate, toCalendar, toCalendarDate} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from './types';\nimport {DateRange, DateValue} from '@react-types/calendar';\nimport {RangeCalendarProps} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\nimport {useCalendarState} from './useCalendarState';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration\n}\n\n/**\n * Provides state management for a range calendar component.\n * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.\n */\nexport function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {\n let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;\n let [value, setValue] = useControlledState<DateRange>(\n valueProp,\n defaultValue || null,\n onChange\n );\n\n let [anchorDate, setAnchorDateState] = useState(null);\n let alignment: 'center' | 'start' = 'center';\n if (value && value.start && value.end) {\n let start = alignCenter(toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);\n let end = start.add(visibleDuration).subtract({days: 1});\n\n if (value.end.compare(end) > 0) {\n alignment = 'start';\n }\n }\n\n // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.\n let availableRangeRef = useRef<RangeValue<DateValue>>(null);\n let [availableRange, setAvailableRange] = useState<RangeValue<DateValue>>(null);\n let min = useMemo(() => maxDate(minValue, availableRange?.start), [minValue, availableRange]);\n let max = useMemo(() => minDate(maxValue, availableRange?.end), [maxValue, availableRange]);\n\n let calendar = useCalendarState({\n ...calendarProps,\n value: value && value.start,\n createCalendar,\n locale,\n visibleDuration,\n minValue: min,\n maxValue: max,\n selectionAlignment: alignment\n });\n\n let updateAvailableRange = (date) => {\n if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {\n availableRangeRef.current = {\n start: nextUnavailableDate(date, calendar, -1),\n end: nextUnavailableDate(date, calendar, 1)\n };\n setAvailableRange(availableRangeRef.current);\n } else {\n availableRangeRef.current = null;\n setAvailableRange(null);\n }\n };\n\n // If the visible range changes, we need to update the available range.\n let lastVisibleRange = useRef(calendar.visibleRange);\n if (!isEqualDay(calendar.visibleRange.start, lastVisibleRange.current.start) || !isEqualDay(calendar.visibleRange.end, lastVisibleRange.current.end)) {\n updateAvailableRange(anchorDate);\n lastVisibleRange.current = calendar.visibleRange;\n }\n\n let setAnchorDate = (date: CalendarDate) => {\n if (date) {\n setAnchorDateState(date);\n updateAvailableRange(date);\n } else {\n setAnchorDateState(null);\n updateAvailableRange(null);\n }\n };\n\n let highlightedRange = anchorDate ? makeRange(anchorDate, calendar.focusedDate) : value && makeRange(value.start, value.end);\n let selectDate = (date: CalendarDate) => {\n if (props.isReadOnly) {\n return;\n }\n\n date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\n return;\n }\n\n if (!anchorDate) {\n setAnchorDate(date);\n } else {\n let range = makeRange(anchorDate, date);\n setValue({\n start: convertValue(range.start, value?.start),\n end: convertValue(range.end, value?.end)\n });\n setAnchorDate(null);\n }\n };\n\n let [isDragging, setDragging] = useState(false);\n\n let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\n selectFocusedDate() {\n selectDate(calendar.focusedDate);\n },\n selectDate,\n highlightDate(date) {\n if (anchorDate) {\n calendar.setFocusedDate(date);\n }\n },\n isSelected(date) {\n return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);\n },\n isInvalid(date) {\n return calendar.isInvalid(date) || isInvalid(date, availableRangeRef.current?.start, availableRangeRef.current?.end);\n },\n isDragging,\n setDragging\n };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate> {\n if (!start || !end) {\n return null;\n }\n\n if (end.compare(start) < 0) {\n [start, end] = [end, start];\n }\n\n return {start: toCalendarDate(start), end: toCalendarDate(end)};\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue) {\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 newValue = toCalendar(newValue, oldValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (oldValue && 'hour' in oldValue) {\n return oldValue.set(newValue);\n }\n\n return newValue;\n}\n\nfunction nextUnavailableDate(anchorDate: CalendarDate, state: CalendarState, dir: number) {\n let nextDate = anchorDate.add({days: dir});\n while (\n (dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) &&\n !state.isCellUnavailable(nextDate)\n ) {\n nextDate = nextDate.add({days: dir});\n }\n\n if (state.isCellUnavailable(nextDate)) {\n return nextDate.add({days: -dir});\n }\n\n return null;\n}\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/useRangeCalendarState.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\nexport {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n","/*\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 {alignCenter, alignEnd, alignStart, constrainStart, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {\n Calendar,\n CalendarDate,\n DateDuration,\n DateFormatter,\n endOfMonth,\n endOfWeek,\n getDayOfWeek,\n GregorianCalendar,\n isSameDay,\n startOfMonth,\n startOfWeek,\n toCalendar,\n toCalendarDate,\n today\n} from '@internationalized/date';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from './types';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface CalendarStateOptions extends CalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration,\n /** Determines how to align the initial selection relative to the visible date range. */\n selectionAlignment?: 'start' | 'center' | 'end'\n}\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(props: CalendarStateOptions): CalendarState {\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 } = props;\n\n let calendar = useMemo(() => createCalendar(resolvedOptions.calendar), [createCalendar, resolvedOptions.calendar]);\n\n let [value, setControlledValue] = useControlledState<DateValue>(props.value, props.defaultValue, props.onChange);\n let calendarDateValue = useMemo(() => value ? toCalendar(toCalendarDate(value), calendar) : null, [value, calendar]);\n let timeZone = useMemo(() => value && 'timeZone' in value ? value.timeZone : resolvedOptions.timeZone, [value, resolvedOptions.timeZone]);\n let focusedCalendarDate = useMemo(() => (\n props.focusedValue\n ? constrainValue(toCalendar(toCalendarDate(props.focusedValue), calendar), minValue, maxValue)\n : undefined\n ), [props.focusedValue, calendar, minValue, maxValue]);\n let defaultFocusedCalendarDate = useMemo(() => (\n constrainValue(\n props.defaultFocusedValue\n ? toCalendar(toCalendarDate(props.defaultFocusedValue), calendar)\n : calendarDateValue || toCalendar(today(timeZone), calendar),\n minValue,\n maxValue\n )\n ), [props.defaultFocusedValue, calendarDateValue, timeZone, calendar, minValue, maxValue]);\n let [focusedDate, setFocusedDate] = useControlledState(focusedCalendarDate, defaultFocusedCalendarDate, props.onFocusChange);\n let [startDate, setStartDate] = useState(() => {\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 let [isFocused, setFocused] = useState(props.autoFocus || false);\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 lastCalendarIdentifier = useRef(calendar.identifier);\n if (calendar.identifier !== lastCalendarIdentifier.current) {\n let newFocusedDate = toCalendar(focusedDate, calendar);\n setStartDate(alignCenter(newFocusedDate, visibleDuration, locale, minValue, maxValue));\n setFocusedDate(newFocusedDate);\n lastCalendarIdentifier.current = calendar.identifier;\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 setValue(newValue: CalendarDate) {\n if (!props.isDisabled && !props.isReadOnly) {\n newValue = constrainValue(newValue, minValue, maxValue);\n newValue = previousAvailableDate(newValue, startDate, isDateUnavailable);\n if (!newValue) {\n return;\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 newValue = toCalendar(newValue, value?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (value && 'hour' in value) {\n setControlledValue(value.set(newValue));\n } else {\n setControlledValue(newValue);\n }\n }\n }\n\n let isUnavailable = useMemo(() => {\n if (!calendarDateValue) {\n return false;\n }\n\n if (isDateUnavailable && isDateUnavailable(calendarDateValue)) {\n return true;\n }\n\n return isInvalid(calendarDateValue, minValue, maxValue);\n }, [calendarDateValue, isDateUnavailable, minValue, maxValue]);\n let validationState = props.validationState || (isUnavailable ? 'invalid' : null);\n\n return {\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n value: calendarDateValue,\n setValue,\n visibleRange: {\n start: startDate,\n end: endDate\n },\n minValue,\n maxValue,\n focusedDate,\n timeZone,\n validationState,\n setFocusedDate(date) {\n focusCell(date);\n setFocused(true);\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(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.add(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\n locale\n )\n );\n },\n focusPreviousPage() {\n let start = startDate.subtract(visibleDuration);\n setFocusedDate(constrainValue(focusedDate.subtract(visibleDuration), minValue, maxValue));\n setStartDate(\n alignStart(\n constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n visibleDuration,\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 setValue(focusedDate);\n },\n selectDate(date) {\n setValue(date);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, minValue, maxValue);\n },\n isSelected(date) {\n return calendarDateValue != null && isSameDay(date, calendarDateValue) && !this.isCellDisabled(date) && !this.isCellUnavailable(date);\n },\n isCellFocused(date) {\n return isFocused && focusedDate && isSameDay(date, focusedDate);\n },\n isCellDisabled(date) {\n return props.isDisabled || date.compare(startDate) < 0 || date.compare(endDate) > 0 || this.isInvalid(date, minValue, maxValue);\n },\n isCellUnavailable(date) {\n return props.isDateUnavailable && props.isDateUnavailable(date);\n },\n isPreviousVisibleRangeInvalid() {\n let prev = startDate.subtract({days: 1});\n return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);\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, minValue, maxValue);\n },\n getDatesInWeek(weekIndex, from = startDate) {\n // let date = startOfWeek(from, locale);\n let date = from.add({weeks: weekIndex});\n let dates = [];\n\n date = startOfWeek(date, locale);\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);\n for (let i = 0; i < dayOfWeek; i++) {\n dates.push(null);\n }\n\n while (dates.length < 7) {\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 < 7) {\n dates.push(null);\n }\n\n return dates;\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","/*\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 */\nimport {\n CalendarDate,\n DateDuration,\n maxDate,\n minDate,\n startOfMonth,\n startOfWeek,\n startOfYear,\n toCalendarDate\n} from '@internationalized/date';\nimport {DateValue} from '@react-types/calendar';\n\nexport function isInvalid(date: DateValue, minValue: DateValue, maxValue: DateValue) {\n return (minValue != null && date.compare(minValue) < 0) ||\n (maxValue != null && date.compare(maxValue) > 0);\n}\n\nexport function alignCenter(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let halfDuration: DateDuration = {};\n for (let key in duration) {\n halfDuration[key] = Math.floor(duration[key] / 2);\n if (halfDuration[key] > 0 && duration[key] % 2 === 0) {\n halfDuration[key]--;\n }\n }\n\n let aligned = alignStart(date, duration, locale).subtract(halfDuration);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignStart(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n // align to the start of the largest unit\n let aligned = date;\n if (duration.years) {\n aligned = startOfYear(date);\n } else if (duration.months) {\n aligned = startOfMonth(date);\n } else if (duration.weeks) {\n aligned = startOfWeek(date, locale);\n }\n\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function alignEnd(date: CalendarDate, duration: DateDuration, locale: string, minValue?: DateValue, maxValue?: DateValue) {\n let d = {...duration};\n // subtract 1 from the smallest unit\n if (duration.days) {\n d.days--;\n } else if (duration.weeks) {\n d.weeks--;\n } else if (duration.months) {\n d.months--;\n } else if (duration.years) {\n d.years--;\n }\n\n let aligned = alignStart(date, duration, locale).subtract(d);\n return constrainStart(date, aligned, duration, locale, minValue, maxValue);\n}\n\nexport function constrainStart(\n date: CalendarDate,\n aligned: CalendarDate,\n duration: DateDuration,\n locale: string,\n minValue: DateValue,\n maxValue: DateValue) {\n if (minValue && date.compare(minValue) >= 0) {\n aligned = maxDate(\n aligned,\n alignStart(toCalendarDate(minValue), duration, locale)\n );\n }\n\n if (maxValue && date.compare(maxValue) <= 0) {\n aligned = minDate(\n aligned,\n alignEnd(toCalendarDate(maxValue), duration, locale)\n );\n }\n\n return aligned;\n}\n\nexport function constrainValue(date: CalendarDate, minValue: DateValue, maxValue: DateValue) {\n if (minValue) {\n date = maxDate(date, toCalendarDate(minValue));\n }\n\n if (maxValue) {\n date = minDate(date, toCalendarDate(maxValue));\n }\n\n return date;\n}\n\nexport function previousAvailableDate(date: CalendarDate, minValue: DateValue, isDateUnavailable: (date: CalendarDate) => boolean) {\n if (!isDateUnavailable) {\n return date;\n }\n\n while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {\n date = date.subtract({days: 1});\n }\n\n if (date.compare(minValue) >= 0) {\n return date;\n }\n}\n","/*\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 {alignCenter, constrainValue, isInvalid, previousAvailableDate} from './utils';\nimport {Calendar, CalendarDate, DateDuration, GregorianCalendar, isEqualDay, maxDate, minDate, toCalendar, toCalendarDate} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from './types';\nimport {DateRange, DateValue} from '@react-types/calendar';\nimport {RangeCalendarProps} from '@react-types/calendar';\nimport {RangeValue} from '@react-types/shared';\nimport {useCalendarState} from './useCalendarState';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useRef, useState} from 'react';\n\nexport interface RangeCalendarStateOptions extends RangeCalendarProps<DateValue> {\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: string) => Calendar,\n /**\n * The amount of days that will be displayed at once. This affects how pagination works.\n * @default {months: 1}\n */\n visibleDuration?: DateDuration\n}\n\n/**\n * Provides state management for a range calendar component.\n * A range calendar displays one or more date grids and allows users to select a contiguous range of dates.\n */\nexport function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {\n let {value: valueProp, defaultValue, onChange, createCalendar, locale, visibleDuration = {months: 1}, minValue, maxValue, ...calendarProps} = props;\n let [value, setValue] = useControlledState<DateRange>(\n valueProp,\n defaultValue || null,\n onChange\n );\n\n let [anchorDate, setAnchorDateState] = useState(null);\n let alignment: 'center' | 'start' = 'center';\n if (value && value.start && value.end) {\n let start = alignCenter(toCalendarDate(value.start), visibleDuration, locale, minValue, maxValue);\n let end = start.add(visibleDuration).subtract({days: 1});\n\n if (value.end.compare(end) > 0) {\n alignment = 'start';\n }\n }\n\n // Available range must be stored in a ref so we have access to the updated version immediately in `isInvalid`.\n let availableRangeRef = useRef<RangeValue<DateValue>>(null);\n let [availableRange, setAvailableRange] = useState<RangeValue<DateValue>>(null);\n let min = useMemo(() => maxDate(minValue, availableRange?.start), [minValue, availableRange]);\n let max = useMemo(() => minDate(maxValue, availableRange?.end), [maxValue, availableRange]);\n\n let calendar = useCalendarState({\n ...calendarProps,\n value: value && value.start,\n createCalendar,\n locale,\n visibleDuration,\n minValue: min,\n maxValue: max,\n selectionAlignment: alignment\n });\n\n let updateAvailableRange = (date) => {\n if (date && props.isDateUnavailable && !props.allowsNonContiguousRanges) {\n availableRangeRef.current = {\n start: nextUnavailableDate(date, calendar, -1),\n end: nextUnavailableDate(date, calendar, 1)\n };\n setAvailableRange(availableRangeRef.current);\n } else {\n availableRangeRef.current = null;\n setAvailableRange(null);\n }\n };\n\n // If the visible range changes, we need to update the available range.\n let lastVisibleRange = useRef(calendar.visibleRange);\n if (!isEqualDay(calendar.visibleRange.start, lastVisibleRange.current.start) || !isEqualDay(calendar.visibleRange.end, lastVisibleRange.current.end)) {\n updateAvailableRange(anchorDate);\n lastVisibleRange.current = calendar.visibleRange;\n }\n\n let setAnchorDate = (date: CalendarDate) => {\n if (date) {\n setAnchorDateState(date);\n updateAvailableRange(date);\n } else {\n setAnchorDateState(null);\n updateAvailableRange(null);\n }\n };\n\n let highlightedRange = anchorDate ? makeRange(anchorDate, calendar.focusedDate) : value && makeRange(value.start, value.end);\n let selectDate = (date: CalendarDate) => {\n if (props.isReadOnly) {\n return;\n }\n\n date = constrainValue(date, min, max);\n date = previousAvailableDate(date, calendar.visibleRange.start, props.isDateUnavailable);\n if (!date) {\n return;\n }\n\n if (!anchorDate) {\n setAnchorDate(date);\n } else {\n let range = makeRange(anchorDate, date);\n setValue({\n start: convertValue(range.start, value?.start),\n end: convertValue(range.end, value?.end)\n });\n setAnchorDate(null);\n }\n };\n\n let [isDragging, setDragging] = useState(false);\n\n let {isDateUnavailable} = props;\n let isInvalidSelection = useMemo(() => {\n if (!value || anchorDate) {\n return false;\n }\n\n if (isDateUnavailable && (isDateUnavailable(value.start) || isDateUnavailable(value.end))) {\n return true;\n }\n\n return isInvalid(value.start, minValue, maxValue) || isInvalid(value.end, minValue, maxValue);\n }, [isDateUnavailable, value, anchorDate, minValue, maxValue]);\n\n let validationState = props.validationState || (isInvalidSelection ? 'invalid' : null);\n\n return {\n ...calendar,\n value,\n setValue,\n anchorDate,\n setAnchorDate,\n highlightedRange,\n validationState,\n selectFocusedDate() {\n selectDate(calendar.focusedDate);\n },\n selectDate,\n highlightDate(date) {\n if (anchorDate) {\n calendar.setFocusedDate(date);\n }\n },\n isSelected(date) {\n return highlightedRange && date.compare(highlightedRange.start) >= 0 && date.compare(highlightedRange.end) <= 0 && !calendar.isCellDisabled(date) && !calendar.isCellUnavailable(date);\n },\n isInvalid(date) {\n return calendar.isInvalid(date) || isInvalid(date, availableRangeRef.current?.start, availableRangeRef.current?.end);\n },\n isDragging,\n setDragging\n };\n}\n\nfunction makeRange(start: DateValue, end: DateValue): RangeValue<CalendarDate> {\n if (!start || !end) {\n return null;\n }\n\n if (end.compare(start) < 0) {\n [start, end] = [end, start];\n }\n\n return {start: toCalendarDate(start), end: toCalendarDate(end)};\n}\n\nfunction convertValue(newValue: CalendarDate, oldValue: DateValue) {\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 newValue = toCalendar(newValue, oldValue?.calendar || new GregorianCalendar());\n\n // Preserve time if the input value had one.\n if (oldValue && 'hour' in oldValue) {\n return oldValue.set(newValue);\n }\n\n return newValue;\n}\n\nfunction nextUnavailableDate(anchorDate: CalendarDate, state: CalendarState, dir: number) {\n let nextDate = anchorDate.add({days: dir});\n while (\n (dir < 0 ? nextDate.compare(state.visibleRange.start) >= 0 : nextDate.compare(state.visibleRange.end) <= 0) &&\n !state.isCellUnavailable(nextDate)\n ) {\n nextDate = nextDate.add({days: dir});\n }\n\n if (state.isCellUnavailable(nextDate)) {\n return nextDate.add({days: -dir});\n }\n\n return null;\n}\n"],"names":[],"version":3,"file":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -74,6 +74,11 @@ interface CalendarStateBase {
74
74
  isPreviousVisibleRangeInvalid(): boolean;
75
75
  /** Returns whether the next visible date range is allowed to be selected according to the `maxValue` prop. */
76
76
  isNextVisibleRangeInvalid(): boolean;
77
+ /**
78
+ * Returns an array of dates in the week index counted from the provided start date, or the first visible date if not given.
79
+ * The returned array always has 7 elements, but may include null if the date does not exist according to the calendar system.
80
+ */
81
+ getDatesInWeek(weekIndex: number, startDate?: CalendarDate): Array<CalendarDate | null>;
77
82
  }
78
83
  export interface CalendarState extends CalendarStateBase {
79
84
  /** The currently selected date. */
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/types.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useRangeCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/index.ts"],"sourcesContent":[null,null,null,null,null,"/*\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\nexport {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/utils.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/types.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/useRangeCalendarState.ts","packages/@react-stately/calendar/src/packages/@react-stately/calendar/src/index.ts","packages/@react-stately/calendar/src/index.ts"],"sourcesContent":[null,null,null,null,null,"/*\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\nexport {useCalendarState} from './useCalendarState';\nexport {useRangeCalendarState} from './useRangeCalendarState';\n\nexport type {CalendarStateOptions} from './useCalendarState';\nexport type {RangeCalendarStateOptions} from './useRangeCalendarState';\nexport type {CalendarState, RangeCalendarState} from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-stately/calendar",
3
- "version": "3.0.0-rc.0",
3
+ "version": "3.0.1",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -18,17 +18,17 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@babel/runtime": "^7.6.2",
21
- "@internationalized/date": "3.0.0-rc.0",
22
- "@react-stately/utils": "^3.4.1",
23
- "@react-types/calendar": "3.0.0-rc.0",
24
- "@react-types/datepicker": "3.0.0-rc.0",
25
- "@react-types/shared": "^3.12.0"
21
+ "@internationalized/date": "^3.0.1",
22
+ "@react-stately/utils": "^3.5.1",
23
+ "@react-types/calendar": "^3.0.1",
24
+ "@react-types/datepicker": "^3.1.0",
25
+ "@react-types/shared": "^3.14.0"
26
26
  },
27
27
  "peerDependencies": {
28
- "react": "^16.8.0 || ^17.0.0-rc.1"
28
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "gitHead": "6a503b715e0dbbf92038cd7f08b1bcdde4c78e82"
33
+ "gitHead": "cd7c0ec917122c7612f653c22f8ed558f8b66ecd"
34
34
  }
package/src/types.ts CHANGED
@@ -14,7 +14,7 @@ import {CalendarDate} from '@internationalized/date';
14
14
  import {DateValue} from '@react-types/calendar';
15
15
  import {RangeValue, ValidationState} from '@react-types/shared';
16
16
 
17
- export interface CalendarStateBase {
17
+ interface CalendarStateBase {
18
18
  /** Whether the calendar is disabled. */
19
19
  readonly isDisabled: boolean,
20
20
  /** Whether the calendar is in a read only state. */
@@ -86,7 +86,12 @@ export interface CalendarStateBase {
86
86
  /** Returns whether the previous visible date range is allowed to be selected according to the `minValue` prop. */
87
87
  isPreviousVisibleRangeInvalid(): boolean,
88
88
  /** Returns whether the next visible date range is allowed to be selected according to the `maxValue` prop. */
89
- isNextVisibleRangeInvalid(): boolean
89
+ isNextVisibleRangeInvalid(): boolean,
90
+ /**
91
+ * Returns an array of dates in the week index counted from the provided start date, or the first visible date if not given.
92
+ * The returned array always has 7 elements, but may include null if the date does not exist according to the calendar system.
93
+ */
94
+ getDatesInWeek(weekIndex: number, startDate?: CalendarDate): Array<CalendarDate | null>
90
95
  }
91
96
 
92
97
  export interface CalendarState extends CalendarStateBase {
@@ -18,6 +18,7 @@ import {
18
18
  DateFormatter,
19
19
  endOfMonth,
20
20
  endOfWeek,
21
+ getDayOfWeek,
21
22
  GregorianCalendar,
22
23
  isSameDay,
23
24
  startOfMonth,
@@ -100,7 +101,15 @@ export function useCalendarState(props: CalendarStateOptions): CalendarState {
100
101
  });
101
102
  let [isFocused, setFocused] = useState(props.autoFocus || false);
102
103
 
103
- let endDate = useMemo(() => startDate.add(visibleDuration).subtract({days: 1}), [startDate, visibleDuration]);
104
+ let endDate = useMemo(() => {
105
+ let duration = {...visibleDuration};
106
+ if (duration.days) {
107
+ duration.days--;
108
+ } else {
109
+ duration.days = -1;
110
+ }
111
+ return startDate.add(duration);
112
+ }, [startDate, visibleDuration]);
104
113
 
105
114
  // Reset focused date and visible range when calendar changes.
106
115
  let lastCalendarIdentifier = useRef(calendar.identifier);
@@ -116,7 +125,7 @@ export function useCalendarState(props: CalendarStateOptions): CalendarState {
116
125
  setFocusedDate(constrainValue(focusedDate, minValue, maxValue));
117
126
  } else if (focusedDate.compare(startDate) < 0) {
118
127
  setStartDate(alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue));
119
- } else if (focusedDate.compare(startDate.add(visibleDuration)) >= 0) {
128
+ } else if (focusedDate.compare(endDate) > 0) {
120
129
  setStartDate(alignStart(focusedDate, visibleDuration, locale, minValue, maxValue));
121
130
  }
122
131
 
@@ -290,10 +299,45 @@ export function useCalendarState(props: CalendarStateOptions): CalendarState {
290
299
  return props.isDateUnavailable && props.isDateUnavailable(date);
291
300
  },
292
301
  isPreviousVisibleRangeInvalid() {
293
- return this.isInvalid(startDate.subtract({days: 1}), minValue, maxValue);
302
+ let prev = startDate.subtract({days: 1});
303
+ return isSameDay(prev, startDate) || this.isInvalid(prev, minValue, maxValue);
294
304
  },
295
305
  isNextVisibleRangeInvalid() {
296
- return this.isInvalid(endDate.add({days: 1}), minValue, maxValue);
306
+ // Adding may return the same date if we reached the end of time
307
+ // according to the calendar system (e.g. 9999-12-31).
308
+ let next = endDate.add({days: 1});
309
+ return isSameDay(next, endDate) || this.isInvalid(next, minValue, maxValue);
310
+ },
311
+ getDatesInWeek(weekIndex, from = startDate) {
312
+ // let date = startOfWeek(from, locale);
313
+ let date = from.add({weeks: weekIndex});
314
+ let dates = [];
315
+
316
+ date = startOfWeek(date, locale);
317
+
318
+ // startOfWeek will clamp dates within the calendar system's valid range, which may
319
+ // start in the middle of a week. In this case, add null placeholders.
320
+ let dayOfWeek = getDayOfWeek(date, locale);
321
+ for (let i = 0; i < dayOfWeek; i++) {
322
+ dates.push(null);
323
+ }
324
+
325
+ while (dates.length < 7) {
326
+ dates.push(date);
327
+ let nextDate = date.add({days: 1});
328
+ if (isSameDay(date, nextDate)) {
329
+ // If the next day is the same, we have hit the end of the calendar system.
330
+ break;
331
+ }
332
+ date = nextDate;
333
+ }
334
+
335
+ // Add null placeholders if at the end of the calendar system.
336
+ while (dates.length < 7) {
337
+ dates.push(null);
338
+ }
339
+
340
+ return dates;
297
341
  }
298
342
  };
299
343
  }