@astryxdesign/core 0.7.7 → 0.7.8-canary.0588a13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlertDialog/AlertDialog.d.ts +4 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +46 -6
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +11 -3
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +1 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +1 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +55 -18
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
- package/dist/BottomSheet/bottomSheetStack.js +1 -1
- package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +16 -1
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +17 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +18 -22
- package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
- package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
- package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +2 -10
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
- package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +2 -0
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +6 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -1
- package/dist/Chat/useChatDictation.d.ts.map +1 -1
- package/dist/Chat/useChatDictation.js +2 -0
- package/dist/Chat/useChatNewMessages.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +2 -0
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +3 -0
- package/dist/Chat/useTriggerMenu.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +17 -12
- package/dist/CheckboxList/CheckboxList.d.ts +20 -2
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +12 -4
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListContext.js +2 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +14 -2
- package/dist/CheckboxList/requiredGroup.d.ts +22 -0
- package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
- package/dist/CheckboxList/requiredGroup.js +52 -0
- package/dist/CodeBlock/CodeBlock.d.ts +10 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +28 -11
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +2 -0
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -4
- package/dist/ContextMenu/ContextMenu.js +2 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -2
- package/dist/DateInput/PickerWheel.d.ts +19 -0
- package/dist/DateInput/PickerWheel.d.ts.map +1 -0
- package/dist/DateInput/PickerWheel.js +646 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +9 -30
- package/dist/DateInput/Wheel.d.ts +18 -37
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +133 -120
- package/dist/DateInput/datePickerTouch.d.ts +13 -0
- package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
- package/dist/DateInput/datePickerTouch.js +14 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
- package/dist/DateInput/useOwnScrollGesture.js +16 -3
- package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
- package/dist/DateInput/usePointerDragScroll.js +2 -0
- package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
- package/dist/DateInput/useScrollSettle.js +3 -0
- package/dist/DateInput/useWheelListbox.d.ts +59 -0
- package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
- package/dist/DateInput/useWheelListbox.js +88 -0
- package/dist/DateInput/wheelOptions.d.ts +94 -0
- package/dist/DateInput/wheelOptions.d.ts.map +1 -0
- package/dist/DateInput/wheelOptions.js +110 -0
- package/dist/DateInput/wheelPhysics.d.ts +127 -0
- package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
- package/dist/DateInput/wheelPhysics.js +341 -0
- package/dist/DateInput/wheelStrip.d.ts +92 -0
- package/dist/DateInput/wheelStrip.d.ts.map +1 -0
- package/dist/DateInput/wheelStrip.js +258 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -32
- package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
- package/dist/Drawer/useDrawerDialogPresence.js +3 -0
- package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
- package/dist/DropdownMenu/useMenuOverflow.js +5 -0
- package/dist/Field/Field.js +2 -2
- package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
- package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
- package/dist/FormLayout/FormLayout.d.ts +5 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.d.ts +6 -4
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +48 -3
- package/dist/HoverCard/useHoverCard.d.ts +5 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +26 -34
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +20 -3
- package/dist/InfoTip/InfoTip.d.ts +5 -5
- package/dist/InfoTip/InfoTip.d.ts.map +1 -1
- package/dist/InfoTip/InfoTip.js +58 -19
- package/dist/Item/useSwipeAction.d.ts.map +1 -1
- package/dist/Item/useSwipeAction.js +3 -0
- package/dist/Layer/modalOutlet.d.ts.map +1 -1
- package/dist/Layer/modalOutlet.js +2 -0
- package/dist/Layer/outsidePress.d.ts.map +1 -1
- package/dist/Layer/outsidePress.js +1 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +4 -1
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +3 -0
- package/dist/Layer/useTouchTrigger.d.ts +13 -7
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +20 -6
- package/dist/Layout/index.d.ts +1 -1
- package/dist/Layout/index.d.ts.map +1 -1
- package/dist/Layout/index.js +1 -1
- package/dist/Layout/layoutReset.js +1 -1
- package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
- package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
- package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
- package/dist/Layout/padding.stylex.d.ts +5 -129
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +9 -143
- package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
- package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
- package/dist/Layout/paddingStyles.stylex.js +99 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +20 -1
- package/dist/MobileNav/MobileNav.d.ts +3 -2
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +10 -26
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +2 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +2 -1
- package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromDOM.js +3 -0
- package/dist/Outline/useScrollSpy.d.ts.map +1 -1
- package/dist/Outline/useScrollSpy.js +3 -0
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -0
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +7 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -0
- package/dist/Popover/usePopover.js +2 -2
- package/dist/PowerSearch/PowerSearch.d.ts +41 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +441 -134
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
- package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +3 -2
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
- package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +31 -23
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +161 -0
- package/dist/PowerSearch/index.d.ts +1 -1
- package/dist/PowerSearch/index.d.ts.map +1 -1
- package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchDateZone.js +57 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
- package/dist/PowerSearch/types.d.ts +8 -1
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.js +2 -0
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +3 -2
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +5 -3
- package/dist/Resizable/ResizeHandle.d.ts +2 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +116 -92
- package/dist/Resizable/createResizable.d.ts +199 -0
- package/dist/Resizable/createResizable.d.ts.map +1 -0
- package/dist/Resizable/createResizable.js +733 -0
- package/dist/Resizable/separatorAttributes.d.ts +45 -0
- package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
- package/dist/Resizable/separatorAttributes.js +35 -0
- package/dist/Resizable/useResizable.d.ts +3 -3
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +252 -459
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
- package/dist/SelectableCard/SelectableCard.d.ts +2 -0
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +36 -11
- package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
- package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
- package/dist/SelectableCard/selectableCardInput.js +20 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +7 -9
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +36 -5
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +16 -11
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +60 -58
- package/dist/Stepper/Stepper.d.ts.map +1 -1
- package/dist/Stepper/Stepper.js +10 -15
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +4 -10
- package/dist/Switch/useSwitchTouch.js +4 -4
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +29 -8
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +2 -1
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +12 -8
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +2 -0
- package/dist/TimeInput/TimeWheels.d.ts +32 -0
- package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
- package/dist/TimeInput/TimeWheels.js +144 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +63 -116
- package/dist/TimeInput/timeWheelRules.d.ts +124 -0
- package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
- package/dist/TimeInput/timeWheelRules.js +277 -0
- package/dist/Timer/Timer.d.ts.map +1 -1
- package/dist/Timer/Timer.js +2 -0
- package/dist/Timestamp/Timestamp.js +1 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +1 -23
- package/dist/Toast/Toast.d.ts +11 -1
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +25 -15
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +97 -34
- package/dist/Toast/types.d.ts +9 -3
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +1 -0
- package/dist/Tokenizer/Tokenizer.d.ts +44 -46
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +20 -21
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.d.ts +2 -23
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +5 -29
- package/dist/Tooltip/useTooltip.d.ts +23 -30
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +200 -108
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +27 -18
- package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/animator/createAnimator.d.ts +98 -0
- package/dist/animator/createAnimator.d.ts.map +1 -0
- package/dist/animator/createAnimator.js +259 -0
- package/dist/astryx.css +53 -8
- package/dist/gestures/GestureHost.d.ts +16 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +4 -1
- package/dist/gestures/PressTracker.d.ts.map +1 -1
- package/dist/gestures/PressTracker.js +4 -3
- package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
- package/dist/hooks/ModalAnnounceProvider.js +1 -0
- package/dist/hooks/actionGroupTracker.d.ts +4 -1
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
- package/dist/hooks/actionGroupTracker.js +18 -7
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/longPressDetector.d.ts +66 -0
- package/dist/hooks/longPressDetector.d.ts.map +1 -0
- package/dist/hooks/longPressDetector.js +200 -0
- package/dist/hooks/pressGroupContext.d.ts +6 -0
- package/dist/hooks/pressGroupContext.d.ts.map +1 -0
- package/dist/hooks/pressGroupContext.js +20 -0
- package/dist/hooks/rootScrollStyles.d.ts +48 -0
- package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
- package/dist/hooks/rootScrollStyles.js +207 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
- package/dist/hooks/scrollLockTouchGuard.js +117 -0
- package/dist/hooks/scrollbarGutter.d.ts +4 -4
- package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
- package/dist/hooks/scrollbarGutter.js +36 -23
- package/dist/hooks/useActionGroupTracking.d.ts +53 -0
- package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
- package/dist/hooks/useActionGroupTracking.js +174 -0
- package/dist/hooks/useAnimator.d.ts +41 -0
- package/dist/hooks/useAnimator.d.ts.map +1 -0
- package/dist/hooks/useAnimator.js +70 -0
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +1 -0
- package/dist/hooks/useAttachment.d.ts +1 -1
- package/dist/hooks/useAttachment.js +1 -1
- package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
- package/dist/hooks/useAutoMediaMode.js +1 -0
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +2 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -1
- package/dist/hooks/useDevWarning.js +2 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +2 -0
- package/dist/hooks/useGridFocus.d.ts +8 -5
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +4 -3
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -0
- package/dist/hooks/useImageMode.d.ts.map +1 -1
- package/dist/hooks/useImageMode.js +3 -0
- package/dist/hooks/useInputStatusIcon.d.ts +1 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +1 -1
- package/dist/hooks/useLongPress.d.ts +8 -9
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +23 -106
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +2 -0
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +3 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +2 -1
- package/dist/hooks/usePressFeedback.d.ts.map +1 -1
- package/dist/hooks/usePressFeedback.js +1 -0
- package/dist/hooks/useResolvedRequired.d.ts +3 -0
- package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
- package/dist/hooks/useResolvedRequired.js +3 -0
- package/dist/hooks/useScrollLock.d.ts +8 -9
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +50 -48
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +5 -0
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +3 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +45 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts +8 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +37 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/internal/indicatorPress.stylex.d.ts +20 -0
- package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
- package/dist/internal/indicatorPress.stylex.js +26 -0
- package/dist/internal/selectable-card.d.ts +21 -0
- package/dist/internal/selectable-card.d.ts.map +1 -0
- package/dist/internal/selectable-card.js +20 -0
- package/dist/internal/sheetDraft.d.ts +2 -2
- package/dist/internal/sheetDraft.js +2 -2
- package/dist/keyboard/index.d.ts +17 -0
- package/dist/keyboard/index.d.ts.map +1 -0
- package/dist/keyboard/index.js +19 -0
- package/dist/keyboard/keyboardHeight.d.ts +149 -0
- package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
- package/dist/keyboard/keyboardHeight.js +432 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
- package/dist/keyboard/keyboardLayoutGuide.js +207 -0
- package/dist/keyboard/keyboardModel.d.ts +93 -0
- package/dist/keyboard/keyboardModel.d.ts.map +1 -0
- package/dist/keyboard/keyboardModel.js +220 -0
- package/dist/keyboard/rideKeyboard.d.ts +42 -0
- package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
- package/dist/keyboard/rideKeyboard.js +77 -0
- package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
- package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
- package/dist/keyboard/useMobileKeyboard.js +699 -0
- package/dist/motion/android/index.d.ts +16 -0
- package/dist/motion/android/index.d.ts.map +1 -0
- package/dist/motion/android/index.js +18 -0
- package/dist/motion/android/keyboard.d.ts +83 -0
- package/dist/motion/android/keyboard.d.ts.map +1 -0
- package/dist/motion/android/keyboard.js +96 -0
- package/dist/motion/animatedLayout.d.ts +8 -0
- package/dist/motion/animatedLayout.d.ts.map +1 -1
- package/dist/motion/animatedLayout.js +246 -53
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +45 -26
- package/dist/motion/frameBlock.d.ts +14 -0
- package/dist/motion/frameBlock.d.ts.map +1 -0
- package/dist/motion/frameBlock.js +16 -0
- package/dist/motion/progress.d.ts +88 -0
- package/dist/motion/progress.d.ts.map +1 -0
- package/dist/motion/progress.js +128 -0
- package/dist/motion/reducedMotion.d.ts.map +1 -1
- package/dist/motion/reducedMotion.js +3 -1
- package/dist/motion/uikit/alert.d.ts +41 -0
- package/dist/motion/uikit/alert.d.ts.map +1 -0
- package/dist/motion/uikit/alert.js +43 -0
- package/dist/motion/uikit/datePicker.d.ts +58 -0
- package/dist/motion/uikit/datePicker.d.ts.map +1 -0
- package/dist/motion/uikit/datePicker.js +60 -0
- package/dist/motion/uikit/index.d.ts +6 -4
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +6 -4
- package/dist/motion/uikit/picker.d.ts +96 -0
- package/dist/motion/uikit/picker.d.ts.map +1 -0
- package/dist/motion/uikit/picker.js +117 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +29 -4
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +14 -13
- package/dist/theme/motionKnobs.d.ts +4 -3
- package/dist/theme/motionKnobs.d.ts.map +1 -1
- package/dist/theme/motionKnobs.js +3 -2
- package/dist/theme/themeMotion.d.ts +6 -0
- package/dist/theme/themeMotion.d.ts.map +1 -1
- package/dist/theme/themeMotion.js +15 -2
- package/dist/theme/tokens.stylex.d.ts +3 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +4 -1
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/disabledInteraction.d.ts +10 -2
- package/dist/utils/disabledInteraction.d.ts.map +1 -1
- package/dist/utils/disabledInteraction.js +16 -2
- package/dist/utils/focusReturn.d.ts +22 -25
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +36 -29
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +4 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +6 -4
- package/dist/utils/isFocusDetached.d.ts +27 -0
- package/dist/utils/isFocusDetached.d.ts.map +1 -0
- package/dist/utils/isFocusDetached.js +32 -0
- package/dist/utils/layoutViewport.d.ts +25 -0
- package/dist/utils/layoutViewport.d.ts.map +1 -0
- package/dist/utils/layoutViewport.js +102 -0
- package/dist/utils/plainDate.d.ts +31 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +68 -4
- package/dist/utils/pressFeedback.d.ts +6 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +97 -18
- package/dist/utils/pressGesture.d.ts +4 -2
- package/dist/utils/pressGesture.d.ts.map +1 -1
- package/dist/utils/pressGesture.js +3 -1
- package/dist/utils/selectionLock.d.ts +10 -1
- package/dist/utils/selectionLock.d.ts.map +1 -1
- package/dist/utils/selectionLock.js +31 -5
- package/dist/utils/sharedMutationObserver.d.ts +2 -1
- package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
- package/dist/utils/sharedMutationObserver.js +2 -1
- package/dist/utils/timeParser.d.ts +2 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +29 -3
- package/dist/utils/triggerFocus.d.ts +36 -0
- package/dist/utils/triggerFocus.d.ts.map +1 -0
- package/dist/utils/triggerFocus.js +65 -0
- package/locales/en.json +148 -0
- package/locales/pseudo.json +111 -0
- package/package.json +14 -9
- package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
- package/src/AlertDialog/AlertDialog.tsx +46 -5
- package/src/AppShell/AppShell.tsx +13 -4
- package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
- package/src/BottomSheet/BottomSheet.tsx +1 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
- package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
- package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
- package/src/BottomSheet/bottomSheetStack.ts +1 -1
- package/src/BottomSheet/useSheetGestures.ts +16 -1
- package/src/Button/Button.tsx +26 -4
- package/src/Calendar/Calendar.tsx +40 -32
- package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
- package/src/Calendar/hooks/useCalendarDays.ts +5 -10
- package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
- package/src/Carousel/Carousel.tsx +1 -0
- package/src/Chat/ChatComposerInput.tsx +4 -7
- package/src/Chat/ChatMessageList.tsx +2 -1
- package/src/Chat/useChatDictation.ts +1 -0
- package/src/Chat/useChatNewMessages.ts +1 -1
- package/src/Chat/useChatStreamScroll.ts +2 -0
- package/src/Chat/useSpeechRecognition.ts +2 -0
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
- package/src/CheckboxInput/CheckboxInput.tsx +38 -15
- package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
- package/src/CheckboxList/CheckboxList.tsx +43 -2
- package/src/CheckboxList/CheckboxListContext.tsx +9 -1
- package/src/CheckboxList/CheckboxListItem.tsx +23 -2
- package/src/CheckboxList/requiredGroup.ts +77 -0
- package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
- package/src/CodeBlock/CodeBlock.tsx +41 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
- package/src/ComplexSelector/ComplexSelector.tsx +20 -5
- package/src/ContextMenu/ContextMenu.tsx +2 -2
- package/src/DateInput/MonthScroller.tsx +8 -2
- package/src/DateInput/PickerWheel.tsx +796 -0
- package/src/DateInput/TouchDateField.tsx +6 -32
- package/src/DateInput/Wheel.tsx +188 -171
- package/src/DateInput/datePickerTouch.ts +15 -0
- package/src/DateInput/useOwnScrollGesture.ts +25 -3
- package/src/DateInput/usePointerDragScroll.ts +1 -0
- package/src/DateInput/useScrollSettle.ts +2 -0
- package/src/DateInput/useWheelListbox.ts +112 -0
- package/src/DateInput/wheelOptions.ts +184 -0
- package/src/DateInput/wheelPhysics.ts +406 -0
- package/src/DateInput/wheelStrip.ts +341 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
- package/src/Dialog/Dialog.tsx +12 -32
- package/src/Drawer/useDrawerDialogPresence.ts +2 -0
- package/src/DropdownMenu/useMenuOverflow.ts +3 -0
- package/src/Field/Field.tsx +2 -2
- package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
- package/src/FormLayout/FormLayout.doc.mjs +181 -46
- package/src/FormLayout/FormLayout.tsx +5 -1
- package/src/HoverCard/HoverCard.doc.mjs +10 -8
- package/src/HoverCard/HoverCard.tsx +58 -6
- package/src/HoverCard/useHoverCard.doc.mjs +178 -36
- package/src/HoverCard/useHoverCard.tsx +55 -55
- package/src/Icon/Icon.doc.mjs +51 -10
- package/src/Icon/Icon.tsx +31 -8
- package/src/IconButton/IconButton.doc.mjs +141 -21
- package/src/InfoTip/InfoTip.tsx +72 -16
- package/src/Item/useSwipeAction.ts +2 -0
- package/src/Layer/modalOutlet.ts +2 -0
- package/src/Layer/outsidePress.ts +1 -0
- package/src/Layer/useLayer.tsx +3 -1
- package/src/Layer/useLayerDismissal.ts +2 -0
- package/src/Layer/useTouchTrigger.ts +19 -6
- package/src/Layout/index.ts +1 -1
- package/src/Layout/layoutReset.ts +1 -1
- package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
- package/src/Layout/padding.stylex.ts +9 -133
- package/src/Layout/paddingStyles.stylex.ts +87 -0
- package/src/Lightbox/Lightbox.tsx +20 -1
- package/src/Lightbox/useLightbox.doc.mjs +167 -0
- package/src/MobileNav/MobileNav.tsx +10 -31
- package/src/MultiSelector/MultiSelector.tsx +2 -7
- package/src/NumberInput/NumberInput.tsx +2 -7
- package/src/Outline/useOutlineFromDOM.ts +2 -0
- package/src/Outline/useScrollSpy.ts +2 -0
- package/src/OverflowList/OverflowList.tsx +2 -0
- package/src/Overlay/Overlay.tsx +7 -2
- package/src/Popover/Popover.tsx +4 -0
- package/src/Popover/usePopover.tsx +2 -2
- package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
- package/src/PowerSearch/PowerSearch.tsx +622 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
- package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
- package/src/PowerSearch/PowerSearchToken.tsx +2 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
- package/src/PowerSearch/formatFilterValue.ts +49 -27
- package/src/PowerSearch/formatTokenValue.ts +220 -0
- package/src/PowerSearch/index.ts +5 -1
- package/src/PowerSearch/powerSearchDateZone.ts +95 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/PowerSearch/types.ts +8 -1
- package/src/ProgressBar/ProgressBarTouch.ts +2 -0
- package/src/RadioList/RadioList.tsx +3 -2
- package/src/RadioList/RadioListItem.tsx +5 -3
- package/src/Resizable/Resizable.doc.mjs +5 -4
- package/src/Resizable/ResizeHandle.tsx +187 -135
- package/src/Resizable/createResizable.ts +1046 -0
- package/src/Resizable/separatorAttributes.ts +73 -0
- package/src/Resizable/useResizable.ts +292 -623
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
- package/src/SelectableCard/SelectableCard.tsx +39 -10
- package/src/SelectableCard/selectableCardInput.ts +30 -0
- package/src/Selector/Selector.tsx +7 -19
- package/src/SideNav/SideNav.tsx +41 -5
- package/src/Slider/Slider.tsx +20 -11
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +77 -63
- package/src/Stepper/Stepper.tsx +10 -27
- package/src/Switch/Switch.tsx +2 -6
- package/src/Switch/useSwitchTouch.ts +4 -4
- package/src/Table/BaseTable.tsx +46 -12
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
- package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
- package/src/Table/useTableRowExpansion.doc.mjs +9 -0
- package/src/Table/useTableTreeData.doc.mjs +15 -3
- package/src/TextArea/TextArea.tsx +2 -7
- package/src/TextInput/TextInput.tsx +13 -17
- package/src/TimeInput/TimeInput.tsx +2 -0
- package/src/TimeInput/TimeWheels.tsx +218 -0
- package/src/TimeInput/TouchTimeField.tsx +93 -155
- package/src/TimeInput/timeWheelRules.ts +352 -0
- package/src/Timer/Timer.tsx +1 -0
- package/src/Timestamp/Timestamp.tsx +1 -1
- package/src/Timestamp/formatInstant.ts +1 -33
- package/src/Toast/Toast.doc.mjs +4 -3
- package/src/Toast/Toast.tsx +52 -32
- package/src/Toast/ToastViewport.tsx +123 -35
- package/src/Toast/types.ts +9 -3
- package/src/Toast/useToast.tsx +1 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
- package/src/Tokenizer/Tokenizer.tsx +61 -62
- package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
- package/src/Tokenizer/index.ts +1 -0
- package/src/Tooltip/Tooltip.tsx +6 -42
- package/src/Tooltip/useTooltip.doc.mjs +24 -0
- package/src/Tooltip/useTooltip.tsx +243 -134
- package/src/Typeahead/BaseTypeahead.tsx +27 -17
- package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/animator/createAnimator.doc.mjs +153 -0
- package/src/animator/createAnimator.ts +324 -0
- package/src/gestures/GestureHost.ts +6 -5
- package/src/gestures/PressTracker.ts +4 -3
- package/src/gestures/README.md +10 -4
- package/src/hooks/ModalAnnounceProvider.tsx +1 -0
- package/src/hooks/actionGroupTracker.ts +25 -9
- package/src/hooks/index.ts +2 -0
- package/src/hooks/longPressDetector.ts +273 -0
- package/src/hooks/pressGroupContext.ts +21 -0
- package/src/hooks/rootScrollStyles.ts +247 -0
- package/src/hooks/scrollLockTouchGuard.ts +149 -0
- package/src/hooks/scrollbarGutter.ts +41 -26
- package/src/hooks/useActionGroupTracking.ts +224 -0
- package/src/hooks/useAnimator.doc.mjs +109 -0
- package/src/hooks/useAnimator.ts +67 -0
- package/src/hooks/useAnnounceRenderedText.ts +1 -0
- package/src/hooks/useAttachment.ts +1 -1
- package/src/hooks/useAutoMediaMode.ts +1 -0
- package/src/hooks/useBusyAnnouncement.ts +2 -0
- package/src/hooks/useDevWarning.ts +2 -0
- package/src/hooks/useFocusTrap.ts +2 -0
- package/src/hooks/useGridFocus.doc.mjs +6 -6
- package/src/hooks/useGridFocus.ts +10 -7
- package/src/hooks/useHotkeys.ts +2 -0
- package/src/hooks/useImageMode.ts +2 -0
- package/src/hooks/useInputStatusIcon.tsx +3 -2
- package/src/hooks/useKeyboardHint.tsx +1 -1
- package/src/hooks/useLongPress.doc.mjs +2 -2
- package/src/hooks/useLongPress.ts +32 -122
- package/src/hooks/useMenuHover.ts +1 -0
- package/src/hooks/useMenuPress.ts +2 -0
- package/src/hooks/useOverflow.ts +2 -1
- package/src/hooks/usePressFeedback.ts +1 -0
- package/src/hooks/useResolvedRequired.ts +3 -0
- package/src/hooks/useScrollLock.doc.mjs +51 -12
- package/src/hooks/useScrollLock.ts +53 -60
- package/src/hooks/useScrollableArea.ts +4 -0
- package/src/hooks/useStreamingText.ts +2 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
- package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
- package/src/i18n/generated-english/Resizable/createResizable.generated.ts +14 -0
- package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
- package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
- package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
- package/src/i18n/generated-locales/en.generated.ts +47 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
- package/src/index.ts +13 -0
- package/src/internal/indicatorPress.stylex.ts +24 -0
- package/src/internal/selectable-card.ts +21 -0
- package/src/internal/sheetDraft.ts +2 -2
- package/src/keyboard/README.md +197 -0
- package/src/keyboard/index.ts +48 -0
- package/src/keyboard/keyboardHeight.ts +543 -0
- package/src/keyboard/keyboardLayoutGuide.ts +266 -0
- package/src/keyboard/keyboardModel.ts +301 -0
- package/src/keyboard/rideKeyboard.ts +100 -0
- package/src/keyboard/useMobileKeyboard.ts +866 -0
- package/src/motion/MEASUREMENTS.md +28 -0
- package/src/motion/README.md +12 -5
- package/src/motion/android/index.ts +18 -0
- package/src/motion/android/keyboard.ts +96 -0
- package/src/motion/animatedLayout.ts +323 -60
- package/src/motion/animator.ts +66 -37
- package/src/motion/frameBlock.ts +16 -0
- package/src/motion/progress.ts +155 -0
- package/src/motion/reducedMotion.ts +3 -1
- package/src/motion/uikit/alert.ts +43 -0
- package/src/motion/uikit/datePicker.ts +60 -0
- package/src/motion/uikit/index.ts +6 -4
- package/src/motion/uikit/picker.ts +116 -0
- package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
- package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
- package/src/theme/Theme.tsx +37 -3
- package/src/theme/generateThemeRules.ts +14 -12
- package/src/theme/motionKnobs.ts +4 -3
- package/src/theme/themeMotion.ts +17 -2
- package/src/theme/tokens.stylex.ts +2 -0
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/disabledInteraction.ts +23 -2
- package/src/utils/focusReturn.ts +38 -31
- package/src/utils/index.ts +1 -1
- package/src/utils/interactionModality.ts +4 -0
- package/src/utils/interactionOverlay.stylex.ts +6 -4
- package/src/utils/isFocusDetached.ts +34 -0
- package/src/utils/layoutViewport.ts +104 -0
- package/src/utils/plainDate.ts +80 -4
- package/src/utils/pressFeedback.ts +126 -30
- package/src/utils/pressGesture.ts +4 -2
- package/src/utils/selectionLock.ts +40 -6
- package/src/utils/sharedMutationObserver.ts +2 -1
- package/src/utils/timeParser.ts +40 -3
- package/src/utils/triggerFocus.ts +80 -0
- package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
- package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
- package/dist/BottomSheet/useMobileKeyboard.js +0 -407
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
- package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
- package/dist/Layer/usePressPin.d.ts +0 -93
- package/dist/Layer/usePressPin.d.ts.map +0 -1
- package/dist/Layer/usePressPin.js +0 -363
- package/dist/internal/touch-sheet.d.ts +0 -21
- package/dist/internal/touch-sheet.d.ts.map +0 -1
- package/dist/internal/touch-sheet.js +0 -19
- package/src/BottomSheet/useMobileKeyboard.ts +0 -538
- package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
- package/src/Layer/usePressPin.ts +0 -510
- package/src/internal/touch-sheet.ts +0 -21
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* @file actionGroupTracker.ts
|
|
5
5
|
* @input The tracked elements, the action selector and hit expansion, and the
|
|
6
|
-
* press paint and fade
|
|
6
|
+
* press paint and the press controller's fade clock
|
|
7
7
|
* @output createActionGroupTracker, ActionGroupTracker,
|
|
8
8
|
* ActionGroupTrackerOptions, ActionGroupTarget
|
|
9
9
|
* @position Internal core tracker for a held finger that slides across a
|
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
import {clickAndReport, clickForLift} from '../utils/browserClickWait';
|
|
16
16
|
import {armClickGuard} from '../utils/clickGuard';
|
|
17
|
-
import {PRESSED_ATTRIBUTE} from '../utils/pressFeedback';
|
|
18
|
-
import {PRESS_FADE_MS} from '../utils/pressGesture';
|
|
17
|
+
import {PRESSED_ATTRIBUTE, pressFadeMs} from '../utils/pressFeedback';
|
|
19
18
|
|
|
20
19
|
/** An action that is not enabled takes no highlight and does not run. */
|
|
21
20
|
const DISABLED = ':disabled, [aria-disabled="true"]';
|
|
@@ -57,7 +56,8 @@ export interface ActionGroupTrackerOptions {
|
|
|
57
56
|
* target past the group's ends commits the lift there wherever the finger
|
|
58
57
|
* lifts.
|
|
59
58
|
* @default the target whose rect, grown by `highlightExpansion`, holds the
|
|
60
|
-
* point; none between or
|
|
59
|
+
* point, the one the press landed on where several do; none between or
|
|
60
|
+
* outside them
|
|
61
61
|
*/
|
|
62
62
|
resolveTarget?: (
|
|
63
63
|
x: number,
|
|
@@ -83,8 +83,13 @@ export interface ActionGroupTracker {
|
|
|
83
83
|
/**
|
|
84
84
|
* A press began at viewport (x, y): read the actions' rects once and
|
|
85
85
|
* highlight the one under it. An inert press is taken but tracks nothing.
|
|
86
|
+
* `landed` is the node the press landed on.
|
|
86
87
|
*/
|
|
87
|
-
begin(
|
|
88
|
+
begin(
|
|
89
|
+
x: number,
|
|
90
|
+
y: number,
|
|
91
|
+
options?: {inert?: boolean; landed?: Node | null},
|
|
92
|
+
): void;
|
|
88
93
|
/** The finger moved to viewport (x, y). */
|
|
89
94
|
move(x: number, y: number): void;
|
|
90
95
|
/**
|
|
@@ -150,6 +155,7 @@ export function createActionGroupTracker(
|
|
|
150
155
|
let actions: TrackedAction[] = [];
|
|
151
156
|
let highlighted: HTMLElement | null = null;
|
|
152
157
|
let beganOn: HTMLElement | null = null;
|
|
158
|
+
let landedOn: Node | null = null;
|
|
153
159
|
let isTracking = false;
|
|
154
160
|
let isInert = false;
|
|
155
161
|
// The finger's last position: `remeasure` resolves it again.
|
|
@@ -186,6 +192,8 @@ export function createActionGroupTracker(
|
|
|
186
192
|
}
|
|
187
193
|
clearFade(element);
|
|
188
194
|
element.setAttribute(PRESSED_ATTRIBUTE, 'fading');
|
|
195
|
+
// The stylesheet's release follows the theme's tempo, so the fade ends on
|
|
196
|
+
// the press controller's clock.
|
|
189
197
|
fades.set(
|
|
190
198
|
element,
|
|
191
199
|
setTimeout(() => {
|
|
@@ -193,7 +201,7 @@ export function createActionGroupTracker(
|
|
|
193
201
|
if (element.getAttribute(PRESSED_ATTRIBUTE) === 'fading') {
|
|
194
202
|
element.removeAttribute(PRESSED_ATTRIBUTE);
|
|
195
203
|
}
|
|
196
|
-
},
|
|
204
|
+
}, pressFadeMs(element)),
|
|
197
205
|
);
|
|
198
206
|
};
|
|
199
207
|
|
|
@@ -241,6 +249,9 @@ export function createActionGroupTracker(
|
|
|
241
249
|
if (resolveTarget != null) {
|
|
242
250
|
return actions.length === 0 ? null : resolveTarget(x, y, actions);
|
|
243
251
|
}
|
|
252
|
+
// Rects that share an edge, or that have no layout (a test renderer), can
|
|
253
|
+
// both hold the point: the one the press landed on wins.
|
|
254
|
+
let first: HTMLElement | null = null;
|
|
244
255
|
for (const action of actions) {
|
|
245
256
|
if (
|
|
246
257
|
x >= action.left - margin &&
|
|
@@ -248,22 +259,26 @@ export function createActionGroupTracker(
|
|
|
248
259
|
y >= action.top - margin &&
|
|
249
260
|
y <= action.bottom + margin
|
|
250
261
|
) {
|
|
251
|
-
|
|
262
|
+
if (landedOn != null && action.element.contains(landedOn)) {
|
|
263
|
+
return action.element;
|
|
264
|
+
}
|
|
265
|
+
first ??= action.element;
|
|
252
266
|
}
|
|
253
267
|
}
|
|
254
|
-
return
|
|
268
|
+
return first;
|
|
255
269
|
};
|
|
256
270
|
|
|
257
271
|
const reset = () => {
|
|
258
272
|
actions = [];
|
|
259
273
|
highlighted = null;
|
|
260
274
|
beganOn = null;
|
|
275
|
+
landedOn = null;
|
|
261
276
|
isTracking = false;
|
|
262
277
|
isInert = false;
|
|
263
278
|
};
|
|
264
279
|
|
|
265
280
|
return {
|
|
266
|
-
begin(x, y, {inert = false} = {}) {
|
|
281
|
+
begin(x, y, {inert = false, landed = null} = {}) {
|
|
267
282
|
// A press can begin while another is tracked, when a second recognizer
|
|
268
283
|
// takes over the finger (a trigger's held press, then the menu's): the
|
|
269
284
|
// action the first one lit loses its paint.
|
|
@@ -276,6 +291,7 @@ export function createActionGroupTracker(
|
|
|
276
291
|
highlighted = null;
|
|
277
292
|
isTracking = true;
|
|
278
293
|
isInert = inert;
|
|
294
|
+
landedOn = landed;
|
|
279
295
|
lastX = x;
|
|
280
296
|
lastY = y;
|
|
281
297
|
getOptions().onMove?.(x, y);
|
package/src/hooks/index.ts
CHANGED
|
@@ -133,6 +133,8 @@ export type {
|
|
|
133
133
|
UseInteractiveRoleOptions,
|
|
134
134
|
} from './useInteractiveRole';
|
|
135
135
|
|
|
136
|
+
export {useAnimator} from './useAnimator';
|
|
137
|
+
|
|
136
138
|
export {useLongPress} from './useLongPress';
|
|
137
139
|
export type {UseLongPressOptions, UseLongPressHandlers} from './useLongPress';
|
|
138
140
|
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file longPressDetector.ts
|
|
5
|
+
* @input The long-press numbers (motion/uikit/longPress.ts) and touch events
|
|
6
|
+
* @output createLongPressDetector(): one long press at a time, timed on the
|
|
7
|
+
* touch events' clock, with no React
|
|
8
|
+
* @position Internal; the core of useLongPress and useLongPressDetector
|
|
9
|
+
* (useLongPress.ts). Not in the hooks entry.
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update /packages/core/src/hooks/useLongPress.ts
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
LONG_PRESS_ALLOWABLE_MOVEMENT_PX,
|
|
16
|
+
LONG_PRESS_DURATION_MS,
|
|
17
|
+
} from '../motion/uikit/longPress';
|
|
18
|
+
|
|
19
|
+
// The hold is a deadline on the touch events' timestamps, on the clock of the
|
|
20
|
+
// touch's own window. A busy main thread can delay the timer past the
|
|
21
|
+
// deadline. A touch stamped after the deadline then reports the press before
|
|
22
|
+
// it acts. A press started by hand from a point has no stamp, so its page
|
|
23
|
+
// timer waits the full delay.
|
|
24
|
+
|
|
25
|
+
// The long-press numbers have one source, shared with the gesture
|
|
26
|
+
// recognizers (motion/uikit/longPress.ts).
|
|
27
|
+
const DEFAULT_DELAY_MS = LONG_PRESS_DURATION_MS;
|
|
28
|
+
const DEFAULT_MOVE_CANCEL_PX = LONG_PRESS_ALLOWABLE_MOVEMENT_PX;
|
|
29
|
+
|
|
30
|
+
/** @internal What a detector reads at each start, move and fire. */
|
|
31
|
+
export interface LongPressDetectorOptions {
|
|
32
|
+
/** Fired with the start point once the press is held for `delayMs`. */
|
|
33
|
+
onLongPress: (point: {x: number; y: number}) => void;
|
|
34
|
+
/** When true, a start does nothing. */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/** Hold duration before the press fires, in ms. Defaults to 500. */
|
|
37
|
+
delayMs?: number;
|
|
38
|
+
/** Movement past this distance (px, either axis) cancels the press. Defaults to 10. */
|
|
39
|
+
moveCancelPx?: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @internal A press's own movement tolerance, for a core caller that decides
|
|
44
|
+
* it as the press starts (useMenuPress's trigger).
|
|
45
|
+
*/
|
|
46
|
+
export interface LongPressTolerance {
|
|
47
|
+
moveCancelPx?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @internal The part of a touch event a detector reads, React's or the DOM's.
|
|
52
|
+
*/
|
|
53
|
+
export interface LongPressTouchEvent {
|
|
54
|
+
readonly touches: {
|
|
55
|
+
readonly length: number;
|
|
56
|
+
readonly [index: number]: {
|
|
57
|
+
readonly clientX: number;
|
|
58
|
+
readonly clientY: number;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
readonly timeStamp: number;
|
|
62
|
+
readonly view?: unknown;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** @internal One detector: start a press, report its touches, or drop it. */
|
|
66
|
+
export interface LongPressDetector {
|
|
67
|
+
/** Begin detection at a point, dropping any press still pending. */
|
|
68
|
+
start: (
|
|
69
|
+
point: {x: number; y: number},
|
|
70
|
+
tolerance?: LongPressTolerance,
|
|
71
|
+
) => void;
|
|
72
|
+
/** A touch started: one finger begins a press, a second one ends it. */
|
|
73
|
+
touchStart: (event: LongPressTouchEvent) => void;
|
|
74
|
+
/** A touch moved: past the tolerance the press is off. */
|
|
75
|
+
touchMove: (event: LongPressTouchEvent) => void;
|
|
76
|
+
/** The lift or the cancel. A press it is stamped past reports first. */
|
|
77
|
+
touchEnd: (event?: LongPressTouchEvent) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Report the pointer's new position. Past the tolerance the press is off.
|
|
80
|
+
* Returns whether a press is still pending.
|
|
81
|
+
*/
|
|
82
|
+
moveTo: (point: {x: number; y: number}) => boolean;
|
|
83
|
+
/** Drop any pending press (a lift, a cancel, or the gesture moving on). */
|
|
84
|
+
cancel: () => void;
|
|
85
|
+
/** Whether a press is in progress (started and not dropped). */
|
|
86
|
+
isPending: () => boolean;
|
|
87
|
+
/** The options the next start, move and fire read. */
|
|
88
|
+
setOptions: (options: LongPressDetectorOptions) => void;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** The part of a window's performance timeline a press reads. */
|
|
92
|
+
type EventClock = Pick<Performance, 'now'>;
|
|
93
|
+
|
|
94
|
+
function clockOf(event: LongPressTouchEvent): EventClock | null {
|
|
95
|
+
const view = event.view as {performance?: EventClock} | null | undefined;
|
|
96
|
+
return (
|
|
97
|
+
view?.performance ??
|
|
98
|
+
(typeof performance === 'undefined' ? null : performance)
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* An event's time on its window's clock. jsdom stamps events with
|
|
104
|
+
* `Date.now()`. The detector reads the age of such a stamp on that clock, so a
|
|
105
|
+
* frozen system time keeps the hold's length. A stamp nearer `Date.now()` than
|
|
106
|
+
* the window's clock is that kind of stamp.
|
|
107
|
+
*/
|
|
108
|
+
function timeOn(
|
|
109
|
+
clock: EventClock | null,
|
|
110
|
+
timeStamp: number | undefined,
|
|
111
|
+
): number | undefined {
|
|
112
|
+
// A stamp of 0 means the event carries no time, so the hold falls back to
|
|
113
|
+
// the full delay on the page's timer.
|
|
114
|
+
if (timeStamp == null || !Number.isFinite(timeStamp) || timeStamp <= 0) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
if (
|
|
118
|
+
clock != null &&
|
|
119
|
+
Math.abs(Date.now() - timeStamp) < Math.abs(clock.now() - timeStamp)
|
|
120
|
+
) {
|
|
121
|
+
return clock.now() - (Date.now() - timeStamp);
|
|
122
|
+
}
|
|
123
|
+
return timeStamp;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** @internal A long-press detector with no React (see LongPressDetector). */
|
|
127
|
+
export function createLongPressDetector(
|
|
128
|
+
initial: LongPressDetectorOptions,
|
|
129
|
+
): LongPressDetector {
|
|
130
|
+
let options = initial;
|
|
131
|
+
let timer: ReturnType<typeof setTimeout> | null = null;
|
|
132
|
+
let from: {x: number; y: number} | null = null;
|
|
133
|
+
// Null for a press started by hand. It has no stamp.
|
|
134
|
+
let deadline: number | null = null;
|
|
135
|
+
let clock: EventClock | null = null;
|
|
136
|
+
let pressTolerance: LongPressTolerance | null = null;
|
|
137
|
+
|
|
138
|
+
const cancel = () => {
|
|
139
|
+
if (timer != null) {
|
|
140
|
+
clearTimeout(timer);
|
|
141
|
+
timer = null;
|
|
142
|
+
}
|
|
143
|
+
from = null;
|
|
144
|
+
deadline = null;
|
|
145
|
+
clock = null;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const fire = () => {
|
|
149
|
+
const at = from;
|
|
150
|
+
if (at == null) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
cancel();
|
|
154
|
+
options.onLongPress({x: at.x, y: at.y});
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// A touch stamped at or past the deadline: the finger was down for the
|
|
158
|
+
// whole delay, so the press reports before the touch acts.
|
|
159
|
+
const fireIfDue = (event: LongPressTouchEvent | undefined) => {
|
|
160
|
+
const eventTime =
|
|
161
|
+
event == null ? undefined : timeOn(clock, event.timeStamp);
|
|
162
|
+
if (deadline != null && eventTime != null && eventTime >= deadline) {
|
|
163
|
+
fire();
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
const begin = (
|
|
168
|
+
point: {x: number; y: number},
|
|
169
|
+
tolerance: LongPressTolerance | undefined,
|
|
170
|
+
started: {at: number; clock: EventClock} | undefined,
|
|
171
|
+
) => {
|
|
172
|
+
if (options.disabled === true) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
cancel();
|
|
176
|
+
const delayMs = options.delayMs ?? DEFAULT_DELAY_MS;
|
|
177
|
+
from = {x: point.x, y: point.y};
|
|
178
|
+
pressTolerance = tolerance ?? null;
|
|
179
|
+
const pressClock = started?.clock ?? null;
|
|
180
|
+
const pressDeadline = started == null ? null : started.at + delayMs;
|
|
181
|
+
clock = pressClock;
|
|
182
|
+
deadline = pressDeadline;
|
|
183
|
+
// Wait only for the rest of the hold. A touch handled late then keeps its
|
|
184
|
+
// length, and the wait never passes the delay.
|
|
185
|
+
const remaining =
|
|
186
|
+
pressClock == null || pressDeadline == null
|
|
187
|
+
? delayMs
|
|
188
|
+
: Math.min(delayMs, Math.max(0, pressDeadline - pressClock.now()));
|
|
189
|
+
// A late timer yields to queued input once, so a lift stamped before the
|
|
190
|
+
// deadline still cancels the press. The gesture arena does the same.
|
|
191
|
+
const run = (mayYield: boolean) => {
|
|
192
|
+
timer = null;
|
|
193
|
+
if (
|
|
194
|
+
mayYield &&
|
|
195
|
+
pressClock != null &&
|
|
196
|
+
pressDeadline != null &&
|
|
197
|
+
pressClock.now() > pressDeadline
|
|
198
|
+
) {
|
|
199
|
+
timer = setTimeout(() => run(false), 0);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
fire();
|
|
203
|
+
};
|
|
204
|
+
timer = setTimeout(() => run(true), remaining);
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const moveTo = (point: {x: number; y: number}): boolean => {
|
|
208
|
+
const at = from;
|
|
209
|
+
if (at == null) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
// This press's own tolerance when its caller chose one, on either axis.
|
|
213
|
+
const limit =
|
|
214
|
+
pressTolerance?.moveCancelPx ??
|
|
215
|
+
options.moveCancelPx ??
|
|
216
|
+
DEFAULT_MOVE_CANCEL_PX;
|
|
217
|
+
if (Math.abs(point.x - at.x) > limit || Math.abs(point.y - at.y) > limit) {
|
|
218
|
+
cancel();
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
return true;
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
return {
|
|
225
|
+
start(point, tolerance) {
|
|
226
|
+
begin(point, tolerance, undefined);
|
|
227
|
+
},
|
|
228
|
+
touchStart(event) {
|
|
229
|
+
if (options.disabled === true) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (event.touches.length !== 1) {
|
|
233
|
+
// A second finger ends the press, unless the press was already due.
|
|
234
|
+
fireIfDue(event);
|
|
235
|
+
cancel();
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
const touch = event.touches[0];
|
|
239
|
+
const touchClock = clockOf(event);
|
|
240
|
+
const at = timeOn(touchClock, event.timeStamp);
|
|
241
|
+
begin(
|
|
242
|
+
{x: touch.clientX, y: touch.clientY},
|
|
243
|
+
undefined,
|
|
244
|
+
touchClock == null || at == null ? undefined : {at, clock: touchClock},
|
|
245
|
+
);
|
|
246
|
+
},
|
|
247
|
+
touchMove(event) {
|
|
248
|
+
if (from == null) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
fireIfDue(event);
|
|
252
|
+
if (from == null) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (event.touches.length !== 1) {
|
|
256
|
+
cancel();
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const touch = event.touches[0];
|
|
260
|
+
moveTo({x: touch.clientX, y: touch.clientY});
|
|
261
|
+
},
|
|
262
|
+
touchEnd(event) {
|
|
263
|
+
fireIfDue(event);
|
|
264
|
+
cancel();
|
|
265
|
+
},
|
|
266
|
+
moveTo,
|
|
267
|
+
cancel,
|
|
268
|
+
isPending: () => from != null,
|
|
269
|
+
setOptions(next) {
|
|
270
|
+
options = next;
|
|
271
|
+
},
|
|
272
|
+
};
|
|
273
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file pressGroupContext.ts
|
|
7
|
+
* @input Nothing
|
|
8
|
+
* @output PressGroupContext: true inside a group whose own tracker paints
|
|
9
|
+
* its actions' press
|
|
10
|
+
* @position Internal; not exported from the hooks entry. AlertDialog
|
|
11
|
+
* provides it around its tracked actions, and Button reads it.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import {createContext} from 'react';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* True inside a group whose tracker paints a pointer's press on its actions.
|
|
18
|
+
* Those actions take no `:active` paint, so one press never lights two.
|
|
19
|
+
*/
|
|
20
|
+
export const PressGroupContext = createContext(false);
|
|
21
|
+
PressGroupContext.displayName = 'PressGroupContext';
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file rootScrollStyles.ts
|
|
7
|
+
* @input The inline styles of the root and `<body>`
|
|
8
|
+
* @output claimRootScrollStyle, which owns the page's `overflow`,
|
|
9
|
+
* `overscroll-behavior-y` and `scrollbar-gutter`; isScrollLockActive and
|
|
10
|
+
* subscribeScrollLock, which report whether a scroll lock holds the page
|
|
11
|
+
* @position Internal hook utility. Each caller that changes how the page
|
|
12
|
+
* scrolls claims these styles here, so no caller overwrites a value that
|
|
13
|
+
* another caller still needs.
|
|
14
|
+
*
|
|
15
|
+
* SYNC: When modified, update:
|
|
16
|
+
* - /packages/core/src/hooks/useScrollLock.ts
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** The root scroll styles a caller can hold. */
|
|
20
|
+
export interface RootScrollStyle {
|
|
21
|
+
/** `hidden` or `clip` stops wheel, keyboard and scrollbar scrolling of the page. */
|
|
22
|
+
overflow?: 'hidden' | 'clip';
|
|
23
|
+
/** `none` turns the page's own bounce off at both vertical edges. */
|
|
24
|
+
overscrollBehaviorY?: 'none' | 'contain';
|
|
25
|
+
/** `stable` keeps a classic scrollbar's space while the page cannot scroll. */
|
|
26
|
+
scrollbarGutter?: 'stable';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
type RootScrollProperty = keyof RootScrollStyle;
|
|
30
|
+
|
|
31
|
+
const PROPERTIES: ReadonlyArray<RootScrollProperty> = [
|
|
32
|
+
'overflow',
|
|
33
|
+
'overscrollBehaviorY',
|
|
34
|
+
'scrollbarGutter',
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
interface Claim {
|
|
38
|
+
readonly id: number;
|
|
39
|
+
readonly value: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const claims: Record<RootScrollProperty, Claim[]> = {
|
|
43
|
+
overflow: [],
|
|
44
|
+
overscrollBehaviorY: [],
|
|
45
|
+
scrollbarGutter: [],
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
type SavedStyle =
|
|
49
|
+
| 'overflow'
|
|
50
|
+
| 'overflowX'
|
|
51
|
+
| 'overflowY'
|
|
52
|
+
| 'overscrollBehaviorY'
|
|
53
|
+
| 'scrollbarGutter';
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The inline styles saved for each property, so a page's own value comes back
|
|
57
|
+
* exactly, including a one-axis `overflow-x` or `overflow-y`.
|
|
58
|
+
*/
|
|
59
|
+
const SAVED: Record<RootScrollProperty, ReadonlyArray<SavedStyle>> = {
|
|
60
|
+
overflow: ['overflow', 'overflowX', 'overflowY'],
|
|
61
|
+
overscrollBehaviorY: ['overscrollBehaviorY'],
|
|
62
|
+
scrollbarGutter: ['scrollbarGutter'],
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* An element that holds a property's claims. It keeps the page's own inline
|
|
67
|
+
* values, saved at the first claim, and the value that the claims last wrote.
|
|
68
|
+
*/
|
|
69
|
+
interface HeldTarget {
|
|
70
|
+
readonly element: HTMLElement;
|
|
71
|
+
readonly pageValues: Partial<Record<SavedStyle, string>>;
|
|
72
|
+
written: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const held = new Map<RootScrollProperty, HeldTarget[]>();
|
|
76
|
+
|
|
77
|
+
let nextClaimId = 0;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The element whose `overflow` the viewport uses. That is the root, unless the
|
|
81
|
+
* root's own is `visible` and `<body>` sets one, which then propagates to the
|
|
82
|
+
* viewport. A write to the root in that case stops the propagation. Then
|
|
83
|
+
* `<body>` becomes its own scroller at offset 0, and the page jumps to its top.
|
|
84
|
+
*/
|
|
85
|
+
function overflowTarget(doc: Document): HTMLElement {
|
|
86
|
+
const root = doc.documentElement;
|
|
87
|
+
const {body} = doc;
|
|
88
|
+
const view = doc.defaultView;
|
|
89
|
+
if (body == null || view == null) {
|
|
90
|
+
return root;
|
|
91
|
+
}
|
|
92
|
+
const isVisible = (element: Element) => {
|
|
93
|
+
const style = view.getComputedStyle(element);
|
|
94
|
+
return (
|
|
95
|
+
(style.overflowX || 'visible') === 'visible' &&
|
|
96
|
+
(style.overflowY || 'visible') === 'visible'
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
return isVisible(root) && !isVisible(body) ? body : root;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Where a property's claims go. `overflow` goes to the element that the
|
|
104
|
+
* viewport takes it from. `overscroll-behavior-y` goes to the root and to
|
|
105
|
+
* `<body>`, because Chrome on Android reads `<body>`'s value for its
|
|
106
|
+
* pull-to-refresh. `scrollbar-gutter` goes to the root.
|
|
107
|
+
*/
|
|
108
|
+
function claimTargets(
|
|
109
|
+
property: RootScrollProperty,
|
|
110
|
+
doc: Document,
|
|
111
|
+
): HTMLElement[] {
|
|
112
|
+
if (property === 'overflow') {
|
|
113
|
+
return [overflowTarget(doc)];
|
|
114
|
+
}
|
|
115
|
+
if (property === 'scrollbarGutter') {
|
|
116
|
+
return [doc.documentElement];
|
|
117
|
+
}
|
|
118
|
+
return doc.body == null
|
|
119
|
+
? [doc.documentElement]
|
|
120
|
+
: [doc.documentElement, doc.body];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function applyTopClaim(property: RootScrollProperty): void {
|
|
124
|
+
const targets = held.get(property);
|
|
125
|
+
if (targets == null) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const stack = claims[property];
|
|
129
|
+
const top = stack[stack.length - 1];
|
|
130
|
+
for (const target of targets) {
|
|
131
|
+
const {style} = target.element;
|
|
132
|
+
if (top != null) {
|
|
133
|
+
style[property] = top.value;
|
|
134
|
+
target.written = top.value;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// The last claim is gone, so the page gets its own values back. A value
|
|
138
|
+
// that an outside writer set meanwhile stays.
|
|
139
|
+
if (style[property] === target.written) {
|
|
140
|
+
style[property] = '';
|
|
141
|
+
for (const name of SAVED[property]) {
|
|
142
|
+
const value = target.pageValues[name];
|
|
143
|
+
if (value) {
|
|
144
|
+
style[name] = value;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (top == null) {
|
|
150
|
+
held.delete(property);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Sets the page's `overflow`, `overscroll-behavior-y` or `scrollbar-gutter`
|
|
156
|
+
* until the returned release runs. Claims stack per property: the latest claim
|
|
157
|
+
* wins, and a release in any order restores the claim beneath it. The page's
|
|
158
|
+
* own inline value comes back after the last release, unless an outside writer
|
|
159
|
+
* changed that style meanwhile. A second release does nothing.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```
|
|
163
|
+
* const release = claimRootScrollStyle({overflow: 'hidden'});
|
|
164
|
+
* // later
|
|
165
|
+
* release();
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export function claimRootScrollStyle(claim: RootScrollStyle): () => void {
|
|
169
|
+
if (typeof document === 'undefined') {
|
|
170
|
+
return () => {};
|
|
171
|
+
}
|
|
172
|
+
nextClaimId += 1;
|
|
173
|
+
const id = nextClaimId;
|
|
174
|
+
const claimed: RootScrollProperty[] = [];
|
|
175
|
+
for (const property of PROPERTIES) {
|
|
176
|
+
const value = claim[property];
|
|
177
|
+
if (value == null) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if (claims[property].length === 0) {
|
|
181
|
+
held.set(
|
|
182
|
+
property,
|
|
183
|
+
claimTargets(property, document).map(element => {
|
|
184
|
+
const pageValues: Partial<Record<SavedStyle, string>> = {};
|
|
185
|
+
for (const name of SAVED[property]) {
|
|
186
|
+
pageValues[name] = element.style[name];
|
|
187
|
+
}
|
|
188
|
+
return {element, pageValues, written: ''};
|
|
189
|
+
}),
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
claims[property].push({id, value});
|
|
193
|
+
claimed.push(property);
|
|
194
|
+
applyTopClaim(property);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
let released = false;
|
|
198
|
+
return () => {
|
|
199
|
+
if (released) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
released = true;
|
|
203
|
+
for (const property of claimed) {
|
|
204
|
+
const stack = claims[property];
|
|
205
|
+
const index = stack.findIndex(entry => entry.id === id);
|
|
206
|
+
if (index !== -1) {
|
|
207
|
+
stack.splice(index, 1);
|
|
208
|
+
}
|
|
209
|
+
applyTopClaim(property);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
let lockCount = 0;
|
|
215
|
+
const lockListeners = new Set<(isActive: boolean) => void>();
|
|
216
|
+
|
|
217
|
+
/** Whether a scroll lock (useScrollLock) currently holds the page. */
|
|
218
|
+
export function isScrollLockActive(): boolean {
|
|
219
|
+
return lockCount > 0;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Calls `listener` with the new state each time the page becomes locked or
|
|
224
|
+
* free. A second lock while one holds is no change. Returns the unsubscribe
|
|
225
|
+
* function.
|
|
226
|
+
*/
|
|
227
|
+
export function subscribeScrollLock(
|
|
228
|
+
listener: (isActive: boolean) => void,
|
|
229
|
+
): () => void {
|
|
230
|
+
lockListeners.add(listener);
|
|
231
|
+
return () => {
|
|
232
|
+
lockListeners.delete(listener);
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/** For scroll locks: one lock taken (`1`) or released (`-1`). */
|
|
237
|
+
export function reportScrollLock(delta: 1 | -1): void {
|
|
238
|
+
const wasActive = lockCount > 0;
|
|
239
|
+
lockCount = Math.max(0, lockCount + delta);
|
|
240
|
+
const isActive = lockCount > 0;
|
|
241
|
+
if (isActive === wasActive) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
for (const listener of [...lockListeners]) {
|
|
245
|
+
listener(isActive);
|
|
246
|
+
}
|
|
247
|
+
}
|