@react-aria/grid 3.0.1-nightly.2977 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +43 -38
- package/dist/main.js.map +1 -1
- package/dist/module.js +43 -38
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/useGridCell.ts +6 -3
- package/src/useGridRow.ts +6 -3
package/dist/main.js
CHANGED
|
@@ -425,106 +425,106 @@ exports.GridKeyboardDelegate = GridKeyboardDelegate;
|
|
|
425
425
|
*/
|
|
426
426
|
// Used to share keyboard delegate between useGrid and useGridCell
|
|
427
427
|
const $e6fd609a4e1bd40f6df88a69c08b6746$export$gridKeyboardDelegates = new WeakMap();
|
|
428
|
-
// ASSET: /
|
|
428
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/ar-AE.json
|
|
429
429
|
var $f3b5d97e587eba8802fd35463efc40f1$exports = {};
|
|
430
430
|
$f3b5d97e587eba8802fd35463efc40f1$exports = JSON.parse("{\"deselectedItem\":\"{item} غير المحدد\",\"select\":\"تحديد\",\"selectedAll\":\"جميع العناصر المحددة.\",\"selectedCount\":\"{count, plural, =0 {لم يتم تحديد عناصر} one {# عنصر محدد} other {# عنصر محدد}}.\",\"selectedItem\":\"{item} المحدد\"}");
|
|
431
|
-
// ASSET: /
|
|
431
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/bg-BG.json
|
|
432
432
|
var $e8c0938d9ab8b794bba35bee62bd9c11$exports = {};
|
|
433
433
|
$e8c0938d9ab8b794bba35bee62bd9c11$exports = JSON.parse("{\"deselectedItem\":\"{item} не е избран.\",\"select\":\"Изберете\",\"selectedAll\":\"Всички елементи са избрани.\",\"selectedCount\":\"{count, plural, =0 {Няма избрани елементи} one {# избран елемент} other {# избрани елементи}}.\",\"selectedItem\":\"{item} избран.\"}");
|
|
434
|
-
// ASSET: /
|
|
434
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/cs-CZ.json
|
|
435
435
|
var $e0c07c292996cdb1b27080a59c7cb52$exports = {};
|
|
436
436
|
$e0c07c292996cdb1b27080a59c7cb52$exports = JSON.parse("{\"deselectedItem\":\"Položka {item} není vybrána.\",\"select\":\"Vybrat\",\"selectedAll\":\"Vybrány všechny položky.\",\"selectedCount\":\"{count, plural, =0 {Nevybrány žádné položky} one {Vybrána # položka} other {Vybráno # položek}}.\",\"selectedItem\":\"Vybrána položka {item}.\"}");
|
|
437
|
-
// ASSET: /
|
|
437
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/da-DK.json
|
|
438
438
|
var $e0001ed7150af4085e51c274889a03c$exports = {};
|
|
439
439
|
$e0001ed7150af4085e51c274889a03c$exports = JSON.parse("{\"deselectedItem\":\"{item} ikke valgt.\",\"select\":\"Vælg\",\"selectedAll\":\"Alle elementer valgt.\",\"selectedCount\":\"{count, plural, =0 {Ingen elementer valgt} one {# element valgt} other {# elementer valgt}}.\",\"selectedItem\":\"{item} valgt.\"}");
|
|
440
|
-
// ASSET: /
|
|
440
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/de-DE.json
|
|
441
441
|
var $de9f1470f80ba9cf38b8a75bb6c$exports = {};
|
|
442
442
|
$de9f1470f80ba9cf38b8a75bb6c$exports = JSON.parse("{\"deselectedItem\":\"{item} nicht ausgewählt.\",\"select\":\"Auswählen\",\"selectedAll\":\"Alle Elemente ausgewählt.\",\"selectedCount\":\"{count, plural, =0 {Keine Elemente ausgewählt} one {# Element ausgewählt} other {# Elemente ausgewählt}}.\",\"selectedItem\":\"{item} ausgewählt.\"}");
|
|
443
|
-
// ASSET: /
|
|
443
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/el-GR.json
|
|
444
444
|
var $cfe35bac79961e38f4df4a0e0cb09a04$exports = {};
|
|
445
445
|
$cfe35bac79961e38f4df4a0e0cb09a04$exports = JSON.parse("{\"deselectedItem\":\"Δεν επιλέχθηκε το στοιχείο {item}.\",\"select\":\"Επιλογή\",\"selectedAll\":\"Επιλέχθηκαν όλα τα στοιχεία.\",\"selectedCount\":\"{count, plural, =0 {Δεν επιλέχθηκαν στοιχεία} one {Επιλέχθηκε # στοιχείο} other {Επιλέχθηκαν # στοιχεία}}.\",\"selectedItem\":\"Επιλέχθηκε το στοιχείο {item}.\"}");
|
|
446
|
-
// ASSET: /
|
|
446
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/en-US.json
|
|
447
447
|
var $d13b1ea919d49253cf46bbc8c5ad0e4f$exports = {};
|
|
448
448
|
$d13b1ea919d49253cf46bbc8c5ad0e4f$exports = JSON.parse("{\"deselectedItem\":\"{item} not selected.\",\"select\":\"Select\",\"selectedCount\":\"{count, plural, =0 {No items selected} one {# item selected} other {# items selected}}.\",\"selectedAll\":\"All items selected.\",\"selectedItem\":\"{item} selected.\"}");
|
|
449
|
-
// ASSET: /
|
|
449
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/es-ES.json
|
|
450
450
|
var $d864b563ed6cd09263653205fa183$exports = {};
|
|
451
451
|
$d864b563ed6cd09263653205fa183$exports = JSON.parse("{\"deselectedItem\":\"{item} no seleccionado.\",\"select\":\"Seleccionar\",\"selectedAll\":\"Todos los elementos seleccionados.\",\"selectedCount\":\"{count, plural, =0 {Ningún elemento seleccionado} one {# elemento seleccionado} other {# elementos seleccionados}}.\",\"selectedItem\":\"{item} seleccionado.\"}");
|
|
452
|
-
// ASSET: /
|
|
452
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/et-EE.json
|
|
453
453
|
var $b14dc42d725c1febe581f4260531b766$exports = {};
|
|
454
454
|
$b14dc42d725c1febe581f4260531b766$exports = JSON.parse("{\"deselectedItem\":\"{item} pole valitud.\",\"select\":\"Vali\",\"selectedAll\":\"Kõik üksused valitud.\",\"selectedCount\":\"{count, plural, =0 {Üksusi pole valitud} one {# üksus valitud} other {# üksust valitud}}.\",\"selectedItem\":\"{item} valitud.\"}");
|
|
455
|
-
// ASSET: /
|
|
455
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/fi-FI.json
|
|
456
456
|
var $c9a09657efdb048bfac0187444$exports = {};
|
|
457
457
|
$c9a09657efdb048bfac0187444$exports = JSON.parse("{\"deselectedItem\":\"Kohdetta {item} ei valittu.\",\"select\":\"Valitse\",\"selectedAll\":\"Kaikki kohteet valittu.\",\"selectedCount\":\"{count, plural, =0 {Ei yhtään kohdetta valittu} one {# kohde valittu} other {# kohdetta valittu}}.\",\"selectedItem\":\"{item} valittu.\"}");
|
|
458
|
-
// ASSET: /
|
|
458
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/fr-FR.json
|
|
459
459
|
var $ea4502238114a4fa77247e11c71dbff$exports = {};
|
|
460
460
|
$ea4502238114a4fa77247e11c71dbff$exports = JSON.parse("{\"deselectedItem\":\"{item} non sélectionné.\",\"select\":\"Sélectionner\",\"selectedAll\":\"Tous les éléments sélectionnés.\",\"selectedCount\":\"{count, plural, =0 {Aucun élément sélectionné} one {# élément sélectionné} other {# éléments sélectionnés}}.\",\"selectedItem\":\"{item} sélectionné.\"}");
|
|
461
|
-
// ASSET: /
|
|
461
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/he-IL.json
|
|
462
462
|
var $d9581c305462587058c0342a58677c4$exports = {};
|
|
463
463
|
$d9581c305462587058c0342a58677c4$exports = JSON.parse("{\"deselectedItem\":\"{item} לא נבחר.\",\"select\":\"בחר\",\"selectedAll\":\"כל הפריטים נבחרו.\",\"selectedCount\":\"{count, plural, =0 {לא נבחרו פריטים} one {פריט # נבחר} other {# פריטים נבחרו}}.\",\"selectedItem\":\"{item} נבחר.\"}");
|
|
464
|
-
// ASSET: /
|
|
464
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/hr-HR.json
|
|
465
465
|
var $cf734ac19e86322b877e98c049038b$exports = {};
|
|
466
466
|
$cf734ac19e86322b877e98c049038b$exports = JSON.parse("{\"deselectedItem\":\"Stavka {item} nije odabrana.\",\"select\":\"Odaberite\",\"selectedAll\":\"Odabrane su sve stavke.\",\"selectedCount\":\"{count, plural, =0 {Nije odabrana nijedna stavka} one {Odabrana je # stavka} other {Odabrano je # stavki}}.\",\"selectedItem\":\"Stavka {item} je odabrana.\"}");
|
|
467
|
-
// ASSET: /
|
|
467
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/hu-HU.json
|
|
468
468
|
var $f521190239da9bcdf17fc30078c36$exports = {};
|
|
469
469
|
$f521190239da9bcdf17fc30078c36$exports = JSON.parse("{\"deselectedItem\":\"{item} nincs kijelölve.\",\"select\":\"Kijelölés\",\"selectedAll\":\"Az összes elem kijelölve.\",\"selectedCount\":\"{count, plural, =0 {Egy elem sincs kijelölve} one {# elem kijelölve} other {# elem kijelölve}}.\",\"selectedItem\":\"{item} kijelölve.\"}");
|
|
470
|
-
// ASSET: /
|
|
470
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/it-IT.json
|
|
471
471
|
var $c65d722333d791beced80b55e56cac2b$exports = {};
|
|
472
472
|
$c65d722333d791beced80b55e56cac2b$exports = JSON.parse("{\"deselectedItem\":\"{item} non selezionato.\",\"select\":\"Seleziona\",\"selectedAll\":\"Tutti gli elementi selezionati.\",\"selectedCount\":\"{count, plural, =0 {Nessun elemento selezionato} one {# elemento selezionato} other {# elementi selezionati}}.\",\"selectedItem\":\"{item} selezionato.\"}");
|
|
473
|
-
// ASSET: /
|
|
473
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/ja-JP.json
|
|
474
474
|
var $bf77eedec4eb77f0361d68c3e1f9ed34$exports = {};
|
|
475
475
|
$bf77eedec4eb77f0361d68c3e1f9ed34$exports = JSON.parse("{\"deselectedItem\":\"{item} が選択されていません。\",\"select\":\"選択\",\"selectedAll\":\"すべての項目を選択しました。\",\"selectedCount\":\"{count, plural, =0 {項目が選択されていません} one {# 項目を選択しました} other {# 項目を選択しました}}。\",\"selectedItem\":\"{item} を選択しました。\"}");
|
|
476
|
-
// ASSET: /
|
|
476
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/ko-KR.json
|
|
477
477
|
var $fc5ca332cebd040bdaa0cf9b999553$exports = {};
|
|
478
478
|
$fc5ca332cebd040bdaa0cf9b999553$exports = JSON.parse("{\"deselectedItem\":\"{item}이(가) 선택되지 않았습니다.\",\"select\":\"선택\",\"selectedAll\":\"모든 항목이 선택되었습니다.\",\"selectedCount\":\"{count, plural, =0 {선택된 항목이 없습니다} one {#개 항목이 선택되었습니다} other {#개 항목이 선택되었습니다}}.\",\"selectedItem\":\"{item}이(가) 선택되었습니다.\"}");
|
|
479
|
-
// ASSET: /
|
|
479
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/lt-LT.json
|
|
480
480
|
var $f136c7b53ddb1ccb2cf52b596649$exports = {};
|
|
481
481
|
$f136c7b53ddb1ccb2cf52b596649$exports = JSON.parse("{\"deselectedItem\":\"{item} nepasirinkta.\",\"select\":\"Pasirinkti\",\"selectedAll\":\"Pasirinkti visi elementai.\",\"selectedCount\":\"{count, plural, =0 {Nepasirinktas nė vienas elementas} one {Pasirinktas # elementas} other {Pasirinkta elementų: #}}.\",\"selectedItem\":\"Pasirinkta: {item}.\"}");
|
|
482
|
-
// ASSET: /
|
|
482
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/lv-LV.json
|
|
483
483
|
var $da0bf35340be57c92d4bdcc180dbfdc2$exports = {};
|
|
484
484
|
$da0bf35340be57c92d4bdcc180dbfdc2$exports = JSON.parse("{\"deselectedItem\":\"Vienums {item} nav atlasīts.\",\"select\":\"Atlasīt\",\"selectedAll\":\"Atlasīti visi vienumi.\",\"selectedCount\":\"{count, plural, =0 {Nav atlasīts neviens vienums} one {Atlasīto vienumu skaits: #} other {Atlasīto vienumu skaits: #}}.\",\"selectedItem\":\"Atlasīts vienums {item}.\"}");
|
|
485
|
-
// ASSET: /
|
|
485
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/nb-NO.json
|
|
486
486
|
var $d83a2220a3634302170e36cb127a436$exports = {};
|
|
487
487
|
$d83a2220a3634302170e36cb127a436$exports = JSON.parse("{\"deselectedItem\":\"{item} er ikke valgt.\",\"select\":\"Velg\",\"selectedAll\":\"Alle elementer er valgt.\",\"selectedCount\":\"{count, plural, =0 {Ingen elementer er valgt} one {# element er valgt} other {# elementer er valgt}}.\",\"selectedItem\":\"{item} er valgt.\"}");
|
|
488
|
-
// ASSET: /
|
|
488
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/nl-NL.json
|
|
489
489
|
var $c3f2334868ddbe62c3cddc9f73c66da0$exports = {};
|
|
490
490
|
$c3f2334868ddbe62c3cddc9f73c66da0$exports = JSON.parse("{\"deselectedItem\":\"{item} niet geselecteerd.\",\"select\":\"Selecteren\",\"selectedAll\":\"Alle items geselecteerd.\",\"selectedCount\":\"{count, plural, =0 {Geen items geselecteerd} one {# item geselecteerd} other {# items geselecteerd}}.\",\"selectedItem\":\"{item} geselecteerd.\"}");
|
|
491
|
-
// ASSET: /
|
|
491
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/pl-PL.json
|
|
492
492
|
var $a03437156244244be9a419900d98$exports = {};
|
|
493
493
|
$a03437156244244be9a419900d98$exports = JSON.parse("{\"deselectedItem\":\"Nie zaznaczono {item}.\",\"select\":\"Zaznacz\",\"selectedAll\":\"Wszystkie zaznaczone elementy.\",\"selectedCount\":\"{count, plural, =0 {Nie zaznaczono żadnych elementów} one {# zaznaczony element} other {# zaznaczonych elementów}}.\",\"selectedItem\":\"Zaznaczono {item}.\"}");
|
|
494
|
-
// ASSET: /
|
|
494
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/pt-BR.json
|
|
495
495
|
var $b789143cc53d4555e546c675632d83bf$exports = {};
|
|
496
496
|
$b789143cc53d4555e546c675632d83bf$exports = JSON.parse("{\"deselectedItem\":\"{item} não selecionado.\",\"select\":\"Selecionar\",\"selectedAll\":\"Todos os itens selecionados.\",\"selectedCount\":\"{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.\",\"selectedItem\":\"{item} selecionado.\"}");
|
|
497
|
-
// ASSET: /
|
|
497
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/pt-PT.json
|
|
498
498
|
var $a15741fa76f08491470130f498dbd$exports = {};
|
|
499
499
|
$a15741fa76f08491470130f498dbd$exports = JSON.parse("{\"deselectedItem\":\"{item} não selecionado.\",\"select\":\"Selecionar\",\"selectedAll\":\"Todos os itens selecionados.\",\"selectedCount\":\"{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.\",\"selectedItem\":\"{item} selecionado.\"}");
|
|
500
|
-
// ASSET: /
|
|
500
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/ro-RO.json
|
|
501
501
|
var $e1a824107cd15e9ed3d2deec6e9958ea$exports = {};
|
|
502
502
|
$e1a824107cd15e9ed3d2deec6e9958ea$exports = JSON.parse("{\"deselectedItem\":\"{item} neselectat.\",\"select\":\"Selectare\",\"selectedAll\":\"Toate elementele selectate.\",\"selectedCount\":\"{count, plural, =0 {Niciun element selectat} one {# element selectat} other {# elemente selectate}}.\",\"selectedItem\":\"{item} selectat.\"}");
|
|
503
|
-
// ASSET: /
|
|
503
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/ru-RU.json
|
|
504
504
|
var $bbcd18d5c3a31954c443ea06e6f$exports = {};
|
|
505
505
|
$bbcd18d5c3a31954c443ea06e6f$exports = JSON.parse("{\"deselectedItem\":\"{Item} не выбрано.\",\"select\":\"Выбрать\",\"selectedAll\":\"Выбраны все элементы.\",\"selectedCount\":\"{count, plural, =0 {Нет выбранных элементов} one {# элемент выбран} other {# элементов выбрано}}.\",\"selectedItem\":\"{Item} выбрано.\"}");
|
|
506
|
-
// ASSET: /
|
|
506
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/sk-SK.json
|
|
507
507
|
var $f82152409e7266812e1afd28$exports = {};
|
|
508
508
|
$f82152409e7266812e1afd28$exports = JSON.parse("{\"deselectedItem\":\"Nevybraté položky: {item}.\",\"select\":\"Vybrať\",\"selectedAll\":\"Všetky vybraté položky.\",\"selectedCount\":\"{count, plural, =0 {Žiadne vybraté položky} one {# vybratá položka} other {Počet vybratých položiek:#}}.\",\"selectedItem\":\"Vybraté položky: {item}.\"}");
|
|
509
|
-
// ASSET: /
|
|
509
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/sl-SI.json
|
|
510
510
|
var $cf441c41ac0818ad07c0beeac2a5f2a$exports = {};
|
|
511
511
|
$cf441c41ac0818ad07c0beeac2a5f2a$exports = JSON.parse("{\"deselectedItem\":\"Element {item} ni izbran.\",\"select\":\"Izberite\",\"selectedAll\":\"Vsi elementi so izbrani.\",\"selectedCount\":\"{count, plural, =0 {Noben element ni izbran} one {# element je izbran} other {# elementov je izbranih}}.\",\"selectedItem\":\"Element {item} je izbran.\"}");
|
|
512
|
-
// ASSET: /
|
|
512
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/sr-SP.json
|
|
513
513
|
var $fb0afad71994f5a5770039a338cf3$exports = {};
|
|
514
514
|
$fb0afad71994f5a5770039a338cf3$exports = JSON.parse("{\"deselectedItem\":\"{item} nije izabrano.\",\"select\":\"Izaberite\",\"selectedAll\":\"Izabrane su sve stavke.\",\"selectedCount\":\"{count, plural, =0 {Nije izabrana nijedna stavka} one {Izabrana je # stavka} other {Izabrano je # stavki}}.\",\"selectedItem\":\"{Item} je izabrano.\"}");
|
|
515
|
-
// ASSET: /
|
|
515
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/sv-SE.json
|
|
516
516
|
var $b27c3659a4c51ac9e7a5b961fef5ea0f$exports = {};
|
|
517
517
|
$b27c3659a4c51ac9e7a5b961fef5ea0f$exports = JSON.parse("{\"deselectedItem\":\"{item} ej markerat.\",\"select\":\"Markera\",\"selectedAll\":\"Alla markerade objekt.\",\"selectedCount\":\"{count, plural, =0 {Inga markerade objekt} one {# markerat objekt} other {# markerade objekt}}.\",\"selectedItem\":\"{item} markerat.\"}");
|
|
518
|
-
// ASSET: /
|
|
518
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/tr-TR.json
|
|
519
519
|
var $d27e0624a0f68339271ed686c5180$exports = {};
|
|
520
520
|
$d27e0624a0f68339271ed686c5180$exports = JSON.parse("{\"deselectedItem\":\"{item} seçilmedi.\",\"select\":\"Seç\",\"selectedAll\":\"Tüm ögeler seçildi.\",\"selectedCount\":\"{count, plural, =0 {Hiçbir öge seçilmedi} one {# öge seçildi} other {# öge seçildi}}.\",\"selectedItem\":\"{item} seçildi.\"}");
|
|
521
|
-
// ASSET: /
|
|
521
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/uk-UA.json
|
|
522
522
|
var $aff0802f4267f6a9ced1608dad094e62$exports = {};
|
|
523
523
|
$aff0802f4267f6a9ced1608dad094e62$exports = JSON.parse("{\"deselectedItem\":\"{item} не вибрано.\",\"select\":\"Вибрати\",\"selectedAll\":\"Усі елементи вибрано.\",\"selectedCount\":\"{count, plural, =0 {Жодних елементів не вибрано} one {# елемент вибрано} other {Вибрано елементів: #}}.\",\"selectedItem\":\"{item} вибрано.\"}");
|
|
524
|
-
// ASSET: /
|
|
524
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/zh-CN.json
|
|
525
525
|
var $d98ba85122b8bc7d41f49f582696f83$exports = {};
|
|
526
526
|
$d98ba85122b8bc7d41f49f582696f83$exports = JSON.parse("{\"deselectedItem\":\"未选择 {item}。\",\"select\":\"选择\",\"selectedAll\":\"已选择所有项目。\",\"selectedCount\":\"{count, plural, =0 {未选择项目} one {已选择 # 个项目} other {已选择 # 个项目}}。\",\"selectedItem\":\"已选择 {item}。\"}");
|
|
527
|
-
// ASSET: /
|
|
527
|
+
// ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-aria/grid/intl/zh-TW.json
|
|
528
528
|
var $f2661a24dc6056b2c63abea3a181b0d0$exports = {};
|
|
529
529
|
$f2661a24dc6056b2c63abea3a181b0d0$exports = JSON.parse("{\"deselectedItem\":\"未選取「{item}」。\",\"select\":\"選取\",\"selectedAll\":\"已選取所有項目。\",\"selectedCount\":\"{count, plural, =0 {未選取任何項目} one {已選取 # 個項目} other {已選取 # 個項目}}。\",\"selectedItem\":\"已選取「{item}」。\"}");
|
|
530
530
|
// @ts-ignore
|
|
@@ -733,7 +733,8 @@ function useGridRow(props, state, ref) {
|
|
|
733
733
|
onAction
|
|
734
734
|
} = props;
|
|
735
735
|
let {
|
|
736
|
-
itemProps
|
|
736
|
+
itemProps,
|
|
737
|
+
isPressed
|
|
737
738
|
} = useSelectableItem({
|
|
738
739
|
selectionManager: state.selectionManager,
|
|
739
740
|
key: node.key,
|
|
@@ -754,7 +755,8 @@ function useGridRow(props, state, ref) {
|
|
|
754
755
|
}
|
|
755
756
|
|
|
756
757
|
return {
|
|
757
|
-
rowProps
|
|
758
|
+
rowProps,
|
|
759
|
+
isPressed
|
|
758
760
|
};
|
|
759
761
|
}
|
|
760
762
|
|
|
@@ -797,7 +799,8 @@ function useGridCell(props, state, ref) {
|
|
|
797
799
|
};
|
|
798
800
|
|
|
799
801
|
let {
|
|
800
|
-
itemProps
|
|
802
|
+
itemProps,
|
|
803
|
+
isPressed
|
|
801
804
|
} = useSelectableItem({
|
|
802
805
|
selectionManager: state.selectionManager,
|
|
803
806
|
key: node.key,
|
|
@@ -835,6 +838,7 @@ function useGridCell(props, state, ref) {
|
|
|
835
838
|
// This will be handled by useSelectableCollection. However, if there is no cell to the left
|
|
836
839
|
// of this one, only one column, and the grid doesn't focus rows, then the next key will be the
|
|
837
840
|
// same as this one. In that case we need to handle focusing either the cell or the first/last
|
|
841
|
+
// child, depending on the focus mode.
|
|
838
842
|
let prev = keyboardDelegate.getKeyLeftOf(node.key);
|
|
839
843
|
|
|
840
844
|
if (prev !== node.key) {
|
|
@@ -948,7 +952,8 @@ function useGridCell(props, state, ref) {
|
|
|
948
952
|
}
|
|
949
953
|
|
|
950
954
|
return {
|
|
951
|
-
gridCellProps
|
|
955
|
+
gridCellProps,
|
|
956
|
+
isPressed
|
|
952
957
|
};
|
|
953
958
|
}
|
|
954
959
|
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./packages/@react-aria/grid/src/GridKeyboardDelegate.ts","./packages/@react-aria/grid/src/utils.ts","./packages/@react-aria/grid/intl/ar-AE.json","./packages/@react-aria/grid/intl/bg-BG.json","./packages/@react-aria/grid/intl/cs-CZ.json","./packages/@react-aria/grid/intl/da-DK.json","./packages/@react-aria/grid/intl/de-DE.json","./packages/@react-aria/grid/intl/el-GR.json","./packages/@react-aria/grid/intl/en-US.json","./packages/@react-aria/grid/intl/es-ES.json","./packages/@react-aria/grid/intl/et-EE.json","./packages/@react-aria/grid/intl/fi-FI.json","./packages/@react-aria/grid/intl/fr-FR.json","./packages/@react-aria/grid/intl/he-IL.json","./packages/@react-aria/grid/intl/hr-HR.json","./packages/@react-aria/grid/intl/hu-HU.json","./packages/@react-aria/grid/intl/it-IT.json","./packages/@react-aria/grid/intl/ja-JP.json","./packages/@react-aria/grid/intl/ko-KR.json","./packages/@react-aria/grid/intl/lt-LT.json","./packages/@react-aria/grid/intl/lv-LV.json","./packages/@react-aria/grid/intl/nb-NO.json","./packages/@react-aria/grid/intl/nl-NL.json","./packages/@react-aria/grid/intl/pl-PL.json","./packages/@react-aria/grid/intl/pt-BR.json","./packages/@react-aria/grid/intl/pt-PT.json","./packages/@react-aria/grid/intl/ro-RO.json","./packages/@react-aria/grid/intl/ru-RU.json","./packages/@react-aria/grid/intl/sk-SK.json","./packages/@react-aria/grid/intl/sl-SI.json","./packages/@react-aria/grid/intl/sr-SP.json","./packages/@react-aria/grid/intl/sv-SE.json","./packages/@react-aria/grid/intl/tr-TR.json","./packages/@react-aria/grid/intl/uk-UA.json","./packages/@react-aria/grid/intl/zh-CN.json","./packages/@react-aria/grid/intl/zh-TW.json","./packages/@react-aria/grid/src/useGrid.ts","./packages/@react-aria/grid/src/useGridRowGroup.ts","./packages/@react-aria/grid/src/useGridRow.ts","./packages/@react-aria/grid/src/useGridCell.ts","./packages/@react-aria/grid/src/useGridSelectionCheckbox.ts"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Direction, KeyboardDelegate, Node} from '@react-types/shared';\nimport {GridCollection} from '@react-types/grid';\nimport {Key, RefObject} from 'react';\nimport {Layout, Rect} from '@react-stately/virtualizer';\n\nexport interface GridKeyboardDelegateOptions<T, C> {\n collection: C,\n disabledKeys: Set<Key>,\n ref?: RefObject<HTMLElement>,\n direction: Direction,\n collator?: Intl.Collator,\n layout?: Layout<Node<T>>,\n focusMode?: 'row' | 'cell'\n}\n\nexport class GridKeyboardDelegate<T, C extends GridCollection<T>> implements KeyboardDelegate {\n collection: C;\n protected disabledKeys: Set<Key>;\n protected ref: RefObject<HTMLElement>;\n protected direction: Direction;\n protected collator: Intl.Collator;\n protected layout: Layout<Node<T>>;\n protected focusMode;\n\n constructor(options: GridKeyboardDelegateOptions<T, C>) {\n this.collection = options.collection;\n this.disabledKeys = options.disabledKeys;\n this.ref = options.ref;\n this.direction = options.direction;\n this.collator = options.collator;\n this.layout = options.layout;\n this.focusMode = options.focusMode || 'row';\n }\n\n protected isCell(node: Node<T>) {\n return node.type === 'cell';\n }\n\n protected isRow(node: Node<T>) {\n return node.type === 'row' || node.type === 'item';\n }\n\n protected findPreviousKey(fromKey?: Key, pred?: (item: Node<T>) => boolean) {\n let key = fromKey != null\n ? this.collection.getKeyBefore(fromKey)\n : this.collection.getLastKey();\n\n while (key != null) {\n let item = this.collection.getItem(key);\n if (!pred || pred(item)) {\n return key;\n }\n\n key = this.collection.getKeyBefore(key);\n }\n }\n\n protected findNextKey(fromKey?: Key, pred?: (item: Node<T>) => boolean) {\n let key = fromKey != null\n ? this.collection.getKeyAfter(fromKey)\n : this.collection.getFirstKey();\n\n while (key != null) {\n let item = this.collection.getItem(key);\n if (!pred || pred(item)) {\n return key;\n }\n\n key = this.collection.getKeyAfter(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let startItem = this.collection.getItem(key);\n if (!startItem) {\n return;\n }\n\n // If focus was on a cell, start searching from the parent row\n if (this.isCell(startItem)) {\n key = startItem.parentKey;\n }\n\n // Find the next item\n key = this.findNextKey(key);\n if (key != null) {\n // If focus was on a cell, focus the cell with the same index in the next row.\n if (this.isCell(startItem)) {\n let item = this.collection.getItem(key);\n return [...item.childNodes][startItem.index].key;\n }\n\n // Otherwise, focus the next row\n if (this.focusMode === 'row') {\n return key;\n }\n }\n }\n\n getKeyAbove(key: Key) {\n let startItem = this.collection.getItem(key);\n if (!startItem) {\n return;\n }\n\n // If focus is on a cell, start searching from the parent row\n if (this.isCell(startItem)) {\n key = startItem.parentKey;\n }\n\n // Find the previous item\n key = this.findPreviousKey(key);\n if (key != null) {\n // If focus was on a cell, focus the cell with the same index in the previous row.\n if (this.isCell(startItem)) {\n let item = this.collection.getItem(key);\n return [...item.childNodes][startItem.index].key;\n }\n\n // Otherwise, focus the previous row\n if (this.focusMode === 'row') {\n return key;\n }\n }\n }\n\n getKeyRightOf(key: Key) {\n let item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If focus is on a row, focus the first child cell.\n if (this.isRow(item)) {\n let children = [...item.childNodes];\n return this.direction === 'rtl'\n ? children[children.length - 1].key\n : children[0].key;\n }\n\n // If focus is on a cell, focus the next cell if any,\n // otherwise focus the parent row.\n if (this.isCell(item)) {\n let parent = this.collection.getItem(item.parentKey);\n let children = [...parent.childNodes];\n let next = this.direction === 'rtl'\n ? children[item.index - 1]\n : children[item.index + 1];\n\n if (next) {\n return next.key;\n }\n\n // focus row only if focusMode is set to row\n if (this.focusMode === 'row') {\n return item.parentKey;\n }\n\n return this.direction === 'rtl' ? this.getFirstKey(key) : this.getLastKey(key);\n }\n }\n\n getKeyLeftOf(key: Key) {\n let item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If focus is on a row, focus the last child cell.\n if (this.isRow(item)) {\n let children = [...item.childNodes];\n return this.direction === 'rtl'\n ? children[0].key\n : children[children.length - 1].key;\n }\n\n // If focus is on a cell, focus the previous cell if any,\n // otherwise focus the parent row.\n if (this.isCell(item)) {\n let parent = this.collection.getItem(item.parentKey);\n let children = [...parent.childNodes];\n let prev = this.direction === 'rtl'\n ? children[item.index + 1]\n : children[item.index - 1];\n\n if (prev) {\n return prev.key;\n }\n\n // focus row only if focusMode is set to row\n if (this.focusMode === 'row') {\n return item.parentKey;\n }\n\n return this.direction === 'rtl' ? this.getLastKey(key) : this.getFirstKey(key);\n }\n }\n\n getFirstKey(key?: Key, global?: boolean) {\n let item: Node<T>;\n if (key != null) {\n item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If global flag is not set, and a cell is currently focused,\n // move focus to the first cell in the parent row.\n if (this.isCell(item) && !global) {\n let parent = this.collection.getItem(item.parentKey);\n return [...parent.childNodes][0].key;\n }\n }\n\n // Find the first row\n key = this.findNextKey();\n\n // If global flag is set (or if focus mode is cell), focus the first cell in the first row.\n if ((key != null && item && this.isCell(item) && global) || this.focusMode === 'cell') {\n let item = this.collection.getItem(key);\n key = [...item.childNodes][0].key;\n }\n\n // Otherwise, focus the row itself.\n return key;\n }\n\n getLastKey(key?: Key, global?: boolean) {\n let item: Node<T>;\n if (key != null) {\n item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If global flag is not set, and a cell is currently focused,\n // move focus to the last cell in the parent row.\n if (this.isCell(item) && !global) {\n let parent = this.collection.getItem(item.parentKey);\n let children = [...parent.childNodes];\n return children[children.length - 1].key;\n }\n }\n\n // Find the last row\n key = this.findPreviousKey();\n\n // If global flag is set (or if focus mode is cell), focus the last cell in the last row.\n if ((key != null && item && this.isCell(item) && global) || this.focusMode === 'cell') {\n let item = this.collection.getItem(key);\n let children = [...item.childNodes];\n key = children[children.length - 1].key;\n }\n\n // Otherwise, focus the row itself.\n return key;\n }\n\n private getItem(key: Key): HTMLElement {\n return this.ref.current.querySelector(`[data-key=\"${key}\"]`);\n }\n\n private getItemRect(key: Key): Rect {\n if (this.layout) {\n return this.layout.getLayoutInfo(key)?.rect;\n }\n\n let item = this.getItem(key);\n if (item) {\n return new Rect(item.offsetLeft, item.offsetTop, item.offsetWidth, item.offsetHeight);\n }\n }\n\n private getPageHeight(): number {\n if (this.layout) {\n return this.layout.virtualizer?.visibleRect.height;\n }\n\n return this.ref?.current?.offsetHeight;\n }\n\n private getContentHeight(): number {\n if (this.layout) {\n return this.layout.getContentSize().height;\n }\n\n return this.ref?.current?.scrollHeight;\n }\n\n getKeyPageAbove(key: Key) {\n let itemRect = this.getItemRect(key);\n if (!itemRect) {\n return null;\n }\n\n let pageY = Math.max(0, itemRect.maxY - this.getPageHeight());\n\n while (itemRect && itemRect.y > pageY) {\n key = this.getKeyAbove(key);\n itemRect = this.getItemRect(key);\n }\n\n return key;\n }\n\n getKeyPageBelow(key: Key) {\n let itemRect = this.getItemRect(key);\n\n if (!itemRect) {\n return null;\n }\n\n let pageHeight = this.getPageHeight();\n let pageY = Math.min(this.getContentHeight(), itemRect.y + pageHeight);\n\n while (itemRect && itemRect.maxY < pageY) {\n let nextKey = this.getKeyBelow(key);\n itemRect = this.getItemRect(nextKey);\n\n // Guard against case where maxY of the last key is barely less than pageY due to rounding\n // and thus it attempts to set key to null\n if (nextKey != null) {\n key = nextKey;\n }\n }\n\n return key;\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey ?? this.getFirstKey();\n\n // If the starting key is a cell, search from its parent row.\n let startItem = collection.getItem(key);\n if (startItem.type === 'cell') {\n key = startItem.parentKey;\n }\n\n let hasWrapped = false;\n while (key != null) {\n let item = collection.getItem(key);\n\n // check row text value for match\n if (item.textValue) {\n let substring = item.textValue.slice(0, search.length);\n if (this.collator.compare(substring, search) === 0) {\n if (this.isRow(item) && this.focusMode === 'cell') {\n return [...item.childNodes][0].key;\n }\n\n return item.key;\n }\n }\n\n key = this.findNextKey(key);\n\n // Wrap around when reaching the end of the collection\n if (key == null && !hasWrapped) {\n key = this.getFirstKey();\n hasWrapped = true;\n }\n }\n\n return null;\n }\n}\n\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport type {GridCollection} from '@react-types/grid';\nimport type {GridState} from '@react-stately/grid';\nimport type {KeyboardDelegate} from '@react-types/shared';\n\n// Used to share keyboard delegate between useGrid and useGridCell\nexport const gridKeyboardDelegates = new WeakMap<GridState<unknown, GridCollection<unknown>>, KeyboardDelegate>();\n","{\n \"deselectedItem\": \"{item} غير المحدد\",\n \"select\": \"تحديد\",\n \"selectedAll\": \"جميع العناصر المحددة.\",\n \"selectedCount\": \"{count, plural, =0 {لم يتم تحديد عناصر} one {# عنصر محدد} other {# عنصر محدد}}.\",\n \"selectedItem\": \"{item} المحدد\"\n}\n","{\n \"deselectedItem\": \"{item} не е избран.\",\n \"select\": \"Изберете\",\n \"selectedAll\": \"Всички елементи са избрани.\",\n \"selectedCount\": \"{count, plural, =0 {Няма избрани елементи} one {# избран елемент} other {# избрани елементи}}.\",\n \"selectedItem\": \"{item} избран.\"\n}\n","{\n \"deselectedItem\": \"Položka {item} není vybrána.\",\n \"select\": \"Vybrat\",\n \"selectedAll\": \"Vybrány všechny položky.\",\n \"selectedCount\": \"{count, plural, =0 {Nevybrány žádné položky} one {Vybrána # položka} other {Vybráno # položek}}.\",\n \"selectedItem\": \"Vybrána položka {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} ikke valgt.\",\n \"select\": \"Vælg\",\n \"selectedAll\": \"Alle elementer valgt.\",\n \"selectedCount\": \"{count, plural, =0 {Ingen elementer valgt} one {# element valgt} other {# elementer valgt}}.\",\n \"selectedItem\": \"{item} valgt.\"\n}\n","{\n \"deselectedItem\": \"{item} nicht ausgewählt.\",\n \"select\": \"Auswählen\",\n \"selectedAll\": \"Alle Elemente ausgewählt.\",\n \"selectedCount\": \"{count, plural, =0 {Keine Elemente ausgewählt} one {# Element ausgewählt} other {# Elemente ausgewählt}}.\",\n \"selectedItem\": \"{item} ausgewählt.\"\n}\n","{\n \"deselectedItem\": \"Δεν επιλέχθηκε το στοιχείο {item}.\",\n \"select\": \"Επιλογή\",\n \"selectedAll\": \"Επιλέχθηκαν όλα τα στοιχεία.\",\n \"selectedCount\": \"{count, plural, =0 {Δεν επιλέχθηκαν στοιχεία} one {Επιλέχθηκε # στοιχείο} other {Επιλέχθηκαν # στοιχεία}}.\",\n \"selectedItem\": \"Επιλέχθηκε το στοιχείο {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} not selected.\",\n \"select\": \"Select\",\n \"selectedCount\": \"{count, plural, =0 {No items selected} one {# item selected} other {# items selected}}.\",\n \"selectedAll\": \"All items selected.\",\n \"selectedItem\": \"{item} selected.\"\n}\n","{\n \"deselectedItem\": \"{item} no seleccionado.\",\n \"select\": \"Seleccionar\",\n \"selectedAll\": \"Todos los elementos seleccionados.\",\n \"selectedCount\": \"{count, plural, =0 {Ningún elemento seleccionado} one {# elemento seleccionado} other {# elementos seleccionados}}.\",\n \"selectedItem\": \"{item} seleccionado.\"\n}\n","{\n \"deselectedItem\": \"{item} pole valitud.\",\n \"select\": \"Vali\",\n \"selectedAll\": \"Kõik üksused valitud.\",\n \"selectedCount\": \"{count, plural, =0 {Üksusi pole valitud} one {# üksus valitud} other {# üksust valitud}}.\",\n \"selectedItem\": \"{item} valitud.\"\n}\n","{\n \"deselectedItem\": \"Kohdetta {item} ei valittu.\",\n \"select\": \"Valitse\",\n \"selectedAll\": \"Kaikki kohteet valittu.\",\n \"selectedCount\": \"{count, plural, =0 {Ei yhtään kohdetta valittu} one {# kohde valittu} other {# kohdetta valittu}}.\",\n \"selectedItem\": \"{item} valittu.\"\n}\n","{\n \"deselectedItem\": \"{item} non sélectionné.\",\n \"select\": \"Sélectionner\",\n \"selectedAll\": \"Tous les éléments sélectionnés.\",\n \"selectedCount\": \"{count, plural, =0 {Aucun élément sélectionné} one {# élément sélectionné} other {# éléments sélectionnés}}.\",\n \"selectedItem\": \"{item} sélectionné.\"\n}\n","{\n \"deselectedItem\": \"{item} לא נבחר.\",\n \"select\": \"בחר\",\n \"selectedAll\": \"כל הפריטים נבחרו.\",\n \"selectedCount\": \"{count, plural, =0 {לא נבחרו פריטים} one {פריט # נבחר} other {# פריטים נבחרו}}.\",\n \"selectedItem\": \"{item} נבחר.\"\n}\n","{\n \"deselectedItem\": \"Stavka {item} nije odabrana.\",\n \"select\": \"Odaberite\",\n \"selectedAll\": \"Odabrane su sve stavke.\",\n \"selectedCount\": \"{count, plural, =0 {Nije odabrana nijedna stavka} one {Odabrana je # stavka} other {Odabrano je # stavki}}.\",\n \"selectedItem\": \"Stavka {item} je odabrana.\"\n}\n","{\n \"deselectedItem\": \"{item} nincs kijelölve.\",\n \"select\": \"Kijelölés\",\n \"selectedAll\": \"Az összes elem kijelölve.\",\n \"selectedCount\": \"{count, plural, =0 {Egy elem sincs kijelölve} one {# elem kijelölve} other {# elem kijelölve}}.\",\n \"selectedItem\": \"{item} kijelölve.\"\n}\n","{\n \"deselectedItem\": \"{item} non selezionato.\",\n \"select\": \"Seleziona\",\n \"selectedAll\": \"Tutti gli elementi selezionati.\",\n \"selectedCount\": \"{count, plural, =0 {Nessun elemento selezionato} one {# elemento selezionato} other {# elementi selezionati}}.\",\n \"selectedItem\": \"{item} selezionato.\"\n}\n","{\n \"deselectedItem\": \"{item} が選択されていません。\",\n \"select\": \"選択\",\n \"selectedAll\": \"すべての項目を選択しました。\",\n \"selectedCount\": \"{count, plural, =0 {項目が選択されていません} one {# 項目を選択しました} other {# 項目を選択しました}}。\",\n \"selectedItem\": \"{item} を選択しました。\"\n}\n","{\n \"deselectedItem\": \"{item}이(가) 선택되지 않았습니다.\",\n \"select\": \"선택\",\n \"selectedAll\": \"모든 항목이 선택되었습니다.\",\n \"selectedCount\": \"{count, plural, =0 {선택된 항목이 없습니다} one {#개 항목이 선택되었습니다} other {#개 항목이 선택되었습니다}}.\",\n \"selectedItem\": \"{item}이(가) 선택되었습니다.\"\n}\n","{\n \"deselectedItem\": \"{item} nepasirinkta.\",\n \"select\": \"Pasirinkti\",\n \"selectedAll\": \"Pasirinkti visi elementai.\",\n \"selectedCount\": \"{count, plural, =0 {Nepasirinktas nė vienas elementas} one {Pasirinktas # elementas} other {Pasirinkta elementų: #}}.\",\n \"selectedItem\": \"Pasirinkta: {item}.\"\n}\n","{\n \"deselectedItem\": \"Vienums {item} nav atlasīts.\",\n \"select\": \"Atlasīt\",\n \"selectedAll\": \"Atlasīti visi vienumi.\",\n \"selectedCount\": \"{count, plural, =0 {Nav atlasīts neviens vienums} one {Atlasīto vienumu skaits: #} other {Atlasīto vienumu skaits: #}}.\",\n \"selectedItem\": \"Atlasīts vienums {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} er ikke valgt.\",\n \"select\": \"Velg\",\n \"selectedAll\": \"Alle elementer er valgt.\",\n \"selectedCount\": \"{count, plural, =0 {Ingen elementer er valgt} one {# element er valgt} other {# elementer er valgt}}.\",\n \"selectedItem\": \"{item} er valgt.\"\n}\n","{\n \"deselectedItem\": \"{item} niet geselecteerd.\",\n \"select\": \"Selecteren\",\n \"selectedAll\": \"Alle items geselecteerd.\",\n \"selectedCount\": \"{count, plural, =0 {Geen items geselecteerd} one {# item geselecteerd} other {# items geselecteerd}}.\",\n \"selectedItem\": \"{item} geselecteerd.\"\n}\n","{\n \"deselectedItem\": \"Nie zaznaczono {item}.\",\n \"select\": \"Zaznacz\",\n \"selectedAll\": \"Wszystkie zaznaczone elementy.\",\n \"selectedCount\": \"{count, plural, =0 {Nie zaznaczono żadnych elementów} one {# zaznaczony element} other {# zaznaczonych elementów}}.\",\n \"selectedItem\": \"Zaznaczono {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} não selecionado.\",\n \"select\": \"Selecionar\",\n \"selectedAll\": \"Todos os itens selecionados.\",\n \"selectedCount\": \"{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.\",\n \"selectedItem\": \"{item} selecionado.\"\n}\n","{\n \"deselectedItem\": \"{item} não selecionado.\",\n \"select\": \"Selecionar\",\n \"selectedAll\": \"Todos os itens selecionados.\",\n \"selectedCount\": \"{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.\",\n \"selectedItem\": \"{item} selecionado.\"\n}\n","{\n \"deselectedItem\": \"{item} neselectat.\",\n \"select\": \"Selectare\",\n \"selectedAll\": \"Toate elementele selectate.\",\n \"selectedCount\": \"{count, plural, =0 {Niciun element selectat} one {# element selectat} other {# elemente selectate}}.\",\n \"selectedItem\": \"{item} selectat.\"\n}\n","{\n \"deselectedItem\": \"{Item} не выбрано.\",\n \"select\": \"Выбрать\",\n \"selectedAll\": \"Выбраны все элементы.\",\n \"selectedCount\": \"{count, plural, =0 {Нет выбранных элементов} one {# элемент выбран} other {# элементов выбрано}}.\",\n \"selectedItem\": \"{Item} выбрано.\"\n}\n","{\n \"deselectedItem\": \"Nevybraté položky: {item}.\",\n \"select\": \"Vybrať\",\n \"selectedAll\": \"Všetky vybraté položky.\",\n \"selectedCount\": \"{count, plural, =0 {Žiadne vybraté položky} one {# vybratá položka} other {Počet vybratých položiek:#}}.\",\n \"selectedItem\": \"Vybraté položky: {item}.\"\n}\n","{\n \"deselectedItem\": \"Element {item} ni izbran.\",\n \"select\": \"Izberite\",\n \"selectedAll\": \"Vsi elementi so izbrani.\",\n \"selectedCount\": \"{count, plural, =0 {Noben element ni izbran} one {# element je izbran} other {# elementov je izbranih}}.\",\n \"selectedItem\": \"Element {item} je izbran.\"\n}\n","{\n \"deselectedItem\": \"{item} nije izabrano.\",\n \"select\": \"Izaberite\",\n \"selectedAll\": \"Izabrane su sve stavke.\",\n \"selectedCount\": \"{count, plural, =0 {Nije izabrana nijedna stavka} one {Izabrana je # stavka} other {Izabrano je # stavki}}.\",\n \"selectedItem\": \"{Item} je izabrano.\"\n}\n","{\n \"deselectedItem\": \"{item} ej markerat.\",\n \"select\": \"Markera\",\n \"selectedAll\": \"Alla markerade objekt.\",\n \"selectedCount\": \"{count, plural, =0 {Inga markerade objekt} one {# markerat objekt} other {# markerade objekt}}.\",\n \"selectedItem\": \"{item} markerat.\"\n}\n","{\n \"deselectedItem\": \"{item} seçilmedi.\",\n \"select\": \"Seç\",\n \"selectedAll\": \"Tüm ögeler seçildi.\",\n \"selectedCount\": \"{count, plural, =0 {Hiçbir öge seçilmedi} one {# öge seçildi} other {# öge seçildi}}.\",\n \"selectedItem\": \"{item} seçildi.\"\n}\n","{\n \"deselectedItem\": \"{item} не вибрано.\",\n \"select\": \"Вибрати\",\n \"selectedAll\": \"Усі елементи вибрано.\",\n \"selectedCount\": \"{count, plural, =0 {Жодних елементів не вибрано} one {# елемент вибрано} other {Вибрано елементів: #}}.\",\n \"selectedItem\": \"{item} вибрано.\"\n}\n","{\n \"deselectedItem\": \"未选择 {item}。\",\n \"select\": \"选择\",\n \"selectedAll\": \"已选择所有项目。\",\n \"selectedCount\": \"{count, plural, =0 {未选择项目} one {已选择 # 个项目} other {已选择 # 个项目}}。\",\n \"selectedItem\": \"已选择 {item}。\"\n}\n","{\n \"deselectedItem\": \"未選取「{item}」。\",\n \"select\": \"選取\",\n \"selectedAll\": \"已選取所有項目。\",\n \"selectedCount\": \"{count, plural, =0 {未選取任何項目} one {已選取 # 個項目} other {已選取 # 個項目}}。\",\n \"selectedItem\": \"已選取「{item}」。\"\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {announce} from '@react-aria/live-announcer';\nimport {AriaLabelingProps, DOMProps, KeyboardDelegate, Selection} from '@react-types/shared';\nimport {filterDOMProps, mergeProps, useId, useUpdateEffect} from '@react-aria/utils';\nimport {GridCollection} from '@react-types/grid';\nimport {GridKeyboardDelegate} from './GridKeyboardDelegate';\nimport {gridKeyboardDelegates} from './utils';\nimport {GridState} from '@react-stately/grid';\nimport {HTMLAttributes, Key, RefObject, useMemo, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useCollator, useLocale, useMessageFormatter} from '@react-aria/i18n';\nimport {useSelectableCollection} from '@react-aria/selection';\n\nexport interface GridProps extends DOMProps, AriaLabelingProps {\n /** Whether the grid uses virtual scrolling. */\n isVirtualized?: boolean,\n /**\n * An optional keyboard delegate implementation for type to select,\n * to override the default.\n */\n keyboardDelegate?: KeyboardDelegate,\n /**\n * Whether initial grid focus should be placed on the grid row or grid cell.\n * @default 'row'\n */\n focusMode?: 'row' | 'cell',\n /**\n * A function that returns the text that should be announced by assistive technology when a row is added or removed from selection.\n * @default (key) => state.collection.getItem(key)?.textValue\n */\n getRowText?: (key: Key) => string,\n /**\n * The ref attached to the scrollable body. Used to provided automatic scrolling on item focus for non-virtualized grids.\n */\n scrollRef?: RefObject<HTMLElement>\n}\n\nexport interface GridAria {\n /** Props for the grid element. */\n gridProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a grid component.\n * A grid displays data in one or more rows and columns and enables a user to navigate its contents via directional navigation keys.\n * @param props - Props for the grid.\n * @param state - State for the grid, as returned by `useGridState`.\n * @param ref - The ref attached to the grid element.\n */\nexport function useGrid<T>(props: GridProps, state: GridState<T, GridCollection<T>>, ref: RefObject<HTMLElement>): GridAria {\n let {\n isVirtualized,\n keyboardDelegate,\n focusMode,\n getRowText = (key) => state.collection.getItem(key)?.textValue,\n scrollRef\n } = props;\n let formatMessage = useMessageFormatter(intlMessages);\n\n if (!props['aria-label'] && !props['aria-labelledby']) {\n console.warn('An aria-label or aria-labelledby prop is required for accessibility.');\n }\n\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let collator = useCollator({usage: 'search', sensitivity: 'base'});\n let {direction} = useLocale();\n let delegate = useMemo(() => keyboardDelegate || new GridKeyboardDelegate({\n collection: state.collection,\n disabledKeys: state.disabledKeys,\n ref,\n direction,\n collator,\n focusMode\n }), [keyboardDelegate, state.collection, state.disabledKeys, ref, direction, collator, focusMode]);\n let {collectionProps} = useSelectableCollection({\n ref,\n selectionManager: state.selectionManager,\n keyboardDelegate: delegate,\n isVirtualized,\n scrollRef\n });\n\n let id = useId();\n gridKeyboardDelegates.set(state, delegate);\n\n let domProps = filterDOMProps(props, {labelable: true});\n let gridProps: HTMLAttributes<HTMLElement> = mergeProps(domProps, {\n role: 'grid',\n id,\n 'aria-multiselectable': state.selectionManager.selectionMode === 'multiple' ? 'true' : undefined,\n ...collectionProps\n });\n\n if (isVirtualized) {\n gridProps['aria-rowcount'] = state.collection.size;\n gridProps['aria-colcount'] = state.collection.columnCount;\n }\n\n // Many screen readers do not announce when items in a grid are selected/deselected.\n // We do this using an ARIA live region.\n let selection = state.selectionManager.rawSelection;\n let lastSelection = useRef(selection);\n useUpdateEffect(() => {\n // Do not do this when using selectionBehavior = 'replace' to avoid selection announcements\n // every time the user presses the arrow keys.\n if (!state.selectionManager.isFocused || state.selectionManager.selectionBehavior === 'replace') {\n lastSelection.current = selection;\n\n return;\n }\n\n let addedKeys = diffSelection(selection, lastSelection.current);\n let removedKeys = diffSelection(lastSelection.current, selection);\n\n // If adding or removing a single row from the selection, announce the name of that item.\n let messages = [];\n if (addedKeys.size === 1 && removedKeys.size === 0) {\n let addedText = getRowText(addedKeys.keys().next().value);\n if (addedText) {\n messages.push(formatMessage('selectedItem', {item: addedText}));\n }\n } else if (removedKeys.size === 1 && addedKeys.size === 0) {\n if (state.collection.getItem(removedKeys.keys().next().value)) {\n let removedText = getRowText(removedKeys.keys().next().value);\n if (removedText) {\n messages.push(formatMessage('deselectedItem', {item: removedText}));\n }\n }\n }\n\n // Announce how many items are selected, except when selecting the first item.\n if (state.selectionManager.selectionMode === 'multiple') {\n if (messages.length === 0 || selection === 'all' || selection.size > 1 || lastSelection.current === 'all' || lastSelection.current.size > 1) {\n messages.push(selection === 'all'\n ? formatMessage('selectedAll')\n : formatMessage('selectedCount', {count: selection.size})\n );\n }\n }\n\n if (messages.length > 0) {\n announce(messages.join(' '));\n }\n\n lastSelection.current = selection;\n }, [selection]);\n\n return {\n gridProps\n };\n}\n\nfunction diffSelection(a: Selection, b: Selection): Set<Key> {\n let res = new Set<Key>();\n if (a === 'all' || b === 'all') {\n return res;\n }\n\n for (let key of a.keys()) {\n if (!b.has(key)) {\n res.add(key);\n }\n }\n\n return res;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {HTMLAttributes} from 'react';\n\ninterface GridRowGroupAria {\n /** Props for the row group element. */\n rowGroupProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Provides the accessibility implementation for a row group in a grid.\n */\nexport function useGridRowGroup(): GridRowGroupAria {\n return {\n rowGroupProps: {\n role: 'rowgroup'\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {GridCollection} from '@react-types/grid';\nimport {GridState} from '@react-stately/grid';\nimport {HTMLAttributes, RefObject} from 'react';\nimport {Node} from '@react-types/shared';\nimport {useSelectableItem} from '@react-aria/selection';\n\nexport interface GridRowProps<T> {\n /** An object representing the grid row. Contains all the relevant information that makes up the grid row. */\n node: Node<T>,\n /** Whether the grid row is contained in a virtual scroller. */\n isVirtualized?: boolean,\n /** Whether selection should occur on press up instead of press down. */\n shouldSelectOnPressUp?: boolean,\n /** Handler that is called when a user performs an action on the row. */\n onAction?: () => void\n}\n\nexport interface GridRowAria {\n /** Props for the grid row element. */\n rowProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a row in a grid.\n * @param props - Props for the row.\n * @param state - State of the parent grid, as returned by `useGridState`.\n */\nexport function useGridRow<T, C extends GridCollection<T>, S extends GridState<T, C>>(props: GridRowProps<T>, state: S, ref: RefObject<HTMLElement>): GridRowAria {\n let {\n node,\n isVirtualized,\n shouldSelectOnPressUp,\n onAction\n } = props;\n\n let {itemProps} = useSelectableItem({\n selectionManager: state.selectionManager,\n key: node.key,\n ref,\n isVirtualized,\n shouldSelectOnPressUp,\n onAction\n });\n\n let isSelected = state.selectionManager.isSelected(node.key);\n\n let rowProps: HTMLAttributes<HTMLElement> = {\n role: 'row',\n 'aria-selected': state.selectionManager.selectionMode !== 'none' ? isSelected : undefined,\n ...itemProps\n };\n\n if (isVirtualized) {\n rowProps['aria-rowindex'] = node.index + 1; // aria-rowindex is 1 based\n }\n\n return {\n rowProps\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {focusSafely, getFocusableTreeWalker} from '@react-aria/focus';\nimport {GridCollection} from '@react-types/grid';\nimport {gridKeyboardDelegates} from './utils';\nimport {GridState} from '@react-stately/grid';\nimport {HTMLAttributes, KeyboardEvent as ReactKeyboardEvent, RefObject} from 'react';\nimport {isFocusVisible} from '@react-aria/interactions';\nimport {mergeProps} from '@react-aria/utils';\nimport {Node as RSNode} from '@react-types/shared';\nimport {useLocale} from '@react-aria/i18n';\nimport {useSelectableItem} from '@react-aria/selection';\n\ninterface GridCellProps {\n /** An object representing the grid cell. Contains all the relevant information that makes up the grid cell. */\n node: RSNode<unknown>,\n /** Whether the grid cell is contained in a virtual scroller. */\n isVirtualized?: boolean,\n /** Whether the cell or its first focusable child element should be focused when the grid cell is focused. */\n focusMode?: 'child' | 'cell',\n /** Whether selection should occur on press up instead of press down. */\n shouldSelectOnPressUp?: boolean,\n /** Handler that is called when a user performs an action on the cell. */\n onAction?: () => void\n}\n\ninterface GridCellAria {\n /** Props for the grid cell element. */\n gridCellProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a cell in a grid.\n * @param props - Props for the cell.\n * @param state - State of the parent grid, as returned by `useGridState`.\n */\nexport function useGridCell<T, C extends GridCollection<T>>(props: GridCellProps, state: GridState<T, C>, ref: RefObject<HTMLElement>): GridCellAria {\n let {\n node,\n isVirtualized,\n focusMode = 'child',\n shouldSelectOnPressUp,\n onAction\n } = props;\n\n let {direction} = useLocale();\n let keyboardDelegate = gridKeyboardDelegates.get(state);\n\n // Handles focusing the cell. If there is a focusable child,\n // it is focused, otherwise the cell itself is focused.\n let focus = () => {\n let treeWalker = getFocusableTreeWalker(ref.current);\n if (focusMode === 'child') {\n let focusable = state.selectionManager.childFocusStrategy === 'last'\n ? last(treeWalker)\n : treeWalker.firstChild() as HTMLElement;\n if (focusable) {\n focusSafely(focusable);\n return;\n }\n }\n\n if (!ref.current.contains(document.activeElement)) {\n focusSafely(ref.current);\n }\n };\n\n let {itemProps} = useSelectableItem({\n selectionManager: state.selectionManager,\n key: node.key,\n ref,\n isVirtualized,\n focus,\n shouldSelectOnPressUp,\n onAction\n });\n\n let onKeyDown = (e: ReactKeyboardEvent) => {\n if (!e.currentTarget.contains(e.target as HTMLElement)) {\n return;\n }\n\n let walker = getFocusableTreeWalker(ref.current);\n walker.currentNode = document.activeElement;\n\n switch (e.key) {\n case 'ArrowLeft': {\n // Find the next focusable element within the cell.\n let focusable = direction === 'rtl'\n ? walker.nextNode() as HTMLElement\n : walker.previousNode() as HTMLElement;\n\n // Don't focus the cell itself if focusMode is \"child\"\n if (focusMode === 'child' && focusable === ref.current) {\n focusable = null;\n }\n\n if (focusable) {\n e.preventDefault();\n e.stopPropagation();\n focusSafely(focusable);\n } else {\n // If there is no next focusable child, then move to the next cell to the left of this one.\n // This will be handled by useSelectableCollection. However, if there is no cell to the left\n // of this one, only one column, and the grid doesn't focus rows, then the next key will be the\n // same as this one. In that case we need to handle focusing either the cell or the first/last\n // child, depending on the focus mode.\n let prev = keyboardDelegate.getKeyLeftOf(node.key);\n if (prev !== node.key) {\n break;\n }\n\n e.preventDefault();\n e.stopPropagation();\n if (focusMode === 'cell' && direction === 'rtl') {\n focusSafely(ref.current);\n } else {\n walker.currentNode = ref.current;\n focusable = direction === 'rtl'\n ? walker.firstChild() as HTMLElement\n : last(walker);\n if (focusable) {\n focusSafely(focusable);\n }\n }\n }\n break;\n }\n case 'ArrowRight': {\n let focusable = direction === 'rtl'\n ? walker.previousNode() as HTMLElement\n : walker.nextNode() as HTMLElement;\n\n if (focusMode === 'child' && focusable === ref.current) {\n focusable = null;\n }\n\n if (focusable) {\n e.preventDefault();\n e.stopPropagation();\n focusSafely(focusable);\n } else {\n let next = keyboardDelegate.getKeyRightOf(node.key);\n if (next !== node.key) {\n break;\n }\n\n e.preventDefault();\n e.stopPropagation();\n if (focusMode === 'cell' && direction === 'ltr') {\n focusSafely(ref.current);\n } else {\n walker.currentNode = ref.current;\n focusable = direction === 'rtl'\n ? last(walker)\n : walker.firstChild() as HTMLElement;\n if (focusable) {\n focusSafely(focusable);\n }\n }\n }\n break;\n }\n case 'ArrowUp':\n case 'ArrowDown':\n // Prevent this event from reaching cell children, e.g. menu buttons. We want arrow keys to navigate\n // to the cell above/below instead. We need to re-dispatch the event from a higher parent so it still\n // bubbles and gets handled by useSelectableCollection.\n if (!e.altKey && ref.current.contains(e.target as HTMLElement)) {\n e.stopPropagation();\n e.preventDefault();\n ref.current.parentElement.dispatchEvent(\n new KeyboardEvent(e.nativeEvent.type, e.nativeEvent)\n );\n }\n break;\n }\n };\n\n // Grid cells can have focusable elements inside them. In this case, focus should\n // be marshalled to that element rather than focusing the cell itself.\n let onFocus = (e) => {\n if (e.target !== ref.current) {\n // useSelectableItem only handles setting the focused key when\n // the focused element is the gridcell itself. We also want to\n // set the focused key when a child element receives focus.\n // If focus is currently visible (e.g. the user is navigating with the keyboard),\n // then skip this. We want to restore focus to the previously focused row/cell\n // in that case since the table should act like a single tab stop.\n if (!isFocusVisible()) {\n state.selectionManager.setFocusedKey(node.key);\n }\n return;\n }\n\n // If the cell itself is focused, wait a frame so that focus finishes propagatating\n // up to the tree, and move focus to a focusable child if possible.\n requestAnimationFrame(() => {\n if (focusMode === 'child' && document.activeElement === ref.current) {\n focus();\n }\n });\n };\n\n let gridCellProps: HTMLAttributes<HTMLElement> = mergeProps(itemProps, {\n role: 'gridcell',\n onKeyDownCapture: onKeyDown,\n onFocus\n });\n\n if (isVirtualized) {\n gridCellProps['aria-colindex'] = node.index + 1; // aria-colindex is 1-based\n }\n\n return {\n gridCellProps\n };\n}\n\nfunction last(walker: TreeWalker) {\n let next: HTMLElement;\n let last: HTMLElement;\n do {\n last = walker.lastChild() as HTMLElement;\n if (last) {\n next = last;\n }\n } while (last);\n return next;\n}\n","import {AriaCheckboxProps} from '@react-types/checkbox';\nimport {GridCollection} from '@react-types/grid';\nimport {GridState} from '@react-stately/grid';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {Key} from 'react';\nimport {useId} from '@react-aria/utils';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\ninterface SelectionCheckboxProps {\n /** A unique key for the checkbox. */\n key: Key\n}\n\ninterface SelectionCheckboxAria {\n /** Props for the row selection checkbox element. */\n checkboxProps: AriaCheckboxProps\n}\n\n\n/**\n * Provides the behavior and accessibility implementation for a selection checkbox in a grid.\n * @param props - Props for the selection checkbox.\n * @param state - State of the grid, as returned by `useGridState`.\n */\nexport function useGridSelectionCheckbox<T, C extends GridCollection<T>>(props: SelectionCheckboxProps, state: GridState<T, C>): SelectionCheckboxAria {\n let {key} = props;\n\n let manager = state.selectionManager;\n let checkboxId = useId();\n let isDisabled = state.disabledKeys.has(key);\n let isSelected = state.selectionManager.isSelected(key);\n\n let onChange = () => manager.select(key);\n\n const formatMessage = useMessageFormatter(intlMessages);\n\n return {\n checkboxProps: {\n id: checkboxId,\n 'aria-label': formatMessage('select'),\n isSelected,\n isDisabled: isDisabled || manager.selectionMode === 'none',\n onChange\n }\n };\n}\n"],"names":["$parcel$interopDefault","a","__esModule","default","GridKeyboardDelegate","constructor","options","collection","disabledKeys","ref","direction","collator","layout","focusMode","isCell","node","type","isRow","findPreviousKey","fromKey","pred","key","getKeyBefore","getLastKey","item","getItem","findNextKey","getKeyAfter","getFirstKey","getKeyBelow","startItem","parentKey","childNodes","index","getKeyAbove","getKeyRightOf","children","length","parent","next","getKeyLeftOf","prev","global","current","querySelector","getItemRect","getLayoutInfo","rect","Rect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getPageHeight","virtualizer","visibleRect","height","getContentHeight","getContentSize","scrollHeight","getKeyPageAbove","itemRect","pageY","Math","max","maxY","y","getKeyPageBelow","pageHeight","min","nextKey","getKeyForSearch","search","hasWrapped","textValue","substring","slice","compare","gridKeyboardDelegates","WeakMap","JSON","parse","useGrid","props","state","isVirtualized","keyboardDelegate","getRowText","scrollRef","formatMessage","useMessageFormatter","intlMessages","console","warn","useCollator","usage","sensitivity","useLocale","delegate","useMemo","collectionProps","useSelectableCollection","selectionManager","id","useId","set","domProps","filterDOMProps","labelable","gridProps","mergeProps","role","selectionMode","undefined","size","columnCount","selection","rawSelection","lastSelection","useRef","useUpdateEffect","isFocused","selectionBehavior","addedKeys","diffSelection","removedKeys","messages","addedText","keys","value","push","removedText","count","announce","join","b","res","Set","has","add","useGridRowGroup","rowGroupProps","useGridRow","shouldSelectOnPressUp","onAction","itemProps","useSelectableItem","isSelected","rowProps","useGridCell","get","focus","treeWalker","getFocusableTreeWalker","focusable","childFocusStrategy","last","firstChild","focusSafely","contains","document","activeElement","onKeyDown","e","currentTarget","target","walker","currentNode","nextNode","previousNode","preventDefault","stopPropagation","altKey","parentElement","dispatchEvent","KeyboardEvent","nativeEvent","onFocus","isFocusVisible","setFocusedKey","requestAnimationFrame","gridCellProps","onKeyDownCapture","lastChild","useGridSelectionCheckbox","manager","checkboxId","isDisabled","onChange","select","checkboxProps"],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,sBAAT,CAAgCC,CAAhC,EAAmC;AACjC,SAAOA,CAAC,IAAIA,CAAC,CAACC,UAAP,GAAoBD,CAAC,CAACE,OAAtB,GAAgCF,CAAvC;AACD;;ACyBM,MAAMG,oBAAN,CAAuF;AAS5FC,EAAAA,WAAW,CAACC,OAAD,EAA6C;AAAA,SARxDC,UAQwD;AAAA,SAP9CC,YAO8C;AAAA,SAN9CC,GAM8C;AAAA,SAL9CC,SAK8C;AAAA,SAJ9CC,QAI8C;AAAA,SAH9CC,MAG8C;AAAA,SAF9CC,SAE8C;AACtD,SAAKN,UAAL,GAAkBD,OAAO,CAACC,UAA1B;AACA,SAAKC,YAAL,GAAoBF,OAAO,CAACE,YAA5B;AACA,SAAKC,GAAL,GAAWH,OAAO,CAACG,GAAnB;AACA,SAAKC,SAAL,GAAiBJ,OAAO,CAACI,SAAzB;AACA,SAAKC,QAAL,GAAgBL,OAAO,CAACK,QAAxB;AACA,SAAKC,MAAL,GAAcN,OAAO,CAACM,MAAtB;AACA,SAAKC,SAAL,GAAiBP,OAAO,CAACO,SAAR,IAAqB,KAAtC;AACD;;AAESC,EAAAA,MAAV,CAAiBC,IAAjB,EAAgC;AAC9B,WAAOA,IAAI,CAACC,IAAL,KAAc,MAArB;AACD;;AAESC,EAAAA,KAAV,CAAgBF,IAAhB,EAA+B;AAC7B,WAAOA,IAAI,CAACC,IAAL,KAAc,KAAd,IAAuBD,IAAI,CAACC,IAAL,KAAc,MAA5C;AACD;;AAESE,EAAAA,eAAV,CAA0BC,OAA1B,EAAyCC,IAAzC,EAA4E;AAC1E,QAAIC,GAAG,GAAGF,OAAO,IAAI,IAAX,GACN,KAAKZ,UAAL,CAAgBe,YAAhB,CAA6BH,OAA7B,CADM,GAEN,KAAKZ,UAAL,CAAgBgB,UAAhB,EAFJ;;AAIA,WAAOF,GAAG,IAAI,IAAd,EAAoB;AAClB,UAAIG,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;;AACA,UAAI,CAACD,IAAD,IAASA,IAAI,CAACI,IAAD,CAAjB,EAAyB;AACvB,eAAOH,GAAP;AACD;;AAEDA,MAAAA,GAAG,GAAG,KAAKd,UAAL,CAAgBe,YAAhB,CAA6BD,GAA7B,CAAN;AACD;AACF;;AAESK,EAAAA,WAAV,CAAsBP,OAAtB,EAAqCC,IAArC,EAAwE;AACtE,QAAIC,GAAG,GAAGF,OAAO,IAAI,IAAX,GACN,KAAKZ,UAAL,CAAgBoB,WAAhB,CAA4BR,OAA5B,CADM,GAEN,KAAKZ,UAAL,CAAgBqB,WAAhB,EAFJ;;AAIA,WAAOP,GAAG,IAAI,IAAd,EAAoB;AAClB,UAAIG,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;;AACA,UAAI,CAACD,IAAD,IAASA,IAAI,CAACI,IAAD,CAAjB,EAAyB;AACvB,eAAOH,GAAP;AACD;;AAEDA,MAAAA,GAAG,GAAG,KAAKd,UAAL,CAAgBoB,WAAhB,CAA4BN,GAA5B,CAAN;AACD;AACF;;AAEDQ,EAAAA,WAAW,CAACR,GAAD,EAAW;AACpB,QAAIS,SAAS,GAAG,KAAKvB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAhB;;AACA,QAAI,CAACS,SAAL,EAAgB;AACd;AACD,KAJmB,CAMpB;;;AACA,QAAI,KAAKhB,MAAL,CAAYgB,SAAZ,CAAJ,EAA4B;AAC1BT,MAAAA,GAAG,GAAGS,SAAS,CAACC,SAAhB;AACD,KATmB,CAWpB;;;AACAV,IAAAA,GAAG,GAAG,KAAKK,WAAL,CAAiBL,GAAjB,CAAN;;AACA,QAAIA,GAAG,IAAI,IAAX,EAAiB;AACf;AACA,UAAI,KAAKP,MAAL,CAAYgB,SAAZ,CAAJ,EAA4B;AAC1B,YAAIN,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;AACA,eAAO,CAAC,GAAGG,IAAI,CAACQ,UAAT,EAAqBF,SAAS,CAACG,KAA/B,EAAsCZ,GAA7C;AACD,OALc,CAOf;;;AACA,UAAI,KAAKR,SAAL,KAAmB,KAAvB,EAA8B;AAC5B,eAAOQ,GAAP;AACD;AACF;AACF;;AAEDa,EAAAA,WAAW,CAACb,GAAD,EAAW;AACpB,QAAIS,SAAS,GAAG,KAAKvB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAhB;;AACA,QAAI,CAACS,SAAL,EAAgB;AACd;AACD,KAJmB,CAMpB;;;AACA,QAAI,KAAKhB,MAAL,CAAYgB,SAAZ,CAAJ,EAA4B;AAC1BT,MAAAA,GAAG,GAAGS,SAAS,CAACC,SAAhB;AACD,KATmB,CAWpB;;;AACAV,IAAAA,GAAG,GAAG,KAAKH,eAAL,CAAqBG,GAArB,CAAN;;AACA,QAAIA,GAAG,IAAI,IAAX,EAAiB;AACf;AACA,UAAI,KAAKP,MAAL,CAAYgB,SAAZ,CAAJ,EAA4B;AAC1B,YAAIN,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;AACA,eAAO,CAAC,GAAGG,IAAI,CAACQ,UAAT,EAAqBF,SAAS,CAACG,KAA/B,EAAsCZ,GAA7C;AACD,OALc,CAOf;;;AACA,UAAI,KAAKR,SAAL,KAAmB,KAAvB,EAA8B;AAC5B,eAAOQ,GAAP;AACD;AACF;AACF;;AAEDc,EAAAA,aAAa,CAACd,GAAD,EAAW;AACtB,QAAIG,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;;AACA,QAAI,CAACG,IAAL,EAAW;AACT;AACD,KAJqB,CAMtB;;;AACA,QAAI,KAAKP,KAAL,CAAWO,IAAX,CAAJ,EAAsB;AACpB,UAAIY,QAAQ,GAAG,CAAC,GAAGZ,IAAI,CAACQ,UAAT,CAAf;AACA,aAAO,KAAKtB,SAAL,KAAmB,KAAnB,GACH0B,QAAQ,CAACA,QAAQ,CAACC,MAAT,GAAkB,CAAnB,CAAR,CAA8BhB,GAD3B,GAEHe,QAAQ,CAAC,CAAD,CAAR,CAAYf,GAFhB;AAGD,KAZqB,CActB;AACA;;;AACA,QAAI,KAAKP,MAAL,CAAYU,IAAZ,CAAJ,EAAuB;AACrB,UAAIc,MAAM,GAAG,KAAK/B,UAAL,CAAgBkB,OAAhB,CAAwBD,IAAI,CAACO,SAA7B,CAAb;AACA,UAAIK,QAAQ,GAAG,CAAC,GAAGE,MAAM,CAACN,UAAX,CAAf;AACA,UAAIO,IAAI,GAAG,KAAK7B,SAAL,KAAmB,KAAnB,GACP0B,QAAQ,CAACZ,IAAI,CAACS,KAAL,GAAa,CAAd,CADD,GAEPG,QAAQ,CAACZ,IAAI,CAACS,KAAL,GAAa,CAAd,CAFZ;;AAIA,UAAIM,IAAJ,EAAU;AACR,eAAOA,IAAI,CAAClB,GAAZ;AACD,OAToB,CAWrB;;;AACA,UAAI,KAAKR,SAAL,KAAmB,KAAvB,EAA8B;AAC5B,eAAOW,IAAI,CAACO,SAAZ;AACD;;AAED,aAAO,KAAKrB,SAAL,KAAmB,KAAnB,GAA2B,KAAKkB,WAAL,CAAiBP,GAAjB,CAA3B,GAAmD,KAAKE,UAAL,CAAgBF,GAAhB,CAA1D;AACD;AACF;;AAEDmB,EAAAA,YAAY,CAACnB,GAAD,EAAW;AACrB,QAAIG,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;;AACA,QAAI,CAACG,IAAL,EAAW;AACT;AACD,KAJoB,CAMrB;;;AACA,QAAI,KAAKP,KAAL,CAAWO,IAAX,CAAJ,EAAsB;AACpB,UAAIY,QAAQ,GAAG,CAAC,GAAGZ,IAAI,CAACQ,UAAT,CAAf;AACA,aAAO,KAAKtB,SAAL,KAAmB,KAAnB,GACH0B,QAAQ,CAAC,CAAD,CAAR,CAAYf,GADT,GAEHe,QAAQ,CAACA,QAAQ,CAACC,MAAT,GAAkB,CAAnB,CAAR,CAA8BhB,GAFlC;AAGD,KAZoB,CAcrB;AACA;;;AACA,QAAI,KAAKP,MAAL,CAAYU,IAAZ,CAAJ,EAAuB;AACrB,UAAIc,MAAM,GAAG,KAAK/B,UAAL,CAAgBkB,OAAhB,CAAwBD,IAAI,CAACO,SAA7B,CAAb;AACA,UAAIK,QAAQ,GAAG,CAAC,GAAGE,MAAM,CAACN,UAAX,CAAf;AACA,UAAIS,IAAI,GAAG,KAAK/B,SAAL,KAAmB,KAAnB,GACP0B,QAAQ,CAACZ,IAAI,CAACS,KAAL,GAAa,CAAd,CADD,GAEPG,QAAQ,CAACZ,IAAI,CAACS,KAAL,GAAa,CAAd,CAFZ;;AAIA,UAAIQ,IAAJ,EAAU;AACR,eAAOA,IAAI,CAACpB,GAAZ;AACD,OAToB,CAWrB;;;AACA,UAAI,KAAKR,SAAL,KAAmB,KAAvB,EAA8B;AAC5B,eAAOW,IAAI,CAACO,SAAZ;AACD;;AAED,aAAO,KAAKrB,SAAL,KAAmB,KAAnB,GAA2B,KAAKa,UAAL,CAAgBF,GAAhB,CAA3B,GAAkD,KAAKO,WAAL,CAAiBP,GAAjB,CAAzD;AACD;AACF;;AAEDO,EAAAA,WAAW,CAACP,GAAD,EAAYqB,MAAZ,EAA8B;AACvC,QAAIlB,IAAJ;;AACA,QAAIH,GAAG,IAAI,IAAX,EAAiB;AACfG,MAAAA,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAP;;AACA,UAAI,CAACG,IAAL,EAAW;AACT;AACD,OAJc,CAMf;AACA;;;AACA,UAAI,KAAKV,MAAL,CAAYU,IAAZ,KAAqB,CAACkB,MAA1B,EAAkC;AAChC,YAAIJ,MAAM,GAAG,KAAK/B,UAAL,CAAgBkB,OAAhB,CAAwBD,IAAI,CAACO,SAA7B,CAAb;AACA,eAAO,CAAC,GAAGO,MAAM,CAACN,UAAX,EAAuB,CAAvB,EAA0BX,GAAjC;AACD;AACF,KAdsC,CAgBvC;;;AACAA,IAAAA,GAAG,GAAG,KAAKK,WAAL,EAAN,CAjBuC,CAmBvC;;AACA,QAAKL,GAAG,IAAI,IAAP,IAAeG,IAAf,IAAuB,KAAKV,MAAL,CAAYU,IAAZ,CAAvB,IAA4CkB,MAA7C,IAAwD,KAAK7B,SAAL,KAAmB,MAA/E,EAAuF;AACrF,UAAIW,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;AACAA,MAAAA,GAAG,GAAG,CAAC,GAAGG,IAAI,CAACQ,UAAT,EAAqB,CAArB,EAAwBX,GAA9B;AACD,KAvBsC,CAyBvC;;;AACA,WAAOA,GAAP;AACD;;AAEDE,EAAAA,UAAU,CAACF,GAAD,EAAYqB,MAAZ,EAA8B;AACtC,QAAIlB,IAAJ;;AACA,QAAIH,GAAG,IAAI,IAAX,EAAiB;AACfG,MAAAA,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAP;;AACA,UAAI,CAACG,IAAL,EAAW;AACT;AACD,OAJc,CAMf;AACA;;;AACA,UAAI,KAAKV,MAAL,CAAYU,IAAZ,KAAqB,CAACkB,MAA1B,EAAkC;AAChC,YAAIJ,MAAM,GAAG,KAAK/B,UAAL,CAAgBkB,OAAhB,CAAwBD,IAAI,CAACO,SAA7B,CAAb;AACA,YAAIK,QAAQ,GAAG,CAAC,GAAGE,MAAM,CAACN,UAAX,CAAf;AACA,eAAOI,QAAQ,CAACA,QAAQ,CAACC,MAAT,GAAkB,CAAnB,CAAR,CAA8BhB,GAArC;AACD;AACF,KAfqC,CAiBtC;;;AACAA,IAAAA,GAAG,GAAG,KAAKH,eAAL,EAAN,CAlBsC,CAoBtC;;AACA,QAAKG,GAAG,IAAI,IAAP,IAAeG,IAAf,IAAuB,KAAKV,MAAL,CAAYU,IAAZ,CAAvB,IAA4CkB,MAA7C,IAAwD,KAAK7B,SAAL,KAAmB,MAA/E,EAAuF;AACrF,UAAIW,IAAI,GAAG,KAAKjB,UAAL,CAAgBkB,OAAhB,CAAwBJ,GAAxB,CAAX;AACA,UAAIe,QAAQ,GAAG,CAAC,GAAGZ,IAAI,CAACQ,UAAT,CAAf;AACAX,MAAAA,GAAG,GAAGe,QAAQ,CAACA,QAAQ,CAACC,MAAT,GAAkB,CAAnB,CAAR,CAA8BhB,GAApC;AACD,KAzBqC,CA2BtC;;;AACA,WAAOA,GAAP;AACD;;AAEOI,EAAAA,OAAR,CAAgBJ,GAAhB,EAAuC;AACrC,WAAO,KAAKZ,GAAL,CAASkC,OAAT,CAAiBC,aAAjB,kBAA6CvB,GAA7C,SAAP;AACD;;AAEOwB,EAAAA,WAAR,CAAoBxB,GAApB,EAAoC;AAClC,QAAI,KAAKT,MAAT,EAAiB;AAAA;;AACf,sCAAO,KAAKA,MAAL,CAAYkC,aAAZ,CAA0BzB,GAA1B,CAAP,qBAAO,sBAAgC0B,IAAvC;AACD;;AAED,QAAIvB,IAAI,GAAG,KAAKC,OAAL,CAAaJ,GAAb,CAAX;;AACA,QAAIG,IAAJ,EAAU;AACR,aAAO,IAAIwB,IAAJ,CAASxB,IAAI,CAACyB,UAAd,EAA0BzB,IAAI,CAAC0B,SAA/B,EAA0C1B,IAAI,CAAC2B,WAA/C,EAA4D3B,IAAI,CAAC4B,YAAjE,CAAP;AACD;AACF;;AAEOC,EAAAA,aAAR,GAAgC;AAAA;;AAC9B,QAAI,KAAKzC,MAAT,EAAiB;AAAA;;AACf,sCAAO,KAAKA,MAAL,CAAY0C,WAAnB,qBAAO,sBAAyBC,WAAzB,CAAqCC,MAA5C;AACD;;AAED,wBAAO,KAAK/C,GAAZ,0CAAO,UAAUkC,OAAjB,qBAAO,kBAAmBS,YAA1B;AACD;;AAEOK,EAAAA,gBAAR,GAAmC;AAAA;;AACjC,QAAI,KAAK7C,MAAT,EAAiB;AACf,aAAO,KAAKA,MAAL,CAAY8C,cAAZ,GAA6BF,MAApC;AACD;;AAED,yBAAO,KAAK/C,GAAZ,2CAAO,WAAUkC,OAAjB,qBAAO,mBAAmBgB,YAA1B;AACD;;AAEDC,EAAAA,eAAe,CAACvC,GAAD,EAAW;AACxB,QAAIwC,QAAQ,GAAG,KAAKhB,WAAL,CAAiBxB,GAAjB,CAAf;;AACA,QAAI,CAACwC,QAAL,EAAe;AACb,aAAO,IAAP;AACD;;AAED,QAAIC,KAAK,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,QAAQ,CAACI,IAAT,GAAgB,KAAKZ,aAAL,EAA5B,CAAZ;;AAEA,WAAOQ,QAAQ,IAAIA,QAAQ,CAACK,CAAT,GAAaJ,KAAhC,EAAuC;AACrCzC,MAAAA,GAAG,GAAG,KAAKa,WAAL,CAAiBb,GAAjB,CAAN;AACAwC,MAAAA,QAAQ,GAAG,KAAKhB,WAAL,CAAiBxB,GAAjB,CAAX;AACD;;AAED,WAAOA,GAAP;AACD;;AAED8C,EAAAA,eAAe,CAAC9C,GAAD,EAAW;AACxB,QAAIwC,QAAQ,GAAG,KAAKhB,WAAL,CAAiBxB,GAAjB,CAAf;;AAEA,QAAI,CAACwC,QAAL,EAAe;AACb,aAAO,IAAP;AACD;;AAED,QAAIO,UAAU,GAAG,KAAKf,aAAL,EAAjB;AACA,QAAIS,KAAK,GAAGC,IAAI,CAACM,GAAL,CAAS,KAAKZ,gBAAL,EAAT,EAAkCI,QAAQ,CAACK,CAAT,GAAaE,UAA/C,CAAZ;;AAEA,WAAOP,QAAQ,IAAIA,QAAQ,CAACI,IAAT,GAAgBH,KAAnC,EAA0C;AACxC,UAAIQ,OAAO,GAAG,KAAKzC,WAAL,CAAiBR,GAAjB,CAAd;AACAwC,MAAAA,QAAQ,GAAG,KAAKhB,WAAL,CAAiByB,OAAjB,CAAX,CAFwC,CAIxC;AACA;;AACA,UAAIA,OAAO,IAAI,IAAf,EAAqB;AACnBjD,QAAAA,GAAG,GAAGiD,OAAN;AACD;AACF;;AAED,WAAOjD,GAAP;AACD;;AAEDkD,EAAAA,eAAe,CAACC,MAAD,EAAiBrD,OAAjB,EAAgC;AAC7C,QAAI,CAAC,KAAKR,QAAV,EAAoB;AAClB,aAAO,IAAP;AACD;;AAED,QAAIJ,UAAU,GAAG,KAAKA,UAAtB;AACA,QAAIc,GAAG,GAAGF,OAAH,WAAGA,OAAH,GAAc,KAAKS,WAAL,EAArB,CAN6C,CAQ7C;;AACA,QAAIE,SAAS,GAAGvB,UAAU,CAACkB,OAAX,CAAmBJ,GAAnB,CAAhB;;AACA,QAAIS,SAAS,CAACd,IAAV,KAAmB,MAAvB,EAA+B;AAC7BK,MAAAA,GAAG,GAAGS,SAAS,CAACC,SAAhB;AACD;;AAED,QAAI0C,UAAU,GAAG,KAAjB;;AACA,WAAOpD,GAAG,IAAI,IAAd,EAAoB;AAClB,UAAIG,IAAI,GAAGjB,UAAU,CAACkB,OAAX,CAAmBJ,GAAnB,CAAX,CADkB,CAGlB;;AACA,UAAIG,IAAI,CAACkD,SAAT,EAAoB;AAClB,YAAIC,SAAS,GAAGnD,IAAI,CAACkD,SAAL,CAAeE,KAAf,CAAqB,CAArB,EAAwBJ,MAAM,CAACnC,MAA/B,CAAhB;;AACA,YAAI,KAAK1B,QAAL,CAAckE,OAAd,CAAsBF,SAAtB,EAAiCH,MAAjC,MAA6C,CAAjD,EAAoD;AAClD,cAAI,KAAKvD,KAAL,CAAWO,IAAX,KAAoB,KAAKX,SAAL,KAAmB,MAA3C,EAAmD;AACjD,mBAAO,CAAC,GAAGW,IAAI,CAACQ,UAAT,EAAqB,CAArB,EAAwBX,GAA/B;AACD;;AAED,iBAAOG,IAAI,CAACH,GAAZ;AACD;AACF;;AAEDA,MAAAA,GAAG,GAAG,KAAKK,WAAL,CAAiBL,GAAjB,CAAN,CAfkB,CAiBlB;;AACA,UAAIA,GAAG,IAAI,IAAP,IAAe,CAACoD,UAApB,EAAgC;AAC9BpD,QAAAA,GAAG,GAAG,KAAKO,WAAL,EAAN;AACA6C,QAAAA,UAAU,GAAG,IAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAlW2F;;;;AC3B9F;;;;;;;;;;;AAgBA;AACO,MAAMK,8DAAqB,GAAG,IAAIC,OAAJ,EAA9B;;;ACjBP,4CAAiBC,IAAI,CAACC,KAAL,CAAW,oPAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,+QAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,8RAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,iQAAX,CAAjB;;;ACAA,uCAAiBD,IAAI,CAACC,KAAL,CAAW,kSAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,0TAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,iQAAX,CAAjB;;;ACAA,yCAAiBD,IAAI,CAACC,KAAL,CAAW,wTAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,kQAAX,CAAjB;;;ACAA,sCAAiBD,IAAI,CAACC,KAAL,CAAW,uRAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,8SAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,2OAAX,CAAjB;;;ACAA,0CAAiBD,IAAI,CAACC,KAAL,CAAW,8SAAX,CAAjB;;;ACAA,yCAAiBD,IAAI,CAACC,KAAL,CAAW,sRAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,6SAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,uOAAX,CAAjB;;;ACAA,0CAAiBD,IAAI,CAACC,KAAL,CAAW,sPAAX,CAAjB;;;ACAA,wCAAiBD,IAAI,CAACC,KAAL,CAAW,6SAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,qTAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,mRAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,iSAAX,CAAjB;;;ACAA,wCAAiBD,IAAI,CAACC,KAAL,CAAW,6SAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,iSAAX,CAAjB;;;ACAA,yCAAiBD,IAAI,CAACC,KAAL,CAAW,iSAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,uRAAX,CAAjB;;;ACAA,uCAAiBD,IAAI,CAACC,KAAL,CAAW,2QAAX,CAAjB;;;ACAA,oCAAiBD,IAAI,CAACC,KAAL,CAAW,oSAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,uSAAX,CAAjB;;;ACAA,yCAAiBD,IAAI,CAACC,KAAL,CAAW,gSAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,4QAAX,CAAjB;;;ACAA,yCAAiBD,IAAI,CAACC,KAAL,CAAW,wPAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,iRAAX,CAAjB;;;ACAA,2CAAiBD,IAAI,CAACC,KAAL,CAAW,2MAAX,CAAjB;;;ACAA,4CAAiBD,IAAI,CAACC,KAAL,CAAW,+MAAX,CAAjB;ACoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA;;;;;;;AAOO,SAASC,OAAT,CAAoBC,KAApB,EAAsCC,KAAtC,EAA8E3E,GAA9E,EAAqH;AAC1H,MAAI;AACF4E,IAAAA,aADE;AAEFC,IAAAA,gBAFE;AAGFzE,IAAAA,SAHE;AAIF0E,IAAAA,UAAU,GAAIlE,GAAD;AAAA;;AAAA,sCAAS+D,KAAK,CAAC7E,UAAN,CAAiBkB,OAAjB,CAAyBJ,GAAzB,CAAT,qBAAS,sBAA+BqD,SAAxC;AAAA,KAJX;AAKFc,IAAAA;AALE,MAMAL,KANJ;AAOA,MAAIM,aAAa,GAAGC,mBAAmB,CAACC,kDAAD,CAAvC;;AAEA,MAAI,CAACR,KAAK,CAAC,YAAD,CAAN,IAAwB,CAACA,KAAK,CAAC,iBAAD,CAAlC,EAAuD;AACrDS,IAAAA,OAAO,CAACC,IAAR,CAAa,sEAAb;AACD,GAZyH,CAc1H;AACA;;;AACA,MAAIlF,QAAQ,GAAGmF,WAAW,CAAC;AAACC,IAAAA,KAAK,EAAE,QAAR;AAAkBC,IAAAA,WAAW,EAAE;AAA/B,GAAD,CAA1B;AACA,MAAI;AAACtF,IAAAA;AAAD,MAAcuF,SAAS,EAA3B;AACA,MAAIC,QAAQ,GAAGC,OAAO,CAAC,MAAMb,gBAAgB,IAAI,yBAAyB;AACxE/E,IAAAA,UAAU,EAAE6E,KAAK,CAAC7E,UADsD;AAExEC,IAAAA,YAAY,EAAE4E,KAAK,CAAC5E,YAFoD;AAGxEC,IAAAA,GAHwE;AAIxEC,IAAAA,SAJwE;AAKxEC,IAAAA,QALwE;AAMxEE,IAAAA;AANwE,GAAzB,CAA3B,EAOlB,CAACyE,gBAAD,EAAmBF,KAAK,CAAC7E,UAAzB,EAAqC6E,KAAK,CAAC5E,YAA3C,EAAyDC,GAAzD,EAA8DC,SAA9D,EAAyEC,QAAzE,EAAmFE,SAAnF,CAPkB,CAAtB;AAQA,MAAI;AAACuF,IAAAA;AAAD,MAAoBC,uBAAuB,CAAC;AAC9C5F,IAAAA,GAD8C;AAE9C6F,IAAAA,gBAAgB,EAAElB,KAAK,CAACkB,gBAFsB;AAG9ChB,IAAAA,gBAAgB,EAAEY,QAH4B;AAI9Cb,IAAAA,aAJ8C;AAK9CG,IAAAA;AAL8C,GAAD,CAA/C;AAQA,MAAIe,EAAE,GAAGC,KAAK,EAAd;AACA,iEAAsBC,GAAtB,CAA0BrB,KAA1B,EAAiCc,QAAjC;AAEA,MAAIQ,QAAQ,GAAGC,cAAc,CAACxB,KAAD,EAAQ;AAACyB,IAAAA,SAAS,EAAE;AAAZ,GAAR,CAA7B;AACA,MAAIC,SAAsC,GAAGC,UAAU,CAACJ,QAAD;AACrDK,IAAAA,IAAI,EAAE,MAD+C;AAErDR,IAAAA,EAFqD;AAGrD,4BAAwBnB,KAAK,CAACkB,gBAAN,CAAuBU,aAAvB,KAAyC,UAAzC,GAAsD,MAAtD,GAA+DC;AAHlC,KAIlDb,eAJkD,EAAvD;;AAOA,MAAIf,aAAJ,EAAmB;AACjBwB,IAAAA,SAAS,CAAC,eAAD,CAAT,GAA6BzB,KAAK,CAAC7E,UAAN,CAAiB2G,IAA9C;AACAL,IAAAA,SAAS,CAAC,eAAD,CAAT,GAA6BzB,KAAK,CAAC7E,UAAN,CAAiB4G,WAA9C;AACD,GAhDyH,CAkD1H;AACA;;;AACA,MAAIC,SAAS,GAAGhC,KAAK,CAACkB,gBAAN,CAAuBe,YAAvC;AACA,MAAIC,aAAa,GAAGC,MAAM,CAACH,SAAD,CAA1B;AACAI,EAAAA,eAAe,CAAC,MAAM;AACpB;AACA;AACA,QAAI,CAACpC,KAAK,CAACkB,gBAAN,CAAuBmB,SAAxB,IAAqCrC,KAAK,CAACkB,gBAAN,CAAuBoB,iBAAvB,KAA6C,SAAtF,EAAiG;AAC/FJ,MAAAA,aAAa,CAAC3E,OAAd,GAAwByE,SAAxB;AAEA;AACD;;AAED,QAAIO,SAAS,GAAGC,mDAAa,CAACR,SAAD,EAAYE,aAAa,CAAC3E,OAA1B,CAA7B;AACA,QAAIkF,WAAW,GAAGD,mDAAa,CAACN,aAAa,CAAC3E,OAAf,EAAwByE,SAAxB,CAA/B,CAVoB,CAYpB;;AACA,QAAIU,QAAQ,GAAG,EAAf;;AACA,QAAIH,SAAS,CAACT,IAAV,KAAmB,CAAnB,IAAwBW,WAAW,CAACX,IAAZ,KAAqB,CAAjD,EAAoD;AAClD,UAAIa,SAAS,GAAGxC,UAAU,CAACoC,SAAS,CAACK,IAAV,GAAiBzF,IAAjB,GAAwB0F,KAAzB,CAA1B;;AACA,UAAIF,SAAJ,EAAe;AACbD,QAAAA,QAAQ,CAACI,IAAT,CAAczC,aAAa,CAAC,cAAD,EAAiB;AAACjE,UAAAA,IAAI,EAAEuG;AAAP,SAAjB,CAA3B;AACD;AACF,KALD,MAKO,IAAIF,WAAW,CAACX,IAAZ,KAAqB,CAArB,IAA0BS,SAAS,CAACT,IAAV,KAAmB,CAAjD,EAAoD;AACzD,UAAI9B,KAAK,CAAC7E,UAAN,CAAiBkB,OAAjB,CAAyBoG,WAAW,CAACG,IAAZ,GAAmBzF,IAAnB,GAA0B0F,KAAnD,CAAJ,EAA+D;AAC7D,YAAIE,WAAW,GAAG5C,UAAU,CAACsC,WAAW,CAACG,IAAZ,GAAmBzF,IAAnB,GAA0B0F,KAA3B,CAA5B;;AACA,YAAIE,WAAJ,EAAiB;AACfL,UAAAA,QAAQ,CAACI,IAAT,CAAczC,aAAa,CAAC,gBAAD,EAAmB;AAACjE,YAAAA,IAAI,EAAE2G;AAAP,WAAnB,CAA3B;AACD;AACF;AACF,KA1BmB,CA4BpB;;;AACA,QAAI/C,KAAK,CAACkB,gBAAN,CAAuBU,aAAvB,KAAyC,UAA7C,EAAyD;AACvD,UAAIc,QAAQ,CAACzF,MAAT,KAAoB,CAApB,IAAyB+E,SAAS,KAAK,KAAvC,IAAgDA,SAAS,CAACF,IAAV,GAAiB,CAAjE,IAAsEI,aAAa,CAAC3E,OAAd,KAA0B,KAAhG,IAAyG2E,aAAa,CAAC3E,OAAd,CAAsBuE,IAAtB,GAA6B,CAA1I,EAA6I;AAC3IY,QAAAA,QAAQ,CAACI,IAAT,CAAcd,SAAS,KAAK,KAAd,GACV3B,aAAa,CAAC,aAAD,CADH,GAEVA,aAAa,CAAC,eAAD,EAAkB;AAAC2C,UAAAA,KAAK,EAAEhB,SAAS,CAACF;AAAlB,SAAlB,CAFjB;AAID;AACF;;AAED,QAAIY,QAAQ,CAACzF,MAAT,GAAkB,CAAtB,EAAyB;AACvBgG,MAAAA,QAAQ,CAACP,QAAQ,CAACQ,IAAT,CAAc,GAAd,CAAD,CAAR;AACD;;AAEDhB,IAAAA,aAAa,CAAC3E,OAAd,GAAwByE,SAAxB;AACD,GA3Cc,EA2CZ,CAACA,SAAD,CA3CY,CAAf;AA6CA,SAAO;AACLP,IAAAA;AADK,GAAP;AAGD;;;;AAED,SAASe,mDAAT,CAAuB3H,CAAvB,EAAqCsI,CAArC,EAA6D;AAC3D,MAAIC,GAAG,GAAG,IAAIC,GAAJ,EAAV;;AACA,MAAIxI,CAAC,KAAK,KAAN,IAAesI,CAAC,KAAK,KAAzB,EAAgC;AAC9B,WAAOC,GAAP;AACD;;AAED,OAAK,IAAInH,GAAT,IAAgBpB,CAAC,CAAC+H,IAAF,EAAhB,EAA0B;AACxB,QAAI,CAACO,CAAC,CAACG,GAAF,CAAMrH,GAAN,CAAL,EAAiB;AACfmH,MAAAA,GAAG,CAACG,GAAJ,CAAQtH,GAAR;AACD;AACF;;AAED,SAAOmH,GAAP;AACD;;AC/JD;;;AAGO,SAASI,eAAT,GAA6C;AAClD,SAAO;AACLC,IAAAA,aAAa,EAAE;AACb9B,MAAAA,IAAI,EAAE;AADO;AADV,GAAP;AAKD;;;;ACQD;;;;;AAKO,SAAS+B,UAAT,CAA+E3D,KAA/E,EAAuGC,KAAvG,EAAiH3E,GAAjH,EAA2J;AAChK,MAAI;AACFM,IAAAA,IADE;AAEFsE,IAAAA,aAFE;AAGF0D,IAAAA,qBAHE;AAIFC,IAAAA;AAJE,MAKA7D,KALJ;AAOA,MAAI;AAAC8D,IAAAA,SAAD;AAAYC,IAAAA;AAAZ,MAAyBC,iBAAiB,CAAC;AAC7C7C,IAAAA,gBAAgB,EAAElB,KAAK,CAACkB,gBADqB;AAE7CjF,IAAAA,GAAG,EAAEN,IAAI,CAACM,GAFmC;AAG7CZ,IAAAA,GAH6C;AAI7C4E,IAAAA,aAJ6C;AAK7C0D,IAAAA,qBAL6C;AAM7CC,IAAAA;AAN6C,GAAD,CAA9C;AASA,MAAII,UAAU,GAAGhE,KAAK,CAACkB,gBAAN,CAAuB8C,UAAvB,CAAkCrI,IAAI,CAACM,GAAvC,CAAjB;;AAEA,MAAIgI,QAAqC;AACvCtC,IAAAA,IAAI,EAAE,KADiC;AAEvC,qBAAiB3B,KAAK,CAACkB,gBAAN,CAAuBU,aAAvB,KAAyC,MAAzC,GAAkDoC,UAAlD,GAA+DnC;AAFzC,KAGpCgC,SAHoC,CAAzC;;AAMA,MAAI5D,aAAJ,EAAmB;AACjBgE,IAAAA,QAAQ,CAAC,eAAD,CAAR,GAA4BtI,IAAI,CAACkB,KAAL,GAAa,CAAzC,CADiB,CAC2B;AAC7C;;AAED,SAAO;AACLoH,IAAAA,QADK;AAELH,IAAAA;AAFK,GAAP;AAID;;;;AC/BD;;;;;AAKO,SAASI,WAAT,CAAqDnE,KAArD,EAA2EC,KAA3E,EAAmG3E,GAAnG,EAA8I;AACnJ,MAAI;AACFM,IAAAA,IADE;AAEFsE,IAAAA,aAFE;AAGFxE,IAAAA,SAAS,GAAG,OAHV;AAIFkI,IAAAA,qBAJE;AAKFC,IAAAA;AALE,MAMA7D,KANJ;AAQA,MAAI;AAACzE,IAAAA;AAAD,MAAcuF,SAAS,EAA3B;AACA,MAAIX,gBAAgB,GAAG,+DAAsBiE,GAAtB,CAA0BnE,KAA1B,CAAvB,CAVmJ,CAYnJ;AACA;;AACA,MAAIoE,KAAK,GAAG,MAAM;AAChB,QAAIC,UAAU,GAAGC,sBAAsB,CAACjJ,GAAG,CAACkC,OAAL,CAAvC;;AACA,QAAI9B,SAAS,KAAK,OAAlB,EAA2B;AACzB,UAAI8I,SAAS,GAAGvE,KAAK,CAACkB,gBAAN,CAAuBsD,kBAAvB,KAA8C,MAA9C,GACZC,0CAAI,CAACJ,UAAD,CADQ,GAEZA,UAAU,CAACK,UAAX,EAFJ;;AAGA,UAAIH,SAAJ,EAAe;AACbI,QAAAA,WAAW,CAACJ,SAAD,CAAX;AACA;AACD;AACF;;AAED,QAAI,CAAClJ,GAAG,CAACkC,OAAJ,CAAYqH,QAAZ,CAAqBC,QAAQ,CAACC,aAA9B,CAAL,EAAmD;AACjDH,MAAAA,WAAW,CAACtJ,GAAG,CAACkC,OAAL,CAAX;AACD;AACF,GAfD;;AAiBA,MAAI;AAACsG,IAAAA,SAAD;AAAYC,IAAAA;AAAZ,MAAyBC,iBAAiB,CAAC;AAC7C7C,IAAAA,gBAAgB,EAAElB,KAAK,CAACkB,gBADqB;AAE7CjF,IAAAA,GAAG,EAAEN,IAAI,CAACM,GAFmC;AAG7CZ,IAAAA,GAH6C;AAI7C4E,IAAAA,aAJ6C;AAK7CmE,IAAAA,KAL6C;AAM7CT,IAAAA,qBAN6C;AAO7CC,IAAAA;AAP6C,GAAD,CAA9C;;AAUA,MAAImB,SAAS,GAAIC,CAAD,IAA2B;AACzC,QAAI,CAACA,CAAC,CAACC,aAAF,CAAgBL,QAAhB,CAAyBI,CAAC,CAACE,MAA3B,CAAL,EAAwD;AACtD;AACD;;AAED,QAAIC,MAAM,GAAGb,sBAAsB,CAACjJ,GAAG,CAACkC,OAAL,CAAnC;AACA4H,IAAAA,MAAM,CAACC,WAAP,GAAqBP,QAAQ,CAACC,aAA9B;;AAEA,YAAQE,CAAC,CAAC/I,GAAV;AACE,WAAK,WAAL;AAAkB;AAChB;AACA,cAAIsI,SAAS,GAAGjJ,SAAS,KAAK,KAAd,GACZ6J,MAAM,CAACE,QAAP,EADY,GAEZF,MAAM,CAACG,YAAP,EAFJ,CAFgB,CAMhB;;AACA,cAAI7J,SAAS,KAAK,OAAd,IAAyB8I,SAAS,KAAKlJ,GAAG,CAACkC,OAA/C,EAAwD;AACtDgH,YAAAA,SAAS,GAAG,IAAZ;AACD;;AAED,cAAIA,SAAJ,EAAe;AACbS,YAAAA,CAAC,CAACO,cAAF;AACAP,YAAAA,CAAC,CAACQ,eAAF;AACAb,YAAAA,WAAW,CAACJ,SAAD,CAAX;AACD,WAJD,MAIO;AACL;AACA;AACA;AACA;AACA;AACA,gBAAIlH,IAAI,GAAG6C,gBAAgB,CAAC9C,YAAjB,CAA8BzB,IAAI,CAACM,GAAnC,CAAX;;AACA,gBAAIoB,IAAI,KAAK1B,IAAI,CAACM,GAAlB,EAAuB;AACrB;AACD;;AAED+I,YAAAA,CAAC,CAACO,cAAF;AACAP,YAAAA,CAAC,CAACQ,eAAF;;AACA,gBAAI/J,SAAS,KAAK,MAAd,IAAwBH,SAAS,KAAK,KAA1C,EAAiD;AAC/CqJ,cAAAA,WAAW,CAACtJ,GAAG,CAACkC,OAAL,CAAX;AACD,aAFD,MAEO;AACL4H,cAAAA,MAAM,CAACC,WAAP,GAAqB/J,GAAG,CAACkC,OAAzB;AACAgH,cAAAA,SAAS,GAAGjJ,SAAS,KAAK,KAAd,GACR6J,MAAM,CAACT,UAAP,EADQ,GAERD,0CAAI,CAACU,MAAD,CAFR;;AAGA,kBAAIZ,SAAJ,EAAe;AACbI,gBAAAA,WAAW,CAACJ,SAAD,CAAX;AACD;AACF;AACF;;AACD;AACD;;AACD,WAAK,YAAL;AAAmB;AACjB,cAAIA,SAAS,GAAGjJ,SAAS,KAAK,KAAd,GACZ6J,MAAM,CAACG,YAAP,EADY,GAEZH,MAAM,CAACE,QAAP,EAFJ;;AAIA,cAAI5J,SAAS,KAAK,OAAd,IAAyB8I,SAAS,KAAKlJ,GAAG,CAACkC,OAA/C,EAAwD;AACtDgH,YAAAA,SAAS,GAAG,IAAZ;AACD;;AAED,cAAIA,SAAJ,EAAe;AACbS,YAAAA,CAAC,CAACO,cAAF;AACAP,YAAAA,CAAC,CAACQ,eAAF;AACAb,YAAAA,WAAW,CAACJ,SAAD,CAAX;AACD,WAJD,MAIO;AACL,gBAAIpH,IAAI,GAAG+C,gBAAgB,CAACnD,aAAjB,CAA+BpB,IAAI,CAACM,GAApC,CAAX;;AACA,gBAAIkB,IAAI,KAAKxB,IAAI,CAACM,GAAlB,EAAuB;AACrB;AACD;;AAED+I,YAAAA,CAAC,CAACO,cAAF;AACAP,YAAAA,CAAC,CAACQ,eAAF;;AACA,gBAAI/J,SAAS,KAAK,MAAd,IAAwBH,SAAS,KAAK,KAA1C,EAAiD;AAC/CqJ,cAAAA,WAAW,CAACtJ,GAAG,CAACkC,OAAL,CAAX;AACD,aAFD,MAEO;AACL4H,cAAAA,MAAM,CAACC,WAAP,GAAqB/J,GAAG,CAACkC,OAAzB;AACAgH,cAAAA,SAAS,GAAGjJ,SAAS,KAAK,KAAd,GACRmJ,0CAAI,CAACU,MAAD,CADI,GAERA,MAAM,CAACT,UAAP,EAFJ;;AAGA,kBAAIH,SAAJ,EAAe;AACbI,gBAAAA,WAAW,CAACJ,SAAD,CAAX;AACD;AACF;AACF;;AACD;AACD;;AACD,WAAK,SAAL;AACA,WAAK,WAAL;AACE;AACA;AACA;AACA,YAAI,CAACS,CAAC,CAACS,MAAH,IAAapK,GAAG,CAACkC,OAAJ,CAAYqH,QAAZ,CAAqBI,CAAC,CAACE,MAAvB,CAAjB,EAAgE;AAC9DF,UAAAA,CAAC,CAACQ,eAAF;AACAR,UAAAA,CAAC,CAACO,cAAF;AACAlK,UAAAA,GAAG,CAACkC,OAAJ,CAAYmI,aAAZ,CAA0BC,aAA1B,CACE,IAAIC,aAAJ,CAAkBZ,CAAC,CAACa,WAAF,CAAcjK,IAAhC,EAAsCoJ,CAAC,CAACa,WAAxC,CADF;AAGD;;AACD;AA1FJ;AA4FD,GApGD,CAzCmJ,CA+InJ;AACA;;;AACA,MAAIC,OAAO,GAAId,CAAD,IAAO;AACnB,QAAIA,CAAC,CAACE,MAAF,KAAa7J,GAAG,CAACkC,OAArB,EAA8B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,UAAI,CAACwI,cAAc,EAAnB,EAAuB;AACrB/F,QAAAA,KAAK,CAACkB,gBAAN,CAAuB8E,aAAvB,CAAqCrK,IAAI,CAACM,GAA1C;AACD;;AACD;AACD,KAZkB,CAcnB;AACA;;;AACAgK,IAAAA,qBAAqB,CAAC,MAAM;AAC1B,UAAIxK,SAAS,KAAK,OAAd,IAAyBoJ,QAAQ,CAACC,aAAT,KAA2BzJ,GAAG,CAACkC,OAA5D,EAAqE;AACnE6G,QAAAA,KAAK;AACN;AACF,KAJoB,CAArB;AAKD,GArBD;;AAuBA,MAAI8B,aAA0C,GAAGxE,UAAU,CAACmC,SAAD,EAAY;AACrElC,IAAAA,IAAI,EAAE,UAD+D;AAErEwE,IAAAA,gBAAgB,EAAEpB,SAFmD;AAGrEe,IAAAA;AAHqE,GAAZ,CAA3D;;AAMA,MAAI7F,aAAJ,EAAmB;AACjBiG,IAAAA,aAAa,CAAC,eAAD,CAAb,GAAiCvK,IAAI,CAACkB,KAAL,GAAa,CAA9C,CADiB,CACgC;AAClD;;AAED,SAAO;AACLqJ,IAAAA,aADK;AAELpC,IAAAA;AAFK,GAAP;AAID;;;;AAED,SAASW,0CAAT,CAAcU,MAAd,EAAkC;AAChC,MAAIhI,IAAJ;AACA,MAAIsH,IAAJ;;AACA,KAAG;AACDA,IAAAA,IAAI,GAAGU,MAAM,CAACiB,SAAP,EAAP;;AACA,QAAI3B,IAAJ,EAAU;AACRtH,MAAAA,IAAI,GAAGsH,IAAP;AACD;AACF,GALD,QAKSA,IALT;;AAMA,SAAOtH,IAAP;AACD;;AC/OD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA;;;;;AAKO,SAASkJ,wBAAT,CAAkEtG,KAAlE,EAAiGC,KAAjG,EAAgJ;AACrJ,MAAI;AAAC/D,IAAAA;AAAD,MAAQ8D,KAAZ;AAEA,MAAIuG,OAAO,GAAGtG,KAAK,CAACkB,gBAApB;AACA,MAAIqF,UAAU,GAAGnF,KAAK,EAAtB;AACA,MAAIoF,UAAU,GAAGxG,KAAK,CAAC5E,YAAN,CAAmBkI,GAAnB,CAAuBrH,GAAvB,CAAjB;AACA,MAAI+H,UAAU,GAAGhE,KAAK,CAACkB,gBAAN,CAAuB8C,UAAvB,CAAkC/H,GAAlC,CAAjB;;AAEA,MAAIwK,QAAQ,GAAG,MAAMH,OAAO,CAACI,MAAR,CAAezK,GAAf,CAArB;;AAEA,QAAMoE,aAAa,GAAGC,mBAAmB,CAACC,iDAAD,CAAzC;AAEA,SAAO;AACLoG,IAAAA,aAAa,EAAE;AACbxF,MAAAA,EAAE,EAAEoF,UADS;AAEb,oBAAclG,aAAa,CAAC,QAAD,CAFd;AAGb2D,MAAAA,UAHa;AAIbwC,MAAAA,UAAU,EAAEA,UAAU,IAAIF,OAAO,CAAC1E,aAAR,KAA0B,MAJvC;AAKb6E,MAAAA;AALa;AADV,GAAP;AASD","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./packages/@react-aria/grid/src/GridKeyboardDelegate.ts","./packages/@react-aria/grid/src/utils.ts","./packages/@react-aria/grid/intl/ar-AE.json","./packages/@react-aria/grid/intl/bg-BG.json","./packages/@react-aria/grid/intl/cs-CZ.json","./packages/@react-aria/grid/intl/da-DK.json","./packages/@react-aria/grid/intl/de-DE.json","./packages/@react-aria/grid/intl/el-GR.json","./packages/@react-aria/grid/intl/en-US.json","./packages/@react-aria/grid/intl/es-ES.json","./packages/@react-aria/grid/intl/et-EE.json","./packages/@react-aria/grid/intl/fi-FI.json","./packages/@react-aria/grid/intl/fr-FR.json","./packages/@react-aria/grid/intl/he-IL.json","./packages/@react-aria/grid/intl/hr-HR.json","./packages/@react-aria/grid/intl/hu-HU.json","./packages/@react-aria/grid/intl/it-IT.json","./packages/@react-aria/grid/intl/ja-JP.json","./packages/@react-aria/grid/intl/ko-KR.json","./packages/@react-aria/grid/intl/lt-LT.json","./packages/@react-aria/grid/intl/lv-LV.json","./packages/@react-aria/grid/intl/nb-NO.json","./packages/@react-aria/grid/intl/nl-NL.json","./packages/@react-aria/grid/intl/pl-PL.json","./packages/@react-aria/grid/intl/pt-BR.json","./packages/@react-aria/grid/intl/pt-PT.json","./packages/@react-aria/grid/intl/ro-RO.json","./packages/@react-aria/grid/intl/ru-RU.json","./packages/@react-aria/grid/intl/sk-SK.json","./packages/@react-aria/grid/intl/sl-SI.json","./packages/@react-aria/grid/intl/sr-SP.json","./packages/@react-aria/grid/intl/sv-SE.json","./packages/@react-aria/grid/intl/tr-TR.json","./packages/@react-aria/grid/intl/uk-UA.json","./packages/@react-aria/grid/intl/zh-CN.json","./packages/@react-aria/grid/intl/zh-TW.json","./packages/@react-aria/grid/src/useGrid.ts","./packages/@react-aria/grid/src/useGridRowGroup.ts","./packages/@react-aria/grid/src/useGridRow.ts","./packages/@react-aria/grid/src/useGridCell.ts","./packages/@react-aria/grid/src/useGridSelectionCheckbox.ts"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Direction, KeyboardDelegate, Node} from '@react-types/shared';\nimport {GridCollection} from '@react-types/grid';\nimport {Key, RefObject} from 'react';\nimport {Layout, Rect} from '@react-stately/virtualizer';\n\nexport interface GridKeyboardDelegateOptions<T, C> {\n collection: C,\n disabledKeys: Set<Key>,\n ref?: RefObject<HTMLElement>,\n direction: Direction,\n collator?: Intl.Collator,\n layout?: Layout<Node<T>>,\n focusMode?: 'row' | 'cell'\n}\n\nexport class GridKeyboardDelegate<T, C extends GridCollection<T>> implements KeyboardDelegate {\n collection: C;\n protected disabledKeys: Set<Key>;\n protected ref: RefObject<HTMLElement>;\n protected direction: Direction;\n protected collator: Intl.Collator;\n protected layout: Layout<Node<T>>;\n protected focusMode;\n\n constructor(options: GridKeyboardDelegateOptions<T, C>) {\n this.collection = options.collection;\n this.disabledKeys = options.disabledKeys;\n this.ref = options.ref;\n this.direction = options.direction;\n this.collator = options.collator;\n this.layout = options.layout;\n this.focusMode = options.focusMode || 'row';\n }\n\n protected isCell(node: Node<T>) {\n return node.type === 'cell';\n }\n\n protected isRow(node: Node<T>) {\n return node.type === 'row' || node.type === 'item';\n }\n\n protected findPreviousKey(fromKey?: Key, pred?: (item: Node<T>) => boolean) {\n let key = fromKey != null\n ? this.collection.getKeyBefore(fromKey)\n : this.collection.getLastKey();\n\n while (key != null) {\n let item = this.collection.getItem(key);\n if (!pred || pred(item)) {\n return key;\n }\n\n key = this.collection.getKeyBefore(key);\n }\n }\n\n protected findNextKey(fromKey?: Key, pred?: (item: Node<T>) => boolean) {\n let key = fromKey != null\n ? this.collection.getKeyAfter(fromKey)\n : this.collection.getFirstKey();\n\n while (key != null) {\n let item = this.collection.getItem(key);\n if (!pred || pred(item)) {\n return key;\n }\n\n key = this.collection.getKeyAfter(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let startItem = this.collection.getItem(key);\n if (!startItem) {\n return;\n }\n\n // If focus was on a cell, start searching from the parent row\n if (this.isCell(startItem)) {\n key = startItem.parentKey;\n }\n\n // Find the next item\n key = this.findNextKey(key);\n if (key != null) {\n // If focus was on a cell, focus the cell with the same index in the next row.\n if (this.isCell(startItem)) {\n let item = this.collection.getItem(key);\n return [...item.childNodes][startItem.index].key;\n }\n\n // Otherwise, focus the next row\n if (this.focusMode === 'row') {\n return key;\n }\n }\n }\n\n getKeyAbove(key: Key) {\n let startItem = this.collection.getItem(key);\n if (!startItem) {\n return;\n }\n\n // If focus is on a cell, start searching from the parent row\n if (this.isCell(startItem)) {\n key = startItem.parentKey;\n }\n\n // Find the previous item\n key = this.findPreviousKey(key);\n if (key != null) {\n // If focus was on a cell, focus the cell with the same index in the previous row.\n if (this.isCell(startItem)) {\n let item = this.collection.getItem(key);\n return [...item.childNodes][startItem.index].key;\n }\n\n // Otherwise, focus the previous row\n if (this.focusMode === 'row') {\n return key;\n }\n }\n }\n\n getKeyRightOf(key: Key) {\n let item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If focus is on a row, focus the first child cell.\n if (this.isRow(item)) {\n let children = [...item.childNodes];\n return this.direction === 'rtl'\n ? children[children.length - 1].key\n : children[0].key;\n }\n\n // If focus is on a cell, focus the next cell if any,\n // otherwise focus the parent row.\n if (this.isCell(item)) {\n let parent = this.collection.getItem(item.parentKey);\n let children = [...parent.childNodes];\n let next = this.direction === 'rtl'\n ? children[item.index - 1]\n : children[item.index + 1];\n\n if (next) {\n return next.key;\n }\n\n // focus row only if focusMode is set to row\n if (this.focusMode === 'row') {\n return item.parentKey;\n }\n\n return this.direction === 'rtl' ? this.getFirstKey(key) : this.getLastKey(key);\n }\n }\n\n getKeyLeftOf(key: Key) {\n let item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If focus is on a row, focus the last child cell.\n if (this.isRow(item)) {\n let children = [...item.childNodes];\n return this.direction === 'rtl'\n ? children[0].key\n : children[children.length - 1].key;\n }\n\n // If focus is on a cell, focus the previous cell if any,\n // otherwise focus the parent row.\n if (this.isCell(item)) {\n let parent = this.collection.getItem(item.parentKey);\n let children = [...parent.childNodes];\n let prev = this.direction === 'rtl'\n ? children[item.index + 1]\n : children[item.index - 1];\n\n if (prev) {\n return prev.key;\n }\n\n // focus row only if focusMode is set to row\n if (this.focusMode === 'row') {\n return item.parentKey;\n }\n\n return this.direction === 'rtl' ? this.getLastKey(key) : this.getFirstKey(key);\n }\n }\n\n getFirstKey(key?: Key, global?: boolean) {\n let item: Node<T>;\n if (key != null) {\n item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If global flag is not set, and a cell is currently focused,\n // move focus to the first cell in the parent row.\n if (this.isCell(item) && !global) {\n let parent = this.collection.getItem(item.parentKey);\n return [...parent.childNodes][0].key;\n }\n }\n\n // Find the first row\n key = this.findNextKey();\n\n // If global flag is set (or if focus mode is cell), focus the first cell in the first row.\n if ((key != null && item && this.isCell(item) && global) || this.focusMode === 'cell') {\n let item = this.collection.getItem(key);\n key = [...item.childNodes][0].key;\n }\n\n // Otherwise, focus the row itself.\n return key;\n }\n\n getLastKey(key?: Key, global?: boolean) {\n let item: Node<T>;\n if (key != null) {\n item = this.collection.getItem(key);\n if (!item) {\n return;\n }\n\n // If global flag is not set, and a cell is currently focused,\n // move focus to the last cell in the parent row.\n if (this.isCell(item) && !global) {\n let parent = this.collection.getItem(item.parentKey);\n let children = [...parent.childNodes];\n return children[children.length - 1].key;\n }\n }\n\n // Find the last row\n key = this.findPreviousKey();\n\n // If global flag is set (or if focus mode is cell), focus the last cell in the last row.\n if ((key != null && item && this.isCell(item) && global) || this.focusMode === 'cell') {\n let item = this.collection.getItem(key);\n let children = [...item.childNodes];\n key = children[children.length - 1].key;\n }\n\n // Otherwise, focus the row itself.\n return key;\n }\n\n private getItem(key: Key): HTMLElement {\n return this.ref.current.querySelector(`[data-key=\"${key}\"]`);\n }\n\n private getItemRect(key: Key): Rect {\n if (this.layout) {\n return this.layout.getLayoutInfo(key)?.rect;\n }\n\n let item = this.getItem(key);\n if (item) {\n return new Rect(item.offsetLeft, item.offsetTop, item.offsetWidth, item.offsetHeight);\n }\n }\n\n private getPageHeight(): number {\n if (this.layout) {\n return this.layout.virtualizer?.visibleRect.height;\n }\n\n return this.ref?.current?.offsetHeight;\n }\n\n private getContentHeight(): number {\n if (this.layout) {\n return this.layout.getContentSize().height;\n }\n\n return this.ref?.current?.scrollHeight;\n }\n\n getKeyPageAbove(key: Key) {\n let itemRect = this.getItemRect(key);\n if (!itemRect) {\n return null;\n }\n\n let pageY = Math.max(0, itemRect.maxY - this.getPageHeight());\n\n while (itemRect && itemRect.y > pageY) {\n key = this.getKeyAbove(key);\n itemRect = this.getItemRect(key);\n }\n\n return key;\n }\n\n getKeyPageBelow(key: Key) {\n let itemRect = this.getItemRect(key);\n\n if (!itemRect) {\n return null;\n }\n\n let pageHeight = this.getPageHeight();\n let pageY = Math.min(this.getContentHeight(), itemRect.y + pageHeight);\n\n while (itemRect && itemRect.maxY < pageY) {\n let nextKey = this.getKeyBelow(key);\n itemRect = this.getItemRect(nextKey);\n\n // Guard against case where maxY of the last key is barely less than pageY due to rounding\n // and thus it attempts to set key to null\n if (nextKey != null) {\n key = nextKey;\n }\n }\n\n return key;\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey ?? this.getFirstKey();\n\n // If the starting key is a cell, search from its parent row.\n let startItem = collection.getItem(key);\n if (startItem.type === 'cell') {\n key = startItem.parentKey;\n }\n\n let hasWrapped = false;\n while (key != null) {\n let item = collection.getItem(key);\n\n // check row text value for match\n if (item.textValue) {\n let substring = item.textValue.slice(0, search.length);\n if (this.collator.compare(substring, search) === 0) {\n if (this.isRow(item) && this.focusMode === 'cell') {\n return [...item.childNodes][0].key;\n }\n\n return item.key;\n }\n }\n\n key = this.findNextKey(key);\n\n // Wrap around when reaching the end of the collection\n if (key == null && !hasWrapped) {\n key = this.getFirstKey();\n hasWrapped = true;\n }\n }\n\n return null;\n }\n}\n\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport type {GridCollection} from '@react-types/grid';\nimport type {GridState} from '@react-stately/grid';\nimport type {KeyboardDelegate} from '@react-types/shared';\n\n// Used to share keyboard delegate between useGrid and useGridCell\nexport const gridKeyboardDelegates = new WeakMap<GridState<unknown, GridCollection<unknown>>, KeyboardDelegate>();\n","{\n \"deselectedItem\": \"{item} غير المحدد\",\n \"select\": \"تحديد\",\n \"selectedAll\": \"جميع العناصر المحددة.\",\n \"selectedCount\": \"{count, plural, =0 {لم يتم تحديد عناصر} one {# عنصر محدد} other {# عنصر محدد}}.\",\n \"selectedItem\": \"{item} المحدد\"\n}\n","{\n \"deselectedItem\": \"{item} не е избран.\",\n \"select\": \"Изберете\",\n \"selectedAll\": \"Всички елементи са избрани.\",\n \"selectedCount\": \"{count, plural, =0 {Няма избрани елементи} one {# избран елемент} other {# избрани елементи}}.\",\n \"selectedItem\": \"{item} избран.\"\n}\n","{\n \"deselectedItem\": \"Položka {item} není vybrána.\",\n \"select\": \"Vybrat\",\n \"selectedAll\": \"Vybrány všechny položky.\",\n \"selectedCount\": \"{count, plural, =0 {Nevybrány žádné položky} one {Vybrána # položka} other {Vybráno # položek}}.\",\n \"selectedItem\": \"Vybrána položka {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} ikke valgt.\",\n \"select\": \"Vælg\",\n \"selectedAll\": \"Alle elementer valgt.\",\n \"selectedCount\": \"{count, plural, =0 {Ingen elementer valgt} one {# element valgt} other {# elementer valgt}}.\",\n \"selectedItem\": \"{item} valgt.\"\n}\n","{\n \"deselectedItem\": \"{item} nicht ausgewählt.\",\n \"select\": \"Auswählen\",\n \"selectedAll\": \"Alle Elemente ausgewählt.\",\n \"selectedCount\": \"{count, plural, =0 {Keine Elemente ausgewählt} one {# Element ausgewählt} other {# Elemente ausgewählt}}.\",\n \"selectedItem\": \"{item} ausgewählt.\"\n}\n","{\n \"deselectedItem\": \"Δεν επιλέχθηκε το στοιχείο {item}.\",\n \"select\": \"Επιλογή\",\n \"selectedAll\": \"Επιλέχθηκαν όλα τα στοιχεία.\",\n \"selectedCount\": \"{count, plural, =0 {Δεν επιλέχθηκαν στοιχεία} one {Επιλέχθηκε # στοιχείο} other {Επιλέχθηκαν # στοιχεία}}.\",\n \"selectedItem\": \"Επιλέχθηκε το στοιχείο {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} not selected.\",\n \"select\": \"Select\",\n \"selectedCount\": \"{count, plural, =0 {No items selected} one {# item selected} other {# items selected}}.\",\n \"selectedAll\": \"All items selected.\",\n \"selectedItem\": \"{item} selected.\"\n}\n","{\n \"deselectedItem\": \"{item} no seleccionado.\",\n \"select\": \"Seleccionar\",\n \"selectedAll\": \"Todos los elementos seleccionados.\",\n \"selectedCount\": \"{count, plural, =0 {Ningún elemento seleccionado} one {# elemento seleccionado} other {# elementos seleccionados}}.\",\n \"selectedItem\": \"{item} seleccionado.\"\n}\n","{\n \"deselectedItem\": \"{item} pole valitud.\",\n \"select\": \"Vali\",\n \"selectedAll\": \"Kõik üksused valitud.\",\n \"selectedCount\": \"{count, plural, =0 {Üksusi pole valitud} one {# üksus valitud} other {# üksust valitud}}.\",\n \"selectedItem\": \"{item} valitud.\"\n}\n","{\n \"deselectedItem\": \"Kohdetta {item} ei valittu.\",\n \"select\": \"Valitse\",\n \"selectedAll\": \"Kaikki kohteet valittu.\",\n \"selectedCount\": \"{count, plural, =0 {Ei yhtään kohdetta valittu} one {# kohde valittu} other {# kohdetta valittu}}.\",\n \"selectedItem\": \"{item} valittu.\"\n}\n","{\n \"deselectedItem\": \"{item} non sélectionné.\",\n \"select\": \"Sélectionner\",\n \"selectedAll\": \"Tous les éléments sélectionnés.\",\n \"selectedCount\": \"{count, plural, =0 {Aucun élément sélectionné} one {# élément sélectionné} other {# éléments sélectionnés}}.\",\n \"selectedItem\": \"{item} sélectionné.\"\n}\n","{\n \"deselectedItem\": \"{item} לא נבחר.\",\n \"select\": \"בחר\",\n \"selectedAll\": \"כל הפריטים נבחרו.\",\n \"selectedCount\": \"{count, plural, =0 {לא נבחרו פריטים} one {פריט # נבחר} other {# פריטים נבחרו}}.\",\n \"selectedItem\": \"{item} נבחר.\"\n}\n","{\n \"deselectedItem\": \"Stavka {item} nije odabrana.\",\n \"select\": \"Odaberite\",\n \"selectedAll\": \"Odabrane su sve stavke.\",\n \"selectedCount\": \"{count, plural, =0 {Nije odabrana nijedna stavka} one {Odabrana je # stavka} other {Odabrano je # stavki}}.\",\n \"selectedItem\": \"Stavka {item} je odabrana.\"\n}\n","{\n \"deselectedItem\": \"{item} nincs kijelölve.\",\n \"select\": \"Kijelölés\",\n \"selectedAll\": \"Az összes elem kijelölve.\",\n \"selectedCount\": \"{count, plural, =0 {Egy elem sincs kijelölve} one {# elem kijelölve} other {# elem kijelölve}}.\",\n \"selectedItem\": \"{item} kijelölve.\"\n}\n","{\n \"deselectedItem\": \"{item} non selezionato.\",\n \"select\": \"Seleziona\",\n \"selectedAll\": \"Tutti gli elementi selezionati.\",\n \"selectedCount\": \"{count, plural, =0 {Nessun elemento selezionato} one {# elemento selezionato} other {# elementi selezionati}}.\",\n \"selectedItem\": \"{item} selezionato.\"\n}\n","{\n \"deselectedItem\": \"{item} が選択されていません。\",\n \"select\": \"選択\",\n \"selectedAll\": \"すべての項目を選択しました。\",\n \"selectedCount\": \"{count, plural, =0 {項目が選択されていません} one {# 項目を選択しました} other {# 項目を選択しました}}。\",\n \"selectedItem\": \"{item} を選択しました。\"\n}\n","{\n \"deselectedItem\": \"{item}이(가) 선택되지 않았습니다.\",\n \"select\": \"선택\",\n \"selectedAll\": \"모든 항목이 선택되었습니다.\",\n \"selectedCount\": \"{count, plural, =0 {선택된 항목이 없습니다} one {#개 항목이 선택되었습니다} other {#개 항목이 선택되었습니다}}.\",\n \"selectedItem\": \"{item}이(가) 선택되었습니다.\"\n}\n","{\n \"deselectedItem\": \"{item} nepasirinkta.\",\n \"select\": \"Pasirinkti\",\n \"selectedAll\": \"Pasirinkti visi elementai.\",\n \"selectedCount\": \"{count, plural, =0 {Nepasirinktas nė vienas elementas} one {Pasirinktas # elementas} other {Pasirinkta elementų: #}}.\",\n \"selectedItem\": \"Pasirinkta: {item}.\"\n}\n","{\n \"deselectedItem\": \"Vienums {item} nav atlasīts.\",\n \"select\": \"Atlasīt\",\n \"selectedAll\": \"Atlasīti visi vienumi.\",\n \"selectedCount\": \"{count, plural, =0 {Nav atlasīts neviens vienums} one {Atlasīto vienumu skaits: #} other {Atlasīto vienumu skaits: #}}.\",\n \"selectedItem\": \"Atlasīts vienums {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} er ikke valgt.\",\n \"select\": \"Velg\",\n \"selectedAll\": \"Alle elementer er valgt.\",\n \"selectedCount\": \"{count, plural, =0 {Ingen elementer er valgt} one {# element er valgt} other {# elementer er valgt}}.\",\n \"selectedItem\": \"{item} er valgt.\"\n}\n","{\n \"deselectedItem\": \"{item} niet geselecteerd.\",\n \"select\": \"Selecteren\",\n \"selectedAll\": \"Alle items geselecteerd.\",\n \"selectedCount\": \"{count, plural, =0 {Geen items geselecteerd} one {# item geselecteerd} other {# items geselecteerd}}.\",\n \"selectedItem\": \"{item} geselecteerd.\"\n}\n","{\n \"deselectedItem\": \"Nie zaznaczono {item}.\",\n \"select\": \"Zaznacz\",\n \"selectedAll\": \"Wszystkie zaznaczone elementy.\",\n \"selectedCount\": \"{count, plural, =0 {Nie zaznaczono żadnych elementów} one {# zaznaczony element} other {# zaznaczonych elementów}}.\",\n \"selectedItem\": \"Zaznaczono {item}.\"\n}\n","{\n \"deselectedItem\": \"{item} não selecionado.\",\n \"select\": \"Selecionar\",\n \"selectedAll\": \"Todos os itens selecionados.\",\n \"selectedCount\": \"{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.\",\n \"selectedItem\": \"{item} selecionado.\"\n}\n","{\n \"deselectedItem\": \"{item} não selecionado.\",\n \"select\": \"Selecionar\",\n \"selectedAll\": \"Todos os itens selecionados.\",\n \"selectedCount\": \"{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.\",\n \"selectedItem\": \"{item} selecionado.\"\n}\n","{\n \"deselectedItem\": \"{item} neselectat.\",\n \"select\": \"Selectare\",\n \"selectedAll\": \"Toate elementele selectate.\",\n \"selectedCount\": \"{count, plural, =0 {Niciun element selectat} one {# element selectat} other {# elemente selectate}}.\",\n \"selectedItem\": \"{item} selectat.\"\n}\n","{\n \"deselectedItem\": \"{Item} не выбрано.\",\n \"select\": \"Выбрать\",\n \"selectedAll\": \"Выбраны все элементы.\",\n \"selectedCount\": \"{count, plural, =0 {Нет выбранных элементов} one {# элемент выбран} other {# элементов выбрано}}.\",\n \"selectedItem\": \"{Item} выбрано.\"\n}\n","{\n \"deselectedItem\": \"Nevybraté položky: {item}.\",\n \"select\": \"Vybrať\",\n \"selectedAll\": \"Všetky vybraté položky.\",\n \"selectedCount\": \"{count, plural, =0 {Žiadne vybraté položky} one {# vybratá položka} other {Počet vybratých položiek:#}}.\",\n \"selectedItem\": \"Vybraté položky: {item}.\"\n}\n","{\n \"deselectedItem\": \"Element {item} ni izbran.\",\n \"select\": \"Izberite\",\n \"selectedAll\": \"Vsi elementi so izbrani.\",\n \"selectedCount\": \"{count, plural, =0 {Noben element ni izbran} one {# element je izbran} other {# elementov je izbranih}}.\",\n \"selectedItem\": \"Element {item} je izbran.\"\n}\n","{\n \"deselectedItem\": \"{item} nije izabrano.\",\n \"select\": \"Izaberite\",\n \"selectedAll\": \"Izabrane su sve stavke.\",\n \"selectedCount\": \"{count, plural, =0 {Nije izabrana nijedna stavka} one {Izabrana je # stavka} other {Izabrano je # stavki}}.\",\n \"selectedItem\": \"{Item} je izabrano.\"\n}\n","{\n \"deselectedItem\": \"{item} ej markerat.\",\n \"select\": \"Markera\",\n \"selectedAll\": \"Alla markerade objekt.\",\n \"selectedCount\": \"{count, plural, =0 {Inga markerade objekt} one {# markerat objekt} other {# markerade objekt}}.\",\n \"selectedItem\": \"{item} markerat.\"\n}\n","{\n \"deselectedItem\": \"{item} seçilmedi.\",\n \"select\": \"Seç\",\n \"selectedAll\": \"Tüm ögeler seçildi.\",\n \"selectedCount\": \"{count, plural, =0 {Hiçbir öge seçilmedi} one {# öge seçildi} other {# öge seçildi}}.\",\n \"selectedItem\": \"{item} seçildi.\"\n}\n","{\n \"deselectedItem\": \"{item} не вибрано.\",\n \"select\": \"Вибрати\",\n \"selectedAll\": \"Усі елементи вибрано.\",\n \"selectedCount\": \"{count, plural, =0 {Жодних елементів не вибрано} one {# елемент вибрано} other {Вибрано елементів: #}}.\",\n \"selectedItem\": \"{item} вибрано.\"\n}\n","{\n \"deselectedItem\": \"未选择 {item}。\",\n \"select\": \"选择\",\n \"selectedAll\": \"已选择所有项目。\",\n \"selectedCount\": \"{count, plural, =0 {未选择项目} one {已选择 # 个项目} other {已选择 # 个项目}}。\",\n \"selectedItem\": \"已选择 {item}。\"\n}\n","{\n \"deselectedItem\": \"未選取「{item}」。\",\n \"select\": \"選取\",\n \"selectedAll\": \"已選取所有項目。\",\n \"selectedCount\": \"{count, plural, =0 {未選取任何項目} one {已選取 # 個項目} other {已選取 # 個項目}}。\",\n \"selectedItem\": \"已選取「{item}」。\"\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {announce} from '@react-aria/live-announcer';\nimport {AriaLabelingProps, DOMProps, KeyboardDelegate, Selection} from '@react-types/shared';\nimport {filterDOMProps, mergeProps, useId, useUpdateEffect} from '@react-aria/utils';\nimport {GridCollection} from '@react-types/grid';\nimport {GridKeyboardDelegate} from './GridKeyboardDelegate';\nimport {gridKeyboardDelegates} from './utils';\nimport {GridState} from '@react-stately/grid';\nimport {HTMLAttributes, Key, RefObject, useMemo, useRef} from 'react';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {useCollator, useLocale, useMessageFormatter} from '@react-aria/i18n';\nimport {useSelectableCollection} from '@react-aria/selection';\n\nexport interface GridProps extends DOMProps, AriaLabelingProps {\n /** Whether the grid uses virtual scrolling. */\n isVirtualized?: boolean,\n /**\n * An optional keyboard delegate implementation for type to select,\n * to override the default.\n */\n keyboardDelegate?: KeyboardDelegate,\n /**\n * Whether initial grid focus should be placed on the grid row or grid cell.\n * @default 'row'\n */\n focusMode?: 'row' | 'cell',\n /**\n * A function that returns the text that should be announced by assistive technology when a row is added or removed from selection.\n * @default (key) => state.collection.getItem(key)?.textValue\n */\n getRowText?: (key: Key) => string,\n /**\n * The ref attached to the scrollable body. Used to provided automatic scrolling on item focus for non-virtualized grids.\n */\n scrollRef?: RefObject<HTMLElement>\n}\n\nexport interface GridAria {\n /** Props for the grid element. */\n gridProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Provides the behavior and accessibility implementation for a grid component.\n * A grid displays data in one or more rows and columns and enables a user to navigate its contents via directional navigation keys.\n * @param props - Props for the grid.\n * @param state - State for the grid, as returned by `useGridState`.\n * @param ref - The ref attached to the grid element.\n */\nexport function useGrid<T>(props: GridProps, state: GridState<T, GridCollection<T>>, ref: RefObject<HTMLElement>): GridAria {\n let {\n isVirtualized,\n keyboardDelegate,\n focusMode,\n getRowText = (key) => state.collection.getItem(key)?.textValue,\n scrollRef\n } = props;\n let formatMessage = useMessageFormatter(intlMessages);\n\n if (!props['aria-label'] && !props['aria-labelledby']) {\n console.warn('An aria-label or aria-labelledby prop is required for accessibility.');\n }\n\n // By default, a KeyboardDelegate is provided which uses the DOM to query layout information (e.g. for page up/page down).\n // When virtualized, the layout object will be passed in as a prop and override this.\n let collator = useCollator({usage: 'search', sensitivity: 'base'});\n let {direction} = useLocale();\n let delegate = useMemo(() => keyboardDelegate || new GridKeyboardDelegate({\n collection: state.collection,\n disabledKeys: state.disabledKeys,\n ref,\n direction,\n collator,\n focusMode\n }), [keyboardDelegate, state.collection, state.disabledKeys, ref, direction, collator, focusMode]);\n let {collectionProps} = useSelectableCollection({\n ref,\n selectionManager: state.selectionManager,\n keyboardDelegate: delegate,\n isVirtualized,\n scrollRef\n });\n\n let id = useId();\n gridKeyboardDelegates.set(state, delegate);\n\n let domProps = filterDOMProps(props, {labelable: true});\n let gridProps: HTMLAttributes<HTMLElement> = mergeProps(domProps, {\n role: 'grid',\n id,\n 'aria-multiselectable': state.selectionManager.selectionMode === 'multiple' ? 'true' : undefined,\n ...collectionProps\n });\n\n if (isVirtualized) {\n gridProps['aria-rowcount'] = state.collection.size;\n gridProps['aria-colcount'] = state.collection.columnCount;\n }\n\n // Many screen readers do not announce when items in a grid are selected/deselected.\n // We do this using an ARIA live region.\n let selection = state.selectionManager.rawSelection;\n let lastSelection = useRef(selection);\n useUpdateEffect(() => {\n // Do not do this when using selectionBehavior = 'replace' to avoid selection announcements\n // every time the user presses the arrow keys.\n if (!state.selectionManager.isFocused || state.selectionManager.selectionBehavior === 'replace') {\n lastSelection.current = selection;\n\n return;\n }\n\n let addedKeys = diffSelection(selection, lastSelection.current);\n let removedKeys = diffSelection(lastSelection.current, selection);\n\n // If adding or removing a single row from the selection, announce the name of that item.\n let messages = [];\n if (addedKeys.size === 1 && removedKeys.size === 0) {\n let addedText = getRowText(addedKeys.keys().next().value);\n if (addedText) {\n messages.push(formatMessage('selectedItem', {item: addedText}));\n }\n } else if (removedKeys.size === 1 && addedKeys.size === 0) {\n if (state.collection.getItem(removedKeys.keys().next().value)) {\n let removedText = getRowText(removedKeys.keys().next().value);\n if (removedText) {\n messages.push(formatMessage('deselectedItem', {item: removedText}));\n }\n }\n }\n\n // Announce how many items are selected, except when selecting the first item.\n if (state.selectionManager.selectionMode === 'multiple') {\n if (messages.length === 0 || selection === 'all' || selection.size > 1 || lastSelection.current === 'all' || lastSelection.current.size > 1) {\n messages.push(selection === 'all'\n ? formatMessage('selectedAll')\n : formatMessage('selectedCount', {count: selection.size})\n );\n }\n }\n\n if (messages.length > 0) {\n announce(messages.join(' '));\n }\n\n lastSelection.current = selection;\n }, [selection]);\n\n return {\n gridProps\n };\n}\n\nfunction diffSelection(a: Selection, b: Selection): Set<Key> {\n let res = new Set<Key>();\n if (a === 'all' || b === 'all') {\n return res;\n }\n\n for (let key of a.keys()) {\n if (!b.has(key)) {\n res.add(key);\n }\n }\n\n return res;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {HTMLAttributes} from 'react';\n\ninterface GridRowGroupAria {\n /** Props for the row group element. */\n rowGroupProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Provides the accessibility implementation for a row group in a grid.\n */\nexport function useGridRowGroup(): GridRowGroupAria {\n return {\n rowGroupProps: {\n role: 'rowgroup'\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {GridCollection} from '@react-types/grid';\nimport {GridState} from '@react-stately/grid';\nimport {HTMLAttributes, RefObject} from 'react';\nimport {Node} from '@react-types/shared';\nimport {useSelectableItem} from '@react-aria/selection';\n\nexport interface GridRowProps<T> {\n /** An object representing the grid row. Contains all the relevant information that makes up the grid row. */\n node: Node<T>,\n /** Whether the grid row is contained in a virtual scroller. */\n isVirtualized?: boolean,\n /** Whether selection should occur on press up instead of press down. */\n shouldSelectOnPressUp?: boolean,\n /** Handler that is called when a user performs an action on the row. */\n onAction?: () => void\n}\n\nexport interface GridRowAria {\n /** Props for the grid row element. */\n rowProps: HTMLAttributes<HTMLElement>,\n /** Whether the row is currently in a pressed state. */\n isPressed: boolean\n}\n\n/**\n * Provides the behavior and accessibility implementation for a row in a grid.\n * @param props - Props for the row.\n * @param state - State of the parent grid, as returned by `useGridState`.\n */\nexport function useGridRow<T, C extends GridCollection<T>, S extends GridState<T, C>>(props: GridRowProps<T>, state: S, ref: RefObject<HTMLElement>): GridRowAria {\n let {\n node,\n isVirtualized,\n shouldSelectOnPressUp,\n onAction\n } = props;\n\n let {itemProps, isPressed} = useSelectableItem({\n selectionManager: state.selectionManager,\n key: node.key,\n ref,\n isVirtualized,\n shouldSelectOnPressUp,\n onAction\n });\n\n let isSelected = state.selectionManager.isSelected(node.key);\n\n let rowProps: HTMLAttributes<HTMLElement> = {\n role: 'row',\n 'aria-selected': state.selectionManager.selectionMode !== 'none' ? isSelected : undefined,\n ...itemProps\n };\n\n if (isVirtualized) {\n rowProps['aria-rowindex'] = node.index + 1; // aria-rowindex is 1 based\n }\n\n return {\n rowProps,\n isPressed\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {focusSafely, getFocusableTreeWalker} from '@react-aria/focus';\nimport {GridCollection} from '@react-types/grid';\nimport {gridKeyboardDelegates} from './utils';\nimport {GridState} from '@react-stately/grid';\nimport {HTMLAttributes, KeyboardEvent as ReactKeyboardEvent, RefObject} from 'react';\nimport {isFocusVisible} from '@react-aria/interactions';\nimport {mergeProps} from '@react-aria/utils';\nimport {Node as RSNode} from '@react-types/shared';\nimport {useLocale} from '@react-aria/i18n';\nimport {useSelectableItem} from '@react-aria/selection';\n\ninterface GridCellProps {\n /** An object representing the grid cell. Contains all the relevant information that makes up the grid cell. */\n node: RSNode<unknown>,\n /** Whether the grid cell is contained in a virtual scroller. */\n isVirtualized?: boolean,\n /** Whether the cell or its first focusable child element should be focused when the grid cell is focused. */\n focusMode?: 'child' | 'cell',\n /** Whether selection should occur on press up instead of press down. */\n shouldSelectOnPressUp?: boolean,\n /** Handler that is called when a user performs an action on the cell. */\n onAction?: () => void\n}\n\ninterface GridCellAria {\n /** Props for the grid cell element. */\n gridCellProps: HTMLAttributes<HTMLElement>,\n /** Whether the cell is currently in a pressed state. */\n isPressed: boolean\n}\n\n/**\n * Provides the behavior and accessibility implementation for a cell in a grid.\n * @param props - Props for the cell.\n * @param state - State of the parent grid, as returned by `useGridState`.\n */\nexport function useGridCell<T, C extends GridCollection<T>>(props: GridCellProps, state: GridState<T, C>, ref: RefObject<HTMLElement>): GridCellAria {\n let {\n node,\n isVirtualized,\n focusMode = 'child',\n shouldSelectOnPressUp,\n onAction\n } = props;\n\n let {direction} = useLocale();\n let keyboardDelegate = gridKeyboardDelegates.get(state);\n\n // Handles focusing the cell. If there is a focusable child,\n // it is focused, otherwise the cell itself is focused.\n let focus = () => {\n let treeWalker = getFocusableTreeWalker(ref.current);\n if (focusMode === 'child') {\n let focusable = state.selectionManager.childFocusStrategy === 'last'\n ? last(treeWalker)\n : treeWalker.firstChild() as HTMLElement;\n if (focusable) {\n focusSafely(focusable);\n return;\n }\n }\n\n if (!ref.current.contains(document.activeElement)) {\n focusSafely(ref.current);\n }\n };\n\n let {itemProps, isPressed} = useSelectableItem({\n selectionManager: state.selectionManager,\n key: node.key,\n ref,\n isVirtualized,\n focus,\n shouldSelectOnPressUp,\n onAction\n });\n\n let onKeyDown = (e: ReactKeyboardEvent) => {\n if (!e.currentTarget.contains(e.target as HTMLElement)) {\n return;\n }\n\n let walker = getFocusableTreeWalker(ref.current);\n walker.currentNode = document.activeElement;\n\n switch (e.key) {\n case 'ArrowLeft': {\n // Find the next focusable element within the cell.\n let focusable = direction === 'rtl'\n ? walker.nextNode() as HTMLElement\n : walker.previousNode() as HTMLElement;\n\n // Don't focus the cell itself if focusMode is \"child\"\n if (focusMode === 'child' && focusable === ref.current) {\n focusable = null;\n }\n\n if (focusable) {\n e.preventDefault();\n e.stopPropagation();\n focusSafely(focusable);\n } else {\n // If there is no next focusable child, then move to the next cell to the left of this one.\n // This will be handled by useSelectableCollection. However, if there is no cell to the left\n // of this one, only one column, and the grid doesn't focus rows, then the next key will be the\n // same as this one. In that case we need to handle focusing either the cell or the first/last\n // child, depending on the focus mode.\n let prev = keyboardDelegate.getKeyLeftOf(node.key);\n if (prev !== node.key) {\n break;\n }\n\n e.preventDefault();\n e.stopPropagation();\n if (focusMode === 'cell' && direction === 'rtl') {\n focusSafely(ref.current);\n } else {\n walker.currentNode = ref.current;\n focusable = direction === 'rtl'\n ? walker.firstChild() as HTMLElement\n : last(walker);\n if (focusable) {\n focusSafely(focusable);\n }\n }\n }\n break;\n }\n case 'ArrowRight': {\n let focusable = direction === 'rtl'\n ? walker.previousNode() as HTMLElement\n : walker.nextNode() as HTMLElement;\n\n if (focusMode === 'child' && focusable === ref.current) {\n focusable = null;\n }\n\n if (focusable) {\n e.preventDefault();\n e.stopPropagation();\n focusSafely(focusable);\n } else {\n let next = keyboardDelegate.getKeyRightOf(node.key);\n if (next !== node.key) {\n break;\n }\n\n e.preventDefault();\n e.stopPropagation();\n if (focusMode === 'cell' && direction === 'ltr') {\n focusSafely(ref.current);\n } else {\n walker.currentNode = ref.current;\n focusable = direction === 'rtl'\n ? last(walker)\n : walker.firstChild() as HTMLElement;\n if (focusable) {\n focusSafely(focusable);\n }\n }\n }\n break;\n }\n case 'ArrowUp':\n case 'ArrowDown':\n // Prevent this event from reaching cell children, e.g. menu buttons. We want arrow keys to navigate\n // to the cell above/below instead. We need to re-dispatch the event from a higher parent so it still\n // bubbles and gets handled by useSelectableCollection.\n if (!e.altKey && ref.current.contains(e.target as HTMLElement)) {\n e.stopPropagation();\n e.preventDefault();\n ref.current.parentElement.dispatchEvent(\n new KeyboardEvent(e.nativeEvent.type, e.nativeEvent)\n );\n }\n break;\n }\n };\n\n // Grid cells can have focusable elements inside them. In this case, focus should\n // be marshalled to that element rather than focusing the cell itself.\n let onFocus = (e) => {\n if (e.target !== ref.current) {\n // useSelectableItem only handles setting the focused key when\n // the focused element is the gridcell itself. We also want to\n // set the focused key when a child element receives focus.\n // If focus is currently visible (e.g. the user is navigating with the keyboard),\n // then skip this. We want to restore focus to the previously focused row/cell\n // in that case since the table should act like a single tab stop.\n if (!isFocusVisible()) {\n state.selectionManager.setFocusedKey(node.key);\n }\n return;\n }\n\n // If the cell itself is focused, wait a frame so that focus finishes propagatating\n // up to the tree, and move focus to a focusable child if possible.\n requestAnimationFrame(() => {\n if (focusMode === 'child' && document.activeElement === ref.current) {\n focus();\n }\n });\n };\n\n let gridCellProps: HTMLAttributes<HTMLElement> = mergeProps(itemProps, {\n role: 'gridcell',\n onKeyDownCapture: onKeyDown,\n onFocus\n });\n\n if (isVirtualized) {\n gridCellProps['aria-colindex'] = node.index + 1; // aria-colindex is 1-based\n }\n\n return {\n gridCellProps,\n isPressed\n };\n}\n\nfunction last(walker: TreeWalker) {\n let next: HTMLElement;\n let last: HTMLElement;\n do {\n last = walker.lastChild() as HTMLElement;\n if (last) {\n next = last;\n }\n } while (last);\n return next;\n}\n","import {AriaCheckboxProps} from '@react-types/checkbox';\nimport {GridCollection} from '@react-types/grid';\nimport {GridState} from '@react-stately/grid';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {Key} from 'react';\nimport {useId} from '@react-aria/utils';\nimport {useMessageFormatter} from '@react-aria/i18n';\n\ninterface SelectionCheckboxProps {\n /** A unique key for the checkbox. */\n key: Key\n}\n\ninterface SelectionCheckboxAria {\n /** Props for the row selection checkbox element. */\n checkboxProps: AriaCheckboxProps\n}\n\n\n/**\n * Provides the behavior and accessibility implementation for a selection checkbox in a grid.\n * @param props - Props for the selection checkbox.\n * @param state - State of the grid, as returned by `useGridState`.\n */\nexport function useGridSelectionCheckbox<T, C extends GridCollection<T>>(props: SelectionCheckboxProps, state: GridState<T, C>): SelectionCheckboxAria {\n let {key} = props;\n\n let manager = state.selectionManager;\n let checkboxId = useId();\n let isDisabled = state.disabledKeys.has(key);\n let isSelected = state.selectionManager.isSelected(key);\n\n let onChange = () => manager.select(key);\n\n const formatMessage = useMessageFormatter(intlMessages);\n\n return {\n checkboxProps: {\n id: checkboxId,\n 'aria-label': formatMessage('select'),\n isSelected,\n isDisabled: isDisabled || manager.selectionMode === 'none',\n onChange\n }\n };\n}\n"],"names":["$parcel$interopDefault","a","__esModule","default","GridKeyboardDelegate","constructor","options","collection","disabledKeys","ref","direction","collator","layout","focusMode","isCell","node","type","isRow","findPreviousKey","fromKey","pred","key","getKeyBefore","getLastKey","item","getItem","findNextKey","getKeyAfter","getFirstKey","getKeyBelow","startItem","parentKey","childNodes","index","getKeyAbove","getKeyRightOf","children","length","parent","next","getKeyLeftOf","prev","global","current","querySelector","getItemRect","getLayoutInfo","rect","Rect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getPageHeight","virtualizer","visibleRect","height","getContentHeight","getContentSize","scrollHeight","getKeyPageAbove","itemRect","pageY","Math","max","maxY","y","getKeyPageBelow","pageHeight","min","nextKey","getKeyForSearch","search","hasWrapped","textValue","substring","slice","compare","gridKeyboardDelegates","WeakMap","JSON","parse","useGrid","props","state","isVirtualized","keyboardDelegate","getRowText","scrollRef","formatMessage","useMessageFormatter","intlMessages","console","warn","useCollator","usage","sensitivity","useLocale","delegate","useMemo","collectionProps","useSelectableCollection","selectionManager","id","useId","set","domProps","filterDOMProps","labelable","gridProps","mergeProps","role","selectionMode","undefined","size","columnCount","selection","rawSelection","lastSelection","useRef","useUpdateEffect","isFocused","selectionBehavior","addedKeys","diffSelection","removedKeys","messages","addedText","keys","value","push","removedText","count","announce","join","b","res","Set","has","add","useGridRowGroup","rowGroupProps","useGridRow","shouldSelectOnPressUp","onAction","itemProps","isPressed","useSelectableItem","isSelected","rowProps","useGridCell","get","focus","treeWalker","getFocusableTreeWalker","focusable","childFocusStrategy","last","firstChild","focusSafely","contains","document","activeElement","onKeyDown","e","currentTarget","target","walker","currentNode","nextNode","previousNode","preventDefault","stopPropagation","altKey","parentElement","dispatchEvent","KeyboardEvent","nativeEvent","onFocus","isFocusVisible","setFocusedKey","requestAnimationFrame","gridCellProps","onKeyDownCapture","lastChild","useGridSelectionCheckbox","manager","checkboxId","isDisabled","onChange","select","checkboxProps"],"version":3,"file":"main.js.map"}
|