@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/module.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {announce as $amWdn$announce} from "@react-aria/live-announcer";
2
2
  import {useId as $amWdn$useId, useUpdateEffect as $amWdn$useUpdateEffect, useDescription as $amWdn$useDescription, mergeProps as $amWdn$mergeProps, useEvent as $amWdn$useEvent, useLabels as $amWdn$useLabels, focusWithoutScrolling as $amWdn$focusWithoutScrolling} from "@react-aria/utils";
3
3
  import {useMessageFormatter as $amWdn$useMessageFormatter, useDateFormatter as $amWdn$useDateFormatter, useLocale as $amWdn$useLocale} from "@react-aria/i18n";
4
- import {isSameDay as $amWdn$isSameDay, startOfMonth as $amWdn$startOfMonth, endOfMonth as $amWdn$endOfMonth, startOfWeek as $amWdn$startOfWeek, isEqualDay as $amWdn$isEqualDay, isToday as $amWdn$isToday, isSameMonth as $amWdn$isSameMonth} from "@internationalized/date";
5
- import {useMemo as $amWdn$useMemo, useRef as $amWdn$useRef, useEffect as $amWdn$useEffect} from "react";
4
+ import {useRef as $amWdn$useRef, useMemo as $amWdn$useMemo, useEffect as $amWdn$useEffect} from "react";
5
+ import {isSameDay as $amWdn$isSameDay, startOfMonth as $amWdn$startOfMonth, endOfMonth as $amWdn$endOfMonth, startOfWeek as $amWdn$startOfWeek, isEqualDay as $amWdn$isEqualDay, isToday as $amWdn$isToday} from "@internationalized/date";
6
6
  import {usePress as $amWdn$usePress} from "@react-aria/interactions";
7
7
 
8
8
  function $parcel$export(e, n, v, s) {
@@ -228,11 +228,13 @@ function $a074e1e2d0f0a665$export$31afe65d91ef6e8(startDate, endDate, timeZone)
228
228
  month: 'long',
229
229
  year: 'numeric',
230
230
  era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,
231
- calendar: startDate.calendar.identifier
231
+ calendar: startDate.calendar.identifier,
232
+ timeZone: timeZone
232
233
  });
233
234
  let dateFormatter = $amWdn$useDateFormatter({
234
235
  dateStyle: 'long',
235
- calendar: startDate.calendar.identifier
236
+ calendar: startDate.calendar.identifier,
237
+ timeZone: timeZone
236
238
  });
237
239
  return $amWdn$useMemo(()=>{
238
240
  // Special case for month granularity. Format as a single month if only a
@@ -255,6 +257,7 @@ function $a074e1e2d0f0a665$export$31afe65d91ef6e8(startDate, endDate, timeZone)
255
257
 
256
258
 
257
259
 
260
+
258
261
  function $c4acc1de3ab169cf$export$d652b3ea2d672d5b(props, state) {
259
262
  let formatMessage = $amWdn$useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($0fbdc3429b133a50$exports)));
260
263
  let calendarId = $amWdn$useId(props.id);
@@ -277,6 +280,19 @@ function $c4acc1de3ab169cf$export$d652b3ea2d672d5b(props, state) {
277
280
  let descriptionProps = $amWdn$useDescription(visibleRangeDescription);
278
281
  // Label the child grid elements by the group element if it is labelled.
279
282
  $a074e1e2d0f0a665$export$3ddff89c59628ee7.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);
283
+ // If the next or previous buttons become disabled while they are focused, move focus to the calendar body.
284
+ let nextFocused = $amWdn$useRef(false);
285
+ let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();
286
+ if (nextDisabled && nextFocused.current) {
287
+ nextFocused.current = false;
288
+ state.setFocused(true);
289
+ }
290
+ let previousFocused = $amWdn$useRef(false);
291
+ let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();
292
+ if (previousDisabled && previousFocused.current) {
293
+ previousFocused.current = false;
294
+ state.setFocused(true);
295
+ }
280
296
  return {
281
297
  calendarProps: $amWdn$mergeProps(descriptionProps, {
282
298
  role: 'group',
@@ -288,13 +304,19 @@ function $c4acc1de3ab169cf$export$d652b3ea2d672d5b(props, state) {
288
304
  onPress: ()=>state.focusNextPage()
289
305
  ,
290
306
  'aria-label': formatMessage('next'),
291
- isDisabled: props.isDisabled || state.isNextVisibleRangeInvalid()
307
+ isDisabled: nextDisabled,
308
+ onFocus: ()=>nextFocused.current = true
309
+ ,
310
+ onBlur: ()=>nextFocused.current = false
292
311
  },
293
312
  prevButtonProps: {
294
313
  onPress: ()=>state.focusPreviousPage()
295
314
  ,
296
315
  'aria-label': formatMessage('previous'),
297
- isDisabled: props.isDisabled || state.isPreviousVisibleRangeInvalid()
316
+ isDisabled: previousDisabled,
317
+ onFocus: ()=>previousFocused.current = true
318
+ ,
319
+ onBlur: ()=>previousFocused.current = false
298
320
  },
299
321
  title: visibleRangeDescription
300
322
  };
@@ -338,7 +360,7 @@ function $46a4342aab3d8076$export$87e0539f600c24e5(props, state, ref2) {
338
360
  if (!state.anchorDate) return;
339
361
  let target = e.target;
340
362
  let body = document.getElementById(res.calendarProps.id);
341
- 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();
363
+ 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();
342
364
  };
343
365
  $amWdn$useEvent($amWdn$useRef(window), 'pointerup', endDragging);
344
366
  $amWdn$useEvent($amWdn$useRef(window), 'pointercancel', endDragging);
@@ -423,10 +445,12 @@ function $e3031d1f8c9d64eb$export$cb95147730a423f5(props, state) {
423
445
  'aria-labelledby': $a074e1e2d0f0a665$export$3ddff89c59628ee7.get(state)
424
446
  });
425
447
  let dayFormatter = $amWdn$useDateFormatter({
426
- weekday: 'narrow'
448
+ weekday: 'narrow',
449
+ timeZone: state.timeZone
427
450
  });
428
451
  let dayFormatterLong = $amWdn$useDateFormatter({
429
- weekday: 'long'
452
+ weekday: 'long',
453
+ timeZone: state.timeZone
430
454
  });
431
455
  let { locale: locale } = $amWdn$useLocale();
432
456
  let weekStart = $amWdn$startOfWeek(state.visibleRange.start, locale);
@@ -484,6 +508,8 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
484
508
  let isSelected = state.isSelected(date);
485
509
  let isFocused = state.isCellFocused(date);
486
510
  isDisabled = isDisabled || state.isCellDisabled(date);
511
+ let isUnavailable = state.isCellUnavailable(date);
512
+ let isSelectable = !isDisabled && !isUnavailable;
487
513
  // For performance, reuse the same date object as before if the new date prop is the same.
488
514
  // This allows subsequent useMemo results to be reused.
489
515
  let lastDate = $amWdn$useRef(null);
@@ -515,7 +541,7 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
515
541
  ]);
516
542
  // When a cell is focused and this is a range calendar, add a prompt to help
517
543
  // screenreader users know that they are in a range selection mode.
