@react-aria/calendar 3.0.0-rc.1 → 3.0.0
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 +5 -4
- package/dist/main.js.map +1 -1
- package/dist/module.js +6 -5
- package/dist/module.js.map +1 -1
- package/package.json +10 -10
- package/src/useCalendarCell.ts +7 -5
- package/src/utils.ts +2 -6
package/dist/main.js
CHANGED
|
@@ -198,8 +198,7 @@ $f87cd00fb2ba0f23$exports = {
|
|
|
198
198
|
|
|
199
199
|
const $df1d8e967e73ec8e$export$653eddfc964b0f8a = new WeakMap();
|
|
200
200
|
function $df1d8e967e73ec8e$export$134cbb7fb09a9522(date) {
|
|
201
|
-
|
|
202
|
-
else if ((date === null || date === void 0 ? void 0 : date.era) === 'BC') return 'short';
|
|
201
|
+
return (date === null || date === void 0 ? void 0 : date.calendar.identifier) === 'gregory' && date.era === 'BC' ? 'short' : undefined;
|
|
203
202
|
}
|
|
204
203
|
function $df1d8e967e73ec8e$export$b6df97c887c38e1a(state) {
|
|
205
204
|
let formatMessage = $jzHdg$reactariai18n.useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($f87cd00fb2ba0f23$exports)));
|
|
@@ -736,10 +735,12 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
|
|
|
736
735
|
// Focus the button in the DOM when the state updates.
|
|
737
736
|
$jzHdg$react.useEffect(()=>{
|
|
738
737
|
if (isFocused && ref.current) {
|
|
738
|
+
$jzHdg$reactariautils.focusWithoutScrolling(ref.current);
|
|
739
739
|
// Scroll into view if navigating with a keyboard, otherwise
|
|
740
740
|
// try not to shift the view under the user's mouse/finger.
|
|
741
|
-
|
|
742
|
-
|
|
741
|
+
// Only scroll the direct scroll parent, not the whole page, so
|
|
742
|
+
// we don't scroll to the bottom when opening date picker popover.
|
|
743
|
+
if ($jzHdg$reactariainteractions.getInteractionModality() !== 'pointer') $jzHdg$reactariautils.scrollIntoView($jzHdg$reactariautils.getScrollParent(ref.current), ref.current);
|
|
743
744
|
}
|
|
744
745
|
}, [
|
|
745
746
|
isFocused,
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/intl/*.js","packages/@react-aria/calendar/intl/ar-AE.json","packages/@react-aria/calendar/intl/bg-BG.json","packages/@react-aria/calendar/intl/cs-CZ.json","packages/@react-aria/calendar/intl/da-DK.json","packages/@react-aria/calendar/intl/de-DE.json","packages/@react-aria/calendar/intl/el-GR.json","packages/@react-aria/calendar/intl/en-US.json","packages/@react-aria/calendar/intl/es-ES.json","packages/@react-aria/calendar/intl/et-EE.json","packages/@react-aria/calendar/intl/fi-FI.json","packages/@react-aria/calendar/intl/fr-FR.json","packages/@react-aria/calendar/intl/he-IL.json","packages/@react-aria/calendar/intl/hr-HR.json","packages/@react-aria/calendar/intl/hu-HU.json","packages/@react-aria/calendar/intl/it-IT.json","packages/@react-aria/calendar/intl/ja-JP.json","packages/@react-aria/calendar/intl/ko-KR.json","packages/@react-aria/calendar/intl/lt-LT.json","packages/@react-aria/calendar/intl/lv-LV.json","packages/@react-aria/calendar/intl/nb-NO.json","packages/@react-aria/calendar/intl/nl-NL.json","packages/@react-aria/calendar/intl/pl-PL.json","packages/@react-aria/calendar/intl/pt-BR.json","packages/@react-aria/calendar/intl/pt-PT.json","packages/@react-aria/calendar/intl/ro-RO.json","packages/@react-aria/calendar/intl/ru-RU.json","packages/@react-aria/calendar/intl/sk-SK.json","packages/@react-aria/calendar/intl/sl-SI.json","packages/@react-aria/calendar/intl/sr-SP.json","packages/@react-aria/calendar/intl/sv-SE.json","packages/@react-aria/calendar/intl/tr-TR.json","packages/@react-aria/calendar/intl/uk-UA.json","packages/@react-aria/calendar/intl/zh-CN.json","packages/@react-aria/calendar/intl/zh-TW.json","packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/useCalendarCell.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 {useCalendar} from './useCalendar';\nexport {useRangeCalendar} from './useRangeCalendar';\nexport {useCalendarGrid} from './useCalendarGrid';\nexport {useCalendarCell} from './useCalendarCell';\n\nexport type {CalendarProps, RangeCalendarProps} from '@react-types/calendar';\nexport type {CalendarAria} from './useCalendarBase';\nexport type {AriaCalendarGridProps, CalendarGridAria} from './useCalendarGrid';\nexport type {AriaCalendarCellProps, CalendarCellAria} from './useCalendarCell';\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from '@react-stately/calendar';\n\n/**\n * Provides the behavior and accessibility implementation for a calendar component.\n * A calendar displays one or more date grids and allows users to select a single date.\n */\nexport function useCalendar<T extends DateValue>(props: CalendarProps<T>, state: CalendarState): CalendarAria {\n return useCalendarBase(props, state);\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 {announce} from '@react-aria/live-announcer';\nimport {AriaButtonProps} from '@react-types/button';\nimport {CalendarPropsBase} from '@react-types/calendar';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {DOMProps} from '@react-types/shared';\nimport {filterDOMProps, mergeProps, useLabels, useSlotId, useUpdateEffect} from '@react-aria/utils';\nimport {hookData, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\nexport interface CalendarAria {\n /** Props for the calendar grouping element. */\n calendarProps: HTMLAttributes<HTMLElement>,\n /** Props for the next button. */\n nextButtonProps: AriaButtonProps,\n /** Props for the previous button. */\n prevButtonProps: AriaButtonProps,\n /** Props for the error message element, if any. */\n errorMessageProps: HTMLAttributes<HTMLElement>,\n /** A description of the visible date range, for use in the calendar title. */\n title: string\n}\n\nexport function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {\n let formatMessage = useMessageFormatter(intlMessages);\n let domProps = filterDOMProps(props);\n\n let title = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, false);\n let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, true);\n\n // Announce when the visible date range changes\n useUpdateEffect(() => {\n // only when pressing the Previous or Next button\n if (!state.isFocused) {\n announce(visibleRangeDescription);\n }\n }, [visibleRangeDescription]);\n\n // Announce when the selected value changes\n let selectedDateDescription = useSelectedDateDescription(state);\n useUpdateEffect(() => {\n if (selectedDateDescription) {\n announce(selectedDateDescription, 'polite', 4000);\n }\n // handle an update to the caption that describes the currently selected range, to announce the new value\n }, [selectedDateDescription]);\n\n let errorMessageId = useSlotId([Boolean(props.errorMessage), props.validationState]);\n\n // Pass the label to the child grid elements.\n hookData.set(state, {\n ariaLabel: props['aria-label'],\n ariaLabelledBy: props['aria-labelledby'],\n errorMessageId,\n selectedDateDescription\n });\n\n // If the next or previous buttons become disabled while they are focused, move focus to the calendar body.\n let nextFocused = useRef(false);\n let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();\n if (nextDisabled && nextFocused.current) {\n nextFocused.current = false;\n state.setFocused(true);\n }\n\n let previousFocused = useRef(false);\n let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();\n if (previousDisabled && previousFocused.current) {\n previousFocused.current = false;\n state.setFocused(true);\n }\n\n let labelProps = useLabels({\n id: props['id'],\n 'aria-label': [props['aria-label'], visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': props['aria-labelledby']\n });\n\n return {\n calendarProps: mergeProps(domProps, labelProps, {\n role: 'group',\n 'aria-describedby': props['aria-describedby'] || undefined\n }),\n nextButtonProps: {\n onPress: () => state.focusNextPage(),\n 'aria-label': formatMessage('next'),\n isDisabled: nextDisabled,\n onFocus: () => nextFocused.current = true,\n onBlur: () => nextFocused.current = false\n },\n prevButtonProps: {\n onPress: () => state.focusPreviousPage(),\n 'aria-label': formatMessage('previous'),\n isDisabled: previousDisabled,\n onFocus: () => previousFocused.current = true,\n onBlur: () => previousFocused.current = false\n },\n errorMessageProps: {\n id: errorMessageId\n },\n title\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 {CalendarDate, DateFormatter, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {FormatMessage, useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMemo} from 'react';\n\ninterface HookData {\n ariaLabel: string,\n ariaLabelledBy: string,\n errorMessageId: string,\n selectedDateDescription: string\n}\n\nexport const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();\n\nexport function getEraFormat(date: CalendarDate) {\n if (date?.calendar.identifier !== 'gregory') {\n return 'long';\n } else if (date?.era === 'BC') {\n return 'short';\n }\n}\n\nexport function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {\n let formatMessage = useMessageFormatter(intlMessages);\n\n let start: CalendarDate, end: CalendarDate;\n if ('highlightedRange' in state) {\n ({start, end} = state.highlightedRange || {});\n } else {\n start = end = state.value;\n }\n\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era: getEraFormat(start) || getEraFormat(end),\n timeZone: state.timeZone\n });\n\n let anchorDate = 'anchorDate' in state ? state.anchorDate : null;\n return useMemo(() => {\n // No message if currently selecting a range, or there is nothing highlighted.\n if (!anchorDate && start && end) {\n // Use a single date message if the start and end dates are the same day,\n // otherwise include both dates.\n if (isSameDay(start, end)) {\n let date = dateFormatter.format(start.toDate(state.timeZone));\n return formatMessage('selectedDateDescription', {date});\n } else {\n let dateRange = formatRange(dateFormatter, formatMessage, start, end, state.timeZone);\n\n return formatMessage('selectedRangeDescription', {dateRange});\n }\n }\n return '';\n }, [start, end, anchorDate, state.timeZone, formatMessage, dateFormatter]);\n}\n\nexport function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string, isAria: boolean) {\n let formatMessage = useMessageFormatter(intlMessages);\n let era: any = getEraFormat(startDate) || getEraFormat(endDate);\n let monthFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n let dateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n return useMemo(() => {\n // Special case for month granularity. Format as a single month if only a\n // single month is visible, otherwise format as a range of months.\n if (isSameDay(startDate, startOfMonth(startDate))) {\n if (isSameDay(endDate, endOfMonth(startDate))) {\n return monthFormatter.format(startDate.toDate(timeZone));\n } else if (isSameDay(endDate, endOfMonth(endDate))) {\n return isAria\n ? formatRange(monthFormatter, formatMessage, startDate, endDate, timeZone)\n : monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }\n }\n\n return isAria\n ? formatRange(dateFormatter, formatMessage, startDate, endDate, timeZone)\n : dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }, [startDate, endDate, monthFormatter, dateFormatter, formatMessage, timeZone, isAria]);\n}\n\nfunction formatRange(dateFormatter: DateFormatter, formatMessage: FormatMessage, start: CalendarDate, end: CalendarDate, timeZone: string) {\n let parts = dateFormatter.formatRangeToParts(start.toDate(timeZone), end.toDate(timeZone));\n\n // Find the separator between the start and end date. This is determined\n // by finding the last shared literal before the end range.\n let separatorIndex = -1;\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n if (part.source === 'shared' && part.type === 'literal') {\n separatorIndex = i;\n } else if (part.source === 'endRange') {\n break;\n }\n }\n\n // Now we can combine the parts into start and end strings.\n let startValue = '';\n let endValue = '';\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n startValue += parts[i].value;\n } else if (i > separatorIndex) {\n endValue += parts[i].value;\n }\n }\n\n return formatMessage('dateRange', {startDate: startValue, endDate: endValue});\n}\n","const _temp0 = require(\"./ar-AE.json\");\nconst _temp1 = require(\"./bg-BG.json\");\nconst _temp2 = require(\"./cs-CZ.json\");\nconst _temp3 = require(\"./da-DK.json\");\nconst _temp4 = require(\"./de-DE.json\");\nconst _temp5 = require(\"./el-GR.json\");\nconst _temp6 = require(\"./en-US.json\");\nconst _temp7 = require(\"./es-ES.json\");\nconst _temp8 = require(\"./et-EE.json\");\nconst _temp9 = require(\"./fi-FI.json\");\nconst _temp10 = require(\"./fr-FR.json\");\nconst _temp11 = require(\"./he-IL.json\");\nconst _temp12 = require(\"./hr-HR.json\");\nconst _temp13 = require(\"./hu-HU.json\");\nconst _temp14 = require(\"./it-IT.json\");\nconst _temp15 = require(\"./ja-JP.json\");\nconst _temp16 = require(\"./ko-KR.json\");\nconst _temp17 = require(\"./lt-LT.json\");\nconst _temp18 = require(\"./lv-LV.json\");\nconst _temp19 = require(\"./nb-NO.json\");\nconst _temp20 = require(\"./nl-NL.json\");\nconst _temp21 = require(\"./pl-PL.json\");\nconst _temp22 = require(\"./pt-BR.json\");\nconst _temp23 = require(\"./pt-PT.json\");\nconst _temp24 = require(\"./ro-RO.json\");\nconst _temp25 = require(\"./ru-RU.json\");\nconst _temp26 = require(\"./sk-SK.json\");\nconst _temp27 = require(\"./sl-SI.json\");\nconst _temp28 = require(\"./sr-SP.json\");\nconst _temp29 = require(\"./sv-SE.json\");\nconst _temp30 = require(\"./tr-TR.json\");\nconst _temp31 = require(\"./uk-UA.json\");\nconst _temp32 = require(\"./zh-CN.json\");\nconst _temp33 = require(\"./zh-TW.json\");\nmodule.exports = {\n \"ar-AE\": _temp0,\n \"bg-BG\": _temp1,\n \"cs-CZ\": _temp2,\n \"da-DK\": _temp3,\n \"de-DE\": _temp4,\n \"el-GR\": _temp5,\n \"en-US\": _temp6,\n \"es-ES\": _temp7,\n \"et-EE\": _temp8,\n \"fi-FI\": _temp9,\n \"fr-FR\": _temp10,\n \"he-IL\": _temp11,\n \"hr-HR\": _temp12,\n \"hu-HU\": _temp13,\n \"it-IT\": _temp14,\n \"ja-JP\": _temp15,\n \"ko-KR\": _temp16,\n \"lt-LT\": _temp17,\n \"lv-LV\": _temp18,\n \"nb-NO\": _temp19,\n \"nl-NL\": _temp20,\n \"pl-PL\": _temp21,\n \"pt-BR\": _temp22,\n \"pt-PT\": _temp23,\n \"ro-RO\": _temp24,\n \"ru-RU\": _temp25,\n \"sk-SK\": _temp26,\n \"sl-SI\": _temp27,\n \"sr-SP\": _temp28,\n \"sv-SE\": _temp29,\n \"tr-TR\": _temp30,\n \"uk-UA\": _temp31,\n \"zh-CN\": _temp32,\n \"zh-TW\": _temp33\n}","{\n \"dateRange\": \"{startDate} إلى {endDate}\",\n \"dateSelected\": \"{date} المحدد\",\n \"finishRangeSelectionPrompt\": \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n \"maximumDate\": \"آخر تاريخ متاح\",\n \"minimumDate\": \"أول تاريخ متاح\",\n \"next\": \"التالي\",\n \"previous\": \"السابق\",\n \"selectedDateDescription\": \"تاريخ محدد: {date}\",\n \"selectedRangeDescription\": \"المدى الزمني المحدد: {dateRange}\",\n \"startRangeSelectionPrompt\": \"انقر لبدء عملية تحديد نطاق التاريخ\",\n \"todayDate\": \"اليوم، {date}\",\n \"todayDateSelected\": \"اليوم، {date} محدد\"\n}\n","{\n \"dateRange\": \"{startDate} до {endDate}\",\n \"dateSelected\": \"Избрано е {date}\",\n \"finishRangeSelectionPrompt\": \"Натиснете, за да довършите избора на времеви интервал\",\n \"maximumDate\": \"Последна налична дата\",\n \"minimumDate\": \"Първа налична дата\",\n \"next\": \"Напред\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Избрана дата: {date}\",\n \"selectedRangeDescription\": \"Избран диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натиснете, за да пристъпите към избора на времеви интервал\",\n \"todayDate\": \"Днес, {date}\",\n \"todayDateSelected\": \"Днес, {date} са избрани\"\n}\n","{\n \"dateRange\": \"{startDate} až {endDate}\",\n \"dateSelected\": \"Vybráno {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výběr rozsahu dat\",\n \"maximumDate\": \"Poslední dostupné datum\",\n \"minimumDate\": \"První dostupné datum\",\n \"next\": \"Další\",\n \"previous\": \"Předchozí\",\n \"selectedDateDescription\": \"Vybrané datum: {date}\",\n \"selectedRangeDescription\": \"Vybrané období: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím zahájíte výběr rozsahu dat\",\n \"todayDate\": \"Dnes, {date}\",\n \"todayDateSelected\": \"Dnes, vybráno {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klik for at fuldføre valg af datoområde\",\n \"maximumDate\": \"Sidste ledige dato\",\n \"minimumDate\": \"Første ledige dato\",\n \"next\": \"Næste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt interval: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik for at starte valg af datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} bis {endDate}\",\n \"dateSelected\": \"{date} ausgewählt\",\n \"finishRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n \"maximumDate\": \"Letztes verfügbares Datum\",\n \"minimumDate\": \"Erstes verfügbares Datum\",\n \"next\": \"Weiter\",\n \"previous\": \"Zurück\",\n \"selectedDateDescription\": \"Ausgewähltes Datum: {date}\",\n \"selectedRangeDescription\": \"Ausgewählter Bereich: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n \"todayDate\": \"Heute, {date}\",\n \"todayDateSelected\": \"Heute, {date} ausgewählt\"\n}\n","{\n \"dateRange\": \"{startDate} έως {endDate}\",\n \"dateSelected\": \"Επιλέχθηκε {date}\",\n \"finishRangeSelectionPrompt\": \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n \"maximumDate\": \"Τελευταία διαθέσιμη ημερομηνία\",\n \"minimumDate\": \"Πρώτη διαθέσιμη ημερομηνία\",\n \"next\": \"Επόμενο\",\n \"previous\": \"Προηγούμενο\",\n \"selectedDateDescription\": \"Επιλεγμένη ημερομηνία: {date}\",\n \"selectedRangeDescription\": \"Επιλεγμένο εύρος: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n \"todayDate\": \"Σήμερα, {date}\",\n \"todayDateSelected\": \"Σήμερα, επιλέχτηκε {date}\"\n}\n","{\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"selectedDateDescription\": \"Selected Date: {date}\",\n \"selectedRangeDescription\": \"Selected Range: {dateRange}\",\n \"todayDate\": \"Today, {date}\",\n \"todayDateSelected\": \"Today, {date} selected\",\n \"dateSelected\": \"{date} selected\",\n \"startRangeSelectionPrompt\": \"Click to start selecting date range\",\n \"finishRangeSelectionPrompt\": \"Click to finish selecting date range\",\n \"minimumDate\": \"First available date\",\n \"maximumDate\": \"Last available date\",\n \"dateRange\": \"{startDate} to {endDate}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} seleccionado\",\n \"finishRangeSelectionPrompt\": \"Haga clic para terminar de seleccionar rango de fechas\",\n \"maximumDate\": \"Última fecha disponible\",\n \"minimumDate\": \"Primera fecha disponible\",\n \"next\": \"Siguiente\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Fecha seleccionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo seleccionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Haga clic para comenzar a seleccionar un rango de fechas\",\n \"todayDate\": \"Hoy, {date}\",\n \"todayDateSelected\": \"Hoy, {date} seleccionado\"\n}\n","{\n \"dateRange\": \"{startDate} kuni {endDate}\",\n \"dateSelected\": \"{date} valitud\",\n \"finishRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n \"maximumDate\": \"Viimane saadaolev kuupäev\",\n \"minimumDate\": \"Esimene saadaolev kuupäev\",\n \"next\": \"Järgmine\",\n \"previous\": \"Eelmine\",\n \"selectedDateDescription\": \"Valitud kuupäev: {date}\",\n \"selectedRangeDescription\": \"Valitud vahemik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimiseks\",\n \"todayDate\": \"Täna, {date}\",\n \"todayDateSelected\": \"Täna, {date} valitud\"\n}\n","{\n \"dateRange\": \"{startDate} – {endDate}\",\n \"dateSelected\": \"{date} valittu\",\n \"finishRangeSelectionPrompt\": \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n \"maximumDate\": \"Viimeinen varattavissa oleva päivämäärä\",\n \"minimumDate\": \"Ensimmäinen varattavissa oleva päivämäärä\",\n \"next\": \"Seuraava\",\n \"previous\": \"Edellinen\",\n \"selectedDateDescription\": \"Valittu päivämäärä: {date}\",\n \"selectedRangeDescription\": \"Valittu aikaväli: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n \"todayDate\": \"Tänään, {date}\",\n \"todayDateSelected\": \"Tänään, {date} valittu\"\n}\n","{\n \"dateRange\": \"{startDate} à {endDate}\",\n \"dateSelected\": \"{date} sélectionné\",\n \"finishRangeSelectionPrompt\": \"Cliquer pour finir de sélectionner la plage de dates\",\n \"maximumDate\": \"Dernière date disponible\",\n \"minimumDate\": \"Première date disponible\",\n \"next\": \"Suivant\",\n \"previous\": \"Précédent\",\n \"selectedDateDescription\": \"Date sélectionnée : {date}\",\n \"selectedRangeDescription\": \"Plage sélectionnée : {dateRange}\",\n \"startRangeSelectionPrompt\": \"Cliquer pour commencer à sélectionner la plage de dates\",\n \"todayDate\": \"Aujourd'hui, {date}\",\n \"todayDateSelected\": \"Aujourd’hui, {date} sélectionné\"\n}\n","{\n \"dateRange\": \"{startDate} עד {endDate}\",\n \"dateSelected\": \"{date} נבחר\",\n \"finishRangeSelectionPrompt\": \"חץ כדי לסיים את בחירת טווח התאריכים\",\n \"maximumDate\": \"תאריך פנוי אחרון\",\n \"minimumDate\": \"תאריך פנוי ראשון\",\n \"next\": \"הבא\",\n \"previous\": \"הקודם\",\n \"selectedDateDescription\": \"תאריך נבחר: {date}\",\n \"selectedRangeDescription\": \"טווח נבחר: {dateRange}\",\n \"startRangeSelectionPrompt\": \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n \"todayDate\": \"היום, {date}\",\n \"todayDateSelected\": \"היום, {date} נבחר\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} odabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite raspon odabranih datuma\",\n \"maximumDate\": \"Posljednji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sljedeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Odabrani datum: {date}\",\n \"selectedRangeDescription\": \"Odabrani raspon: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete raspon odabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, odabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate}–{endDate}\",\n \"dateSelected\": \"{date} kiválasztva\",\n \"finishRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n \"maximumDate\": \"Utolsó elérhető dátum\",\n \"minimumDate\": \"Az első elérhető dátum\",\n \"next\": \"Következő\",\n \"previous\": \"Előző\",\n \"selectedDateDescription\": \"Kijelölt dátum: {date}\",\n \"selectedRangeDescription\": \"Kijelölt tartomány: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének indításához\",\n \"todayDate\": \"Ma, {date}\",\n \"todayDateSelected\": \"Ma, {date} kijelölve\"\n}\n","{\n \"dateRange\": \"Da {startDate} a {endDate}\",\n \"dateSelected\": \"{date} selezionata\",\n \"finishRangeSelectionPrompt\": \"Fai clic per completare la selezione dell’intervallo di date\",\n \"maximumDate\": \"Ultima data disponibile\",\n \"minimumDate\": \"Prima data disponibile\",\n \"next\": \"Successivo\",\n \"previous\": \"Precedente\",\n \"selectedDateDescription\": \"Data selezionata: {date}\",\n \"selectedRangeDescription\": \"Intervallo selezionato: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Fai clic per selezionare l’intervallo di date\",\n \"todayDate\": \"Oggi, {date}\",\n \"todayDateSelected\": \"Oggi, {date} selezionata\"\n}\n","{\n \"dateRange\": \"{startDate} から {endDate}\",\n \"dateSelected\": \"{date} を選択\",\n \"finishRangeSelectionPrompt\": \"クリックして日付範囲の選択を終了\",\n \"maximumDate\": \"最終利用可能日\",\n \"minimumDate\": \"最初の利用可能日\",\n \"next\": \"次へ\",\n \"previous\": \"前へ\",\n \"selectedDateDescription\": \"選択した日付 : {date}\",\n \"selectedRangeDescription\": \"選択範囲 : {dateRange}\",\n \"startRangeSelectionPrompt\": \"クリックして日付範囲の選択を開始\",\n \"todayDate\": \"本日、{date}\",\n \"todayDateSelected\": \"本日、{date} を選択\"\n}\n","{\n \"dateRange\": \"{startDate} ~ {endDate}\",\n \"dateSelected\": \"{date} 선택됨\",\n \"finishRangeSelectionPrompt\": \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n \"maximumDate\": \"마지막으로 사용 가능한 일자\",\n \"minimumDate\": \"처음으로 사용 가능한 일자\",\n \"next\": \"다음\",\n \"previous\": \"이전\",\n \"selectedDateDescription\": \"선택 일자: {date}\",\n \"selectedRangeDescription\": \"선택 범위: {dateRange}\",\n \"startRangeSelectionPrompt\": \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n \"todayDate\": \"오늘, {date}\",\n \"todayDateSelected\": \"오늘, {date} 선택됨\"\n}\n","{\n \"dateRange\": \"Nuo {startDate} iki {endDate}\",\n \"dateSelected\": \"Pasirinkta {date}\",\n \"finishRangeSelectionPrompt\": \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n \"maximumDate\": \"Paskutinė galima data\",\n \"minimumDate\": \"Pirmoji galima data\",\n \"next\": \"Paskesnis\",\n \"previous\": \"Ankstesnis\",\n \"selectedDateDescription\": \"Pasirinkta data: {date}\",\n \"selectedRangeDescription\": \"Pasirinktas intervalas: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n \"todayDate\": \"Šiandien, {date}\",\n \"todayDateSelected\": \"Šiandien, pasirinkta {date}\"\n}\n","{\n \"dateRange\": \"No {startDate} līdz {endDate}\",\n \"dateSelected\": \"Atlasīts: {date}\",\n \"finishRangeSelectionPrompt\": \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n \"maximumDate\": \"Pēdējais pieejamais datums\",\n \"minimumDate\": \"Pirmais pieejamais datums\",\n \"next\": \"Tālāk\",\n \"previous\": \"Atpakaļ\",\n \"selectedDateDescription\": \"Atlasītais datums: {date}\",\n \"selectedRangeDescription\": \"Atlasītais diapazons: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n \"todayDate\": \"Šodien, {date}\",\n \"todayDateSelected\": \"Atlasīta šodiena, {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klikk for å fullføre valg av datoområde\",\n \"maximumDate\": \"Siste tilgjengelige dato\",\n \"minimumDate\": \"Første tilgjengelige dato\",\n \"next\": \"Neste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt område: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klikk for å starte valg av datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} tot {endDate}\",\n \"dateSelected\": \"{date} geselecteerd\",\n \"finishRangeSelectionPrompt\": \"Klik om de selectie van het datumbereik te voltooien\",\n \"maximumDate\": \"Laatste beschikbare datum\",\n \"minimumDate\": \"Eerste beschikbare datum\",\n \"next\": \"Volgende\",\n \"previous\": \"Vorige\",\n \"selectedDateDescription\": \"Geselecteerde datum: {date}\",\n \"selectedRangeDescription\": \"Geselecteerd bereik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik om het datumbereik te selecteren\",\n \"todayDate\": \"Vandaag, {date}\",\n \"todayDateSelected\": \"Vandaag, {date} geselecteerd\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"Wybrano {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknij, aby zakończyć wybór zakresu dat\",\n \"maximumDate\": \"Ostatnia dostępna data\",\n \"minimumDate\": \"Pierwsza dostępna data\",\n \"next\": \"Dalej\",\n \"previous\": \"Wstecz\",\n \"selectedDateDescription\": \"Wybrana data: {date}\",\n \"selectedRangeDescription\": \"Wybrany zakres: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknij, aby rozpocząć wybór zakresu dat\",\n \"todayDate\": \"Dzisiaj, {date}\",\n \"todayDateSelected\": \"Dzisiaj wybrano {date}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para concluir a seleção do intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para iniciar a seleção do intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para terminar de selecionar o intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para começar a selecionar o intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"De la {startDate} până la {endDate}\",\n \"dateSelected\": \"{date} selectată\",\n \"finishRangeSelectionPrompt\": \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n \"maximumDate\": \"Ultima dată disponibilă\",\n \"minimumDate\": \"Prima dată disponibilă\",\n \"next\": \"Următorul\",\n \"previous\": \"Înainte\",\n \"selectedDateDescription\": \"Dată selectată: {date}\",\n \"selectedRangeDescription\": \"Interval selectat: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n \"todayDate\": \"Astăzi, {date}\",\n \"todayDateSelected\": \"Azi, {date} selectată\"\n}\n","{\n \"dateRange\": \"С {startDate} по {endDate}\",\n \"dateSelected\": \"Выбрано {date}\",\n \"finishRangeSelectionPrompt\": \"Щелкните, чтобы завершить выбор диапазона дат\",\n \"maximumDate\": \"Последняя доступная дата\",\n \"minimumDate\": \"Первая доступная дата\",\n \"next\": \"Далее\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Выбранная дата: {date}\",\n \"selectedRangeDescription\": \"Выбранный диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Щелкните, чтобы начать выбор диапазона дат\",\n \"todayDate\": \"Сегодня, {date}\",\n \"todayDateSelected\": \"Сегодня, выбрано {date}\"\n}\n","{\n \"dateRange\": \"Od {startDate} do {endDate}\",\n \"dateSelected\": \"Vybratý dátum {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výber rozsahu dátumov\",\n \"maximumDate\": \"Posledný dostupný dátum\",\n \"minimumDate\": \"Prvý dostupný dátum\",\n \"next\": \"Nasledujúce\",\n \"previous\": \"Predchádzajúce\",\n \"selectedDateDescription\": \"Vybratý dátum: {date}\",\n \"selectedRangeDescription\": \"Vybratý rozsah: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím spustíte výber rozsahu dátumov\",\n \"todayDate\": \"Dnes {date}\",\n \"todayDateSelected\": \"Vybratý dnešný dátum {date}\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izbrano\",\n \"finishRangeSelectionPrompt\": \"Kliknite za dokončanje izbire datumskega obsega\",\n \"maximumDate\": \"Zadnji razpoložljivi datum\",\n \"minimumDate\": \"Prvi razpoložljivi datum\",\n \"next\": \"Naprej\",\n \"previous\": \"Nazaj\",\n \"selectedDateDescription\": \"Izbrani datum: {date}\",\n \"selectedRangeDescription\": \"Izbrano območje: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite za začetek izbire datumskega obsega\",\n \"todayDate\": \"Danes, {date}\",\n \"todayDateSelected\": \"Danes, {date} izbrano\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite opseg izabranih datuma\",\n \"maximumDate\": \"Zadnji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sledeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Izabrani datum: {date}\",\n \"selectedRangeDescription\": \"Izabrani period: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete opseg izabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, izabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate} till {endDate}\",\n \"dateSelected\": \"{date} har valts\",\n \"finishRangeSelectionPrompt\": \"Klicka för att avsluta val av datumintervall\",\n \"maximumDate\": \"Sista tillgängliga datum\",\n \"minimumDate\": \"Första tillgängliga datum\",\n \"next\": \"Nästa\",\n \"previous\": \"Föregående\",\n \"selectedDateDescription\": \"Valt datum: {date}\",\n \"selectedRangeDescription\": \"Valt intervall: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicka för att välja datumintervall\",\n \"todayDate\": \"Idag, {date}\",\n \"todayDateSelected\": \"Idag, {date} har valts\"\n}\n","{\n \"dateRange\": \"{startDate} - {endDate}\",\n \"dateSelected\": \"{date} seçildi\",\n \"finishRangeSelectionPrompt\": \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n \"maximumDate\": \"Son müsait tarih\",\n \"minimumDate\": \"İlk müsait tarih\",\n \"next\": \"Sonraki\",\n \"previous\": \"Önceki\",\n \"selectedDateDescription\": \"Seçilen Tarih: {date}\",\n \"selectedRangeDescription\": \"Seçilen Aralık: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Tarih aralığı seçimini başlatmak için tıklayın\",\n \"todayDate\": \"Bugün, {date}\",\n \"todayDateSelected\": \"Bugün, {date} seçildi\"\n}\n","{\n \"dateRange\": \"{startDate} — {endDate}\",\n \"dateSelected\": \"Вибрано {date}\",\n \"finishRangeSelectionPrompt\": \"Натисніть, щоб завершити вибір діапазону дат\",\n \"maximumDate\": \"Остання доступна дата\",\n \"minimumDate\": \"Перша доступна дата\",\n \"next\": \"Наступний\",\n \"previous\": \"Попередній\",\n \"selectedDateDescription\": \"Вибрана дата: {date}\",\n \"selectedRangeDescription\": \"Вибраний діапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натисніть, щоб почати вибір діапазону дат\",\n \"todayDate\": \"Сьогодні, {date}\",\n \"todayDateSelected\": \"Сьогодні, вибрано {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已选定 {date}\",\n \"finishRangeSelectionPrompt\": \"单击以完成选择日期范围\",\n \"maximumDate\": \"最后一个可用日期\",\n \"minimumDate\": \"第一个可用日期\",\n \"next\": \"下一页\",\n \"previous\": \"上一页\",\n \"selectedDateDescription\": \"选定的日期:{date}\",\n \"selectedRangeDescription\": \"选定的范围:{dateRange}\",\n \"startRangeSelectionPrompt\": \"单击以开始选择日期范围\",\n \"todayDate\": \"今天,即 {date}\",\n \"todayDateSelected\": \"已选定今天,即 {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已選取 {date}\",\n \"finishRangeSelectionPrompt\": \"按一下以完成選取日期範圍\",\n \"maximumDate\": \"最後一個可用日期\",\n \"minimumDate\": \"第一個可用日期\",\n \"next\": \"下一頁\",\n \"previous\": \"上一頁\",\n \"selectedDateDescription\": \"選定的日期:{date}\",\n \"selectedRangeDescription\": \"選定的範圍:{dateRange}\",\n \"startRangeSelectionPrompt\": \"按一下以開始選取日期範圍\",\n \"todayDate\": \"今天,{date}\",\n \"todayDateSelected\": \"已選取今天,{date}\"\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {DateValue, RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from '@react-stately/calendar';\nimport {RefObject, useRef} from 'react';\nimport {useEvent} from '@react-aria/utils';\n\n/**\n * Provides the behavior and accessibility implementation 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 useRangeCalendar<T extends DateValue>(props: RangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<HTMLElement>): CalendarAria {\n let res = useCalendarBase(props, state);\n\n // We need to ignore virtual pointer events from VoiceOver due to these bugs.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n // usePress also does this and waits for the following click event before firing.\n // We need to match that here otherwise this will fire before the press event in\n // useCalendarCell, causing range selection to not work properly.\n let isVirtualClick = useRef(false);\n let windowRef = useRef(typeof window !== 'undefined' ? window : null);\n useEvent(windowRef, 'pointerdown', e => {\n isVirtualClick.current = e.width === 0 && e.height === 0;\n });\n\n // Stop range selection when pressing or releasing a pointer outside the calendar body,\n // except when pressing the next or previous buttons to switch months.\n let endDragging = e => {\n if (isVirtualClick.current) {\n isVirtualClick.current = false;\n return;\n }\n\n state.setDragging(false);\n if (!state.anchorDate) {\n return;\n }\n\n let target = e.target as HTMLElement;\n let body = document.getElementById(res.calendarProps.id);\n if (\n body &&\n body.contains(document.activeElement) &&\n (!body.contains(target) || !target.closest('button, [role=\"button\"]'))\n ) {\n state.selectFocusedDate();\n }\n };\n\n useEvent(windowRef, 'pointerup', endDragging);\n useEvent(windowRef, 'pointercancel', endDragging);\n\n // Also stop range selection on blur, e.g. tabbing away from the calendar.\n res.calendarProps.onBlur = e => {\n if ((!e.relatedTarget || !ref.current.contains(e.relatedTarget)) && state.anchorDate) {\n state.selectFocusedDate();\n }\n };\n\n // Prevent touch scrolling while dragging\n useEvent(ref, 'touchmove', e => {\n if (state.isDragging) {\n e.preventDefault();\n }\n }, {passive: false, capture: true});\n\n return res;\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 {CalendarDate, startOfWeek, today} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {hookData, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, KeyboardEvent, useMemo} from 'react';\nimport {mergeProps, useLabels} from '@react-aria/utils';\nimport {useDateFormatter, useLocale} from '@react-aria/i18n';\n\nexport interface AriaCalendarGridProps {\n /**\n * The first date displayed in the calendar grid.\n * Defaults to the first visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n startDate?: CalendarDate,\n /**\n * The last date displayed in the calendar grid.\n * Defaults to the last visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n endDate?: CalendarDate\n}\n\nexport interface CalendarGridAria {\n /** Props for the date grid element (e.g. `<table>`). */\n gridProps: HTMLAttributes<HTMLElement>,\n /** Props for the grid header element (e.g. `<thead>`). */\n headerProps: HTMLAttributes<HTMLElement>,\n /** A list of week day abbreviations formatted for the current locale, typically used in column headers. */\n weekDays: string[]\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar grid component.\n * A calendar grid displays a single grid of days within a calendar or range calendar which\n * can be keyboard navigated and selected by the user.\n */\nexport function useCalendarGrid(props: AriaCalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria {\n let {\n startDate = state.visibleRange.start,\n endDate = state.visibleRange.end\n } = props;\n\n let {direction} = useLocale();\n\n let onKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'PageUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousSection(e.shiftKey);\n break;\n case 'PageDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextSection(e.shiftKey);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionEnd();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionStart();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousRow();\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextRow();\n break;\n case 'Escape':\n // Cancel the selection.\n if ('setAnchorDate' in state) {\n e.preventDefault();\n state.setAnchorDate(null);\n }\n break;\n }\n };\n\n let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone, true);\n\n let {ariaLabel, ariaLabelledBy} = hookData.get(state);\n let labelProps = useLabels({\n 'aria-label': [ariaLabel, visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': ariaLabelledBy\n });\n\n let dayFormatter = useDateFormatter({weekday: 'narrow', timeZone: state.timeZone});\n let {locale} = useLocale();\n let weekDays = useMemo(() => {\n let weekStart = startOfWeek(today(state.timeZone), locale);\n return [...new Array(7).keys()].map((index) => {\n let date = weekStart.add({days: index});\n let dateDay = date.toDate(state.timeZone);\n return dayFormatter.format(dateDay);\n });\n }, [locale, state.timeZone, dayFormatter]);\n\n return {\n gridProps: mergeProps(labelProps, {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || null,\n 'aria-disabled': state.isDisabled || null,\n 'aria-multiselectable': ('highlightedRange' in state) || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false)\n }),\n headerProps: {\n // Column headers are hidden to screen readers to make navigating with a touch screen reader easier.\n // The day names are already included in the label of each cell, so there's no need to announce them twice.\n 'aria-hidden': true\n },\n weekDays\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 {CalendarDate, isEqualDay, isSameDay, isToday} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {focusWithoutScrolling, useDescription} from '@react-aria/utils';\nimport {getEraFormat, hookData} from './utils';\nimport {getInteractionModality, usePress} from '@react-aria/interactions';\nimport {HTMLAttributes, RefObject, useEffect, useMemo, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps} from '@react-aria/utils';\nimport {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n\nexport interface AriaCalendarCellProps {\n /** The date that this cell represents. */\n date: CalendarDate,\n /**\n * Whether the cell is disabled. By default, this is determined by the\n * Calendar's `minValue`, `maxValue`, and `isDisabled` props.\n */\n isDisabled?: boolean\n}\n\nexport interface CalendarCellAria {\n /** Props for the grid cell element (e.g. `<td>`). */\n cellProps: HTMLAttributes<HTMLElement>,\n /** Props for the button element within the cell. */\n buttonProps: HTMLAttributes<HTMLElement>,\n /** Whether the cell is currently being pressed. */\n isPressed: boolean,\n /** Whether the cell is selected. */\n isSelected: boolean,\n /** Whether the cell is focused. */\n isFocused: boolean,\n /**\n * Whether the cell is disabled, according to the calendar's `minValue`, `maxValue`, and `isDisabled` props.\n * Disabled dates are not focusable, and cannot be selected by the user. They are typically\n * displayed with a dimmed appearance.\n */\n isDisabled: boolean,\n /**\n * Whether the cell is unavailable, according to the calendar's `isDateUnavailable` prop. Unavailable dates remain\n * focusable, but cannot be selected by the user. They should be displayed with a visual affordance to indicate they\n * are unavailable, such as a different color or a strikethrough.\n *\n * Note that because they are focusable, unavailable dates must meet a 4.5:1 color contrast ratio,\n * [as defined by WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html).\n */\n isUnavailable: boolean,\n /**\n * Whether the cell is outside the visible range of the calendar.\n * For example, dates before the first day of a month in the same week.\n */\n isOutsideVisibleRange: boolean,\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean,\n /** The day number formatted according to the current locale. */\n formattedDate: string\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar cell component.\n * A calendar cell displays a date cell within a calendar grid which can be selected by the user.\n */\nexport function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement>): CalendarCellAria {\n let {date, isDisabled} = props;\n let {errorMessageId, selectedDateDescription} = hookData.get(state);\n let formatMessage = useMessageFormatter(intlMessages);\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n era: getEraFormat(date),\n timeZone: state.timeZone\n });\n let isSelected = state.isSelected(date);\n let isFocused = state.isCellFocused(date);\n isDisabled = isDisabled || state.isCellDisabled(date);\n let isUnavailable = state.isCellUnavailable(date);\n let isSelectable = !isDisabled && !isUnavailable;\n let isInvalid = state.validationState === 'invalid' && (\n 'highlightedRange' in state\n ? !state.anchorDate && state.highlightedRange && date.compare(state.highlightedRange.start) >= 0 && date.compare(state.highlightedRange.end) <= 0\n : state.value && isSameDay(state.value, date)\n );\n\n if (isInvalid) {\n isSelected = true;\n }\n\n // For performance, reuse the same date object as before if the new date prop is the same.\n // This allows subsequent useMemo results to be reused.\n let lastDate = useRef(null);\n if (lastDate.current && isEqualDay(date, lastDate.current)) {\n date = lastDate.current;\n }\n\n lastDate.current = date;\n\n let nativeDate = useMemo(() => date.toDate(state.timeZone), [date, state.timeZone]);\n\n // aria-label should be localize Day of week, Month, Day and Year without Time.\n let isDateToday = isToday(date, state.timeZone);\n let label = useMemo(() => {\n let label = '';\n\n // If this is a range calendar, add a description of the full selected range\n // to the first and last selected date.\n if (\n 'highlightedRange' in state &&\n state.value &&\n !state.anchorDate &&\n (isSameDay(date, state.value.start) || isSameDay(date, state.value.end))\n ) {\n label = selectedDateDescription + ', ';\n }\n\n label += dateFormatter.format(nativeDate);\n if (isDateToday) {\n // If date is today, set appropriate string depending on selected state:\n label = formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {\n date: label\n });\n } else if (isSelected) {\n // If date is selected but not today:\n label = formatMessage('dateSelected', {\n date: label\n });\n }\n\n if (state.minValue && isSameDay(date, state.minValue)) {\n label += ', ' + formatMessage('minimumDate');\n } else if (state.maxValue && isSameDay(date, state.maxValue)) {\n label += ', ' + formatMessage('maximumDate');\n }\n\n return label;\n }, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday, date, state, selectedDateDescription]);\n\n // When a cell is focused and this is a range calendar, add a prompt to help\n // screenreader users know that they are in a range selection mode.\n let rangeSelectionPrompt = '';\n if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {\n // If selection has started add \"click to finish selecting range\"\n if (state.anchorDate) {\n rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');\n // Otherwise, add \"click to start selecting range\" prompt\n } else {\n rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');\n }\n }\n\n let descriptionProps = useDescription(rangeSelectionPrompt);\n\n let isAnchorPressed = useRef(false);\n let isRangeBoundaryPressed = useRef(false);\n let touchDragTimerRef = useRef(null);\n let {pressProps, isPressed} = usePress({\n // When dragging to select a range, we don't want dragging over the original anchor\n // again to trigger onPressStart. Cancel presses immediately when the pointer exits.\n shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,\n preventFocusOnPress: true,\n isDisabled: !isSelectable,\n onPressStart(e) {\n if (state.isReadOnly) {\n state.setFocusedDate(date);\n return;\n }\n\n if ('highlightedRange' in state && !state.anchorDate && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n // Allow dragging the start or end date of a range to modify it\n // rather than starting a new selection.\n // Don't allow dragging when invalid, or weird jumping behavior may occur as date ranges\n // are constrained to available dates. The user will need to select a new range in this case.\n if (state.highlightedRange && !isInvalid) {\n if (isSameDay(date, state.highlightedRange.start)) {\n state.setAnchorDate(state.highlightedRange.end);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n } else if (isSameDay(date, state.highlightedRange.end)) {\n state.setAnchorDate(state.highlightedRange.start);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n }\n }\n\n let startDragging = () => {\n state.setDragging(true);\n touchDragTimerRef.current = null;\n\n state.selectDate(date);\n state.setFocusedDate(date);\n isAnchorPressed.current = true;\n };\n\n // Start selection on mouse/touch down so users can drag to select a range.\n // On touch, delay dragging to determine if the user really meant to scroll.\n if (e.pointerType === 'touch') {\n touchDragTimerRef.current = setTimeout(startDragging, 200);\n } else {\n startDragging();\n }\n }\n },\n onPressEnd() {\n isRangeBoundaryPressed.current = false;\n isAnchorPressed.current = false;\n clearTimeout(touchDragTimerRef.current);\n touchDragTimerRef.current = null;\n },\n onPress() {\n // For non-range selection, always select on press up.\n if (!('anchorDate' in state) && !state.isReadOnly) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n },\n onPressUp(e) {\n if (state.isReadOnly) {\n return;\n }\n\n // If the user tapped quickly, the date won't be selected yet and the\n // timer will still be in progress. In this case, select the date on touch up.\n // Timer is cleared in onPressEnd.\n if ('anchorDate' in state && touchDragTimerRef.current) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n\n if ('anchorDate' in state) {\n if (isRangeBoundaryPressed.current) {\n // When clicking on the start or end date of an already selected range,\n // start a new selection on press up to also allow dragging the date to\n // change the existing range.\n state.setAnchorDate(date);\n } else if (state.anchorDate && !isAnchorPressed.current) {\n // When releasing a drag or pressing the end date of a range, select it.\n state.selectDate(date);\n state.setFocusedDate(date);\n } else if (e.pointerType === 'keyboard' && !state.anchorDate) {\n // For range selection, auto-advance the focused date by one if using keyboard.\n // This gives an indication that you're selecting a range rather than a single date.\n // For mouse, this is unnecessary because users will see the indication on hover. For screen readers,\n // there will be an announcement to \"click to finish selecting range\" (above).\n state.selectDate(date);\n let nextDay = date.add({days: 1});\n if (state.isInvalid(nextDay)) {\n nextDay = date.subtract({days: 1});\n }\n if (!state.isInvalid(nextDay)) {\n state.setFocusedDate(nextDay);\n }\n } else if (e.pointerType === 'virtual') {\n // For screen readers, just select the date on click.\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n }\n }\n });\n\n let tabIndex = null;\n if (!isDisabled) {\n tabIndex = isSameDay(date, state.focusedDate) ? 0 : -1;\n }\n\n // Focus the button in the DOM when the state updates.\n useEffect(() => {\n if (isFocused && ref.current) {\n // Scroll into view if navigating with a keyboard, otherwise\n // try not to shift the view under the user's mouse/finger.\n if (getInteractionModality() === 'pointer') {\n focusWithoutScrolling(ref.current);\n } else {\n ref.current.focus();\n }\n }\n }, [isFocused, ref]);\n\n let cellDateFormatter = useDateFormatter({\n day: 'numeric',\n timeZone: state.timeZone,\n calendar: date.calendar.identifier\n });\n\n let formattedDate = useMemo(() => cellDateFormatter.format(nativeDate), [cellDateFormatter, nativeDate]);\n\n return {\n cellProps: {\n role: 'gridcell',\n 'aria-disabled': !isSelectable || null,\n 'aria-selected': isSelected || null,\n 'aria-invalid': isInvalid || null\n },\n buttonProps: mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': !isSelectable || null,\n 'aria-label': label,\n 'aria-invalid': isInvalid || null,\n 'aria-describedby': [\n isInvalid ? errorMessageId : null,\n descriptionProps['aria-describedby']\n ].filter(Boolean).join(' ') || undefined,\n onPointerEnter(e) {\n // Highlight the date on hover or drag over a date when selecting a range.\n if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) {\n state.highlightDate(date);\n }\n },\n onPointerDown(e) {\n // This is necessary on touch devices to allow dragging\n // outside the original pressed element.\n // (JSDOM does not support this)\n if ('releasePointerCapture' in e.target) {\n e.target.releasePointerCapture(e.pointerId);\n }\n },\n onContextMenu(e) {\n // Prevent context menu on long press.\n e.preventDefault();\n }\n }),\n isPressed,\n isFocused,\n isSelected,\n isDisabled,\n isUnavailable,\n isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,\n isInvalid,\n formattedDate\n };\n}\n"],"names":[],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/intl/*.js","packages/@react-aria/calendar/intl/ar-AE.json","packages/@react-aria/calendar/intl/bg-BG.json","packages/@react-aria/calendar/intl/cs-CZ.json","packages/@react-aria/calendar/intl/da-DK.json","packages/@react-aria/calendar/intl/de-DE.json","packages/@react-aria/calendar/intl/el-GR.json","packages/@react-aria/calendar/intl/en-US.json","packages/@react-aria/calendar/intl/es-ES.json","packages/@react-aria/calendar/intl/et-EE.json","packages/@react-aria/calendar/intl/fi-FI.json","packages/@react-aria/calendar/intl/fr-FR.json","packages/@react-aria/calendar/intl/he-IL.json","packages/@react-aria/calendar/intl/hr-HR.json","packages/@react-aria/calendar/intl/hu-HU.json","packages/@react-aria/calendar/intl/it-IT.json","packages/@react-aria/calendar/intl/ja-JP.json","packages/@react-aria/calendar/intl/ko-KR.json","packages/@react-aria/calendar/intl/lt-LT.json","packages/@react-aria/calendar/intl/lv-LV.json","packages/@react-aria/calendar/intl/nb-NO.json","packages/@react-aria/calendar/intl/nl-NL.json","packages/@react-aria/calendar/intl/pl-PL.json","packages/@react-aria/calendar/intl/pt-BR.json","packages/@react-aria/calendar/intl/pt-PT.json","packages/@react-aria/calendar/intl/ro-RO.json","packages/@react-aria/calendar/intl/ru-RU.json","packages/@react-aria/calendar/intl/sk-SK.json","packages/@react-aria/calendar/intl/sl-SI.json","packages/@react-aria/calendar/intl/sr-SP.json","packages/@react-aria/calendar/intl/sv-SE.json","packages/@react-aria/calendar/intl/tr-TR.json","packages/@react-aria/calendar/intl/uk-UA.json","packages/@react-aria/calendar/intl/zh-CN.json","packages/@react-aria/calendar/intl/zh-TW.json","packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/useCalendarCell.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 {useCalendar} from './useCalendar';\nexport {useRangeCalendar} from './useRangeCalendar';\nexport {useCalendarGrid} from './useCalendarGrid';\nexport {useCalendarCell} from './useCalendarCell';\n\nexport type {CalendarProps, RangeCalendarProps} from '@react-types/calendar';\nexport type {CalendarAria} from './useCalendarBase';\nexport type {AriaCalendarGridProps, CalendarGridAria} from './useCalendarGrid';\nexport type {AriaCalendarCellProps, CalendarCellAria} from './useCalendarCell';\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from '@react-stately/calendar';\n\n/**\n * Provides the behavior and accessibility implementation for a calendar component.\n * A calendar displays one or more date grids and allows users to select a single date.\n */\nexport function useCalendar<T extends DateValue>(props: CalendarProps<T>, state: CalendarState): CalendarAria {\n return useCalendarBase(props, state);\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 {announce} from '@react-aria/live-announcer';\nimport {AriaButtonProps} from '@react-types/button';\nimport {CalendarPropsBase} from '@react-types/calendar';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {DOMProps} from '@react-types/shared';\nimport {filterDOMProps, mergeProps, useLabels, useSlotId, useUpdateEffect} from '@react-aria/utils';\nimport {hookData, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\nexport interface CalendarAria {\n /** Props for the calendar grouping element. */\n calendarProps: HTMLAttributes<HTMLElement>,\n /** Props for the next button. */\n nextButtonProps: AriaButtonProps,\n /** Props for the previous button. */\n prevButtonProps: AriaButtonProps,\n /** Props for the error message element, if any. */\n errorMessageProps: HTMLAttributes<HTMLElement>,\n /** A description of the visible date range, for use in the calendar title. */\n title: string\n}\n\nexport function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {\n let formatMessage = useMessageFormatter(intlMessages);\n let domProps = filterDOMProps(props);\n\n let title = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, false);\n let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, true);\n\n // Announce when the visible date range changes\n useUpdateEffect(() => {\n // only when pressing the Previous or Next button\n if (!state.isFocused) {\n announce(visibleRangeDescription);\n }\n }, [visibleRangeDescription]);\n\n // Announce when the selected value changes\n let selectedDateDescription = useSelectedDateDescription(state);\n useUpdateEffect(() => {\n if (selectedDateDescription) {\n announce(selectedDateDescription, 'polite', 4000);\n }\n // handle an update to the caption that describes the currently selected range, to announce the new value\n }, [selectedDateDescription]);\n\n let errorMessageId = useSlotId([Boolean(props.errorMessage), props.validationState]);\n\n // Pass the label to the child grid elements.\n hookData.set(state, {\n ariaLabel: props['aria-label'],\n ariaLabelledBy: props['aria-labelledby'],\n errorMessageId,\n selectedDateDescription\n });\n\n // If the next or previous buttons become disabled while they are focused, move focus to the calendar body.\n let nextFocused = useRef(false);\n let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();\n if (nextDisabled && nextFocused.current) {\n nextFocused.current = false;\n state.setFocused(true);\n }\n\n let previousFocused = useRef(false);\n let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();\n if (previousDisabled && previousFocused.current) {\n previousFocused.current = false;\n state.setFocused(true);\n }\n\n let labelProps = useLabels({\n id: props['id'],\n 'aria-label': [props['aria-label'], visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': props['aria-labelledby']\n });\n\n return {\n calendarProps: mergeProps(domProps, labelProps, {\n role: 'group',\n 'aria-describedby': props['aria-describedby'] || undefined\n }),\n nextButtonProps: {\n onPress: () => state.focusNextPage(),\n 'aria-label': formatMessage('next'),\n isDisabled: nextDisabled,\n onFocus: () => nextFocused.current = true,\n onBlur: () => nextFocused.current = false\n },\n prevButtonProps: {\n onPress: () => state.focusPreviousPage(),\n 'aria-label': formatMessage('previous'),\n isDisabled: previousDisabled,\n onFocus: () => previousFocused.current = true,\n onBlur: () => previousFocused.current = false\n },\n errorMessageProps: {\n id: errorMessageId\n },\n title\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 {CalendarDate, DateFormatter, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {FormatMessage, useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMemo} from 'react';\n\ninterface HookData {\n ariaLabel: string,\n ariaLabelledBy: string,\n errorMessageId: string,\n selectedDateDescription: string\n}\n\nexport const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();\n\nexport function getEraFormat(date: CalendarDate): 'short' | undefined {\n return date?.calendar.identifier === 'gregory' && date.era === 'BC' ? 'short' : undefined;\n}\n\nexport function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {\n let formatMessage = useMessageFormatter(intlMessages);\n\n let start: CalendarDate, end: CalendarDate;\n if ('highlightedRange' in state) {\n ({start, end} = state.highlightedRange || {});\n } else {\n start = end = state.value;\n }\n\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era: getEraFormat(start) || getEraFormat(end),\n timeZone: state.timeZone\n });\n\n let anchorDate = 'anchorDate' in state ? state.anchorDate : null;\n return useMemo(() => {\n // No message if currently selecting a range, or there is nothing highlighted.\n if (!anchorDate && start && end) {\n // Use a single date message if the start and end dates are the same day,\n // otherwise include both dates.\n if (isSameDay(start, end)) {\n let date = dateFormatter.format(start.toDate(state.timeZone));\n return formatMessage('selectedDateDescription', {date});\n } else {\n let dateRange = formatRange(dateFormatter, formatMessage, start, end, state.timeZone);\n\n return formatMessage('selectedRangeDescription', {dateRange});\n }\n }\n return '';\n }, [start, end, anchorDate, state.timeZone, formatMessage, dateFormatter]);\n}\n\nexport function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string, isAria: boolean) {\n let formatMessage = useMessageFormatter(intlMessages);\n let era: any = getEraFormat(startDate) || getEraFormat(endDate);\n let monthFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n let dateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n return useMemo(() => {\n // Special case for month granularity. Format as a single month if only a\n // single month is visible, otherwise format as a range of months.\n if (isSameDay(startDate, startOfMonth(startDate))) {\n if (isSameDay(endDate, endOfMonth(startDate))) {\n return monthFormatter.format(startDate.toDate(timeZone));\n } else if (isSameDay(endDate, endOfMonth(endDate))) {\n return isAria\n ? formatRange(monthFormatter, formatMessage, startDate, endDate, timeZone)\n : monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }\n }\n\n return isAria\n ? formatRange(dateFormatter, formatMessage, startDate, endDate, timeZone)\n : dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }, [startDate, endDate, monthFormatter, dateFormatter, formatMessage, timeZone, isAria]);\n}\n\nfunction formatRange(dateFormatter: DateFormatter, formatMessage: FormatMessage, start: CalendarDate, end: CalendarDate, timeZone: string) {\n let parts = dateFormatter.formatRangeToParts(start.toDate(timeZone), end.toDate(timeZone));\n\n // Find the separator between the start and end date. This is determined\n // by finding the last shared literal before the end range.\n let separatorIndex = -1;\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n if (part.source === 'shared' && part.type === 'literal') {\n separatorIndex = i;\n } else if (part.source === 'endRange') {\n break;\n }\n }\n\n // Now we can combine the parts into start and end strings.\n let startValue = '';\n let endValue = '';\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n startValue += parts[i].value;\n } else if (i > separatorIndex) {\n endValue += parts[i].value;\n }\n }\n\n return formatMessage('dateRange', {startDate: startValue, endDate: endValue});\n}\n","const _temp0 = require(\"./ar-AE.json\");\nconst _temp1 = require(\"./bg-BG.json\");\nconst _temp2 = require(\"./cs-CZ.json\");\nconst _temp3 = require(\"./da-DK.json\");\nconst _temp4 = require(\"./de-DE.json\");\nconst _temp5 = require(\"./el-GR.json\");\nconst _temp6 = require(\"./en-US.json\");\nconst _temp7 = require(\"./es-ES.json\");\nconst _temp8 = require(\"./et-EE.json\");\nconst _temp9 = require(\"./fi-FI.json\");\nconst _temp10 = require(\"./fr-FR.json\");\nconst _temp11 = require(\"./he-IL.json\");\nconst _temp12 = require(\"./hr-HR.json\");\nconst _temp13 = require(\"./hu-HU.json\");\nconst _temp14 = require(\"./it-IT.json\");\nconst _temp15 = require(\"./ja-JP.json\");\nconst _temp16 = require(\"./ko-KR.json\");\nconst _temp17 = require(\"./lt-LT.json\");\nconst _temp18 = require(\"./lv-LV.json\");\nconst _temp19 = require(\"./nb-NO.json\");\nconst _temp20 = require(\"./nl-NL.json\");\nconst _temp21 = require(\"./pl-PL.json\");\nconst _temp22 = require(\"./pt-BR.json\");\nconst _temp23 = require(\"./pt-PT.json\");\nconst _temp24 = require(\"./ro-RO.json\");\nconst _temp25 = require(\"./ru-RU.json\");\nconst _temp26 = require(\"./sk-SK.json\");\nconst _temp27 = require(\"./sl-SI.json\");\nconst _temp28 = require(\"./sr-SP.json\");\nconst _temp29 = require(\"./sv-SE.json\");\nconst _temp30 = require(\"./tr-TR.json\");\nconst _temp31 = require(\"./uk-UA.json\");\nconst _temp32 = require(\"./zh-CN.json\");\nconst _temp33 = require(\"./zh-TW.json\");\nmodule.exports = {\n \"ar-AE\": _temp0,\n \"bg-BG\": _temp1,\n \"cs-CZ\": _temp2,\n \"da-DK\": _temp3,\n \"de-DE\": _temp4,\n \"el-GR\": _temp5,\n \"en-US\": _temp6,\n \"es-ES\": _temp7,\n \"et-EE\": _temp8,\n \"fi-FI\": _temp9,\n \"fr-FR\": _temp10,\n \"he-IL\": _temp11,\n \"hr-HR\": _temp12,\n \"hu-HU\": _temp13,\n \"it-IT\": _temp14,\n \"ja-JP\": _temp15,\n \"ko-KR\": _temp16,\n \"lt-LT\": _temp17,\n \"lv-LV\": _temp18,\n \"nb-NO\": _temp19,\n \"nl-NL\": _temp20,\n \"pl-PL\": _temp21,\n \"pt-BR\": _temp22,\n \"pt-PT\": _temp23,\n \"ro-RO\": _temp24,\n \"ru-RU\": _temp25,\n \"sk-SK\": _temp26,\n \"sl-SI\": _temp27,\n \"sr-SP\": _temp28,\n \"sv-SE\": _temp29,\n \"tr-TR\": _temp30,\n \"uk-UA\": _temp31,\n \"zh-CN\": _temp32,\n \"zh-TW\": _temp33\n}","{\n \"dateRange\": \"{startDate} إلى {endDate}\",\n \"dateSelected\": \"{date} المحدد\",\n \"finishRangeSelectionPrompt\": \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n \"maximumDate\": \"آخر تاريخ متاح\",\n \"minimumDate\": \"أول تاريخ متاح\",\n \"next\": \"التالي\",\n \"previous\": \"السابق\",\n \"selectedDateDescription\": \"تاريخ محدد: {date}\",\n \"selectedRangeDescription\": \"المدى الزمني المحدد: {dateRange}\",\n \"startRangeSelectionPrompt\": \"انقر لبدء عملية تحديد نطاق التاريخ\",\n \"todayDate\": \"اليوم، {date}\",\n \"todayDateSelected\": \"اليوم، {date} محدد\"\n}\n","{\n \"dateRange\": \"{startDate} до {endDate}\",\n \"dateSelected\": \"Избрано е {date}\",\n \"finishRangeSelectionPrompt\": \"Натиснете, за да довършите избора на времеви интервал\",\n \"maximumDate\": \"Последна налична дата\",\n \"minimumDate\": \"Първа налична дата\",\n \"next\": \"Напред\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Избрана дата: {date}\",\n \"selectedRangeDescription\": \"Избран диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натиснете, за да пристъпите към избора на времеви интервал\",\n \"todayDate\": \"Днес, {date}\",\n \"todayDateSelected\": \"Днес, {date} са избрани\"\n}\n","{\n \"dateRange\": \"{startDate} až {endDate}\",\n \"dateSelected\": \"Vybráno {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výběr rozsahu dat\",\n \"maximumDate\": \"Poslední dostupné datum\",\n \"minimumDate\": \"První dostupné datum\",\n \"next\": \"Další\",\n \"previous\": \"Předchozí\",\n \"selectedDateDescription\": \"Vybrané datum: {date}\",\n \"selectedRangeDescription\": \"Vybrané období: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím zahájíte výběr rozsahu dat\",\n \"todayDate\": \"Dnes, {date}\",\n \"todayDateSelected\": \"Dnes, vybráno {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klik for at fuldføre valg af datoområde\",\n \"maximumDate\": \"Sidste ledige dato\",\n \"minimumDate\": \"Første ledige dato\",\n \"next\": \"Næste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt interval: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik for at starte valg af datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} bis {endDate}\",\n \"dateSelected\": \"{date} ausgewählt\",\n \"finishRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n \"maximumDate\": \"Letztes verfügbares Datum\",\n \"minimumDate\": \"Erstes verfügbares Datum\",\n \"next\": \"Weiter\",\n \"previous\": \"Zurück\",\n \"selectedDateDescription\": \"Ausgewähltes Datum: {date}\",\n \"selectedRangeDescription\": \"Ausgewählter Bereich: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n \"todayDate\": \"Heute, {date}\",\n \"todayDateSelected\": \"Heute, {date} ausgewählt\"\n}\n","{\n \"dateRange\": \"{startDate} έως {endDate}\",\n \"dateSelected\": \"Επιλέχθηκε {date}\",\n \"finishRangeSelectionPrompt\": \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n \"maximumDate\": \"Τελευταία διαθέσιμη ημερομηνία\",\n \"minimumDate\": \"Πρώτη διαθέσιμη ημερομηνία\",\n \"next\": \"Επόμενο\",\n \"previous\": \"Προηγούμενο\",\n \"selectedDateDescription\": \"Επιλεγμένη ημερομηνία: {date}\",\n \"selectedRangeDescription\": \"Επιλεγμένο εύρος: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n \"todayDate\": \"Σήμερα, {date}\",\n \"todayDateSelected\": \"Σήμερα, επιλέχτηκε {date}\"\n}\n","{\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"selectedDateDescription\": \"Selected Date: {date}\",\n \"selectedRangeDescription\": \"Selected Range: {dateRange}\",\n \"todayDate\": \"Today, {date}\",\n \"todayDateSelected\": \"Today, {date} selected\",\n \"dateSelected\": \"{date} selected\",\n \"startRangeSelectionPrompt\": \"Click to start selecting date range\",\n \"finishRangeSelectionPrompt\": \"Click to finish selecting date range\",\n \"minimumDate\": \"First available date\",\n \"maximumDate\": \"Last available date\",\n \"dateRange\": \"{startDate} to {endDate}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} seleccionado\",\n \"finishRangeSelectionPrompt\": \"Haga clic para terminar de seleccionar rango de fechas\",\n \"maximumDate\": \"Última fecha disponible\",\n \"minimumDate\": \"Primera fecha disponible\",\n \"next\": \"Siguiente\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Fecha seleccionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo seleccionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Haga clic para comenzar a seleccionar un rango de fechas\",\n \"todayDate\": \"Hoy, {date}\",\n \"todayDateSelected\": \"Hoy, {date} seleccionado\"\n}\n","{\n \"dateRange\": \"{startDate} kuni {endDate}\",\n \"dateSelected\": \"{date} valitud\",\n \"finishRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n \"maximumDate\": \"Viimane saadaolev kuupäev\",\n \"minimumDate\": \"Esimene saadaolev kuupäev\",\n \"next\": \"Järgmine\",\n \"previous\": \"Eelmine\",\n \"selectedDateDescription\": \"Valitud kuupäev: {date}\",\n \"selectedRangeDescription\": \"Valitud vahemik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimiseks\",\n \"todayDate\": \"Täna, {date}\",\n \"todayDateSelected\": \"Täna, {date} valitud\"\n}\n","{\n \"dateRange\": \"{startDate} – {endDate}\",\n \"dateSelected\": \"{date} valittu\",\n \"finishRangeSelectionPrompt\": \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n \"maximumDate\": \"Viimeinen varattavissa oleva päivämäärä\",\n \"minimumDate\": \"Ensimmäinen varattavissa oleva päivämäärä\",\n \"next\": \"Seuraava\",\n \"previous\": \"Edellinen\",\n \"selectedDateDescription\": \"Valittu päivämäärä: {date}\",\n \"selectedRangeDescription\": \"Valittu aikaväli: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n \"todayDate\": \"Tänään, {date}\",\n \"todayDateSelected\": \"Tänään, {date} valittu\"\n}\n","{\n \"dateRange\": \"{startDate} à {endDate}\",\n \"dateSelected\": \"{date} sélectionné\",\n \"finishRangeSelectionPrompt\": \"Cliquer pour finir de sélectionner la plage de dates\",\n \"maximumDate\": \"Dernière date disponible\",\n \"minimumDate\": \"Première date disponible\",\n \"next\": \"Suivant\",\n \"previous\": \"Précédent\",\n \"selectedDateDescription\": \"Date sélectionnée : {date}\",\n \"selectedRangeDescription\": \"Plage sélectionnée : {dateRange}\",\n \"startRangeSelectionPrompt\": \"Cliquer pour commencer à sélectionner la plage de dates\",\n \"todayDate\": \"Aujourd'hui, {date}\",\n \"todayDateSelected\": \"Aujourd’hui, {date} sélectionné\"\n}\n","{\n \"dateRange\": \"{startDate} עד {endDate}\",\n \"dateSelected\": \"{date} נבחר\",\n \"finishRangeSelectionPrompt\": \"חץ כדי לסיים את בחירת טווח התאריכים\",\n \"maximumDate\": \"תאריך פנוי אחרון\",\n \"minimumDate\": \"תאריך פנוי ראשון\",\n \"next\": \"הבא\",\n \"previous\": \"הקודם\",\n \"selectedDateDescription\": \"תאריך נבחר: {date}\",\n \"selectedRangeDescription\": \"טווח נבחר: {dateRange}\",\n \"startRangeSelectionPrompt\": \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n \"todayDate\": \"היום, {date}\",\n \"todayDateSelected\": \"היום, {date} נבחר\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} odabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite raspon odabranih datuma\",\n \"maximumDate\": \"Posljednji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sljedeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Odabrani datum: {date}\",\n \"selectedRangeDescription\": \"Odabrani raspon: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete raspon odabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, odabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate}–{endDate}\",\n \"dateSelected\": \"{date} kiválasztva\",\n \"finishRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n \"maximumDate\": \"Utolsó elérhető dátum\",\n \"minimumDate\": \"Az első elérhető dátum\",\n \"next\": \"Következő\",\n \"previous\": \"Előző\",\n \"selectedDateDescription\": \"Kijelölt dátum: {date}\",\n \"selectedRangeDescription\": \"Kijelölt tartomány: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének indításához\",\n \"todayDate\": \"Ma, {date}\",\n \"todayDateSelected\": \"Ma, {date} kijelölve\"\n}\n","{\n \"dateRange\": \"Da {startDate} a {endDate}\",\n \"dateSelected\": \"{date} selezionata\",\n \"finishRangeSelectionPrompt\": \"Fai clic per completare la selezione dell’intervallo di date\",\n \"maximumDate\": \"Ultima data disponibile\",\n \"minimumDate\": \"Prima data disponibile\",\n \"next\": \"Successivo\",\n \"previous\": \"Precedente\",\n \"selectedDateDescription\": \"Data selezionata: {date}\",\n \"selectedRangeDescription\": \"Intervallo selezionato: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Fai clic per selezionare l’intervallo di date\",\n \"todayDate\": \"Oggi, {date}\",\n \"todayDateSelected\": \"Oggi, {date} selezionata\"\n}\n","{\n \"dateRange\": \"{startDate} から {endDate}\",\n \"dateSelected\": \"{date} を選択\",\n \"finishRangeSelectionPrompt\": \"クリックして日付範囲の選択を終了\",\n \"maximumDate\": \"最終利用可能日\",\n \"minimumDate\": \"最初の利用可能日\",\n \"next\": \"次へ\",\n \"previous\": \"前へ\",\n \"selectedDateDescription\": \"選択した日付 : {date}\",\n \"selectedRangeDescription\": \"選択範囲 : {dateRange}\",\n \"startRangeSelectionPrompt\": \"クリックして日付範囲の選択を開始\",\n \"todayDate\": \"本日、{date}\",\n \"todayDateSelected\": \"本日、{date} を選択\"\n}\n","{\n \"dateRange\": \"{startDate} ~ {endDate}\",\n \"dateSelected\": \"{date} 선택됨\",\n \"finishRangeSelectionPrompt\": \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n \"maximumDate\": \"마지막으로 사용 가능한 일자\",\n \"minimumDate\": \"처음으로 사용 가능한 일자\",\n \"next\": \"다음\",\n \"previous\": \"이전\",\n \"selectedDateDescription\": \"선택 일자: {date}\",\n \"selectedRangeDescription\": \"선택 범위: {dateRange}\",\n \"startRangeSelectionPrompt\": \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n \"todayDate\": \"오늘, {date}\",\n \"todayDateSelected\": \"오늘, {date} 선택됨\"\n}\n","{\n \"dateRange\": \"Nuo {startDate} iki {endDate}\",\n \"dateSelected\": \"Pasirinkta {date}\",\n \"finishRangeSelectionPrompt\": \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n \"maximumDate\": \"Paskutinė galima data\",\n \"minimumDate\": \"Pirmoji galima data\",\n \"next\": \"Paskesnis\",\n \"previous\": \"Ankstesnis\",\n \"selectedDateDescription\": \"Pasirinkta data: {date}\",\n \"selectedRangeDescription\": \"Pasirinktas intervalas: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n \"todayDate\": \"Šiandien, {date}\",\n \"todayDateSelected\": \"Šiandien, pasirinkta {date}\"\n}\n","{\n \"dateRange\": \"No {startDate} līdz {endDate}\",\n \"dateSelected\": \"Atlasīts: {date}\",\n \"finishRangeSelectionPrompt\": \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n \"maximumDate\": \"Pēdējais pieejamais datums\",\n \"minimumDate\": \"Pirmais pieejamais datums\",\n \"next\": \"Tālāk\",\n \"previous\": \"Atpakaļ\",\n \"selectedDateDescription\": \"Atlasītais datums: {date}\",\n \"selectedRangeDescription\": \"Atlasītais diapazons: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n \"todayDate\": \"Šodien, {date}\",\n \"todayDateSelected\": \"Atlasīta šodiena, {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klikk for å fullføre valg av datoområde\",\n \"maximumDate\": \"Siste tilgjengelige dato\",\n \"minimumDate\": \"Første tilgjengelige dato\",\n \"next\": \"Neste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt område: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klikk for å starte valg av datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} tot {endDate}\",\n \"dateSelected\": \"{date} geselecteerd\",\n \"finishRangeSelectionPrompt\": \"Klik om de selectie van het datumbereik te voltooien\",\n \"maximumDate\": \"Laatste beschikbare datum\",\n \"minimumDate\": \"Eerste beschikbare datum\",\n \"next\": \"Volgende\",\n \"previous\": \"Vorige\",\n \"selectedDateDescription\": \"Geselecteerde datum: {date}\",\n \"selectedRangeDescription\": \"Geselecteerd bereik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik om het datumbereik te selecteren\",\n \"todayDate\": \"Vandaag, {date}\",\n \"todayDateSelected\": \"Vandaag, {date} geselecteerd\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"Wybrano {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknij, aby zakończyć wybór zakresu dat\",\n \"maximumDate\": \"Ostatnia dostępna data\",\n \"minimumDate\": \"Pierwsza dostępna data\",\n \"next\": \"Dalej\",\n \"previous\": \"Wstecz\",\n \"selectedDateDescription\": \"Wybrana data: {date}\",\n \"selectedRangeDescription\": \"Wybrany zakres: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknij, aby rozpocząć wybór zakresu dat\",\n \"todayDate\": \"Dzisiaj, {date}\",\n \"todayDateSelected\": \"Dzisiaj wybrano {date}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para concluir a seleção do intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para iniciar a seleção do intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para terminar de selecionar o intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para começar a selecionar o intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"De la {startDate} până la {endDate}\",\n \"dateSelected\": \"{date} selectată\",\n \"finishRangeSelectionPrompt\": \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n \"maximumDate\": \"Ultima dată disponibilă\",\n \"minimumDate\": \"Prima dată disponibilă\",\n \"next\": \"Următorul\",\n \"previous\": \"Înainte\",\n \"selectedDateDescription\": \"Dată selectată: {date}\",\n \"selectedRangeDescription\": \"Interval selectat: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n \"todayDate\": \"Astăzi, {date}\",\n \"todayDateSelected\": \"Azi, {date} selectată\"\n}\n","{\n \"dateRange\": \"С {startDate} по {endDate}\",\n \"dateSelected\": \"Выбрано {date}\",\n \"finishRangeSelectionPrompt\": \"Щелкните, чтобы завершить выбор диапазона дат\",\n \"maximumDate\": \"Последняя доступная дата\",\n \"minimumDate\": \"Первая доступная дата\",\n \"next\": \"Далее\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Выбранная дата: {date}\",\n \"selectedRangeDescription\": \"Выбранный диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Щелкните, чтобы начать выбор диапазона дат\",\n \"todayDate\": \"Сегодня, {date}\",\n \"todayDateSelected\": \"Сегодня, выбрано {date}\"\n}\n","{\n \"dateRange\": \"Od {startDate} do {endDate}\",\n \"dateSelected\": \"Vybratý dátum {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výber rozsahu dátumov\",\n \"maximumDate\": \"Posledný dostupný dátum\",\n \"minimumDate\": \"Prvý dostupný dátum\",\n \"next\": \"Nasledujúce\",\n \"previous\": \"Predchádzajúce\",\n \"selectedDateDescription\": \"Vybratý dátum: {date}\",\n \"selectedRangeDescription\": \"Vybratý rozsah: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím spustíte výber rozsahu dátumov\",\n \"todayDate\": \"Dnes {date}\",\n \"todayDateSelected\": \"Vybratý dnešný dátum {date}\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izbrano\",\n \"finishRangeSelectionPrompt\": \"Kliknite za dokončanje izbire datumskega obsega\",\n \"maximumDate\": \"Zadnji razpoložljivi datum\",\n \"minimumDate\": \"Prvi razpoložljivi datum\",\n \"next\": \"Naprej\",\n \"previous\": \"Nazaj\",\n \"selectedDateDescription\": \"Izbrani datum: {date}\",\n \"selectedRangeDescription\": \"Izbrano območje: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite za začetek izbire datumskega obsega\",\n \"todayDate\": \"Danes, {date}\",\n \"todayDateSelected\": \"Danes, {date} izbrano\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite opseg izabranih datuma\",\n \"maximumDate\": \"Zadnji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sledeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Izabrani datum: {date}\",\n \"selectedRangeDescription\": \"Izabrani period: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete opseg izabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, izabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate} till {endDate}\",\n \"dateSelected\": \"{date} har valts\",\n \"finishRangeSelectionPrompt\": \"Klicka för att avsluta val av datumintervall\",\n \"maximumDate\": \"Sista tillgängliga datum\",\n \"minimumDate\": \"Första tillgängliga datum\",\n \"next\": \"Nästa\",\n \"previous\": \"Föregående\",\n \"selectedDateDescription\": \"Valt datum: {date}\",\n \"selectedRangeDescription\": \"Valt intervall: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicka för att välja datumintervall\",\n \"todayDate\": \"Idag, {date}\",\n \"todayDateSelected\": \"Idag, {date} har valts\"\n}\n","{\n \"dateRange\": \"{startDate} - {endDate}\",\n \"dateSelected\": \"{date} seçildi\",\n \"finishRangeSelectionPrompt\": \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n \"maximumDate\": \"Son müsait tarih\",\n \"minimumDate\": \"İlk müsait tarih\",\n \"next\": \"Sonraki\",\n \"previous\": \"Önceki\",\n \"selectedDateDescription\": \"Seçilen Tarih: {date}\",\n \"selectedRangeDescription\": \"Seçilen Aralık: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Tarih aralığı seçimini başlatmak için tıklayın\",\n \"todayDate\": \"Bugün, {date}\",\n \"todayDateSelected\": \"Bugün, {date} seçildi\"\n}\n","{\n \"dateRange\": \"{startDate} — {endDate}\",\n \"dateSelected\": \"Вибрано {date}\",\n \"finishRangeSelectionPrompt\": \"Натисніть, щоб завершити вибір діапазону дат\",\n \"maximumDate\": \"Остання доступна дата\",\n \"minimumDate\": \"Перша доступна дата\",\n \"next\": \"Наступний\",\n \"previous\": \"Попередній\",\n \"selectedDateDescription\": \"Вибрана дата: {date}\",\n \"selectedRangeDescription\": \"Вибраний діапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натисніть, щоб почати вибір діапазону дат\",\n \"todayDate\": \"Сьогодні, {date}\",\n \"todayDateSelected\": \"Сьогодні, вибрано {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已选定 {date}\",\n \"finishRangeSelectionPrompt\": \"单击以完成选择日期范围\",\n \"maximumDate\": \"最后一个可用日期\",\n \"minimumDate\": \"第一个可用日期\",\n \"next\": \"下一页\",\n \"previous\": \"上一页\",\n \"selectedDateDescription\": \"选定的日期:{date}\",\n \"selectedRangeDescription\": \"选定的范围:{dateRange}\",\n \"startRangeSelectionPrompt\": \"单击以开始选择日期范围\",\n \"todayDate\": \"今天,即 {date}\",\n \"todayDateSelected\": \"已选定今天,即 {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已選取 {date}\",\n \"finishRangeSelectionPrompt\": \"按一下以完成選取日期範圍\",\n \"maximumDate\": \"最後一個可用日期\",\n \"minimumDate\": \"第一個可用日期\",\n \"next\": \"下一頁\",\n \"previous\": \"上一頁\",\n \"selectedDateDescription\": \"選定的日期:{date}\",\n \"selectedRangeDescription\": \"選定的範圍:{dateRange}\",\n \"startRangeSelectionPrompt\": \"按一下以開始選取日期範圍\",\n \"todayDate\": \"今天,{date}\",\n \"todayDateSelected\": \"已選取今天,{date}\"\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {DateValue, RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from '@react-stately/calendar';\nimport {RefObject, useRef} from 'react';\nimport {useEvent} from '@react-aria/utils';\n\n/**\n * Provides the behavior and accessibility implementation 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 useRangeCalendar<T extends DateValue>(props: RangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<HTMLElement>): CalendarAria {\n let res = useCalendarBase(props, state);\n\n // We need to ignore virtual pointer events from VoiceOver due to these bugs.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n // usePress also does this and waits for the following click event before firing.\n // We need to match that here otherwise this will fire before the press event in\n // useCalendarCell, causing range selection to not work properly.\n let isVirtualClick = useRef(false);\n let windowRef = useRef(typeof window !== 'undefined' ? window : null);\n useEvent(windowRef, 'pointerdown', e => {\n isVirtualClick.current = e.width === 0 && e.height === 0;\n });\n\n // Stop range selection when pressing or releasing a pointer outside the calendar body,\n // except when pressing the next or previous buttons to switch months.\n let endDragging = e => {\n if (isVirtualClick.current) {\n isVirtualClick.current = false;\n return;\n }\n\n state.setDragging(false);\n if (!state.anchorDate) {\n return;\n }\n\n let target = e.target as HTMLElement;\n let body = document.getElementById(res.calendarProps.id);\n if (\n body &&\n body.contains(document.activeElement) &&\n (!body.contains(target) || !target.closest('button, [role=\"button\"]'))\n ) {\n state.selectFocusedDate();\n }\n };\n\n useEvent(windowRef, 'pointerup', endDragging);\n useEvent(windowRef, 'pointercancel', endDragging);\n\n // Also stop range selection on blur, e.g. tabbing away from the calendar.\n res.calendarProps.onBlur = e => {\n if ((!e.relatedTarget || !ref.current.contains(e.relatedTarget)) && state.anchorDate) {\n state.selectFocusedDate();\n }\n };\n\n // Prevent touch scrolling while dragging\n useEvent(ref, 'touchmove', e => {\n if (state.isDragging) {\n e.preventDefault();\n }\n }, {passive: false, capture: true});\n\n return res;\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 {CalendarDate, startOfWeek, today} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {hookData, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, KeyboardEvent, useMemo} from 'react';\nimport {mergeProps, useLabels} from '@react-aria/utils';\nimport {useDateFormatter, useLocale} from '@react-aria/i18n';\n\nexport interface AriaCalendarGridProps {\n /**\n * The first date displayed in the calendar grid.\n * Defaults to the first visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n startDate?: CalendarDate,\n /**\n * The last date displayed in the calendar grid.\n * Defaults to the last visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n endDate?: CalendarDate\n}\n\nexport interface CalendarGridAria {\n /** Props for the date grid element (e.g. `<table>`). */\n gridProps: HTMLAttributes<HTMLElement>,\n /** Props for the grid header element (e.g. `<thead>`). */\n headerProps: HTMLAttributes<HTMLElement>,\n /** A list of week day abbreviations formatted for the current locale, typically used in column headers. */\n weekDays: string[]\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar grid component.\n * A calendar grid displays a single grid of days within a calendar or range calendar which\n * can be keyboard navigated and selected by the user.\n */\nexport function useCalendarGrid(props: AriaCalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria {\n let {\n startDate = state.visibleRange.start,\n endDate = state.visibleRange.end\n } = props;\n\n let {direction} = useLocale();\n\n let onKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'PageUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousSection(e.shiftKey);\n break;\n case 'PageDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextSection(e.shiftKey);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionEnd();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionStart();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousRow();\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextRow();\n break;\n case 'Escape':\n // Cancel the selection.\n if ('setAnchorDate' in state) {\n e.preventDefault();\n state.setAnchorDate(null);\n }\n break;\n }\n };\n\n let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone, true);\n\n let {ariaLabel, ariaLabelledBy} = hookData.get(state);\n let labelProps = useLabels({\n 'aria-label': [ariaLabel, visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': ariaLabelledBy\n });\n\n let dayFormatter = useDateFormatter({weekday: 'narrow', timeZone: state.timeZone});\n let {locale} = useLocale();\n let weekDays = useMemo(() => {\n let weekStart = startOfWeek(today(state.timeZone), locale);\n return [...new Array(7).keys()].map((index) => {\n let date = weekStart.add({days: index});\n let dateDay = date.toDate(state.timeZone);\n return dayFormatter.format(dateDay);\n });\n }, [locale, state.timeZone, dayFormatter]);\n\n return {\n gridProps: mergeProps(labelProps, {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || null,\n 'aria-disabled': state.isDisabled || null,\n 'aria-multiselectable': ('highlightedRange' in state) || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false)\n }),\n headerProps: {\n // Column headers are hidden to screen readers to make navigating with a touch screen reader easier.\n // The day names are already included in the label of each cell, so there's no need to announce them twice.\n 'aria-hidden': true\n },\n weekDays\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 {CalendarDate, isEqualDay, isSameDay, isToday} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {focusWithoutScrolling, getScrollParent, scrollIntoView, useDescription} from '@react-aria/utils';\nimport {getEraFormat, hookData} from './utils';\nimport {getInteractionModality, usePress} from '@react-aria/interactions';\nimport {HTMLAttributes, RefObject, useEffect, useMemo, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps} from '@react-aria/utils';\nimport {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n\nexport interface AriaCalendarCellProps {\n /** The date that this cell represents. */\n date: CalendarDate,\n /**\n * Whether the cell is disabled. By default, this is determined by the\n * Calendar's `minValue`, `maxValue`, and `isDisabled` props.\n */\n isDisabled?: boolean\n}\n\nexport interface CalendarCellAria {\n /** Props for the grid cell element (e.g. `<td>`). */\n cellProps: HTMLAttributes<HTMLElement>,\n /** Props for the button element within the cell. */\n buttonProps: HTMLAttributes<HTMLElement>,\n /** Whether the cell is currently being pressed. */\n isPressed: boolean,\n /** Whether the cell is selected. */\n isSelected: boolean,\n /** Whether the cell is focused. */\n isFocused: boolean,\n /**\n * Whether the cell is disabled, according to the calendar's `minValue`, `maxValue`, and `isDisabled` props.\n * Disabled dates are not focusable, and cannot be selected by the user. They are typically\n * displayed with a dimmed appearance.\n */\n isDisabled: boolean,\n /**\n * Whether the cell is unavailable, according to the calendar's `isDateUnavailable` prop. Unavailable dates remain\n * focusable, but cannot be selected by the user. They should be displayed with a visual affordance to indicate they\n * are unavailable, such as a different color or a strikethrough.\n *\n * Note that because they are focusable, unavailable dates must meet a 4.5:1 color contrast ratio,\n * [as defined by WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html).\n */\n isUnavailable: boolean,\n /**\n * Whether the cell is outside the visible range of the calendar.\n * For example, dates before the first day of a month in the same week.\n */\n isOutsideVisibleRange: boolean,\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean,\n /** The day number formatted according to the current locale. */\n formattedDate: string\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar cell component.\n * A calendar cell displays a date cell within a calendar grid which can be selected by the user.\n */\nexport function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement>): CalendarCellAria {\n let {date, isDisabled} = props;\n let {errorMessageId, selectedDateDescription} = hookData.get(state);\n let formatMessage = useMessageFormatter(intlMessages);\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n era: getEraFormat(date),\n timeZone: state.timeZone\n });\n let isSelected = state.isSelected(date);\n let isFocused = state.isCellFocused(date);\n isDisabled = isDisabled || state.isCellDisabled(date);\n let isUnavailable = state.isCellUnavailable(date);\n let isSelectable = !isDisabled && !isUnavailable;\n let isInvalid = state.validationState === 'invalid' && (\n 'highlightedRange' in state\n ? !state.anchorDate && state.highlightedRange && date.compare(state.highlightedRange.start) >= 0 && date.compare(state.highlightedRange.end) <= 0\n : state.value && isSameDay(state.value, date)\n );\n\n if (isInvalid) {\n isSelected = true;\n }\n\n // For performance, reuse the same date object as before if the new date prop is the same.\n // This allows subsequent useMemo results to be reused.\n let lastDate = useRef(null);\n if (lastDate.current && isEqualDay(date, lastDate.current)) {\n date = lastDate.current;\n }\n\n lastDate.current = date;\n\n let nativeDate = useMemo(() => date.toDate(state.timeZone), [date, state.timeZone]);\n\n // aria-label should be localize Day of week, Month, Day and Year without Time.\n let isDateToday = isToday(date, state.timeZone);\n let label = useMemo(() => {\n let label = '';\n\n // If this is a range calendar, add a description of the full selected range\n // to the first and last selected date.\n if (\n 'highlightedRange' in state &&\n state.value &&\n !state.anchorDate &&\n (isSameDay(date, state.value.start) || isSameDay(date, state.value.end))\n ) {\n label = selectedDateDescription + ', ';\n }\n\n label += dateFormatter.format(nativeDate);\n if (isDateToday) {\n // If date is today, set appropriate string depending on selected state:\n label = formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {\n date: label\n });\n } else if (isSelected) {\n // If date is selected but not today:\n label = formatMessage('dateSelected', {\n date: label\n });\n }\n\n if (state.minValue && isSameDay(date, state.minValue)) {\n label += ', ' + formatMessage('minimumDate');\n } else if (state.maxValue && isSameDay(date, state.maxValue)) {\n label += ', ' + formatMessage('maximumDate');\n }\n\n return label;\n }, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday, date, state, selectedDateDescription]);\n\n // When a cell is focused and this is a range calendar, add a prompt to help\n // screenreader users know that they are in a range selection mode.\n let rangeSelectionPrompt = '';\n if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {\n // If selection has started add \"click to finish selecting range\"\n if (state.anchorDate) {\n rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');\n // Otherwise, add \"click to start selecting range\" prompt\n } else {\n rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');\n }\n }\n\n let descriptionProps = useDescription(rangeSelectionPrompt);\n\n let isAnchorPressed = useRef(false);\n let isRangeBoundaryPressed = useRef(false);\n let touchDragTimerRef = useRef(null);\n let {pressProps, isPressed} = usePress({\n // When dragging to select a range, we don't want dragging over the original anchor\n // again to trigger onPressStart. Cancel presses immediately when the pointer exits.\n shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,\n preventFocusOnPress: true,\n isDisabled: !isSelectable,\n onPressStart(e) {\n if (state.isReadOnly) {\n state.setFocusedDate(date);\n return;\n }\n\n if ('highlightedRange' in state && !state.anchorDate && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n // Allow dragging the start or end date of a range to modify it\n // rather than starting a new selection.\n // Don't allow dragging when invalid, or weird jumping behavior may occur as date ranges\n // are constrained to available dates. The user will need to select a new range in this case.\n if (state.highlightedRange && !isInvalid) {\n if (isSameDay(date, state.highlightedRange.start)) {\n state.setAnchorDate(state.highlightedRange.end);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n } else if (isSameDay(date, state.highlightedRange.end)) {\n state.setAnchorDate(state.highlightedRange.start);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n }\n }\n\n let startDragging = () => {\n state.setDragging(true);\n touchDragTimerRef.current = null;\n\n state.selectDate(date);\n state.setFocusedDate(date);\n isAnchorPressed.current = true;\n };\n\n // Start selection on mouse/touch down so users can drag to select a range.\n // On touch, delay dragging to determine if the user really meant to scroll.\n if (e.pointerType === 'touch') {\n touchDragTimerRef.current = setTimeout(startDragging, 200);\n } else {\n startDragging();\n }\n }\n },\n onPressEnd() {\n isRangeBoundaryPressed.current = false;\n isAnchorPressed.current = false;\n clearTimeout(touchDragTimerRef.current);\n touchDragTimerRef.current = null;\n },\n onPress() {\n // For non-range selection, always select on press up.\n if (!('anchorDate' in state) && !state.isReadOnly) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n },\n onPressUp(e) {\n if (state.isReadOnly) {\n return;\n }\n\n // If the user tapped quickly, the date won't be selected yet and the\n // timer will still be in progress. In this case, select the date on touch up.\n // Timer is cleared in onPressEnd.\n if ('anchorDate' in state && touchDragTimerRef.current) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n\n if ('anchorDate' in state) {\n if (isRangeBoundaryPressed.current) {\n // When clicking on the start or end date of an already selected range,\n // start a new selection on press up to also allow dragging the date to\n // change the existing range.\n state.setAnchorDate(date);\n } else if (state.anchorDate && !isAnchorPressed.current) {\n // When releasing a drag or pressing the end date of a range, select it.\n state.selectDate(date);\n state.setFocusedDate(date);\n } else if (e.pointerType === 'keyboard' && !state.anchorDate) {\n // For range selection, auto-advance the focused date by one if using keyboard.\n // This gives an indication that you're selecting a range rather than a single date.\n // For mouse, this is unnecessary because users will see the indication on hover. For screen readers,\n // there will be an announcement to \"click to finish selecting range\" (above).\n state.selectDate(date);\n let nextDay = date.add({days: 1});\n if (state.isInvalid(nextDay)) {\n nextDay = date.subtract({days: 1});\n }\n if (!state.isInvalid(nextDay)) {\n state.setFocusedDate(nextDay);\n }\n } else if (e.pointerType === 'virtual') {\n // For screen readers, just select the date on click.\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n }\n }\n });\n\n let tabIndex = null;\n if (!isDisabled) {\n tabIndex = isSameDay(date, state.focusedDate) ? 0 : -1;\n }\n\n // Focus the button in the DOM when the state updates.\n useEffect(() => {\n if (isFocused && ref.current) {\n focusWithoutScrolling(ref.current);\n\n // Scroll into view if navigating with a keyboard, otherwise\n // try not to shift the view under the user's mouse/finger.\n // Only scroll the direct scroll parent, not the whole page, so\n // we don't scroll to the bottom when opening date picker popover.\n if (getInteractionModality() !== 'pointer') {\n scrollIntoView(getScrollParent(ref.current) as HTMLElement, ref.current);\n }\n }\n }, [isFocused, ref]);\n\n let cellDateFormatter = useDateFormatter({\n day: 'numeric',\n timeZone: state.timeZone,\n calendar: date.calendar.identifier\n });\n\n let formattedDate = useMemo(() => cellDateFormatter.format(nativeDate), [cellDateFormatter, nativeDate]);\n\n return {\n cellProps: {\n role: 'gridcell',\n 'aria-disabled': !isSelectable || null,\n 'aria-selected': isSelected || null,\n 'aria-invalid': isInvalid || null\n },\n buttonProps: mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': !isSelectable || null,\n 'aria-label': label,\n 'aria-invalid': isInvalid || null,\n 'aria-describedby': [\n isInvalid ? errorMessageId : null,\n descriptionProps['aria-describedby']\n ].filter(Boolean).join(' ') || undefined,\n onPointerEnter(e) {\n // Highlight the date on hover or drag over a date when selecting a range.\n if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) {\n state.highlightDate(date);\n }\n },\n onPointerDown(e) {\n // This is necessary on touch devices to allow dragging\n // outside the original pressed element.\n // (JSDOM does not support this)\n if ('releasePointerCapture' in e.target) {\n e.target.releasePointerCapture(e.pointerId);\n }\n },\n onContextMenu(e) {\n // Prevent context menu on long press.\n e.preventDefault();\n }\n }),\n isPressed,\n isFocused,\n isSelected,\n isDisabled,\n isUnavailable,\n isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,\n isInvalid,\n formattedDate\n };\n}\n"],"names":[],"version":3,"file":"main.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {announce as $amWdn$announce} from "@react-aria/live-announcer";
|
|
2
|
-
import {filterDOMProps as $amWdn$filterDOMProps, useUpdateEffect as $amWdn$useUpdateEffect, useSlotId as $amWdn$useSlotId, useLabels as $amWdn$useLabels, mergeProps as $amWdn$mergeProps, useEvent as $amWdn$useEvent, useDescription as $amWdn$useDescription, focusWithoutScrolling as $amWdn$focusWithoutScrolling} from "@react-aria/utils";
|
|
2
|
+
import {filterDOMProps as $amWdn$filterDOMProps, useUpdateEffect as $amWdn$useUpdateEffect, useSlotId as $amWdn$useSlotId, useLabels as $amWdn$useLabels, mergeProps as $amWdn$mergeProps, useEvent as $amWdn$useEvent, useDescription as $amWdn$useDescription, focusWithoutScrolling as $amWdn$focusWithoutScrolling, scrollIntoView as $amWdn$scrollIntoView, getScrollParent as $amWdn$getScrollParent} from "@react-aria/utils";
|
|
3
3
|
import {useRef as $amWdn$useRef, useMemo as $amWdn$useMemo, useEffect as $amWdn$useEffect} from "react";
|
|
4
4
|
import {useMessageFormatter as $amWdn$useMessageFormatter, useDateFormatter as $amWdn$useDateFormatter, useLocale as $amWdn$useLocale} from "@react-aria/i18n";
|
|
5
5
|
import {isSameDay as $amWdn$isSameDay, startOfMonth as $amWdn$startOfMonth, endOfMonth as $amWdn$endOfMonth, startOfWeek as $amWdn$startOfWeek, today as $amWdn$today, isEqualDay as $amWdn$isEqualDay, isToday as $amWdn$isToday} from "@internationalized/date";
|
|
@@ -190,8 +190,7 @@ $0fbdc3429b133a50$exports = {
|
|
|
190
190
|
|
|
191
191
|
const $a074e1e2d0f0a665$export$653eddfc964b0f8a = new WeakMap();
|
|
192
192
|
function $a074e1e2d0f0a665$export$134cbb7fb09a9522(date) {
|
|
193
|
-
|
|
194
|
-
else if ((date === null || date === void 0 ? void 0 : date.era) === 'BC') return 'short';
|
|
193
|
+
return (date === null || date === void 0 ? void 0 : date.calendar.identifier) === 'gregory' && date.era === 'BC' ? 'short' : undefined;
|
|
195
194
|
}
|
|
196
195
|
function $a074e1e2d0f0a665$export$b6df97c887c38e1a(state) {
|
|
197
196
|
let formatMessage = $amWdn$useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($0fbdc3429b133a50$exports)));
|
|
@@ -728,10 +727,12 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
|
|
|
728
727
|
// Focus the button in the DOM when the state updates.
|
|
729
728
|
$amWdn$useEffect(()=>{
|
|
730
729
|
if (isFocused && ref.current) {
|
|
730
|
+
$amWdn$focusWithoutScrolling(ref.current);
|
|
731
731
|
// Scroll into view if navigating with a keyboard, otherwise
|
|
732
732
|
// try not to shift the view under the user's mouse/finger.
|
|
733
|
-
|
|
734
|
-
|
|
733
|
+
// Only scroll the direct scroll parent, not the whole page, so
|
|
734
|
+
// we don't scroll to the bottom when opening date picker popover.
|
|
735
|
+
if ($amWdn$getInteractionModality() !== 'pointer') $amWdn$scrollIntoView($amWdn$getScrollParent(ref.current), ref.current);
|
|
735
736
|
}
|
|
736
737
|
}, [
|
|
737
738
|
isFocused,
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/intl/*.js","packages/@react-aria/calendar/intl/ar-AE.json","packages/@react-aria/calendar/intl/bg-BG.json","packages/@react-aria/calendar/intl/cs-CZ.json","packages/@react-aria/calendar/intl/da-DK.json","packages/@react-aria/calendar/intl/de-DE.json","packages/@react-aria/calendar/intl/el-GR.json","packages/@react-aria/calendar/intl/en-US.json","packages/@react-aria/calendar/intl/es-ES.json","packages/@react-aria/calendar/intl/et-EE.json","packages/@react-aria/calendar/intl/fi-FI.json","packages/@react-aria/calendar/intl/fr-FR.json","packages/@react-aria/calendar/intl/he-IL.json","packages/@react-aria/calendar/intl/hr-HR.json","packages/@react-aria/calendar/intl/hu-HU.json","packages/@react-aria/calendar/intl/it-IT.json","packages/@react-aria/calendar/intl/ja-JP.json","packages/@react-aria/calendar/intl/ko-KR.json","packages/@react-aria/calendar/intl/lt-LT.json","packages/@react-aria/calendar/intl/lv-LV.json","packages/@react-aria/calendar/intl/nb-NO.json","packages/@react-aria/calendar/intl/nl-NL.json","packages/@react-aria/calendar/intl/pl-PL.json","packages/@react-aria/calendar/intl/pt-BR.json","packages/@react-aria/calendar/intl/pt-PT.json","packages/@react-aria/calendar/intl/ro-RO.json","packages/@react-aria/calendar/intl/ru-RU.json","packages/@react-aria/calendar/intl/sk-SK.json","packages/@react-aria/calendar/intl/sl-SI.json","packages/@react-aria/calendar/intl/sr-SP.json","packages/@react-aria/calendar/intl/sv-SE.json","packages/@react-aria/calendar/intl/tr-TR.json","packages/@react-aria/calendar/intl/uk-UA.json","packages/@react-aria/calendar/intl/zh-CN.json","packages/@react-aria/calendar/intl/zh-TW.json","packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/useCalendarCell.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 {useCalendar} from './useCalendar';\nexport {useRangeCalendar} from './useRangeCalendar';\nexport {useCalendarGrid} from './useCalendarGrid';\nexport {useCalendarCell} from './useCalendarCell';\n\nexport type {CalendarProps, RangeCalendarProps} from '@react-types/calendar';\nexport type {CalendarAria} from './useCalendarBase';\nexport type {AriaCalendarGridProps, CalendarGridAria} from './useCalendarGrid';\nexport type {AriaCalendarCellProps, CalendarCellAria} from './useCalendarCell';\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from '@react-stately/calendar';\n\n/**\n * Provides the behavior and accessibility implementation for a calendar component.\n * A calendar displays one or more date grids and allows users to select a single date.\n */\nexport function useCalendar<T extends DateValue>(props: CalendarProps<T>, state: CalendarState): CalendarAria {\n return useCalendarBase(props, state);\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 {announce} from '@react-aria/live-announcer';\nimport {AriaButtonProps} from '@react-types/button';\nimport {CalendarPropsBase} from '@react-types/calendar';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {DOMProps} from '@react-types/shared';\nimport {filterDOMProps, mergeProps, useLabels, useSlotId, useUpdateEffect} from '@react-aria/utils';\nimport {hookData, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\nexport interface CalendarAria {\n /** Props for the calendar grouping element. */\n calendarProps: HTMLAttributes<HTMLElement>,\n /** Props for the next button. */\n nextButtonProps: AriaButtonProps,\n /** Props for the previous button. */\n prevButtonProps: AriaButtonProps,\n /** Props for the error message element, if any. */\n errorMessageProps: HTMLAttributes<HTMLElement>,\n /** A description of the visible date range, for use in the calendar title. */\n title: string\n}\n\nexport function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {\n let formatMessage = useMessageFormatter(intlMessages);\n let domProps = filterDOMProps(props);\n\n let title = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, false);\n let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, true);\n\n // Announce when the visible date range changes\n useUpdateEffect(() => {\n // only when pressing the Previous or Next button\n if (!state.isFocused) {\n announce(visibleRangeDescription);\n }\n }, [visibleRangeDescription]);\n\n // Announce when the selected value changes\n let selectedDateDescription = useSelectedDateDescription(state);\n useUpdateEffect(() => {\n if (selectedDateDescription) {\n announce(selectedDateDescription, 'polite', 4000);\n }\n // handle an update to the caption that describes the currently selected range, to announce the new value\n }, [selectedDateDescription]);\n\n let errorMessageId = useSlotId([Boolean(props.errorMessage), props.validationState]);\n\n // Pass the label to the child grid elements.\n hookData.set(state, {\n ariaLabel: props['aria-label'],\n ariaLabelledBy: props['aria-labelledby'],\n errorMessageId,\n selectedDateDescription\n });\n\n // If the next or previous buttons become disabled while they are focused, move focus to the calendar body.\n let nextFocused = useRef(false);\n let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();\n if (nextDisabled && nextFocused.current) {\n nextFocused.current = false;\n state.setFocused(true);\n }\n\n let previousFocused = useRef(false);\n let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();\n if (previousDisabled && previousFocused.current) {\n previousFocused.current = false;\n state.setFocused(true);\n }\n\n let labelProps = useLabels({\n id: props['id'],\n 'aria-label': [props['aria-label'], visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': props['aria-labelledby']\n });\n\n return {\n calendarProps: mergeProps(domProps, labelProps, {\n role: 'group',\n 'aria-describedby': props['aria-describedby'] || undefined\n }),\n nextButtonProps: {\n onPress: () => state.focusNextPage(),\n 'aria-label': formatMessage('next'),\n isDisabled: nextDisabled,\n onFocus: () => nextFocused.current = true,\n onBlur: () => nextFocused.current = false\n },\n prevButtonProps: {\n onPress: () => state.focusPreviousPage(),\n 'aria-label': formatMessage('previous'),\n isDisabled: previousDisabled,\n onFocus: () => previousFocused.current = true,\n onBlur: () => previousFocused.current = false\n },\n errorMessageProps: {\n id: errorMessageId\n },\n title\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 {CalendarDate, DateFormatter, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {FormatMessage, useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMemo} from 'react';\n\ninterface HookData {\n ariaLabel: string,\n ariaLabelledBy: string,\n errorMessageId: string,\n selectedDateDescription: string\n}\n\nexport const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();\n\nexport function getEraFormat(date: CalendarDate) {\n if (date?.calendar.identifier !== 'gregory') {\n return 'long';\n } else if (date?.era === 'BC') {\n return 'short';\n }\n}\n\nexport function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {\n let formatMessage = useMessageFormatter(intlMessages);\n\n let start: CalendarDate, end: CalendarDate;\n if ('highlightedRange' in state) {\n ({start, end} = state.highlightedRange || {});\n } else {\n start = end = state.value;\n }\n\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era: getEraFormat(start) || getEraFormat(end),\n timeZone: state.timeZone\n });\n\n let anchorDate = 'anchorDate' in state ? state.anchorDate : null;\n return useMemo(() => {\n // No message if currently selecting a range, or there is nothing highlighted.\n if (!anchorDate && start && end) {\n // Use a single date message if the start and end dates are the same day,\n // otherwise include both dates.\n if (isSameDay(start, end)) {\n let date = dateFormatter.format(start.toDate(state.timeZone));\n return formatMessage('selectedDateDescription', {date});\n } else {\n let dateRange = formatRange(dateFormatter, formatMessage, start, end, state.timeZone);\n\n return formatMessage('selectedRangeDescription', {dateRange});\n }\n }\n return '';\n }, [start, end, anchorDate, state.timeZone, formatMessage, dateFormatter]);\n}\n\nexport function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string, isAria: boolean) {\n let formatMessage = useMessageFormatter(intlMessages);\n let era: any = getEraFormat(startDate) || getEraFormat(endDate);\n let monthFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n let dateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n return useMemo(() => {\n // Special case for month granularity. Format as a single month if only a\n // single month is visible, otherwise format as a range of months.\n if (isSameDay(startDate, startOfMonth(startDate))) {\n if (isSameDay(endDate, endOfMonth(startDate))) {\n return monthFormatter.format(startDate.toDate(timeZone));\n } else if (isSameDay(endDate, endOfMonth(endDate))) {\n return isAria\n ? formatRange(monthFormatter, formatMessage, startDate, endDate, timeZone)\n : monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }\n }\n\n return isAria\n ? formatRange(dateFormatter, formatMessage, startDate, endDate, timeZone)\n : dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }, [startDate, endDate, monthFormatter, dateFormatter, formatMessage, timeZone, isAria]);\n}\n\nfunction formatRange(dateFormatter: DateFormatter, formatMessage: FormatMessage, start: CalendarDate, end: CalendarDate, timeZone: string) {\n let parts = dateFormatter.formatRangeToParts(start.toDate(timeZone), end.toDate(timeZone));\n\n // Find the separator between the start and end date. This is determined\n // by finding the last shared literal before the end range.\n let separatorIndex = -1;\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n if (part.source === 'shared' && part.type === 'literal') {\n separatorIndex = i;\n } else if (part.source === 'endRange') {\n break;\n }\n }\n\n // Now we can combine the parts into start and end strings.\n let startValue = '';\n let endValue = '';\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n startValue += parts[i].value;\n } else if (i > separatorIndex) {\n endValue += parts[i].value;\n }\n }\n\n return formatMessage('dateRange', {startDate: startValue, endDate: endValue});\n}\n","const _temp0 = require(\"./ar-AE.json\");\nconst _temp1 = require(\"./bg-BG.json\");\nconst _temp2 = require(\"./cs-CZ.json\");\nconst _temp3 = require(\"./da-DK.json\");\nconst _temp4 = require(\"./de-DE.json\");\nconst _temp5 = require(\"./el-GR.json\");\nconst _temp6 = require(\"./en-US.json\");\nconst _temp7 = require(\"./es-ES.json\");\nconst _temp8 = require(\"./et-EE.json\");\nconst _temp9 = require(\"./fi-FI.json\");\nconst _temp10 = require(\"./fr-FR.json\");\nconst _temp11 = require(\"./he-IL.json\");\nconst _temp12 = require(\"./hr-HR.json\");\nconst _temp13 = require(\"./hu-HU.json\");\nconst _temp14 = require(\"./it-IT.json\");\nconst _temp15 = require(\"./ja-JP.json\");\nconst _temp16 = require(\"./ko-KR.json\");\nconst _temp17 = require(\"./lt-LT.json\");\nconst _temp18 = require(\"./lv-LV.json\");\nconst _temp19 = require(\"./nb-NO.json\");\nconst _temp20 = require(\"./nl-NL.json\");\nconst _temp21 = require(\"./pl-PL.json\");\nconst _temp22 = require(\"./pt-BR.json\");\nconst _temp23 = require(\"./pt-PT.json\");\nconst _temp24 = require(\"./ro-RO.json\");\nconst _temp25 = require(\"./ru-RU.json\");\nconst _temp26 = require(\"./sk-SK.json\");\nconst _temp27 = require(\"./sl-SI.json\");\nconst _temp28 = require(\"./sr-SP.json\");\nconst _temp29 = require(\"./sv-SE.json\");\nconst _temp30 = require(\"./tr-TR.json\");\nconst _temp31 = require(\"./uk-UA.json\");\nconst _temp32 = require(\"./zh-CN.json\");\nconst _temp33 = require(\"./zh-TW.json\");\nmodule.exports = {\n \"ar-AE\": _temp0,\n \"bg-BG\": _temp1,\n \"cs-CZ\": _temp2,\n \"da-DK\": _temp3,\n \"de-DE\": _temp4,\n \"el-GR\": _temp5,\n \"en-US\": _temp6,\n \"es-ES\": _temp7,\n \"et-EE\": _temp8,\n \"fi-FI\": _temp9,\n \"fr-FR\": _temp10,\n \"he-IL\": _temp11,\n \"hr-HR\": _temp12,\n \"hu-HU\": _temp13,\n \"it-IT\": _temp14,\n \"ja-JP\": _temp15,\n \"ko-KR\": _temp16,\n \"lt-LT\": _temp17,\n \"lv-LV\": _temp18,\n \"nb-NO\": _temp19,\n \"nl-NL\": _temp20,\n \"pl-PL\": _temp21,\n \"pt-BR\": _temp22,\n \"pt-PT\": _temp23,\n \"ro-RO\": _temp24,\n \"ru-RU\": _temp25,\n \"sk-SK\": _temp26,\n \"sl-SI\": _temp27,\n \"sr-SP\": _temp28,\n \"sv-SE\": _temp29,\n \"tr-TR\": _temp30,\n \"uk-UA\": _temp31,\n \"zh-CN\": _temp32,\n \"zh-TW\": _temp33\n}","{\n \"dateRange\": \"{startDate} إلى {endDate}\",\n \"dateSelected\": \"{date} المحدد\",\n \"finishRangeSelectionPrompt\": \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n \"maximumDate\": \"آخر تاريخ متاح\",\n \"minimumDate\": \"أول تاريخ متاح\",\n \"next\": \"التالي\",\n \"previous\": \"السابق\",\n \"selectedDateDescription\": \"تاريخ محدد: {date}\",\n \"selectedRangeDescription\": \"المدى الزمني المحدد: {dateRange}\",\n \"startRangeSelectionPrompt\": \"انقر لبدء عملية تحديد نطاق التاريخ\",\n \"todayDate\": \"اليوم، {date}\",\n \"todayDateSelected\": \"اليوم، {date} محدد\"\n}\n","{\n \"dateRange\": \"{startDate} до {endDate}\",\n \"dateSelected\": \"Избрано е {date}\",\n \"finishRangeSelectionPrompt\": \"Натиснете, за да довършите избора на времеви интервал\",\n \"maximumDate\": \"Последна налична дата\",\n \"minimumDate\": \"Първа налична дата\",\n \"next\": \"Напред\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Избрана дата: {date}\",\n \"selectedRangeDescription\": \"Избран диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натиснете, за да пристъпите към избора на времеви интервал\",\n \"todayDate\": \"Днес, {date}\",\n \"todayDateSelected\": \"Днес, {date} са избрани\"\n}\n","{\n \"dateRange\": \"{startDate} až {endDate}\",\n \"dateSelected\": \"Vybráno {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výběr rozsahu dat\",\n \"maximumDate\": \"Poslední dostupné datum\",\n \"minimumDate\": \"První dostupné datum\",\n \"next\": \"Další\",\n \"previous\": \"Předchozí\",\n \"selectedDateDescription\": \"Vybrané datum: {date}\",\n \"selectedRangeDescription\": \"Vybrané období: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím zahájíte výběr rozsahu dat\",\n \"todayDate\": \"Dnes, {date}\",\n \"todayDateSelected\": \"Dnes, vybráno {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klik for at fuldføre valg af datoområde\",\n \"maximumDate\": \"Sidste ledige dato\",\n \"minimumDate\": \"Første ledige dato\",\n \"next\": \"Næste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt interval: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik for at starte valg af datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} bis {endDate}\",\n \"dateSelected\": \"{date} ausgewählt\",\n \"finishRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n \"maximumDate\": \"Letztes verfügbares Datum\",\n \"minimumDate\": \"Erstes verfügbares Datum\",\n \"next\": \"Weiter\",\n \"previous\": \"Zurück\",\n \"selectedDateDescription\": \"Ausgewähltes Datum: {date}\",\n \"selectedRangeDescription\": \"Ausgewählter Bereich: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n \"todayDate\": \"Heute, {date}\",\n \"todayDateSelected\": \"Heute, {date} ausgewählt\"\n}\n","{\n \"dateRange\": \"{startDate} έως {endDate}\",\n \"dateSelected\": \"Επιλέχθηκε {date}\",\n \"finishRangeSelectionPrompt\": \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n \"maximumDate\": \"Τελευταία διαθέσιμη ημερομηνία\",\n \"minimumDate\": \"Πρώτη διαθέσιμη ημερομηνία\",\n \"next\": \"Επόμενο\",\n \"previous\": \"Προηγούμενο\",\n \"selectedDateDescription\": \"Επιλεγμένη ημερομηνία: {date}\",\n \"selectedRangeDescription\": \"Επιλεγμένο εύρος: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n \"todayDate\": \"Σήμερα, {date}\",\n \"todayDateSelected\": \"Σήμερα, επιλέχτηκε {date}\"\n}\n","{\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"selectedDateDescription\": \"Selected Date: {date}\",\n \"selectedRangeDescription\": \"Selected Range: {dateRange}\",\n \"todayDate\": \"Today, {date}\",\n \"todayDateSelected\": \"Today, {date} selected\",\n \"dateSelected\": \"{date} selected\",\n \"startRangeSelectionPrompt\": \"Click to start selecting date range\",\n \"finishRangeSelectionPrompt\": \"Click to finish selecting date range\",\n \"minimumDate\": \"First available date\",\n \"maximumDate\": \"Last available date\",\n \"dateRange\": \"{startDate} to {endDate}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} seleccionado\",\n \"finishRangeSelectionPrompt\": \"Haga clic para terminar de seleccionar rango de fechas\",\n \"maximumDate\": \"Última fecha disponible\",\n \"minimumDate\": \"Primera fecha disponible\",\n \"next\": \"Siguiente\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Fecha seleccionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo seleccionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Haga clic para comenzar a seleccionar un rango de fechas\",\n \"todayDate\": \"Hoy, {date}\",\n \"todayDateSelected\": \"Hoy, {date} seleccionado\"\n}\n","{\n \"dateRange\": \"{startDate} kuni {endDate}\",\n \"dateSelected\": \"{date} valitud\",\n \"finishRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n \"maximumDate\": \"Viimane saadaolev kuupäev\",\n \"minimumDate\": \"Esimene saadaolev kuupäev\",\n \"next\": \"Järgmine\",\n \"previous\": \"Eelmine\",\n \"selectedDateDescription\": \"Valitud kuupäev: {date}\",\n \"selectedRangeDescription\": \"Valitud vahemik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimiseks\",\n \"todayDate\": \"Täna, {date}\",\n \"todayDateSelected\": \"Täna, {date} valitud\"\n}\n","{\n \"dateRange\": \"{startDate} – {endDate}\",\n \"dateSelected\": \"{date} valittu\",\n \"finishRangeSelectionPrompt\": \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n \"maximumDate\": \"Viimeinen varattavissa oleva päivämäärä\",\n \"minimumDate\": \"Ensimmäinen varattavissa oleva päivämäärä\",\n \"next\": \"Seuraava\",\n \"previous\": \"Edellinen\",\n \"selectedDateDescription\": \"Valittu päivämäärä: {date}\",\n \"selectedRangeDescription\": \"Valittu aikaväli: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n \"todayDate\": \"Tänään, {date}\",\n \"todayDateSelected\": \"Tänään, {date} valittu\"\n}\n","{\n \"dateRange\": \"{startDate} à {endDate}\",\n \"dateSelected\": \"{date} sélectionné\",\n \"finishRangeSelectionPrompt\": \"Cliquer pour finir de sélectionner la plage de dates\",\n \"maximumDate\": \"Dernière date disponible\",\n \"minimumDate\": \"Première date disponible\",\n \"next\": \"Suivant\",\n \"previous\": \"Précédent\",\n \"selectedDateDescription\": \"Date sélectionnée : {date}\",\n \"selectedRangeDescription\": \"Plage sélectionnée : {dateRange}\",\n \"startRangeSelectionPrompt\": \"Cliquer pour commencer à sélectionner la plage de dates\",\n \"todayDate\": \"Aujourd'hui, {date}\",\n \"todayDateSelected\": \"Aujourd’hui, {date} sélectionné\"\n}\n","{\n \"dateRange\": \"{startDate} עד {endDate}\",\n \"dateSelected\": \"{date} נבחר\",\n \"finishRangeSelectionPrompt\": \"חץ כדי לסיים את בחירת טווח התאריכים\",\n \"maximumDate\": \"תאריך פנוי אחרון\",\n \"minimumDate\": \"תאריך פנוי ראשון\",\n \"next\": \"הבא\",\n \"previous\": \"הקודם\",\n \"selectedDateDescription\": \"תאריך נבחר: {date}\",\n \"selectedRangeDescription\": \"טווח נבחר: {dateRange}\",\n \"startRangeSelectionPrompt\": \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n \"todayDate\": \"היום, {date}\",\n \"todayDateSelected\": \"היום, {date} נבחר\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} odabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite raspon odabranih datuma\",\n \"maximumDate\": \"Posljednji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sljedeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Odabrani datum: {date}\",\n \"selectedRangeDescription\": \"Odabrani raspon: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete raspon odabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, odabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate}–{endDate}\",\n \"dateSelected\": \"{date} kiválasztva\",\n \"finishRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n \"maximumDate\": \"Utolsó elérhető dátum\",\n \"minimumDate\": \"Az első elérhető dátum\",\n \"next\": \"Következő\",\n \"previous\": \"Előző\",\n \"selectedDateDescription\": \"Kijelölt dátum: {date}\",\n \"selectedRangeDescription\": \"Kijelölt tartomány: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének indításához\",\n \"todayDate\": \"Ma, {date}\",\n \"todayDateSelected\": \"Ma, {date} kijelölve\"\n}\n","{\n \"dateRange\": \"Da {startDate} a {endDate}\",\n \"dateSelected\": \"{date} selezionata\",\n \"finishRangeSelectionPrompt\": \"Fai clic per completare la selezione dell’intervallo di date\",\n \"maximumDate\": \"Ultima data disponibile\",\n \"minimumDate\": \"Prima data disponibile\",\n \"next\": \"Successivo\",\n \"previous\": \"Precedente\",\n \"selectedDateDescription\": \"Data selezionata: {date}\",\n \"selectedRangeDescription\": \"Intervallo selezionato: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Fai clic per selezionare l’intervallo di date\",\n \"todayDate\": \"Oggi, {date}\",\n \"todayDateSelected\": \"Oggi, {date} selezionata\"\n}\n","{\n \"dateRange\": \"{startDate} から {endDate}\",\n \"dateSelected\": \"{date} を選択\",\n \"finishRangeSelectionPrompt\": \"クリックして日付範囲の選択を終了\",\n \"maximumDate\": \"最終利用可能日\",\n \"minimumDate\": \"最初の利用可能日\",\n \"next\": \"次へ\",\n \"previous\": \"前へ\",\n \"selectedDateDescription\": \"選択した日付 : {date}\",\n \"selectedRangeDescription\": \"選択範囲 : {dateRange}\",\n \"startRangeSelectionPrompt\": \"クリックして日付範囲の選択を開始\",\n \"todayDate\": \"本日、{date}\",\n \"todayDateSelected\": \"本日、{date} を選択\"\n}\n","{\n \"dateRange\": \"{startDate} ~ {endDate}\",\n \"dateSelected\": \"{date} 선택됨\",\n \"finishRangeSelectionPrompt\": \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n \"maximumDate\": \"마지막으로 사용 가능한 일자\",\n \"minimumDate\": \"처음으로 사용 가능한 일자\",\n \"next\": \"다음\",\n \"previous\": \"이전\",\n \"selectedDateDescription\": \"선택 일자: {date}\",\n \"selectedRangeDescription\": \"선택 범위: {dateRange}\",\n \"startRangeSelectionPrompt\": \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n \"todayDate\": \"오늘, {date}\",\n \"todayDateSelected\": \"오늘, {date} 선택됨\"\n}\n","{\n \"dateRange\": \"Nuo {startDate} iki {endDate}\",\n \"dateSelected\": \"Pasirinkta {date}\",\n \"finishRangeSelectionPrompt\": \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n \"maximumDate\": \"Paskutinė galima data\",\n \"minimumDate\": \"Pirmoji galima data\",\n \"next\": \"Paskesnis\",\n \"previous\": \"Ankstesnis\",\n \"selectedDateDescription\": \"Pasirinkta data: {date}\",\n \"selectedRangeDescription\": \"Pasirinktas intervalas: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n \"todayDate\": \"Šiandien, {date}\",\n \"todayDateSelected\": \"Šiandien, pasirinkta {date}\"\n}\n","{\n \"dateRange\": \"No {startDate} līdz {endDate}\",\n \"dateSelected\": \"Atlasīts: {date}\",\n \"finishRangeSelectionPrompt\": \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n \"maximumDate\": \"Pēdējais pieejamais datums\",\n \"minimumDate\": \"Pirmais pieejamais datums\",\n \"next\": \"Tālāk\",\n \"previous\": \"Atpakaļ\",\n \"selectedDateDescription\": \"Atlasītais datums: {date}\",\n \"selectedRangeDescription\": \"Atlasītais diapazons: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n \"todayDate\": \"Šodien, {date}\",\n \"todayDateSelected\": \"Atlasīta šodiena, {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klikk for å fullføre valg av datoområde\",\n \"maximumDate\": \"Siste tilgjengelige dato\",\n \"minimumDate\": \"Første tilgjengelige dato\",\n \"next\": \"Neste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt område: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klikk for å starte valg av datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} tot {endDate}\",\n \"dateSelected\": \"{date} geselecteerd\",\n \"finishRangeSelectionPrompt\": \"Klik om de selectie van het datumbereik te voltooien\",\n \"maximumDate\": \"Laatste beschikbare datum\",\n \"minimumDate\": \"Eerste beschikbare datum\",\n \"next\": \"Volgende\",\n \"previous\": \"Vorige\",\n \"selectedDateDescription\": \"Geselecteerde datum: {date}\",\n \"selectedRangeDescription\": \"Geselecteerd bereik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik om het datumbereik te selecteren\",\n \"todayDate\": \"Vandaag, {date}\",\n \"todayDateSelected\": \"Vandaag, {date} geselecteerd\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"Wybrano {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknij, aby zakończyć wybór zakresu dat\",\n \"maximumDate\": \"Ostatnia dostępna data\",\n \"minimumDate\": \"Pierwsza dostępna data\",\n \"next\": \"Dalej\",\n \"previous\": \"Wstecz\",\n \"selectedDateDescription\": \"Wybrana data: {date}\",\n \"selectedRangeDescription\": \"Wybrany zakres: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknij, aby rozpocząć wybór zakresu dat\",\n \"todayDate\": \"Dzisiaj, {date}\",\n \"todayDateSelected\": \"Dzisiaj wybrano {date}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para concluir a seleção do intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para iniciar a seleção do intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para terminar de selecionar o intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para começar a selecionar o intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"De la {startDate} până la {endDate}\",\n \"dateSelected\": \"{date} selectată\",\n \"finishRangeSelectionPrompt\": \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n \"maximumDate\": \"Ultima dată disponibilă\",\n \"minimumDate\": \"Prima dată disponibilă\",\n \"next\": \"Următorul\",\n \"previous\": \"Înainte\",\n \"selectedDateDescription\": \"Dată selectată: {date}\",\n \"selectedRangeDescription\": \"Interval selectat: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n \"todayDate\": \"Astăzi, {date}\",\n \"todayDateSelected\": \"Azi, {date} selectată\"\n}\n","{\n \"dateRange\": \"С {startDate} по {endDate}\",\n \"dateSelected\": \"Выбрано {date}\",\n \"finishRangeSelectionPrompt\": \"Щелкните, чтобы завершить выбор диапазона дат\",\n \"maximumDate\": \"Последняя доступная дата\",\n \"minimumDate\": \"Первая доступная дата\",\n \"next\": \"Далее\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Выбранная дата: {date}\",\n \"selectedRangeDescription\": \"Выбранный диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Щелкните, чтобы начать выбор диапазона дат\",\n \"todayDate\": \"Сегодня, {date}\",\n \"todayDateSelected\": \"Сегодня, выбрано {date}\"\n}\n","{\n \"dateRange\": \"Od {startDate} do {endDate}\",\n \"dateSelected\": \"Vybratý dátum {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výber rozsahu dátumov\",\n \"maximumDate\": \"Posledný dostupný dátum\",\n \"minimumDate\": \"Prvý dostupný dátum\",\n \"next\": \"Nasledujúce\",\n \"previous\": \"Predchádzajúce\",\n \"selectedDateDescription\": \"Vybratý dátum: {date}\",\n \"selectedRangeDescription\": \"Vybratý rozsah: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím spustíte výber rozsahu dátumov\",\n \"todayDate\": \"Dnes {date}\",\n \"todayDateSelected\": \"Vybratý dnešný dátum {date}\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izbrano\",\n \"finishRangeSelectionPrompt\": \"Kliknite za dokončanje izbire datumskega obsega\",\n \"maximumDate\": \"Zadnji razpoložljivi datum\",\n \"minimumDate\": \"Prvi razpoložljivi datum\",\n \"next\": \"Naprej\",\n \"previous\": \"Nazaj\",\n \"selectedDateDescription\": \"Izbrani datum: {date}\",\n \"selectedRangeDescription\": \"Izbrano območje: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite za začetek izbire datumskega obsega\",\n \"todayDate\": \"Danes, {date}\",\n \"todayDateSelected\": \"Danes, {date} izbrano\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite opseg izabranih datuma\",\n \"maximumDate\": \"Zadnji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sledeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Izabrani datum: {date}\",\n \"selectedRangeDescription\": \"Izabrani period: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete opseg izabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, izabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate} till {endDate}\",\n \"dateSelected\": \"{date} har valts\",\n \"finishRangeSelectionPrompt\": \"Klicka för att avsluta val av datumintervall\",\n \"maximumDate\": \"Sista tillgängliga datum\",\n \"minimumDate\": \"Första tillgängliga datum\",\n \"next\": \"Nästa\",\n \"previous\": \"Föregående\",\n \"selectedDateDescription\": \"Valt datum: {date}\",\n \"selectedRangeDescription\": \"Valt intervall: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicka för att välja datumintervall\",\n \"todayDate\": \"Idag, {date}\",\n \"todayDateSelected\": \"Idag, {date} har valts\"\n}\n","{\n \"dateRange\": \"{startDate} - {endDate}\",\n \"dateSelected\": \"{date} seçildi\",\n \"finishRangeSelectionPrompt\": \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n \"maximumDate\": \"Son müsait tarih\",\n \"minimumDate\": \"İlk müsait tarih\",\n \"next\": \"Sonraki\",\n \"previous\": \"Önceki\",\n \"selectedDateDescription\": \"Seçilen Tarih: {date}\",\n \"selectedRangeDescription\": \"Seçilen Aralık: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Tarih aralığı seçimini başlatmak için tıklayın\",\n \"todayDate\": \"Bugün, {date}\",\n \"todayDateSelected\": \"Bugün, {date} seçildi\"\n}\n","{\n \"dateRange\": \"{startDate} — {endDate}\",\n \"dateSelected\": \"Вибрано {date}\",\n \"finishRangeSelectionPrompt\": \"Натисніть, щоб завершити вибір діапазону дат\",\n \"maximumDate\": \"Остання доступна дата\",\n \"minimumDate\": \"Перша доступна дата\",\n \"next\": \"Наступний\",\n \"previous\": \"Попередній\",\n \"selectedDateDescription\": \"Вибрана дата: {date}\",\n \"selectedRangeDescription\": \"Вибраний діапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натисніть, щоб почати вибір діапазону дат\",\n \"todayDate\": \"Сьогодні, {date}\",\n \"todayDateSelected\": \"Сьогодні, вибрано {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已选定 {date}\",\n \"finishRangeSelectionPrompt\": \"单击以完成选择日期范围\",\n \"maximumDate\": \"最后一个可用日期\",\n \"minimumDate\": \"第一个可用日期\",\n \"next\": \"下一页\",\n \"previous\": \"上一页\",\n \"selectedDateDescription\": \"选定的日期:{date}\",\n \"selectedRangeDescription\": \"选定的范围:{dateRange}\",\n \"startRangeSelectionPrompt\": \"单击以开始选择日期范围\",\n \"todayDate\": \"今天,即 {date}\",\n \"todayDateSelected\": \"已选定今天,即 {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已選取 {date}\",\n \"finishRangeSelectionPrompt\": \"按一下以完成選取日期範圍\",\n \"maximumDate\": \"最後一個可用日期\",\n \"minimumDate\": \"第一個可用日期\",\n \"next\": \"下一頁\",\n \"previous\": \"上一頁\",\n \"selectedDateDescription\": \"選定的日期:{date}\",\n \"selectedRangeDescription\": \"選定的範圍:{dateRange}\",\n \"startRangeSelectionPrompt\": \"按一下以開始選取日期範圍\",\n \"todayDate\": \"今天,{date}\",\n \"todayDateSelected\": \"已選取今天,{date}\"\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {DateValue, RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from '@react-stately/calendar';\nimport {RefObject, useRef} from 'react';\nimport {useEvent} from '@react-aria/utils';\n\n/**\n * Provides the behavior and accessibility implementation 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 useRangeCalendar<T extends DateValue>(props: RangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<HTMLElement>): CalendarAria {\n let res = useCalendarBase(props, state);\n\n // We need to ignore virtual pointer events from VoiceOver due to these bugs.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n // usePress also does this and waits for the following click event before firing.\n // We need to match that here otherwise this will fire before the press event in\n // useCalendarCell, causing range selection to not work properly.\n let isVirtualClick = useRef(false);\n let windowRef = useRef(typeof window !== 'undefined' ? window : null);\n useEvent(windowRef, 'pointerdown', e => {\n isVirtualClick.current = e.width === 0 && e.height === 0;\n });\n\n // Stop range selection when pressing or releasing a pointer outside the calendar body,\n // except when pressing the next or previous buttons to switch months.\n let endDragging = e => {\n if (isVirtualClick.current) {\n isVirtualClick.current = false;\n return;\n }\n\n state.setDragging(false);\n if (!state.anchorDate) {\n return;\n }\n\n let target = e.target as HTMLElement;\n let body = document.getElementById(res.calendarProps.id);\n if (\n body &&\n body.contains(document.activeElement) &&\n (!body.contains(target) || !target.closest('button, [role=\"button\"]'))\n ) {\n state.selectFocusedDate();\n }\n };\n\n useEvent(windowRef, 'pointerup', endDragging);\n useEvent(windowRef, 'pointercancel', endDragging);\n\n // Also stop range selection on blur, e.g. tabbing away from the calendar.\n res.calendarProps.onBlur = e => {\n if ((!e.relatedTarget || !ref.current.contains(e.relatedTarget)) && state.anchorDate) {\n state.selectFocusedDate();\n }\n };\n\n // Prevent touch scrolling while dragging\n useEvent(ref, 'touchmove', e => {\n if (state.isDragging) {\n e.preventDefault();\n }\n }, {passive: false, capture: true});\n\n return res;\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 {CalendarDate, startOfWeek, today} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {hookData, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, KeyboardEvent, useMemo} from 'react';\nimport {mergeProps, useLabels} from '@react-aria/utils';\nimport {useDateFormatter, useLocale} from '@react-aria/i18n';\n\nexport interface AriaCalendarGridProps {\n /**\n * The first date displayed in the calendar grid.\n * Defaults to the first visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n startDate?: CalendarDate,\n /**\n * The last date displayed in the calendar grid.\n * Defaults to the last visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n endDate?: CalendarDate\n}\n\nexport interface CalendarGridAria {\n /** Props for the date grid element (e.g. `<table>`). */\n gridProps: HTMLAttributes<HTMLElement>,\n /** Props for the grid header element (e.g. `<thead>`). */\n headerProps: HTMLAttributes<HTMLElement>,\n /** A list of week day abbreviations formatted for the current locale, typically used in column headers. */\n weekDays: string[]\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar grid component.\n * A calendar grid displays a single grid of days within a calendar or range calendar which\n * can be keyboard navigated and selected by the user.\n */\nexport function useCalendarGrid(props: AriaCalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria {\n let {\n startDate = state.visibleRange.start,\n endDate = state.visibleRange.end\n } = props;\n\n let {direction} = useLocale();\n\n let onKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'PageUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousSection(e.shiftKey);\n break;\n case 'PageDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextSection(e.shiftKey);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionEnd();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionStart();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousRow();\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextRow();\n break;\n case 'Escape':\n // Cancel the selection.\n if ('setAnchorDate' in state) {\n e.preventDefault();\n state.setAnchorDate(null);\n }\n break;\n }\n };\n\n let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone, true);\n\n let {ariaLabel, ariaLabelledBy} = hookData.get(state);\n let labelProps = useLabels({\n 'aria-label': [ariaLabel, visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': ariaLabelledBy\n });\n\n let dayFormatter = useDateFormatter({weekday: 'narrow', timeZone: state.timeZone});\n let {locale} = useLocale();\n let weekDays = useMemo(() => {\n let weekStart = startOfWeek(today(state.timeZone), locale);\n return [...new Array(7).keys()].map((index) => {\n let date = weekStart.add({days: index});\n let dateDay = date.toDate(state.timeZone);\n return dayFormatter.format(dateDay);\n });\n }, [locale, state.timeZone, dayFormatter]);\n\n return {\n gridProps: mergeProps(labelProps, {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || null,\n 'aria-disabled': state.isDisabled || null,\n 'aria-multiselectable': ('highlightedRange' in state) || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false)\n }),\n headerProps: {\n // Column headers are hidden to screen readers to make navigating with a touch screen reader easier.\n // The day names are already included in the label of each cell, so there's no need to announce them twice.\n 'aria-hidden': true\n },\n weekDays\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 {CalendarDate, isEqualDay, isSameDay, isToday} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {focusWithoutScrolling, useDescription} from '@react-aria/utils';\nimport {getEraFormat, hookData} from './utils';\nimport {getInteractionModality, usePress} from '@react-aria/interactions';\nimport {HTMLAttributes, RefObject, useEffect, useMemo, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps} from '@react-aria/utils';\nimport {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n\nexport interface AriaCalendarCellProps {\n /** The date that this cell represents. */\n date: CalendarDate,\n /**\n * Whether the cell is disabled. By default, this is determined by the\n * Calendar's `minValue`, `maxValue`, and `isDisabled` props.\n */\n isDisabled?: boolean\n}\n\nexport interface CalendarCellAria {\n /** Props for the grid cell element (e.g. `<td>`). */\n cellProps: HTMLAttributes<HTMLElement>,\n /** Props for the button element within the cell. */\n buttonProps: HTMLAttributes<HTMLElement>,\n /** Whether the cell is currently being pressed. */\n isPressed: boolean,\n /** Whether the cell is selected. */\n isSelected: boolean,\n /** Whether the cell is focused. */\n isFocused: boolean,\n /**\n * Whether the cell is disabled, according to the calendar's `minValue`, `maxValue`, and `isDisabled` props.\n * Disabled dates are not focusable, and cannot be selected by the user. They are typically\n * displayed with a dimmed appearance.\n */\n isDisabled: boolean,\n /**\n * Whether the cell is unavailable, according to the calendar's `isDateUnavailable` prop. Unavailable dates remain\n * focusable, but cannot be selected by the user. They should be displayed with a visual affordance to indicate they\n * are unavailable, such as a different color or a strikethrough.\n *\n * Note that because they are focusable, unavailable dates must meet a 4.5:1 color contrast ratio,\n * [as defined by WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html).\n */\n isUnavailable: boolean,\n /**\n * Whether the cell is outside the visible range of the calendar.\n * For example, dates before the first day of a month in the same week.\n */\n isOutsideVisibleRange: boolean,\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean,\n /** The day number formatted according to the current locale. */\n formattedDate: string\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar cell component.\n * A calendar cell displays a date cell within a calendar grid which can be selected by the user.\n */\nexport function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement>): CalendarCellAria {\n let {date, isDisabled} = props;\n let {errorMessageId, selectedDateDescription} = hookData.get(state);\n let formatMessage = useMessageFormatter(intlMessages);\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n era: getEraFormat(date),\n timeZone: state.timeZone\n });\n let isSelected = state.isSelected(date);\n let isFocused = state.isCellFocused(date);\n isDisabled = isDisabled || state.isCellDisabled(date);\n let isUnavailable = state.isCellUnavailable(date);\n let isSelectable = !isDisabled && !isUnavailable;\n let isInvalid = state.validationState === 'invalid' && (\n 'highlightedRange' in state\n ? !state.anchorDate && state.highlightedRange && date.compare(state.highlightedRange.start) >= 0 && date.compare(state.highlightedRange.end) <= 0\n : state.value && isSameDay(state.value, date)\n );\n\n if (isInvalid) {\n isSelected = true;\n }\n\n // For performance, reuse the same date object as before if the new date prop is the same.\n // This allows subsequent useMemo results to be reused.\n let lastDate = useRef(null);\n if (lastDate.current && isEqualDay(date, lastDate.current)) {\n date = lastDate.current;\n }\n\n lastDate.current = date;\n\n let nativeDate = useMemo(() => date.toDate(state.timeZone), [date, state.timeZone]);\n\n // aria-label should be localize Day of week, Month, Day and Year without Time.\n let isDateToday = isToday(date, state.timeZone);\n let label = useMemo(() => {\n let label = '';\n\n // If this is a range calendar, add a description of the full selected range\n // to the first and last selected date.\n if (\n 'highlightedRange' in state &&\n state.value &&\n !state.anchorDate &&\n (isSameDay(date, state.value.start) || isSameDay(date, state.value.end))\n ) {\n label = selectedDateDescription + ', ';\n }\n\n label += dateFormatter.format(nativeDate);\n if (isDateToday) {\n // If date is today, set appropriate string depending on selected state:\n label = formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {\n date: label\n });\n } else if (isSelected) {\n // If date is selected but not today:\n label = formatMessage('dateSelected', {\n date: label\n });\n }\n\n if (state.minValue && isSameDay(date, state.minValue)) {\n label += ', ' + formatMessage('minimumDate');\n } else if (state.maxValue && isSameDay(date, state.maxValue)) {\n label += ', ' + formatMessage('maximumDate');\n }\n\n return label;\n }, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday, date, state, selectedDateDescription]);\n\n // When a cell is focused and this is a range calendar, add a prompt to help\n // screenreader users know that they are in a range selection mode.\n let rangeSelectionPrompt = '';\n if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {\n // If selection has started add \"click to finish selecting range\"\n if (state.anchorDate) {\n rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');\n // Otherwise, add \"click to start selecting range\" prompt\n } else {\n rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');\n }\n }\n\n let descriptionProps = useDescription(rangeSelectionPrompt);\n\n let isAnchorPressed = useRef(false);\n let isRangeBoundaryPressed = useRef(false);\n let touchDragTimerRef = useRef(null);\n let {pressProps, isPressed} = usePress({\n // When dragging to select a range, we don't want dragging over the original anchor\n // again to trigger onPressStart. Cancel presses immediately when the pointer exits.\n shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,\n preventFocusOnPress: true,\n isDisabled: !isSelectable,\n onPressStart(e) {\n if (state.isReadOnly) {\n state.setFocusedDate(date);\n return;\n }\n\n if ('highlightedRange' in state && !state.anchorDate && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n // Allow dragging the start or end date of a range to modify it\n // rather than starting a new selection.\n // Don't allow dragging when invalid, or weird jumping behavior may occur as date ranges\n // are constrained to available dates. The user will need to select a new range in this case.\n if (state.highlightedRange && !isInvalid) {\n if (isSameDay(date, state.highlightedRange.start)) {\n state.setAnchorDate(state.highlightedRange.end);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n } else if (isSameDay(date, state.highlightedRange.end)) {\n state.setAnchorDate(state.highlightedRange.start);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n }\n }\n\n let startDragging = () => {\n state.setDragging(true);\n touchDragTimerRef.current = null;\n\n state.selectDate(date);\n state.setFocusedDate(date);\n isAnchorPressed.current = true;\n };\n\n // Start selection on mouse/touch down so users can drag to select a range.\n // On touch, delay dragging to determine if the user really meant to scroll.\n if (e.pointerType === 'touch') {\n touchDragTimerRef.current = setTimeout(startDragging, 200);\n } else {\n startDragging();\n }\n }\n },\n onPressEnd() {\n isRangeBoundaryPressed.current = false;\n isAnchorPressed.current = false;\n clearTimeout(touchDragTimerRef.current);\n touchDragTimerRef.current = null;\n },\n onPress() {\n // For non-range selection, always select on press up.\n if (!('anchorDate' in state) && !state.isReadOnly) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n },\n onPressUp(e) {\n if (state.isReadOnly) {\n return;\n }\n\n // If the user tapped quickly, the date won't be selected yet and the\n // timer will still be in progress. In this case, select the date on touch up.\n // Timer is cleared in onPressEnd.\n if ('anchorDate' in state && touchDragTimerRef.current) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n\n if ('anchorDate' in state) {\n if (isRangeBoundaryPressed.current) {\n // When clicking on the start or end date of an already selected range,\n // start a new selection on press up to also allow dragging the date to\n // change the existing range.\n state.setAnchorDate(date);\n } else if (state.anchorDate && !isAnchorPressed.current) {\n // When releasing a drag or pressing the end date of a range, select it.\n state.selectDate(date);\n state.setFocusedDate(date);\n } else if (e.pointerType === 'keyboard' && !state.anchorDate) {\n // For range selection, auto-advance the focused date by one if using keyboard.\n // This gives an indication that you're selecting a range rather than a single date.\n // For mouse, this is unnecessary because users will see the indication on hover. For screen readers,\n // there will be an announcement to \"click to finish selecting range\" (above).\n state.selectDate(date);\n let nextDay = date.add({days: 1});\n if (state.isInvalid(nextDay)) {\n nextDay = date.subtract({days: 1});\n }\n if (!state.isInvalid(nextDay)) {\n state.setFocusedDate(nextDay);\n }\n } else if (e.pointerType === 'virtual') {\n // For screen readers, just select the date on click.\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n }\n }\n });\n\n let tabIndex = null;\n if (!isDisabled) {\n tabIndex = isSameDay(date, state.focusedDate) ? 0 : -1;\n }\n\n // Focus the button in the DOM when the state updates.\n useEffect(() => {\n if (isFocused && ref.current) {\n // Scroll into view if navigating with a keyboard, otherwise\n // try not to shift the view under the user's mouse/finger.\n if (getInteractionModality() === 'pointer') {\n focusWithoutScrolling(ref.current);\n } else {\n ref.current.focus();\n }\n }\n }, [isFocused, ref]);\n\n let cellDateFormatter = useDateFormatter({\n day: 'numeric',\n timeZone: state.timeZone,\n calendar: date.calendar.identifier\n });\n\n let formattedDate = useMemo(() => cellDateFormatter.format(nativeDate), [cellDateFormatter, nativeDate]);\n\n return {\n cellProps: {\n role: 'gridcell',\n 'aria-disabled': !isSelectable || null,\n 'aria-selected': isSelected || null,\n 'aria-invalid': isInvalid || null\n },\n buttonProps: mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': !isSelectable || null,\n 'aria-label': label,\n 'aria-invalid': isInvalid || null,\n 'aria-describedby': [\n isInvalid ? errorMessageId : null,\n descriptionProps['aria-describedby']\n ].filter(Boolean).join(' ') || undefined,\n onPointerEnter(e) {\n // Highlight the date on hover or drag over a date when selecting a range.\n if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) {\n state.highlightDate(date);\n }\n },\n onPointerDown(e) {\n // This is necessary on touch devices to allow dragging\n // outside the original pressed element.\n // (JSDOM does not support this)\n if ('releasePointerCapture' in e.target) {\n e.target.releasePointerCapture(e.pointerId);\n }\n },\n onContextMenu(e) {\n // Prevent context menu on long press.\n e.preventDefault();\n }\n }),\n isPressed,\n isFocused,\n isSelected,\n isDisabled,\n isUnavailable,\n isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,\n isInvalid,\n formattedDate\n };\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/intl/*.js","packages/@react-aria/calendar/intl/ar-AE.json","packages/@react-aria/calendar/intl/bg-BG.json","packages/@react-aria/calendar/intl/cs-CZ.json","packages/@react-aria/calendar/intl/da-DK.json","packages/@react-aria/calendar/intl/de-DE.json","packages/@react-aria/calendar/intl/el-GR.json","packages/@react-aria/calendar/intl/en-US.json","packages/@react-aria/calendar/intl/es-ES.json","packages/@react-aria/calendar/intl/et-EE.json","packages/@react-aria/calendar/intl/fi-FI.json","packages/@react-aria/calendar/intl/fr-FR.json","packages/@react-aria/calendar/intl/he-IL.json","packages/@react-aria/calendar/intl/hr-HR.json","packages/@react-aria/calendar/intl/hu-HU.json","packages/@react-aria/calendar/intl/it-IT.json","packages/@react-aria/calendar/intl/ja-JP.json","packages/@react-aria/calendar/intl/ko-KR.json","packages/@react-aria/calendar/intl/lt-LT.json","packages/@react-aria/calendar/intl/lv-LV.json","packages/@react-aria/calendar/intl/nb-NO.json","packages/@react-aria/calendar/intl/nl-NL.json","packages/@react-aria/calendar/intl/pl-PL.json","packages/@react-aria/calendar/intl/pt-BR.json","packages/@react-aria/calendar/intl/pt-PT.json","packages/@react-aria/calendar/intl/ro-RO.json","packages/@react-aria/calendar/intl/ru-RU.json","packages/@react-aria/calendar/intl/sk-SK.json","packages/@react-aria/calendar/intl/sl-SI.json","packages/@react-aria/calendar/intl/sr-SP.json","packages/@react-aria/calendar/intl/sv-SE.json","packages/@react-aria/calendar/intl/tr-TR.json","packages/@react-aria/calendar/intl/uk-UA.json","packages/@react-aria/calendar/intl/zh-CN.json","packages/@react-aria/calendar/intl/zh-TW.json","packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/useCalendarCell.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 {useCalendar} from './useCalendar';\nexport {useRangeCalendar} from './useRangeCalendar';\nexport {useCalendarGrid} from './useCalendarGrid';\nexport {useCalendarCell} from './useCalendarCell';\n\nexport type {CalendarProps, RangeCalendarProps} from '@react-types/calendar';\nexport type {CalendarAria} from './useCalendarBase';\nexport type {AriaCalendarGridProps, CalendarGridAria} from './useCalendarGrid';\nexport type {AriaCalendarCellProps, CalendarCellAria} from './useCalendarCell';\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from '@react-stately/calendar';\n\n/**\n * Provides the behavior and accessibility implementation for a calendar component.\n * A calendar displays one or more date grids and allows users to select a single date.\n */\nexport function useCalendar<T extends DateValue>(props: CalendarProps<T>, state: CalendarState): CalendarAria {\n return useCalendarBase(props, state);\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 {announce} from '@react-aria/live-announcer';\nimport {AriaButtonProps} from '@react-types/button';\nimport {CalendarPropsBase} from '@react-types/calendar';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {DOMProps} from '@react-types/shared';\nimport {filterDOMProps, mergeProps, useLabels, useSlotId, useUpdateEffect} from '@react-aria/utils';\nimport {hookData, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\nexport interface CalendarAria {\n /** Props for the calendar grouping element. */\n calendarProps: HTMLAttributes<HTMLElement>,\n /** Props for the next button. */\n nextButtonProps: AriaButtonProps,\n /** Props for the previous button. */\n prevButtonProps: AriaButtonProps,\n /** Props for the error message element, if any. */\n errorMessageProps: HTMLAttributes<HTMLElement>,\n /** A description of the visible date range, for use in the calendar title. */\n title: string\n}\n\nexport function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {\n let formatMessage = useMessageFormatter(intlMessages);\n let domProps = filterDOMProps(props);\n\n let title = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, false);\n let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, true);\n\n // Announce when the visible date range changes\n useUpdateEffect(() => {\n // only when pressing the Previous or Next button\n if (!state.isFocused) {\n announce(visibleRangeDescription);\n }\n }, [visibleRangeDescription]);\n\n // Announce when the selected value changes\n let selectedDateDescription = useSelectedDateDescription(state);\n useUpdateEffect(() => {\n if (selectedDateDescription) {\n announce(selectedDateDescription, 'polite', 4000);\n }\n // handle an update to the caption that describes the currently selected range, to announce the new value\n }, [selectedDateDescription]);\n\n let errorMessageId = useSlotId([Boolean(props.errorMessage), props.validationState]);\n\n // Pass the label to the child grid elements.\n hookData.set(state, {\n ariaLabel: props['aria-label'],\n ariaLabelledBy: props['aria-labelledby'],\n errorMessageId,\n selectedDateDescription\n });\n\n // If the next or previous buttons become disabled while they are focused, move focus to the calendar body.\n let nextFocused = useRef(false);\n let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();\n if (nextDisabled && nextFocused.current) {\n nextFocused.current = false;\n state.setFocused(true);\n }\n\n let previousFocused = useRef(false);\n let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();\n if (previousDisabled && previousFocused.current) {\n previousFocused.current = false;\n state.setFocused(true);\n }\n\n let labelProps = useLabels({\n id: props['id'],\n 'aria-label': [props['aria-label'], visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': props['aria-labelledby']\n });\n\n return {\n calendarProps: mergeProps(domProps, labelProps, {\n role: 'group',\n 'aria-describedby': props['aria-describedby'] || undefined\n }),\n nextButtonProps: {\n onPress: () => state.focusNextPage(),\n 'aria-label': formatMessage('next'),\n isDisabled: nextDisabled,\n onFocus: () => nextFocused.current = true,\n onBlur: () => nextFocused.current = false\n },\n prevButtonProps: {\n onPress: () => state.focusPreviousPage(),\n 'aria-label': formatMessage('previous'),\n isDisabled: previousDisabled,\n onFocus: () => previousFocused.current = true,\n onBlur: () => previousFocused.current = false\n },\n errorMessageProps: {\n id: errorMessageId\n },\n title\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 {CalendarDate, DateFormatter, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {FormatMessage, useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useMemo} from 'react';\n\ninterface HookData {\n ariaLabel: string,\n ariaLabelledBy: string,\n errorMessageId: string,\n selectedDateDescription: string\n}\n\nexport const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();\n\nexport function getEraFormat(date: CalendarDate): 'short' | undefined {\n return date?.calendar.identifier === 'gregory' && date.era === 'BC' ? 'short' : undefined;\n}\n\nexport function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {\n let formatMessage = useMessageFormatter(intlMessages);\n\n let start: CalendarDate, end: CalendarDate;\n if ('highlightedRange' in state) {\n ({start, end} = state.highlightedRange || {});\n } else {\n start = end = state.value;\n }\n\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era: getEraFormat(start) || getEraFormat(end),\n timeZone: state.timeZone\n });\n\n let anchorDate = 'anchorDate' in state ? state.anchorDate : null;\n return useMemo(() => {\n // No message if currently selecting a range, or there is nothing highlighted.\n if (!anchorDate && start && end) {\n // Use a single date message if the start and end dates are the same day,\n // otherwise include both dates.\n if (isSameDay(start, end)) {\n let date = dateFormatter.format(start.toDate(state.timeZone));\n return formatMessage('selectedDateDescription', {date});\n } else {\n let dateRange = formatRange(dateFormatter, formatMessage, start, end, state.timeZone);\n\n return formatMessage('selectedRangeDescription', {dateRange});\n }\n }\n return '';\n }, [start, end, anchorDate, state.timeZone, formatMessage, dateFormatter]);\n}\n\nexport function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string, isAria: boolean) {\n let formatMessage = useMessageFormatter(intlMessages);\n let era: any = getEraFormat(startDate) || getEraFormat(endDate);\n let monthFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n let dateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n era,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n return useMemo(() => {\n // Special case for month granularity. Format as a single month if only a\n // single month is visible, otherwise format as a range of months.\n if (isSameDay(startDate, startOfMonth(startDate))) {\n if (isSameDay(endDate, endOfMonth(startDate))) {\n return monthFormatter.format(startDate.toDate(timeZone));\n } else if (isSameDay(endDate, endOfMonth(endDate))) {\n return isAria\n ? formatRange(monthFormatter, formatMessage, startDate, endDate, timeZone)\n : monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }\n }\n\n return isAria\n ? formatRange(dateFormatter, formatMessage, startDate, endDate, timeZone)\n : dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }, [startDate, endDate, monthFormatter, dateFormatter, formatMessage, timeZone, isAria]);\n}\n\nfunction formatRange(dateFormatter: DateFormatter, formatMessage: FormatMessage, start: CalendarDate, end: CalendarDate, timeZone: string) {\n let parts = dateFormatter.formatRangeToParts(start.toDate(timeZone), end.toDate(timeZone));\n\n // Find the separator between the start and end date. This is determined\n // by finding the last shared literal before the end range.\n let separatorIndex = -1;\n for (let i = 0; i < parts.length; i++) {\n let part = parts[i];\n if (part.source === 'shared' && part.type === 'literal') {\n separatorIndex = i;\n } else if (part.source === 'endRange') {\n break;\n }\n }\n\n // Now we can combine the parts into start and end strings.\n let startValue = '';\n let endValue = '';\n for (let i = 0; i < parts.length; i++) {\n if (i < separatorIndex) {\n startValue += parts[i].value;\n } else if (i > separatorIndex) {\n endValue += parts[i].value;\n }\n }\n\n return formatMessage('dateRange', {startDate: startValue, endDate: endValue});\n}\n","const _temp0 = require(\"./ar-AE.json\");\nconst _temp1 = require(\"./bg-BG.json\");\nconst _temp2 = require(\"./cs-CZ.json\");\nconst _temp3 = require(\"./da-DK.json\");\nconst _temp4 = require(\"./de-DE.json\");\nconst _temp5 = require(\"./el-GR.json\");\nconst _temp6 = require(\"./en-US.json\");\nconst _temp7 = require(\"./es-ES.json\");\nconst _temp8 = require(\"./et-EE.json\");\nconst _temp9 = require(\"./fi-FI.json\");\nconst _temp10 = require(\"./fr-FR.json\");\nconst _temp11 = require(\"./he-IL.json\");\nconst _temp12 = require(\"./hr-HR.json\");\nconst _temp13 = require(\"./hu-HU.json\");\nconst _temp14 = require(\"./it-IT.json\");\nconst _temp15 = require(\"./ja-JP.json\");\nconst _temp16 = require(\"./ko-KR.json\");\nconst _temp17 = require(\"./lt-LT.json\");\nconst _temp18 = require(\"./lv-LV.json\");\nconst _temp19 = require(\"./nb-NO.json\");\nconst _temp20 = require(\"./nl-NL.json\");\nconst _temp21 = require(\"./pl-PL.json\");\nconst _temp22 = require(\"./pt-BR.json\");\nconst _temp23 = require(\"./pt-PT.json\");\nconst _temp24 = require(\"./ro-RO.json\");\nconst _temp25 = require(\"./ru-RU.json\");\nconst _temp26 = require(\"./sk-SK.json\");\nconst _temp27 = require(\"./sl-SI.json\");\nconst _temp28 = require(\"./sr-SP.json\");\nconst _temp29 = require(\"./sv-SE.json\");\nconst _temp30 = require(\"./tr-TR.json\");\nconst _temp31 = require(\"./uk-UA.json\");\nconst _temp32 = require(\"./zh-CN.json\");\nconst _temp33 = require(\"./zh-TW.json\");\nmodule.exports = {\n \"ar-AE\": _temp0,\n \"bg-BG\": _temp1,\n \"cs-CZ\": _temp2,\n \"da-DK\": _temp3,\n \"de-DE\": _temp4,\n \"el-GR\": _temp5,\n \"en-US\": _temp6,\n \"es-ES\": _temp7,\n \"et-EE\": _temp8,\n \"fi-FI\": _temp9,\n \"fr-FR\": _temp10,\n \"he-IL\": _temp11,\n \"hr-HR\": _temp12,\n \"hu-HU\": _temp13,\n \"it-IT\": _temp14,\n \"ja-JP\": _temp15,\n \"ko-KR\": _temp16,\n \"lt-LT\": _temp17,\n \"lv-LV\": _temp18,\n \"nb-NO\": _temp19,\n \"nl-NL\": _temp20,\n \"pl-PL\": _temp21,\n \"pt-BR\": _temp22,\n \"pt-PT\": _temp23,\n \"ro-RO\": _temp24,\n \"ru-RU\": _temp25,\n \"sk-SK\": _temp26,\n \"sl-SI\": _temp27,\n \"sr-SP\": _temp28,\n \"sv-SE\": _temp29,\n \"tr-TR\": _temp30,\n \"uk-UA\": _temp31,\n \"zh-CN\": _temp32,\n \"zh-TW\": _temp33\n}","{\n \"dateRange\": \"{startDate} إلى {endDate}\",\n \"dateSelected\": \"{date} المحدد\",\n \"finishRangeSelectionPrompt\": \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n \"maximumDate\": \"آخر تاريخ متاح\",\n \"minimumDate\": \"أول تاريخ متاح\",\n \"next\": \"التالي\",\n \"previous\": \"السابق\",\n \"selectedDateDescription\": \"تاريخ محدد: {date}\",\n \"selectedRangeDescription\": \"المدى الزمني المحدد: {dateRange}\",\n \"startRangeSelectionPrompt\": \"انقر لبدء عملية تحديد نطاق التاريخ\",\n \"todayDate\": \"اليوم، {date}\",\n \"todayDateSelected\": \"اليوم، {date} محدد\"\n}\n","{\n \"dateRange\": \"{startDate} до {endDate}\",\n \"dateSelected\": \"Избрано е {date}\",\n \"finishRangeSelectionPrompt\": \"Натиснете, за да довършите избора на времеви интервал\",\n \"maximumDate\": \"Последна налична дата\",\n \"minimumDate\": \"Първа налична дата\",\n \"next\": \"Напред\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Избрана дата: {date}\",\n \"selectedRangeDescription\": \"Избран диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натиснете, за да пристъпите към избора на времеви интервал\",\n \"todayDate\": \"Днес, {date}\",\n \"todayDateSelected\": \"Днес, {date} са избрани\"\n}\n","{\n \"dateRange\": \"{startDate} až {endDate}\",\n \"dateSelected\": \"Vybráno {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výběr rozsahu dat\",\n \"maximumDate\": \"Poslední dostupné datum\",\n \"minimumDate\": \"První dostupné datum\",\n \"next\": \"Další\",\n \"previous\": \"Předchozí\",\n \"selectedDateDescription\": \"Vybrané datum: {date}\",\n \"selectedRangeDescription\": \"Vybrané období: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím zahájíte výběr rozsahu dat\",\n \"todayDate\": \"Dnes, {date}\",\n \"todayDateSelected\": \"Dnes, vybráno {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klik for at fuldføre valg af datoområde\",\n \"maximumDate\": \"Sidste ledige dato\",\n \"minimumDate\": \"Første ledige dato\",\n \"next\": \"Næste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt interval: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik for at starte valg af datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} bis {endDate}\",\n \"dateSelected\": \"{date} ausgewählt\",\n \"finishRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n \"maximumDate\": \"Letztes verfügbares Datum\",\n \"minimumDate\": \"Erstes verfügbares Datum\",\n \"next\": \"Weiter\",\n \"previous\": \"Zurück\",\n \"selectedDateDescription\": \"Ausgewähltes Datum: {date}\",\n \"selectedRangeDescription\": \"Ausgewählter Bereich: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n \"todayDate\": \"Heute, {date}\",\n \"todayDateSelected\": \"Heute, {date} ausgewählt\"\n}\n","{\n \"dateRange\": \"{startDate} έως {endDate}\",\n \"dateSelected\": \"Επιλέχθηκε {date}\",\n \"finishRangeSelectionPrompt\": \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n \"maximumDate\": \"Τελευταία διαθέσιμη ημερομηνία\",\n \"minimumDate\": \"Πρώτη διαθέσιμη ημερομηνία\",\n \"next\": \"Επόμενο\",\n \"previous\": \"Προηγούμενο\",\n \"selectedDateDescription\": \"Επιλεγμένη ημερομηνία: {date}\",\n \"selectedRangeDescription\": \"Επιλεγμένο εύρος: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n \"todayDate\": \"Σήμερα, {date}\",\n \"todayDateSelected\": \"Σήμερα, επιλέχτηκε {date}\"\n}\n","{\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"selectedDateDescription\": \"Selected Date: {date}\",\n \"selectedRangeDescription\": \"Selected Range: {dateRange}\",\n \"todayDate\": \"Today, {date}\",\n \"todayDateSelected\": \"Today, {date} selected\",\n \"dateSelected\": \"{date} selected\",\n \"startRangeSelectionPrompt\": \"Click to start selecting date range\",\n \"finishRangeSelectionPrompt\": \"Click to finish selecting date range\",\n \"minimumDate\": \"First available date\",\n \"maximumDate\": \"Last available date\",\n \"dateRange\": \"{startDate} to {endDate}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} seleccionado\",\n \"finishRangeSelectionPrompt\": \"Haga clic para terminar de seleccionar rango de fechas\",\n \"maximumDate\": \"Última fecha disponible\",\n \"minimumDate\": \"Primera fecha disponible\",\n \"next\": \"Siguiente\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Fecha seleccionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo seleccionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Haga clic para comenzar a seleccionar un rango de fechas\",\n \"todayDate\": \"Hoy, {date}\",\n \"todayDateSelected\": \"Hoy, {date} seleccionado\"\n}\n","{\n \"dateRange\": \"{startDate} kuni {endDate}\",\n \"dateSelected\": \"{date} valitud\",\n \"finishRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n \"maximumDate\": \"Viimane saadaolev kuupäev\",\n \"minimumDate\": \"Esimene saadaolev kuupäev\",\n \"next\": \"Järgmine\",\n \"previous\": \"Eelmine\",\n \"selectedDateDescription\": \"Valitud kuupäev: {date}\",\n \"selectedRangeDescription\": \"Valitud vahemik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimiseks\",\n \"todayDate\": \"Täna, {date}\",\n \"todayDateSelected\": \"Täna, {date} valitud\"\n}\n","{\n \"dateRange\": \"{startDate} – {endDate}\",\n \"dateSelected\": \"{date} valittu\",\n \"finishRangeSelectionPrompt\": \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n \"maximumDate\": \"Viimeinen varattavissa oleva päivämäärä\",\n \"minimumDate\": \"Ensimmäinen varattavissa oleva päivämäärä\",\n \"next\": \"Seuraava\",\n \"previous\": \"Edellinen\",\n \"selectedDateDescription\": \"Valittu päivämäärä: {date}\",\n \"selectedRangeDescription\": \"Valittu aikaväli: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n \"todayDate\": \"Tänään, {date}\",\n \"todayDateSelected\": \"Tänään, {date} valittu\"\n}\n","{\n \"dateRange\": \"{startDate} à {endDate}\",\n \"dateSelected\": \"{date} sélectionné\",\n \"finishRangeSelectionPrompt\": \"Cliquer pour finir de sélectionner la plage de dates\",\n \"maximumDate\": \"Dernière date disponible\",\n \"minimumDate\": \"Première date disponible\",\n \"next\": \"Suivant\",\n \"previous\": \"Précédent\",\n \"selectedDateDescription\": \"Date sélectionnée : {date}\",\n \"selectedRangeDescription\": \"Plage sélectionnée : {dateRange}\",\n \"startRangeSelectionPrompt\": \"Cliquer pour commencer à sélectionner la plage de dates\",\n \"todayDate\": \"Aujourd'hui, {date}\",\n \"todayDateSelected\": \"Aujourd’hui, {date} sélectionné\"\n}\n","{\n \"dateRange\": \"{startDate} עד {endDate}\",\n \"dateSelected\": \"{date} נבחר\",\n \"finishRangeSelectionPrompt\": \"חץ כדי לסיים את בחירת טווח התאריכים\",\n \"maximumDate\": \"תאריך פנוי אחרון\",\n \"minimumDate\": \"תאריך פנוי ראשון\",\n \"next\": \"הבא\",\n \"previous\": \"הקודם\",\n \"selectedDateDescription\": \"תאריך נבחר: {date}\",\n \"selectedRangeDescription\": \"טווח נבחר: {dateRange}\",\n \"startRangeSelectionPrompt\": \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n \"todayDate\": \"היום, {date}\",\n \"todayDateSelected\": \"היום, {date} נבחר\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} odabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite raspon odabranih datuma\",\n \"maximumDate\": \"Posljednji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sljedeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Odabrani datum: {date}\",\n \"selectedRangeDescription\": \"Odabrani raspon: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete raspon odabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, odabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate}–{endDate}\",\n \"dateSelected\": \"{date} kiválasztva\",\n \"finishRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n \"maximumDate\": \"Utolsó elérhető dátum\",\n \"minimumDate\": \"Az első elérhető dátum\",\n \"next\": \"Következő\",\n \"previous\": \"Előző\",\n \"selectedDateDescription\": \"Kijelölt dátum: {date}\",\n \"selectedRangeDescription\": \"Kijelölt tartomány: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének indításához\",\n \"todayDate\": \"Ma, {date}\",\n \"todayDateSelected\": \"Ma, {date} kijelölve\"\n}\n","{\n \"dateRange\": \"Da {startDate} a {endDate}\",\n \"dateSelected\": \"{date} selezionata\",\n \"finishRangeSelectionPrompt\": \"Fai clic per completare la selezione dell’intervallo di date\",\n \"maximumDate\": \"Ultima data disponibile\",\n \"minimumDate\": \"Prima data disponibile\",\n \"next\": \"Successivo\",\n \"previous\": \"Precedente\",\n \"selectedDateDescription\": \"Data selezionata: {date}\",\n \"selectedRangeDescription\": \"Intervallo selezionato: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Fai clic per selezionare l’intervallo di date\",\n \"todayDate\": \"Oggi, {date}\",\n \"todayDateSelected\": \"Oggi, {date} selezionata\"\n}\n","{\n \"dateRange\": \"{startDate} から {endDate}\",\n \"dateSelected\": \"{date} を選択\",\n \"finishRangeSelectionPrompt\": \"クリックして日付範囲の選択を終了\",\n \"maximumDate\": \"最終利用可能日\",\n \"minimumDate\": \"最初の利用可能日\",\n \"next\": \"次へ\",\n \"previous\": \"前へ\",\n \"selectedDateDescription\": \"選択した日付 : {date}\",\n \"selectedRangeDescription\": \"選択範囲 : {dateRange}\",\n \"startRangeSelectionPrompt\": \"クリックして日付範囲の選択を開始\",\n \"todayDate\": \"本日、{date}\",\n \"todayDateSelected\": \"本日、{date} を選択\"\n}\n","{\n \"dateRange\": \"{startDate} ~ {endDate}\",\n \"dateSelected\": \"{date} 선택됨\",\n \"finishRangeSelectionPrompt\": \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n \"maximumDate\": \"마지막으로 사용 가능한 일자\",\n \"minimumDate\": \"처음으로 사용 가능한 일자\",\n \"next\": \"다음\",\n \"previous\": \"이전\",\n \"selectedDateDescription\": \"선택 일자: {date}\",\n \"selectedRangeDescription\": \"선택 범위: {dateRange}\",\n \"startRangeSelectionPrompt\": \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n \"todayDate\": \"오늘, {date}\",\n \"todayDateSelected\": \"오늘, {date} 선택됨\"\n}\n","{\n \"dateRange\": \"Nuo {startDate} iki {endDate}\",\n \"dateSelected\": \"Pasirinkta {date}\",\n \"finishRangeSelectionPrompt\": \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n \"maximumDate\": \"Paskutinė galima data\",\n \"minimumDate\": \"Pirmoji galima data\",\n \"next\": \"Paskesnis\",\n \"previous\": \"Ankstesnis\",\n \"selectedDateDescription\": \"Pasirinkta data: {date}\",\n \"selectedRangeDescription\": \"Pasirinktas intervalas: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n \"todayDate\": \"Šiandien, {date}\",\n \"todayDateSelected\": \"Šiandien, pasirinkta {date}\"\n}\n","{\n \"dateRange\": \"No {startDate} līdz {endDate}\",\n \"dateSelected\": \"Atlasīts: {date}\",\n \"finishRangeSelectionPrompt\": \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n \"maximumDate\": \"Pēdējais pieejamais datums\",\n \"minimumDate\": \"Pirmais pieejamais datums\",\n \"next\": \"Tālāk\",\n \"previous\": \"Atpakaļ\",\n \"selectedDateDescription\": \"Atlasītais datums: {date}\",\n \"selectedRangeDescription\": \"Atlasītais diapazons: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n \"todayDate\": \"Šodien, {date}\",\n \"todayDateSelected\": \"Atlasīta šodiena, {date}\"\n}\n","{\n \"dateRange\": \"{startDate} til {endDate}\",\n \"dateSelected\": \"{date} valgt\",\n \"finishRangeSelectionPrompt\": \"Klikk for å fullføre valg av datoområde\",\n \"maximumDate\": \"Siste tilgjengelige dato\",\n \"minimumDate\": \"Første tilgjengelige dato\",\n \"next\": \"Neste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date}\",\n \"selectedRangeDescription\": \"Valgt område: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klikk for å starte valg av datoområde\",\n \"todayDate\": \"I dag, {date}\",\n \"todayDateSelected\": \"I dag, {date} valgt\"\n}\n","{\n \"dateRange\": \"{startDate} tot {endDate}\",\n \"dateSelected\": \"{date} geselecteerd\",\n \"finishRangeSelectionPrompt\": \"Klik om de selectie van het datumbereik te voltooien\",\n \"maximumDate\": \"Laatste beschikbare datum\",\n \"minimumDate\": \"Eerste beschikbare datum\",\n \"next\": \"Volgende\",\n \"previous\": \"Vorige\",\n \"selectedDateDescription\": \"Geselecteerde datum: {date}\",\n \"selectedRangeDescription\": \"Geselecteerd bereik: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klik om het datumbereik te selecteren\",\n \"todayDate\": \"Vandaag, {date}\",\n \"todayDateSelected\": \"Vandaag, {date} geselecteerd\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"Wybrano {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknij, aby zakończyć wybór zakresu dat\",\n \"maximumDate\": \"Ostatnia dostępna data\",\n \"minimumDate\": \"Pierwsza dostępna data\",\n \"next\": \"Dalej\",\n \"previous\": \"Wstecz\",\n \"selectedDateDescription\": \"Wybrana data: {date}\",\n \"selectedRangeDescription\": \"Wybrany zakres: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknij, aby rozpocząć wybór zakresu dat\",\n \"todayDate\": \"Dzisiaj, {date}\",\n \"todayDateSelected\": \"Dzisiaj wybrano {date}\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para concluir a seleção do intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para iniciar a seleção do intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"{startDate} a {endDate}\",\n \"dateSelected\": \"{date} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para terminar de selecionar o intervalo de datas\",\n \"maximumDate\": \"Última data disponível\",\n \"minimumDate\": \"Primeira data disponível\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Clique para começar a selecionar o intervalo de datas\",\n \"todayDate\": \"Hoje, {date}\",\n \"todayDateSelected\": \"Hoje, {date} selecionado\"\n}\n","{\n \"dateRange\": \"De la {startDate} până la {endDate}\",\n \"dateSelected\": \"{date} selectată\",\n \"finishRangeSelectionPrompt\": \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n \"maximumDate\": \"Ultima dată disponibilă\",\n \"minimumDate\": \"Prima dată disponibilă\",\n \"next\": \"Următorul\",\n \"previous\": \"Înainte\",\n \"selectedDateDescription\": \"Dată selectată: {date}\",\n \"selectedRangeDescription\": \"Interval selectat: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n \"todayDate\": \"Astăzi, {date}\",\n \"todayDateSelected\": \"Azi, {date} selectată\"\n}\n","{\n \"dateRange\": \"С {startDate} по {endDate}\",\n \"dateSelected\": \"Выбрано {date}\",\n \"finishRangeSelectionPrompt\": \"Щелкните, чтобы завершить выбор диапазона дат\",\n \"maximumDate\": \"Последняя доступная дата\",\n \"minimumDate\": \"Первая доступная дата\",\n \"next\": \"Далее\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Выбранная дата: {date}\",\n \"selectedRangeDescription\": \"Выбранный диапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Щелкните, чтобы начать выбор диапазона дат\",\n \"todayDate\": \"Сегодня, {date}\",\n \"todayDateSelected\": \"Сегодня, выбрано {date}\"\n}\n","{\n \"dateRange\": \"Od {startDate} do {endDate}\",\n \"dateSelected\": \"Vybratý dátum {date}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výber rozsahu dátumov\",\n \"maximumDate\": \"Posledný dostupný dátum\",\n \"minimumDate\": \"Prvý dostupný dátum\",\n \"next\": \"Nasledujúce\",\n \"previous\": \"Predchádzajúce\",\n \"selectedDateDescription\": \"Vybratý dátum: {date}\",\n \"selectedRangeDescription\": \"Vybratý rozsah: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknutím spustíte výber rozsahu dátumov\",\n \"todayDate\": \"Dnes {date}\",\n \"todayDateSelected\": \"Vybratý dnešný dátum {date}\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izbrano\",\n \"finishRangeSelectionPrompt\": \"Kliknite za dokončanje izbire datumskega obsega\",\n \"maximumDate\": \"Zadnji razpoložljivi datum\",\n \"minimumDate\": \"Prvi razpoložljivi datum\",\n \"next\": \"Naprej\",\n \"previous\": \"Nazaj\",\n \"selectedDateDescription\": \"Izbrani datum: {date}\",\n \"selectedRangeDescription\": \"Izbrano območje: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite za začetek izbire datumskega obsega\",\n \"todayDate\": \"Danes, {date}\",\n \"todayDateSelected\": \"Danes, {date} izbrano\"\n}\n","{\n \"dateRange\": \"{startDate} do {endDate}\",\n \"dateSelected\": \"{date} izabran\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite opseg izabranih datuma\",\n \"maximumDate\": \"Zadnji raspoloživi datum\",\n \"minimumDate\": \"Prvi raspoloživi datum\",\n \"next\": \"Sledeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Izabrani datum: {date}\",\n \"selectedRangeDescription\": \"Izabrani period: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete opseg izabranih datuma\",\n \"todayDate\": \"Danas, {date}\",\n \"todayDateSelected\": \"Danas, izabran {date}\"\n}\n","{\n \"dateRange\": \"{startDate} till {endDate}\",\n \"dateSelected\": \"{date} har valts\",\n \"finishRangeSelectionPrompt\": \"Klicka för att avsluta val av datumintervall\",\n \"maximumDate\": \"Sista tillgängliga datum\",\n \"minimumDate\": \"Första tillgängliga datum\",\n \"next\": \"Nästa\",\n \"previous\": \"Föregående\",\n \"selectedDateDescription\": \"Valt datum: {date}\",\n \"selectedRangeDescription\": \"Valt intervall: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Klicka för att välja datumintervall\",\n \"todayDate\": \"Idag, {date}\",\n \"todayDateSelected\": \"Idag, {date} har valts\"\n}\n","{\n \"dateRange\": \"{startDate} - {endDate}\",\n \"dateSelected\": \"{date} seçildi\",\n \"finishRangeSelectionPrompt\": \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n \"maximumDate\": \"Son müsait tarih\",\n \"minimumDate\": \"İlk müsait tarih\",\n \"next\": \"Sonraki\",\n \"previous\": \"Önceki\",\n \"selectedDateDescription\": \"Seçilen Tarih: {date}\",\n \"selectedRangeDescription\": \"Seçilen Aralık: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Tarih aralığı seçimini başlatmak için tıklayın\",\n \"todayDate\": \"Bugün, {date}\",\n \"todayDateSelected\": \"Bugün, {date} seçildi\"\n}\n","{\n \"dateRange\": \"{startDate} — {endDate}\",\n \"dateSelected\": \"Вибрано {date}\",\n \"finishRangeSelectionPrompt\": \"Натисніть, щоб завершити вибір діапазону дат\",\n \"maximumDate\": \"Остання доступна дата\",\n \"minimumDate\": \"Перша доступна дата\",\n \"next\": \"Наступний\",\n \"previous\": \"Попередній\",\n \"selectedDateDescription\": \"Вибрана дата: {date}\",\n \"selectedRangeDescription\": \"Вибраний діапазон: {dateRange}\",\n \"startRangeSelectionPrompt\": \"Натисніть, щоб почати вибір діапазону дат\",\n \"todayDate\": \"Сьогодні, {date}\",\n \"todayDateSelected\": \"Сьогодні, вибрано {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已选定 {date}\",\n \"finishRangeSelectionPrompt\": \"单击以完成选择日期范围\",\n \"maximumDate\": \"最后一个可用日期\",\n \"minimumDate\": \"第一个可用日期\",\n \"next\": \"下一页\",\n \"previous\": \"上一页\",\n \"selectedDateDescription\": \"选定的日期:{date}\",\n \"selectedRangeDescription\": \"选定的范围:{dateRange}\",\n \"startRangeSelectionPrompt\": \"单击以开始选择日期范围\",\n \"todayDate\": \"今天,即 {date}\",\n \"todayDateSelected\": \"已选定今天,即 {date}\"\n}\n","{\n \"dateRange\": \"{startDate} 至 {endDate}\",\n \"dateSelected\": \"已選取 {date}\",\n \"finishRangeSelectionPrompt\": \"按一下以完成選取日期範圍\",\n \"maximumDate\": \"最後一個可用日期\",\n \"minimumDate\": \"第一個可用日期\",\n \"next\": \"下一頁\",\n \"previous\": \"上一頁\",\n \"selectedDateDescription\": \"選定的日期:{date}\",\n \"selectedRangeDescription\": \"選定的範圍:{dateRange}\",\n \"startRangeSelectionPrompt\": \"按一下以開始選取日期範圍\",\n \"todayDate\": \"今天,{date}\",\n \"todayDateSelected\": \"已選取今天,{date}\"\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 {CalendarAria, useCalendarBase} from './useCalendarBase';\nimport {DateValue, RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from '@react-stately/calendar';\nimport {RefObject, useRef} from 'react';\nimport {useEvent} from '@react-aria/utils';\n\n/**\n * Provides the behavior and accessibility implementation 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 useRangeCalendar<T extends DateValue>(props: RangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<HTMLElement>): CalendarAria {\n let res = useCalendarBase(props, state);\n\n // We need to ignore virtual pointer events from VoiceOver due to these bugs.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n // usePress also does this and waits for the following click event before firing.\n // We need to match that here otherwise this will fire before the press event in\n // useCalendarCell, causing range selection to not work properly.\n let isVirtualClick = useRef(false);\n let windowRef = useRef(typeof window !== 'undefined' ? window : null);\n useEvent(windowRef, 'pointerdown', e => {\n isVirtualClick.current = e.width === 0 && e.height === 0;\n });\n\n // Stop range selection when pressing or releasing a pointer outside the calendar body,\n // except when pressing the next or previous buttons to switch months.\n let endDragging = e => {\n if (isVirtualClick.current) {\n isVirtualClick.current = false;\n return;\n }\n\n state.setDragging(false);\n if (!state.anchorDate) {\n return;\n }\n\n let target = e.target as HTMLElement;\n let body = document.getElementById(res.calendarProps.id);\n if (\n body &&\n body.contains(document.activeElement) &&\n (!body.contains(target) || !target.closest('button, [role=\"button\"]'))\n ) {\n state.selectFocusedDate();\n }\n };\n\n useEvent(windowRef, 'pointerup', endDragging);\n useEvent(windowRef, 'pointercancel', endDragging);\n\n // Also stop range selection on blur, e.g. tabbing away from the calendar.\n res.calendarProps.onBlur = e => {\n if ((!e.relatedTarget || !ref.current.contains(e.relatedTarget)) && state.anchorDate) {\n state.selectFocusedDate();\n }\n };\n\n // Prevent touch scrolling while dragging\n useEvent(ref, 'touchmove', e => {\n if (state.isDragging) {\n e.preventDefault();\n }\n }, {passive: false, capture: true});\n\n return res;\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 {CalendarDate, startOfWeek, today} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {hookData, useVisibleRangeDescription} from './utils';\nimport {HTMLAttributes, KeyboardEvent, useMemo} from 'react';\nimport {mergeProps, useLabels} from '@react-aria/utils';\nimport {useDateFormatter, useLocale} from '@react-aria/i18n';\n\nexport interface AriaCalendarGridProps {\n /**\n * The first date displayed in the calendar grid.\n * Defaults to the first visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n startDate?: CalendarDate,\n /**\n * The last date displayed in the calendar grid.\n * Defaults to the last visible date in the calendar.\n * Override this to display multiple date grids in a calendar.\n */\n endDate?: CalendarDate\n}\n\nexport interface CalendarGridAria {\n /** Props for the date grid element (e.g. `<table>`). */\n gridProps: HTMLAttributes<HTMLElement>,\n /** Props for the grid header element (e.g. `<thead>`). */\n headerProps: HTMLAttributes<HTMLElement>,\n /** A list of week day abbreviations formatted for the current locale, typically used in column headers. */\n weekDays: string[]\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar grid component.\n * A calendar grid displays a single grid of days within a calendar or range calendar which\n * can be keyboard navigated and selected by the user.\n */\nexport function useCalendarGrid(props: AriaCalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria {\n let {\n startDate = state.visibleRange.start,\n endDate = state.visibleRange.end\n } = props;\n\n let {direction} = useLocale();\n\n let onKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'PageUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousSection(e.shiftKey);\n break;\n case 'PageDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextSection(e.shiftKey);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionEnd();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n state.focusSectionStart();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.focusPreviousRow();\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.focusNextRow();\n break;\n case 'Escape':\n // Cancel the selection.\n if ('setAnchorDate' in state) {\n e.preventDefault();\n state.setAnchorDate(null);\n }\n break;\n }\n };\n\n let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone, true);\n\n let {ariaLabel, ariaLabelledBy} = hookData.get(state);\n let labelProps = useLabels({\n 'aria-label': [ariaLabel, visibleRangeDescription].filter(Boolean).join(', '),\n 'aria-labelledby': ariaLabelledBy\n });\n\n let dayFormatter = useDateFormatter({weekday: 'narrow', timeZone: state.timeZone});\n let {locale} = useLocale();\n let weekDays = useMemo(() => {\n let weekStart = startOfWeek(today(state.timeZone), locale);\n return [...new Array(7).keys()].map((index) => {\n let date = weekStart.add({days: index});\n let dateDay = date.toDate(state.timeZone);\n return dayFormatter.format(dateDay);\n });\n }, [locale, state.timeZone, dayFormatter]);\n\n return {\n gridProps: mergeProps(labelProps, {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || null,\n 'aria-disabled': state.isDisabled || null,\n 'aria-multiselectable': ('highlightedRange' in state) || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false)\n }),\n headerProps: {\n // Column headers are hidden to screen readers to make navigating with a touch screen reader easier.\n // The day names are already included in the label of each cell, so there's no need to announce them twice.\n 'aria-hidden': true\n },\n weekDays\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 {CalendarDate, isEqualDay, isSameDay, isToday} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {focusWithoutScrolling, getScrollParent, scrollIntoView, useDescription} from '@react-aria/utils';\nimport {getEraFormat, hookData} from './utils';\nimport {getInteractionModality, usePress} from '@react-aria/interactions';\nimport {HTMLAttributes, RefObject, useEffect, useMemo, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps} from '@react-aria/utils';\nimport {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\n\nexport interface AriaCalendarCellProps {\n /** The date that this cell represents. */\n date: CalendarDate,\n /**\n * Whether the cell is disabled. By default, this is determined by the\n * Calendar's `minValue`, `maxValue`, and `isDisabled` props.\n */\n isDisabled?: boolean\n}\n\nexport interface CalendarCellAria {\n /** Props for the grid cell element (e.g. `<td>`). */\n cellProps: HTMLAttributes<HTMLElement>,\n /** Props for the button element within the cell. */\n buttonProps: HTMLAttributes<HTMLElement>,\n /** Whether the cell is currently being pressed. */\n isPressed: boolean,\n /** Whether the cell is selected. */\n isSelected: boolean,\n /** Whether the cell is focused. */\n isFocused: boolean,\n /**\n * Whether the cell is disabled, according to the calendar's `minValue`, `maxValue`, and `isDisabled` props.\n * Disabled dates are not focusable, and cannot be selected by the user. They are typically\n * displayed with a dimmed appearance.\n */\n isDisabled: boolean,\n /**\n * Whether the cell is unavailable, according to the calendar's `isDateUnavailable` prop. Unavailable dates remain\n * focusable, but cannot be selected by the user. They should be displayed with a visual affordance to indicate they\n * are unavailable, such as a different color or a strikethrough.\n *\n * Note that because they are focusable, unavailable dates must meet a 4.5:1 color contrast ratio,\n * [as defined by WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html).\n */\n isUnavailable: boolean,\n /**\n * Whether the cell is outside the visible range of the calendar.\n * For example, dates before the first day of a month in the same week.\n */\n isOutsideVisibleRange: boolean,\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean,\n /** The day number formatted according to the current locale. */\n formattedDate: string\n}\n\n/**\n * Provides the behavior and accessibility implementation for a calendar cell component.\n * A calendar cell displays a date cell within a calendar grid which can be selected by the user.\n */\nexport function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement>): CalendarCellAria {\n let {date, isDisabled} = props;\n let {errorMessageId, selectedDateDescription} = hookData.get(state);\n let formatMessage = useMessageFormatter(intlMessages);\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n era: getEraFormat(date),\n timeZone: state.timeZone\n });\n let isSelected = state.isSelected(date);\n let isFocused = state.isCellFocused(date);\n isDisabled = isDisabled || state.isCellDisabled(date);\n let isUnavailable = state.isCellUnavailable(date);\n let isSelectable = !isDisabled && !isUnavailable;\n let isInvalid = state.validationState === 'invalid' && (\n 'highlightedRange' in state\n ? !state.anchorDate && state.highlightedRange && date.compare(state.highlightedRange.start) >= 0 && date.compare(state.highlightedRange.end) <= 0\n : state.value && isSameDay(state.value, date)\n );\n\n if (isInvalid) {\n isSelected = true;\n }\n\n // For performance, reuse the same date object as before if the new date prop is the same.\n // This allows subsequent useMemo results to be reused.\n let lastDate = useRef(null);\n if (lastDate.current && isEqualDay(date, lastDate.current)) {\n date = lastDate.current;\n }\n\n lastDate.current = date;\n\n let nativeDate = useMemo(() => date.toDate(state.timeZone), [date, state.timeZone]);\n\n // aria-label should be localize Day of week, Month, Day and Year without Time.\n let isDateToday = isToday(date, state.timeZone);\n let label = useMemo(() => {\n let label = '';\n\n // If this is a range calendar, add a description of the full selected range\n // to the first and last selected date.\n if (\n 'highlightedRange' in state &&\n state.value &&\n !state.anchorDate &&\n (isSameDay(date, state.value.start) || isSameDay(date, state.value.end))\n ) {\n label = selectedDateDescription + ', ';\n }\n\n label += dateFormatter.format(nativeDate);\n if (isDateToday) {\n // If date is today, set appropriate string depending on selected state:\n label = formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {\n date: label\n });\n } else if (isSelected) {\n // If date is selected but not today:\n label = formatMessage('dateSelected', {\n date: label\n });\n }\n\n if (state.minValue && isSameDay(date, state.minValue)) {\n label += ', ' + formatMessage('minimumDate');\n } else if (state.maxValue && isSameDay(date, state.maxValue)) {\n label += ', ' + formatMessage('maximumDate');\n }\n\n return label;\n }, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday, date, state, selectedDateDescription]);\n\n // When a cell is focused and this is a range calendar, add a prompt to help\n // screenreader users know that they are in a range selection mode.\n let rangeSelectionPrompt = '';\n if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {\n // If selection has started add \"click to finish selecting range\"\n if (state.anchorDate) {\n rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');\n // Otherwise, add \"click to start selecting range\" prompt\n } else {\n rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');\n }\n }\n\n let descriptionProps = useDescription(rangeSelectionPrompt);\n\n let isAnchorPressed = useRef(false);\n let isRangeBoundaryPressed = useRef(false);\n let touchDragTimerRef = useRef(null);\n let {pressProps, isPressed} = usePress({\n // When dragging to select a range, we don't want dragging over the original anchor\n // again to trigger onPressStart. Cancel presses immediately when the pointer exits.\n shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,\n preventFocusOnPress: true,\n isDisabled: !isSelectable,\n onPressStart(e) {\n if (state.isReadOnly) {\n state.setFocusedDate(date);\n return;\n }\n\n if ('highlightedRange' in state && !state.anchorDate && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n // Allow dragging the start or end date of a range to modify it\n // rather than starting a new selection.\n // Don't allow dragging when invalid, or weird jumping behavior may occur as date ranges\n // are constrained to available dates. The user will need to select a new range in this case.\n if (state.highlightedRange && !isInvalid) {\n if (isSameDay(date, state.highlightedRange.start)) {\n state.setAnchorDate(state.highlightedRange.end);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n } else if (isSameDay(date, state.highlightedRange.end)) {\n state.setAnchorDate(state.highlightedRange.start);\n state.setFocusedDate(date);\n state.setDragging(true);\n isRangeBoundaryPressed.current = true;\n return;\n }\n }\n\n let startDragging = () => {\n state.setDragging(true);\n touchDragTimerRef.current = null;\n\n state.selectDate(date);\n state.setFocusedDate(date);\n isAnchorPressed.current = true;\n };\n\n // Start selection on mouse/touch down so users can drag to select a range.\n // On touch, delay dragging to determine if the user really meant to scroll.\n if (e.pointerType === 'touch') {\n touchDragTimerRef.current = setTimeout(startDragging, 200);\n } else {\n startDragging();\n }\n }\n },\n onPressEnd() {\n isRangeBoundaryPressed.current = false;\n isAnchorPressed.current = false;\n clearTimeout(touchDragTimerRef.current);\n touchDragTimerRef.current = null;\n },\n onPress() {\n // For non-range selection, always select on press up.\n if (!('anchorDate' in state) && !state.isReadOnly) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n },\n onPressUp(e) {\n if (state.isReadOnly) {\n return;\n }\n\n // If the user tapped quickly, the date won't be selected yet and the\n // timer will still be in progress. In this case, select the date on touch up.\n // Timer is cleared in onPressEnd.\n if ('anchorDate' in state && touchDragTimerRef.current) {\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n\n if ('anchorDate' in state) {\n if (isRangeBoundaryPressed.current) {\n // When clicking on the start or end date of an already selected range,\n // start a new selection on press up to also allow dragging the date to\n // change the existing range.\n state.setAnchorDate(date);\n } else if (state.anchorDate && !isAnchorPressed.current) {\n // When releasing a drag or pressing the end date of a range, select it.\n state.selectDate(date);\n state.setFocusedDate(date);\n } else if (e.pointerType === 'keyboard' && !state.anchorDate) {\n // For range selection, auto-advance the focused date by one if using keyboard.\n // This gives an indication that you're selecting a range rather than a single date.\n // For mouse, this is unnecessary because users will see the indication on hover. For screen readers,\n // there will be an announcement to \"click to finish selecting range\" (above).\n state.selectDate(date);\n let nextDay = date.add({days: 1});\n if (state.isInvalid(nextDay)) {\n nextDay = date.subtract({days: 1});\n }\n if (!state.isInvalid(nextDay)) {\n state.setFocusedDate(nextDay);\n }\n } else if (e.pointerType === 'virtual') {\n // For screen readers, just select the date on click.\n state.selectDate(date);\n state.setFocusedDate(date);\n }\n }\n }\n });\n\n let tabIndex = null;\n if (!isDisabled) {\n tabIndex = isSameDay(date, state.focusedDate) ? 0 : -1;\n }\n\n // Focus the button in the DOM when the state updates.\n useEffect(() => {\n if (isFocused && ref.current) {\n focusWithoutScrolling(ref.current);\n\n // Scroll into view if navigating with a keyboard, otherwise\n // try not to shift the view under the user's mouse/finger.\n // Only scroll the direct scroll parent, not the whole page, so\n // we don't scroll to the bottom when opening date picker popover.\n if (getInteractionModality() !== 'pointer') {\n scrollIntoView(getScrollParent(ref.current) as HTMLElement, ref.current);\n }\n }\n }, [isFocused, ref]);\n\n let cellDateFormatter = useDateFormatter({\n day: 'numeric',\n timeZone: state.timeZone,\n calendar: date.calendar.identifier\n });\n\n let formattedDate = useMemo(() => cellDateFormatter.format(nativeDate), [cellDateFormatter, nativeDate]);\n\n return {\n cellProps: {\n role: 'gridcell',\n 'aria-disabled': !isSelectable || null,\n 'aria-selected': isSelected || null,\n 'aria-invalid': isInvalid || null\n },\n buttonProps: mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': !isSelectable || null,\n 'aria-label': label,\n 'aria-invalid': isInvalid || null,\n 'aria-describedby': [\n isInvalid ? errorMessageId : null,\n descriptionProps['aria-describedby']\n ].filter(Boolean).join(' ') || undefined,\n onPointerEnter(e) {\n // Highlight the date on hover or drag over a date when selecting a range.\n if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) {\n state.highlightDate(date);\n }\n },\n onPointerDown(e) {\n // This is necessary on touch devices to allow dragging\n // outside the original pressed element.\n // (JSDOM does not support this)\n if ('releasePointerCapture' in e.target) {\n e.target.releasePointerCapture(e.pointerId);\n }\n },\n onContextMenu(e) {\n // Prevent context menu on long press.\n e.preventDefault();\n }\n }),\n isPressed,\n isFocused,\n isSelected,\n isDisabled,\n isUnavailable,\n isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,\n isInvalid,\n formattedDate\n };\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-aria/calendar",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Spectrum UI components in React",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@babel/runtime": "^7.6.2",
|
|
21
|
-
"@internationalized/date": "3.0.0
|
|
22
|
-
"@react-aria/i18n": "^3.4.
|
|
23
|
-
"@react-aria/interactions": "^3.9.
|
|
21
|
+
"@internationalized/date": "^3.0.0",
|
|
22
|
+
"@react-aria/i18n": "^3.4.1",
|
|
23
|
+
"@react-aria/interactions": "^3.9.1",
|
|
24
24
|
"@react-aria/live-announcer": "^3.1.0",
|
|
25
|
-
"@react-aria/utils": "^3.13.
|
|
26
|
-
"@react-stately/calendar": "3.0.0
|
|
27
|
-
"@react-types/button": "^3.5.
|
|
28
|
-
"@react-types/calendar": "3.0.0
|
|
29
|
-
"@react-types/shared": "^3.13.
|
|
25
|
+
"@react-aria/utils": "^3.13.1",
|
|
26
|
+
"@react-stately/calendar": "^3.0.0",
|
|
27
|
+
"@react-types/button": "^3.5.1",
|
|
28
|
+
"@react-types/calendar": "^3.0.0",
|
|
29
|
+
"@react-types/shared": "^3.13.1"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "715c3f563ccf8c2e0102d3e18403d9db21a05a71"
|
|
39
39
|
}
|
package/src/useCalendarCell.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import {CalendarDate, isEqualDay, isSameDay, isToday} from '@internationalized/date';
|
|
14
14
|
import {CalendarState, RangeCalendarState} from '@react-stately/calendar';
|
|
15
|
-
import {focusWithoutScrolling, useDescription} from '@react-aria/utils';
|
|
15
|
+
import {focusWithoutScrolling, getScrollParent, scrollIntoView, useDescription} from '@react-aria/utils';
|
|
16
16
|
import {getEraFormat, hookData} from './utils';
|
|
17
17
|
import {getInteractionModality, usePress} from '@react-aria/interactions';
|
|
18
18
|
import {HTMLAttributes, RefObject, useEffect, useMemo, useRef} from 'react';
|
|
@@ -283,12 +283,14 @@ export function useCalendarCell(props: AriaCalendarCellProps, state: CalendarSta
|
|
|
283
283
|
// Focus the button in the DOM when the state updates.
|
|
284
284
|
useEffect(() => {
|
|
285
285
|
if (isFocused && ref.current) {
|
|
286
|
+
focusWithoutScrolling(ref.current);
|
|
287
|
+
|
|
286
288
|
// Scroll into view if navigating with a keyboard, otherwise
|
|
287
289
|
// try not to shift the view under the user's mouse/finger.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
ref.current.
|
|
290
|
+
// Only scroll the direct scroll parent, not the whole page, so
|
|
291
|
+
// we don't scroll to the bottom when opening date picker popover.
|
|
292
|
+
if (getInteractionModality() !== 'pointer') {
|
|
293
|
+
scrollIntoView(getScrollParent(ref.current) as HTMLElement, ref.current);
|
|
292
294
|
}
|
|
293
295
|
}
|
|
294
296
|
}, [isFocused, ref]);
|
package/src/utils.ts
CHANGED
|
@@ -26,12 +26,8 @@ interface HookData {
|
|
|
26
26
|
|
|
27
27
|
export const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();
|
|
28
28
|
|
|
29
|
-
export function getEraFormat(date: CalendarDate) {
|
|
30
|
-
|
|
31
|
-
return 'long';
|
|
32
|
-
} else if (date?.era === 'BC') {
|
|
33
|
-
return 'short';
|
|
34
|
-
}
|
|
29
|
+
export function getEraFormat(date: CalendarDate): 'short' | undefined {
|
|
30
|
+
return date?.calendar.identifier === 'gregory' && date.era === 'BC' ? 'short' : undefined;
|
|
35
31
|
}
|
|
36
32
|
|
|
37
33
|
export function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {
|