Socket
Socket
Sign inDemoInstall

@react-aria/calendar

Package Overview
Dependencies
Maintainers
2
Versions
543
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@react-aria/calendar - npm Package Compare versions

Comparing version 3.0.0-nightly.3180 to 3.0.0-nightly-641446f65-240905

dist/ar-AE.main.js

741

dist/main.js

@@ -1,734 +0,31 @@

var $jzHdg$reactarialiveannouncer = require("@react-aria/live-announcer");
var $jzHdg$reactariautils = require("@react-aria/utils");
var $jzHdg$reactariai18n = require("@react-aria/i18n");
var $jzHdg$react = require("react");
var $jzHdg$internationalizeddate = require("@internationalized/date");
var $jzHdg$reactariainteractions = require("@react-aria/interactions");
var $20e845123e697a89$exports = require("./useCalendar.main.js");
var $c49ada48cbc48220$exports = require("./useRangeCalendar.main.js");
var $a07388a797d86b95$exports = require("./useCalendarGrid.main.js");
var $4d833327a32c9193$exports = require("./useCalendarCell.main.js");
function $parcel$exportWildcard(dest, source) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
return;
}
Object.defineProperty(dest, key, {
enumerable: true,
get: function get() {
return source[key];
}
});
});
return dest;
}
function $parcel$export(e, n, v, s) {
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
}
function $parcel$interopDefault(a) {
return a && a.__esModule ? a.default : a;
}
var $20e845123e697a89$exports = {};
$parcel$export($20e845123e697a89$exports, "useCalendar", () => $20e845123e697a89$export$3ee915f8151bd4f1);
$parcel$export(module.exports, "useCalendar", () => $20e845123e697a89$exports.useCalendar);
$parcel$export(module.exports, "useRangeCalendar", () => $c49ada48cbc48220$exports.useRangeCalendar);
$parcel$export(module.exports, "useCalendarGrid", () => $a07388a797d86b95$exports.useCalendarGrid);
$parcel$export(module.exports, "useCalendarCell", () => $4d833327a32c9193$exports.useCalendarCell);
/*
* Copyright 2020 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
var $f87cd00fb2ba0f23$exports = {};
var $1fedb39dedbf7c51$exports = {};
$1fedb39dedbf7c51$exports = JSON.parse("{\"dateSelected\":\"تم تحديد {date, date, full}\",\"finishRangeSelectionPrompt\":\"انقر لإنهاء عملية تحديد نطاق التاريخ\",\"next\":\"التالي\",\"previous\":\"السابق\",\"selectedDateDescription\":\"التاريخ المحدد: {date, date, full}\",\"selectedRangeDescription\":\"النطاق المحدد: {start, date, long} إلى {end, date, long}\",\"startRangeSelectionPrompt\":\"انقر لبدء عملية تحديد نطاق التاريخ\",\"todayDate\":\"اليوم، {date, date, full}\",\"todayDateSelected\":\"اليوم، تم تحديد {date, date, full}\"}");
var $524ada6153e36bf5$exports = {};
$524ada6153e36bf5$exports = JSON.parse("{\"dateSelected\":\"избрани {date, date, full}\",\"finishRangeSelectionPrompt\":\"Натиснете, за да довършите избора на времеви интервал\",\"next\":\"Напред\",\"previous\":\"Назад\",\"selectedDateDescription\":\"Избрана дата: {date, date, full}\",\"selectedRangeDescription\":\"Избран интервал: от {start, date, long} до {end, date, long}\",\"startRangeSelectionPrompt\":\"Натиснете, за да пристъпите към избора на времеви интервал\",\"todayDate\":\"Днес {date, date, full}\",\"todayDateSelected\":\"Днес са избрани {date, date, full}\"}");
var $181053d31fc585a6$exports = {};
$181053d31fc585a6$exports = JSON.parse("{\"dateSelected\":\"Vybráno: {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknutím dokončíte výběr rozsahu dat\",\"next\":\"Další\",\"previous\":\"Předchozí\",\"selectedDateDescription\":\"Zvolené datum: {date, date, full}\",\"selectedRangeDescription\":\"Zvolený rozsah: {start, date, long} až {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknutím zahájíte výběr rozsahu dat\",\"todayDate\":\"Dnes, {date, date, full}\",\"todayDateSelected\":\"Vybrán dnešek: {date, date, full}\"}");
var $87f1f2ee75c25d27$exports = {};
$87f1f2ee75c25d27$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valgt\",\"finishRangeSelectionPrompt\":\"Klik for at fuldføre valg af datoområde\",\"next\":\"Næste\",\"previous\":\"Forrige\",\"selectedDateDescription\":\"Valgt dato: {date, date, full}\",\"selectedRangeDescription\":\"Valgt område: {start, date, long} til {end, date, long}\",\"startRangeSelectionPrompt\":\"Klik for at starte valg af datoområde\",\"todayDate\":\"I dag, {date, date, full}\",\"todayDateSelected\":\"I dag, {date, date, full} valgt\"}");
var $3018d278e45fefcf$exports = {};
$3018d278e45fefcf$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} ausgewählt\",\"finishRangeSelectionPrompt\":\"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\"next\":\"Weiter\",\"previous\":\"Zurück\",\"selectedDateDescription\":\"Ausgewähltes Datum: {date, date, full}\",\"selectedRangeDescription\":\"Bereich auswählen: {start, date, long} bis {end, date, long}\",\"startRangeSelectionPrompt\":\"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\"todayDate\":\"Heute, {date, date, full}\",\"todayDateSelected\":\"Heute, {date, date, full} ausgewählt\"}");
var $880b624ba6c377b6$exports = {};
$880b624ba6c377b6$exports = JSON.parse("{\"dateSelected\":\"Επιλέχτηκε {date, date, full}\",\"finishRangeSelectionPrompt\":\"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\"next\":\"Επόμενο\",\"previous\":\"Προηγούμενο\",\"selectedDateDescription\":\"Επιλεγμένη ημερομηνία: {date, date, full}\",\"selectedRangeDescription\":\"Επιλεγμένο εύρος: {start, date, long} έως {end, date, long}\",\"startRangeSelectionPrompt\":\"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\"todayDate\":\"Σήμερα, {date, date, full}\",\"todayDateSelected\":\"Σήμερα, επιλέχτηκε {date, date, full}\"}");
var $6a7e3934431e9523$exports = {};
$6a7e3934431e9523$exports = JSON.parse("{\"previous\":\"Previous\",\"next\":\"Next\",\"selectedDateDescription\":\"Selected Date: {date, date, full}\",\"selectedRangeDescription\":\"Selected Range: {start, date, long} to {end, date, long}\",\"todayDate\":\"Today, {date, date, full}\",\"todayDateSelected\":\"Today, {date, date, full} selected\",\"dateSelected\":\"{date, date, full} selected\",\"startRangeSelectionPrompt\":\"Click to start selecting date range\",\"finishRangeSelectionPrompt\":\"Click to finish selecting date range\"}");
var $4c458303ff44205c$exports = {};
$4c458303ff44205c$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} seleccionado\",\"finishRangeSelectionPrompt\":\"Haga clic para terminar de seleccionar rango de fechas\",\"next\":\"Siguiente\",\"previous\":\"Anterior\",\"selectedDateDescription\":\"Fecha seleccionada: {date, date, full}\",\"selectedRangeDescription\":\"Seleccionar rango: {start, date, long} a {end, date, long}\",\"startRangeSelectionPrompt\":\"Haga clic para comenzar a seleccionar un rango de fechas\",\"todayDate\":\"Hoy, {date, date, full}\",\"todayDateSelected\":\"Hoy, {date, date, full} seleccionado\"}");
var $4b6ec4ab19a96fff$exports = {};
$4b6ec4ab19a96fff$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valitud\",\"finishRangeSelectionPrompt\":\"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\"next\":\"Järgmine\",\"previous\":\"Eelmine\",\"selectedDateDescription\":\"Valitud kuupäev: {date, date, full}\",\"selectedRangeDescription\":\"Valitud vahemik: {start, date, long} kuni {end, date, long}\",\"startRangeSelectionPrompt\":\"Klõpsake kuupäevavahemiku valimiseks\",\"todayDate\":\"Täna {date, date, full}\",\"todayDateSelected\":\"Täna {date, date, full} valitud\"}");
var $a5184a366ed55e98$exports = {};
$a5184a366ed55e98$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valittu\",\"finishRangeSelectionPrompt\":\"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\"next\":\"Seuraava\",\"previous\":\"Edellinen\",\"selectedDateDescription\":\"Valittu päivämäärä: {date, date, full}\",\"selectedRangeDescription\":\"Valittu alue: {start, date, long} - {end, date, long}\",\"startRangeSelectionPrompt\":\"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\"todayDate\":\"Tänään, {date, date, full}\",\"todayDateSelected\":\"Tänään, {date, date, full} valittu\"}");
var $094c11f0389b0f6c$exports = {};
$094c11f0389b0f6c$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} sélectionné\",\"finishRangeSelectionPrompt\":\"Cliquer pour finir de sélectionner la plage de dates\",\"next\":\"Suivant\",\"previous\":\"Précédent\",\"selectedDateDescription\":\"Date sélectionnée : {date, date, full}\",\"selectedRangeDescription\":\"Plage sélectionnée : {start, date, long} à {end, date, long}\",\"startRangeSelectionPrompt\":\"Cliquer pour commencer à sélectionner la plage de dates\",\"todayDate\":\"Aujourd’hui, {date, date, full}\",\"todayDateSelected\":\"Aujourd’hui, {date, date, full} sélectionné\"}");
var $5b28c6b8eb99673e$exports = {};
$5b28c6b8eb99673e$exports = JSON.parse("{\"dateSelected\":\"התאריך {date, date, full} שנבחר\",\"finishRangeSelectionPrompt\":\"חץ כדי לסיים את בחירת טווח התאריכים\",\"next\":\"הבא\",\"previous\":\"הקודם\",\"selectedDateDescription\":\"התאריך שנבחר: {date, date, full}\",\"selectedRangeDescription\":\"הטווח שנבחר: מ-{start, date, long} ועד {end, date, long}\",\"startRangeSelectionPrompt\":\"לחץ כדי להתחיל בבחירת טווח התאריכים\",\"todayDate\":\"היום, {date, date, full}\",\"todayDateSelected\":\"היום, התאריך {date, date, full} שנבחר\"}");
var $519824243c1aad60$exports = {};
$519824243c1aad60$exports = JSON.parse("{\"dateSelected\":\"Odabran {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknite da dovršite raspon odabranih datuma\",\"next\":\"Sljedeći\",\"previous\":\"Prethodni\",\"selectedDateDescription\":\"Odabrani datum: {date, date, full}\",\"selectedRangeDescription\":\"Odabrani raspon: od {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknite da započnete raspon odabranih datuma\",\"todayDate\":\"Danas, {date, date, full}\",\"todayDateSelected\":\"Danas, odabran {date, date, full}\"}");
var $2fde332abe847288$exports = {};
$2fde332abe847288$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} kijelölve\",\"finishRangeSelectionPrompt\":\"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\"next\":\"Következő\",\"previous\":\"Előző\",\"selectedDateDescription\":\"Kijelölt dátum: {date, date, full}\",\"selectedRangeDescription\":\"Kijelölt tartomány: {start, date, long} – {end, date, long}\",\"startRangeSelectionPrompt\":\"Kattintson a dátumtartomány kijelölésének indításához\",\"todayDate\":\"Ma, {date, date, full}\",\"todayDateSelected\":\"Ma, {date, date, full} kijelölve\"}");
var $b266f7fa452e8e83$exports = {};
$b266f7fa452e8e83$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} selezionato\",\"finishRangeSelectionPrompt\":\"Fai clic per completare la selezione dell’intervallo di date\",\"next\":\"Successivo\",\"previous\":\"Precedente\",\"selectedDateDescription\":\"Data selezionata: {date, date, full}\",\"selectedRangeDescription\":\"Intervallo selezionato: da {start, date, long} a {end, date, long}\",\"startRangeSelectionPrompt\":\"Fai clic per selezionare l’intervallo di date\",\"todayDate\":\"Oggi, {date, date, full}\",\"todayDateSelected\":\"Oggi, {date, date, full} selezionato\"}");
var $3528fd03237947e3$exports = {};
$3528fd03237947e3$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} を選択\",\"finishRangeSelectionPrompt\":\"クリックして日付範囲の選択を終了\",\"next\":\"次へ\",\"previous\":\"前へ\",\"selectedDateDescription\":\"日付を選択:{date, date, full}\",\"selectedRangeDescription\":\"範囲を選択:{start, date, long} から {end, date, long}\",\"startRangeSelectionPrompt\":\"クリックして日付範囲の選択を開始\",\"todayDate\":\"本日、{date, date, full}\",\"todayDateSelected\":\"本日、{date, date, full} を選択\"}");
var $398f3b7902d2708f$exports = {};
$398f3b7902d2708f$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} 선택함\",\"finishRangeSelectionPrompt\":\"날짜 범위 선택을 완료하려면 클릭하십시오.\",\"next\":\"다음\",\"previous\":\"이전\",\"selectedDateDescription\":\"선택한 날짜: {date, date, full}\",\"selectedRangeDescription\":\"선택한 범위: {start, date, long} ~ {end, date, long}\",\"startRangeSelectionPrompt\":\"날짜 범위 선택을 시작하려면 클릭하십시오.\",\"todayDate\":\"오늘, {date, date, full}\",\"todayDateSelected\":\"오늘, {date, date, full} 선택함\"}");
var $ebaae1c76687311e$exports = {};
$ebaae1c76687311e$exports = JSON.parse("{\"dateSelected\":\"Pasirinkta {date, date, full}\",\"finishRangeSelectionPrompt\":\"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\"next\":\"Paskesnis\",\"previous\":\"Ankstesnis\",\"selectedDateDescription\":\"Pasirinkta data: {date, date, full}\",\"selectedRangeDescription\":\"Pasirinktas intervalas: nuo {start, date, long} iki {end, date, long}\",\"startRangeSelectionPrompt\":\"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\"todayDate\":\"Šiandien, {date, date, full}\",\"todayDateSelected\":\"Šiandien, pasirinkta {date, date, full}\"}");
var $3ecb31d6694563f6$exports = {};
$3ecb31d6694563f6$exports = JSON.parse("{\"dateSelected\":\"Atlasīts {date, date, full}\",\"finishRangeSelectionPrompt\":\"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\"next\":\"Tālāk\",\"previous\":\"Atpakaļ\",\"selectedDateDescription\":\"Atlasītais datums: {date, date, full}\",\"selectedRangeDescription\":\"Atlasītais diapazons: {start, date, long} līdz {end, date, long}\",\"startRangeSelectionPrompt\":\"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\"todayDate\":\"Šodiena, {date, date, full}\",\"todayDateSelected\":\"Atlasīta šodiena, {date, date, full}\"}");
var $26dc2e2c103f178c$exports = {};
$26dc2e2c103f178c$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valgt\",\"finishRangeSelectionPrompt\":\"Klikk for å fullføre valg av datoområde\",\"next\":\"Neste\",\"previous\":\"Forrige\",\"selectedDateDescription\":\"Valgt dato: {date, date, full}\",\"selectedRangeDescription\":\"Valgt område: {start, date, long} til {end, date, long}\",\"startRangeSelectionPrompt\":\"Klikk for å starte valg av datoområde\",\"todayDate\":\"I dag, {date, date, full}\",\"todayDateSelected\":\"I dag, {date, date, full} valgt\"}");
var $6bfd45b83a7d37dd$exports = {};
$6bfd45b83a7d37dd$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} geselecteerd\",\"finishRangeSelectionPrompt\":\"Klik om de selectie van het datumbereik te voltooien\",\"next\":\"Volgende\",\"previous\":\"Vorige\",\"selectedDateDescription\":\"Geselecteerde datum: {date, date, full}\",\"selectedRangeDescription\":\"Geselecteerd bereik: {start, date, long} t/m {end, date, long}\",\"startRangeSelectionPrompt\":\"Klik om het datumbereik te selecteren\",\"todayDate\":\"Vandaag, {date, date, full}\",\"todayDateSelected\":\"Vandaag, {date, date, full} geselecteerd\"}");
var $6f70d036cac4bd46$exports = {};
$6f70d036cac4bd46$exports = JSON.parse("{\"dateSelected\":\"Wybrano {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknij, aby zakończyć wybór zakresu dat\",\"next\":\"Dalej\",\"previous\":\"Wstecz\",\"selectedDateDescription\":\"Wybrana data: {date, date, full}\",\"selectedRangeDescription\":\"Wybrany zakres: {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknij, aby rozpocząć wybór zakresu dat\",\"todayDate\":\"Dzisiaj {date, date, full}\",\"todayDateSelected\":\"Dzisiaj wybrano {date, date, full}\"}");
var $a227ce57c671783d$exports = {};
$a227ce57c671783d$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} selecionado\",\"finishRangeSelectionPrompt\":\"Clique para concluir a seleção do intervalo de datas\",\"next\":\"Próximo\",\"previous\":\"Anterior\",\"selectedDateDescription\":\"Data selecionada: {date, date, full}\",\"selectedRangeDescription\":\"Intervalo selecionado: {start, date, long} até {end, date, long}\",\"startRangeSelectionPrompt\":\"Clique para iniciar a seleção do intervalo de datas\",\"todayDate\":\"Hoje, {date, date, full}\",\"todayDateSelected\":\"Hoje, {date, date, full} selecionado\"}");
var $97acad4758696d87$exports = {};
$97acad4758696d87$exports = JSON.parse("{\"dateSelected\":\"{data, data, completo} selecionado\",\"finishRangeSelectionPrompt\":\"Clique para terminar de selecionar o intervalo de datas\",\"next\":\"Próximo\",\"previous\":\"Anterior\",\"selectedDateDescription\":\"Data Selecionada: {data, data, completo}\",\"selectedRangeDescription\":\"Selecionar Intervalo: {início, data, longo} a {término, data, longo}\",\"startRangeSelectionPrompt\":\"Clique para começar a selecionar o intervalo de datas\",\"todayDate\":\"Hoje, {date, date, full}\",\"todayDateSelected\":\"Hoje, {date, date, full} selecionado\"}");
var $010069c7d7fbbea3$exports = {};
$010069c7d7fbbea3$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} selectată\",\"finishRangeSelectionPrompt\":\"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\"next\":\"Următorul\",\"previous\":\"Înainte\",\"selectedDateDescription\":\"Dată selectată: {date, date, full}\",\"selectedRangeDescription\":\"Selectaţi raza: {start, date, long} la {end, date, long}\",\"startRangeSelectionPrompt\":\"Apăsaţi pentru a începe selecţia razei pentru dată\",\"todayDate\":\"Astăzi, {date, date, full}\",\"todayDateSelected\":\"Dată, {date, date, full} selectată\"}");
var $0ba9c30c48c8d602$exports = {};
$0ba9c30c48c8d602$exports = JSON.parse("{\"dateSelected\":\"выбрано {date, date, full}\",\"finishRangeSelectionPrompt\":\"Щелкните, чтобы завершить выбор диапазона дат\",\"next\":\"Далее\",\"previous\":\"Назад\",\"selectedDateDescription\":\"Выбранная дата: {date, date, full}\",\"selectedRangeDescription\":\"Выбранный диапазон: {start, date, long} – {end, date, long}\",\"startRangeSelectionPrompt\":\"Щелкните, чтобы начать выбор диапазона дат\",\"todayDate\":\"Сегодня, {date, date, full}\",\"todayDateSelected\":\"Сегодня, выбрано {date, date, full}\"}");
var $6873e95bd7af7559$exports = {};
$6873e95bd7af7559$exports = JSON.parse("{\"dateSelected\":\"Vybratý dátum {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknutím dokončíte výber rozsahu dátumov\",\"next\":\"Nasledujúce\",\"previous\":\"Predchádzajúce\",\"selectedDateDescription\":\"Vybratý dátum: {date, date, full}\",\"selectedRangeDescription\":\"Vybratý rozsah dátumov: {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknutím spustíte výber rozsahu dátumov\",\"todayDate\":\"Dnešný dátum, {date, date, full}\",\"todayDateSelected\":\"Vybratý dnešný dátum, {date, date, full}\"}");
var $ce3c7852583668e3$exports = {};
$ce3c7852583668e3$exports = JSON.parse("{\"dateSelected\":\"izbrano: {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknite za dokončanje izbire datumskega obsega\",\"next\":\"Naprej\",\"previous\":\"Nazaj\",\"selectedDateDescription\":\"Izbrani datum: {date, date, full}\",\"selectedRangeDescription\":\"Izbrani razpon: {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknite za začetek izbire datumskega obsega\",\"todayDate\":\"Danes, {date, date, full}\",\"todayDateSelected\":\"Danes, izbrano: {date, date, full}\"}");
var $36cbdcce92af5213$exports = {};
$36cbdcce92af5213$exports = JSON.parse("{\"dateSelected\":\"Izabran {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknite da dovršite opseg izabranih datuma\",\"next\":\"Sledeći\",\"previous\":\"Prethodni\",\"selectedDateDescription\":\"Izabrani datum: {date, date, full}\",\"selectedRangeDescription\":\"Izabrani opseg: od {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknite da započnete opseg izabranih datuma\",\"todayDate\":\"Danas, {date, date, full}\",\"todayDateSelected\":\"Danas, izabran {date, date, full}\"}");
var $ce53fa032c8abdc9$exports = {};
$ce53fa032c8abdc9$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} har valts\",\"finishRangeSelectionPrompt\":\"Klicka för att avsluta val av datumintervall\",\"next\":\"Nästa\",\"previous\":\"Föregående\",\"selectedDateDescription\":\"Valt datum: {date, date, full}\",\"selectedRangeDescription\":\"Valt intervall: {start, date, long} till {end, date, long}\",\"startRangeSelectionPrompt\":\"Klicka för att välja datumintervall\",\"todayDate\":\"I dag, {date, date, full}\",\"todayDateSelected\":\"I dag, {date, date, full} har valts\"}");
var $358703e281d51beb$exports = {};
$358703e281d51beb$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} seçildi\",\"finishRangeSelectionPrompt\":\"Tarih aralığı seçimini tamamlamak için tıklayın\",\"next\":\"Sonraki\",\"previous\":\"Önceki\",\"selectedDateDescription\":\"Seçili Tarih: {date, date, full}\",\"selectedRangeDescription\":\"Seçili Aralık: {start, date, long} - {end, date, long}\",\"startRangeSelectionPrompt\":\"Tarih aralığı seçimini başlatmak için tıklayın\",\"todayDate\":\"Bugün, {date, date, full}\",\"todayDateSelected\":\"Bugün, {date, date, full} seçildi\"}");
var $16bef71241a84fd2$exports = {};
$16bef71241a84fd2$exports = JSON.parse("{\"dateSelected\":\"Вибрано: {date, date, full}\",\"finishRangeSelectionPrompt\":\"Натисніть, щоб завершити вибір діапазону дат\",\"next\":\"Наступний\",\"previous\":\"Попередній\",\"selectedDateDescription\":\"Вибрана дата: {date, date, full}\",\"selectedRangeDescription\":\"Вибраний діапазон: від {start, date, long} до {end, date, long}\",\"startRangeSelectionPrompt\":\"Натисніть, щоб почати вибір діапазону дат\",\"todayDate\":\"Сьогодні: {date, date, full}\",\"todayDateSelected\":\"Сьогодні вибрано: {date, date, full}\"}");
var $c80940728ad8dc0d$exports = {};
$c80940728ad8dc0d$exports = JSON.parse("{\"dateSelected\":\"已选择 {date, date, full}\",\"finishRangeSelectionPrompt\":\"单击以完成选择日期范围\",\"next\":\"下一页\",\"previous\":\"上一页\",\"selectedDateDescription\":\"选定的日期: {date, date, full}\",\"selectedRangeDescription\":\"选定的范围: {start, date, long} 到 {end, date, long}\",\"startRangeSelectionPrompt\":\"单击以开始选择日期范围\",\"todayDate\":\"今天({date, date, full})\",\"todayDateSelected\":\"已选择今天({date, date, full})\"}");
var $ec192a5a83cfafeb$exports = {};
$ec192a5a83cfafeb$exports = JSON.parse("{\"dateSelected\":\"已選取 {date, date, full}\",\"finishRangeSelectionPrompt\":\"按一下以完成選取日期範圍\",\"next\":\"下一頁\",\"previous\":\"上一頁\",\"selectedDateDescription\":\"選取日期: {date, date, full}\",\"selectedRangeDescription\":\"選取範圍: {start, date, long} 至 {end, date, long}\",\"startRangeSelectionPrompt\":\"按一下以開始選取日期範圍\",\"todayDate\":\"今日,{date, date, full}\",\"todayDateSelected\":\"今日,已選取 {date, date, full}\"}");
$f87cd00fb2ba0f23$exports = {
"ar-AE": $1fedb39dedbf7c51$exports,
"bg-BG": $524ada6153e36bf5$exports,
"cs-CZ": $181053d31fc585a6$exports,
"da-DK": $87f1f2ee75c25d27$exports,
"de-DE": $3018d278e45fefcf$exports,
"el-GR": $880b624ba6c377b6$exports,
"en-US": $6a7e3934431e9523$exports,
"es-ES": $4c458303ff44205c$exports,
"et-EE": $4b6ec4ab19a96fff$exports,
"fi-FI": $a5184a366ed55e98$exports,
"fr-FR": $094c11f0389b0f6c$exports,
"he-IL": $5b28c6b8eb99673e$exports,
"hr-HR": $519824243c1aad60$exports,
"hu-HU": $2fde332abe847288$exports,
"it-IT": $b266f7fa452e8e83$exports,
"ja-JP": $3528fd03237947e3$exports,
"ko-KR": $398f3b7902d2708f$exports,
"lt-LT": $ebaae1c76687311e$exports,
"lv-LV": $3ecb31d6694563f6$exports,
"nb-NO": $26dc2e2c103f178c$exports,
"nl-NL": $6bfd45b83a7d37dd$exports,
"pl-PL": $6f70d036cac4bd46$exports,
"pt-BR": $a227ce57c671783d$exports,
"pt-PT": $97acad4758696d87$exports,
"ro-RO": $010069c7d7fbbea3$exports,
"ru-RU": $0ba9c30c48c8d602$exports,
"sk-SK": $6873e95bd7af7559$exports,
"sl-SI": $ce3c7852583668e3$exports,
"sr-SP": $36cbdcce92af5213$exports,
"sv-SE": $ce53fa032c8abdc9$exports,
"tr-TR": $358703e281d51beb$exports,
"uk-UA": $16bef71241a84fd2$exports,
"zh-CN": $c80940728ad8dc0d$exports,
"zh-TW": $ec192a5a83cfafeb$exports
};
const $df1d8e967e73ec8e$export$3ddff89c59628ee7 = new WeakMap();
function $df1d8e967e73ec8e$export$b6df97c887c38e1a(state) {
let formatMessage = $jzHdg$reactariai18n.useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($f87cd00fb2ba0f23$exports)));
let start, end;
if ('highlightedRange' in state) ({ start: start , end: end } = state.highlightedRange || {
});
else start = end = state.value;
let anchorDate = 'anchorDate' in state ? state.anchorDate : null;
return $jzHdg$react.useMemo(()=>{
// No message if currently selecting a range, or there is nothing highlighted.
if (!anchorDate && start && end) {
// Use a single date message if the start and end dates are the same day,
// otherwise include both dates.
if ($jzHdg$internationalizeddate.isSameDay(start, end)) return formatMessage('selectedDateDescription', {
date: start.toDate(state.timeZone)
});
else return formatMessage('selectedRangeDescription', {
start: start.toDate(state.timeZone),
end: end.toDate(state.timeZone)
});
}
return '';
}, [
start,
end,
anchorDate,
state.timeZone,
formatMessage
]);
}
function $df1d8e967e73ec8e$export$31afe65d91ef6e8(startDate, endDate, timeZone) {
let monthFormatter = $jzHdg$reactariai18n.useDateFormatter({
month: 'long',
year: 'numeric',
era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,
calendar: startDate.calendar.identifier,
timeZone: timeZone
});
let dateFormatter = $jzHdg$reactariai18n.useDateFormatter({
dateStyle: 'long',
calendar: startDate.calendar.identifier,
timeZone: timeZone
});
return $jzHdg$react.useMemo(()=>{
// Special case for month granularity. Format as a single month if only a
// single month is visible, otherwise format as a range of months.
if ($jzHdg$internationalizeddate.isSameDay(startDate, $jzHdg$internationalizeddate.startOfMonth(startDate))) {
if ($jzHdg$internationalizeddate.isSameDay(endDate, $jzHdg$internationalizeddate.endOfMonth(startDate))) return monthFormatter.format(startDate.toDate(timeZone));
else if ($jzHdg$internationalizeddate.isSameDay(endDate, $jzHdg$internationalizeddate.endOfMonth(endDate))) return monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}
return dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}, [
startDate,
endDate,
monthFormatter,
dateFormatter,
timeZone
]);
}
function $02ef492a56b91cb2$export$d652b3ea2d672d5b(props, state) {
let formatMessage = $jzHdg$reactariai18n.useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($f87cd00fb2ba0f23$exports)));
let calendarId = $jzHdg$reactariautils.useId(props.id);
let visibleRangeDescription = $df1d8e967e73ec8e$export$31afe65d91ef6e8(state.visibleRange.start, state.visibleRange.end, state.timeZone);
// Announce when the visible date range changes
$jzHdg$reactariautils.useUpdateEffect(()=>{
// only when pressing the Previous or Next button
if (!state.isFocused) $jzHdg$reactarialiveannouncer.announce(visibleRangeDescription);
}, [
visibleRangeDescription
]);
// Announce when the selected value changes
let selectedDateDescription = $df1d8e967e73ec8e$export$b6df97c887c38e1a(state);
$jzHdg$reactariautils.useUpdateEffect(()=>{
if (selectedDateDescription) $jzHdg$reactarialiveannouncer.announce(selectedDateDescription, 'polite', 4000);
// handle an update to the caption that describes the currently selected range, to announce the new value
}, [
selectedDateDescription
]);
let descriptionProps = $jzHdg$reactariautils.useDescription(visibleRangeDescription);
// Label the child grid elements by the group element if it is labelled.
$df1d8e967e73ec8e$export$3ddff89c59628ee7.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);
// If the next or previous buttons become disabled while they are focused, move focus to the calendar body.
let nextFocused = $jzHdg$react.useRef(false);
let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();
if (nextDisabled && nextFocused.current) {
nextFocused.current = false;
state.setFocused(true);
}
let previousFocused = $jzHdg$react.useRef(false);
let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();
if (previousDisabled && previousFocused.current) {
previousFocused.current = false;
state.setFocused(true);
}
return {
calendarProps: $jzHdg$reactariautils.mergeProps(descriptionProps, {
role: 'group',
id: calendarId,
'aria-label': props['aria-label'],
'aria-labelledby': props['aria-labelledby']
}),
nextButtonProps: {
onPress: ()=>state.focusNextPage()
,
'aria-label': formatMessage('next'),
isDisabled: nextDisabled,
onFocus: ()=>nextFocused.current = true
,
onBlur: ()=>nextFocused.current = false
},
prevButtonProps: {
onPress: ()=>state.focusPreviousPage()
,
'aria-label': formatMessage('previous'),
isDisabled: previousDisabled,
onFocus: ()=>previousFocused.current = true
,
onBlur: ()=>previousFocused.current = false
},
title: visibleRangeDescription
};
}
function $20e845123e697a89$export$3ee915f8151bd4f1(props, state) {
return $02ef492a56b91cb2$export$d652b3ea2d672d5b(props, state);
}
var $c49ada48cbc48220$exports = {};
$parcel$export($c49ada48cbc48220$exports, "useRangeCalendar", () => $c49ada48cbc48220$export$87e0539f600c24e5);
function $c49ada48cbc48220$export$87e0539f600c24e5(props, state, ref2) {
let res = $02ef492a56b91cb2$export$d652b3ea2d672d5b(props, state);
res.nextButtonProps.id = $jzHdg$reactariautils.useId();
res.prevButtonProps.id = $jzHdg$reactariautils.useId();
// We need to ignore virtual pointer events from VoiceOver due to these bugs.
// https://bugs.webkit.org/show_bug.cgi?id=222627
// https://bugs.webkit.org/show_bug.cgi?id=223202
// usePress also does this and waits for the following click event before firing.
// We need to match that here otherwise this will fire before the press event in
// useCalendarCell, causing range selection to not work properly.
let isVirtualClick = $jzHdg$react.useRef(false);
$jzHdg$reactariautils.useEvent($jzHdg$react.useRef(window), 'pointerdown', (e)=>{
isVirtualClick.current = e.width === 0 && e.height === 0;
});
// Stop range selection when pressing or releasing a pointer outside the calendar body,
// except when pressing the next or previous buttons to switch months.
let endDragging = (e)=>{
var ref, ref1;
if (isVirtualClick.current) {
isVirtualClick.current = false;
return;
}
state.setDragging(false);
if (!state.anchorDate) return;
let target = e.target;
let body = document.getElementById(res.calendarProps.id);
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();
};
$jzHdg$reactariautils.useEvent($jzHdg$react.useRef(window), 'pointerup', endDragging);
$jzHdg$reactariautils.useEvent($jzHdg$react.useRef(window), 'pointercancel', endDragging);
// Prevent touch scrolling while dragging
$jzHdg$reactariautils.useEvent(ref2, 'touchmove', (e)=>{
if (state.isDragging) e.preventDefault();
}, {
passive: false,
capture: true
});
return res;
}
var $a07388a797d86b95$exports = {};
$parcel$export($a07388a797d86b95$exports, "useCalendarGrid", () => $a07388a797d86b95$export$cb95147730a423f5);
function $a07388a797d86b95$export$cb95147730a423f5(props, state) {
let { startDate: startDate = state.visibleRange.start , endDate: endDate = state.visibleRange.end } = props;
let { direction: direction } = $jzHdg$reactariai18n.useLocale();
let onKeyDown = (e)=>{
switch(e.key){
case 'Enter':
case ' ':
e.preventDefault();
state.selectFocusedDate();
break;
case 'PageUp':
e.preventDefault();
if (e.shiftKey) state.focusPreviousSection();
else state.focusPreviousPage();
break;
case 'PageDown':
e.preventDefault();
if (e.shiftKey) state.focusNextSection();
else state.focusNextPage();
break;
case 'End':
e.preventDefault();
state.focusPageEnd();
break;
case 'Home':
e.preventDefault();
state.focusPageStart();
break;
case 'ArrowLeft':
e.preventDefault();
if (direction === 'rtl') state.focusNextDay();
else state.focusPreviousDay();
break;
case 'ArrowUp':
e.preventDefault();
state.focusPreviousRow();
break;
case 'ArrowRight':
e.preventDefault();
if (direction === 'rtl') state.focusPreviousDay();
else state.focusNextDay();
break;
case 'ArrowDown':
e.preventDefault();
state.focusNextRow();
break;
case 'Escape':
// Cancel the selection.
if ('setAnchorDate' in state) {
e.preventDefault();
state.setAnchorDate(null);
}
break;
}
};
let selectedDateDescription = $df1d8e967e73ec8e$export$b6df97c887c38e1a(state);
let descriptionProps = $jzHdg$reactariautils.useDescription(selectedDateDescription);
let visibleRangeDescription = $df1d8e967e73ec8e$export$31afe65d91ef6e8(startDate, endDate, state.timeZone);
let labelProps = $jzHdg$reactariautils.useLabels({
'aria-label': visibleRangeDescription,
'aria-labelledby': $df1d8e967e73ec8e$export$3ddff89c59628ee7.get(state)
});
let dayFormatter = $jzHdg$reactariai18n.useDateFormatter({
weekday: 'narrow',
timeZone: state.timeZone
});
let dayFormatterLong = $jzHdg$reactariai18n.useDateFormatter({
weekday: 'long',
timeZone: state.timeZone
});
let { locale: locale } = $jzHdg$reactariai18n.useLocale();
let weekStart = $jzHdg$internationalizeddate.startOfWeek(state.visibleRange.start, locale);
let weekDays = [
...new Array(7).keys()
].map((index)=>{
let date = weekStart.add({
days: index
});
let dateDay = date.toDate(state.timeZone);
let narrow = dayFormatter.format(dateDay);
let long = dayFormatterLong.format(dateDay);
return {
narrow: narrow,
long: long
};
});
return {
gridProps: $jzHdg$reactariautils.mergeProps(descriptionProps, labelProps, {
role: 'grid',
'aria-readonly': state.isReadOnly || null,
'aria-disabled': state.isDisabled || null,
'aria-multiselectable': 'highlightedRange' in state || undefined,
onKeyDown: onKeyDown,
onFocus: ()=>state.setFocused(true)
,
onBlur: ()=>state.setFocused(false)
}),
weekDays: weekDays
};
}
var $4d833327a32c9193$exports = {};
$parcel$export($4d833327a32c9193$exports, "useCalendarCell", () => $4d833327a32c9193$export$136073280381448e);
function $4d833327a32c9193$export$136073280381448e(props, state, ref) {
let { date: date , isDisabled: isDisabled } = props;
let formatMessage = $jzHdg$reactariai18n.useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($f87cd00fb2ba0f23$exports)));
let dateFormatter = $jzHdg$reactariai18n.useDateFormatter({
weekday: 'long',
day: 'numeric',
month: 'long',
year: 'numeric',
era: date.calendar.identifier !== 'gregory' ? 'long' : undefined,
timeZone: state.timeZone
});
let isSelected = state.isSelected(date);
let isFocused = state.isCellFocused(date);
isDisabled = isDisabled || state.isCellDisabled(date);
let isUnavailable = state.isCellUnavailable(date);
let isSelectable = !isDisabled && !isUnavailable;
// For performance, reuse the same date object as before if the new date prop is the same.
// This allows subsequent useMemo results to be reused.
let lastDate = $jzHdg$react.useRef(null);
if (lastDate.current && $jzHdg$internationalizeddate.isEqualDay(date, lastDate.current)) date = lastDate.current;
lastDate.current = date;
let nativeDate = $jzHdg$react.useMemo(()=>date.toDate(state.timeZone)
, [
date,
state.timeZone
]);
// aria-label should be localize Day of week, Month, Day and Year without Time.
let isDateToday = $jzHdg$internationalizeddate.isToday(date, state.timeZone);
let label = $jzHdg$react.useMemo(()=>{
if (isDateToday) // If date is today, set appropriate string depending on selected state:
return formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {
date: nativeDate
});
else if (isSelected) // If date is selected but not today:
return formatMessage('dateSelected', {
date: nativeDate
});
return dateFormatter.format(nativeDate);
}, [
dateFormatter,
nativeDate,
formatMessage,
isSelected,
isDateToday
]);
// When a cell is focused and this is a range calendar, add a prompt to help
// screenreader users know that they are in a range selection mode.
if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {
let rangeSelectionPrompt = '';
// If selection has started add "click to finish selecting range"
if (state.anchorDate) rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');
else rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');
// Append to aria-label
if (rangeSelectionPrompt) label = `${label} (${rangeSelectionPrompt})`;
}
let isAnchorPressed = $jzHdg$react.useRef(false);
let isRangeBoundaryPressed = $jzHdg$react.useRef(false);
let touchDragTimerRef = $jzHdg$react.useRef(null);
let { pressProps: pressProps , isPressed: isPressed } = $jzHdg$reactariainteractions.usePress({
// When dragging to select a range, we don't want dragging over the original anchor
// again to trigger onPressStart. Cancel presses immediately when the pointer exits.
shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,
preventFocusOnPress: true,
isDisabled: !isSelectable,
onPressStart (e) {
if (state.isReadOnly) {
state.setFocusedDate(date);
return;
}
if ('highlightedRange' in state && !state.anchorDate && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {
// Allow dragging the start or end date of a range to modify it
// rather than starting a new selection.
if (state.highlightedRange) {
if ($jzHdg$internationalizeddate.isSameDay(date, state.highlightedRange.start)) {
state.setAnchorDate(state.highlightedRange.end);
state.setFocusedDate(date);
state.setDragging(true);
isRangeBoundaryPressed.current = true;
return;
} else if ($jzHdg$internationalizeddate.isSameDay(date, state.highlightedRange.end)) {
state.setAnchorDate(state.highlightedRange.start);
state.setFocusedDate(date);
state.setDragging(true);
isRangeBoundaryPressed.current = true;
return;
}
}
let startDragging = ()=>{
state.setDragging(true);
touchDragTimerRef.current = null;
state.selectDate(date);
state.setFocusedDate(date);
isAnchorPressed.current = true;
};
// Start selection on mouse/touch down so users can drag to select a range.
// On touch, delay dragging to determine if the user really meant to scroll.
if (e.pointerType === 'touch') touchDragTimerRef.current = setTimeout(startDragging, 200);
else startDragging();
}
},
onPressEnd () {
isRangeBoundaryPressed.current = false;
isAnchorPressed.current = false;
clearTimeout(touchDragTimerRef.current);
touchDragTimerRef.current = null;
},
onPress () {
// For non-range selection, always select on press up.
if (!('anchorDate' in state) && !state.isReadOnly) {
state.selectDate(date);
state.setFocusedDate(date);
}
},
onPressUp (e) {
if (state.isReadOnly) return;
// If the user tapped quickly, the date won't be selected yet and the
// timer will still be in progress. In this case, select the date on touch up.
// Timer is cleared in onPressEnd.
if ('anchorDate' in state && touchDragTimerRef.current) {
state.selectDate(date);
state.setFocusedDate(date);
}
if ('anchorDate' in state) {
if (isRangeBoundaryPressed.current) // When clicking on the start or end date of an already selected range,
// start a new selection on press up to also allow dragging the date to
// change the existing range.
state.setAnchorDate(date);
else if (state.anchorDate && !isAnchorPressed.current) {
// When releasing a drag or pressing the end date of a range, select it.
state.selectDate(date);
state.setFocusedDate(date);
} else if (e.pointerType === 'keyboard' && !state.anchorDate) {
// For range selection, auto-advance the focused date by one if using keyboard.
// This gives an indication that you're selecting a range rather than a single date.
// For mouse, this is unnecessary because users will see the indication on hover. For screen readers,
// there will be an announcement to "click to finish selecting range" (above).
state.selectDate(date);
let nextDay = date.add({
days: 1
});
if (state.isInvalid(nextDay)) nextDay = date.subtract({
days: 1
});
if (!state.isInvalid(nextDay)) state.setFocusedDate(nextDay);
} else if (e.pointerType === 'virtual') {
// For screen readers, just select the date on click.
state.selectDate(date);
state.setFocusedDate(date);
}
}
}
});
let tabIndex = null;
if (!isDisabled) tabIndex = $jzHdg$internationalizeddate.isSameDay(date, state.focusedDate) ? 0 : -1;
// Focus the button in the DOM when the state updates.
$jzHdg$react.useEffect(()=>{
if (isFocused && ref.current) $jzHdg$reactariautils.focusWithoutScrolling(ref.current);
}, [
isFocused,
ref
]);
let cellDateFormatter = $jzHdg$reactariai18n.useDateFormatter({
day: 'numeric',
timeZone: state.timeZone,
calendar: date.calendar.identifier
});
let formattedDate = $jzHdg$react.useMemo(()=>cellDateFormatter.format(nativeDate)
, [
cellDateFormatter,
nativeDate
]);
return {
cellProps: {
role: 'gridcell',
'aria-disabled': !isSelectable || null,
'aria-selected': isSelectable ? isSelected : null
},
buttonProps: $jzHdg$reactariautils.mergeProps(pressProps, {
onFocus () {
if (!isDisabled) state.setFocusedDate(date);
},
tabIndex: tabIndex,
role: 'button',
'aria-disabled': !isSelectable || null,
'aria-label': label,
onPointerEnter (e) {
// Highlight the date on hover or drag over a date when selecting a range.
if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) state.highlightDate(date);
},
onPointerDown (e) {
// This is necessary on touch devices to allow dragging
// outside the original pressed element.
// (JSDOM does not support this)
if ('releasePointerCapture' in e.target) e.target.releasePointerCapture(e.pointerId);
},
onContextMenu (e) {
// Prevent context menu on long press.
e.preventDefault();
}
}),
isPressed: isPressed,
isFocused: isFocused,
isSelected: isSelected,
isDisabled: isDisabled,
isUnavailable: isUnavailable,
isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,
formattedDate: formattedDate
};
}
var $c22e9cfd2d8c9e8e$exports = {};
$parcel$exportWildcard(module.exports, $20e845123e697a89$exports);
$parcel$exportWildcard(module.exports, $c49ada48cbc48220$exports);
$parcel$exportWildcard(module.exports, $a07388a797d86b95$exports);
$parcel$exportWildcard(module.exports, $4d833327a32c9193$exports);
$parcel$exportWildcard(module.exports, $c22e9cfd2d8c9e8e$exports);
//# sourceMappingURL=main.js.map

@@ -1,714 +0,23 @@

import {announce as $amWdn$announce} from "@react-aria/live-announcer";
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";
import {useMessageFormatter as $amWdn$useMessageFormatter, useDateFormatter as $amWdn$useDateFormatter, useLocale as $amWdn$useLocale} from "@react-aria/i18n";
import {useRef as $amWdn$useRef, useMemo as $amWdn$useMemo, useEffect as $amWdn$useEffect} from "react";
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";
import {usePress as $amWdn$usePress} from "@react-aria/interactions";
import {useCalendar as $9942cad8a072a530$export$3ee915f8151bd4f1} from "./useCalendar.module.js";
import {useRangeCalendar as $46a4342aab3d8076$export$87e0539f600c24e5} from "./useRangeCalendar.module.js";
import {useCalendarGrid as $e3031d1f8c9d64eb$export$cb95147730a423f5} from "./useCalendarGrid.module.js";
import {useCalendarCell as $36a0ac60f04457c5$export$136073280381448e} from "./useCalendarCell.module.js";
function $parcel$export(e, n, v, s) {
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
}
function $parcel$interopDefault(a) {
return a && a.__esModule ? a.default : a;
}
var $9942cad8a072a530$exports = {};
/*
* Copyright 2020 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
$parcel$export($9942cad8a072a530$exports, "useCalendar", () => $9942cad8a072a530$export$3ee915f8151bd4f1);
var $0fbdc3429b133a50$exports = {};
var $39324ace0d945f59$exports = {};
$39324ace0d945f59$exports = JSON.parse("{\"dateSelected\":\"تم تحديد {date, date, full}\",\"finishRangeSelectionPrompt\":\"انقر لإنهاء عملية تحديد نطاق التاريخ\",\"next\":\"التالي\",\"previous\":\"السابق\",\"selectedDateDescription\":\"التاريخ المحدد: {date, date, full}\",\"selectedRangeDescription\":\"النطاق المحدد: {start, date, long} إلى {end, date, long}\",\"startRangeSelectionPrompt\":\"انقر لبدء عملية تحديد نطاق التاريخ\",\"todayDate\":\"اليوم، {date, date, full}\",\"todayDateSelected\":\"اليوم، تم تحديد {date, date, full}\"}");
var $1830a539e98c7baf$exports = {};
$1830a539e98c7baf$exports = JSON.parse("{\"dateSelected\":\"избрани {date, date, full}\",\"finishRangeSelectionPrompt\":\"Натиснете, за да довършите избора на времеви интервал\",\"next\":\"Напред\",\"previous\":\"Назад\",\"selectedDateDescription\":\"Избрана дата: {date, date, full}\",\"selectedRangeDescription\":\"Избран интервал: от {start, date, long} до {end, date, long}\",\"startRangeSelectionPrompt\":\"Натиснете, за да пристъпите към избора на времеви интервал\",\"todayDate\":\"Днес {date, date, full}\",\"todayDateSelected\":\"Днес са избрани {date, date, full}\"}");
var $f4b92528965aab97$exports = {};
$f4b92528965aab97$exports = JSON.parse("{\"dateSelected\":\"Vybráno: {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknutím dokončíte výběr rozsahu dat\",\"next\":\"Další\",\"previous\":\"Předchozí\",\"selectedDateDescription\":\"Zvolené datum: {date, date, full}\",\"selectedRangeDescription\":\"Zvolený rozsah: {start, date, long} až {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknutím zahájíte výběr rozsahu dat\",\"todayDate\":\"Dnes, {date, date, full}\",\"todayDateSelected\":\"Vybrán dnešek: {date, date, full}\"}");
var $1cd578ef0547c8f1$exports = {};
$1cd578ef0547c8f1$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valgt\",\"finishRangeSelectionPrompt\":\"Klik for at fuldføre valg af datoområde\",\"next\":\"Næste\",\"previous\":\"Forrige\",\"selectedDateDescription\":\"Valgt dato: {date, date, full}\",\"selectedRangeDescription\":\"Valgt område: {start, date, long} til {end, date, long}\",\"startRangeSelectionPrompt\":\"Klik for at starte valg af datoområde\",\"todayDate\":\"I dag, {date, date, full}\",\"todayDateSelected\":\"I dag, {date, date, full} valgt\"}");
var $db55a8973925d619$exports = {};
$db55a8973925d619$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} ausgewählt\",\"finishRangeSelectionPrompt\":\"Klicken, um die Auswahl des Datumsbereichs zu beenden\",\"next\":\"Weiter\",\"previous\":\"Zurück\",\"selectedDateDescription\":\"Ausgewähltes Datum: {date, date, full}\",\"selectedRangeDescription\":\"Bereich auswählen: {start, date, long} bis {end, date, long}\",\"startRangeSelectionPrompt\":\"Klicken, um die Auswahl des Datumsbereichs zu beginnen\",\"todayDate\":\"Heute, {date, date, full}\",\"todayDateSelected\":\"Heute, {date, date, full} ausgewählt\"}");
var $ec6937d58566d443$exports = {};
$ec6937d58566d443$exports = JSON.parse("{\"dateSelected\":\"Επιλέχτηκε {date, date, full}\",\"finishRangeSelectionPrompt\":\"Κάντε κλικ για να ολοκληρώσετε την επιλογή εύρους ημερομηνιών\",\"next\":\"Επόμενο\",\"previous\":\"Προηγούμενο\",\"selectedDateDescription\":\"Επιλεγμένη ημερομηνία: {date, date, full}\",\"selectedRangeDescription\":\"Επιλεγμένο εύρος: {start, date, long} έως {end, date, long}\",\"startRangeSelectionPrompt\":\"Κάντε κλικ για να ξεκινήσετε την επιλογή εύρους ημερομηνιών\",\"todayDate\":\"Σήμερα, {date, date, full}\",\"todayDateSelected\":\"Σήμερα, επιλέχτηκε {date, date, full}\"}");
var $1f5cea0742dc284a$exports = {};
$1f5cea0742dc284a$exports = JSON.parse("{\"previous\":\"Previous\",\"next\":\"Next\",\"selectedDateDescription\":\"Selected Date: {date, date, full}\",\"selectedRangeDescription\":\"Selected Range: {start, date, long} to {end, date, long}\",\"todayDate\":\"Today, {date, date, full}\",\"todayDateSelected\":\"Today, {date, date, full} selected\",\"dateSelected\":\"{date, date, full} selected\",\"startRangeSelectionPrompt\":\"Click to start selecting date range\",\"finishRangeSelectionPrompt\":\"Click to finish selecting date range\"}");
var $2ca7ea366384817b$exports = {};
$2ca7ea366384817b$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} seleccionado\",\"finishRangeSelectionPrompt\":\"Haga clic para terminar de seleccionar rango de fechas\",\"next\":\"Siguiente\",\"previous\":\"Anterior\",\"selectedDateDescription\":\"Fecha seleccionada: {date, date, full}\",\"selectedRangeDescription\":\"Seleccionar rango: {start, date, long} a {end, date, long}\",\"startRangeSelectionPrompt\":\"Haga clic para comenzar a seleccionar un rango de fechas\",\"todayDate\":\"Hoy, {date, date, full}\",\"todayDateSelected\":\"Hoy, {date, date, full} seleccionado\"}");
var $97874a7fe9cd091f$exports = {};
$97874a7fe9cd091f$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valitud\",\"finishRangeSelectionPrompt\":\"Klõpsake kuupäevavahemiku valimise lõpetamiseks\",\"next\":\"Järgmine\",\"previous\":\"Eelmine\",\"selectedDateDescription\":\"Valitud kuupäev: {date, date, full}\",\"selectedRangeDescription\":\"Valitud vahemik: {start, date, long} kuni {end, date, long}\",\"startRangeSelectionPrompt\":\"Klõpsake kuupäevavahemiku valimiseks\",\"todayDate\":\"Täna {date, date, full}\",\"todayDateSelected\":\"Täna {date, date, full} valitud\"}");
var $5d376b7fce1a45b2$exports = {};
$5d376b7fce1a45b2$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valittu\",\"finishRangeSelectionPrompt\":\"Lopeta päivämääräalueen valinta napsauttamalla tätä.\",\"next\":\"Seuraava\",\"previous\":\"Edellinen\",\"selectedDateDescription\":\"Valittu päivämäärä: {date, date, full}\",\"selectedRangeDescription\":\"Valittu alue: {start, date, long} - {end, date, long}\",\"startRangeSelectionPrompt\":\"Aloita päivämääräalueen valinta napsauttamalla tätä.\",\"todayDate\":\"Tänään, {date, date, full}\",\"todayDateSelected\":\"Tänään, {date, date, full} valittu\"}");
var $3bf722b362aaf54d$exports = {};
$3bf722b362aaf54d$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} sélectionné\",\"finishRangeSelectionPrompt\":\"Cliquer pour finir de sélectionner la plage de dates\",\"next\":\"Suivant\",\"previous\":\"Précédent\",\"selectedDateDescription\":\"Date sélectionnée : {date, date, full}\",\"selectedRangeDescription\":\"Plage sélectionnée : {start, date, long} à {end, date, long}\",\"startRangeSelectionPrompt\":\"Cliquer pour commencer à sélectionner la plage de dates\",\"todayDate\":\"Aujourd’hui, {date, date, full}\",\"todayDateSelected\":\"Aujourd’hui, {date, date, full} sélectionné\"}");
var $38c43f8322316031$exports = {};
$38c43f8322316031$exports = JSON.parse("{\"dateSelected\":\"התאריך {date, date, full} שנבחר\",\"finishRangeSelectionPrompt\":\"חץ כדי לסיים את בחירת טווח התאריכים\",\"next\":\"הבא\",\"previous\":\"הקודם\",\"selectedDateDescription\":\"התאריך שנבחר: {date, date, full}\",\"selectedRangeDescription\":\"הטווח שנבחר: מ-{start, date, long} ועד {end, date, long}\",\"startRangeSelectionPrompt\":\"לחץ כדי להתחיל בבחירת טווח התאריכים\",\"todayDate\":\"היום, {date, date, full}\",\"todayDateSelected\":\"היום, התאריך {date, date, full} שנבחר\"}");
var $c90e0f32b44630bf$exports = {};
$c90e0f32b44630bf$exports = JSON.parse("{\"dateSelected\":\"Odabran {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknite da dovršite raspon odabranih datuma\",\"next\":\"Sljedeći\",\"previous\":\"Prethodni\",\"selectedDateDescription\":\"Odabrani datum: {date, date, full}\",\"selectedRangeDescription\":\"Odabrani raspon: od {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknite da započnete raspon odabranih datuma\",\"todayDate\":\"Danas, {date, date, full}\",\"todayDateSelected\":\"Danas, odabran {date, date, full}\"}");
var $715875e6e7a338f4$exports = {};
$715875e6e7a338f4$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} kijelölve\",\"finishRangeSelectionPrompt\":\"Kattintson a dátumtartomány kijelölésének befejezéséhez\",\"next\":\"Következő\",\"previous\":\"Előző\",\"selectedDateDescription\":\"Kijelölt dátum: {date, date, full}\",\"selectedRangeDescription\":\"Kijelölt tartomány: {start, date, long} – {end, date, long}\",\"startRangeSelectionPrompt\":\"Kattintson a dátumtartomány kijelölésének indításához\",\"todayDate\":\"Ma, {date, date, full}\",\"todayDateSelected\":\"Ma, {date, date, full} kijelölve\"}");
var $37d77c66e34daccf$exports = {};
$37d77c66e34daccf$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} selezionato\",\"finishRangeSelectionPrompt\":\"Fai clic per completare la selezione dell’intervallo di date\",\"next\":\"Successivo\",\"previous\":\"Precedente\",\"selectedDateDescription\":\"Data selezionata: {date, date, full}\",\"selectedRangeDescription\":\"Intervallo selezionato: da {start, date, long} a {end, date, long}\",\"startRangeSelectionPrompt\":\"Fai clic per selezionare l’intervallo di date\",\"todayDate\":\"Oggi, {date, date, full}\",\"todayDateSelected\":\"Oggi, {date, date, full} selezionato\"}");
var $542f39aee29303c3$exports = {};
$542f39aee29303c3$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} を選択\",\"finishRangeSelectionPrompt\":\"クリックして日付範囲の選択を終了\",\"next\":\"次へ\",\"previous\":\"前へ\",\"selectedDateDescription\":\"日付を選択:{date, date, full}\",\"selectedRangeDescription\":\"範囲を選択:{start, date, long} から {end, date, long}\",\"startRangeSelectionPrompt\":\"クリックして日付範囲の選択を開始\",\"todayDate\":\"本日、{date, date, full}\",\"todayDateSelected\":\"本日、{date, date, full} を選択\"}");
var $22a5f0623ea73e4f$exports = {};
$22a5f0623ea73e4f$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} 선택함\",\"finishRangeSelectionPrompt\":\"날짜 범위 선택을 완료하려면 클릭하십시오.\",\"next\":\"다음\",\"previous\":\"이전\",\"selectedDateDescription\":\"선택한 날짜: {date, date, full}\",\"selectedRangeDescription\":\"선택한 범위: {start, date, long} ~ {end, date, long}\",\"startRangeSelectionPrompt\":\"날짜 범위 선택을 시작하려면 클릭하십시오.\",\"todayDate\":\"오늘, {date, date, full}\",\"todayDateSelected\":\"오늘, {date, date, full} 선택함\"}");
var $522380d13d62cba0$exports = {};
$522380d13d62cba0$exports = JSON.parse("{\"dateSelected\":\"Pasirinkta {date, date, full}\",\"finishRangeSelectionPrompt\":\"Spustelėkite, kad baigtumėte pasirinkti datų intervalą\",\"next\":\"Paskesnis\",\"previous\":\"Ankstesnis\",\"selectedDateDescription\":\"Pasirinkta data: {date, date, full}\",\"selectedRangeDescription\":\"Pasirinktas intervalas: nuo {start, date, long} iki {end, date, long}\",\"startRangeSelectionPrompt\":\"Spustelėkite, kad pradėtumėte pasirinkti datų intervalą\",\"todayDate\":\"Šiandien, {date, date, full}\",\"todayDateSelected\":\"Šiandien, pasirinkta {date, date, full}\"}");
var $8a7bc830b2fe6485$exports = {};
$8a7bc830b2fe6485$exports = JSON.parse("{\"dateSelected\":\"Atlasīts {date, date, full}\",\"finishRangeSelectionPrompt\":\"Noklikšķiniet, lai pabeigtu datumu diapazona atlasi\",\"next\":\"Tālāk\",\"previous\":\"Atpakaļ\",\"selectedDateDescription\":\"Atlasītais datums: {date, date, full}\",\"selectedRangeDescription\":\"Atlasītais diapazons: {start, date, long} līdz {end, date, long}\",\"startRangeSelectionPrompt\":\"Noklikšķiniet, lai sāktu datumu diapazona atlasi\",\"todayDate\":\"Šodiena, {date, date, full}\",\"todayDateSelected\":\"Atlasīta šodiena, {date, date, full}\"}");
var $9fac9c044470683b$exports = {};
$9fac9c044470683b$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} valgt\",\"finishRangeSelectionPrompt\":\"Klikk for å fullføre valg av datoområde\",\"next\":\"Neste\",\"previous\":\"Forrige\",\"selectedDateDescription\":\"Valgt dato: {date, date, full}\",\"selectedRangeDescription\":\"Valgt område: {start, date, long} til {end, date, long}\",\"startRangeSelectionPrompt\":\"Klikk for å starte valg av datoområde\",\"todayDate\":\"I dag, {date, date, full}\",\"todayDateSelected\":\"I dag, {date, date, full} valgt\"}");
var $b127d3569efb1449$exports = {};
$b127d3569efb1449$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} geselecteerd\",\"finishRangeSelectionPrompt\":\"Klik om de selectie van het datumbereik te voltooien\",\"next\":\"Volgende\",\"previous\":\"Vorige\",\"selectedDateDescription\":\"Geselecteerde datum: {date, date, full}\",\"selectedRangeDescription\":\"Geselecteerd bereik: {start, date, long} t/m {end, date, long}\",\"startRangeSelectionPrompt\":\"Klik om het datumbereik te selecteren\",\"todayDate\":\"Vandaag, {date, date, full}\",\"todayDateSelected\":\"Vandaag, {date, date, full} geselecteerd\"}");
var $51404a4090633490$exports = {};
$51404a4090633490$exports = JSON.parse("{\"dateSelected\":\"Wybrano {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknij, aby zakończyć wybór zakresu dat\",\"next\":\"Dalej\",\"previous\":\"Wstecz\",\"selectedDateDescription\":\"Wybrana data: {date, date, full}\",\"selectedRangeDescription\":\"Wybrany zakres: {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknij, aby rozpocząć wybór zakresu dat\",\"todayDate\":\"Dzisiaj {date, date, full}\",\"todayDateSelected\":\"Dzisiaj wybrano {date, date, full}\"}");
var $e5e6a3fe3b4527df$exports = {};
$e5e6a3fe3b4527df$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} selecionado\",\"finishRangeSelectionPrompt\":\"Clique para concluir a seleção do intervalo de datas\",\"next\":\"Próximo\",\"previous\":\"Anterior\",\"selectedDateDescription\":\"Data selecionada: {date, date, full}\",\"selectedRangeDescription\":\"Intervalo selecionado: {start, date, long} até {end, date, long}\",\"startRangeSelectionPrompt\":\"Clique para iniciar a seleção do intervalo de datas\",\"todayDate\":\"Hoje, {date, date, full}\",\"todayDateSelected\":\"Hoje, {date, date, full} selecionado\"}");
var $c519dcadcbb1ee47$exports = {};
$c519dcadcbb1ee47$exports = JSON.parse("{\"dateSelected\":\"{data, data, completo} selecionado\",\"finishRangeSelectionPrompt\":\"Clique para terminar de selecionar o intervalo de datas\",\"next\":\"Próximo\",\"previous\":\"Anterior\",\"selectedDateDescription\":\"Data Selecionada: {data, data, completo}\",\"selectedRangeDescription\":\"Selecionar Intervalo: {início, data, longo} a {término, data, longo}\",\"startRangeSelectionPrompt\":\"Clique para começar a selecionar o intervalo de datas\",\"todayDate\":\"Hoje, {date, date, full}\",\"todayDateSelected\":\"Hoje, {date, date, full} selecionado\"}");
var $e5aa0186ca7889c6$exports = {};
$e5aa0186ca7889c6$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} selectată\",\"finishRangeSelectionPrompt\":\"Apăsaţi pentru a finaliza selecţia razei pentru dată\",\"next\":\"Următorul\",\"previous\":\"Înainte\",\"selectedDateDescription\":\"Dată selectată: {date, date, full}\",\"selectedRangeDescription\":\"Selectaţi raza: {start, date, long} la {end, date, long}\",\"startRangeSelectionPrompt\":\"Apăsaţi pentru a începe selecţia razei pentru dată\",\"todayDate\":\"Astăzi, {date, date, full}\",\"todayDateSelected\":\"Dată, {date, date, full} selectată\"}");
var $5b907f5fa3eee652$exports = {};
$5b907f5fa3eee652$exports = JSON.parse("{\"dateSelected\":\"выбрано {date, date, full}\",\"finishRangeSelectionPrompt\":\"Щелкните, чтобы завершить выбор диапазона дат\",\"next\":\"Далее\",\"previous\":\"Назад\",\"selectedDateDescription\":\"Выбранная дата: {date, date, full}\",\"selectedRangeDescription\":\"Выбранный диапазон: {start, date, long} – {end, date, long}\",\"startRangeSelectionPrompt\":\"Щелкните, чтобы начать выбор диапазона дат\",\"todayDate\":\"Сегодня, {date, date, full}\",\"todayDateSelected\":\"Сегодня, выбрано {date, date, full}\"}");
var $1b4c51359c99cf79$exports = {};
$1b4c51359c99cf79$exports = JSON.parse("{\"dateSelected\":\"Vybratý dátum {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknutím dokončíte výber rozsahu dátumov\",\"next\":\"Nasledujúce\",\"previous\":\"Predchádzajúce\",\"selectedDateDescription\":\"Vybratý dátum: {date, date, full}\",\"selectedRangeDescription\":\"Vybratý rozsah dátumov: {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknutím spustíte výber rozsahu dátumov\",\"todayDate\":\"Dnešný dátum, {date, date, full}\",\"todayDateSelected\":\"Vybratý dnešný dátum, {date, date, full}\"}");
var $02e4e6a4608cc6f3$exports = {};
$02e4e6a4608cc6f3$exports = JSON.parse("{\"dateSelected\":\"izbrano: {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknite za dokončanje izbire datumskega obsega\",\"next\":\"Naprej\",\"previous\":\"Nazaj\",\"selectedDateDescription\":\"Izbrani datum: {date, date, full}\",\"selectedRangeDescription\":\"Izbrani razpon: {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknite za začetek izbire datumskega obsega\",\"todayDate\":\"Danes, {date, date, full}\",\"todayDateSelected\":\"Danes, izbrano: {date, date, full}\"}");
var $6dd2fbaad93b6878$exports = {};
$6dd2fbaad93b6878$exports = JSON.parse("{\"dateSelected\":\"Izabran {date, date, full}\",\"finishRangeSelectionPrompt\":\"Kliknite da dovršite opseg izabranih datuma\",\"next\":\"Sledeći\",\"previous\":\"Prethodni\",\"selectedDateDescription\":\"Izabrani datum: {date, date, full}\",\"selectedRangeDescription\":\"Izabrani opseg: od {start, date, long} do {end, date, long}\",\"startRangeSelectionPrompt\":\"Kliknite da započnete opseg izabranih datuma\",\"todayDate\":\"Danas, {date, date, full}\",\"todayDateSelected\":\"Danas, izabran {date, date, full}\"}");
var $33ea59bfe6e804e0$exports = {};
$33ea59bfe6e804e0$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} har valts\",\"finishRangeSelectionPrompt\":\"Klicka för att avsluta val av datumintervall\",\"next\":\"Nästa\",\"previous\":\"Föregående\",\"selectedDateDescription\":\"Valt datum: {date, date, full}\",\"selectedRangeDescription\":\"Valt intervall: {start, date, long} till {end, date, long}\",\"startRangeSelectionPrompt\":\"Klicka för att välja datumintervall\",\"todayDate\":\"I dag, {date, date, full}\",\"todayDateSelected\":\"I dag, {date, date, full} har valts\"}");
var $4603b0d0246969b2$exports = {};
$4603b0d0246969b2$exports = JSON.parse("{\"dateSelected\":\"{date, date, full} seçildi\",\"finishRangeSelectionPrompt\":\"Tarih aralığı seçimini tamamlamak için tıklayın\",\"next\":\"Sonraki\",\"previous\":\"Önceki\",\"selectedDateDescription\":\"Seçili Tarih: {date, date, full}\",\"selectedRangeDescription\":\"Seçili Aralık: {start, date, long} - {end, date, long}\",\"startRangeSelectionPrompt\":\"Tarih aralığı seçimini başlatmak için tıklayın\",\"todayDate\":\"Bugün, {date, date, full}\",\"todayDateSelected\":\"Bugün, {date, date, full} seçildi\"}");
var $82649816f530bb1b$exports = {};
$82649816f530bb1b$exports = JSON.parse("{\"dateSelected\":\"Вибрано: {date, date, full}\",\"finishRangeSelectionPrompt\":\"Натисніть, щоб завершити вибір діапазону дат\",\"next\":\"Наступний\",\"previous\":\"Попередній\",\"selectedDateDescription\":\"Вибрана дата: {date, date, full}\",\"selectedRangeDescription\":\"Вибраний діапазон: від {start, date, long} до {end, date, long}\",\"startRangeSelectionPrompt\":\"Натисніть, щоб почати вибір діапазону дат\",\"todayDate\":\"Сьогодні: {date, date, full}\",\"todayDateSelected\":\"Сьогодні вибрано: {date, date, full}\"}");
var $628e140a43dfb330$exports = {};
$628e140a43dfb330$exports = JSON.parse("{\"dateSelected\":\"已选择 {date, date, full}\",\"finishRangeSelectionPrompt\":\"单击以完成选择日期范围\",\"next\":\"下一页\",\"previous\":\"上一页\",\"selectedDateDescription\":\"选定的日期: {date, date, full}\",\"selectedRangeDescription\":\"选定的范围: {start, date, long} 到 {end, date, long}\",\"startRangeSelectionPrompt\":\"单击以开始选择日期范围\",\"todayDate\":\"今天({date, date, full})\",\"todayDateSelected\":\"已选择今天({date, date, full})\"}");
var $745937250cd4679c$exports = {};
$745937250cd4679c$exports = JSON.parse("{\"dateSelected\":\"已選取 {date, date, full}\",\"finishRangeSelectionPrompt\":\"按一下以完成選取日期範圍\",\"next\":\"下一頁\",\"previous\":\"上一頁\",\"selectedDateDescription\":\"選取日期: {date, date, full}\",\"selectedRangeDescription\":\"選取範圍: {start, date, long} 至 {end, date, long}\",\"startRangeSelectionPrompt\":\"按一下以開始選取日期範圍\",\"todayDate\":\"今日,{date, date, full}\",\"todayDateSelected\":\"今日,已選取 {date, date, full}\"}");
$0fbdc3429b133a50$exports = {
"ar-AE": $39324ace0d945f59$exports,
"bg-BG": $1830a539e98c7baf$exports,
"cs-CZ": $f4b92528965aab97$exports,
"da-DK": $1cd578ef0547c8f1$exports,
"de-DE": $db55a8973925d619$exports,
"el-GR": $ec6937d58566d443$exports,
"en-US": $1f5cea0742dc284a$exports,
"es-ES": $2ca7ea366384817b$exports,
"et-EE": $97874a7fe9cd091f$exports,
"fi-FI": $5d376b7fce1a45b2$exports,
"fr-FR": $3bf722b362aaf54d$exports,
"he-IL": $38c43f8322316031$exports,
"hr-HR": $c90e0f32b44630bf$exports,
"hu-HU": $715875e6e7a338f4$exports,
"it-IT": $37d77c66e34daccf$exports,
"ja-JP": $542f39aee29303c3$exports,
"ko-KR": $22a5f0623ea73e4f$exports,
"lt-LT": $522380d13d62cba0$exports,
"lv-LV": $8a7bc830b2fe6485$exports,
"nb-NO": $9fac9c044470683b$exports,
"nl-NL": $b127d3569efb1449$exports,
"pl-PL": $51404a4090633490$exports,
"pt-BR": $e5e6a3fe3b4527df$exports,
"pt-PT": $c519dcadcbb1ee47$exports,
"ro-RO": $e5aa0186ca7889c6$exports,
"ru-RU": $5b907f5fa3eee652$exports,
"sk-SK": $1b4c51359c99cf79$exports,
"sl-SI": $02e4e6a4608cc6f3$exports,
"sr-SP": $6dd2fbaad93b6878$exports,
"sv-SE": $33ea59bfe6e804e0$exports,
"tr-TR": $4603b0d0246969b2$exports,
"uk-UA": $82649816f530bb1b$exports,
"zh-CN": $628e140a43dfb330$exports,
"zh-TW": $745937250cd4679c$exports
};
const $a074e1e2d0f0a665$export$3ddff89c59628ee7 = new WeakMap();
function $a074e1e2d0f0a665$export$b6df97c887c38e1a(state) {
let formatMessage = $amWdn$useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($0fbdc3429b133a50$exports)));
let start, end;
if ('highlightedRange' in state) ({ start: start , end: end } = state.highlightedRange || {
});
else start = end = state.value;
let anchorDate = 'anchorDate' in state ? state.anchorDate : null;
return $amWdn$useMemo(()=>{
// No message if currently selecting a range, or there is nothing highlighted.
if (!anchorDate && start && end) {
// Use a single date message if the start and end dates are the same day,
// otherwise include both dates.
if ($amWdn$isSameDay(start, end)) return formatMessage('selectedDateDescription', {
date: start.toDate(state.timeZone)
});
else return formatMessage('selectedRangeDescription', {
start: start.toDate(state.timeZone),
end: end.toDate(state.timeZone)
});
}
return '';
}, [
start,
end,
anchorDate,
state.timeZone,
formatMessage
]);
}
function $a074e1e2d0f0a665$export$31afe65d91ef6e8(startDate, endDate, timeZone) {
let monthFormatter = $amWdn$useDateFormatter({
month: 'long',
year: 'numeric',
era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,
calendar: startDate.calendar.identifier,
timeZone: timeZone
});
let dateFormatter = $amWdn$useDateFormatter({
dateStyle: 'long',
calendar: startDate.calendar.identifier,
timeZone: timeZone
});
return $amWdn$useMemo(()=>{
// Special case for month granularity. Format as a single month if only a
// single month is visible, otherwise format as a range of months.
if ($amWdn$isSameDay(startDate, $amWdn$startOfMonth(startDate))) {
if ($amWdn$isSameDay(endDate, $amWdn$endOfMonth(startDate))) return monthFormatter.format(startDate.toDate(timeZone));
else if ($amWdn$isSameDay(endDate, $amWdn$endOfMonth(endDate))) return monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}
return dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}, [
startDate,
endDate,
monthFormatter,
dateFormatter,
timeZone
]);
}
function $c4acc1de3ab169cf$export$d652b3ea2d672d5b(props, state) {
let formatMessage = $amWdn$useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($0fbdc3429b133a50$exports)));
let calendarId = $amWdn$useId(props.id);
let visibleRangeDescription = $a074e1e2d0f0a665$export$31afe65d91ef6e8(state.visibleRange.start, state.visibleRange.end, state.timeZone);
// Announce when the visible date range changes
$amWdn$useUpdateEffect(()=>{
// only when pressing the Previous or Next button
if (!state.isFocused) $amWdn$announce(visibleRangeDescription);
}, [
visibleRangeDescription
]);
// Announce when the selected value changes
let selectedDateDescription = $a074e1e2d0f0a665$export$b6df97c887c38e1a(state);
$amWdn$useUpdateEffect(()=>{
if (selectedDateDescription) $amWdn$announce(selectedDateDescription, 'polite', 4000);
// handle an update to the caption that describes the currently selected range, to announce the new value
}, [
selectedDateDescription
]);
let descriptionProps = $amWdn$useDescription(visibleRangeDescription);
// Label the child grid elements by the group element if it is labelled.
$a074e1e2d0f0a665$export$3ddff89c59628ee7.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);
// If the next or previous buttons become disabled while they are focused, move focus to the calendar body.
let nextFocused = $amWdn$useRef(false);
let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();
if (nextDisabled && nextFocused.current) {
nextFocused.current = false;
state.setFocused(true);
}
let previousFocused = $amWdn$useRef(false);
let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();
if (previousDisabled && previousFocused.current) {
previousFocused.current = false;
state.setFocused(true);
}
return {
calendarProps: $amWdn$mergeProps(descriptionProps, {
role: 'group',
id: calendarId,
'aria-label': props['aria-label'],
'aria-labelledby': props['aria-labelledby']
}),
nextButtonProps: {
onPress: ()=>state.focusNextPage()
,
'aria-label': formatMessage('next'),
isDisabled: nextDisabled,
onFocus: ()=>nextFocused.current = true
,
onBlur: ()=>nextFocused.current = false
},
prevButtonProps: {
onPress: ()=>state.focusPreviousPage()
,
'aria-label': formatMessage('previous'),
isDisabled: previousDisabled,
onFocus: ()=>previousFocused.current = true
,
onBlur: ()=>previousFocused.current = false
},
title: visibleRangeDescription
};
}
function $9942cad8a072a530$export$3ee915f8151bd4f1(props, state) {
return $c4acc1de3ab169cf$export$d652b3ea2d672d5b(props, state);
}
var $46a4342aab3d8076$exports = {};
$parcel$export($46a4342aab3d8076$exports, "useRangeCalendar", () => $46a4342aab3d8076$export$87e0539f600c24e5);
function $46a4342aab3d8076$export$87e0539f600c24e5(props, state, ref2) {
let res = $c4acc1de3ab169cf$export$d652b3ea2d672d5b(props, state);
res.nextButtonProps.id = $amWdn$useId();
res.prevButtonProps.id = $amWdn$useId();
// We need to ignore virtual pointer events from VoiceOver due to these bugs.
// https://bugs.webkit.org/show_bug.cgi?id=222627
// https://bugs.webkit.org/show_bug.cgi?id=223202
// usePress also does this and waits for the following click event before firing.
// We need to match that here otherwise this will fire before the press event in
// useCalendarCell, causing range selection to not work properly.
let isVirtualClick = $amWdn$useRef(false);
$amWdn$useEvent($amWdn$useRef(window), 'pointerdown', (e)=>{
isVirtualClick.current = e.width === 0 && e.height === 0;
});
// Stop range selection when pressing or releasing a pointer outside the calendar body,
// except when pressing the next or previous buttons to switch months.
let endDragging = (e)=>{
var ref, ref1;
if (isVirtualClick.current) {
isVirtualClick.current = false;
return;
}
state.setDragging(false);
if (!state.anchorDate) return;
let target = e.target;
let body = document.getElementById(res.calendarProps.id);
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();
};
$amWdn$useEvent($amWdn$useRef(window), 'pointerup', endDragging);
$amWdn$useEvent($amWdn$useRef(window), 'pointercancel', endDragging);
// Prevent touch scrolling while dragging
$amWdn$useEvent(ref2, 'touchmove', (e)=>{
if (state.isDragging) e.preventDefault();
}, {
passive: false,
capture: true
});
return res;
}
var $e3031d1f8c9d64eb$exports = {};
$parcel$export($e3031d1f8c9d64eb$exports, "useCalendarGrid", () => $e3031d1f8c9d64eb$export$cb95147730a423f5);
function $e3031d1f8c9d64eb$export$cb95147730a423f5(props, state) {
let { startDate: startDate = state.visibleRange.start , endDate: endDate = state.visibleRange.end } = props;
let { direction: direction } = $amWdn$useLocale();
let onKeyDown = (e)=>{
switch(e.key){
case 'Enter':
case ' ':
e.preventDefault();
state.selectFocusedDate();
break;
case 'PageUp':
e.preventDefault();
if (e.shiftKey) state.focusPreviousSection();
else state.focusPreviousPage();
break;
case 'PageDown':
e.preventDefault();
if (e.shiftKey) state.focusNextSection();
else state.focusNextPage();
break;
case 'End':
e.preventDefault();
state.focusPageEnd();
break;
case 'Home':
e.preventDefault();
state.focusPageStart();
break;
case 'ArrowLeft':
e.preventDefault();
if (direction === 'rtl') state.focusNextDay();
else state.focusPreviousDay();
break;
case 'ArrowUp':
e.preventDefault();
state.focusPreviousRow();
break;
case 'ArrowRight':
e.preventDefault();
if (direction === 'rtl') state.focusPreviousDay();
else state.focusNextDay();
break;
case 'ArrowDown':
e.preventDefault();
state.focusNextRow();
break;
case 'Escape':
// Cancel the selection.
if ('setAnchorDate' in state) {
e.preventDefault();
state.setAnchorDate(null);
}
break;
}
};
let selectedDateDescription = $a074e1e2d0f0a665$export$b6df97c887c38e1a(state);
let descriptionProps = $amWdn$useDescription(selectedDateDescription);
let visibleRangeDescription = $a074e1e2d0f0a665$export$31afe65d91ef6e8(startDate, endDate, state.timeZone);
let labelProps = $amWdn$useLabels({
'aria-label': visibleRangeDescription,
'aria-labelledby': $a074e1e2d0f0a665$export$3ddff89c59628ee7.get(state)
});
let dayFormatter = $amWdn$useDateFormatter({
weekday: 'narrow',
timeZone: state.timeZone
});
let dayFormatterLong = $amWdn$useDateFormatter({
weekday: 'long',
timeZone: state.timeZone
});
let { locale: locale } = $amWdn$useLocale();
let weekStart = $amWdn$startOfWeek(state.visibleRange.start, locale);
let weekDays = [
...new Array(7).keys()
].map((index)=>{
let date = weekStart.add({
days: index
});
let dateDay = date.toDate(state.timeZone);
let narrow = dayFormatter.format(dateDay);
let long = dayFormatterLong.format(dateDay);
return {
narrow: narrow,
long: long
};
});
return {
gridProps: $amWdn$mergeProps(descriptionProps, labelProps, {
role: 'grid',
'aria-readonly': state.isReadOnly || null,
'aria-disabled': state.isDisabled || null,
'aria-multiselectable': 'highlightedRange' in state || undefined,
onKeyDown: onKeyDown,
onFocus: ()=>state.setFocused(true)
,
onBlur: ()=>state.setFocused(false)
}),
weekDays: weekDays
};
}
var $36a0ac60f04457c5$exports = {};
$parcel$export($36a0ac60f04457c5$exports, "useCalendarCell", () => $36a0ac60f04457c5$export$136073280381448e);
function $36a0ac60f04457c5$export$136073280381448e(props, state, ref) {
let { date: date , isDisabled: isDisabled } = props;
let formatMessage = $amWdn$useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($0fbdc3429b133a50$exports)));
let dateFormatter = $amWdn$useDateFormatter({
weekday: 'long',
day: 'numeric',
month: 'long',
year: 'numeric',
era: date.calendar.identifier !== 'gregory' ? 'long' : undefined,
timeZone: state.timeZone
});
let isSelected = state.isSelected(date);
let isFocused = state.isCellFocused(date);
isDisabled = isDisabled || state.isCellDisabled(date);
let isUnavailable = state.isCellUnavailable(date);
let isSelectable = !isDisabled && !isUnavailable;
// For performance, reuse the same date object as before if the new date prop is the same.
// This allows subsequent useMemo results to be reused.
let lastDate = $amWdn$useRef(null);
if (lastDate.current && $amWdn$isEqualDay(date, lastDate.current)) date = lastDate.current;
lastDate.current = date;
let nativeDate = $amWdn$useMemo(()=>date.toDate(state.timeZone)
, [
date,
state.timeZone
]);
// aria-label should be localize Day of week, Month, Day and Year without Time.
let isDateToday = $amWdn$isToday(date, state.timeZone);
let label = $amWdn$useMemo(()=>{
if (isDateToday) // If date is today, set appropriate string depending on selected state:
return formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {
date: nativeDate
});
else if (isSelected) // If date is selected but not today:
return formatMessage('dateSelected', {
date: nativeDate
});
return dateFormatter.format(nativeDate);
}, [
dateFormatter,
nativeDate,
formatMessage,
isSelected,
isDateToday
]);
// When a cell is focused and this is a range calendar, add a prompt to help
// screenreader users know that they are in a range selection mode.
if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {
let rangeSelectionPrompt = '';
// If selection has started add "click to finish selecting range"
if (state.anchorDate) rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');
else rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');
// Append to aria-label
if (rangeSelectionPrompt) label = `${label} (${rangeSelectionPrompt})`;
}
let isAnchorPressed = $amWdn$useRef(false);
let isRangeBoundaryPressed = $amWdn$useRef(false);
let touchDragTimerRef = $amWdn$useRef(null);
let { pressProps: pressProps , isPressed: isPressed } = $amWdn$usePress({
// When dragging to select a range, we don't want dragging over the original anchor
// again to trigger onPressStart. Cancel presses immediately when the pointer exits.
shouldCancelOnPointerExit: 'anchorDate' in state && !!state.anchorDate,
preventFocusOnPress: true,
isDisabled: !isSelectable,
onPressStart (e) {
if (state.isReadOnly) {
state.setFocusedDate(date);
return;
}
if ('highlightedRange' in state && !state.anchorDate && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {
// Allow dragging the start or end date of a range to modify it
// rather than starting a new selection.
if (state.highlightedRange) {
if ($amWdn$isSameDay(date, state.highlightedRange.start)) {
state.setAnchorDate(state.highlightedRange.end);
state.setFocusedDate(date);
state.setDragging(true);
isRangeBoundaryPressed.current = true;
return;
} else if ($amWdn$isSameDay(date, state.highlightedRange.end)) {
state.setAnchorDate(state.highlightedRange.start);
state.setFocusedDate(date);
state.setDragging(true);
isRangeBoundaryPressed.current = true;
return;
}
}
let startDragging = ()=>{
state.setDragging(true);
touchDragTimerRef.current = null;
state.selectDate(date);
state.setFocusedDate(date);
isAnchorPressed.current = true;
};
// Start selection on mouse/touch down so users can drag to select a range.
// On touch, delay dragging to determine if the user really meant to scroll.
if (e.pointerType === 'touch') touchDragTimerRef.current = setTimeout(startDragging, 200);
else startDragging();
}
},
onPressEnd () {
isRangeBoundaryPressed.current = false;
isAnchorPressed.current = false;
clearTimeout(touchDragTimerRef.current);
touchDragTimerRef.current = null;
},
onPress () {
// For non-range selection, always select on press up.
if (!('anchorDate' in state) && !state.isReadOnly) {
state.selectDate(date);
state.setFocusedDate(date);
}
},
onPressUp (e) {
if (state.isReadOnly) return;
// If the user tapped quickly, the date won't be selected yet and the
// timer will still be in progress. In this case, select the date on touch up.
// Timer is cleared in onPressEnd.
if ('anchorDate' in state && touchDragTimerRef.current) {
state.selectDate(date);
state.setFocusedDate(date);
}
if ('anchorDate' in state) {
if (isRangeBoundaryPressed.current) // When clicking on the start or end date of an already selected range,
// start a new selection on press up to also allow dragging the date to
// change the existing range.
state.setAnchorDate(date);
else if (state.anchorDate && !isAnchorPressed.current) {
// When releasing a drag or pressing the end date of a range, select it.
state.selectDate(date);
state.setFocusedDate(date);
} else if (e.pointerType === 'keyboard' && !state.anchorDate) {
// For range selection, auto-advance the focused date by one if using keyboard.
// This gives an indication that you're selecting a range rather than a single date.
// For mouse, this is unnecessary because users will see the indication on hover. For screen readers,
// there will be an announcement to "click to finish selecting range" (above).
state.selectDate(date);
let nextDay = date.add({
days: 1
});
if (state.isInvalid(nextDay)) nextDay = date.subtract({
days: 1
});
if (!state.isInvalid(nextDay)) state.setFocusedDate(nextDay);
} else if (e.pointerType === 'virtual') {
// For screen readers, just select the date on click.
state.selectDate(date);
state.setFocusedDate(date);
}
}
}
});
let tabIndex = null;
if (!isDisabled) tabIndex = $amWdn$isSameDay(date, state.focusedDate) ? 0 : -1;
// Focus the button in the DOM when the state updates.
$amWdn$useEffect(()=>{
if (isFocused && ref.current) $amWdn$focusWithoutScrolling(ref.current);
}, [
isFocused,
ref
]);
let cellDateFormatter = $amWdn$useDateFormatter({
day: 'numeric',
timeZone: state.timeZone,
calendar: date.calendar.identifier
});
let formattedDate = $amWdn$useMemo(()=>cellDateFormatter.format(nativeDate)
, [
cellDateFormatter,
nativeDate
]);
return {
cellProps: {
role: 'gridcell',
'aria-disabled': !isSelectable || null,
'aria-selected': isSelectable ? isSelected : null
},
buttonProps: $amWdn$mergeProps(pressProps, {
onFocus () {
if (!isDisabled) state.setFocusedDate(date);
},
tabIndex: tabIndex,
role: 'button',
'aria-disabled': !isSelectable || null,
'aria-label': label,
onPointerEnter (e) {
// Highlight the date on hover or drag over a date when selecting a range.
if ('highlightDate' in state && (e.pointerType !== 'touch' || state.isDragging) && isSelectable) state.highlightDate(date);
},
onPointerDown (e) {
// This is necessary on touch devices to allow dragging
// outside the original pressed element.
// (JSDOM does not support this)
if ('releasePointerCapture' in e.target) e.target.releasePointerCapture(e.pointerId);
},
onContextMenu (e) {
// Prevent context menu on long press.
e.preventDefault();
}
}),
isPressed: isPressed,
isFocused: isFocused,
isSelected: isSelected,
isDisabled: isDisabled,
isUnavailable: isUnavailable,
isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,
formattedDate: formattedDate
};
}
var $34109fd41c960533$exports = {};
export {$9942cad8a072a530$export$3ee915f8151bd4f1 as useCalendar, $46a4342aab3d8076$export$87e0539f600c24e5 as useRangeCalendar, $e3031d1f8c9d64eb$export$cb95147730a423f5 as useCalendarGrid, $36a0ac60f04457c5$export$136073280381448e as useCalendarCell};
//# sourceMappingURL=module.js.map
import { AriaButtonProps } from "@react-types/button";
import { HTMLAttributes, RefObject } from "react";
import { CalendarProps, DateValue, RangeCalendarProps } from "@react-types/calendar";
import { DOMAttributes, FocusableElement, RefObject } from "@react-types/shared";
import { AriaCalendarProps, DateValue, AriaRangeCalendarProps } from "@react-types/calendar";
import { CalendarState, RangeCalendarState } from "@react-stately/calendar";

@@ -8,3 +8,3 @@ import { CalendarDate } from "@internationalized/date";

/** Props for the calendar grouping element. */
calendarProps: HTMLAttributes<HTMLElement>;
calendarProps: DOMAttributes;
/** Props for the next button. */

