@react-aria/calendar 3.0.0-nightly.3168 → 3.0.0-nightly.3180

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,8 +1,8 @@
1
1
  var $jzHdg$reactarialiveannouncer = require("@react-aria/live-announcer");
2
2
  var $jzHdg$reactariautils = require("@react-aria/utils");
3
3
  var $jzHdg$reactariai18n = require("@react-aria/i18n");
4
- var $jzHdg$internationalizeddate = require("@internationalized/date");
5
4
  var $jzHdg$react = require("react");
5
+ var $jzHdg$internationalizeddate = require("@internationalized/date");
6
6
  var $jzHdg$reactariainteractions = require("@react-aria/interactions");
7
7
 
8
8
  function $parcel$exportWildcard(dest, source) {
@@ -244,11 +244,13 @@ function $df1d8e967e73ec8e$export$31afe65d91ef6e8(startDate, endDate, timeZone)
244
244
  month: 'long',
245
245
  year: 'numeric',
246
246
  era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,
247
- calendar: startDate.calendar.identifier
247
+ calendar: startDate.calendar.identifier,
248
+ timeZone: timeZone
248
249
  });
249
250
  let dateFormatter = $jzHdg$reactariai18n.useDateFormatter({
250
251
  dateStyle: 'long',
251
- calendar: startDate.calendar.identifier
252
+ calendar: startDate.calendar.identifier,
253
+ timeZone: timeZone
252
254
  });
253
255
  return $jzHdg$react.useMemo(()=>{
254
256
  // Special case for month granularity. Format as a single month if only a
@@ -271,6 +273,7 @@ function $df1d8e967e73ec8e$export$31afe65d91ef6e8(startDate, endDate, timeZone)
271
273
 
272
274
 
273
275
 
276
+
274
277
  function $02ef492a56b91cb2$export$d652b3ea2d672d5b(props, state) {
275
278
  let formatMessage = $jzHdg$reactariai18n.useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($f87cd00fb2ba0f23$exports)));
276
279
  let calendarId = $jzHdg$reactariautils.useId(props.id);
@@ -293,6 +296,19 @@ function $02ef492a56b91cb2$export$d652b3ea2d672d5b(props, state) {
293
296
  let descriptionProps = $jzHdg$reactariautils.useDescription(visibleRangeDescription);
294
297
  // Label the child grid elements by the group element if it is labelled.
295
298
  $df1d8e967e73ec8e$export$3ddff89c59628ee7.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);
299
+ // If the next or previous buttons become disabled while they are focused, move focus to the calendar body.
300
+ let nextFocused = $jzHdg$react.useRef(false);
301
+ let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();
302
+ if (nextDisabled && nextFocused.current) {
303
+ nextFocused.current = false;
304
+ state.setFocused(true);
305
+ }
306
+ let previousFocused = $jzHdg$react.useRef(false);
307
+ let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();
308
+ if (previousDisabled && previousFocused.current) {
309
+ previousFocused.current = false;
310
+ state.setFocused(true);
311
+ }
296
312
  return {
297
313
  calendarProps: $jzHdg$reactariautils.mergeProps(descriptionProps, {
298
314
  role: 'group',
@@ -304,13 +320,19 @@ function $02ef492a56b91cb2$export$d652b3ea2d672d5b(props, state) {
304
320
  onPress: ()=>state.focusNextPage()
305
321
  ,
306
322
  'aria-label': formatMessage('next'),
307
- isDisabled: props.isDisabled || state.isNextVisibleRangeInvalid()
323
+ isDisabled: nextDisabled,
324
+ onFocus: ()=>nextFocused.current = true
325
+ ,
326
+ onBlur: ()=>nextFocused.current = false
308
327
  },
309
328
  prevButtonProps: {
310
329
  onPress: ()=>state.focusPreviousPage()
311
330
  ,
312
331
  'aria-label': formatMessage('previous'),
313
- isDisabled: props.isDisabled || state.isPreviousVisibleRangeInvalid()
332
+ isDisabled: previousDisabled,
333
+ onFocus: ()=>previousFocused.current = true
334
+ ,
335
+ onBlur: ()=>previousFocused.current = false
314
336
  },
315
337
  title: visibleRangeDescription
316
338
  };
@@ -354,7 +376,7 @@ function $c49ada48cbc48220$export$87e0539f600c24e5(props, state, ref2) {
354
376
  if (!state.anchorDate) return;
355
377
  let target = e.target;
356
378
  let body = document.getElementById(res.calendarProps.id);
357
- if ((!body.contains(target) || target.getAttribute('role') !== 'button') && !((ref = document.getElementById(res.nextButtonProps.id)) === null || ref === void 0 ? void 0 : ref.contains(target)) && !((ref1 = document.getElementById(res.prevButtonProps.id)) === null || ref1 === void 0 ? void 0 : ref1.contains(target))) state.selectFocusedDate();
379
+ if ((!body.contains(target) || !target.closest('[role="button"]')) && !((ref = document.getElementById(res.nextButtonProps.id)) === null || ref === void 0 ? void 0 : ref.contains(target)) && !((ref1 = document.getElementById(res.prevButtonProps.id)) === null || ref1 === void 0 ? void 0 : ref1.contains(target))) state.selectFocusedDate();
358
380
  };
359
381
  $jzHdg$reactariautils.useEvent($jzHdg$react.useRef(window), 'pointerup', endDragging);
360
382
  $jzHdg$reactariautils.useEvent($jzHdg$react.useRef(window), 'pointercancel', endDragging);
@@ -439,10 +461,12 @@ function $a07388a797d86b95$export$cb95147730a423f5(props, state) {
439
461
  'aria-labelledby': $df1d8e967e73ec8e$export$3ddff89c59628ee7.get(state)
440
462
  });
441
463
  let dayFormatter = $jzHdg$reactariai18n.useDateFormatter({
442
- weekday: 'narrow'
464
+ weekday: 'narrow',
465
+ timeZone: state.timeZone
443
466
  });
444
467
  let dayFormatterLong = $jzHdg$reactariai18n.useDateFormatter({
445
- weekday: 'long'
468
+ weekday: 'long',
469
+ timeZone: state.timeZone
446
470
  });
447
471
  let { locale: locale } = $jzHdg$reactariai18n.useLocale();
448
472
  let weekStart = $jzHdg$internationalizeddate.startOfWeek(state.visibleRange.start, locale);
@@ -500,6 +524,8 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
500
524
  let isSelected = state.isSelected(date);
501
525
  let isFocused = state.isCellFocused(date);
502
526
  isDisabled = isDisabled || state.isCellDisabled(date);
527
+ let isUnavailable = state.isCellUnavailable(date);
528
+ let isSelectable = !isDisabled && !isUnavailable;
503
529
  // For performance, reuse the same date object as before if the new date prop is the same.
504
530
  // This allows subsequent useMemo results to be reused.
505
531
  let lastDate = $jzHdg$react.useRef(null);
@@ -531,7 +557,7 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
531
557
  ]);
532
558
  // When a cell is focused and this is a range calendar, add a prompt to help
533
559
  // screenreader users know that they are in a range selection mode.