518
- if ('anchorDate' in state && isFocused && !state.isReadOnly) {
544
+ if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {
519
545
  let rangeSelectionPrompt = '';
520
546
  // If selection has started add "click to finish selecting range"
521
547
  if (state.anchorDate) rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');
@@ -531,7 +557,7 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
531
557
  // again to trigger onPressStart. Cancel presses immediately when the pointer exits.
532
558
  shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,
533
559
  preventFocusOnPress: true,
534
- isDisabled: isDisabled,
560
+ isDisabled: !isSelectable,
535
561
  onPressStart (e) {
536
562
  if (state.isReadOnly) {
537
563
  state.setFocusedDate(date);
@@ -608,7 +634,10 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
608
634
  let nextDay = date.add({
609
635
  days: 1
610
636
  });
611
- if ($amWdn$isSameMonth(date, nextDay)) state.setFocusedDate(nextDay);
637
+ if (state.isInvalid(nextDay)) nextDay = date.subtract({
638
+ days: 1
639
+ });
640
+ if (!state.isInvalid(nextDay)) state.setFocusedDate(nextDay);
612
641
  } else if (e.pointerType === 'virtual') {
613
642
  // For screen readers, just select the date on click.
614
643
  state.selectDate(date);
@@ -639,8 +668,8 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
639
668
  return {
640
669
  cellProps: {
641
670
  role: 'gridcell',
642
- 'aria-disabled': isDisabled || null,
643
- 'aria-selected': isSelected
671
+ 'aria-disabled': !isSelectable || null,
672
+ 'aria-selected': isSelectable ? isSelected : null
644
673
  },
645
674
  buttonProps: $amWdn$mergeProps(pressProps, {
646
675
  onFocus () {
@@ -648,11 +677,11 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
648
677
  },
649
678
  tabIndex: tabIndex,
650
679
  role: 'button',
651
- 'aria-disabled': isDisabled || null,
680
+ 'aria-disabled': !isSelectable || null,
652
681
  'aria-label': label,
653
682
  onPointerEnter (e) {
654
683
  // Highlight the date on hover or drag over a date when selecting a range.
655
- if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging)) state.highlightDate(date);
684
+ if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) state.highlightDate(date);
656
685
  },
657
686
  onPointerDown (e) {
658
687
  // This is necessary on touch devices to allow dragging
@@ -669,6 +698,7 @@ function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
669
698
  isFocused: isFocused,
670
699
  isSelected: isSelected,
671
700
  isDisabled: isDisabled,
701
+ isUnavailable: isUnavailable,
672
702
  isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,
673
703
  formattedDate: formattedDate
674
704
  };
@@ -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":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/intl/*.js","packages/@react-aria/calendar/intl/ar-AE.json","packages/@react-aria/calendar/intl/bg-BG.json","packages/@react-aria/calendar/intl/cs-CZ.json","packages/@react-aria/calendar/intl/da-DK.json","packages/@react-aria/calendar/intl/de-DE.json","packages/@react-aria/calendar/intl/el-GR.json","packages/@react-aria/calendar/intl/en-US.json","packages/@react-aria/calendar/intl/es-ES.json","packages/@react-aria/calendar/intl/et-EE.json","packages/@react-aria/calendar/intl/fi-FI.json","packages/@react-aria/calendar/intl/fr-FR.json","packages/@react-aria/calendar/intl/he-IL.json","packages/@react-aria/calendar/intl/hr-HR.json","packages/@react-aria/calendar/intl/hu-HU.json","packages/@react-aria/calendar/intl/it-IT.json","packages/@react-aria/calendar/intl/ja-JP.json","packages/@react-aria/calendar/intl/ko-KR.json","packages/@react-aria/calendar/intl/lt-LT.json","packages/@react-aria/calendar/intl/lv-LV.json","packages/@react-aria/calendar/intl/nb-NO.json","packages/@react-aria/calendar/intl/nl-NL.json","packages/@react-aria/calendar/intl/pl-PL.json","packages/@react-aria/calendar/intl/pt-BR.json","packages/@react-aria/calendar/intl/pt-PT.json","packages/@react-aria/calendar/intl/ro-RO.json","packages/@react-aria/calendar/intl/ru-RU.json","packages/@react-aria/calendar/intl/sk-SK.json","packages/@react-aria/calendar/intl/sl-SI.json","packages/@react-aria/calendar/intl/sr-SP.json","packages/@react-aria/calendar/intl/sv-SE.json","packages/@react-aria/calendar/intl/tr-TR.json","packages/@react-aria/calendar/intl/uk-UA.json","packages/@react-aria/calendar/intl/zh-CN.json","packages/@react-aria/calendar/intl/zh-TW.json","packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/useCalendarCell.ts","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":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -75,8 +75,21 @@ interface CalendarCellAria {
75
75
  isSelected: boolean;
76
76
  /** Whether the cell is focused. */
77
77
  isFocused: boolean;
78
- /** Whether the cell is disabled. */
78
+ /**
79
+ * Whether the cell is disabled, according to the calendar's `minValue`, `maxValue`, and `isDisabled` props.
80
+ * Disabled dates are not focusable, and cannot be selected by the user. They are typically
81
+ * displayed with a dimmed appearance.
82
+ */
79
83
  isDisabled: boolean;
84
+ /**
85
+ * Whether the cell is unavailable, according to the calendar's `isDateUnavailable` prop. Unavailable dates remain
86
+ * focusable, but cannot be selected by the user. They should be displayed with a visual affordance to indicate they
87
+ * are unavailable, such as a different color or a strikethrough.
88
+ *
89
+ * Note that because they are focusable, unavailable dates must meet a 4.5:1 color contrast ratio,
90
+ * [as defined by WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html).
91
+ */
92
+ isUnavailable: boolean;
80
93
  /**
81
94
  * Whether the cell is outside the visible range of the calendar.
82
95
  * For example, dates before the first day of a month in the same week.
@@ -1 +1 @@
1
- {"mappings":";;;;;AAeA;IACE,+CAA+C;IAC/C,aAAa,EAAE,eAAe,WAAW,CAAC,CAAC;IAC3C,iCAAiC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,qCAAqC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;CACd;AAGD;IACE,wDAAwD;IACxD,SAAS,EAAE,eAAe,WAAW,CAAC,CAAC;IACvC,8FAA8F;IAC9F,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED;IACE,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAA;CACb;AGtBD;;;GAGG;AACH,4BAA4B,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,YAAY,CAE5G;ACJD;;;GAGG;AACH,iCAAiC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,WAAW,CAAC,GAAG,YAAY,CAmDxJ;ACtDD;IACE;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;;;GAIG;AACH,gCAAgC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,GAAG,kBAAkB,GAAG,gBAAgB,CA6GrH;AC/HD;IACE,0CAA0C;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;IACE,qDAAqD;IACrD,SAAS,EAAE,eAAe,WAAW,CAAC,CAAC;IACvC,oDAAoD;IACpD,WAAW,EAAE,eAAe,WAAW,CAAC,CAAC;IACzC,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,gCAAgC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,aAAa,GAAG,kBAAkB,EAAE,GAAG,EAAE,UAAU,WAAW,CAAC,GAAG,gBAAgB,CAwOtJ","sources":["packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/types.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendarCell.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './useCalendar';\nexport * from './useRangeCalendar';\nexport * from './useCalendarGrid';\nexport * from './useCalendarCell';\nexport * from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":";;;;;AAeA;IACE,+CAA+C;IAC/C,aAAa,EAAE,eAAe,WAAW,CAAC,CAAC;IAC3C,iCAAiC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,qCAAqC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;CACd;AAGD;IACE,wDAAwD;IACxD,SAAS,EAAE,eAAe,WAAW,CAAC,CAAC;IACvC,8FAA8F;IAC9F,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED;IACE,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAA;CACb;AGtBD;;;GAGG;AACH,4BAA4B,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,YAAY,CAE5G;ACJD;;;GAGG;AACH,iCAAiC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,WAAW,CAAC,GAAG,YAAY,CAmDxJ;ACtDD;IACE;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;;;GAIG;AACH,gCAAgC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,GAAG,kBAAkB,GAAG,gBAAgB,CA6GrH;AC/HD;IACE,0CAA0C;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;IACE,qDAAqD;IACrD,SAAS,EAAE,eAAe,WAAW,CAAC,CAAC;IACvC,oDAAoD;IACpD,WAAW,EAAE,eAAe,WAAW,CAAC,CAAC;IACzC,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,gCAAgC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,aAAa,GAAG,kBAAkB,EAAE,GAAG,EAAE,UAAU,WAAW,CAAC,GAAG,gBAAgB,CA8OtJ","sources":["packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/types.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/utils.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendarBase.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendar.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useRangeCalendar.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendarGrid.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/useCalendarCell.ts","packages/@react-aria/calendar/src/packages/@react-aria/calendar/src/index.ts","packages/@react-aria/calendar/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './useCalendar';\nexport * from './useRangeCalendar';\nexport * from './useCalendarGrid';\nexport * from './useCalendarCell';\nexport * from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}