@@ -14,17 +14,7 @@ nextButtonProps: AriaButtonProps;

prevButtonProps: AriaButtonProps;
/** Props for the error message element, if any. */
errorMessageProps: DOMAttributes;
/** A description of the visible date range, for use in the calendar title. */
title: string;
}
export interface CalendarGridAria {
/** Props for the date grid element (e.g. `<table>`). */
gridProps: HTMLAttributes<HTMLElement>;
/** A list of week days formatted for the current locale, typically used in column headers. */
weekDays: WeekDay[];
}
interface WeekDay {
/** A short name (e.g. single letter) for the day. */
narrow: string;
/** The full day name. If not displayed visually, it should be used as the accessiblity name. */
long: string;
}
/**

@@ -34,3 +24,3 @@ * Provides the behavior and accessibility implementation for a calendar component.

*/
export function useCalendar<T extends DateValue>(props: CalendarProps<T>, state: CalendarState): CalendarAria;
export function useCalendar<T extends DateValue>(props: AriaCalendarProps<T>, state: CalendarState): CalendarAria;
/**

@@ -40,4 +30,4 @@ * Provides the behavior and accessibility implementation for a range calendar component.

*/
export function useRangeCalendar<T extends DateValue>(props: RangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<HTMLElement>): CalendarAria;
interface CalendarGridProps {
export function useRangeCalendar<T extends DateValue>(props: AriaRangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<FocusableElement | null>): CalendarAria;
export interface AriaCalendarGridProps {
/**

@@ -55,3 +45,17 @@ * The first date displayed in the calendar grid.

endDate?: CalendarDate;
/**
* The style of weekday names to display in the calendar grid header,
* e.g. single letter, abbreviation, or full day name.
* @default "narrow"
*/
weekdayStyle?: 'narrow' | 'short' | 'long';
}
export interface CalendarGridAria {
/** Props for the date grid element (e.g. `<table>`). */
gridProps: DOMAttributes;
/** Props for the grid header element (e.g. `<thead>`). */
headerProps: DOMAttributes;
/** A list of week day abbreviations formatted for the current locale, typically used in column headers. */
weekDays: string[];
}
/**

@@ -62,3 +66,3 @@ * Provides the behavior and accessibility implementation for a calendar grid component.

*/
export function useCalendarGrid(props: CalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria;
export function useCalendarGrid(props: AriaCalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria;
export interface AriaCalendarCellProps {

@@ -73,7 +77,7 @@ /** The date that this cell represents. */

}
interface CalendarCellAria {
export interface CalendarCellAria {
/** Props for the grid cell element (e.g. `<td>`). */
cellProps: HTMLAttributes<HTMLElement>;
cellProps: DOMAttributes;
/** Props for the button element within the cell. */
buttonProps: HTMLAttributes<HTMLElement>;
buttonProps: DOMAttributes;
/** Whether the cell is currently being pressed. */

@@ -105,2 +109,4 @@ isPressed: boolean;

isOutsideVisibleRange: boolean;
/** Whether the cell is part of an invalid selection. */
isInvalid: boolean;
/** The day number formatted according to the current locale. */

@@ -113,4 +119,5 @@ formattedDate: string;

*/
export function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement>): CalendarCellAria;
export function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement | null>): CalendarCellAria;
export type { AriaCalendarProps, AriaRangeCalendarProps, CalendarProps, DateValue, RangeCalendarProps } from '@react-types/calendar';
//# sourceMappingURL=types.d.ts.map
{
"name": "@react-aria/calendar",
"version": "3.0.0-nightly.3180+0bba35ae3",
"version": "3.0.0-nightly-641446f65-240905",
"description": "Spectrum UI components in React",

@@ -8,2 +8,7 @@ "license": "Apache-2.0",

"module": "dist/module.js",
"exports": {
"types": "./dist/types.d.ts",
"import": "./dist/import.mjs",
"require": "./dist/main.js"
},
"types": "dist/types.d.ts",

@@ -21,17 +26,16 @@ "source": "src/index.ts",

"dependencies": {
"@babel/runtime": "^7.6.2",
"@internationalized/date": "3.0.0-nightly.3180+0bba35ae3",
"@react-aria/i18n": "3.0.0-nightly.1481+0bba35ae3",
"@react-aria/interactions": "3.0.0-nightly.1481+0bba35ae3",
"@react-aria/live-announcer": "3.0.0-nightly.1481+0bba35ae3",
"@react-aria/utils": "3.0.0-nightly.1481+0bba35ae3",
"@react-stately/calendar": "3.0.0-nightly.1481+0bba35ae3",
"@react-types/button": "3.4.5-nightly.3180+0bba35ae3",
"@react-types/calendar": "3.0.0-nightly.3180+0bba35ae3",
"@react-types/shared": "3.0.0-nightly.1481+0bba35ae3",
"date-fns": "^1.30.1"
"@internationalized/date": "^3.0.0-nightly-641446f65-240905",
"@react-aria/i18n": "^3.0.0-nightly-641446f65-240905",
"@react-aria/interactions": "^3.0.0-nightly-641446f65-240905",
"@react-aria/live-announcer": "^3.0.0-nightly-641446f65-240905",
"@react-aria/utils": "^3.0.0-nightly-641446f65-240905",
"@react-stately/calendar": "^3.0.0-nightly-641446f65-240905",
"@react-types/button": "^3.0.0-nightly-641446f65-240905",
"@react-types/calendar": "^3.0.0-nightly-641446f65-240905",
"@react-types/shared": "^3.0.0-nightly-641446f65-240905",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0-rc.1",
"react-dom": "^16.8.0 || ^17.0.0-rc.1"
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0"
},

@@ -41,3 +45,3 @@ "publishConfig": {

},
"gitHead": "0bba35ae36b5d220570385215860d3ca3b549656"
}
"stableVersion": "3.5.11"
}

@@ -13,6 +13,10 @@ /*

export * from './useCalendar';
export * from './useRangeCalendar';
export * from './useCalendarGrid';
export * from './useCalendarCell';
export * from './types';
export {useCalendar} from './useCalendar';
export {useRangeCalendar} from './useRangeCalendar';
export {useCalendarGrid} from './useCalendarGrid';
export {useCalendarCell} from './useCalendarCell';
export type {AriaCalendarProps, AriaRangeCalendarProps, CalendarProps, DateValue, RangeCalendarProps} from '@react-types/calendar';
export type {CalendarAria} from './useCalendarBase';
export type {AriaCalendarGridProps, CalendarGridAria} from './useCalendarGrid';
export type {AriaCalendarCellProps, CalendarCellAria} from './useCalendarCell';

@@ -13,6 +13,5 @@ /*

import {CalendarAria} from './types';
import {CalendarProps, DateValue} from '@react-types/calendar';
import {AriaCalendarProps, DateValue} from '@react-types/calendar';
import {CalendarAria, useCalendarBase} from './useCalendarBase';
import {CalendarState} from '@react-stately/calendar';
import {useCalendarBase} from './useCalendarBase';

@@ -23,4 +22,4 @@ /**

*/
export function useCalendar<T extends DateValue>(props: CalendarProps<T>, state: CalendarState): CalendarAria {
export function useCalendar<T extends DateValue>(props: AriaCalendarProps<T>, state: CalendarState): CalendarAria {
return useCalendarBase(props, state);
}

@@ -14,19 +14,33 @@ /*

import {announce} from '@react-aria/live-announcer';
import {CalendarAria} from './types';
import {calendarIds, useSelectedDateDescription, useVisibleRangeDescription} from './utils';
import {AriaButtonProps} from '@react-types/button';
import {AriaLabelingProps, DOMAttributes, DOMProps} from '@react-types/shared';
import {CalendarPropsBase} from '@react-types/calendar';
import {CalendarState, RangeCalendarState} from '@react-stately/calendar';
import {DOMProps} from '@react-types/shared';
import {filterDOMProps, mergeProps, useLabels, useSlotId, useUpdateEffect} from '@react-aria/utils';
import {hookData, useSelectedDateDescription, useVisibleRangeDescription} from './utils';
// @ts-ignore
import intlMessages from '../intl/*.json';
import {mergeProps, useDescription, useId, useUpdateEffect} from '@react-aria/utils';
import {useMessageFormatter} from '@react-aria/i18n';
import {useRef} from 'react';
import {useLocalizedStringFormatter} from '@react-aria/i18n';
import {useState} from 'react';
export function useCalendarBase(props: CalendarPropsBase & DOMProps, state: CalendarState | RangeCalendarState): CalendarAria {
let formatMessage = useMessageFormatter(intlMessages);
let calendarId = useId(props.id);
export interface CalendarAria {
/** Props for the calendar grouping element. */
calendarProps: DOMAttributes,
/** Props for the next button. */
nextButtonProps: AriaButtonProps,
/** Props for the previous button. */
prevButtonProps: AriaButtonProps,
/** Props for the error message element, if any. */
errorMessageProps: DOMAttributes,
/** A description of the visible date range, for use in the calendar title. */
title: string
}
let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone);
export function useCalendarBase(props: CalendarPropsBase & DOMProps & AriaLabelingProps, state: CalendarState | RangeCalendarState): CalendarAria {
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/calendar');
let domProps = filterDOMProps(props);
let title = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, false);
let visibleRangeDescription = useVisibleRangeDescription(state.visibleRange.start, state.visibleRange.end, state.timeZone, true);
// Announce when the visible date range changes

@@ -49,45 +63,55 @@ useUpdateEffect(() => {

let descriptionProps = useDescription(visibleRangeDescription);
let errorMessageId = useSlotId([Boolean(props.errorMessage), props.isInvalid, props.validationState]);
// Label the child grid elements by the group element if it is labelled.
calendarIds.set(state, props['aria-label'] || props['aria-labelledby'] ? calendarId : null);
// Pass the label to the child grid elements.
hookData.set(state, {
ariaLabel: props['aria-label'],
ariaLabelledBy: props['aria-labelledby'],
errorMessageId,
selectedDateDescription
});
// If the next or previous buttons become disabled while they are focused, move focus to the calendar body.
let nextFocused = useRef(false);
let [nextFocused, setNextFocused] = useState(false);
let nextDisabled = props.isDisabled || state.isNextVisibleRangeInvalid();
if (nextDisabled && nextFocused.current) {
nextFocused.current = false;
if (nextDisabled && nextFocused) {
setNextFocused(false);
state.setFocused(true);
}
let previousFocused = useRef(false);
let [previousFocused, setPreviousFocused] = useState(false);
let previousDisabled = props.isDisabled || state.isPreviousVisibleRangeInvalid();
if (previousDisabled && previousFocused.current) {
previousFocused.current = false;
if (previousDisabled && previousFocused) {
setPreviousFocused(false);
state.setFocused(true);
}
let labelProps = useLabels({
id: props['id'],
'aria-label': [props['aria-label'], visibleRangeDescription].filter(Boolean).join(', '),
'aria-labelledby': props['aria-labelledby']
});
return {
calendarProps: mergeProps(descriptionProps, {
role: 'group',
id: calendarId,
'aria-label': props['aria-label'],
'aria-labelledby': props['aria-labelledby']
calendarProps: mergeProps(domProps, labelProps, {
role: 'application',
'aria-describedby': props['aria-describedby'] || undefined
}),
nextButtonProps: {
onPress: () => state.focusNextPage(),
'aria-label': formatMessage('next'),
'aria-label': stringFormatter.format('next'),
isDisabled: nextDisabled,
onFocus: () => nextFocused.current = true,
onBlur: () => nextFocused.current = false
onFocusChange: setNextFocused
},
prevButtonProps: {
onPress: () => state.focusPreviousPage(),
'aria-label': formatMessage('previous'),
'aria-label': stringFormatter.format('previous'),
isDisabled: previousDisabled,
onFocus: () => previousFocused.current = true,
onBlur: () => previousFocused.current = false
onFocusChange: setPreviousFocused
},
title: visibleRangeDescription
errorMessageProps: {
id: errorMessageId
},
title
};
}

@@ -15,9 +15,10 @@ /*

import {CalendarState, RangeCalendarState} from '@react-stately/calendar';
import {focusWithoutScrolling} from '@react-aria/utils';
import {HTMLAttributes, RefObject, useEffect, useMemo, useRef} from 'react';
import {DOMAttributes, RefObject} from '@react-types/shared';
import {focusWithoutScrolling, getScrollParent, mergeProps, scrollIntoViewport, useDeepMemo, useDescription} from '@react-aria/utils';
import {getEraFormat, hookData} from './utils';
import {getInteractionModality, usePress} from '@react-aria/interactions';
// @ts-ignore
import intlMessages from '../intl/*.json';
import {mergeProps} from '@react-aria/utils';
import {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';
import {usePress} from '@react-aria/interactions';
import {useDateFormatter, useLocalizedStringFormatter} from '@react-aria/i18n';
import {useEffect, useMemo, useRef} from 'react';

@@ -34,7 +35,7 @@ export interface AriaCalendarCellProps {

interface CalendarCellAria {
export interface CalendarCellAria {
/** Props for the grid cell element (e.g. `<td>`). */
cellProps: HTMLAttributes<HTMLElement>,
cellProps: DOMAttributes,
/** Props for the button element within the cell. */
buttonProps: HTMLAttributes<HTMLElement>,
buttonProps: DOMAttributes,
/** Whether the cell is currently being pressed. */

@@ -66,2 +67,4 @@ isPressed: boolean,

isOutsideVisibleRange: boolean,
/** Whether the cell is part of an invalid selection. */
isInvalid: boolean,
/** The day number formatted according to the current locale. */

@@ -75,5 +78,6 @@ formattedDate: string

*/
export function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement>): CalendarCellAria {
export function useCalendarCell(props: AriaCalendarCellProps, state: CalendarState | RangeCalendarState, ref: RefObject<HTMLElement | null>): CalendarCellAria {
let {date, isDisabled} = props;
let formatMessage = useMessageFormatter(intlMessages);
let {errorMessageId, selectedDateDescription} = hookData.get(state);
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/calendar');
let dateFormatter = useDateFormatter({

@@ -84,3 +88,3 @@ weekday: 'long',

year: 'numeric',
era: date.calendar.identifier !== 'gregory' ? 'long' : undefined,
era: getEraFormat(date),
timeZone: state.timeZone

@@ -93,12 +97,15 @@ });

let isSelectable = !isDisabled && !isUnavailable;
let isInvalid = state.isValueInvalid && (
'highlightedRange' in state
? !state.anchorDate && state.highlightedRange && date.compare(state.highlightedRange.start) >= 0 && date.compare(state.highlightedRange.end) <= 0
: state.value && isSameDay(state.value, date)
);
if (isInvalid) {
isSelected = true;
}
// For performance, reuse the same date object as before if the new date prop is the same.
// This allows subsequent useMemo results to be reused.
let lastDate = useRef(null);
if (lastDate.current && isEqualDay(date, lastDate.current)) {
date = lastDate.current;
}
lastDate.current = date;
date = useDeepMemo<CalendarDate>(date, isEqualDay);
let nativeDate = useMemo(() => date.toDate(state.timeZone), [date, state.timeZone]);

@@ -109,36 +116,52 @@

let label = useMemo(() => {
let label = '';
// If this is a range calendar, add a description of the full selected range
// to the first and last selected date.
if (
'highlightedRange' in state &&
state.value &&
!state.anchorDate &&
(isSameDay(date, state.value.start) || isSameDay(date, state.value.end))
) {
label = selectedDateDescription + ', ';
}
label += dateFormatter.format(nativeDate);
if (isDateToday) {
// If date is today, set appropriate string depending on selected state:
return formatMessage(isSelected ? 'todayDateSelected' : 'todayDate', {
date: nativeDate
label = stringFormatter.format(isSelected ? 'todayDateSelected' : 'todayDate', {
date: label
});
} else if (isSelected) {
// If date is selected but not today:
return formatMessage('dateSelected', {
date: nativeDate
label = stringFormatter.format('dateSelected', {
date: label
});
}
return dateFormatter.format(nativeDate);
}, [dateFormatter, nativeDate, formatMessage, isSelected, isDateToday]);
if (state.minValue && isSameDay(date, state.minValue)) {
label += ', ' + stringFormatter.format('minimumDate');
} else if (state.maxValue && isSameDay(date, state.maxValue)) {
label += ', ' + stringFormatter.format('maximumDate');
}
return label;
}, [dateFormatter, nativeDate, stringFormatter, isSelected, isDateToday, date, state, selectedDateDescription]);
// When a cell is focused and this is a range calendar, add a prompt to help
// screenreader users know that they are in a range selection mode.
let rangeSelectionPrompt = '';
if ('anchorDate' in state && isFocused && !state.isReadOnly && isSelectable) {
let rangeSelectionPrompt = '';
// If selection has started add "click to finish selecting range"
if (state.anchorDate) {
rangeSelectionPrompt = formatMessage('finishRangeSelectionPrompt');
rangeSelectionPrompt = stringFormatter.format('finishRangeSelectionPrompt');
// Otherwise, add "click to start selecting range" prompt
} else {
rangeSelectionPrompt = formatMessage('startRangeSelectionPrompt');
rangeSelectionPrompt = stringFormatter.format('startRangeSelectionPrompt');
}
// Append to aria-label
if (rangeSelectionPrompt) {
label = `${label} (${rangeSelectionPrompt})`;
}
}
let descriptionProps = useDescription(rangeSelectionPrompt);
let isAnchorPressed = useRef(false);

@@ -152,3 +175,3 @@ let isRangeBoundaryPressed = useRef(false);

preventFocusOnPress: true,
isDisabled: !isSelectable,
isDisabled: !isSelectable || state.isReadOnly,
onPressStart(e) {

@@ -163,3 +186,5 @@ if (state.isReadOnly) {

// rather than starting a new selection.
if (state.highlightedRange) {
// Don't allow dragging when invalid, or weird jumping behavior may occur as date ranges
// are constrained to available dates. The user will need to select a new range in this case.
if (state.highlightedRange && !isInvalid) {
if (isSameDay(date, state.highlightedRange.start)) {

@@ -265,2 +290,13 @@ state.setAnchorDate(state.highlightedRange.end);

focusWithoutScrolling(ref.current);
// Scroll into view if navigating with a keyboard, otherwise
// try not to shift the view under the user's mouse/finger.
// If in a overlay, scrollIntoViewport will only cause scrolling
// up to the overlay scroll body to prevent overlay shifting.
// Also only scroll into view if the cell actually got focused.
// There are some cases where the cell might be disabled or inside,
// an inert container and we don't want to scroll then.
if (getInteractionModality() !== 'pointer' && document.activeElement === ref.current) {
scrollIntoViewport(ref.current, {containingElement: getScrollParent(ref.current)});
}
}

@@ -275,3 +311,3 @@ }, [isFocused, ref]);

let formattedDate = useMemo(() => cellDateFormatter.format(nativeDate), [cellDateFormatter, nativeDate]);
let formattedDate = useMemo(() => cellDateFormatter.formatToParts(nativeDate).find(part => part.type === 'day').value, [cellDateFormatter, nativeDate]);

@@ -282,3 +318,4 @@ return {

'aria-disabled': !isSelectable || null,
'aria-selected': isSelectable ? isSelected : null
'aria-selected': isSelected || null,
'aria-invalid': isInvalid || null
},

@@ -295,2 +332,7 @@ buttonProps: mergeProps(pressProps, {

'aria-label': label,
'aria-invalid': isInvalid || null,
'aria-describedby': [
isInvalid ? errorMessageId : null,
descriptionProps['aria-describedby']
].filter(Boolean).join(' ') || undefined,
onPointerEnter(e) {

@@ -321,4 +363,5 @@ // Highlight the date on hover or drag over a date when selecting a range.

isOutsideVisibleRange: date.compare(state.visibleRange.start) < 0 || date.compare(state.visibleRange.end) > 0,
isInvalid,
formattedDate
};
}

@@ -13,11 +13,11 @@ /*

import {CalendarDate, startOfWeek} from '@internationalized/date';
import {CalendarGridAria} from './types';
import {calendarIds, useSelectedDateDescription, useVisibleRangeDescription} from './utils';
import {CalendarDate, startOfWeek, today} from '@internationalized/date';
import {CalendarState, RangeCalendarState} from '@react-stately/calendar';
import {KeyboardEvent} from 'react';
import {mergeProps, useDescription, useLabels} from '@react-aria/utils';
import {DOMAttributes} from '@react-types/shared';
import {hookData, useVisibleRangeDescription} from './utils';
import {KeyboardEvent, useMemo} from 'react';
import {mergeProps, useLabels} from '@react-aria/utils';
import {useDateFormatter, useLocale} from '@react-aria/i18n';
interface CalendarGridProps {
export interface AriaCalendarGridProps {
/**

@@ -34,5 +34,20 @@ * The first date displayed in the calendar grid.

*/
endDate?: CalendarDate
endDate?: CalendarDate,
/**
* The style of weekday names to display in the calendar grid header,
* e.g. single letter, abbreviation, or full day name.
* @default "narrow"
*/
weekdayStyle?: 'narrow' | 'short' | 'long'
}
export interface CalendarGridAria {
/** Props for the date grid element (e.g. `<table>`). */
gridProps: DOMAttributes,
/** Props for the grid header element (e.g. `<thead>`). */
headerProps: DOMAttributes,
/** A list of week day abbreviations formatted for the current locale, typically used in column headers. */
weekDays: string[]
}
/**

@@ -43,3 +58,3 @@ * Provides the behavior and accessibility implementation for a calendar grid component.

*/
export function useCalendarGrid(props: CalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria {
export function useCalendarGrid(props: AriaCalendarGridProps, state: CalendarState | RangeCalendarState): CalendarGridAria {
let {

@@ -61,26 +76,23 @@ startDate = state.visibleRange.start,

e.preventDefault();
if (e.shiftKey) {
state.focusPreviousSection();
} else {
state.focusPreviousPage();
}
e.stopPropagation();
state.focusPreviousSection(e.shiftKey);
break;
case 'PageDown':
e.preventDefault();
if (e.shiftKey) {
state.focusNextSection();
} else {
state.focusNextPage();
}
e.stopPropagation();
state.focusNextSection(e.shiftKey);
break;
case 'End':
e.preventDefault();
state.focusPageEnd();
e.stopPropagation();
state.focusSectionEnd();
break;
case 'Home':
e.preventDefault();
state.focusPageStart();
e.stopPropagation();
state.focusSectionStart();
break;
case 'ArrowLeft':
e.preventDefault();
e.stopPropagation();
if (direction === 'rtl') {

@@ -94,2 +106,3 @@ state.focusNextDay();

e.preventDefault();
e.stopPropagation();
state.focusPreviousRow();

@@ -99,2 +112,3 @@ break;

e.preventDefault();
e.stopPropagation();
if (direction === 'rtl') {

@@ -108,2 +122,3 @@ state.focusPreviousDay();

e.preventDefault();
e.stopPropagation();
state.focusNextRow();

@@ -121,28 +136,23 @@ break;

let selectedDateDescription = useSelectedDateDescription(state);
let descriptionProps = useDescription(selectedDateDescription);
let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone);
let visibleRangeDescription = useVisibleRangeDescription(startDate, endDate, state.timeZone, true);
let {ariaLabel, ariaLabelledBy} = hookData.get(state);
let labelProps = useLabels({
'aria-label': visibleRangeDescription,
'aria-labelledby': calendarIds.get(state)
'aria-label': [ariaLabel, visibleRangeDescription].filter(Boolean).join(', '),
'aria-labelledby': ariaLabelledBy
});
let dayFormatter = useDateFormatter({weekday: 'narrow', timeZone: state.timeZone});
let dayFormatterLong = useDateFormatter({weekday: 'long', timeZone: state.timeZone});
let dayFormatter = useDateFormatter({weekday: props.weekdayStyle || 'narrow', timeZone: state.timeZone});
let {locale} = useLocale();
let weekStart = startOfWeek(state.visibleRange.start, locale);
let weekDays = [...new Array(7).keys()].map((index) => {
let date = weekStart.add({days: index});
let dateDay = date.toDate(state.timeZone);
let narrow = dayFormatter.format(dateDay);
let long = dayFormatterLong.format(dateDay);
return {
narrow,
long
};
});
let weekDays = useMemo(() => {
let weekStart = startOfWeek(today(state.timeZone), locale);
return [...new Array(7).keys()].map((index) => {
let date = weekStart.add({days: index});
let dateDay = date.toDate(state.timeZone);
return dayFormatter.format(dateDay);
});
}, [locale, state.timeZone, dayFormatter]);
return {
gridProps: mergeProps(descriptionProps, labelProps, {
gridProps: mergeProps(labelProps, {
role: 'grid',

@@ -156,4 +166,9 @@ 'aria-readonly': state.isReadOnly || null,

}),
headerProps: {
// Column headers are hidden to screen readers to make navigating with a touch screen reader easier.
// The day names are already included in the label of each cell, so there's no need to announce them twice.
'aria-hidden': true
},
weekDays
};
}

@@ -13,8 +13,8 @@ /*

import {CalendarAria} from './types';
import {DateValue, RangeCalendarProps} from '@react-types/calendar';
import {AriaRangeCalendarProps, DateValue} from '@react-types/calendar';
import {CalendarAria, useCalendarBase} from './useCalendarBase';
import {FocusableElement, RefObject} from '@react-types/shared';
import {RangeCalendarState} from '@react-stately/calendar';
import {RefObject, useRef} from 'react';
import {useCalendarBase} from './useCalendarBase';
import {useEvent, useId} from '@react-aria/utils';
import {useEvent} from '@react-aria/utils';
import {useRef} from 'react';

@@ -25,6 +25,4 @@ /**

*/
export function useRangeCalendar<T extends DateValue>(props: RangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<HTMLElement>): CalendarAria {
export function useRangeCalendar<T extends DateValue>(props: AriaRangeCalendarProps<T>, state: RangeCalendarState, ref: RefObject<FocusableElement | null>): CalendarAria {
let res = useCalendarBase(props, state);
res.nextButtonProps.id = useId();
res.prevButtonProps.id = useId();

@@ -38,3 +36,4 @@ // We need to ignore virtual pointer events from VoiceOver due to these bugs.

let isVirtualClick = useRef(false);
useEvent(useRef(window), 'pointerdown', e => {
let windowRef = useRef(typeof window !== 'undefined' ? window : null);
useEvent(windowRef, 'pointerdown', e => {
isVirtualClick.current = e.width === 0 && e.height === 0;

@@ -45,3 +44,3 @@ });

// except when pressing the next or previous buttons to switch months.
let endDragging = e => {
let endDragging = (e: PointerEvent) => {
if (isVirtualClick.current) {

@@ -57,8 +56,7 @@ isVirtualClick.current = false;

let target = e.target as HTMLElement;
let body = document.getElementById(res.calendarProps.id);
let target = e.target as Element;
if (
(!body.contains(target) || !target.closest('[role="button"]')) &&
!document.getElementById(res.nextButtonProps.id)?.contains(target) &&
!document.getElementById(res.prevButtonProps.id)?.contains(target)
ref.current &&
ref.current.contains(document.activeElement) &&
(!ref.current.contains(target) || !target.closest('button, [role="button"]'))
) {

@@ -69,5 +67,14 @@ state.selectFocusedDate();

useEvent(useRef(window), 'pointerup', endDragging);
useEvent(useRef(window), 'pointercancel', endDragging);
useEvent(windowRef, 'pointerup', endDragging);
// Also stop range selection on blur, e.g. tabbing away from the calendar.
res.calendarProps.onBlur = e => {
if (!ref.current) {
return;
}
if ((!e.relatedTarget || !ref.current.contains(e.relatedTarget)) && state.anchorDate) {
state.selectFocusedDate();
}
};
// Prevent touch scrolling while dragging

@@ -74,0 +81,0 @@ useEvent(ref, 'touchmove', e => {

@@ -13,13 +13,25 @@ /*

import {CalendarDate, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';
import {CalendarDate, DateFormatter, endOfMonth, isSameDay, startOfMonth} from '@internationalized/date';
import {CalendarState, RangeCalendarState} from '@react-stately/calendar';
// @ts-ignore
import intlMessages from '../intl/*.json';
import {useDateFormatter, useMessageFormatter} from '@react-aria/i18n';
import type {LocalizedStringFormatter} from '@internationalized/string';
import {useDateFormatter, useLocalizedStringFormatter} from '@react-aria/i18n';
import {useMemo} from 'react';
export const calendarIds = new WeakMap<CalendarState | RangeCalendarState, string>();
interface HookData {
ariaLabel: string,
ariaLabelledBy: string,
errorMessageId: string,
selectedDateDescription: string
}
export const hookData = new WeakMap<CalendarState | RangeCalendarState, HookData>();
export function getEraFormat(date: CalendarDate): 'short' | undefined {
return date?.calendar.identifier === 'gregory' && date.era === 'BC' ? 'short' : undefined;
}
export function useSelectedDateDescription(state: CalendarState | RangeCalendarState) {
let formatMessage = useMessageFormatter(intlMessages);
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/calendar');

@@ -33,2 +45,11 @@ let start: CalendarDate, end: CalendarDate;

let dateFormatter = useDateFormatter({
weekday: 'long',
month: 'long',
year: 'numeric',
day: 'numeric',
era: getEraFormat(start) || getEraFormat(end),
timeZone: state.timeZone
});
let anchorDate = 'anchorDate' in state ? state.anchorDate : null;

@@ -41,16 +62,21 @@ return useMemo(() => {

if (isSameDay(start, end)) {
return formatMessage('selectedDateDescription', {date: start.toDate(state.timeZone)});
let date = dateFormatter.format(start.toDate(state.timeZone));
return stringFormatter.format('selectedDateDescription', {date});
} else {
return formatMessage('selectedRangeDescription', {start: start.toDate(state.timeZone), end: end.toDate(state.timeZone)});
let dateRange = formatRange(dateFormatter, stringFormatter, start, end, state.timeZone);
return stringFormatter.format('selectedRangeDescription', {dateRange});
}
}
return '';
}, [start, end, anchorDate, state.timeZone, formatMessage]);
}, [start, end, anchorDate, state.timeZone, stringFormatter, dateFormatter]);
}
export function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string) {
export function useVisibleRangeDescription(startDate: CalendarDate, endDate: CalendarDate, timeZone: string, isAria: boolean) {
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/calendar');
let era: any = getEraFormat(startDate) || getEraFormat(endDate);
let monthFormatter = useDateFormatter({
month: 'long',
year: 'numeric',
era: startDate.calendar.identifier !== 'gregory' ? 'long' : undefined,
era,
calendar: startDate.calendar.identifier,

@@ -61,3 +87,6 @@ timeZone

let dateFormatter = useDateFormatter({
dateStyle: 'long',
month: 'long',
year: 'numeric',
day: 'numeric',
era,
calendar: startDate.calendar.identifier,

@@ -74,8 +103,41 @@ timeZone

} else if (isSameDay(endDate, endOfMonth(endDate))) {
return monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
return isAria
? formatRange(monthFormatter, stringFormatter, startDate, endDate, timeZone)
: monthFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}
}
return dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}, [startDate, endDate, monthFormatter, dateFormatter, timeZone]);
return isAria
? formatRange(dateFormatter, stringFormatter, startDate, endDate, timeZone)
: dateFormatter.formatRange(startDate.toDate(timeZone), endDate.toDate(timeZone));
}, [startDate, endDate, monthFormatter, dateFormatter, stringFormatter, timeZone, isAria]);
}
function formatRange(dateFormatter: DateFormatter, stringFormatter: LocalizedStringFormatter, start: CalendarDate, end: CalendarDate, timeZone: string) {
let parts = dateFormatter.formatRangeToParts(start.toDate(timeZone), end.toDate(timeZone));
// Find the separator between the start and end date. This is determined
// by finding the last shared literal before the end range.
let separatorIndex = -1;
for (let i = 0; i < parts.length; i++) {
let part = parts[i];
if (part.source === 'shared' && part.type === 'literal') {
separatorIndex = i;
} else if (part.source === 'endRange') {
break;
}
}
// Now we can combine the parts into start and end strings.
let startValue = '';
let endValue = '';
for (let i = 0; i < parts.length; i++) {
if (i < separatorIndex) {
startValue += parts[i].value;
} else if (i > separatorIndex) {
endValue += parts[i].value;
}
}
return stringFormatter.format('dateRange', {startDate: startValue, endDate: endValue});
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc