@astryxdesign/core 0.7.7 → 0.7.8-canary.36cde5e
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 +5 -0
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +1 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +25 -4
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
- package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -1
- package/dist/BottomSheet/useMobileKeyboard.js +6 -0
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +12 -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 +15 -16
- 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 +4 -0
- 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/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 +625 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +1 -0
- package/dist/DateInput/Wheel.d.ts +18 -37
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +84 -113
- 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 +74 -0
- package/dist/DateInput/wheelOptions.d.ts.map +1 -0
- package/dist/DateInput/wheelOptions.js +98 -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 +2 -0
- 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 +20 -33
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +5 -2
- 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 +3 -0
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +3 -0
- package/dist/Layer/usePressPin.d.ts +17 -5
- package/dist/Layer/usePressPin.d.ts.map +1 -1
- package/dist/Layer/usePressPin.js +62 -12
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +3 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +19 -0
- package/dist/MobileNav/MobileNav.d.ts +3 -2
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +9 -25
- 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/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -0
- package/dist/PowerSearch/PowerSearch.d.ts +43 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +445 -134
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +102 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +1919 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +25 -6
- 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 +7 -2
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +193 -83
- package/dist/PowerSearch/formatFilterValue.d.ts +18 -6
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +33 -12
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +162 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts +21 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchDateZone.js +37 -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 +2 -0
- 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 +101 -77
- package/dist/Resizable/createResizable.d.ts +145 -0
- package/dist/Resizable/createResizable.d.ts.map +1 -0
- package/dist/Resizable/createResizable.js +575 -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 +5 -8
- 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/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.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +4 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +10 -7
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +2 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +2 -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/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 +49 -37
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +22 -19
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +1 -1
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +19 -1
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +34 -53
- 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 +39 -6
- package/dist/gestures/GestureHost.d.ts +16 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +1 -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 +13 -3
- 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 +134 -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/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 +7 -9
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +55 -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 +42 -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-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +30 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +30 -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/motion/animatedLayout.d.ts.map +1 -1
- package/dist/motion/animatedLayout.js +7 -7
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +45 -20
- 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/index.d.ts +4 -3
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +4 -3
- 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/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 +7 -0
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/focusReturn.d.ts +15 -0
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +28 -0
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +4 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +3 -2
- package/dist/utils/plainDate.d.ts +8 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +19 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +20 -6
- 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 +120 -0
- package/locales/pseudo.json +90 -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 +4 -0
- package/src/BottomSheet/BottomSheet.tsx +1 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +39 -3
- package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
- package/src/BottomSheet/useMobileKeyboard.ts +4 -0
- package/src/BottomSheet/useSheetGestures.ts +10 -1
- package/src/Button/Button.tsx +26 -4
- package/src/Calendar/Calendar.tsx +36 -25
- package/src/Carousel/Carousel.tsx +1 -0
- package/src/Chat/ChatComposerInput.tsx +2 -0
- 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/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 +765 -0
- package/src/DateInput/TouchDateField.tsx +1 -0
- package/src/DateInput/Wheel.tsx +94 -150
- 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 +155 -0
- package/src/DateInput/wheelPhysics.ts +406 -0
- package/src/DateInput/wheelStrip.ts +341 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +2 -0
- 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 +49 -54
- package/src/Icon/Icon.doc.mjs +49 -8
- package/src/Icon/Icon.tsx +15 -7
- package/src/IconButton/IconButton.doc.mjs +141 -21
- 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 +2 -0
- package/src/Layer/useLayerDismissal.ts +2 -0
- package/src/Layer/usePressPin.ts +81 -15
- package/src/Layer/useTouchTrigger.ts +2 -0
- package/src/Lightbox/Lightbox.tsx +19 -0
- package/src/MobileNav/MobileNav.tsx +9 -30
- package/src/Outline/useOutlineFromDOM.ts +2 -0
- package/src/Outline/useScrollSpy.ts +2 -0
- package/src/OverflowList/OverflowList.tsx +2 -0
- package/src/Popover/Popover.tsx +4 -0
- package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
- package/src/PowerSearch/PowerSearch.tsx +627 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +39 -6
- package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
- package/src/PowerSearch/PowerSearchToken.tsx +7 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +244 -58
- package/src/PowerSearch/formatFilterValue.ts +55 -17
- package/src/PowerSearch/formatTokenValue.ts +222 -0
- package/src/PowerSearch/powerSearchDateZone.ts +64 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/PowerSearch/types.ts +2 -0
- 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 +169 -109
- package/src/Resizable/createResizable.ts +831 -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 +5 -12
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +77 -63
- 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 +4 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/TextInput/TextInput.tsx +11 -10
- package/src/TimeInput/TimeInput.tsx +2 -0
- package/src/TimeInput/TouchTimeField.tsx +2 -0
- package/src/Timer/Timer.tsx +1 -0
- package/src/Timestamp/Timestamp.tsx +1 -1
- 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 +19 -3
- package/src/Tokenizer/Tokenizer.tsx +73 -51
- package/src/Tokenizer/TokenizerBottomSheet.tsx +1 -1
- package/src/Tokenizer/index.ts +1 -0
- package/src/Tooltip/useTooltip.doc.mjs +24 -0
- package/src/Tooltip/useTooltip.tsx +61 -56
- 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 +1 -1
- 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 +20 -5
- 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 +182 -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 +57 -60
- package/src/hooks/useScrollableArea.ts +4 -0
- package/src/hooks/useStreamingText.ts +2 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -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-locales/en.generated.ts +41 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +42 -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/motion/MEASUREMENTS.md +18 -0
- package/src/motion/README.md +10 -5
- package/src/motion/animatedLayout.ts +10 -5
- package/src/motion/animator.ts +66 -31
- 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/index.ts +4 -3
- 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/motionKnobs.ts +4 -3
- package/src/theme/themeMotion.ts +7 -0
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/focusReturn.ts +30 -0
- package/src/utils/interactionModality.ts +4 -0
- package/src/utils/interactionOverlay.stylex.ts +3 -2
- package/src/utils/plainDate.ts +21 -0
- package/src/utils/pressFeedback.ts +24 -6
- package/src/utils/triggerFocus.ts +80 -0
- 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/internal/touch-sheet.ts +0 -21
|
@@ -4,46 +4,49 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useScrollLock.ts
|
|
7
|
-
* @input
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* This is needed because overscroll-behavior:contain doesn't work on iOS Safari.
|
|
7
|
+
* @input React useEffect, rootScrollStyles, gestures/pageHold with the pan
|
|
8
|
+
* decision, and the scrollbar gutter hold
|
|
9
|
+
* @output useScrollLock, which locks page scroll behind a modal
|
|
10
|
+
* @position Core hook; used by Dialog, BottomSheet, Drawer, Lightbox and
|
|
11
|
+
* MobileNav
|
|
13
12
|
*
|
|
14
13
|
* SYNC: When modified, update:
|
|
15
14
|
* - /packages/core/src/hooks/index.ts
|
|
16
15
|
* - /packages/core/src/hooks/scrollbarGutter.ts
|
|
16
|
+
* - /packages/core/src/hooks/rootScrollStyles.ts
|
|
17
|
+
* - /packages/core/src/gestures/pageHold.ts (holdPageScroll)
|
|
18
|
+
* - /packages/core/src/hooks/useScrollLockImports.test.ts
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
21
|
import {useEffect} from 'react';
|
|
22
|
+
import {claimRootScrollStyle, reportScrollLock} from './rootScrollStyles';
|
|
23
|
+
import {holdPageScroll} from '../gestures/pageHold';
|
|
24
|
+
import {isPageZoomedIn, isPanAbsorbedBeforePage} from './scrollLockTouchGuard';
|
|
20
25
|
import {holdScrollbarGutter, type ScrollbarGutterHold} from './scrollbarGutter';
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
// iOS Safari scrolls an `overflow: hidden` page under a finger.
|
|
28
|
+
// So the lock also cancels each one-finger pan that would reach the page. The
|
|
29
|
+
// scroll offset never changes, so unlock restores nothing, and iOS Safari's
|
|
30
|
+
// toolbar keeps its state.
|
|
31
|
+
|
|
32
|
+
interface ActiveLock {
|
|
33
|
+
releaseRootStyle: () => void;
|
|
34
|
+
releasePageHold: () => void;
|
|
30
35
|
gutter: ScrollbarGutterHold;
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
let lockCount = 0;
|
|
34
|
-
let
|
|
39
|
+
let activeLock: ActiveLock | null = null;
|
|
35
40
|
|
|
36
41
|
/**
|
|
37
|
-
* Locks
|
|
38
|
-
*
|
|
39
|
-
* Pins the body with `position: fixed` to prevent background scrolling,
|
|
40
|
-
* which is necessary for iOS Safari where `overscroll-behavior: contain`
|
|
41
|
-
* does not prevent body scroll behind modals. Restores scroll position
|
|
42
|
-
* on unlock.
|
|
42
|
+
* Locks page scroll while `isLocked` is true.
|
|
43
43
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
44
|
+
* The page keeps its scroll offset, so nothing jumps on lock or unlock. Where
|
|
45
|
+
* the primary pointer is coarse (phones and tablets), the lock cancels a
|
|
46
|
+
* one-finger pan that would reach the page.
|
|
47
|
+
* Pans that a scroller in the overlay takes, and two-finger zoom, go through.
|
|
48
|
+
* The gutter of a classic scrollbar stays open, so the page does not shift
|
|
49
|
+
* sideways.
|
|
47
50
|
*
|
|
48
51
|
* @example
|
|
49
52
|
* ```
|
|
@@ -51,59 +54,53 @@ let originalBodyState: ScrollLockSnapshot | null = null;
|
|
|
51
54
|
* ```
|
|
52
55
|
*/
|
|
53
56
|
export function useScrollLock(isLocked: boolean): void {
|
|
57
|
+
// Syncs the document's scroll lock with `isLocked`. A count of holders keeps
|
|
58
|
+
// the page locked until the last one releases.
|
|
54
59
|
useEffect(() => {
|
|
55
60
|
if (!isLocked) {
|
|
56
61
|
return;
|
|
57
62
|
}
|
|
58
63
|
|
|
59
|
-
const {body} = document;
|
|
60
|
-
|
|
61
64
|
if (lockCount === 0) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
//
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
body.style.top = `-${scrollY}px`;
|
|
82
|
-
body.style.left = '0';
|
|
83
|
-
body.style.right = '0';
|
|
84
|
-
|
|
65
|
+
// The hold measures before the lock writes a style, so the lock forces no
|
|
66
|
+
// layout of its own. `settle` writes the gutter with the styles below.
|
|
67
|
+
const gutter = holdScrollbarGutter(document.documentElement);
|
|
68
|
+
// `overscroll-behavior-y: none` also keeps the browser's own
|
|
69
|
+
// pull-to-refresh (Chrome on Android) from reloading the page behind
|
|
70
|
+
// the overlay.
|
|
71
|
+
const releaseRootStyle = claimRootScrollStyle({
|
|
72
|
+
overflow: 'hidden',
|
|
73
|
+
overscrollBehaviorY: 'none',
|
|
74
|
+
});
|
|
75
|
+
// The hold asks the gesture host only if one exists, so the lock does
|
|
76
|
+
// not bring the host into every overlay's import.
|
|
77
|
+
const releasePageHold = holdPageScroll(
|
|
78
|
+
document,
|
|
79
|
+
// A drag on a pinch-zoomed page pans the zoomed view: it goes
|
|
80
|
+
// through, so a zoomed-in reader can move around the overlay.
|
|
81
|
+
(origin, dx, dy) =>
|
|
82
|
+
!isPageZoomedIn(document) && !isPanAbsorbedBeforePage(origin, dx, dy),
|
|
83
|
+
);
|
|
85
84
|
gutter.settle();
|
|
85
|
+
activeLock = {releaseRootStyle, releasePageHold, gutter};
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
lockCount += 1;
|
|
89
|
+
reportScrollLock(1);
|
|
89
90
|
|
|
90
91
|
return () => {
|
|
91
92
|
lockCount -= 1;
|
|
93
|
+
reportScrollLock(-1);
|
|
92
94
|
|
|
93
|
-
if (lockCount !== 0 ||
|
|
95
|
+
if (lockCount !== 0 || activeLock == null) {
|
|
94
96
|
return;
|
|
95
97
|
}
|
|
96
98
|
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
body.style.top = state.top;
|
|
103
|
-
body.style.left = state.left;
|
|
104
|
-
body.style.right = state.right;
|
|
105
|
-
state.gutter.release();
|
|
106
|
-
window.scrollTo(state.scrollX, state.scrollY);
|
|
99
|
+
const lock = activeLock;
|
|
100
|
+
activeLock = null;
|
|
101
|
+
lock.releasePageHold();
|
|
102
|
+
lock.releaseRootStyle();
|
|
103
|
+
lock.gutter.release();
|
|
107
104
|
};
|
|
108
105
|
}, [isLocked]);
|
|
109
106
|
}
|
|
@@ -216,6 +216,8 @@ export function useScrollableArea({
|
|
|
216
216
|
const getComposedViewportRef = useStableComposedRef(viewportRef);
|
|
217
217
|
const getComposedContentRef = useStableComposedRef(contentRef);
|
|
218
218
|
|
|
219
|
+
// Syncs the scroll geometry with the viewport and content nodes. It measures
|
|
220
|
+
// them, then follows resize, scroll, transition and font events.
|
|
219
221
|
useIsomorphicLayoutEffect(() => {
|
|
220
222
|
if (viewport == null || content == null) {
|
|
221
223
|
return;
|
|
@@ -430,6 +432,8 @@ export function useScrollableArea({
|
|
|
430
432
|
// commit. A loss waits for the next frame.
|
|
431
433
|
const previousOverflowRef = useRef<LogicalOverflowGeometry>(INITIAL_OVERFLOW);
|
|
432
434
|
const previousMappingRef = useRef<LogicalAxisMapping>(INITIAL_MAPPING);
|
|
435
|
+
// Measures the layout again when overflow starts or the writing-mode mapping
|
|
436
|
+
// changes. A new scrollbar gutter changes the geometry.
|
|
433
437
|
useIsomorphicLayoutEffect(() => {
|
|
434
438
|
const previous = previousOverflowRef.current;
|
|
435
439
|
const hasGainedOverflow =
|
|
@@ -178,6 +178,8 @@ export function useStreamingText(
|
|
|
178
178
|
'(prefers-reduced-motion: reduce)',
|
|
179
179
|
);
|
|
180
180
|
|
|
181
|
+
// Syncs the revealed text with an animation-frame clock while the text
|
|
182
|
+
// streams.
|
|
181
183
|
useEffect(() => {
|
|
182
184
|
if (!isStreaming || speed === 'instant' || prefersReducedMotion) {
|
|
183
185
|
return;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @generated by scripts/generate-i18n-runtime.mjs from packages/core/locales/en.json,
|
|
5
|
+
* holding the English for the catalog keys named in packages/core/src/PowerSearch/PowerSearchBottomSheet.tsx.
|
|
6
|
+
* Do not edit by hand. Run `pnpm generate:i18n-runtime` instead.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const english: Readonly<Record<string, string>> = {
|
|
10
|
+
"@astryx.powersearch.allFiltersRemoved": "All filters removed",
|
|
11
|
+
"@astryx.powersearch.editableFiltersRemoved": "Editable filters removed",
|
|
12
|
+
"@astryx.powersearch.editor.apply": "Apply",
|
|
13
|
+
"@astryx.powersearch.editor.cancel": "Cancel",
|
|
14
|
+
"@astryx.powersearch.editor.operator": "Operator",
|
|
15
|
+
"@astryx.powersearch.sheet.addFilter": "Add filter",
|
|
16
|
+
"@astryx.powersearch.sheet.clearAll": "Clear all",
|
|
17
|
+
"@astryx.powersearch.sheet.clearAllCancel": "Keep filters",
|
|
18
|
+
"@astryx.powersearch.sheet.clearAllConfirm": "Clear filters",
|
|
19
|
+
"@astryx.powersearch.sheet.clearAllDescription": "This removes all editable filters from this search.",
|
|
20
|
+
"@astryx.powersearch.sheet.clearAllTitle": "Clear all filters?",
|
|
21
|
+
"@astryx.powersearch.sheet.done": "Done",
|
|
22
|
+
"@astryx.powersearch.sheet.editableFiltersClearedWithCount": "Editable filters removed. {resultCount}",
|
|
23
|
+
"@astryx.powersearch.sheet.fieldOperator": "{field} {operator}",
|
|
24
|
+
"@astryx.powersearch.sheet.filterUnavailable": "This filter is no longer available",
|
|
25
|
+
"@astryx.powersearch.sheet.filtersClearedWithCount": "All filters removed. {resultCount}",
|
|
26
|
+
"@astryx.powersearch.sheet.filtersTitle": "Filters",
|
|
27
|
+
"@astryx.powersearch.sheet.labelValue": "{label} {value}",
|
|
28
|
+
"@astryx.powersearch.sheet.noFilters": "No filters applied",
|
|
29
|
+
"@astryx.powersearch.sheet.noFiltersDescription": "Add a filter to narrow your results and find what you need faster.",
|
|
30
|
+
"@astryx.powersearch.sheet.noMatchingFields": "No filters match your search",
|
|
31
|
+
"@astryx.powersearch.sheet.noResults": "No results found",
|
|
32
|
+
"@astryx.powersearch.sheet.removeFilter": "Remove {field} filter",
|
|
33
|
+
"@astryx.powersearch.sheet.search": "Search",
|
|
34
|
+
"@astryx.powersearch.sheet.searchFields": "Search filters",
|
|
35
|
+
"@astryx.powersearch.sheet.searchFieldsPlaceholder": "Search filters…",
|
|
36
|
+
"@astryx.powersearch.sheet.searchResults": "Search results",
|
|
37
|
+
"@astryx.powersearch.sheet.tryDifferentSearch": "Try a different search.",
|
|
38
|
+
"@astryx.powersearch.sheet.ungroupedFields": "General",
|
|
39
|
+
"@astryx.tokenizer.tokenAdded": "Added {label}",
|
|
40
|
+
"@astryx.tokenizer.tokenRemoved": "Removed {label}"
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default english;
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
const english: Readonly<Record<string, string>> = {
|
|
10
|
+
"@astryx.powersearch.sheet.relativeDaysAgo": "{count, number} {count, plural, one {day} other {days}} ago",
|
|
11
|
+
"@astryx.powersearch.sheet.relativeDaysFromNow": "{count, number} {count, plural, one {day} other {days}} from now",
|
|
12
|
+
"@astryx.powersearch.sheet.relativeMonthsAgo": "{count, number} {count, plural, one {month} other {months}} ago",
|
|
13
|
+
"@astryx.powersearch.sheet.relativeMonthsFromNow": "{count, number} {count, plural, one {month} other {months}} from now",
|
|
14
|
+
"@astryx.powersearch.sheet.relativeWeeksAgo": "{count, number} {count, plural, one {week} other {weeks}} ago",
|
|
15
|
+
"@astryx.powersearch.sheet.relativeWeeksFromNow": "{count, number} {count, plural, one {week} other {weeks}} from now",
|
|
10
16
|
"@astryx.powersearch.valueEditor.addValuesPlaceholder": "Add values…",
|
|
11
17
|
"@astryx.powersearch.valueEditor.date": "Date",
|
|
12
18
|
"@astryx.powersearch.valueEditor.dateRange": "date range",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @generated by scripts/generate-i18n-runtime.mjs from packages/core/locales/en.json,
|
|
5
|
+
* holding the English for the catalog keys named in packages/core/src/PowerSearch/formatTokenValue.ts.
|
|
6
|
+
* Do not edit by hand. Run `pnpm generate:i18n-runtime` instead.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const english: Readonly<Record<string, string>> = {
|
|
10
|
+
"@astryx.powersearch.valueEditor.dateRange": "date range",
|
|
11
|
+
"@astryx.powersearch.valueEditor.filtersCount": "{count, number} {count, plural, one {filter} other {filters}}",
|
|
12
|
+
"@astryx.powersearch.valueEditor.itemsCount": "{count, number} {count, plural, one {item} other {items}}"
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default english;
|
|
@@ -78,6 +78,47 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
|
|
|
78
78
|
'{count, number} {count, plural, one {filter} other {filters}}',
|
|
79
79
|
'@astryx.powersearch.resultCount':
|
|
80
80
|
'{count, number} {count, plural, one {result} other {results}}',
|
|
81
|
+
'@astryx.powersearch.sheet.filtersTitle': 'Filters',
|
|
82
|
+
'@astryx.powersearch.sheet.addFilter': 'Add filter',
|
|
83
|
+
'@astryx.powersearch.sheet.noFilters': 'No filters applied',
|
|
84
|
+
'@astryx.powersearch.sheet.noFiltersDescription':
|
|
85
|
+
'Add a filter to narrow your results and find what you need faster.',
|
|
86
|
+
'@astryx.powersearch.sheet.clearAll': 'Clear all',
|
|
87
|
+
'@astryx.powersearch.sheet.clearAllTitle': 'Clear all filters?',
|
|
88
|
+
'@astryx.powersearch.sheet.clearAllDescription':
|
|
89
|
+
'This removes all editable filters from this search.',
|
|
90
|
+
'@astryx.powersearch.sheet.clearAllConfirm': 'Clear filters',
|
|
91
|
+
'@astryx.powersearch.sheet.clearAllCancel': 'Keep filters',
|
|
92
|
+
'@astryx.powersearch.sheet.done': 'Done',
|
|
93
|
+
'@astryx.powersearch.sheet.search': 'Search',
|
|
94
|
+
'@astryx.powersearch.sheet.searchResults': 'Search results',
|
|
95
|
+
'@astryx.powersearch.sheet.searchFields': 'Search filters',
|
|
96
|
+
'@astryx.powersearch.sheet.searchFieldsPlaceholder': 'Search filters…',
|
|
97
|
+
'@astryx.powersearch.sheet.ungroupedFields': 'General',
|
|
98
|
+
'@astryx.powersearch.sheet.noMatchingFields': 'No filters match your search',
|
|
99
|
+
'@astryx.powersearch.sheet.tryDifferentSearch': 'Try a different search.',
|
|
100
|
+
'@astryx.powersearch.sheet.noResults': 'No results found',
|
|
101
|
+
'@astryx.powersearch.sheet.filterUnavailable':
|
|
102
|
+
'This filter is no longer available',
|
|
103
|
+
'@astryx.powersearch.sheet.removeFilter': 'Remove {field} filter',
|
|
104
|
+
'@astryx.powersearch.sheet.relativeDaysAgo':
|
|
105
|
+
'{count, number} {count, plural, one {day} other {days}} ago',
|
|
106
|
+
'@astryx.powersearch.sheet.relativeDaysFromNow':
|
|
107
|
+
'{count, number} {count, plural, one {day} other {days}} from now',
|
|
108
|
+
'@astryx.powersearch.sheet.relativeWeeksAgo':
|
|
109
|
+
'{count, number} {count, plural, one {week} other {weeks}} ago',
|
|
110
|
+
'@astryx.powersearch.sheet.relativeWeeksFromNow':
|
|
111
|
+
'{count, number} {count, plural, one {week} other {weeks}} from now',
|
|
112
|
+
'@astryx.powersearch.sheet.relativeMonthsAgo':
|
|
113
|
+
'{count, number} {count, plural, one {month} other {months}} ago',
|
|
114
|
+
'@astryx.powersearch.sheet.relativeMonthsFromNow':
|
|
115
|
+
'{count, number} {count, plural, one {month} other {months}} from now',
|
|
116
|
+
'@astryx.powersearch.sheet.fieldOperator': '{field} {operator}',
|
|
117
|
+
'@astryx.powersearch.sheet.labelValue': '{label} {value}',
|
|
118
|
+
'@astryx.powersearch.sheet.filtersClearedWithCount':
|
|
119
|
+
'All filters removed. {resultCount}',
|
|
120
|
+
'@astryx.powersearch.sheet.editableFiltersClearedWithCount':
|
|
121
|
+
'Editable filters removed. {resultCount}',
|
|
81
122
|
'@astryx.alertDialog.cancel': 'Cancel',
|
|
82
123
|
'@astryx.appShell.mobileNavigation': 'Mobile navigation',
|
|
83
124
|
'@astryx.appShell.skipToContent': 'Skip to content',
|
|
@@ -80,6 +80,48 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
|
|
|
80
80
|
'⟦{count, number} {count, plural, one {filter} other {filters}}⟧',
|
|
81
81
|
'@astryx.powersearch.resultCount':
|
|
82
82
|
'⟦{count, number} {count, plural, one {result} other {results}}⟧',
|
|
83
|
+
'@astryx.powersearch.sheet.filtersTitle': '⟦Ƒíłţéřš⟧',
|
|
84
|
+
'@astryx.powersearch.sheet.addFilter': '⟦Àðð ƒíłţéř⟧',
|
|
85
|
+
'@astryx.powersearch.sheet.noFilters': '⟦Ñó ƒíłţéřš àþþłíéð⟧',
|
|
86
|
+
'@astryx.powersearch.sheet.noFiltersDescription':
|
|
87
|
+
'⟦Àðð à ƒíłţéř ţó ñàřřóŵ ýóúř řéšúłţš àñð ƒíñð ŵĥàţ ýóú ñééð ƒàšţéř.⟧',
|
|
88
|
+
'@astryx.powersearch.sheet.clearAll': '⟦Çłéàř àłł⟧',
|
|
89
|
+
'@astryx.powersearch.sheet.clearAllTitle': '⟦Çłéàř àłł ƒíłţéřš?⟧',
|
|
90
|
+
'@astryx.powersearch.sheet.clearAllDescription':
|
|
91
|
+
'⟦Ţĥíš řéɱóṽéš àłł éðíţàƀłé ƒíłţéřš ƒřóɱ ţĥíš šéàřçĥ.⟧',
|
|
92
|
+
'@astryx.powersearch.sheet.clearAllConfirm': '⟦Çłéàř ƒíłţéřš⟧',
|
|
93
|
+
'@astryx.powersearch.sheet.clearAllCancel': '⟦Ķééþ ƒíłţéřš⟧',
|
|
94
|
+
'@astryx.powersearch.sheet.done': '⟦Ðóñé⟧',
|
|
95
|
+
'@astryx.powersearch.sheet.search': '⟦Šéàřçĥ⟧',
|
|
96
|
+
'@astryx.powersearch.sheet.searchResults': '⟦Šéàřçĥ řéšúłţš⟧',
|
|
97
|
+
'@astryx.powersearch.sheet.searchFields': '⟦Šéàřçĥ ƒíłţéřš⟧',
|
|
98
|
+
'@astryx.powersearch.sheet.searchFieldsPlaceholder': '⟦Šéàřçĥ ƒíłţéřš…⟧',
|
|
99
|
+
'@astryx.powersearch.sheet.ungroupedFields': '⟦Ĝéñéřàł⟧',
|
|
100
|
+
'@astryx.powersearch.sheet.noMatchingFields':
|
|
101
|
+
'⟦Ñó ƒíłţéřš ɱàţçĥ ýóúř šéàřçĥ⟧',
|
|
102
|
+
'@astryx.powersearch.sheet.tryDifferentSearch': '⟦Ţřý à ð탃éřéñţ šéàřçĥ.⟧',
|
|
103
|
+
'@astryx.powersearch.sheet.noResults': '⟦Ñó řéšúłţš ƒóúñð⟧',
|
|
104
|
+
'@astryx.powersearch.sheet.filterUnavailable':
|
|
105
|
+
'⟦Ţĥíš ƒíłţéř íš ñó łóñĝéř àṽàíłàƀłé⟧',
|
|
106
|
+
'@astryx.powersearch.sheet.removeFilter': '⟦Řéɱóṽé {field} ƒíłţéř⟧',
|
|
107
|
+
'@astryx.powersearch.sheet.relativeDaysAgo':
|
|
108
|
+
'⟦{count, number} {count, plural, one {day} other {days}} àĝó⟧',
|
|
109
|
+
'@astryx.powersearch.sheet.relativeDaysFromNow':
|
|
110
|
+
'⟦{count, number} {count, plural, one {day} other {days}} ƒřóɱ ñóŵ⟧',
|
|
111
|
+
'@astryx.powersearch.sheet.relativeWeeksAgo':
|
|
112
|
+
'⟦{count, number} {count, plural, one {week} other {weeks}} àĝó⟧',
|
|
113
|
+
'@astryx.powersearch.sheet.relativeWeeksFromNow':
|
|
114
|
+
'⟦{count, number} {count, plural, one {week} other {weeks}} ƒřóɱ ñóŵ⟧',
|
|
115
|
+
'@astryx.powersearch.sheet.relativeMonthsAgo':
|
|
116
|
+
'⟦{count, number} {count, plural, one {month} other {months}} àĝó⟧',
|
|
117
|
+
'@astryx.powersearch.sheet.relativeMonthsFromNow':
|
|
118
|
+
'⟦{count, number} {count, plural, one {month} other {months}} ƒřóɱ ñóŵ⟧',
|
|
119
|
+
'@astryx.powersearch.sheet.fieldOperator': '⟦{field} {operator}⟧',
|
|
120
|
+
'@astryx.powersearch.sheet.labelValue': '⟦{label} {value}⟧',
|
|
121
|
+
'@astryx.powersearch.sheet.filtersClearedWithCount':
|
|
122
|
+
'⟦Àłł ƒíłţéřš řéɱóṽéð. {resultCount}⟧',
|
|
123
|
+
'@astryx.powersearch.sheet.editableFiltersClearedWithCount':
|
|
124
|
+
'⟦Éðíţàƀłé ƒíłţéřš řéɱóṽéð. {resultCount}⟧',
|
|
83
125
|
'@astryx.alertDialog.cancel': '⟦Çàñçéł⟧',
|
|
84
126
|
'@astryx.appShell.mobileNavigation': '⟦Ṁóƀíłé ñàṽíĝàţíóñ⟧',
|
|
85
127
|
'@astryx.appShell.skipToContent': '⟦Šķíþ ţó çóñţéñţ⟧',
|
package/src/index.ts
CHANGED
|
@@ -173,6 +173,19 @@ export * from './Outline';
|
|
|
173
173
|
// Overflow list
|
|
174
174
|
export * from './OverflowList';
|
|
175
175
|
|
|
176
|
+
// Animating one element: from the package root only, since one API has one
|
|
177
|
+
// entry. Its hook ships from './hooks'.
|
|
178
|
+
export {
|
|
179
|
+
createAnimator,
|
|
180
|
+
type Animator,
|
|
181
|
+
type AnimatorAnimateOptions,
|
|
182
|
+
type AnimatorChannel,
|
|
183
|
+
type AnimatorDecayVelocity,
|
|
184
|
+
type AnimatorHandle,
|
|
185
|
+
type AnimatorSnapshot,
|
|
186
|
+
type AnimatorValues,
|
|
187
|
+
} from './animator/createAnimator';
|
|
188
|
+
|
|
176
189
|
// Hooks
|
|
177
190
|
export * from './hooks';
|
|
178
191
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file indicatorPress.stylex.ts
|
|
5
|
+
* @input Uses StyleX
|
|
6
|
+
* @output Exports `indicatorPressScope`, the marker of a first-party
|
|
7
|
+
* indicator that paints its own press
|
|
8
|
+
* @position Internal entry for Astryx's own replacement indicators;
|
|
9
|
+
* CheckboxInput reads it
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import * as stylex from '@stylexjs/stylex';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Marks a first-party replacement indicator that paints its own press, for
|
|
16
|
+
* a shape that CheckboxInput's rounded-square press layer would tint past,
|
|
17
|
+
* such as a circle. CheckboxInput leaves that layer off over an indicator
|
|
18
|
+
* with this marker.
|
|
19
|
+
*
|
|
20
|
+
* @internal Not public API: the touch press reaches the indicator through a
|
|
21
|
+
* private property.
|
|
22
|
+
*/
|
|
23
|
+
export const indicatorPressScope: ReturnType<typeof stylex.defineMarker> =
|
|
24
|
+
stylex.defineMarker();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
/**
|
|
3
|
+
* @file selectable-card.ts
|
|
4
|
+
* @input SelectableCard's internal input context, the Field input styling
|
|
5
|
+
* rule and the aria id joiner
|
|
6
|
+
* @output `@astryxdesign/core/internal/selectable-card`:
|
|
7
|
+
* SelectableCardInputContext, useFieldInputStyling and joinAriaIDs,
|
|
8
|
+
* re-exported by name
|
|
9
|
+
* for Lab's SelectableCardGroup
|
|
10
|
+
* @position An internal entry reserved for Astryx's own packages:
|
|
11
|
+
* undocumented, outside the public API and its compatibility promise,
|
|
12
|
+
* versioned in lockstep with Core, and allowed only in Core and Lab by the
|
|
13
|
+
* `@astryx/no-core-internal-import` lint rule. Core components import the
|
|
14
|
+
* same modules by relative path. Named re-exports only.
|
|
15
|
+
*
|
|
16
|
+
* SYNC: When modified, update scripts/sync-exports.js.
|
|
17
|
+
*/
|
|
18
|
+
export {SelectableCardInputContext} from '../SelectableCard/selectableCardInput';
|
|
19
|
+
export type {SelectableCardInput} from '../SelectableCard/selectableCardInput';
|
|
20
|
+
export {useFieldInputStyling} from '../Field/fieldParts';
|
|
21
|
+
export {joinAriaIDs} from '../utils/inputAria';
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* @input A sheet's selection at open, its draft, and the last edit made
|
|
5
5
|
* @output SheetDraftChange, hasSameSelection, nameSheetDraftChange — the
|
|
6
6
|
* rules a touch sheet's Save and dismissal share
|
|
7
|
-
* @position Core-internal
|
|
8
|
-
*
|
|
7
|
+
* @position Core-internal. The Tokenizer sheet uses it, and PowerSearch's
|
|
8
|
+
* list-value step renders that sheet. Not a public export.
|
|
9
9
|
*
|
|
10
10
|
* A touch sheet edits a draft and reports it once, on Save, with one change:
|
|
11
11
|
* the last edit that still holds, else the nearest net add or remove. A
|
|
@@ -286,3 +286,21 @@ fades in, with Prefer Cross-Fade Transitions on or off.
|
|
|
286
286
|
| M-CM4 | Reduce Motion press feedback | Probe app with Reduce Motion on: long press, then dismiss | press feedback, lift and dismiss animations under Reduce Motion | A, B |
|
|
287
287
|
| M-CM5 | Commit haptic stand-in | An Android device: `navigator.vibrate` patterns against the platform's HapticFeedbackConstants for the context-click moment | the pattern that matches; not a UIKit parity value (as M-G18) | H |
|
|
288
288
|
| M-CM6 | Press thresholds | Probe app: repeated long presses at random vsync phases | from touch receipt and from the HID timestamp, the tick before and the tick at the press observer's began and at the click commit; the intersection pins the 150 ms and 400 ms thresholds | C |
|
|
289
|
+
|
|
290
|
+
## Picker (UIPickerView)
|
|
291
|
+
|
|
292
|
+
Values the Wheel reads from its own table (`uikit/picker.ts`).
|
|
293
|
+
|
|
294
|
+
The recordings are of a 402 × 216 pt UIPickerView with two columns of 24 and
|
|
295
|
+
60 rows. It runs in an instrumented host app on the iOS 26.2 simulator
|
|
296
|
+
(iPhone 17 Pro), driven by real HID touches. They hold per-frame offsets, the
|
|
297
|
+
table views' and cells' layers, the delegate calls and the haptics.
|
|
298
|
+
|
|
299
|
+
Done (UIKit lab, iOS 26.2 simulator, Oct 23 2026; in the picker's table): the
|
|
300
|
+
row pitch, the picker's height, the rubber band's dimension, the coast's stop
|
|
301
|
+
speed, the velocity floor, the snap at rest, the tap spin and the selection
|
|
302
|
+
tick. Measured and kept by the gesture system instead: the
|
|
303
|
+
scroll view coasts with 0.25 × the pan's velocity plus 0.75 × its value one
|
|
304
|
+
event earlier (four HID releases; `velocity.scrollReleaseWeight`, which a
|
|
305
|
+
pan's `scrollVelocity()` reads). On UIKit, Reduce Motion with Prefer Cross-Fade changes
|
|
306
|
+
nothing on a picker; the Wheel follows design:reduced-motion instead.
|
package/src/motion/README.md
CHANGED
|
@@ -19,9 +19,11 @@ roles through `resolveMotion`.
|
|
|
19
19
|
| `uikit/scroll.ts` | UIScrollView: deceleration rates, rubber band, bounce-back spring, `delaysContentTouches`, scroll to top. |
|
|
20
20
|
| `uikit/timing.ts` | Non-spring clocks and curves: press highlight, Core Animation's named curves, keyboard, Reduced Motion cross-fade. |
|
|
21
21
|
| `uikit/paging.ts` | A paging UIScrollView: the integrator that settles a release on its page, the page rule, the catch, `setContentOffset(animated:)`. |
|
|
22
|
+
| `uikit/alert.ts` | UIAlertController: how a finger is tracked across the actions (highlight onset and bounds). |
|
|
22
23
|
| `uikit/navigation.ts` | UINavigationController: push velocity, parallax, dimming, transition clock, interactive pop finish rule. |
|
|
23
24
|
| `uikit/progressBar.ts` | UIProgressView's fill: the whole-track duration and curve, its minimum length and empty alpha; the reduced-motion pulse (three roles). |
|
|
24
25
|
| `uikit/gestures.ts` | Gesture recognizer thresholds, the velocity filter and haptic stand-ins, as `{value, unit}` entries (sources in JSDoc). |
|
|
26
|
+
| `uikit/picker.ts` | UIPickerView: row pitch, height and rubber band, velocity floor, the coast's stop speed, snap at rest, tap spin, tick. |
|
|
25
27
|
| `uikit/segmented.ts` | UISegmentedControl: the selection indicator's spring; under Reduce Motion the animator's cross-fade replaces it. |
|
|
26
28
|
| `uikit/switch.ts` | UISwitch on iOS 26.2: geometry, the lift, settle, travel and tracking springs, the flip distance, the track colour. |
|
|
27
29
|
| `roles.ts` | The internal motion roles: the springs, durations and curves `spec:AST-094` FR4 names, registered by the shared tables, and a role's CSS form read back. |
|
|
@@ -37,6 +39,7 @@ roles through `resolveMotion`.
|
|
|
37
39
|
| `resolveSnapPoint.ts` | Release policy: the snap point a release lands on (flick, back-out cancel, step limit), on `selectSnapPoint`. Internal. |
|
|
38
40
|
| `bezier.ts` | Cubic-bézier timing functions (Core Animation's named curves). |
|
|
39
41
|
| `animator.ts` | Compositor animator: springs, coasts and any closed-form curve compiled to Web Animations, read back analytically. |
|
|
42
|
+
| `progress.ts` | A spring's progress, one curve mapped from another (companions, clamped ranges), the velocity that continues a motion. |
|
|
40
43
|
| `presentation.ts` | Where each moving element is drawn relative to where the engine hit-tests it, reported by the animator while translate runs; read by the gesture host at touch-down. |
|
|
41
44
|
| `reducedMotionPlan.ts` | The animator's Reduce Motion planner: what one call becomes, a cross-fade whose travel lands while transparent or at once. |
|
|
42
45
|
| `__tests__/animator.interaction.browser.spec.ts` | Browser proofs on the interaction harness (Chromium and WebKit): busy main thread, end state through a block, no Layout / Paint, seeked curves, a dialog's backdrop. |
|
|
@@ -64,7 +67,7 @@ the timings that decide who gets a touch are not roles.
|
|
|
64
67
|
## Animator
|
|
65
68
|
|
|
66
69
|
```
|
|
67
|
-
import {
|
|
70
|
+
import {createMotionAnimator} from '../motion/animator';
|
|
68
71
|
import {coast} from '../motion/coast';
|
|
69
72
|
import {solveSpringTowardRamp, toSpring} from '../motion/spring';
|
|
70
73
|
import {resolveMotion} from '../motion/resolveMotion';
|
|
@@ -73,7 +76,7 @@ import {registerSpringsTable, springs} from '../motion/uikit';
|
|
|
73
76
|
// Once, so the springs are registered as their roles:
|
|
74
77
|
registerSpringsTable();
|
|
75
78
|
|
|
76
|
-
const animator =
|
|
79
|
+
const animator = createMotionAnimator(sheet);
|
|
77
80
|
// The animator plays a motion role (spec:AST-094 FR4), its table value, as the
|
|
78
81
|
// per-role tables stay internal (DEC-15); math on a spring reads the role with
|
|
79
82
|
// resolveMotion.
|
|
@@ -138,8 +141,10 @@ await handle.finished; // true if it ran to the end, false if interrupted
|
|
|
138
141
|
presented call's second frame) runs on over two frames, the start moves to
|
|
139
142
|
the call's first read after it, with every call of that task. Everything
|
|
140
143
|
the call starts shares that start
|
|
141
|
-
(`handle.started`); a retarget
|
|
142
|
-
|
|
144
|
+
(`handle.started`); a retarget of a curve that still moves keeps an
|
|
145
|
+
explicit one, while one on a tail that already shows as at rest (within two
|
|
146
|
+
sample tolerances of its target, and slower than one a frame) counts as a
|
|
147
|
+
call from rest. `{at}` puts several animators on one clock. `{start: 'commit'}` lets the browser date
|
|
143
148
|
a retarget too; `{start: 'presented'}` waits two frames, until the
|
|
144
149
|
element at rest has been presented. `handle.curve(property)` is the curve
|
|
145
150
|
a call plays, for a companion to follow. `{additive: true}` retargets the
|
|
@@ -168,7 +173,7 @@ await handle.finished; // true if it ran to the end, false if interrupted
|
|
|
168
173
|
- `animatorFor(element)` returns the one animator for an element, so code
|
|
169
174
|
that animates it from several places (a swipe on x, a removal on y)
|
|
170
175
|
composes in one `translate` track.
|
|
171
|
-
- `
|
|
176
|
+
- `createMotionAnimator(dialog, {pseudoElement: '::backdrop'})` drives a
|
|
172
177
|
pseudo-element; with no inline style to hold it, a static filling animation
|
|
173
178
|
holds its end value until the next animation replaces it, while the
|
|
174
179
|
pseudo-element exists. A dialog's `::backdrop` is made again each time the
|
|
@@ -89,8 +89,10 @@ import {
|
|
|
89
89
|
wrapText,
|
|
90
90
|
} from './transientCopy';
|
|
91
91
|
import {isSpring} from './roleValue';
|
|
92
|
-
import {
|
|
92
|
+
import {progressCurve} from './progress';
|
|
93
|
+
import type {SpringDescription} from './spring';
|
|
93
94
|
import {registerSpringsTable, SETTLE_SPRING} from './uikit/springs';
|
|
95
|
+
import {themeReducesMotion} from '../privateAttributes/reducedMotion.stylex';
|
|
94
96
|
import {reducedMotionCrossFade} from './uikit/timing';
|
|
95
97
|
|
|
96
98
|
/** The shared motion role (`spec:AST-105` FR4). */
|
|
@@ -142,17 +144,20 @@ function settleSpring(): SpringDescription {
|
|
|
142
144
|
}
|
|
143
145
|
|
|
144
146
|
function springProgress(description: SpringDescription): SpringProgress {
|
|
145
|
-
const curve =
|
|
146
|
-
const durationMs = Math.max(1, curve.
|
|
147
|
+
const curve = progressCurve(description, {epsilon: 0.001});
|
|
148
|
+
const durationMs = Math.max(1, curve.duration * 1000);
|
|
147
149
|
return {
|
|
148
150
|
durationMs,
|
|
149
|
-
remaining: t => (t >= durationMs ? 0 : curve.
|
|
151
|
+
remaining: t => (t >= durationMs ? 0 : 1 - curve.at(t / 1000)),
|
|
150
152
|
};
|
|
151
153
|
}
|
|
152
154
|
|
|
153
155
|
/** The motion a change in `area` plays now. */
|
|
154
156
|
function layoutMotion(area: Element): LayoutMotion {
|
|
155
|
-
if (
|
|
157
|
+
if (
|
|
158
|
+
matches(area, '(prefers-reduced-motion: reduce)') ||
|
|
159
|
+
themeReducesMotion(area)
|
|
160
|
+
) {
|
|
156
161
|
if (!matches(area, '(pointer: coarse)')) {
|
|
157
162
|
return {kind: 'instant'};
|
|
158
163
|
}
|