534
- if ('anchorDate' in state && isFocused && !state.isReadOnly) {
560
+ if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {
535
561
  let rangeSelectionPrompt = '';
536
562
  // If selection has started add "click to finish selecting range"
537
563
  if (state.anchorDate) rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');
@@ -547,7 +573,7 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
547
573
  // again to trigger onPressStart. Cancel presses immediately when the pointer exits.
548
574
  shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,
549
575
  preventFocusOnPress: true,
550
- isDisabled: isDisabled,
576
+ isDisabled: !isSelectable,
551
577
  onPressStart (e) {
552
578
  if (state.isReadOnly) {
553
579
  state.setFocusedDate(date);
@@ -624,7 +650,10 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
624
650
  let nextDay = date.add({
625
651
  days: 1
626
652
  });
627
- if ($jzHdg$internationalizeddate.isSameMonth(date, nextDay)) state.setFocusedDate(nextDay);
653
+ if (state.isInvalid(nextDay)) nextDay = date.subtract({
654
+ days: 1
655
+ });
656
+ if (!state.isInvalid(nextDay)) state.setFocusedDate(nextDay);
628
657
  } else if (e.pointerType === 'virtual') {
629
658
  // For screen readers, just select the date on click.
630
659
  state.selectDate(date);
@@ -655,8 +684,8 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
655
684
  return {
656
685
  cellProps: {
657
686
  role: 'gridcell',
658
- 'aria-disabled': isDisabled || null,
659
- 'aria-selected': isSelected
687
+ 'aria-disabled': !isSelectable || null,
688
+ 'aria-selected': isSelectable ? isSelected : null
660
689
  },
661
690
  buttonProps: $jzHdg$reactariautils.mergeProps(pressProps, {
662
691
  onFocus () {
@@ -664,11 +693,11 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
664
693
  },
665
694
  tabIndex: tabIndex,
666
695
  role: 'button',
667
- 'aria-disabled': isDisabled || null,
696
+ 'aria-disabled': !isSelectable || null,
668
697
  'aria-label': label,
669
698
  onPointerEnter (e) {
670
699
  // Highlight the date on hover or drag over a date when selecting a range.
671
- if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging)) state.highlightDate(date);
700
+ if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) state.highlightDate(date);
672
701
  },
673
702
  onPointerDown (e) {
674
703
  // This is necessary on touch devices to allow dragging
@@ -685,6 +714,7 @@ function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
685
714
  isFocused: isFocused,
686
715
  isSelected: isSelected,
687
716
  isDisabled: isDisabled,
717
+ isUnavailable: isUnavailable,
688
718
  isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,
689
719
  formattedDate: formattedDate
690
720
  };
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","packages/@react-aria/calendar/src/types.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 * from './useCalendar';\nexport * from './useRangeCalendar';\nexport * from './useCalendarGrid';\nexport * from './useCalendarCell';\nexport * from './types';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CalendarAria} from './types';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from '@react-stately/calendar';\nimport {useCalendarBase} from './useCalendarBase';\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 {CalendarAria} from './types';\nimport {calendarIds, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {CalendarPropsBase} from '@react-types/calendar';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {DOMProps} from '@react-types/shared';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps, useDescription, useId, useUpdateEffect} from '@react-aria/utils';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\nexport function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {\n let formatMessage = useMessageFormatter(intlMessages);\n let calendarId = useId(props.id);\n\n let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone);\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 descriptionProps = useDescription(visibleRangeDescription);\n\n // Label the child grid elements by the group element if it is labelled.\n calendarIds.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);\n\n return {\n calendarProps: mergeProps(descriptionProps, {\n role: 'group',\n id: calendarId,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby']\n }),\n nextButtonProps: {\n onPress: () => state.focusNextPage(),\n 'aria-label': formatMessage('next'),\n isDisabled: props.isDisabled || state.isNextVisibleRangeInvalid()\n },\n prevButtonProps: {\n onPress: () => state.focusPreviousPage(),\n 'aria-label': formatMessage('previous'),\n isDisabled: props.isDisabled || state.isPreviousVisibleRangeInvalid()\n },\n title: visibleRangeDescription\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, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\nimport {useMemo} from 'react';\n\nexport const calendarIds = new WeakMap<CalendarState | RangeCalendarState, string>();\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 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 return formatMessage('selectedDateDescription', {date: start.toDate(state.timeZone)});\n } else {\n return formatMessage('selectedRangeDescription', {start: start.toDate(state.timeZone), end: end.toDate(state.timeZone)});\n }\n }\n return '';\n }, [start, end, anchorDate, state.timeZone, formatMessage]);\n}\n\nexport function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string) {\n let monthFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,\n calendar: startDate.calendar.identifier\n });\n\n let dateFormatter = useDateFormatter({\n dateStyle: 'long',\n calendar: startDate.calendar.identifier\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 monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }\n }\n\n return dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }, [startDate, endDate, monthFormatter, dateFormatter, timeZone]);\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 \"dateSelected\": \"تم تحديد {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n \"next\": \"التالي\",\n \"previous\": \"السابق\",\n \"selectedDateDescription\": \"التاريخ المحدد: {date, date, full}\",\n \"selectedRangeDescription\": \"النطاق المحدد: {start, date, long} إلى {end, date, long}\",\n \"startRangeSelectionPrompt\": \"انقر لبدء عملية تحديد نطاق التاريخ\",\n \"todayDate\": \"اليوم، {date, date, full}\",\n \"todayDateSelected\": \"اليوم، تم تحديد {date, date, full}\"\n}\n","{\n \"dateSelected\": \"избрани {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Натиснете, за да довършите избора на времеви интервал\",\n \"next\": \"Напред\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Избрана дата: {date, date, full}\",\n \"selectedRangeDescription\": \"Избран интервал: от {start, date, long} до {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Натиснете, за да пристъпите към избора на времеви интервал\",\n \"todayDate\": \"Днес {date, date, full}\",\n \"todayDateSelected\": \"Днес са избрани {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Vybráno: {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výběr rozsahu dat\",\n \"next\": \"Další\",\n \"previous\": \"Předchozí\",\n \"selectedDateDescription\": \"Zvolené datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Zvolený rozsah: {start, date, long} až {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknutím zahájíte výběr rozsahu dat\",\n \"todayDate\": \"Dnes, {date, date, full}\",\n \"todayDateSelected\": \"Vybrán dnešek: {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valgt\",\n \"finishRangeSelectionPrompt\": \"Klik for at fuldføre valg af datoområde\",\n \"next\": \"Næste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date, date, full}\",\n \"selectedRangeDescription\": \"Valgt område: {start, date, long} til {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klik for at starte valg af datoområde\",\n \"todayDate\": \"I dag, {date, date, full}\",\n \"todayDateSelected\": \"I dag, {date, date, full} valgt\"\n}\n","{\n \"dateSelected\": \"{date, date, full} ausgewählt\",\n \"finishRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n \"next\": \"Weiter\",\n \"previous\": \"Zurück\",\n \"selectedDateDescription\": \"Ausgewähltes Datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Bereich auswählen: {start, date, long} bis {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n \"todayDate\": \"Heute, {date, date, full}\",\n \"todayDateSelected\": \"Heute, {date, date, full} ausgewählt\"\n}\n","{\n \"dateSelected\": \"Επιλέχτηκε {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n \"next\": \"Επόμενο\",\n \"previous\": \"Προηγούμενο\",\n \"selectedDateDescription\": \"Επιλεγμένη ημερομηνία: {date, date, full}\",\n \"selectedRangeDescription\": \"Επιλεγμένο εύρος: {start, date, long} έως {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n \"todayDate\": \"Σήμερα, {date, date, full}\",\n \"todayDateSelected\": \"Σήμερα, επιλέχτηκε {date, date, full}\"\n}\n","{\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"selectedDateDescription\": \"Selected Date: {date, date, full}\",\n \"selectedRangeDescription\": \"Selected Range: {start, date, long} to {end, date, long}\",\n \"todayDate\": \"Today, {date, date, full}\",\n \"todayDateSelected\": \"Today, {date, date, full} selected\",\n \"dateSelected\": \"{date, date, full} selected\",\n \"startRangeSelectionPrompt\": \"Click to start selecting date range\",\n \"finishRangeSelectionPrompt\": \"Click to finish selecting date range\"\n}\n","{\n \"dateSelected\": \"{date, date, full} seleccionado\",\n \"finishRangeSelectionPrompt\": \"Haga clic para terminar de seleccionar rango de fechas\",\n \"next\": \"Siguiente\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Fecha seleccionada: {date, date, full}\",\n \"selectedRangeDescription\": \"Seleccionar rango: {start, date, long} a {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Haga clic para comenzar a seleccionar un rango de fechas\",\n \"todayDate\": \"Hoy, {date, date, full}\",\n \"todayDateSelected\": \"Hoy, {date, date, full} seleccionado\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valitud\",\n \"finishRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n \"next\": \"Järgmine\",\n \"previous\": \"Eelmine\",\n \"selectedDateDescription\": \"Valitud kuupäev: {date, date, full}\",\n \"selectedRangeDescription\": \"Valitud vahemik: {start, date, long} kuni {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimiseks\",\n \"todayDate\": \"Täna {date, date, full}\",\n \"todayDateSelected\": \"Täna {date, date, full} valitud\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valittu\",\n \"finishRangeSelectionPrompt\": \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n \"next\": \"Seuraava\",\n \"previous\": \"Edellinen\",\n \"selectedDateDescription\": \"Valittu päivämäärä: {date, date, full}\",\n \"selectedRangeDescription\": \"Valittu alue: {start, date, long} - {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n \"todayDate\": \"Tänään, {date, date, full}\",\n \"todayDateSelected\": \"Tänään, {date, date, full} valittu\"\n}\n","{\n \"dateSelected\": \"{date, date, full} sélectionné\",\n \"finishRangeSelectionPrompt\": \"Cliquer pour finir de sélectionner la plage de dates\",\n \"next\": \"Suivant\",\n \"previous\": \"Précédent\",\n \"selectedDateDescription\": \"Date sélectionnée : {date, date, full}\",\n \"selectedRangeDescription\": \"Plage sélectionnée : {start, date, long} à {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Cliquer pour commencer à sélectionner la plage de dates\",\n \"todayDate\": \"Aujourd’hui, {date, date, full}\",\n \"todayDateSelected\": \"Aujourd’hui, {date, date, full} sélectionné\"\n}\n","{\n \"dateSelected\": \"התאריך {date, date, full} שנבחר\",\n \"finishRangeSelectionPrompt\": \"חץ כדי לסיים את בחירת טווח התאריכים\",\n \"next\": \"הבא\",\n \"previous\": \"הקודם\",\n \"selectedDateDescription\": \"התאריך שנבחר: {date, date, full}\",\n \"selectedRangeDescription\": \"הטווח שנבחר: מ-{start, date, long} ועד {end, date, long}\",\n \"startRangeSelectionPrompt\": \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n \"todayDate\": \"היום, {date, date, full}\",\n \"todayDateSelected\": \"היום, התאריך {date, date, full} שנבחר\"\n}\n","{\n \"dateSelected\": \"Odabran {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite raspon odabranih datuma\",\n \"next\": \"Sljedeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Odabrani datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Odabrani raspon: od {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete raspon odabranih datuma\",\n \"todayDate\": \"Danas, {date, date, full}\",\n \"todayDateSelected\": \"Danas, odabran {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} kijelölve\",\n \"finishRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n \"next\": \"Következő\",\n \"previous\": \"Előző\",\n \"selectedDateDescription\": \"Kijelölt dátum: {date, date, full}\",\n \"selectedRangeDescription\": \"Kijelölt tartomány: {start, date, long} – {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének indításához\",\n \"todayDate\": \"Ma, {date, date, full}\",\n \"todayDateSelected\": \"Ma, {date, date, full} kijelölve\"\n}\n","{\n \"dateSelected\": \"{date, date, full} selezionato\",\n \"finishRangeSelectionPrompt\": \"Fai clic per completare la selezione dell’intervallo di date\",\n \"next\": \"Successivo\",\n \"previous\": \"Precedente\",\n \"selectedDateDescription\": \"Data selezionata: {date, date, full}\",\n \"selectedRangeDescription\": \"Intervallo selezionato: da {start, date, long} a {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Fai clic per selezionare l’intervallo di date\",\n \"todayDate\": \"Oggi, {date, date, full}\",\n \"todayDateSelected\": \"Oggi, {date, date, full} selezionato\"\n}\n","{\n \"dateSelected\": \"{date, date, full} を選択\",\n \"finishRangeSelectionPrompt\": \"クリックして日付範囲の選択を終了\",\n \"next\": \"次へ\",\n \"previous\": \"前へ\",\n \"selectedDateDescription\": \"日付を選択:{date, date, full}\",\n \"selectedRangeDescription\": \"範囲を選択:{start, date, long} から {end, date, long}\",\n \"startRangeSelectionPrompt\": \"クリックして日付範囲の選択を開始\",\n \"todayDate\": \"本日、{date, date, full}\",\n \"todayDateSelected\": \"本日、{date, date, full} を選択\"\n}\n","{\n \"dateSelected\": \"{date, date, full} 선택함\",\n \"finishRangeSelectionPrompt\": \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n \"next\": \"다음\",\n \"previous\": \"이전\",\n \"selectedDateDescription\": \"선택한 날짜: {date, date, full}\",\n \"selectedRangeDescription\": \"선택한 범위: {start, date, long} ~ {end, date, long}\",\n \"startRangeSelectionPrompt\": \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n \"todayDate\": \"오늘, {date, date, full}\",\n \"todayDateSelected\": \"오늘, {date, date, full} 선택함\"\n}\n","{\n \"dateSelected\": \"Pasirinkta {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n \"next\": \"Paskesnis\",\n \"previous\": \"Ankstesnis\",\n \"selectedDateDescription\": \"Pasirinkta data: {date, date, full}\",\n \"selectedRangeDescription\": \"Pasirinktas intervalas: nuo {start, date, long} iki {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n \"todayDate\": \"Šiandien, {date, date, full}\",\n \"todayDateSelected\": \"Šiandien, pasirinkta {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Atlasīts {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n \"next\": \"Tālāk\",\n \"previous\": \"Atpakaļ\",\n \"selectedDateDescription\": \"Atlasītais datums: {date, date, full}\",\n \"selectedRangeDescription\": \"Atlasītais diapazons: {start, date, long} līdz {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n \"todayDate\": \"Šodiena, {date, date, full}\",\n \"todayDateSelected\": \"Atlasīta šodiena, {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valgt\",\n \"finishRangeSelectionPrompt\": \"Klikk for å fullføre valg av datoområde\",\n \"next\": \"Neste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date, date, full}\",\n \"selectedRangeDescription\": \"Valgt område: {start, date, long} til {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klikk for å starte valg av datoområde\",\n \"todayDate\": \"I dag, {date, date, full}\",\n \"todayDateSelected\": \"I dag, {date, date, full} valgt\"\n}\n","{\n \"dateSelected\": \"{date, date, full} geselecteerd\",\n \"finishRangeSelectionPrompt\": \"Klik om de selectie van het datumbereik te voltooien\",\n \"next\": \"Volgende\",\n \"previous\": \"Vorige\",\n \"selectedDateDescription\": \"Geselecteerde datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Geselecteerd bereik: {start, date, long} t/m {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klik om het datumbereik te selecteren\",\n \"todayDate\": \"Vandaag, {date, date, full}\",\n \"todayDateSelected\": \"Vandaag, {date, date, full} geselecteerd\"\n}\n","{\n \"dateSelected\": \"Wybrano {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknij, aby zakończyć wybór zakresu dat\",\n \"next\": \"Dalej\",\n \"previous\": \"Wstecz\",\n \"selectedDateDescription\": \"Wybrana data: {date, date, full}\",\n \"selectedRangeDescription\": \"Wybrany zakres: {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknij, aby rozpocząć wybór zakresu dat\",\n \"todayDate\": \"Dzisiaj {date, date, full}\",\n \"todayDateSelected\": \"Dzisiaj wybrano {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para concluir a seleção do intervalo de datas\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date, date, full}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {start, date, long} até {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Clique para iniciar a seleção do intervalo de datas\",\n \"todayDate\": \"Hoje, {date, date, full}\",\n \"todayDateSelected\": \"Hoje, {date, date, full} selecionado\"\n}\n","{\n \"dateSelected\": \"{data, data, completo} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para terminar de selecionar o intervalo de datas\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data Selecionada: {data, data, completo}\",\n \"selectedRangeDescription\": \"Selecionar Intervalo: {início, data, longo} a {término, data, longo}\",\n \"startRangeSelectionPrompt\": \"Clique para começar a selecionar o intervalo de datas\",\n \"todayDate\": \"Hoje, {date, date, full}\",\n \"todayDateSelected\": \"Hoje, {date, date, full} selecionado\"\n}\n","{\n \"dateSelected\": \"{date, date, full} selectată\",\n \"finishRangeSelectionPrompt\": \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n \"next\": \"Următorul\",\n \"previous\": \"Înainte\",\n \"selectedDateDescription\": \"Dată selectată: {date, date, full}\",\n \"selectedRangeDescription\": \"Selectaţi raza: {start, date, long} la {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n \"todayDate\": \"Astăzi, {date, date, full}\",\n \"todayDateSelected\": \"Dată, {date, date, full} selectată\"\n}\n","{\n \"dateSelected\": \"выбрано {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Щелкните, чтобы завершить выбор диапазона дат\",\n \"next\": \"Далее\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Выбранная дата: {date, date, full}\",\n \"selectedRangeDescription\": \"Выбранный диапазон: {start, date, long} – {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Щелкните, чтобы начать выбор диапазона дат\",\n \"todayDate\": \"Сегодня, {date, date, full}\",\n \"todayDateSelected\": \"Сегодня, выбрано {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Vybratý dátum {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výber rozsahu dátumov\",\n \"next\": \"Nasledujúce\",\n \"previous\": \"Predchádzajúce\",\n \"selectedDateDescription\": \"Vybratý dátum: {date, date, full}\",\n \"selectedRangeDescription\": \"Vybratý rozsah dátumov: {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknutím spustíte výber rozsahu dátumov\",\n \"todayDate\": \"Dnešný dátum, {date, date, full}\",\n \"todayDateSelected\": \"Vybratý dnešný dátum, {date, date, full}\"\n}\n","{\n \"dateSelected\": \"izbrano: {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknite za dokončanje izbire datumskega obsega\",\n \"next\": \"Naprej\",\n \"previous\": \"Nazaj\",\n \"selectedDateDescription\": \"Izbrani datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Izbrani razpon: {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknite za začetek izbire datumskega obsega\",\n \"todayDate\": \"Danes, {date, date, full}\",\n \"todayDateSelected\": \"Danes, izbrano: {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Izabran {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite opseg izabranih datuma\",\n \"next\": \"Sledeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Izabrani datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Izabrani opseg: od {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete opseg izabranih datuma\",\n \"todayDate\": \"Danas, {date, date, full}\",\n \"todayDateSelected\": \"Danas, izabran {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} har valts\",\n \"finishRangeSelectionPrompt\": \"Klicka för att avsluta val av datumintervall\",\n \"next\": \"Nästa\",\n \"previous\": \"Föregående\",\n \"selectedDateDescription\": \"Valt datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Valt intervall: {start, date, long} till {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klicka för att välja datumintervall\",\n \"todayDate\": \"I dag, {date, date, full}\",\n \"todayDateSelected\": \"I dag, {date, date, full} har valts\"\n}\n","{\n \"dateSelected\": \"{date, date, full} seçildi\",\n \"finishRangeSelectionPrompt\": \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n \"next\": \"Sonraki\",\n \"previous\": \"Önceki\",\n \"selectedDateDescription\": \"Seçili Tarih: {date, date, full}\",\n \"selectedRangeDescription\": \"Seçili Aralık: {start, date, long} - {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Tarih aralığı seçimini başlatmak için tıklayın\",\n \"todayDate\": \"Bugün, {date, date, full}\",\n \"todayDateSelected\": \"Bugün, {date, date, full} seçildi\"\n}\n","{\n \"dateSelected\": \"Вибрано: {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Натисніть, щоб завершити вибір діапазону дат\",\n \"next\": \"Наступний\",\n \"previous\": \"Попередній\",\n \"selectedDateDescription\": \"Вибрана дата: {date, date, full}\",\n \"selectedRangeDescription\": \"Вибраний діапазон: від {start, date, long} до {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Натисніть, щоб почати вибір діапазону дат\",\n \"todayDate\": \"Сьогодні: {date, date, full}\",\n \"todayDateSelected\": \"Сьогодні вибрано: {date, date, full}\"\n}\n","{\n \"dateSelected\": \"已选择 {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"单击以完成选择日期范围\",\n \"next\": \"下一页\",\n \"previous\": \"上一页\",\n \"selectedDateDescription\": \"选定的日期: {date, date, full}\",\n \"selectedRangeDescription\": \"选定的范围: {start, date, long} 到 {end, date, long}\",\n \"startRangeSelectionPrompt\": \"单击以开始选择日期范围\",\n \"todayDate\": \"今天({date, date, full})\",\n \"todayDateSelected\": \"已选择今天({date, date, full})\"\n}\n","{\n \"dateSelected\": \"已選取 {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"按一下以完成選取日期範圍\",\n \"next\": \"下一頁\",\n \"previous\": \"上一頁\",\n \"selectedDateDescription\": \"選取日期: {date, date, full}\",\n \"selectedRangeDescription\": \"選取範圍: {start, date, long} 至 {end, date, long}\",\n \"startRangeSelectionPrompt\": \"按一下以開始選取日期範圍\",\n \"todayDate\": \"今日,{date, date, full}\",\n \"todayDateSelected\": \"今日,已選取 {date, date, full}\"\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} from './types';\nimport {DateValue, RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from '@react-stately/calendar';\nimport {RefObject, useRef} from 'react';\nimport {useCalendarBase} from './useCalendarBase';\nimport {useEvent, useId} 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 res.nextButtonProps.id = useId();\n res.prevButtonProps.id = useId();\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 useEvent(useRef(window), '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.contains(target) || target.getAttribute('role') !== 'button') &&\n !document.getElementById(res.nextButtonProps.id)?.contains(target) &&\n !document.getElementById(res.prevButtonProps.id)?.contains(target)\n ) {\n state.selectFocusedDate();\n }\n };\n\n useEvent(useRef(window), 'pointerup', endDragging);\n useEvent(useRef(window), 'pointercancel', endDragging);\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} from '@internationalized/date';\nimport {CalendarGridAria} from './types';\nimport {calendarIds, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {KeyboardEvent} from 'react';\nimport {mergeProps, useDescription, useLabels} from '@react-aria/utils';\nimport {useDateFormatter, useLocale} from '@react-aria/i18n';\n\ninterface CalendarGridProps {\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\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: CalendarGridProps, 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 if (e.shiftKey) {\n state.focusPreviousSection();\n } else {\n state.focusPreviousPage();\n }\n break;\n case 'PageDown':\n e.preventDefault();\n if (e.shiftKey) {\n state.focusNextSection();\n } else {\n state.focusNextPage();\n }\n break;\n case 'End':\n e.preventDefault();\n state.focusPageEnd();\n break;\n case 'Home':\n e.preventDefault();\n state.focusPageStart();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n if (direction === 'rtl') {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n state.focusPreviousRow();\n break;\n case 'ArrowRight':\n e.preventDefault();\n if (direction === 'rtl') {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\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 selectedDateDescription = useSelectedDateDescription(state);\n let descriptionProps = useDescription(selectedDateDescription);\n let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone);\n\n let labelProps = useLabels({\n 'aria-label': visibleRangeDescription,\n 'aria-labelledby': calendarIds.get(state)\n });\n\n let dayFormatter = useDateFormatter({weekday: 'narrow'});\n let dayFormatterLong = useDateFormatter({weekday: 'long'});\n let {locale} = useLocale();\n let weekStart = startOfWeek(state.visibleRange.start, locale);\n let weekDays = [...new Array(7).keys()].map((index) => {\n let date = weekStart.add({days: index});\n let dateDay = date.toDate(state.timeZone);\n let narrow = dayFormatter.format(dateDay);\n let long = dayFormatterLong.format(dateDay);\n return {\n narrow,\n long\n };\n });\n\n return {\n gridProps: mergeProps(descriptionProps, 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 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, isSameMonth, isToday} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {focusWithoutScrolling} from '@react-aria/utils';\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';\nimport {usePress} from '@react-aria/interactions';\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\ninterface 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 /** Whether the cell is disabled. */\n isDisabled: 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 /** 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 formatMessage = useMessageFormatter(intlMessages);\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n era: date.calendar.identifier !== 'gregory' ? 'long' : undefined,\n timeZone: state.timeZone\n });\n let isSelected = state.isSelected(date);\n let isFocused = state.isCellFocused(date);\n isDisabled = isDisabled || state.isCellDisabled(date);\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 if (isDateToday) {\n // If date is today, set appropriate string depending on selected state:\n return formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {\n date: nativeDate\n });\n } else if (isSelected) {\n // If date is selected but not today:\n return formatMessage('dateSelected', {\n date: nativeDate\n });\n }\n\n return dateFormatter.format(nativeDate);\n }, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday]);\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 if ('anchorDate' in state && isFocused && !state.isReadOnly) {\n let rangeSelectionPrompt = '';\n\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 // Append to aria-label\n if (rangeSelectionPrompt) {\n label = `${label} (${rangeSelectionPrompt})`;\n }\n }\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,\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 if (state.highlightedRange) {\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 (isSameMonth(date, 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 }, [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': isDisabled || null,\n 'aria-selected': isSelected\n },\n buttonProps: mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': isDisabled || null,\n 'aria-label': label,\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)) {\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 isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,\n formattedDate\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 {AriaButtonProps} from '@react-types/button';\nimport {HTMLAttributes} from 'react';\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 /** A description of the visible date range, for use in the calendar title. */\n title: string\n}\n\n\nexport interface CalendarGridAria {\n /** Props for the date grid element (e.g. `<table>`). */\n gridProps: HTMLAttributes<HTMLElement>,\n /** A list of week days formatted for the current locale, typically used in column headers. */\n weekDays: WeekDay[]\n}\n\ninterface WeekDay {\n /** A short name (e.g. single letter) for the day. */\n narrow: string,\n /** The full day name. If not displayed visually, it should be used as the accessiblity name. */\n long: string\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","packages/@react-aria/calendar/src/types.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 * from './useCalendar';\nexport * from './useRangeCalendar';\nexport * from './useCalendarGrid';\nexport * from './useCalendarCell';\nexport * from './types';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CalendarAria} from './types';\nimport {CalendarProps, DateValue} from '@react-types/calendar';\nimport {CalendarState} from '@react-stately/calendar';\nimport {useCalendarBase} from './useCalendarBase';\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 {CalendarAria} from './types';\nimport {calendarIds, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {CalendarPropsBase} from '@react-types/calendar';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {DOMProps} from '@react-types/shared';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps, useDescription, useId, useUpdateEffect} from '@react-aria/utils';\nimport {useMessageFormatter} from '@react-aria/i18n';\nimport {useRef} from 'react';\n\nexport function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {\n let formatMessage = useMessageFormatter(intlMessages);\n let calendarId = useId(props.id);\n\n let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone);\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 descriptionProps = useDescription(visibleRangeDescription);\n\n // Label the child grid elements by the group element if it is labelled.\n calendarIds.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);\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 return {\n calendarProps: mergeProps(descriptionProps, {\n role: 'group',\n id: calendarId,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby']\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 title: visibleRangeDescription\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, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';\nimport {useMemo} from 'react';\n\nexport const calendarIds = new WeakMap<CalendarState | RangeCalendarState, string>();\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 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 return formatMessage('selectedDateDescription', {date: start.toDate(state.timeZone)});\n } else {\n return formatMessage('selectedRangeDescription', {start: start.toDate(state.timeZone), end: end.toDate(state.timeZone)});\n }\n }\n return '';\n }, [start, end, anchorDate, state.timeZone, formatMessage]);\n}\n\nexport function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string) {\n let monthFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,\n calendar: startDate.calendar.identifier,\n timeZone\n });\n\n let dateFormatter = useDateFormatter({\n dateStyle: 'long',\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 monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }\n }\n\n return dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));\n }, [startDate, endDate, monthFormatter, dateFormatter, timeZone]);\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 \"dateSelected\": \"تم تحديد {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"انقر لإنهاء عملية تحديد نطاق التاريخ\",\n \"next\": \"التالي\",\n \"previous\": \"السابق\",\n \"selectedDateDescription\": \"التاريخ المحدد: {date, date, full}\",\n \"selectedRangeDescription\": \"النطاق المحدد: {start, date, long} إلى {end, date, long}\",\n \"startRangeSelectionPrompt\": \"انقر لبدء عملية تحديد نطاق التاريخ\",\n \"todayDate\": \"اليوم، {date, date, full}\",\n \"todayDateSelected\": \"اليوم، تم تحديد {date, date, full}\"\n}\n","{\n \"dateSelected\": \"избрани {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Натиснете, за да довършите избора на времеви интервал\",\n \"next\": \"Напред\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Избрана дата: {date, date, full}\",\n \"selectedRangeDescription\": \"Избран интервал: от {start, date, long} до {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Натиснете, за да пристъпите към избора на времеви интервал\",\n \"todayDate\": \"Днес {date, date, full}\",\n \"todayDateSelected\": \"Днес са избрани {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Vybráno: {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výběr rozsahu dat\",\n \"next\": \"Další\",\n \"previous\": \"Předchozí\",\n \"selectedDateDescription\": \"Zvolené datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Zvolený rozsah: {start, date, long} až {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknutím zahájíte výběr rozsahu dat\",\n \"todayDate\": \"Dnes, {date, date, full}\",\n \"todayDateSelected\": \"Vybrán dnešek: {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valgt\",\n \"finishRangeSelectionPrompt\": \"Klik for at fuldføre valg af datoområde\",\n \"next\": \"Næste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date, date, full}\",\n \"selectedRangeDescription\": \"Valgt område: {start, date, long} til {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klik for at starte valg af datoområde\",\n \"todayDate\": \"I dag, {date, date, full}\",\n \"todayDateSelected\": \"I dag, {date, date, full} valgt\"\n}\n","{\n \"dateSelected\": \"{date, date, full} ausgewählt\",\n \"finishRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\n \"next\": \"Weiter\",\n \"previous\": \"Zurück\",\n \"selectedDateDescription\": \"Ausgewähltes Datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Bereich auswählen: {start, date, long} bis {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\n \"todayDate\": \"Heute, {date, date, full}\",\n \"todayDateSelected\": \"Heute, {date, date, full} ausgewählt\"\n}\n","{\n \"dateSelected\": \"Επιλέχτηκε {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\n \"next\": \"Επόμενο\",\n \"previous\": \"Προηγούμενο\",\n \"selectedDateDescription\": \"Επιλεγμένη ημερομηνία: {date, date, full}\",\n \"selectedRangeDescription\": \"Επιλεγμένο εύρος: {start, date, long} έως {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\n \"todayDate\": \"Σήμερα, {date, date, full}\",\n \"todayDateSelected\": \"Σήμερα, επιλέχτηκε {date, date, full}\"\n}\n","{\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"selectedDateDescription\": \"Selected Date: {date, date, full}\",\n \"selectedRangeDescription\": \"Selected Range: {start, date, long} to {end, date, long}\",\n \"todayDate\": \"Today, {date, date, full}\",\n \"todayDateSelected\": \"Today, {date, date, full} selected\",\n \"dateSelected\": \"{date, date, full} selected\",\n \"startRangeSelectionPrompt\": \"Click to start selecting date range\",\n \"finishRangeSelectionPrompt\": \"Click to finish selecting date range\"\n}\n","{\n \"dateSelected\": \"{date, date, full} seleccionado\",\n \"finishRangeSelectionPrompt\": \"Haga clic para terminar de seleccionar rango de fechas\",\n \"next\": \"Siguiente\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Fecha seleccionada: {date, date, full}\",\n \"selectedRangeDescription\": \"Seleccionar rango: {start, date, long} a {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Haga clic para comenzar a seleccionar un rango de fechas\",\n \"todayDate\": \"Hoy, {date, date, full}\",\n \"todayDateSelected\": \"Hoy, {date, date, full} seleccionado\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valitud\",\n \"finishRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\n \"next\": \"Järgmine\",\n \"previous\": \"Eelmine\",\n \"selectedDateDescription\": \"Valitud kuupäev: {date, date, full}\",\n \"selectedRangeDescription\": \"Valitud vahemik: {start, date, long} kuni {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klõpsake kuupäevavahemiku valimiseks\",\n \"todayDate\": \"Täna {date, date, full}\",\n \"todayDateSelected\": \"Täna {date, date, full} valitud\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valittu\",\n \"finishRangeSelectionPrompt\": \"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\n \"next\": \"Seuraava\",\n \"previous\": \"Edellinen\",\n \"selectedDateDescription\": \"Valittu päivämäärä: {date, date, full}\",\n \"selectedRangeDescription\": \"Valittu alue: {start, date, long} - {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\n \"todayDate\": \"Tänään, {date, date, full}\",\n \"todayDateSelected\": \"Tänään, {date, date, full} valittu\"\n}\n","{\n \"dateSelected\": \"{date, date, full} sélectionné\",\n \"finishRangeSelectionPrompt\": \"Cliquer pour finir de sélectionner la plage de dates\",\n \"next\": \"Suivant\",\n \"previous\": \"Précédent\",\n \"selectedDateDescription\": \"Date sélectionnée : {date, date, full}\",\n \"selectedRangeDescription\": \"Plage sélectionnée : {start, date, long} à {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Cliquer pour commencer à sélectionner la plage de dates\",\n \"todayDate\": \"Aujourd’hui, {date, date, full}\",\n \"todayDateSelected\": \"Aujourd’hui, {date, date, full} sélectionné\"\n}\n","{\n \"dateSelected\": \"התאריך {date, date, full} שנבחר\",\n \"finishRangeSelectionPrompt\": \"חץ כדי לסיים את בחירת טווח התאריכים\",\n \"next\": \"הבא\",\n \"previous\": \"הקודם\",\n \"selectedDateDescription\": \"התאריך שנבחר: {date, date, full}\",\n \"selectedRangeDescription\": \"הטווח שנבחר: מ-{start, date, long} ועד {end, date, long}\",\n \"startRangeSelectionPrompt\": \"לחץ כדי להתחיל בבחירת טווח התאריכים\",\n \"todayDate\": \"היום, {date, date, full}\",\n \"todayDateSelected\": \"היום, התאריך {date, date, full} שנבחר\"\n}\n","{\n \"dateSelected\": \"Odabran {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite raspon odabranih datuma\",\n \"next\": \"Sljedeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Odabrani datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Odabrani raspon: od {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete raspon odabranih datuma\",\n \"todayDate\": \"Danas, {date, date, full}\",\n \"todayDateSelected\": \"Danas, odabran {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} kijelölve\",\n \"finishRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\n \"next\": \"Következő\",\n \"previous\": \"Előző\",\n \"selectedDateDescription\": \"Kijelölt dátum: {date, date, full}\",\n \"selectedRangeDescription\": \"Kijelölt tartomány: {start, date, long} – {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kattintson a dátumtartomány kijelölésének indításához\",\n \"todayDate\": \"Ma, {date, date, full}\",\n \"todayDateSelected\": \"Ma, {date, date, full} kijelölve\"\n}\n","{\n \"dateSelected\": \"{date, date, full} selezionato\",\n \"finishRangeSelectionPrompt\": \"Fai clic per completare la selezione dell’intervallo di date\",\n \"next\": \"Successivo\",\n \"previous\": \"Precedente\",\n \"selectedDateDescription\": \"Data selezionata: {date, date, full}\",\n \"selectedRangeDescription\": \"Intervallo selezionato: da {start, date, long} a {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Fai clic per selezionare l’intervallo di date\",\n \"todayDate\": \"Oggi, {date, date, full}\",\n \"todayDateSelected\": \"Oggi, {date, date, full} selezionato\"\n}\n","{\n \"dateSelected\": \"{date, date, full} を選択\",\n \"finishRangeSelectionPrompt\": \"クリックして日付範囲の選択を終了\",\n \"next\": \"次へ\",\n \"previous\": \"前へ\",\n \"selectedDateDescription\": \"日付を選択:{date, date, full}\",\n \"selectedRangeDescription\": \"範囲を選択:{start, date, long} から {end, date, long}\",\n \"startRangeSelectionPrompt\": \"クリックして日付範囲の選択を開始\",\n \"todayDate\": \"本日、{date, date, full}\",\n \"todayDateSelected\": \"本日、{date, date, full} を選択\"\n}\n","{\n \"dateSelected\": \"{date, date, full} 선택함\",\n \"finishRangeSelectionPrompt\": \"날짜 범위 선택을 완료하려면 클릭하십시오.\",\n \"next\": \"다음\",\n \"previous\": \"이전\",\n \"selectedDateDescription\": \"선택한 날짜: {date, date, full}\",\n \"selectedRangeDescription\": \"선택한 범위: {start, date, long} ~ {end, date, long}\",\n \"startRangeSelectionPrompt\": \"날짜 범위 선택을 시작하려면 클릭하십시오.\",\n \"todayDate\": \"오늘, {date, date, full}\",\n \"todayDateSelected\": \"오늘, {date, date, full} 선택함\"\n}\n","{\n \"dateSelected\": \"Pasirinkta {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\n \"next\": \"Paskesnis\",\n \"previous\": \"Ankstesnis\",\n \"selectedDateDescription\": \"Pasirinkta data: {date, date, full}\",\n \"selectedRangeDescription\": \"Pasirinktas intervalas: nuo {start, date, long} iki {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\n \"todayDate\": \"Šiandien, {date, date, full}\",\n \"todayDateSelected\": \"Šiandien, pasirinkta {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Atlasīts {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\n \"next\": \"Tālāk\",\n \"previous\": \"Atpakaļ\",\n \"selectedDateDescription\": \"Atlasītais datums: {date, date, full}\",\n \"selectedRangeDescription\": \"Atlasītais diapazons: {start, date, long} līdz {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\n \"todayDate\": \"Šodiena, {date, date, full}\",\n \"todayDateSelected\": \"Atlasīta šodiena, {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} valgt\",\n \"finishRangeSelectionPrompt\": \"Klikk for å fullføre valg av datoområde\",\n \"next\": \"Neste\",\n \"previous\": \"Forrige\",\n \"selectedDateDescription\": \"Valgt dato: {date, date, full}\",\n \"selectedRangeDescription\": \"Valgt område: {start, date, long} til {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klikk for å starte valg av datoområde\",\n \"todayDate\": \"I dag, {date, date, full}\",\n \"todayDateSelected\": \"I dag, {date, date, full} valgt\"\n}\n","{\n \"dateSelected\": \"{date, date, full} geselecteerd\",\n \"finishRangeSelectionPrompt\": \"Klik om de selectie van het datumbereik te voltooien\",\n \"next\": \"Volgende\",\n \"previous\": \"Vorige\",\n \"selectedDateDescription\": \"Geselecteerde datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Geselecteerd bereik: {start, date, long} t/m {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klik om het datumbereik te selecteren\",\n \"todayDate\": \"Vandaag, {date, date, full}\",\n \"todayDateSelected\": \"Vandaag, {date, date, full} geselecteerd\"\n}\n","{\n \"dateSelected\": \"Wybrano {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknij, aby zakończyć wybór zakresu dat\",\n \"next\": \"Dalej\",\n \"previous\": \"Wstecz\",\n \"selectedDateDescription\": \"Wybrana data: {date, date, full}\",\n \"selectedRangeDescription\": \"Wybrany zakres: {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknij, aby rozpocząć wybór zakresu dat\",\n \"todayDate\": \"Dzisiaj {date, date, full}\",\n \"todayDateSelected\": \"Dzisiaj wybrano {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para concluir a seleção do intervalo de datas\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data selecionada: {date, date, full}\",\n \"selectedRangeDescription\": \"Intervalo selecionado: {start, date, long} até {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Clique para iniciar a seleção do intervalo de datas\",\n \"todayDate\": \"Hoje, {date, date, full}\",\n \"todayDateSelected\": \"Hoje, {date, date, full} selecionado\"\n}\n","{\n \"dateSelected\": \"{data, data, completo} selecionado\",\n \"finishRangeSelectionPrompt\": \"Clique para terminar de selecionar o intervalo de datas\",\n \"next\": \"Próximo\",\n \"previous\": \"Anterior\",\n \"selectedDateDescription\": \"Data Selecionada: {data, data, completo}\",\n \"selectedRangeDescription\": \"Selecionar Intervalo: {início, data, longo} a {término, data, longo}\",\n \"startRangeSelectionPrompt\": \"Clique para começar a selecionar o intervalo de datas\",\n \"todayDate\": \"Hoje, {date, date, full}\",\n \"todayDateSelected\": \"Hoje, {date, date, full} selecionado\"\n}\n","{\n \"dateSelected\": \"{date, date, full} selectată\",\n \"finishRangeSelectionPrompt\": \"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\n \"next\": \"Următorul\",\n \"previous\": \"Înainte\",\n \"selectedDateDescription\": \"Dată selectată: {date, date, full}\",\n \"selectedRangeDescription\": \"Selectaţi raza: {start, date, long} la {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Apăsaţi pentru a începe selecţia razei pentru dată\",\n \"todayDate\": \"Astăzi, {date, date, full}\",\n \"todayDateSelected\": \"Dată, {date, date, full} selectată\"\n}\n","{\n \"dateSelected\": \"выбрано {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Щелкните, чтобы завершить выбор диапазона дат\",\n \"next\": \"Далее\",\n \"previous\": \"Назад\",\n \"selectedDateDescription\": \"Выбранная дата: {date, date, full}\",\n \"selectedRangeDescription\": \"Выбранный диапазон: {start, date, long} – {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Щелкните, чтобы начать выбор диапазона дат\",\n \"todayDate\": \"Сегодня, {date, date, full}\",\n \"todayDateSelected\": \"Сегодня, выбрано {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Vybratý dátum {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknutím dokončíte výber rozsahu dátumov\",\n \"next\": \"Nasledujúce\",\n \"previous\": \"Predchádzajúce\",\n \"selectedDateDescription\": \"Vybratý dátum: {date, date, full}\",\n \"selectedRangeDescription\": \"Vybratý rozsah dátumov: {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknutím spustíte výber rozsahu dátumov\",\n \"todayDate\": \"Dnešný dátum, {date, date, full}\",\n \"todayDateSelected\": \"Vybratý dnešný dátum, {date, date, full}\"\n}\n","{\n \"dateSelected\": \"izbrano: {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknite za dokončanje izbire datumskega obsega\",\n \"next\": \"Naprej\",\n \"previous\": \"Nazaj\",\n \"selectedDateDescription\": \"Izbrani datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Izbrani razpon: {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknite za začetek izbire datumskega obsega\",\n \"todayDate\": \"Danes, {date, date, full}\",\n \"todayDateSelected\": \"Danes, izbrano: {date, date, full}\"\n}\n","{\n \"dateSelected\": \"Izabran {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Kliknite da dovršite opseg izabranih datuma\",\n \"next\": \"Sledeći\",\n \"previous\": \"Prethodni\",\n \"selectedDateDescription\": \"Izabrani datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Izabrani opseg: od {start, date, long} do {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Kliknite da započnete opseg izabranih datuma\",\n \"todayDate\": \"Danas, {date, date, full}\",\n \"todayDateSelected\": \"Danas, izabran {date, date, full}\"\n}\n","{\n \"dateSelected\": \"{date, date, full} har valts\",\n \"finishRangeSelectionPrompt\": \"Klicka för att avsluta val av datumintervall\",\n \"next\": \"Nästa\",\n \"previous\": \"Föregående\",\n \"selectedDateDescription\": \"Valt datum: {date, date, full}\",\n \"selectedRangeDescription\": \"Valt intervall: {start, date, long} till {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Klicka för att välja datumintervall\",\n \"todayDate\": \"I dag, {date, date, full}\",\n \"todayDateSelected\": \"I dag, {date, date, full} har valts\"\n}\n","{\n \"dateSelected\": \"{date, date, full} seçildi\",\n \"finishRangeSelectionPrompt\": \"Tarih aralığı seçimini tamamlamak için tıklayın\",\n \"next\": \"Sonraki\",\n \"previous\": \"Önceki\",\n \"selectedDateDescription\": \"Seçili Tarih: {date, date, full}\",\n \"selectedRangeDescription\": \"Seçili Aralık: {start, date, long} - {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Tarih aralığı seçimini başlatmak için tıklayın\",\n \"todayDate\": \"Bugün, {date, date, full}\",\n \"todayDateSelected\": \"Bugün, {date, date, full} seçildi\"\n}\n","{\n \"dateSelected\": \"Вибрано: {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"Натисніть, щоб завершити вибір діапазону дат\",\n \"next\": \"Наступний\",\n \"previous\": \"Попередній\",\n \"selectedDateDescription\": \"Вибрана дата: {date, date, full}\",\n \"selectedRangeDescription\": \"Вибраний діапазон: від {start, date, long} до {end, date, long}\",\n \"startRangeSelectionPrompt\": \"Натисніть, щоб почати вибір діапазону дат\",\n \"todayDate\": \"Сьогодні: {date, date, full}\",\n \"todayDateSelected\": \"Сьогодні вибрано: {date, date, full}\"\n}\n","{\n \"dateSelected\": \"已选择 {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"单击以完成选择日期范围\",\n \"next\": \"下一页\",\n \"previous\": \"上一页\",\n \"selectedDateDescription\": \"选定的日期: {date, date, full}\",\n \"selectedRangeDescription\": \"选定的范围: {start, date, long} 到 {end, date, long}\",\n \"startRangeSelectionPrompt\": \"单击以开始选择日期范围\",\n \"todayDate\": \"今天({date, date, full})\",\n \"todayDateSelected\": \"已选择今天({date, date, full})\"\n}\n","{\n \"dateSelected\": \"已選取 {date, date, full}\",\n \"finishRangeSelectionPrompt\": \"按一下以完成選取日期範圍\",\n \"next\": \"下一頁\",\n \"previous\": \"上一頁\",\n \"selectedDateDescription\": \"選取日期: {date, date, full}\",\n \"selectedRangeDescription\": \"選取範圍: {start, date, long} 至 {end, date, long}\",\n \"startRangeSelectionPrompt\": \"按一下以開始選取日期範圍\",\n \"todayDate\": \"今日,{date, date, full}\",\n \"todayDateSelected\": \"今日,已選取 {date, date, full}\"\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} from './types';\nimport {DateValue, RangeCalendarProps} from '@react-types/calendar';\nimport {RangeCalendarState} from '@react-stately/calendar';\nimport {RefObject, useRef} from 'react';\nimport {useCalendarBase} from './useCalendarBase';\nimport {useEvent, useId} 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 res.nextButtonProps.id = useId();\n res.prevButtonProps.id = useId();\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 useEvent(useRef(window), '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.contains(target) || !target.closest('[role=\"button\"]')) &&\n !document.getElementById(res.nextButtonProps.id)?.contains(target) &&\n !document.getElementById(res.prevButtonProps.id)?.contains(target)\n ) {\n state.selectFocusedDate();\n }\n };\n\n useEvent(useRef(window), 'pointerup', endDragging);\n useEvent(useRef(window), 'pointercancel', endDragging);\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} from '@internationalized/date';\nimport {CalendarGridAria} from './types';\nimport {calendarIds, useSelectedDateDescription, useVisibleRangeDescription} from './utils';\nimport {CalendarState, RangeCalendarState} from '@react-stately/calendar';\nimport {KeyboardEvent} from 'react';\nimport {mergeProps, useDescription, useLabels} from '@react-aria/utils';\nimport {useDateFormatter, useLocale} from '@react-aria/i18n';\n\ninterface CalendarGridProps {\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\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: CalendarGridProps, 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 if (e.shiftKey) {\n state.focusPreviousSection();\n } else {\n state.focusPreviousPage();\n }\n break;\n case 'PageDown':\n e.preventDefault();\n if (e.shiftKey) {\n state.focusNextSection();\n } else {\n state.focusNextPage();\n }\n break;\n case 'End':\n e.preventDefault();\n state.focusPageEnd();\n break;\n case 'Home':\n e.preventDefault();\n state.focusPageStart();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n if (direction === 'rtl') {\n state.focusNextDay();\n } else {\n state.focusPreviousDay();\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n state.focusPreviousRow();\n break;\n case 'ArrowRight':\n e.preventDefault();\n if (direction === 'rtl') {\n state.focusPreviousDay();\n } else {\n state.focusNextDay();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\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 selectedDateDescription = useSelectedDateDescription(state);\n let descriptionProps = useDescription(selectedDateDescription);\n let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone);\n\n let labelProps = useLabels({\n 'aria-label': visibleRangeDescription,\n 'aria-labelledby': calendarIds.get(state)\n });\n\n let dayFormatter = useDateFormatter({weekday: 'narrow', timeZone: state.timeZone});\n let dayFormatterLong = useDateFormatter({weekday: 'long', timeZone: state.timeZone});\n let {locale} = useLocale();\n let weekStart = startOfWeek(state.visibleRange.start, locale);\n let weekDays = [...new Array(7).keys()].map((index) => {\n let date = weekStart.add({days: index});\n let dateDay = date.toDate(state.timeZone);\n let narrow = dayFormatter.format(dateDay);\n let long = dayFormatterLong.format(dateDay);\n return {\n narrow,\n long\n };\n });\n\n return {\n gridProps: mergeProps(descriptionProps, 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 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} from '@react-aria/utils';\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';\nimport {usePress} from '@react-aria/interactions';\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\ninterface 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 /** 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 formatMessage = useMessageFormatter(intlMessages);\n let dateFormatter = useDateFormatter({\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n era: date.calendar.identifier !== 'gregory' ? 'long' : undefined,\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\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 if (isDateToday) {\n // If date is today, set appropriate string depending on selected state:\n return formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {\n date: nativeDate\n });\n } else if (isSelected) {\n // If date is selected but not today:\n return formatMessage('dateSelected', {\n date: nativeDate\n });\n }\n\n return dateFormatter.format(nativeDate);\n }, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday]);\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 if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {\n let rangeSelectionPrompt = '';\n\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 // Append to aria-label\n if (rangeSelectionPrompt) {\n label = `${label} (${rangeSelectionPrompt})`;\n }\n }\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 if (state.highlightedRange) {\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 }, [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': isSelectable ? isSelected : 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 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 formattedDate\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 {AriaButtonProps} from '@react-types/button';\nimport {HTMLAttributes} from 'react';\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 /** A description of the visible date range, for use in the calendar title. */\n title: string\n}\n\n\nexport interface CalendarGridAria {\n /** Props for the date grid element (e.g. `<table>`). */\n gridProps: HTMLAttributes<HTMLElement>,\n /** A list of week days formatted for the current locale, typically used in column headers. */\n weekDays: WeekDay[]\n}\n\ninterface WeekDay {\n /** A short name (e.g. single letter) for the day. */\n narrow: string,\n /** The full day name. If not displayed visually, it should be used as the accessiblity name. */\n long: string\n}\n"],"names":[],"version":3,"file":"main.js.map"}