@proyecto-viviana/solidaria 0.4.3 → 0.6.0-rc.1
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/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/README.md +54 -27
- package/dist/_chunk/DragManager.js +79 -31
- package/dist/_chunk/DragManager.js.map +1 -1
- package/dist/_chunk/DragManager.jsx +79 -31
- package/dist/_chunk/DragManager.jsx.map +1 -1
- package/dist/_chunk/FocusScope.js +380 -73
- package/dist/_chunk/FocusScope.js.map +1 -1
- package/dist/_chunk/FocusScope.jsx +373 -62
- package/dist/_chunk/FocusScope.jsx.map +1 -1
- package/dist/_chunk/ListKeyboardDelegate.js +270 -0
- package/dist/_chunk/ListKeyboardDelegate.js.map +1 -0
- package/dist/_chunk/ListKeyboardDelegate.jsx +270 -0
- package/dist/_chunk/ListKeyboardDelegate.jsx.map +1 -0
- package/dist/_chunk/actiongroup.js +46 -22
- package/dist/_chunk/actiongroup.js.map +1 -1
- package/dist/_chunk/actiongroup.jsx +46 -22
- package/dist/_chunk/actiongroup.jsx.map +1 -1
- package/dist/_chunk/announce.js +24 -9
- package/dist/_chunk/announce.js.map +1 -1
- package/dist/_chunk/announce.jsx +24 -9
- package/dist/_chunk/announce.jsx.map +1 -1
- package/dist/_chunk/ariaHideOutside.js +212 -10
- package/dist/_chunk/ariaHideOutside.js.map +1 -1
- package/dist/_chunk/ariaHideOutside.jsx +212 -10
- package/dist/_chunk/ariaHideOutside.jsx.map +1 -1
- package/dist/_chunk/autocomplete.js +92 -12
- package/dist/_chunk/autocomplete.js.map +1 -1
- package/dist/_chunk/autocomplete.jsx +92 -12
- package/dist/_chunk/autocomplete.jsx.map +1 -1
- package/dist/_chunk/breadcrumbs.js +70 -8
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +70 -8
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +61 -24
- package/dist/_chunk/button.js.map +1 -1
- package/dist/_chunk/button.jsx +61 -24
- package/dist/_chunk/button.jsx.map +1 -1
- package/dist/_chunk/calendar.js +661 -112
- package/dist/_chunk/calendar.js.map +1 -1
- package/dist/_chunk/calendar.jsx +661 -112
- package/dist/_chunk/calendar.jsx.map +1 -1
- package/dist/_chunk/callEventHandler.js +21 -0
- package/dist/_chunk/callEventHandler.js.map +1 -0
- package/dist/_chunk/callEventHandler.jsx +21 -0
- package/dist/_chunk/callEventHandler.jsx.map +1 -0
- package/dist/_chunk/checkbox.js +142 -48
- package/dist/_chunk/checkbox.js.map +1 -1
- package/dist/_chunk/checkbox.jsx +142 -48
- package/dist/_chunk/checkbox.jsx.map +1 -1
- package/dist/_chunk/color.js +495 -73
- package/dist/_chunk/color.js.map +1 -1
- package/dist/_chunk/color.jsx +495 -73
- package/dist/_chunk/color.jsx.map +1 -1
- package/dist/_chunk/combobox.js +213 -128
- package/dist/_chunk/combobox.js.map +1 -1
- package/dist/_chunk/combobox.jsx +213 -128
- package/dist/_chunk/combobox.jsx.map +1 -1
- package/dist/_chunk/constants.js +12 -0
- package/dist/_chunk/constants.js.map +1 -1
- package/dist/_chunk/constants.jsx +12 -0
- package/dist/_chunk/constants.jsx.map +1 -1
- package/dist/_chunk/createCollator.js +12 -0
- package/dist/_chunk/createCollator.js.map +1 -1
- package/dist/_chunk/createCollator.jsx +12 -0
- package/dist/_chunk/createCollator.jsx.map +1 -1
- package/dist/_chunk/createCollectionRowInteraction.js +51 -15
- package/dist/_chunk/createCollectionRowInteraction.js.map +1 -1
- package/dist/_chunk/createCollectionRowInteraction.jsx +51 -15
- package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -1
- package/dist/_chunk/createDescription.js +117 -0
- package/dist/_chunk/createDescription.js.map +1 -0
- package/dist/_chunk/createDescription.jsx +117 -0
- package/dist/_chunk/createDescription.jsx.map +1 -0
- package/dist/_chunk/createField.js +35 -25
- package/dist/_chunk/createField.js.map +1 -1
- package/dist/_chunk/createField.jsx +35 -25
- package/dist/_chunk/createField.jsx.map +1 -1
- package/dist/_chunk/createFocus.js +18 -5
- package/dist/_chunk/createFocus.js.map +1 -1
- package/dist/_chunk/createFocus.jsx +18 -5
- package/dist/_chunk/createFocus.jsx.map +1 -1
- package/dist/_chunk/createFocusRing.js +16 -7
- package/dist/_chunk/createFocusRing.js.map +1 -1
- package/dist/_chunk/createFocusRing.jsx +16 -7
- package/dist/_chunk/createFocusRing.jsx.map +1 -1
- package/dist/_chunk/createFocusWithin.js +36 -9
- package/dist/_chunk/createFocusWithin.js.map +1 -1
- package/dist/_chunk/createFocusWithin.jsx +36 -9
- package/dist/_chunk/createFocusWithin.jsx.map +1 -1
- package/dist/_chunk/createFocusable.js +51 -53
- package/dist/_chunk/createFocusable.js.map +1 -1
- package/dist/_chunk/createFocusable.jsx +51 -53
- package/dist/_chunk/createFocusable.jsx.map +1 -1
- package/dist/_chunk/createFormReset.js +194 -13
- package/dist/_chunk/createFormReset.js.map +1 -1
- package/dist/_chunk/createFormReset.jsx +194 -13
- package/dist/_chunk/createFormReset.jsx.map +1 -1
- package/dist/_chunk/createGrid.js +869 -0
- package/dist/_chunk/createGrid.js.map +1 -0
- package/dist/_chunk/createGrid.jsx +869 -0
- package/dist/_chunk/createGrid.jsx.map +1 -0
- package/dist/_chunk/createGridListItem.js +480 -0
- package/dist/_chunk/createGridListItem.js.map +1 -0
- package/dist/_chunk/createGridListItem.jsx +480 -0
- package/dist/_chunk/createGridListItem.jsx.map +1 -0
- package/dist/_chunk/createHasTabbableChild.js +63 -0
- package/dist/_chunk/createHasTabbableChild.js.map +1 -0
- package/dist/_chunk/createHasTabbableChild.jsx +63 -0
- package/dist/_chunk/createHasTabbableChild.jsx.map +1 -0
- package/dist/_chunk/createHover.js +58 -45
- package/dist/_chunk/createHover.js.map +1 -1
- package/dist/_chunk/createHover.jsx +58 -45
- package/dist/_chunk/createHover.jsx.map +1 -1
- package/dist/_chunk/createInteractionModality.js +179 -34
- package/dist/_chunk/createInteractionModality.js.map +1 -1
- package/dist/_chunk/createInteractionModality.jsx +179 -34
- package/dist/_chunk/createInteractionModality.jsx.map +1 -1
- package/dist/_chunk/createKeyboard.js +206 -0
- package/dist/_chunk/createKeyboard.js.map +1 -0
- package/dist/_chunk/createKeyboard.jsx +206 -0
- package/dist/_chunk/createKeyboard.jsx.map +1 -0
- package/dist/_chunk/createLabel.js +17 -4
- package/dist/_chunk/createLabel.js.map +1 -1
- package/dist/_chunk/createLabel.jsx +17 -4
- package/dist/_chunk/createLabel.jsx.map +1 -1
- package/dist/_chunk/createLabels.js +13 -1
- package/dist/_chunk/createLabels.js.map +1 -1
- package/dist/_chunk/createLabels.jsx +13 -1
- package/dist/_chunk/createLabels.jsx.map +1 -1
- package/dist/_chunk/createLandmark.js +342 -117
- package/dist/_chunk/createLandmark.js.map +1 -1
- package/dist/_chunk/createLandmark.jsx +342 -117
- package/dist/_chunk/createLandmark.jsx.map +1 -1
- package/dist/_chunk/createLongPress.js +127 -0
- package/dist/_chunk/createLongPress.js.map +1 -0
- package/dist/_chunk/createLongPress.jsx +127 -0
- package/dist/_chunk/createLongPress.jsx.map +1 -0
- package/dist/_chunk/createOverlay.js +198 -124
- package/dist/_chunk/createOverlay.js.map +1 -1
- package/dist/_chunk/createOverlay.jsx +198 -124
- package/dist/_chunk/createOverlay.jsx.map +1 -1
- package/dist/_chunk/createOverlayTrigger.js +58 -0
- package/dist/_chunk/createOverlayTrigger.js.map +1 -0
- package/dist/_chunk/createOverlayTrigger.jsx +58 -0
- package/dist/_chunk/createOverlayTrigger.jsx.map +1 -0
- package/dist/_chunk/createPress.js +57 -46
- package/dist/_chunk/createPress.js.map +1 -1
- package/dist/_chunk/createPress.jsx +57 -46
- package/dist/_chunk/createPress.jsx.map +1 -1
- package/dist/_chunk/createProgressBar.js +21 -5
- package/dist/_chunk/createProgressBar.js.map +1 -1
- package/dist/_chunk/createProgressBar.jsx +21 -5
- package/dist/_chunk/createProgressBar.jsx.map +1 -1
- package/dist/_chunk/createSelectableCollection.js +468 -0
- package/dist/_chunk/createSelectableCollection.js.map +1 -0
- package/dist/_chunk/createSelectableCollection.jsx +468 -0
- package/dist/_chunk/createSelectableCollection.jsx.map +1 -0
- package/dist/_chunk/createSelectableItem.js +121 -89
- package/dist/_chunk/createSelectableItem.js.map +1 -1
- package/dist/_chunk/createSelectableItem.jsx +121 -89
- package/dist/_chunk/createSelectableItem.jsx.map +1 -1
- package/dist/_chunk/createSelectableList.js +70 -0
- package/dist/_chunk/createSelectableList.js.map +1 -0
- package/dist/_chunk/createSelectableList.jsx +70 -0
- package/dist/_chunk/createSelectableList.jsx.map +1 -0
- package/dist/_chunk/createStringFormatter.js +350 -5
- package/dist/_chunk/createStringFormatter.js.map +1 -1
- package/dist/_chunk/createStringFormatter.jsx +350 -5
- package/dist/_chunk/createStringFormatter.jsx.map +1 -1
- package/dist/_chunk/createToggle.js +108 -23
- package/dist/_chunk/createToggle.js.map +1 -1
- package/dist/_chunk/createToggle.jsx +108 -23
- package/dist/_chunk/createToggle.jsx.map +1 -1
- package/dist/_chunk/createTypeSelect.js +18 -3
- package/dist/_chunk/createTypeSelect.js.map +1 -1
- package/dist/_chunk/createTypeSelect.jsx +18 -3
- package/dist/_chunk/createTypeSelect.jsx.map +1 -1
- package/dist/_chunk/{visually-hidden.js → createVisuallyHidden.js} +16 -4
- package/dist/_chunk/createVisuallyHidden.js.map +1 -0
- package/dist/_chunk/{visually-hidden.jsx → createVisuallyHidden.jsx} +16 -4
- package/dist/_chunk/createVisuallyHidden.jsx.map +1 -0
- package/dist/_chunk/datepicker.js +223 -80
- package/dist/_chunk/datepicker.js.map +1 -1
- package/dist/_chunk/datepicker.jsx +223 -80
- package/dist/_chunk/datepicker.jsx.map +1 -1
- package/dist/_chunk/dialog.js +49 -19
- package/dist/_chunk/dialog.js.map +1 -1
- package/dist/_chunk/dialog.jsx +49 -19
- package/dist/_chunk/dialog.jsx.map +1 -1
- package/dist/_chunk/disclosure.js +52 -31
- package/dist/_chunk/disclosure.js.map +1 -1
- package/dist/_chunk/disclosure.jsx +52 -31
- package/dist/_chunk/disclosure.jsx.map +1 -1
- package/dist/_chunk/dnd.js +1482 -1209
- package/dist/_chunk/dnd.js.map +1 -1
- package/dist/_chunk/dnd.jsx +1482 -1209
- package/dist/_chunk/dnd.jsx.map +1 -1
- package/dist/_chunk/dom.js +624 -0
- package/dist/_chunk/dom.js.map +1 -0
- package/dist/_chunk/dom.jsx +624 -0
- package/dist/_chunk/dom.jsx.map +1 -0
- package/dist/_chunk/env.js +11 -56
- package/dist/_chunk/env.js.map +1 -1
- package/dist/_chunk/env.jsx +11 -56
- package/dist/_chunk/env.jsx.map +1 -1
- package/dist/_chunk/filterDOMProps.js +32 -7
- package/dist/_chunk/filterDOMProps.js.map +1 -1
- package/dist/_chunk/filterDOMProps.jsx +32 -7
- package/dist/_chunk/filterDOMProps.jsx.map +1 -1
- package/dist/_chunk/focus.js +588 -336
- package/dist/_chunk/focus.js.map +1 -1
- package/dist/_chunk/focus.jsx +588 -336
- package/dist/_chunk/focus.jsx.map +1 -1
- package/dist/_chunk/grid.js +40 -428
- package/dist/_chunk/grid.js.map +1 -1
- package/dist/_chunk/grid.jsx +40 -428
- package/dist/_chunk/grid.jsx.map +1 -1
- package/dist/_chunk/gridlist.js +36 -282
- package/dist/_chunk/gridlist.js.map +1 -1
- package/dist/_chunk/gridlist.jsx +36 -282
- package/dist/_chunk/gridlist.jsx.map +1 -1
- package/dist/_chunk/i18n.js +70 -2
- package/dist/_chunk/i18n.js.map +1 -1
- package/dist/_chunk/i18n.jsx +70 -2
- package/dist/_chunk/i18n.jsx.map +1 -1
- package/dist/_chunk/interactions.js +38 -102
- package/dist/_chunk/interactions.js.map +1 -1
- package/dist/_chunk/interactions.jsx +38 -100
- package/dist/_chunk/interactions.jsx.map +1 -1
- package/dist/_chunk/link.js +44 -18
- package/dist/_chunk/link.js.map +1 -1
- package/dist/_chunk/link.jsx +44 -18
- package/dist/_chunk/link.jsx.map +1 -1
- package/dist/_chunk/listbox.js +108 -175
- package/dist/_chunk/listbox.js.map +1 -1
- package/dist/_chunk/listbox.jsx +108 -175
- package/dist/_chunk/listbox.jsx.map +1 -1
- package/dist/_chunk/locale.js +67 -13
- package/dist/_chunk/locale.js.map +1 -1
- package/dist/_chunk/locale.jsx +66 -12
- package/dist/_chunk/locale.jsx.map +1 -1
- package/dist/_chunk/menu.js +343 -239
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +343 -239
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/mergeProps.js +216 -0
- package/dist/_chunk/mergeProps.js.map +1 -0
- package/dist/_chunk/mergeProps.jsx +216 -0
- package/dist/_chunk/mergeProps.jsx.map +1 -0
- package/dist/_chunk/meter.js +16 -4
- package/dist/_chunk/meter.js.map +1 -1
- package/dist/_chunk/meter.jsx +16 -4
- package/dist/_chunk/meter.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +496 -41
- package/dist/_chunk/numberfield.js.map +1 -1
- package/dist/_chunk/numberfield.jsx +496 -41
- package/dist/_chunk/numberfield.jsx.map +1 -1
- package/dist/_chunk/overlays.js +91 -78
- package/dist/_chunk/overlays.js.map +1 -1
- package/dist/_chunk/overlays.jsx +71 -57
- package/dist/_chunk/overlays.jsx.map +1 -1
- package/dist/_chunk/owner.js +23 -0
- package/dist/_chunk/owner.js.map +1 -0
- package/dist/_chunk/owner.jsx +23 -0
- package/dist/_chunk/owner.jsx.map +1 -0
- package/dist/_chunk/popover.js +201 -55
- package/dist/_chunk/popover.js.map +1 -1
- package/dist/_chunk/popover.jsx +201 -55
- package/dist/_chunk/popover.jsx.map +1 -1
- package/dist/_chunk/radio.js +140 -71
- package/dist/_chunk/radio.js.map +1 -1
- package/dist/_chunk/radio.jsx +140 -71
- package/dist/_chunk/radio.jsx.map +1 -1
- package/dist/_chunk/reactivity.js.map +1 -1
- package/dist/_chunk/reactivity.jsx.map +1 -1
- package/dist/_chunk/refs.js +41 -0
- package/dist/_chunk/refs.js.map +1 -0
- package/dist/_chunk/refs.jsx +41 -0
- package/dist/_chunk/refs.jsx.map +1 -0
- package/dist/_chunk/searchfield.js +72 -3
- package/dist/_chunk/searchfield.js.map +1 -1
- package/dist/_chunk/searchfield.jsx +72 -3
- package/dist/_chunk/searchfield.jsx.map +1 -1
- package/dist/_chunk/select.js +238 -117
- package/dist/_chunk/select.js.map +1 -1
- package/dist/_chunk/select.jsx +174 -107
- package/dist/_chunk/select.jsx.map +1 -1
- package/dist/_chunk/selection.js +19 -637
- package/dist/_chunk/selection.js.map +1 -1
- package/dist/_chunk/selection.jsx +19 -637
- package/dist/_chunk/selection.jsx.map +1 -1
- package/dist/_chunk/separator.js +12 -0
- package/dist/_chunk/separator.js.map +1 -1
- package/dist/_chunk/separator.jsx +12 -0
- package/dist/_chunk/separator.jsx.map +1 -1
- package/dist/_chunk/slider.js +403 -203
- package/dist/_chunk/slider.js.map +1 -1
- package/dist/_chunk/slider.jsx +403 -203
- package/dist/_chunk/slider.jsx.map +1 -1
- package/dist/_chunk/spinbutton.js +18 -8
- package/dist/_chunk/spinbutton.js.map +1 -1
- package/dist/_chunk/spinbutton.jsx +18 -8
- package/dist/_chunk/spinbutton.jsx.map +1 -1
- package/dist/_chunk/steplist.js +110 -34
- package/dist/_chunk/steplist.js.map +1 -1
- package/dist/_chunk/steplist.jsx +110 -34
- package/dist/_chunk/steplist.jsx.map +1 -1
- package/dist/_chunk/switch.js +21 -3
- package/dist/_chunk/switch.js.map +1 -1
- package/dist/_chunk/switch.jsx +21 -3
- package/dist/_chunk/switch.jsx.map +1 -1
- package/dist/_chunk/table.js +1004 -208
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +1004 -208
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/tabs.js +86 -32
- package/dist/_chunk/tabs.js.map +1 -1
- package/dist/_chunk/tabs.jsx +86 -32
- package/dist/_chunk/tabs.jsx.map +1 -1
- package/dist/_chunk/tag.js +355 -164
- package/dist/_chunk/tag.js.map +1 -1
- package/dist/_chunk/tag.jsx +355 -164
- package/dist/_chunk/tag.jsx.map +1 -1
- package/dist/_chunk/textfield.js +87 -12
- package/dist/_chunk/textfield.js.map +1 -1
- package/dist/_chunk/textfield.jsx +87 -12
- package/dist/_chunk/textfield.jsx.map +1 -1
- package/dist/_chunk/toast.js +247 -47
- package/dist/_chunk/toast.js.map +1 -1
- package/dist/_chunk/toast.jsx +247 -47
- package/dist/_chunk/toast.jsx.map +1 -1
- package/dist/_chunk/tokenfield.js +629 -0
- package/dist/_chunk/tokenfield.js.map +1 -0
- package/dist/_chunk/tokenfield.jsx +629 -0
- package/dist/_chunk/tokenfield.jsx.map +1 -0
- package/dist/_chunk/toolbar.js +26 -8
- package/dist/_chunk/toolbar.js.map +1 -1
- package/dist/_chunk/toolbar.jsx +26 -8
- package/dist/_chunk/toolbar.jsx.map +1 -1
- package/dist/_chunk/tooltip.js +381 -11
- package/dist/_chunk/tooltip.js.map +1 -1
- package/dist/_chunk/tooltip.jsx +381 -11
- package/dist/_chunk/tooltip.jsx.map +1 -1
- package/dist/_chunk/tree.js +297 -82
- package/dist/_chunk/tree.js.map +1 -1
- package/dist/_chunk/tree.jsx +297 -82
- package/dist/_chunk/tree.jsx.map +1 -1
- package/dist/_chunk/utils.js +602 -297
- package/dist/_chunk/utils.js.map +1 -1
- package/dist/_chunk/utils.jsx +602 -297
- package/dist/_chunk/utils.jsx.map +1 -1
- package/dist/_chunk/utils2.js +77 -0
- package/dist/_chunk/utils2.js.map +1 -0
- package/dist/_chunk/utils2.jsx +77 -0
- package/dist/_chunk/utils2.jsx.map +1 -0
- package/dist/_chunk/virtualFocus.js +54 -0
- package/dist/_chunk/virtualFocus.js.map +1 -0
- package/dist/_chunk/virtualFocus.jsx +54 -0
- package/dist/_chunk/virtualFocus.jsx.map +1 -0
- package/dist/_chunk/virtualizer.js +202 -0
- package/dist/_chunk/virtualizer.js.map +1 -0
- package/dist/_chunk/virtualizer.jsx +202 -0
- package/dist/_chunk/virtualizer.jsx.map +1 -0
- package/dist/actiongroup/createActionGroup.d.ts +2 -1
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +1 -9
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/intl/index.d.ts +13 -0
- package/dist/autocomplete/intl/index.d.ts.map +1 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +0 -6
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/intl/index.d.ts +13 -0
- package/dist/breadcrumbs/intl/index.d.ts.map +1 -0
- package/dist/button/createButton.d.ts +2 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts.map +1 -1
- package/dist/button/createToggleButtonGroup.d.ts +1 -1
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/types.d.ts +14 -0
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +13 -11
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +5 -6
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +2 -8
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createCalendarMonthPicker.d.ts +0 -8
- package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -1
- package/dist/calendar/createCalendarYearPicker.d.ts +0 -8
- package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +25 -9
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +7 -6
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts.map +1 -1
- package/dist/calendar/utils.d.ts +24 -4
- package/dist/calendar/utils.d.ts.map +1 -1
- package/dist/checkbox/createCheckbox.d.ts +2 -1
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -2
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +0 -8
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/collections/index.d.ts +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +34 -17
- package/dist/collections/index.js.map +1 -1
- package/dist/collections/index.jsx +34 -17
- package/dist/collections/index.jsx.map +1 -1
- package/dist/color/createColorArea.d.ts +2 -7
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +2 -7
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +1 -6
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +1 -6
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +1 -6
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/intl/index.d.ts.map +1 -1
- package/dist/color/types.d.ts +49 -1
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +18 -9
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/intl/generated-locales.d.ts +3 -0
- package/dist/combobox/intl/generated-locales.d.ts.map +1 -1
- package/dist/combobox/intl/index.d.ts +3 -2
- package/dist/combobox/intl/index.d.ts.map +1 -1
- package/dist/datepicker/createDateField.d.ts +2 -12
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +2 -18
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +2 -2
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +8 -22
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +0 -9
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createDisplayNames.d.ts +1 -9
- package/dist/datepicker/createDisplayNames.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/intl.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +2 -4
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +14 -0
- package/dist/dialog/types.d.ts.map +1 -1
- package/dist/disclosure/createDisclosure.d.ts +1 -8
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +3 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/dnd/DragManager.d.ts +1 -16
- package/dist/dnd/DragManager.d.ts.map +1 -1
- package/dist/dnd/DropTargetKeyboardNavigation.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +1 -7
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +1 -7
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts +2 -7
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +1 -7
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDropIndicator.d.ts +27 -0
- package/dist/dnd/createDropIndicator.d.ts.map +1 -0
- package/dist/dnd/createDroppableCollection.d.ts +6 -8
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +12 -10
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +3 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/index.js +2 -2
- package/dist/dnd/index.jsx +2 -2
- package/dist/dnd/intl/index.d.ts +6 -4
- package/dist/dnd/intl/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +20 -1
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +4 -0
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +9 -5
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts +3 -0
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts +3 -0
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createHasTabbableChild.d.ts +13 -0
- package/dist/focus/createHasTabbableChild.d.ts.map +1 -0
- package/dist/focus/createVirtualFocus.d.ts +4 -1
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.js +3 -2
- package/dist/focus/index.jsx +3 -2
- package/dist/focus/virtualFocus.d.ts +1 -1
- package/dist/form/createFormReset.d.ts +1 -7
- package/dist/form/createFormReset.d.ts.map +1 -1
- package/dist/form/createFormValidation.d.ts +13 -9
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.js +1 -2
- package/dist/form/index.jsx +1 -2
- package/dist/grid/GridKeyboardDelegate.d.ts.map +1 -1
- package/dist/grid/createGrid.d.ts +40 -5
- package/dist/grid/createGrid.d.ts.map +1 -1
- package/dist/grid/createGridCell.d.ts +1 -5
- package/dist/grid/createGridCell.d.ts.map +1 -1
- package/dist/grid/createGridRow.d.ts +1 -5
- package/dist/grid/createGridRow.d.ts.map +1 -1
- package/dist/grid/index.d.ts +2 -2
- package/dist/grid/index.js +2 -1
- package/dist/grid/index.jsx +2 -1
- package/dist/grid/intl/index.d.ts +18 -0
- package/dist/grid/intl/index.d.ts.map +1 -0
- package/dist/grid/types.d.ts +25 -2
- package/dist/grid/types.d.ts.map +1 -1
- package/dist/gridlist/createGridList.d.ts +5 -7
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +2 -6
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSection.d.ts +0 -4
- package/dist/gridlist/createGridListSection.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +1 -5
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.js +2 -1
- package/dist/gridlist/index.jsx +2 -1
- package/dist/gridlist/intl/index.d.ts +14 -0
- package/dist/gridlist/intl/index.d.ts.map +1 -0
- package/dist/gridlist/types.d.ts +87 -2
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/compileIcu.d.ts +24 -0
- package/dist/i18n/compileIcu.d.ts.map +1 -0
- package/dist/i18n/createCollator.d.ts +0 -7
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts +2 -8
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts +0 -7
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createListFormatter.d.ts +9 -0
- package/dist/i18n/createListFormatter.d.ts.map +1 -0
- package/dist/i18n/createNumberFormatter.d.ts +0 -7
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +14 -4
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.jsx +2 -2
- package/dist/i18n/locale.d.ts +2 -8
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts +0 -7
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +12 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -27
- package/dist/index.jsx +39 -27
- package/dist/interactions/FocusableProvider.d.ts +3 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -1
- package/dist/interactions/PressEvent.d.ts.map +1 -1
- package/dist/interactions/createContextMenu.d.ts +24 -0
- package/dist/interactions/createContextMenu.d.ts.map +1 -0
- package/dist/interactions/createFocus.d.ts +12 -4
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +12 -3
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +12 -8
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +2 -6
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +3 -10
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +12 -10
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +12 -3
- package/dist/interactions/createKeyboard.d.ts.map +1 -1
- package/dist/interactions/createKeyboardShortcutHandler.d.ts +24 -0
- package/dist/interactions/createKeyboardShortcutHandler.d.ts.map +1 -0
- package/dist/interactions/createLongPress.d.ts +4 -7
- package/dist/interactions/createLongPress.d.ts.map +1 -1
- package/dist/interactions/createMove.d.ts +1 -6
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +3 -7
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +1 -1
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +5 -3
- package/dist/interactions/index.jsx +5 -3
- package/dist/label/createField.d.ts +7 -1
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +1 -1
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +0 -7
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/landmark/createLandmark.d.ts +63 -6
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/link/createLink.d.ts +1 -1
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/listbox/createListBox.d.ts +27 -7
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +7 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +7 -16
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/menu/createMenu.d.ts +3 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +7 -2
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +24 -20
- package/dist/menu/createMenuTrigger.d.ts.map +1 -1
- package/dist/menu/index.d.ts +1 -1
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/intl/index.d.ts +4 -0
- package/dist/menu/intl/index.d.ts.map +1 -0
- package/dist/meter/createMeter.d.ts +2 -1
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/numberfield/createNumberField.d.ts +44 -6
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -0
- package/dist/numberfield/index.d.ts.map +1 -1
- package/dist/numberfield/index.js +2 -2
- package/dist/numberfield/index.jsx +2 -2
- package/dist/numberfield/intl.d.ts +10 -0
- package/dist/numberfield/intl.d.ts.map +1 -0
- package/dist/overlays/ariaHideOutside.d.ts +0 -4
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createCloseOnScroll.d.ts +11 -0
- package/dist/overlays/createCloseOnScroll.d.ts.map +1 -0
- package/dist/overlays/createInteractOutside.d.ts +2 -5
- package/dist/overlays/createInteractOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -6
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -5
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +2 -6
- package/dist/overlays/createOverlayTrigger.d.ts.map +1 -1
- package/dist/overlays/createPreventScroll.d.ts +0 -4
- package/dist/overlays/createPreventScroll.d.ts.map +1 -1
- package/dist/overlays/index.d.ts +2 -0
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +4 -3
- package/dist/overlays/index.jsx +4 -3
- package/dist/overlays/intl/index.d.ts +13 -0
- package/dist/overlays/intl/index.d.ts.map +1 -0
- package/dist/popover/calculatePosition.d.ts +1 -1
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +1 -7
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +8 -8
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/progress/createProgressBar.d.ts +2 -10
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/radio/createRadio.d.ts +8 -1
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +1 -11
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +1 -1
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/intl/index.d.ts +13 -0
- package/dist/searchfield/intl/index.d.ts.map +1 -0
- package/dist/select/createHiddenSelect.d.ts +7 -14
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +13 -9
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -1
- package/dist/selection/ListKeyboardDelegate.d.ts +4 -2
- package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -1
- package/dist/selection/constants.d.ts.map +1 -1
- package/dist/selection/createCollectionRowInteraction.d.ts +12 -1
- package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -1
- package/dist/selection/createScrollIntoViewOnFocus.d.ts +0 -11
- package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -1
- package/dist/selection/createSelectableCollection.d.ts +1 -23
- package/dist/selection/createSelectableCollection.d.ts.map +1 -1
- package/dist/selection/createSelectableItem.d.ts +3 -29
- package/dist/selection/createSelectableItem.d.ts.map +1 -1
- package/dist/selection/createSelectableList.d.ts +7 -18
- package/dist/selection/createSelectableList.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +7 -8
- package/dist/selection/createTypeSelect.d.ts.map +1 -1
- package/dist/selection/index.js +6 -2
- package/dist/selection/index.jsx +6 -2
- package/dist/selection/selectItem.d.ts.map +1 -1
- package/dist/selection/utils.d.ts +1 -1
- package/dist/selection/utils.d.ts.map +1 -1
- package/dist/separator/createSeparator.d.ts +3 -1
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/slider/createSlider.d.ts +25 -14
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/createSliderThumb.d.ts +12 -0
- package/dist/slider/createSliderThumb.d.ts.map +1 -0
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +2 -2
- package/dist/slider/index.jsx +2 -2
- package/dist/spinbutton/createSpinButton.d.ts +0 -9
- package/dist/spinbutton/createSpinButton.d.ts.map +1 -1
- package/dist/spinbutton/intl.d.ts.map +1 -1
- package/dist/ssr/index.d.ts +3 -28
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +52 -26
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/index.jsx +52 -26
- package/dist/ssr/index.jsx.map +1 -1
- package/dist/steplist/createStepList.d.ts +19 -7
- package/dist/steplist/createStepList.d.ts.map +1 -1
- package/dist/steplist/index.d.ts +1 -1
- package/dist/steplist/index.d.ts.map +1 -1
- package/dist/steplist/index.js +2 -2
- package/dist/steplist/index.jsx +2 -2
- package/dist/steplist/intl/index.d.ts +12 -0
- package/dist/steplist/intl/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +2 -1
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/table/createTable.d.ts +1 -5
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +1 -5
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +1 -5
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +16 -10
- package/dist/table/createTableColumnResize.d.ts.map +1 -1
- package/dist/table/createTableHeaderRow.d.ts +2 -6
- package/dist/table/createTableHeaderRow.d.ts.map +1 -1
- package/dist/table/createTableRow.d.ts +1 -5
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +1 -5
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +1 -5
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +1 -5
- package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
- package/dist/table/index.d.ts +2 -2
- package/dist/table/intl/index.d.ts +23 -0
- package/dist/table/intl/index.d.ts.map +1 -0
- package/dist/table/types.d.ts +44 -2
- package/dist/table/types.d.ts.map +1 -1
- package/dist/table/utils.d.ts +6 -0
- package/dist/table/utils.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +14 -9
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tag/createTag.d.ts +4 -8
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +12 -13
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/intl/index.d.ts +14 -0
- package/dist/tag/intl/index.d.ts.map +1 -0
- package/dist/textfield/createTextField.d.ts +16 -8
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +3 -9
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +9 -19
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/intl/index.d.ts +14 -0
- package/dist/toast/intl/index.d.ts.map +1 -0
- package/dist/toggle/createToggle.d.ts +13 -2
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/tokenfield/createToken.d.ts +15 -0
- package/dist/tokenfield/createToken.d.ts.map +1 -0
- package/dist/tokenfield/createTokenField.d.ts +52 -0
- package/dist/tokenfield/createTokenField.d.ts.map +1 -0
- package/dist/tokenfield/index.d.ts +3 -0
- package/dist/tokenfield/index.d.ts.map +1 -0
- package/dist/tokenfield/index.js +2 -0
- package/dist/tokenfield/index.jsx +2 -0
- package/dist/toolbar/createToolbar.d.ts +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/tooltip/createPreviewTrigger.d.ts +23 -0
- package/dist/tooltip/createPreviewTrigger.d.ts.map +1 -0
- package/dist/tooltip/createSafeArea.d.ts +20 -0
- package/dist/tooltip/createSafeArea.d.ts.map +1 -0
- package/dist/tooltip/createTooltip.d.ts +1 -1
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +1 -9
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -0
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +2 -2
- package/dist/tooltip/index.jsx +2 -2
- package/dist/tooltip/intl/index.d.ts +4 -0
- package/dist/tooltip/intl/index.d.ts.map +1 -0
- package/dist/tree/createTree.d.ts +1 -5
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +1 -5
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +1 -5
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/intl/index.d.ts +14 -0
- package/dist/tree/intl/index.d.ts.map +1 -0
- package/dist/tree/types.d.ts +37 -3
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/ShadowTreeWalker.d.ts +30 -0
- package/dist/utils/ShadowTreeWalker.d.ts.map +1 -0
- package/dist/utils/animation.d.ts +1 -29
- package/dist/utils/animation.d.ts.map +1 -1
- package/dist/utils/callEventHandler.d.ts +7 -0
- package/dist/utils/callEventHandler.d.ts.map +1 -0
- package/dist/utils/capture.d.ts +14 -0
- package/dist/utils/capture.d.ts.map +1 -0
- package/dist/utils/createDescription.d.ts +1 -25
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts +58 -11
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/domAttrs.d.ts +16 -0
- package/dist/utils/domAttrs.d.ts.map +1 -0
- package/dist/utils/env.d.ts +30 -2
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/events.d.ts +0 -4
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/filterDOMProps.d.ts +0 -6
- package/dist/utils/filterDOMProps.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +14 -10
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/focusWithoutScrolling.d.ts +10 -0
- package/dist/utils/focusWithoutScrolling.d.ts.map +1 -0
- package/dist/utils/geometry.d.ts +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/getMetaValue.d.ts +13 -0
- package/dist/utils/getMetaValue.d.ts.map +1 -0
- package/dist/utils/getNonce.d.ts +9 -0
- package/dist/utils/getNonce.d.ts.map +1 -0
- package/dist/utils/globalListeners.d.ts +0 -6
- package/dist/utils/globalListeners.d.ts.map +1 -1
- package/dist/utils/index.d.ts +10 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +9 -4
- package/dist/utils/index.jsx +9 -4
- package/dist/utils/keyboard.d.ts +0 -4
- package/dist/utils/keyboard.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts +5 -2
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/openLink.d.ts +52 -0
- package/dist/utils/openLink.d.ts.map +1 -0
- package/dist/utils/owner.d.ts +14 -0
- package/dist/utils/owner.d.ts.map +1 -0
- package/dist/utils/platform.d.ts +10 -13
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +2 -0
- package/dist/utils/reactivity.d.ts.map +1 -1
- package/dist/utils/refs.d.ts +20 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/runAfterTransition.d.ts +2 -0
- package/dist/utils/runAfterTransition.d.ts.map +1 -0
- package/dist/utils/scrollIntoView.d.ts +0 -4
- package/dist/utils/scrollIntoView.d.ts.map +1 -1
- package/dist/utils/splitProps.d.ts +17 -0
- package/dist/utils/splitProps.d.ts.map +1 -0
- package/dist/utils/textSelection.d.ts +5 -12
- package/dist/utils/textSelection.d.ts.map +1 -1
- package/dist/virtualizer/ScrollView.d.ts +38 -0
- package/dist/virtualizer/ScrollView.d.ts.map +1 -0
- package/dist/virtualizer/index.d.ts +3 -0
- package/dist/virtualizer/index.d.ts.map +1 -0
- package/dist/virtualizer/index.js +2 -0
- package/dist/virtualizer/index.jsx +2 -0
- package/dist/virtualizer/utils.d.ts +10 -0
- package/dist/virtualizer/utils.d.ts.map +1 -0
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -9
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.js +1 -1
- package/dist/visually-hidden/index.jsx +1 -1
- package/package.json +28 -11
- package/src/actiongroup/createActionGroup.ts +56 -31
- package/src/autocomplete/createAutocomplete.ts +91 -20
- package/src/autocomplete/intl/ar-AE.json +3 -0
- package/src/autocomplete/intl/bg-BG.json +3 -0
- package/src/autocomplete/intl/cs-CZ.json +3 -0
- package/src/autocomplete/intl/da-DK.json +3 -0
- package/src/autocomplete/intl/de-DE.json +3 -0
- package/src/autocomplete/intl/el-GR.json +3 -0
- package/src/autocomplete/intl/en-US.json +3 -0
- package/src/autocomplete/intl/es-ES.json +3 -0
- package/src/autocomplete/intl/et-EE.json +3 -0
- package/src/autocomplete/intl/fi-FI.json +3 -0
- package/src/autocomplete/intl/fr-FR.json +3 -0
- package/src/autocomplete/intl/he-IL.json +3 -0
- package/src/autocomplete/intl/hr-HR.json +3 -0
- package/src/autocomplete/intl/hu-HU.json +3 -0
- package/src/autocomplete/intl/index.ts +122 -0
- package/src/autocomplete/intl/it-IT.json +3 -0
- package/src/autocomplete/intl/ja-JP.json +3 -0
- package/src/autocomplete/intl/ko-KR.json +3 -0
- package/src/autocomplete/intl/lt-LT.json +3 -0
- package/src/autocomplete/intl/lv-LV.json +3 -0
- package/src/autocomplete/intl/nb-NO.json +3 -0
- package/src/autocomplete/intl/nl-NL.json +3 -0
- package/src/autocomplete/intl/pl-PL.json +3 -0
- package/src/autocomplete/intl/pt-BR.json +3 -0
- package/src/autocomplete/intl/pt-PT.json +3 -0
- package/src/autocomplete/intl/ro-RO.json +3 -0
- package/src/autocomplete/intl/ru-RU.json +3 -0
- package/src/autocomplete/intl/sk-SK.json +3 -0
- package/src/autocomplete/intl/sl-SI.json +3 -0
- package/src/autocomplete/intl/sr-SP.json +3 -0
- package/src/autocomplete/intl/sv-SE.json +3 -0
- package/src/autocomplete/intl/tr-TR.json +3 -0
- package/src/autocomplete/intl/uk-UA.json +3 -0
- package/src/autocomplete/intl/zh-CN.json +3 -0
- package/src/autocomplete/intl/zh-TW.json +3 -0
- package/src/breadcrumbs/createBreadcrumbs.ts +47 -12
- package/src/breadcrumbs/intl/ar-AE.json +3 -0
- package/src/breadcrumbs/intl/bg-BG.json +3 -0
- package/src/breadcrumbs/intl/cs-CZ.json +3 -0
- package/src/breadcrumbs/intl/da-DK.json +3 -0
- package/src/breadcrumbs/intl/de-DE.json +3 -0
- package/src/breadcrumbs/intl/el-GR.json +3 -0
- package/src/breadcrumbs/intl/en-US.json +3 -0
- package/src/breadcrumbs/intl/es-ES.json +3 -0
- package/src/breadcrumbs/intl/et-EE.json +3 -0
- package/src/breadcrumbs/intl/fi-FI.json +3 -0
- package/src/breadcrumbs/intl/fr-FR.json +3 -0
- package/src/breadcrumbs/intl/he-IL.json +3 -0
- package/src/breadcrumbs/intl/hr-HR.json +3 -0
- package/src/breadcrumbs/intl/hu-HU.json +3 -0
- package/src/breadcrumbs/intl/index.ts +122 -0
- package/src/breadcrumbs/intl/it-IT.json +3 -0
- package/src/breadcrumbs/intl/ja-JP.json +3 -0
- package/src/breadcrumbs/intl/ko-KR.json +3 -0
- package/src/breadcrumbs/intl/lt-LT.json +3 -0
- package/src/breadcrumbs/intl/lv-LV.json +3 -0
- package/src/breadcrumbs/intl/nb-NO.json +3 -0
- package/src/breadcrumbs/intl/nl-NL.json +3 -0
- package/src/breadcrumbs/intl/pl-PL.json +3 -0
- package/src/breadcrumbs/intl/pt-BR.json +3 -0
- package/src/breadcrumbs/intl/pt-PT.json +3 -0
- package/src/breadcrumbs/intl/ro-RO.json +3 -0
- package/src/breadcrumbs/intl/ru-RU.json +3 -0
- package/src/breadcrumbs/intl/sk-SK.json +3 -0
- package/src/breadcrumbs/intl/sl-SI.json +3 -0
- package/src/breadcrumbs/intl/sr-SP.json +3 -0
- package/src/breadcrumbs/intl/sv-SE.json +3 -0
- package/src/breadcrumbs/intl/tr-TR.json +3 -0
- package/src/breadcrumbs/intl/uk-UA.json +3 -0
- package/src/breadcrumbs/intl/zh-CN.json +3 -0
- package/src/breadcrumbs/intl/zh-TW.json +3 -0
- package/src/button/createButton.ts +22 -3
- package/src/button/createToggleButton.ts +27 -15
- package/src/button/createToggleButtonGroup.ts +23 -8
- package/src/button/types.ts +16 -0
- package/src/calendar/createCalendar.ts +121 -28
- package/src/calendar/createCalendarCell.ts +111 -31
- package/src/calendar/createCalendarGrid.ts +70 -18
- package/src/calendar/createCalendarMonthPicker.ts +14 -0
- package/src/calendar/createCalendarYearPicker.ts +18 -2
- package/src/calendar/createRangeCalendar.ts +209 -19
- package/src/calendar/createRangeCalendarCell.ts +343 -51
- package/src/calendar/intl/index.ts +37 -0
- package/src/calendar/utils.ts +175 -62
- package/src/checkbox/createCheckbox.ts +46 -35
- package/src/checkbox/createCheckboxGroup.ts +76 -20
- package/src/checkbox/createCheckboxGroupItem.ts +82 -6
- package/src/collections/index.ts +37 -18
- package/src/color/createColorArea.ts +271 -40
- package/src/color/createColorField.ts +264 -34
- package/src/color/createColorSlider.ts +38 -4
- package/src/color/createColorSwatch.ts +18 -1
- package/src/color/createColorWheel.ts +103 -13
- package/src/color/intl/index.ts +35 -0
- package/src/color/types.ts +49 -1
- package/src/combobox/createComboBox.ts +343 -196
- package/src/combobox/intl/generated-locales.ts +38 -1
- package/src/combobox/intl/index.ts +38 -2
- package/src/datepicker/createDateField.ts +51 -38
- package/src/datepicker/createDatePicker.ts +46 -4
- package/src/datepicker/createDatePickerGroup.ts +24 -13
- package/src/datepicker/createDateRangePicker.ts +57 -5
- package/src/datepicker/createDateSegment.ts +93 -24
- package/src/datepicker/createDisplayNames.ts +16 -1
- package/src/datepicker/createTimeField.ts +14 -0
- package/src/datepicker/intl.ts +36 -0
- package/src/dialog/createDialog.ts +57 -30
- package/src/dialog/types.ts +14 -0
- package/src/disclosure/createDisclosure.ts +36 -10
- package/src/disclosure/createDisclosureGroup.ts +3 -4
- package/src/dnd/DragManager.ts +72 -11
- package/src/dnd/DropTargetKeyboardNavigation.ts +2 -2
- package/src/dnd/createDrag.ts +18 -1
- package/src/dnd/createDraggableCollection.ts +96 -32
- package/src/dnd/createDraggableItem.ts +150 -72
- package/src/dnd/createDrop.ts +71 -4
- package/src/dnd/createDropIndicator.ts +182 -0
- package/src/dnd/createDroppableCollection.ts +106 -40
- package/src/dnd/createDroppableItem.ts +193 -13
- package/src/dnd/index.ts +3 -0
- package/src/dnd/intl/index.ts +77 -66
- package/src/dnd/types.ts +20 -1
- package/src/dnd/utils.ts +19 -0
- package/src/focus/FocusScope.tsx +704 -156
- package/src/focus/createAutoFocus.ts +120 -69
- package/src/focus/createFocusRestore.ts +16 -12
- package/src/focus/createHasTabbableChild.ts +78 -0
- package/src/focus/createVirtualFocus.ts +21 -5
- package/src/focus/virtualFocus.ts +1 -1
- package/src/form/createFormReset.ts +40 -17
- package/src/form/createFormValidation.ts +158 -88
- package/src/grid/GridKeyboardDelegate.ts +14 -0
- package/src/grid/createGrid.ts +264 -5
- package/src/grid/createGridCell.ts +26 -5
- package/src/grid/createGridRow.ts +17 -2
- package/src/grid/index.ts +2 -2
- package/src/grid/intl/ar-AE.json +8 -0
- package/src/grid/intl/bg-BG.json +8 -0
- package/src/grid/intl/cs-CZ.json +8 -0
- package/src/grid/intl/da-DK.json +8 -0
- package/src/grid/intl/de-DE.json +8 -0
- package/src/grid/intl/el-GR.json +8 -0
- package/src/grid/intl/en-US.json +8 -0
- package/src/grid/intl/es-ES.json +8 -0
- package/src/grid/intl/et-EE.json +8 -0
- package/src/grid/intl/fi-FI.json +8 -0
- package/src/grid/intl/fr-FR.json +8 -0
- package/src/grid/intl/he-IL.json +8 -0
- package/src/grid/intl/hr-HR.json +8 -0
- package/src/grid/intl/hu-HU.json +8 -0
- package/src/grid/intl/index.ts +127 -0
- package/src/grid/intl/it-IT.json +8 -0
- package/src/grid/intl/ja-JP.json +8 -0
- package/src/grid/intl/ko-KR.json +8 -0
- package/src/grid/intl/lt-LT.json +8 -0
- package/src/grid/intl/lv-LV.json +8 -0
- package/src/grid/intl/nb-NO.json +8 -0
- package/src/grid/intl/nl-NL.json +8 -0
- package/src/grid/intl/pl-PL.json +8 -0
- package/src/grid/intl/pt-BR.json +8 -0
- package/src/grid/intl/pt-PT.json +8 -0
- package/src/grid/intl/ro-RO.json +8 -0
- package/src/grid/intl/ru-RU.json +8 -0
- package/src/grid/intl/sk-SK.json +8 -0
- package/src/grid/intl/sl-SI.json +8 -0
- package/src/grid/intl/sr-SP.json +8 -0
- package/src/grid/intl/sv-SE.json +8 -0
- package/src/grid/intl/tr-TR.json +8 -0
- package/src/grid/intl/uk-UA.json +8 -0
- package/src/grid/intl/zh-CN.json +8 -0
- package/src/grid/intl/zh-TW.json +8 -0
- package/src/grid/types.ts +25 -2
- package/src/gridlist/createGridList.ts +252 -47
- package/src/gridlist/createGridListItem.ts +90 -20
- package/src/gridlist/createGridListSection.ts +14 -0
- package/src/gridlist/createGridListSelectionCheckbox.ts +31 -4
- package/src/gridlist/intl/ar-AE.json +4 -0
- package/src/gridlist/intl/bg-BG.json +4 -0
- package/src/gridlist/intl/cs-CZ.json +4 -0
- package/src/gridlist/intl/da-DK.json +4 -0
- package/src/gridlist/intl/de-DE.json +4 -0
- package/src/gridlist/intl/el-GR.json +4 -0
- package/src/gridlist/intl/en-US.json +4 -0
- package/src/gridlist/intl/es-ES.json +4 -0
- package/src/gridlist/intl/et-EE.json +4 -0
- package/src/gridlist/intl/fi-FI.json +4 -0
- package/src/gridlist/intl/fr-FR.json +4 -0
- package/src/gridlist/intl/he-IL.json +4 -0
- package/src/gridlist/intl/hr-HR.json +4 -0
- package/src/gridlist/intl/hu-HU.json +4 -0
- package/src/gridlist/intl/index.ts +123 -0
- package/src/gridlist/intl/it-IT.json +4 -0
- package/src/gridlist/intl/ja-JP.json +4 -0
- package/src/gridlist/intl/ko-KR.json +4 -0
- package/src/gridlist/intl/lt-LT.json +4 -0
- package/src/gridlist/intl/lv-LV.json +4 -0
- package/src/gridlist/intl/nb-NO.json +4 -0
- package/src/gridlist/intl/nl-NL.json +4 -0
- package/src/gridlist/intl/pl-PL.json +4 -0
- package/src/gridlist/intl/pt-BR.json +4 -0
- package/src/gridlist/intl/pt-PT.json +4 -0
- package/src/gridlist/intl/ro-RO.json +4 -0
- package/src/gridlist/intl/ru-RU.json +4 -0
- package/src/gridlist/intl/sk-SK.json +4 -0
- package/src/gridlist/intl/sl-SI.json +4 -0
- package/src/gridlist/intl/sr-SP.json +4 -0
- package/src/gridlist/intl/sv-SE.json +4 -0
- package/src/gridlist/intl/tr-TR.json +4 -0
- package/src/gridlist/intl/uk-UA.json +4 -0
- package/src/gridlist/intl/zh-CN.json +4 -0
- package/src/gridlist/intl/zh-TW.json +4 -0
- package/src/gridlist/types.ts +86 -2
- package/src/i18n/compileIcu.ts +440 -0
- package/src/i18n/createCollator.ts +14 -0
- package/src/i18n/createDateFormatter.ts +17 -2
- package/src/i18n/createFilter.ts +14 -0
- package/src/i18n/createListFormatter.ts +38 -0
- package/src/i18n/createNumberFormatter.ts +14 -0
- package/src/i18n/createStringFormatter.ts +64 -8
- package/src/i18n/index.ts +3 -0
- package/src/i18n/locale.tsx +77 -20
- package/src/i18n/utils.ts +14 -0
- package/src/index.ts +81 -3
- package/src/interactions/FocusableProvider.tsx +28 -11
- package/src/interactions/PressEvent.ts +16 -1
- package/src/interactions/createContextMenu.ts +108 -0
- package/src/interactions/createFocus.ts +35 -8
- package/src/interactions/createFocusRing.ts +39 -18
- package/src/interactions/createFocusWithin.ts +61 -10
- package/src/interactions/createFocusable.ts +67 -31
- package/src/interactions/createHover.ts +98 -94
- package/src/interactions/createInteractionModality.ts +135 -45
- package/src/interactions/createKeyboard.ts +85 -9
- package/src/interactions/createKeyboardShortcutHandler.ts +157 -0
- package/src/interactions/createLongPress.ts +74 -22
- package/src/interactions/createMove.ts +24 -3
- package/src/interactions/createPress.ts +109 -74
- package/src/interactions/index.ts +1 -0
- package/src/label/createField.ts +58 -63
- package/src/label/createLabel.ts +21 -4
- package/src/label/createLabels.ts +17 -0
- package/src/landmark/createLandmark.ts +491 -167
- package/src/link/createLink.ts +48 -41
- package/src/listbox/createListBox.ts +114 -310
- package/src/listbox/createOption.ts +50 -14
- package/src/live-announcer/announce.ts +27 -10
- package/src/menu/createMenu.ts +123 -315
- package/src/menu/createMenuItem.ts +84 -60
- package/src/menu/createMenuTrigger.ts +179 -51
- package/src/menu/index.ts +2 -0
- package/src/menu/intl/index.ts +130 -0
- package/src/meter/createMeter.ts +20 -5
- package/src/numberfield/createNumberField.ts +459 -41
- package/src/numberfield/index.ts +7 -0
- package/src/numberfield/intl.ts +240 -0
- package/src/overlays/ariaHideOutside.ts +76 -11
- package/src/overlays/createCloseOnScroll.ts +90 -0
- package/src/overlays/createInteractOutside.ts +73 -68
- package/src/overlays/createModal.tsx +42 -27
- package/src/overlays/createOverlay.ts +72 -67
- package/src/overlays/createOverlayTrigger.ts +21 -6
- package/src/overlays/createPreventScroll.ts +92 -62
- package/src/overlays/index.ts +5 -0
- package/src/overlays/intl/ar-AE.json +3 -0
- package/src/overlays/intl/bg-BG.json +3 -0
- package/src/overlays/intl/cs-CZ.json +3 -0
- package/src/overlays/intl/da-DK.json +3 -0
- package/src/overlays/intl/de-DE.json +3 -0
- package/src/overlays/intl/el-GR.json +3 -0
- package/src/overlays/intl/en-US.json +3 -0
- package/src/overlays/intl/es-ES.json +3 -0
- package/src/overlays/intl/et-EE.json +3 -0
- package/src/overlays/intl/fi-FI.json +3 -0
- package/src/overlays/intl/fr-FR.json +3 -0
- package/src/overlays/intl/he-IL.json +3 -0
- package/src/overlays/intl/hr-HR.json +3 -0
- package/src/overlays/intl/hu-HU.json +3 -0
- package/src/overlays/intl/index.ts +122 -0
- package/src/overlays/intl/it-IT.json +3 -0
- package/src/overlays/intl/ja-JP.json +3 -0
- package/src/overlays/intl/ko-KR.json +3 -0
- package/src/overlays/intl/lt-LT.json +3 -0
- package/src/overlays/intl/lv-LV.json +3 -0
- package/src/overlays/intl/nb-NO.json +3 -0
- package/src/overlays/intl/nl-NL.json +3 -0
- package/src/overlays/intl/pl-PL.json +3 -0
- package/src/overlays/intl/pt-BR.json +3 -0
- package/src/overlays/intl/pt-PT.json +3 -0
- package/src/overlays/intl/ro-RO.json +3 -0
- package/src/overlays/intl/ru-RU.json +3 -0
- package/src/overlays/intl/sk-SK.json +3 -0
- package/src/overlays/intl/sl-SI.json +3 -0
- package/src/overlays/intl/sr-SP.json +3 -0
- package/src/overlays/intl/sv-SE.json +3 -0
- package/src/overlays/intl/tr-TR.json +3 -0
- package/src/overlays/intl/uk-UA.json +3 -0
- package/src/overlays/intl/zh-CN.json +3 -0
- package/src/overlays/intl/zh-TW.json +3 -0
- package/src/popover/calculatePosition.ts +21 -3
- package/src/popover/createOverlayPosition.ts +154 -63
- package/src/popover/createPopover.ts +121 -27
- package/src/progress/createProgressBar.ts +23 -5
- package/src/radio/createRadio.ts +65 -26
- package/src/radio/createRadioGroup.ts +131 -86
- package/src/searchfield/createSearchField.ts +34 -2
- package/src/searchfield/intl/ar-AE.json +3 -0
- package/src/searchfield/intl/bg-BG.json +3 -0
- package/src/searchfield/intl/cs-CZ.json +3 -0
- package/src/searchfield/intl/da-DK.json +3 -0
- package/src/searchfield/intl/de-DE.json +3 -0
- package/src/searchfield/intl/el-GR.json +3 -0
- package/src/searchfield/intl/en-US.json +3 -0
- package/src/searchfield/intl/es-ES.json +3 -0
- package/src/searchfield/intl/et-EE.json +3 -0
- package/src/searchfield/intl/fi-FI.json +3 -0
- package/src/searchfield/intl/fr-FR.json +3 -0
- package/src/searchfield/intl/he-IL.json +3 -0
- package/src/searchfield/intl/hr-HR.json +3 -0
- package/src/searchfield/intl/hu-HU.json +3 -0
- package/src/searchfield/intl/index.ts +122 -0
- package/src/searchfield/intl/it-IT.json +3 -0
- package/src/searchfield/intl/ja-JP.json +3 -0
- package/src/searchfield/intl/ko-KR.json +3 -0
- package/src/searchfield/intl/lt-LT.json +3 -0
- package/src/searchfield/intl/lv-LV.json +3 -0
- package/src/searchfield/intl/nb-NO.json +3 -0
- package/src/searchfield/intl/nl-NL.json +3 -0
- package/src/searchfield/intl/pl-PL.json +3 -0
- package/src/searchfield/intl/pt-BR.json +3 -0
- package/src/searchfield/intl/pt-PT.json +3 -0
- package/src/searchfield/intl/ro-RO.json +3 -0
- package/src/searchfield/intl/ru-RU.json +3 -0
- package/src/searchfield/intl/sk-SK.json +3 -0
- package/src/searchfield/intl/sl-SI.json +3 -0
- package/src/searchfield/intl/sr-SP.json +3 -0
- package/src/searchfield/intl/sv-SE.json +3 -0
- package/src/searchfield/intl/tr-TR.json +3 -0
- package/src/searchfield/intl/uk-UA.json +3 -0
- package/src/searchfield/intl/zh-CN.json +3 -0
- package/src/searchfield/intl/zh-TW.json +3 -0
- package/src/select/createHiddenSelect.tsx +157 -110
- package/src/select/createSelect.ts +139 -61
- package/src/selection/DOMLayoutDelegate.ts +14 -0
- package/src/selection/ListKeyboardDelegate.ts +26 -4
- package/src/selection/constants.ts +14 -0
- package/src/selection/createCollectionRowInteraction.ts +77 -8
- package/src/selection/createScrollIntoViewOnFocus.ts +23 -8
- package/src/selection/createSelectableCollection.ts +394 -245
- package/src/selection/createSelectableItem.ts +220 -45
- package/src/selection/createSelectableList.ts +26 -3
- package/src/selection/createTypeSelect.ts +34 -11
- package/src/selection/selectItem.ts +14 -0
- package/src/selection/utils.ts +15 -1
- package/src/separator/createSeparator.ts +17 -1
- package/src/slider/createSlider.ts +561 -302
- package/src/slider/createSliderThumb.ts +46 -0
- package/src/slider/index.ts +1 -0
- package/src/spinbutton/createSpinButton.ts +16 -2
- package/src/spinbutton/intl.ts +36 -0
- package/src/ssr/index.tsx +93 -48
- package/src/steplist/createStepList.ts +112 -48
- package/src/steplist/index.ts +3 -0
- package/src/steplist/intl/ar-AE.json +3 -0
- package/src/steplist/intl/bg-BG.json +3 -0
- package/src/steplist/intl/cs-CZ.json +3 -0
- package/src/steplist/intl/da-DK.json +3 -0
- package/src/steplist/intl/de-DE.json +3 -0
- package/src/steplist/intl/el-GR.json +3 -0
- package/src/steplist/intl/en-US.json +3 -0
- package/src/steplist/intl/es-ES.json +3 -0
- package/src/steplist/intl/et-EE.json +3 -0
- package/src/steplist/intl/fi-FI.json +3 -0
- package/src/steplist/intl/fr-FR.json +3 -0
- package/src/steplist/intl/he-IL.json +3 -0
- package/src/steplist/intl/hr-HR.json +3 -0
- package/src/steplist/intl/hu-HU.json +3 -0
- package/src/steplist/intl/index.ts +88 -0
- package/src/steplist/intl/it-IT.json +3 -0
- package/src/steplist/intl/ja-JP.json +3 -0
- package/src/steplist/intl/ko-KR.json +3 -0
- package/src/steplist/intl/lt-LT.json +3 -0
- package/src/steplist/intl/lv-LV.json +3 -0
- package/src/steplist/intl/nb-NO.json +3 -0
- package/src/steplist/intl/nl-NL.json +3 -0
- package/src/steplist/intl/pl-PL.json +3 -0
- package/src/steplist/intl/pt-BR.json +3 -0
- package/src/steplist/intl/pt-PT.json +3 -0
- package/src/steplist/intl/ro-RO.json +3 -0
- package/src/steplist/intl/ru-RU.json +3 -0
- package/src/steplist/intl/sk-SK.json +3 -0
- package/src/steplist/intl/sl-SI.json +3 -0
- package/src/steplist/intl/sr-SP.json +3 -0
- package/src/steplist/intl/sv-SE.json +3 -0
- package/src/steplist/intl/tr-TR.json +3 -0
- package/src/steplist/intl/uk-UA.json +3 -0
- package/src/steplist/intl/zh-CN.json +3 -0
- package/src/steplist/intl/zh-TW.json +3 -0
- package/src/switch/createSwitch.ts +25 -4
- package/src/table/createTable.ts +247 -82
- package/src/table/createTableCell.ts +26 -6
- package/src/table/createTableColumnHeader.ts +61 -13
- package/src/table/createTableColumnResize.ts +303 -102
- package/src/table/createTableHeaderRow.ts +20 -5
- package/src/table/createTableRow.ts +48 -25
- package/src/table/createTableRowGroup.ts +18 -3
- package/src/table/createTableSelectAllCheckbox.ts +30 -14
- package/src/table/createTableSelectionCheckbox.ts +21 -3
- package/src/table/index.ts +2 -2
- package/src/table/intl/ar-AE.json +13 -0
- package/src/table/intl/bg-BG.json +13 -0
- package/src/table/intl/cs-CZ.json +13 -0
- package/src/table/intl/da-DK.json +13 -0
- package/src/table/intl/de-DE.json +13 -0
- package/src/table/intl/el-GR.json +13 -0
- package/src/table/intl/en-US.json +13 -0
- package/src/table/intl/es-ES.json +13 -0
- package/src/table/intl/et-EE.json +13 -0
- package/src/table/intl/fi-FI.json +13 -0
- package/src/table/intl/fr-FR.json +13 -0
- package/src/table/intl/he-IL.json +13 -0
- package/src/table/intl/hr-HR.json +13 -0
- package/src/table/intl/hu-HU.json +13 -0
- package/src/table/intl/index.ts +132 -0
- package/src/table/intl/it-IT.json +13 -0
- package/src/table/intl/ja-JP.json +13 -0
- package/src/table/intl/ko-KR.json +13 -0
- package/src/table/intl/lt-LT.json +13 -0
- package/src/table/intl/lv-LV.json +13 -0
- package/src/table/intl/nb-NO.json +13 -0
- package/src/table/intl/nl-NL.json +13 -0
- package/src/table/intl/pl-PL.json +13 -0
- package/src/table/intl/pt-BR.json +13 -0
- package/src/table/intl/pt-PT.json +13 -0
- package/src/table/intl/ro-RO.json +13 -0
- package/src/table/intl/ru-RU.json +13 -0
- package/src/table/intl/sk-SK.json +13 -0
- package/src/table/intl/sl-SI.json +13 -0
- package/src/table/intl/sr-SP.json +13 -0
- package/src/table/intl/sv-SE.json +13 -0
- package/src/table/intl/tr-TR.json +13 -0
- package/src/table/intl/uk-UA.json +13 -0
- package/src/table/intl/zh-CN.json +13 -0
- package/src/table/intl/zh-TW.json +13 -0
- package/src/table/types.ts +44 -2
- package/src/table/utils.ts +27 -1
- package/src/tabs/createTabs.ts +140 -67
- package/src/tag/createTag.ts +157 -180
- package/src/tag/createTagGroup.ts +160 -105
- package/src/tag/intl/ar-AE.json +4 -0
- package/src/tag/intl/bg-BG.json +4 -0
- package/src/tag/intl/cs-CZ.json +4 -0
- package/src/tag/intl/da-DK.json +4 -0
- package/src/tag/intl/de-DE.json +4 -0
- package/src/tag/intl/el-GR.json +4 -0
- package/src/tag/intl/en-US.json +4 -0
- package/src/tag/intl/es-ES.json +4 -0
- package/src/tag/intl/et-EE.json +4 -0
- package/src/tag/intl/fi-FI.json +4 -0
- package/src/tag/intl/fr-FR.json +4 -0
- package/src/tag/intl/he-IL.json +4 -0
- package/src/tag/intl/hr-HR.json +4 -0
- package/src/tag/intl/hu-HU.json +4 -0
- package/src/tag/intl/index.ts +123 -0
- package/src/tag/intl/it-IT.json +4 -0
- package/src/tag/intl/ja-JP.json +4 -0
- package/src/tag/intl/ko-KR.json +4 -0
- package/src/tag/intl/lt-LT.json +4 -0
- package/src/tag/intl/lv-LV.json +4 -0
- package/src/tag/intl/nb-NO.json +4 -0
- package/src/tag/intl/nl-NL.json +4 -0
- package/src/tag/intl/pl-PL.json +4 -0
- package/src/tag/intl/pt-BR.json +4 -0
- package/src/tag/intl/pt-PT.json +4 -0
- package/src/tag/intl/ro-RO.json +4 -0
- package/src/tag/intl/ru-RU.json +4 -0
- package/src/tag/intl/sk-SK.json +4 -0
- package/src/tag/intl/sl-SI.json +4 -0
- package/src/tag/intl/sr-SP.json +4 -0
- package/src/tag/intl/sv-SE.json +4 -0
- package/src/tag/intl/tr-TR.json +4 -0
- package/src/tag/intl/uk-UA.json +4 -0
- package/src/tag/intl/zh-CN.json +4 -0
- package/src/tag/intl/zh-TW.json +4 -0
- package/src/textfield/createTextField.ts +120 -14
- package/src/toast/createToast.ts +72 -22
- package/src/toast/createToastRegion.ts +60 -24
- package/src/toast/intl/ar-AE.json +4 -0
- package/src/toast/intl/bg-BG.json +4 -0
- package/src/toast/intl/cs-CZ.json +4 -0
- package/src/toast/intl/da-DK.json +4 -0
- package/src/toast/intl/de-DE.json +4 -0
- package/src/toast/intl/el-GR.json +4 -0
- package/src/toast/intl/en-US.json +4 -0
- package/src/toast/intl/es-ES.json +4 -0
- package/src/toast/intl/et-EE.json +4 -0
- package/src/toast/intl/fi-FI.json +4 -0
- package/src/toast/intl/fr-FR.json +4 -0
- package/src/toast/intl/he-IL.json +4 -0
- package/src/toast/intl/hr-HR.json +4 -0
- package/src/toast/intl/hu-HU.json +4 -0
- package/src/toast/intl/index.ts +123 -0
- package/src/toast/intl/it-IT.json +4 -0
- package/src/toast/intl/ja-JP.json +4 -0
- package/src/toast/intl/ko-KR.json +4 -0
- package/src/toast/intl/lt-LT.json +4 -0
- package/src/toast/intl/lv-LV.json +4 -0
- package/src/toast/intl/nb-NO.json +4 -0
- package/src/toast/intl/nl-NL.json +4 -0
- package/src/toast/intl/pl-PL.json +4 -0
- package/src/toast/intl/pt-BR.json +4 -0
- package/src/toast/intl/pt-PT.json +4 -0
- package/src/toast/intl/ro-RO.json +4 -0
- package/src/toast/intl/ru-RU.json +4 -0
- package/src/toast/intl/sk-SK.json +4 -0
- package/src/toast/intl/sl-SI.json +4 -0
- package/src/toast/intl/sr-SP.json +4 -0
- package/src/toast/intl/sv-SE.json +4 -0
- package/src/toast/intl/tr-TR.json +4 -0
- package/src/toast/intl/uk-UA.json +4 -0
- package/src/toast/intl/zh-CN.json +4 -0
- package/src/toast/intl/zh-TW.json +4 -0
- package/src/toggle/createToggle.ts +169 -21
- package/src/tokenfield/createToken.ts +100 -0
- package/src/tokenfield/createTokenField.ts +955 -0
- package/src/tokenfield/index.ts +10 -0
- package/src/toolbar/createToolbar.ts +26 -5
- package/src/tooltip/createPreviewTrigger.ts +301 -0
- package/src/tooltip/createSafeArea.ts +165 -0
- package/src/tooltip/createTooltip.ts +15 -1
- package/src/tooltip/createTooltipTrigger.ts +25 -11
- package/src/tooltip/index.ts +7 -0
- package/src/tooltip/intl/index.ts +76 -0
- package/src/tree/createTree.ts +83 -48
- package/src/tree/createTreeItem.ts +92 -35
- package/src/tree/createTreeSelectionCheckbox.ts +34 -30
- package/src/tree/intl/ar-AE.json +4 -0
- package/src/tree/intl/bg-BG.json +4 -0
- package/src/tree/intl/cs-CZ.json +4 -0
- package/src/tree/intl/da-DK.json +4 -0
- package/src/tree/intl/de-DE.json +4 -0
- package/src/tree/intl/el-GR.json +4 -0
- package/src/tree/intl/en-US.json +4 -0
- package/src/tree/intl/es-ES.json +4 -0
- package/src/tree/intl/et-EE.json +4 -0
- package/src/tree/intl/fi-FI.json +4 -0
- package/src/tree/intl/fr-FR.json +4 -0
- package/src/tree/intl/he-IL.json +4 -0
- package/src/tree/intl/hr-HR.json +4 -0
- package/src/tree/intl/hu-HU.json +4 -0
- package/src/tree/intl/index.ts +123 -0
- package/src/tree/intl/it-IT.json +4 -0
- package/src/tree/intl/ja-JP.json +4 -0
- package/src/tree/intl/ko-KR.json +4 -0
- package/src/tree/intl/lt-LT.json +4 -0
- package/src/tree/intl/lv-LV.json +4 -0
- package/src/tree/intl/nb-NO.json +4 -0
- package/src/tree/intl/nl-NL.json +4 -0
- package/src/tree/intl/pl-PL.json +4 -0
- package/src/tree/intl/pt-BR.json +4 -0
- package/src/tree/intl/pt-PT.json +4 -0
- package/src/tree/intl/ro-RO.json +4 -0
- package/src/tree/intl/ru-RU.json +4 -0
- package/src/tree/intl/sk-SK.json +4 -0
- package/src/tree/intl/sl-SI.json +4 -0
- package/src/tree/intl/sr-SP.json +4 -0
- package/src/tree/intl/sv-SE.json +4 -0
- package/src/tree/intl/tr-TR.json +4 -0
- package/src/tree/intl/uk-UA.json +4 -0
- package/src/tree/intl/zh-CN.json +4 -0
- package/src/tree/intl/zh-TW.json +4 -0
- package/src/tree/types.ts +37 -3
- package/src/utils/ShadowTreeWalker.ts +249 -0
- package/src/utils/animation.ts +84 -107
- package/src/utils/callEventHandler.ts +23 -0
- package/src/utils/capture.ts +68 -0
- package/src/utils/createDescription.ts +31 -8
- package/src/utils/dom.ts +382 -72
- package/src/utils/domAttrs.ts +84 -0
- package/src/utils/env.ts +34 -3
- package/src/utils/events.ts +39 -3
- package/src/utils/filterDOMProps.ts +34 -2
- package/src/utils/focus.ts +165 -78
- package/src/utils/focusWithoutScrolling.ts +95 -0
- package/src/utils/geometry.ts +15 -1
- package/src/utils/getMetaValue.ts +57 -0
- package/src/utils/getNonce.ts +40 -0
- package/src/utils/globalListeners.ts +16 -3
- package/src/utils/index.ts +40 -1
- package/src/utils/keyboard.ts +15 -1
- package/src/utils/mergeProps.ts +149 -16
- package/src/utils/openLink.ts +241 -0
- package/src/utils/owner.ts +26 -0
- package/src/utils/platform.ts +81 -35
- package/src/utils/reactivity.ts +2 -0
- package/src/utils/refs.ts +53 -0
- package/src/utils/runAfterTransition.ts +117 -0
- package/src/utils/scrollIntoView.ts +14 -0
- package/src/utils/splitProps.ts +70 -0
- package/src/utils/textSelection.ts +53 -66
- package/src/virtualizer/ScrollView.ts +210 -0
- package/src/virtualizer/index.ts +2 -0
- package/src/virtualizer/utils.ts +100 -0
- package/src/visually-hidden/createVisuallyHidden.ts +20 -4
- package/dist/_chunk/createFormValidation.js +0 -135
- package/dist/_chunk/createFormValidation.js.map +0 -1
- package/dist/_chunk/createFormValidation.jsx +0 -135
- package/dist/_chunk/createFormValidation.jsx.map +0 -1
- package/dist/_chunk/focus2.js +0 -631
- package/dist/_chunk/focus2.js.map +0 -1
- package/dist/_chunk/focus2.jsx +0 -631
- package/dist/_chunk/focus2.jsx.map +0 -1
- package/dist/_chunk/visually-hidden.js.map +0 -1
- package/dist/_chunk/visually-hidden.jsx.map +0 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +0 -71
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +0 -1
- package/dist/radio/createRadioGroupState.d.ts +0 -77
- package/dist/radio/createRadioGroupState.d.ts.map +0 -1
- package/dist/toggle/createToggleState.d.ts +0 -34
- package/dist/toggle/createToggleState.d.ts.map +0 -1
- package/src/checkbox/createCheckboxGroupState.ts +0 -174
- package/src/radio/createRadioGroupState.ts +0 -177
- package/src/toggle/createToggleState.ts +0 -86
|
@@ -1,7 +1,120 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/useFocusVisible.ts
|
|
13
|
+
/*
|
|
14
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
15
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
16
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
17
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
20
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
21
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
22
|
+
* governing permissions and limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
/*
|
|
25
|
+
* Copyright 2022 Adobe. All rights reserved.
|
|
26
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
27
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
28
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
29
|
+
*
|
|
30
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
31
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
32
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
33
|
+
* governing permissions and limitations under the License.
|
|
34
|
+
*/
|
|
35
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/utils.ts
|
|
36
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/utils/chain.ts
|
|
37
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/utils/isVirtualEvent.ts
|
|
38
|
+
import { F as isMac, O as isAndroid, S as openLink, a as getEventTarget, c as getOwnerWindow, s as getOwnerDocument } from "./dom.jsx";
|
|
39
|
+
import { createSignal, createTrackedEffect } from "solid-js";
|
|
40
|
+
import { isServer } from "@solidjs/web";
|
|
41
|
+
//#region src/utils/events.ts
|
|
42
|
+
/**
|
|
43
|
+
* Event utilities for detecting virtual clicks and event handling.
|
|
44
|
+
* Based on these pinned React Aria sources:
|
|
45
|
+
* - packages/react-aria/src/utils/isVirtualEvent.ts
|
|
46
|
+
* - packages/react-aria/src/utils/chain.ts
|
|
47
|
+
* - packages/react-aria/src/interactions/utils.ts
|
|
48
|
+
*
|
|
49
|
+
* createMouseEvent is a local event adapter.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Checks if a click event was generated from a virtual source like a screen reader.
|
|
53
|
+
* Virtual clicks typically have detail of 0 and may have zero coordinates.
|
|
54
|
+
*/
|
|
55
|
+
function isVirtualClick(event) {
|
|
56
|
+
if (event.pointerType === "" && event.isTrusted) return true;
|
|
57
|
+
if (isAndroid() && event.pointerType) return event.type === "click" && event.buttons === 1;
|
|
58
|
+
return event.detail === 0 && !event.pointerType;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Checks if a pointer event was generated by a virtual source.
|
|
62
|
+
* iOS VoiceOver fires pointer events with incorrect coordinates.
|
|
63
|
+
* These events have zero width/height.
|
|
64
|
+
*/
|
|
65
|
+
function isVirtualPointerEvent(event) {
|
|
66
|
+
return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse";
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates a synthetic mouse event for programmatic clicking.
|
|
70
|
+
*/
|
|
71
|
+
function createMouseEvent(type, nativeEvent) {
|
|
72
|
+
const init = {
|
|
73
|
+
bubbles: true,
|
|
74
|
+
cancelable: true,
|
|
75
|
+
view: window
|
|
76
|
+
};
|
|
77
|
+
if (nativeEvent) {
|
|
78
|
+
const e = nativeEvent;
|
|
79
|
+
init.screenX = e.screenX;
|
|
80
|
+
init.screenY = e.screenY;
|
|
81
|
+
init.clientX = e.clientX;
|
|
82
|
+
init.clientY = e.clientY;
|
|
83
|
+
init.ctrlKey = e.ctrlKey;
|
|
84
|
+
init.shiftKey = e.shiftKey;
|
|
85
|
+
init.altKey = e.altKey;
|
|
86
|
+
init.metaKey = e.metaKey;
|
|
87
|
+
init.button = e.button;
|
|
88
|
+
init.buttons = e.buttons;
|
|
89
|
+
init.relatedTarget = e.relatedTarget;
|
|
90
|
+
}
|
|
91
|
+
return new MouseEvent(type, init);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Creates a chain of event handlers that calls each in sequence.
|
|
95
|
+
*/
|
|
96
|
+
function chain(...callbacks) {
|
|
97
|
+
return ((...args) => {
|
|
98
|
+
for (const callback of callbacks) if (typeof callback === "function") callback(...args);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Sets the target property on an event object.
|
|
103
|
+
* Used for synthetic events where target needs to be modified.
|
|
104
|
+
*/
|
|
105
|
+
function setEventTarget(event, target) {
|
|
106
|
+
Object.defineProperty(event, "target", {
|
|
107
|
+
value: target,
|
|
108
|
+
writable: false,
|
|
109
|
+
configurable: true
|
|
110
|
+
});
|
|
111
|
+
Object.defineProperty(event, "currentTarget", {
|
|
112
|
+
value: target,
|
|
113
|
+
writable: false,
|
|
114
|
+
configurable: true
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
5
118
|
//#region src/interactions/createInteractionModality.ts
|
|
6
119
|
/**
|
|
7
120
|
* createInteractionModality + focus-visible tracking for solidaria
|
|
@@ -10,13 +123,26 @@ import { isServer } from "solid-js/web";
|
|
|
10
123
|
* Tracks the current interaction modality (keyboard, pointer, or virtual) and
|
|
11
124
|
* provides focus-visible state and listeners.
|
|
12
125
|
*/
|
|
13
|
-
let
|
|
126
|
+
let currentModalityValue = null;
|
|
127
|
+
const [modalityEpoch, bumpModalityEpoch] = createSignal(0, { ownedWrite: true });
|
|
14
128
|
let currentPointerType = "keyboard";
|
|
129
|
+
function writeModality(next) {
|
|
130
|
+
currentModalityValue = next;
|
|
131
|
+
}
|
|
132
|
+
function publishModality(next) {
|
|
133
|
+
currentModalityValue = next;
|
|
134
|
+
bumpModalityEpoch((n) => n + 1);
|
|
135
|
+
}
|
|
15
136
|
const changeHandlers = /* @__PURE__ */ new Set();
|
|
16
137
|
let hasSetupGlobalListeners = /* @__PURE__ */ new Map();
|
|
17
138
|
let hasEventBeforeFocus = false;
|
|
18
139
|
let hasBlurredWindowRecently = false;
|
|
140
|
+
/** @private Set by `preventFocus` so programmatic refocus is not treated as a modality change. */
|
|
19
141
|
let ignoreFocusEvent = false;
|
|
142
|
+
/** @private */
|
|
143
|
+
function setIgnoreFocusEvent(value) {
|
|
144
|
+
ignoreFocusEvent = value;
|
|
145
|
+
}
|
|
20
146
|
const FOCUS_VISIBLE_INPUT_KEYS = {
|
|
21
147
|
Tab: true,
|
|
22
148
|
Escape: true
|
|
@@ -30,36 +156,38 @@ function isValidKey(e) {
|
|
|
30
156
|
function handleKeyboardEvent(e) {
|
|
31
157
|
hasEventBeforeFocus = true;
|
|
32
158
|
if (!openLink.isOpening && isValidKey(e)) {
|
|
33
|
-
|
|
159
|
+
publishModality("keyboard");
|
|
34
160
|
currentPointerType = "keyboard";
|
|
35
161
|
triggerChangeHandlers("keyboard", e);
|
|
36
162
|
}
|
|
37
163
|
}
|
|
38
164
|
function handlePointerEvent(e) {
|
|
39
|
-
currentModality = "pointer";
|
|
40
165
|
currentPointerType = "pointerType" in e ? e.pointerType : "mouse";
|
|
41
166
|
if (e.type === "mousedown" || e.type === "pointerdown") {
|
|
167
|
+
publishModality("pointer");
|
|
42
168
|
hasEventBeforeFocus = true;
|
|
43
169
|
triggerChangeHandlers("pointer", e);
|
|
44
|
-
}
|
|
170
|
+
} else writeModality("pointer");
|
|
45
171
|
}
|
|
46
172
|
function handleClickEvent(e) {
|
|
47
|
-
if (!e.isTrusted) return;
|
|
48
173
|
if (!openLink.isOpening && isVirtualClick(e)) {
|
|
49
174
|
hasEventBeforeFocus = true;
|
|
50
|
-
|
|
175
|
+
publishModality("virtual");
|
|
51
176
|
currentPointerType = "virtual";
|
|
52
177
|
}
|
|
53
178
|
}
|
|
54
179
|
function handleFocusEvent(e) {
|
|
55
|
-
if (
|
|
56
|
-
const target = e
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
180
|
+
if (ignoreFocusEvent) return;
|
|
181
|
+
const target = getEventTarget(e);
|
|
182
|
+
const ownerWindow = getOwnerWindow(target);
|
|
183
|
+
const ownerDocument = getOwnerDocument(target);
|
|
184
|
+
if (target === ownerWindow) {
|
|
185
|
+
hasBlurredWindowRecently = true;
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (target === ownerDocument || !e.isTrusted) return;
|
|
61
189
|
if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {
|
|
62
|
-
|
|
190
|
+
publishModality("virtual");
|
|
63
191
|
currentPointerType = "virtual";
|
|
64
192
|
triggerChangeHandlers("virtual", e);
|
|
65
193
|
}
|
|
@@ -67,6 +195,7 @@ function handleFocusEvent(e) {
|
|
|
67
195
|
hasBlurredWindowRecently = false;
|
|
68
196
|
}
|
|
69
197
|
function handleWindowBlur() {
|
|
198
|
+
if (ignoreFocusEvent) return;
|
|
70
199
|
hasEventBeforeFocus = false;
|
|
71
200
|
hasBlurredWindowRecently = true;
|
|
72
201
|
}
|
|
@@ -150,28 +279,36 @@ function setupGlobalFocusListeners() {
|
|
|
150
279
|
addWindowFocusTracking();
|
|
151
280
|
}
|
|
152
281
|
if (typeof document !== "undefined") addWindowFocusTracking();
|
|
282
|
+
function focusVisibleSnapshot() {
|
|
283
|
+
return currentModalityValue !== "pointer";
|
|
284
|
+
}
|
|
153
285
|
/**
|
|
154
|
-
* If true, keyboard focus is visible.
|
|
286
|
+
* If true, keyboard focus is visible. The only tracked read of modality:
|
|
287
|
+
* useOption's render predicate re-reads this on every render.
|
|
155
288
|
*/
|
|
156
289
|
function isFocusVisible() {
|
|
157
|
-
|
|
290
|
+
modalityEpoch();
|
|
291
|
+
return focusVisibleSnapshot();
|
|
158
292
|
}
|
|
159
293
|
/**
|
|
160
294
|
* Gets the current interaction modality.
|
|
295
|
+
* The module let, not the signal. An effect that calls this does not re-run
|
|
296
|
+
* when modality changes; upstream's query is a plain variable.
|
|
161
297
|
*/
|
|
162
298
|
function getInteractionModality() {
|
|
163
|
-
return
|
|
299
|
+
return currentModalityValue;
|
|
164
300
|
}
|
|
165
301
|
/**
|
|
166
302
|
* Sets the current interaction modality.
|
|
167
303
|
*/
|
|
168
304
|
function setInteractionModality(modality) {
|
|
169
|
-
|
|
305
|
+
publishModality(modality);
|
|
170
306
|
currentPointerType = modality === "pointer" ? "mouse" : modality;
|
|
171
307
|
triggerChangeHandlers(modality, null);
|
|
172
308
|
}
|
|
173
309
|
/**
|
|
174
|
-
* Gets the current pointer type.
|
|
310
|
+
* Gets the current pointer type. Separate from modality; this let is never
|
|
311
|
+
* the modality signal.
|
|
175
312
|
*/
|
|
176
313
|
function getPointerType() {
|
|
177
314
|
return currentPointerType;
|
|
@@ -185,7 +322,7 @@ function isKeyboardFocusEvent(isTextInput, modality, e) {
|
|
|
185
322
|
const IHTMLTextAreaElement = ownerWindow.HTMLTextAreaElement;
|
|
186
323
|
const IHTMLElement = ownerWindow.HTMLElement;
|
|
187
324
|
const IKeyboardEvent = ownerWindow.KeyboardEvent;
|
|
188
|
-
const nonTextInputTypes = new Set([
|
|
325
|
+
const nonTextInputTypes = /* @__PURE__ */ new Set([
|
|
189
326
|
"checkbox",
|
|
190
327
|
"radio",
|
|
191
328
|
"range",
|
|
@@ -204,9 +341,10 @@ function isKeyboardFocusEvent(isTextInput, modality, e) {
|
|
|
204
341
|
*/
|
|
205
342
|
function createFocusVisibleListener(handler, opts) {
|
|
206
343
|
setupGlobalFocusEvents();
|
|
344
|
+
if (opts?.enabled === false) return () => {};
|
|
207
345
|
const listener = (modality, e) => {
|
|
208
346
|
if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) return;
|
|
209
|
-
handler(
|
|
347
|
+
handler(focusVisibleSnapshot());
|
|
210
348
|
};
|
|
211
349
|
changeHandlers.add(listener);
|
|
212
350
|
return () => {
|
|
@@ -217,10 +355,14 @@ function createFocusVisibleListener(handler, opts) {
|
|
|
217
355
|
* Manages focus visible state for the page.
|
|
218
356
|
*/
|
|
219
357
|
function createFocusVisible(props = {}) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
358
|
+
const [isVisible, setIsVisible] = createSignal(isServer ? false : props.autoFocus || focusVisibleSnapshot());
|
|
359
|
+
createTrackedEffect(() => {
|
|
360
|
+
const _s2Cleanups = [];
|
|
361
|
+
const cleanup = createFocusVisibleListener(setIsVisible, { isTextInput: props.isTextInput });
|
|
362
|
+
_s2Cleanups.push(cleanup);
|
|
363
|
+
return () => {
|
|
364
|
+
for (const c of _s2Cleanups) c();
|
|
365
|
+
};
|
|
224
366
|
});
|
|
225
367
|
return { isFocusVisible: isVisible };
|
|
226
368
|
}
|
|
@@ -228,17 +370,21 @@ function createFocusVisible(props = {}) {
|
|
|
228
370
|
* Tracks the current interaction modality.
|
|
229
371
|
*/
|
|
230
372
|
function createInteractionModality() {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
373
|
+
const [modality, setModality] = createSignal(isServer ? null : currentModalityValue);
|
|
374
|
+
createTrackedEffect(() => {
|
|
375
|
+
if (isServer) return;
|
|
376
|
+
const _s2Cleanups = [];
|
|
234
377
|
setupGlobalFocusEvents();
|
|
235
378
|
const handler = (newModality) => {
|
|
236
379
|
setModality(newModality);
|
|
237
380
|
};
|
|
238
381
|
changeHandlers.add(handler);
|
|
239
|
-
|
|
382
|
+
_s2Cleanups.push(() => {
|
|
240
383
|
changeHandlers.delete(handler);
|
|
241
384
|
});
|
|
385
|
+
return () => {
|
|
386
|
+
for (const c of _s2Cleanups) c();
|
|
387
|
+
};
|
|
242
388
|
});
|
|
243
389
|
return { modality };
|
|
244
390
|
}
|
|
@@ -258,11 +404,10 @@ function addModalityListener(handler) {
|
|
|
258
404
|
* Hook to track whether the user is currently interacting with the keyboard.
|
|
259
405
|
*/
|
|
260
406
|
function useIsKeyboardFocused() {
|
|
261
|
-
if (isServer) return () => false;
|
|
262
407
|
const { modality } = createInteractionModality();
|
|
263
408
|
return () => modality() === "keyboard";
|
|
264
409
|
}
|
|
265
410
|
//#endregion
|
|
266
|
-
export { createInteractionModality as a, isFocusVisible as c,
|
|
411
|
+
export { setEventTarget as _, createInteractionModality as a, isFocusVisible as c, setupGlobalFocusListeners as d, useIsKeyboardFocused as f, isVirtualPointerEvent as g, isVirtualClick as h, createFocusVisibleListener as i, setIgnoreFocusEvent as l, createMouseEvent as m, addWindowFocusTracking as n, getInteractionModality as o, chain as p, createFocusVisible as r, getPointerType as s, addModalityListener as t, setInteractionModality as u };
|
|
267
412
|
|
|
268
413
|
//# sourceMappingURL=createInteractionModality.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInteractionModality.jsx","names":[],"sources":["../../src/interactions/createInteractionModality.ts"],"sourcesContent":["/**\n * createInteractionModality + focus-visible tracking for solidaria\n *\n * Port of @react-aria/interactions useFocusVisible/useInteractionModality.\n * Tracks the current interaction modality (keyboard, pointer, or virtual) and\n * provides focus-visible state and listeners.\n */\n\nimport { type Accessor, createSignal, createEffect, onCleanup } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { getOwnerDocument, getOwnerWindow, isMac, isVirtualClick, openLink } from \"../utils\";\n\nexport type Modality = \"keyboard\" | \"pointer\" | \"virtual\";\nexport type PointerType = \"mouse\" | \"pen\" | \"touch\" | \"keyboard\" | \"virtual\";\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\n\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\n\nexport interface FocusVisibleProps {\n /** Whether the element is a text input. */\n isTextInput?: boolean;\n /** Whether the element will be auto focused. */\n autoFocus?: boolean;\n}\n\nexport interface FocusVisibleResult {\n /** Whether keyboard focus is visible globally. */\n isFocusVisible: Accessor<boolean>;\n}\n\nexport interface InteractionModalityResult {\n /** The current interaction modality. */\n modality: Accessor<Modality | null>;\n}\n\nlet currentModality: Modality | null = null;\nlet currentPointerType: PointerType = \"keyboard\";\nconst changeHandlers = new Set<Handler>();\n\nexport let hasSetupGlobalListeners: Map<\n Window,\n { focus: typeof window.HTMLElement.prototype.focus }\n> = new Map();\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\nlet ignoreFocusEvent = false;\n\nconst FOCUS_VISIBLE_INPUT_KEYS: Record<string, boolean> = {\n Tab: true,\n Escape: true,\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n for (const handler of changeHandlers) {\n handler(modality, e);\n }\n}\n\nfunction isValidKey(e: KeyboardEvent) {\n return !(\n e.metaKey ||\n (!isMac() && e.altKey) ||\n e.ctrlKey ||\n e.key === \"Control\" ||\n e.key === \"Shift\" ||\n e.key === \"Meta\"\n );\n}\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n const isOpening = (openLink as { isOpening?: boolean }).isOpening;\n if (!isOpening && isValidKey(e)) {\n currentModality = \"keyboard\";\n currentPointerType = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = \"pointer\";\n currentPointerType = \"pointerType\" in e ? (e.pointerType as PointerType) : \"mouse\";\n if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n hasEventBeforeFocus = true;\n triggerChangeHandlers(\"pointer\", e);\n }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n if (!e.isTrusted) {\n return;\n }\n\n const isOpening = (openLink as { isOpening?: boolean }).isOpening;\n if (!isOpening && isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n currentModality = \"virtual\";\n currentPointerType = \"virtual\";\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n if (!e.isTrusted || ignoreFocusEvent) {\n return;\n }\n\n const target = e.target as EventTarget | null;\n const targetElement = target && (target as Element).nodeType ? (target as Element) : null;\n const ownerWindow = targetElement ? getOwnerWindow(targetElement) : window;\n const ownerDocument = targetElement ? getOwnerDocument(targetElement) : document;\n\n if (target === ownerWindow || target === ownerDocument) {\n return;\n }\n\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n currentModality = \"virtual\";\n currentPointerType = \"virtual\";\n triggerChangeHandlers(\"virtual\", e);\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n if (ignoreFocusEvent) {\n return;\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\n\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n if (hasSetupGlobalListeners.get(windowObject)) {\n return;\n }\n\n const documentObject = getOwnerDocument(element);\n\n // Programmatic focus() calls shouldn't affect the current input modality, so we\n // patch HTMLElement.prototype.focus to record that an event preceded the focus.\n // Use Reflect.defineProperty (not assignment) so this works even when `focus` is\n // currently a getter-only accessor — e.g. when a test library's setup() has\n // instrumented it. Plain assignment throws in that case; Reflect.defineProperty\n // returns false rather than throwing (and succeeds on the configurable prototype).\n const originalFocus = windowObject.HTMLElement.prototype.focus;\n Reflect.defineProperty(windowObject.HTMLElement.prototype, \"focus\", {\n configurable: true,\n writable: true,\n value: function () {\n hasEventBeforeFocus = true;\n originalFocus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n },\n });\n\n documentObject.addEventListener(\"keydown\", handleKeyboardEvent, true);\n documentObject.addEventListener(\"keyup\", handleKeyboardEvent, true);\n documentObject.addEventListener(\"click\", handleClickEvent, true);\n\n windowObject.addEventListener(\"focus\", handleFocusEvent, true);\n windowObject.addEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof windowObject.PointerEvent !== \"undefined\") {\n documentObject.addEventListener(\"pointerdown\", handlePointerEvent, true);\n documentObject.addEventListener(\"pointermove\", handlePointerEvent, true);\n documentObject.addEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n documentObject.addEventListener(\"mousedown\", handlePointerEvent, true);\n documentObject.addEventListener(\"mousemove\", handlePointerEvent, true);\n documentObject.addEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n windowObject.addEventListener(\n \"beforeunload\",\n () => {\n tearDownWindowFocusTracking(element);\n },\n { once: true },\n );\n\n hasSetupGlobalListeners.set(windowObject, { focus: originalFocus });\n}\n\nfunction tearDownWindowFocusTracking(element?: HTMLElement | null, loadListener?: () => void) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n\n if (loadListener) {\n documentObject.removeEventListener(\"DOMContentLoaded\", loadListener);\n }\n\n if (!hasSetupGlobalListeners.has(windowObject)) {\n return;\n }\n\n const entry = hasSetupGlobalListeners.get(windowObject)!;\n // Mirror the setup path: defineProperty (not assignment) restores the original\n // focus even if it had been replaced with a getter-only accessor.\n Reflect.defineProperty(windowObject.HTMLElement.prototype, \"focus\", {\n configurable: true,\n writable: true,\n value: entry.focus,\n });\n\n documentObject.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n documentObject.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n documentObject.removeEventListener(\"click\", handleClickEvent, true);\n\n windowObject.removeEventListener(\"focus\", handleFocusEvent, true);\n windowObject.removeEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof windowObject.PointerEvent !== \"undefined\") {\n documentObject.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n documentObject.removeEventListener(\"pointermove\", handlePointerEvent, true);\n documentObject.removeEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n documentObject.removeEventListener(\"mousedown\", handlePointerEvent, true);\n documentObject.removeEventListener(\"mousemove\", handlePointerEvent, true);\n documentObject.removeEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners.delete(windowObject);\n}\n\n/**\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n const documentObject = getOwnerDocument(element);\n let loadListener: (() => void) | undefined;\n\n if (documentObject.readyState !== \"loading\") {\n setupGlobalFocusEvents(element);\n } else {\n loadListener = () => {\n setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener(\"DOMContentLoaded\", loadListener);\n }\n\n return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\nexport function setupGlobalFocusListeners(): void {\n addWindowFocusTracking();\n}\n\nif (typeof document !== \"undefined\") {\n addWindowFocusTracking();\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n return currentModality !== \"pointer\";\n}\n\n/**\n * Gets the current interaction modality.\n */\nexport function getInteractionModality(): Modality | null {\n return currentModality;\n}\n\n/**\n * Sets the current interaction modality.\n */\nexport function setInteractionModality(modality: Modality): void {\n currentModality = modality;\n currentPointerType = modality === \"pointer\" ? \"mouse\" : modality;\n triggerChangeHandlers(modality, null);\n}\n\n/**\n * Gets the current pointer type.\n */\nexport function getPointerType(): PointerType {\n return currentPointerType;\n}\n\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent): boolean {\n if (!e) {\n return true;\n }\n\n const target = \"target\" in e ? (e.target as Element | null) : null;\n const ownerDocument = target ? getOwnerDocument(target) : document;\n const ownerWindow = target ? getOwnerWindow(target) : window;\n\n const IHTMLInputElement = ownerWindow.HTMLInputElement;\n const IHTMLTextAreaElement = ownerWindow.HTMLTextAreaElement;\n const IHTMLElement = ownerWindow.HTMLElement;\n const IKeyboardEvent = ownerWindow.KeyboardEvent;\n\n const nonTextInputTypes = new Set([\n \"checkbox\",\n \"radio\",\n \"range\",\n \"color\",\n \"file\",\n \"image\",\n \"button\",\n \"submit\",\n \"reset\",\n ]);\n\n isTextInput =\n isTextInput ||\n (ownerDocument.activeElement instanceof IHTMLInputElement &&\n !nonTextInputTypes.has(ownerDocument.activeElement.type)) ||\n ownerDocument.activeElement instanceof IHTMLTextAreaElement ||\n (ownerDocument.activeElement instanceof IHTMLElement &&\n ownerDocument.activeElement.isContentEditable);\n\n return !(\n isTextInput &&\n modality === \"keyboard\" &&\n e instanceof IKeyboardEvent &&\n !FOCUS_VISIBLE_INPUT_KEYS[e.key]\n );\n}\n\n/**\n * Listens for trigger change and reports if focus is visible.\n */\nexport function createFocusVisibleListener(\n handler: FocusVisibleHandler,\n opts?: { isTextInput?: boolean },\n): () => void {\n setupGlobalFocusEvents();\n const listener: Handler = (modality: Modality, e: HandlerEvent) => {\n if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) {\n return;\n }\n handler(isFocusVisible());\n };\n changeHandlers.add(listener);\n return () => {\n changeHandlers.delete(listener);\n };\n}\n\n/**\n * Manages focus visible state for the page.\n */\nexport function createFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n if (isServer) {\n return { isFocusVisible: () => false };\n }\n\n // autoFocus seeds the initial value once; isTextInput is read inside the effect\n // so it re-subscribes reactively (a top-level destructure would freeze it — the\n // body runs once). Mirrors upstream useFocusVisible's [isTextInput] dep.\n const [isVisible, setIsVisible] = createSignal<boolean>(props.autoFocus || isFocusVisible());\n\n createEffect(() => {\n const cleanup = createFocusVisibleListener(setIsVisible, { isTextInput: props.isTextInput });\n onCleanup(cleanup);\n });\n\n return { isFocusVisible: isVisible };\n}\n\n/**\n * Tracks the current interaction modality.\n */\nexport function createInteractionModality(): InteractionModalityResult {\n if (isServer) {\n return {\n modality: () => null,\n };\n }\n\n const [modality, setModality] = createSignal<Modality | null>(currentModality);\n\n createEffect(() => {\n setupGlobalFocusEvents();\n const handler: Handler = (newModality: Modality) => {\n setModality(newModality);\n };\n changeHandlers.add(handler);\n onCleanup(() => {\n changeHandlers.delete(handler);\n });\n });\n\n return {\n modality,\n };\n}\n\n/**\n * Adds a listener for modality changes.\n */\nexport function addModalityListener(handler: (modality: Modality) => void): () => void {\n const wrapped: Handler = (modality) => {\n handler(modality);\n };\n changeHandlers.add(wrapped);\n return () => {\n changeHandlers.delete(wrapped);\n };\n}\n\n/**\n * Hook to track whether the user is currently interacting with the keyboard.\n */\nexport function useIsKeyboardFocused(): Accessor<boolean> {\n if (isServer) {\n return () => false;\n }\n\n const { modality } = createInteractionModality();\n return () => modality() === \"keyboard\";\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createInteractionModality.jsx","names":[],"sources":["../../src/utils/events.ts","../../src/interactions/createInteractionModality.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/*\n * Copyright 2022 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\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/utils.ts\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/utils/chain.ts\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/utils/isVirtualEvent.ts\n\n/**\n * Event utilities for detecting virtual clicks and event handling.\n * Based on these pinned React Aria sources:\n * - packages/react-aria/src/utils/isVirtualEvent.ts\n * - packages/react-aria/src/utils/chain.ts\n * - packages/react-aria/src/interactions/utils.ts\n *\n * createMouseEvent is a local event adapter.\n */\n\nimport { isAndroid } from \"./platform\";\n\n/**\n * Checks if a click event was generated from a virtual source like a screen reader.\n * Virtual clicks typically have detail of 0 and may have zero coordinates.\n */\nexport function isVirtualClick(event: MouseEvent | PointerEvent): boolean {\n // JAWS/NVDA with Firefox.\n if ((event as PointerEvent).pointerType === \"\" && event.isTrusted) {\n return true;\n }\n\n // Android TalkBack's detail value varies depending on the event listener providing the event.\n // If pointerType is defined, event is from a click listener.\n if (isAndroid() && (event as PointerEvent).pointerType) {\n return event.type === \"click\" && (event as MouseEvent).buttons === 1;\n }\n\n return event.detail === 0 && !(event as PointerEvent).pointerType;\n}\n\n/**\n * Checks if a pointer event was generated by a virtual source.\n * iOS VoiceOver fires pointer events with incorrect coordinates.\n * These events have zero width/height.\n */\nexport function isVirtualPointerEvent(event: PointerEvent): boolean {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return (\n (!isAndroid() && event.width === 0 && event.height === 0) ||\n (isAndroid() &&\n event.width === 1 &&\n event.height === 1 &&\n event.pressure === 0 &&\n event.detail === 0 &&\n event.pointerType === \"mouse\")\n );\n}\n\n/**\n * Creates a synthetic mouse event for programmatic clicking.\n */\nexport function createMouseEvent(type: string, nativeEvent?: Event): MouseEvent {\n const init: MouseEventInit = {\n bubbles: true,\n cancelable: true,\n view: window,\n };\n\n // Copy properties from the native event if provided\n if (nativeEvent) {\n const e = nativeEvent as MouseEvent;\n init.screenX = e.screenX;\n init.screenY = e.screenY;\n init.clientX = e.clientX;\n init.clientY = e.clientY;\n init.ctrlKey = e.ctrlKey;\n init.shiftKey = e.shiftKey;\n init.altKey = e.altKey;\n init.metaKey = e.metaKey;\n init.button = e.button;\n init.buttons = e.buttons;\n init.relatedTarget = e.relatedTarget;\n }\n\n return new MouseEvent(type, init);\n}\n\n/**\n * Creates a chain of event handlers that calls each in sequence.\n */\nexport function chain<T extends (...args: any[]) => any>(\n ...callbacks: (T | undefined | null)[]\n): T {\n return ((...args: Parameters<T>) => {\n for (const callback of callbacks) {\n if (typeof callback === \"function\") {\n callback(...args);\n }\n }\n }) as T;\n}\n\n/**\n * Sets the target property on an event object.\n * Used for synthetic events where target needs to be modified.\n */\nexport function setEventTarget<T extends Event>(event: T, target: EventTarget): void {\n Object.defineProperty(event, \"target\", {\n value: target,\n writable: false,\n configurable: true,\n });\n Object.defineProperty(event, \"currentTarget\", {\n value: target,\n writable: false,\n configurable: true,\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\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/useFocusVisible.ts\n\n/**\n * createInteractionModality + focus-visible tracking for solidaria\n *\n * Port of @react-aria/interactions useFocusVisible/useInteractionModality.\n * Tracks the current interaction modality (keyboard, pointer, or virtual) and\n * provides focus-visible state and listeners.\n */\n\nimport { createSignal, createTrackedEffect } from \"solid-js\";\nimport type { Accessor } from \"solid-js\";\nimport { isServer } from \"@solidjs/web\";\nimport { getEventTarget, getOwnerDocument, getOwnerWindow, openLink } from \"../utils/dom\";\nimport { isVirtualClick } from \"../utils/events\";\nimport { isMac } from \"../utils/platform\";\n\nexport type Modality = \"keyboard\" | \"pointer\" | \"virtual\";\nexport type PointerType = \"mouse\" | \"pen\" | \"touch\" | \"keyboard\" | \"virtual\";\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\n\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\n\nexport interface FocusVisibleProps {\n /** Whether the element is a text input. */\n isTextInput?: boolean;\n /** Whether the element will be auto focused. */\n autoFocus?: boolean;\n}\n\nexport interface FocusVisibleResult {\n /** Whether keyboard focus is visible globally. */\n isFocusVisible: Accessor<boolean>;\n}\n\nexport interface InteractionModalityResult {\n /** The current interaction modality. */\n modality: Accessor<Modality | null>;\n}\n\n// react-aria keeps `currentModality` in a module `let` that the same turn can\n// read (useFocusVisible.ts). `currentModalityValue` is that let: every read\n// returns it. The signal is a notification counter, not a copy of the word.\n// `writeModality` updates the let. `publishModality` updates the let and bumps\n// the counter. Bump where upstream calls `triggerChangeHandlers`\n// (keyboard, pointerdown/mousedown, virtual focus, setInteractionModality)\n// and on handleClickEvent's virtual write. That click handler\n// (useFocusVisible.ts:105-111) stays silent because React re-renders after\n// the click; #612 exists because Solid must notify instead. pointermove and\n// pointerup write the let only. Listener notification stays on\n// `triggerChangeHandlers`. `ownedWrite`: a module DOM listener and\n// `setInteractionModality` can write re-entrantly from an owned scope.\n// `untrack` stops tracking; it does not exempt the write.\nlet currentModalityValue: Modality | null = null;\nconst [modalityEpoch, bumpModalityEpoch] = createSignal(0, {\n ownedWrite: true,\n});\nlet currentPointerType: PointerType = \"keyboard\";\n\nfunction writeModality(next: Modality): void {\n currentModalityValue = next;\n}\n\nfunction publishModality(next: Modality): void {\n currentModalityValue = next;\n bumpModalityEpoch((n) => n + 1);\n}\n\nconst changeHandlers = new Set<Handler>();\n\nexport let hasSetupGlobalListeners: Map<\n Window,\n { focus: typeof window.HTMLElement.prototype.focus }\n> = new Map();\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n/** @private Set by `preventFocus` so programmatic refocus is not treated as a modality change. */\nexport let ignoreFocusEvent = false;\n\n/** @private */\nexport function setIgnoreFocusEvent(value: boolean): void {\n ignoreFocusEvent = value;\n}\n\nconst FOCUS_VISIBLE_INPUT_KEYS: Record<string, boolean> = {\n Tab: true,\n Escape: true,\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n for (const handler of changeHandlers) {\n handler(modality, e);\n }\n}\n\nfunction isValidKey(e: KeyboardEvent) {\n return !(\n e.metaKey ||\n (!isMac() && e.altKey) ||\n e.ctrlKey ||\n e.key === \"Control\" ||\n e.key === \"Shift\" ||\n e.key === \"Meta\"\n );\n}\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n const isOpening = (openLink as { isOpening?: boolean }).isOpening;\n if (!isOpening && isValidKey(e)) {\n publishModality(\"keyboard\");\n currentPointerType = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentPointerType = \"pointerType\" in e ? (e.pointerType as PointerType) : \"mouse\";\n // useFocusVisible.ts:94-101. Move and up write the let. Down is the notify.\n if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n publishModality(\"pointer\");\n hasEventBeforeFocus = true;\n triggerChangeHandlers(\"pointer\", e);\n } else {\n writeModality(\"pointer\");\n }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n // react-aria 3.52.0 useFocusVisible.ts:105-111. No isTrusted guard and no\n // listener notification: keyboards, AT, and element.click() are virtual\n // clicks (detail === 0). React re-renders after the click, so that silent\n // write is enough there. Solid must notify tracked readers instead (#612).\n const isOpening = (openLink as { isOpening?: boolean }).isOpening;\n if (!isOpening && isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n publishModality(\"virtual\");\n currentPointerType = \"virtual\";\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n if (ignoreFocusEvent) {\n return;\n }\n\n const target = getEventTarget(e);\n const ownerWindow = getOwnerWindow(target);\n const ownerDocument = getOwnerDocument(target);\n\n // When the window regains focus, the browser restores focus to the element that was focused\n // before, firing a focus event the user did not initiate. handleWindowBlur sets\n // hasBlurredWindowRecently so restored focus doesn't switch to virtual modality below, but\n // Safari fires the window/element focus pair twice when returning to a tab or app and the first\n // element focus event clears the flag, so re-arm it whenever the window itself is focused.\n // Like handleWindowBlur, this intentionally doesn't check isTrusted.\n if (target === ownerWindow) {\n hasBlurredWindowRecently = true;\n return;\n }\n\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (target === ownerDocument || !e.isTrusted) {\n return;\n }\n\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n publishModality(\"virtual\");\n currentPointerType = \"virtual\";\n triggerChangeHandlers(\"virtual\", e);\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n if (ignoreFocusEvent) {\n return;\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\n\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n if (hasSetupGlobalListeners.get(windowObject)) {\n return;\n }\n\n const documentObject = getOwnerDocument(element);\n\n // Programmatic focus() calls shouldn't affect the current input modality, so we\n // patch HTMLElement.prototype.focus to record that an event preceded the focus.\n // Use Reflect.defineProperty (not assignment) so this works even when `focus` is\n // currently a getter-only accessor — e.g. when a test library's setup() has\n // instrumented it. Plain assignment throws in that case; Reflect.defineProperty\n // returns false rather than throwing (and succeeds on the configurable prototype).\n const originalFocus = windowObject.HTMLElement.prototype.focus;\n Reflect.defineProperty(windowObject.HTMLElement.prototype, \"focus\", {\n configurable: true,\n writable: true,\n value: function () {\n hasEventBeforeFocus = true;\n originalFocus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n },\n });\n\n documentObject.addEventListener(\"keydown\", handleKeyboardEvent, true);\n documentObject.addEventListener(\"keyup\", handleKeyboardEvent, true);\n documentObject.addEventListener(\"click\", handleClickEvent, true);\n\n windowObject.addEventListener(\"focus\", handleFocusEvent, true);\n windowObject.addEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof windowObject.PointerEvent !== \"undefined\") {\n documentObject.addEventListener(\"pointerdown\", handlePointerEvent, true);\n documentObject.addEventListener(\"pointermove\", handlePointerEvent, true);\n documentObject.addEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n documentObject.addEventListener(\"mousedown\", handlePointerEvent, true);\n documentObject.addEventListener(\"mousemove\", handlePointerEvent, true);\n documentObject.addEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n windowObject.addEventListener(\n \"beforeunload\",\n () => {\n tearDownWindowFocusTracking(element);\n },\n { once: true },\n );\n\n hasSetupGlobalListeners.set(windowObject, { focus: originalFocus });\n}\n\nfunction tearDownWindowFocusTracking(element?: HTMLElement | null, loadListener?: () => void) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n\n if (loadListener) {\n documentObject.removeEventListener(\"DOMContentLoaded\", loadListener);\n }\n\n if (!hasSetupGlobalListeners.has(windowObject)) {\n return;\n }\n\n const entry = hasSetupGlobalListeners.get(windowObject)!;\n // Mirror the setup path: defineProperty (not assignment) restores the original\n // focus even if it had been replaced with a getter-only accessor.\n Reflect.defineProperty(windowObject.HTMLElement.prototype, \"focus\", {\n configurable: true,\n writable: true,\n value: entry.focus,\n });\n\n documentObject.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n documentObject.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n documentObject.removeEventListener(\"click\", handleClickEvent, true);\n\n windowObject.removeEventListener(\"focus\", handleFocusEvent, true);\n windowObject.removeEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof windowObject.PointerEvent !== \"undefined\") {\n documentObject.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n documentObject.removeEventListener(\"pointermove\", handlePointerEvent, true);\n documentObject.removeEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n documentObject.removeEventListener(\"mousedown\", handlePointerEvent, true);\n documentObject.removeEventListener(\"mousemove\", handlePointerEvent, true);\n documentObject.removeEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners.delete(windowObject);\n}\n\n/**\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n const documentObject = getOwnerDocument(element);\n let loadListener: (() => void) | undefined;\n\n if (documentObject.readyState !== \"loading\") {\n setupGlobalFocusEvents(element);\n } else {\n loadListener = () => {\n setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener(\"DOMContentLoaded\", loadListener);\n }\n\n return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\nexport function setupGlobalFocusListeners(): void {\n addWindowFocusTracking();\n}\n\nif (typeof document !== \"undefined\") {\n addWindowFocusTracking();\n}\n\nfunction focusVisibleSnapshot(): boolean {\n return currentModalityValue !== \"pointer\";\n}\n\n/**\n * If true, keyboard focus is visible. The only tracked read of modality:\n * useOption's render predicate re-reads this on every render.\n */\nexport function isFocusVisible(): boolean {\n modalityEpoch();\n return focusVisibleSnapshot();\n}\n\n/**\n * Gets the current interaction modality.\n * The module let, not the signal. An effect that calls this does not re-run\n * when modality changes; upstream's query is a plain variable.\n */\nexport function getInteractionModality(): Modality | null {\n return currentModalityValue;\n}\n\n/**\n * Sets the current interaction modality.\n */\nexport function setInteractionModality(modality: Modality): void {\n publishModality(modality);\n currentPointerType = modality === \"pointer\" ? \"mouse\" : modality;\n triggerChangeHandlers(modality, null);\n}\n\n/**\n * Gets the current pointer type. Separate from modality; this let is never\n * the modality signal.\n */\nexport function getPointerType(): PointerType {\n return currentPointerType;\n}\n\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent): boolean {\n if (!e) {\n return true;\n }\n\n const target = \"target\" in e ? (e.target as Element | null) : null;\n const ownerDocument = target ? getOwnerDocument(target) : document;\n const ownerWindow = target ? getOwnerWindow(target) : window;\n\n const IHTMLInputElement = ownerWindow.HTMLInputElement;\n const IHTMLTextAreaElement = ownerWindow.HTMLTextAreaElement;\n const IHTMLElement = ownerWindow.HTMLElement;\n const IKeyboardEvent = ownerWindow.KeyboardEvent;\n\n const nonTextInputTypes = new Set([\n \"checkbox\",\n \"radio\",\n \"range\",\n \"color\",\n \"file\",\n \"image\",\n \"button\",\n \"submit\",\n \"reset\",\n ]);\n\n isTextInput =\n isTextInput ||\n (ownerDocument.activeElement instanceof IHTMLInputElement &&\n !nonTextInputTypes.has(ownerDocument.activeElement.type)) ||\n ownerDocument.activeElement instanceof IHTMLTextAreaElement ||\n (ownerDocument.activeElement instanceof IHTMLElement &&\n ownerDocument.activeElement.isContentEditable);\n\n return !(\n isTextInput &&\n modality === \"keyboard\" &&\n e instanceof IKeyboardEvent &&\n !FOCUS_VISIBLE_INPUT_KEYS[e.key]\n );\n}\n\n/**\n * Listens for trigger change and reports if focus is visible.\n */\nexport function createFocusVisibleListener(\n handler: FocusVisibleHandler,\n opts?: { isTextInput?: boolean; enabled?: boolean },\n): () => void {\n setupGlobalFocusEvents();\n if (opts?.enabled === false) {\n return () => {};\n }\n const listener: Handler = (modality: Modality, e: HandlerEvent) => {\n if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) {\n return;\n }\n // Upstream's listener read is a plain variable (useFocusVisible.ts:424); the listener runs synchronously inside setInteractionModality, which an effect may call.\n handler(focusVisibleSnapshot());\n };\n changeHandlers.add(listener);\n return () => {\n changeHandlers.delete(listener);\n };\n}\n\n/**\n * Manages focus visible state for the page.\n */\nexport function createFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n // autoFocus seeds the initial value once; isTextInput is read inside the effect\n // so it re-subscribes reactively (a top-level destructure would freeze it — the\n // body runs once). Mirrors upstream useFocusVisible's [isTextInput] dep.\n // The let, not isFocusVisible(). During hydration that signal can still hold\n // an unflushed write; reading it markLateLinker's the computing owner\n // (REACTIVE_MISSED_WAKE) and the surrounding memo re-runs, so the second\n // span misses its hydration key. The let is the same answer, written\n // synchronously.\n const [isVisible, setIsVisible] = createSignal<boolean>(\n isServer ? false : props.autoFocus || focusVisibleSnapshot(),\n );\n\n // Reserve the effect owner during SSR too; its callback runs only on client.\n createTrackedEffect(() => {\n const _s2Cleanups: Array<() => void> = [];\n\n const cleanup = createFocusVisibleListener(setIsVisible, { isTextInput: props.isTextInput });\n _s2Cleanups.push(cleanup);\n\n return () => {\n for (const c of _s2Cleanups) c();\n };\n });\n\n return { isFocusVisible: isVisible };\n}\n\n/**\n * Tracks the current interaction modality.\n */\nexport function createInteractionModality(): InteractionModalityResult {\n const [modality, setModality] = createSignal<Modality | null>(\n isServer ? null : currentModalityValue,\n );\n\n // Register the owner on both sides; only the browser subscribes to events.\n createTrackedEffect(() => {\n if (isServer) return;\n const _s2Cleanups: Array<() => void> = [];\n\n setupGlobalFocusEvents();\n const handler: Handler = (newModality: Modality) => {\n setModality(newModality);\n };\n changeHandlers.add(handler);\n _s2Cleanups.push(() => {\n changeHandlers.delete(handler);\n });\n\n return () => {\n for (const c of _s2Cleanups) c();\n };\n });\n\n return {\n modality,\n };\n}\n\n/**\n * Adds a listener for modality changes.\n */\nexport function addModalityListener(handler: (modality: Modality) => void): () => void {\n const wrapped: Handler = (modality) => {\n handler(modality);\n };\n changeHandlers.add(wrapped);\n return () => {\n changeHandlers.delete(wrapped);\n };\n}\n\n/**\n * Hook to track whether the user is currently interacting with the keyboard.\n */\nexport function useIsKeyboardFocused(): Accessor<boolean> {\n const { modality } = createInteractionModality();\n return () => modality() === \"keyboard\";\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/useKeyboard.ts
|
|
13
|
+
/*
|
|
14
|
+
* Copyright 2025 Adobe. All rights reserved.
|
|
15
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
16
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
17
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
20
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
21
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
22
|
+
* governing permissions and limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/interactions/createKeyboardShortcutHandler.ts
|
|
25
|
+
import { t as access } from "./reactivity.js";
|
|
26
|
+
import { F as isMac, r as eventPathContains } from "./dom.js";
|
|
27
|
+
import { p as chain } from "./createInteractionModality.js";
|
|
28
|
+
//#region src/interactions/createKeyboardShortcutHandler.ts
|
|
29
|
+
/**
|
|
30
|
+
* Keyboard shortcut parsing and exact-match dispatch.
|
|
31
|
+
*
|
|
32
|
+
* Port of React Aria's createKeyboardShortcutHandler.
|
|
33
|
+
*/
|
|
34
|
+
const modifierNames = /* @__PURE__ */ new Set([
|
|
35
|
+
"shift",
|
|
36
|
+
"alt",
|
|
37
|
+
"control",
|
|
38
|
+
"meta",
|
|
39
|
+
"mod"
|
|
40
|
+
]);
|
|
41
|
+
const canonicalModifierOrder = [
|
|
42
|
+
"Alt",
|
|
43
|
+
"Control",
|
|
44
|
+
"Meta",
|
|
45
|
+
"Shift"
|
|
46
|
+
];
|
|
47
|
+
function modifierSetFromParsed(parsed) {
|
|
48
|
+
const modifiers = /* @__PURE__ */ new Set();
|
|
49
|
+
if (parsed.alt) modifiers.add("Alt");
|
|
50
|
+
if (parsed.shift) modifiers.add("Shift");
|
|
51
|
+
if (parsed.ctrl) modifiers.add("Control");
|
|
52
|
+
if (parsed.meta) modifiers.add("Meta");
|
|
53
|
+
if (parsed.mod) modifiers.add(isMac() ? "Meta" : "Control");
|
|
54
|
+
return modifiers;
|
|
55
|
+
}
|
|
56
|
+
function modifierSetFromEvent(event) {
|
|
57
|
+
const modifiers = /* @__PURE__ */ new Set();
|
|
58
|
+
if (event.altKey) modifiers.add("Alt");
|
|
59
|
+
if (event.ctrlKey) modifiers.add("Control");
|
|
60
|
+
if (event.metaKey) modifiers.add("Meta");
|
|
61
|
+
if (event.shiftKey) modifiers.add("Shift");
|
|
62
|
+
return modifiers;
|
|
63
|
+
}
|
|
64
|
+
function sortedModifierTokens(modifiers) {
|
|
65
|
+
return canonicalModifierOrder.filter((name) => modifiers.has(name));
|
|
66
|
+
}
|
|
67
|
+
/** Parses a shortcut. Modifier names are case-insensitive and order-independent. */
|
|
68
|
+
function parseKeyboardShortcut(specification) {
|
|
69
|
+
const parsed = specification.split("+").reduce((result, part) => {
|
|
70
|
+
const lowerPart = part.toLowerCase();
|
|
71
|
+
if (modifierNames.has(lowerPart)) {
|
|
72
|
+
if (lowerPart === "shift") result.shift = true;
|
|
73
|
+
else if (lowerPart === "alt") result.alt = true;
|
|
74
|
+
else if (lowerPart === "control") result.ctrl = true;
|
|
75
|
+
else if (lowerPart === "meta") result.meta = true;
|
|
76
|
+
else if (lowerPart === "mod") result.mod = true;
|
|
77
|
+
} else result.key = part;
|
|
78
|
+
return result;
|
|
79
|
+
}, {
|
|
80
|
+
shift: false,
|
|
81
|
+
alt: false,
|
|
82
|
+
ctrl: false,
|
|
83
|
+
meta: false,
|
|
84
|
+
mod: false,
|
|
85
|
+
key: ""
|
|
86
|
+
});
|
|
87
|
+
if (parsed.key === "") throw new Error(`Invalid keyboard shortcut: "${specification}". Must include exactly one non-modifier key (e.g. "a", "Enter", "ArrowDown"). Combine any of Shift, Alt, Ctrl, Meta, and Mod.`);
|
|
88
|
+
return parsed;
|
|
89
|
+
}
|
|
90
|
+
function normalizeEventKey(key) {
|
|
91
|
+
return key.toLowerCase();
|
|
92
|
+
}
|
|
93
|
+
const keyAliases = {
|
|
94
|
+
space: " ",
|
|
95
|
+
esc: "escape",
|
|
96
|
+
del: "delete",
|
|
97
|
+
ins: "insert",
|
|
98
|
+
left: "arrowleft",
|
|
99
|
+
right: "arrowright",
|
|
100
|
+
up: "arrowup",
|
|
101
|
+
down: "arrowdown",
|
|
102
|
+
pageup: "pageup",
|
|
103
|
+
pagedown: "pagedown"
|
|
104
|
+
};
|
|
105
|
+
function canonicalKeyFromSpecification(key) {
|
|
106
|
+
const normalizedKey = normalizeEventKey(key);
|
|
107
|
+
return keyAliases[normalizedKey] ?? normalizedKey;
|
|
108
|
+
}
|
|
109
|
+
function canonicalKeyboardShortcut(parsed) {
|
|
110
|
+
const modifiers = sortedModifierTokens(modifierSetFromParsed(parsed));
|
|
111
|
+
const key = canonicalKeyFromSpecification(parsed.key);
|
|
112
|
+
return modifiers.length > 0 ? `${modifiers.join("+")}+${key}` : key;
|
|
113
|
+
}
|
|
114
|
+
function keyboardEventToCanonicalShortcut(event) {
|
|
115
|
+
const modifiers = sortedModifierTokens(modifierSetFromEvent(event));
|
|
116
|
+
const key = normalizeEventKey(event.key);
|
|
117
|
+
return modifiers.length > 0 ? `${modifiers.join("+")}+${key}` : key;
|
|
118
|
+
}
|
|
119
|
+
/** Returns a keydown handler that runs an action for an exact shortcut match. */
|
|
120
|
+
function createKeyboardShortcutHandler(bindings) {
|
|
121
|
+
const actions = /* @__PURE__ */ new Map();
|
|
122
|
+
for (const [specification, action] of Object.entries(bindings)) actions.set(canonicalKeyboardShortcut(parseKeyboardShortcut(specification)), action);
|
|
123
|
+
return (event) => {
|
|
124
|
+
const action = actions.get(keyboardEventToCanonicalShortcut(event));
|
|
125
|
+
let result = action?.(event);
|
|
126
|
+
if (result === void 0 && action !== void 0) result = {
|
|
127
|
+
shouldContinuePropagation: false,
|
|
128
|
+
shouldPreventDefault: true
|
|
129
|
+
};
|
|
130
|
+
else if (typeof result === "boolean") result = {
|
|
131
|
+
shouldContinuePropagation: !result,
|
|
132
|
+
shouldPreventDefault: result
|
|
133
|
+
};
|
|
134
|
+
if (result?.shouldPreventDefault) event.preventDefault();
|
|
135
|
+
if (!action || result?.shouldContinuePropagation) event.continuePropagation();
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region src/interactions/createKeyboard.ts
|
|
140
|
+
/**
|
|
141
|
+
* Wraps a keyboard event handler to make stopPropagation the default,
|
|
142
|
+
* and support continuePropagation instead.
|
|
143
|
+
*/
|
|
144
|
+
function createEventHandler(handler) {
|
|
145
|
+
if (!handler) return;
|
|
146
|
+
return (e) => {
|
|
147
|
+
let shouldStopPropagation = true;
|
|
148
|
+
const parentContinuePropagation = e.continuePropagation;
|
|
149
|
+
handler(Object.assign(e, { continuePropagation() {
|
|
150
|
+
shouldStopPropagation = false;
|
|
151
|
+
if (typeof parentContinuePropagation === "function") parentContinuePropagation.call(e);
|
|
152
|
+
} }));
|
|
153
|
+
if (shouldStopPropagation) e.stopPropagation();
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Handles keyboard interactions for a focusable element.
|
|
158
|
+
*
|
|
159
|
+
* Based on react-aria's useKeyboard but adapted for SolidJS.
|
|
160
|
+
*/
|
|
161
|
+
function createKeyboard(props = {}) {
|
|
162
|
+
let onKeyDown;
|
|
163
|
+
let onKeyUp;
|
|
164
|
+
if (props.shortcuts) {
|
|
165
|
+
const shortcutHandler = createKeyboardShortcutHandler(props.shortcuts);
|
|
166
|
+
const shortcutOnKeyDown = createEventHandler((event) => {
|
|
167
|
+
if (!eventPathContains(event.currentTarget, event)) {
|
|
168
|
+
event.continuePropagation();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (event.repeat && !(props.allowRepeats ?? false) || event.isComposing && !(props.allowComposing ?? false)) {
|
|
172
|
+
event.continuePropagation();
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
shortcutHandler(event);
|
|
176
|
+
});
|
|
177
|
+
const shortcutOnKeyUp = createEventHandler((event) => {
|
|
178
|
+
if (!eventPathContains(event.currentTarget, event)) {
|
|
179
|
+
event.continuePropagation();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (event.repeat && !(props.allowRepeats ?? false) || event.isComposing && !(props.allowComposing ?? false)) {
|
|
183
|
+
event.continuePropagation();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
event.continuePropagation();
|
|
187
|
+
});
|
|
188
|
+
onKeyDown = props.onKeyDown ? chain(props.onKeyDown, shortcutOnKeyDown) : shortcutOnKeyDown;
|
|
189
|
+
onKeyUp = props.onKeyUp ? chain(props.onKeyUp, shortcutOnKeyUp) : shortcutOnKeyUp;
|
|
190
|
+
} else {
|
|
191
|
+
onKeyDown = createEventHandler(props.onKeyDown);
|
|
192
|
+
onKeyUp = createEventHandler(props.onKeyUp);
|
|
193
|
+
}
|
|
194
|
+
return { keyboardProps: {
|
|
195
|
+
get onKeyDown() {
|
|
196
|
+
return access(props.isDisabled) ? void 0 : onKeyDown;
|
|
197
|
+
},
|
|
198
|
+
get onKeyUp() {
|
|
199
|
+
return access(props.isDisabled) ? void 0 : onKeyUp;
|
|
200
|
+
}
|
|
201
|
+
} };
|
|
202
|
+
}
|
|
203
|
+
//#endregion
|
|
204
|
+
export { createKeyboard as t };
|
|
205
|
+
|
|
206
|
+
//# sourceMappingURL=createKeyboard.js.map
|