@astryxdesign/core 0.7.7 → 0.7.8-canary.30b1896
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/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +1 -0
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +4 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
- package/dist/DateInput/useOwnScrollGesture.js +3 -0
- 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/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/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 +36 -6
- 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/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/TouchDateField.tsx +1 -0
- package/src/DateInput/Wheel.tsx +4 -0
- package/src/DateInput/useOwnScrollGesture.ts +2 -0
- package/src/DateInput/usePointerDragScroll.ts +1 -0
- package/src/DateInput/useScrollSettle.ts +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/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/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/README.md +9 -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/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
|
@@ -50,18 +50,18 @@ export interface AnimateOptions {
|
|
|
50
50
|
crossfadeAs?: 'entrance' | 'exit';
|
|
51
51
|
/**
|
|
52
52
|
* When the call's animations start. By default a call from rest starts
|
|
53
|
-
* when the browser commits it
|
|
54
|
-
*
|
|
53
|
+
* when the browser commits it. A call that continues motion on screen (a
|
|
54
|
+
* retarget) starts now, from the value on screen. A curve whose tail
|
|
55
|
+
* already shows as at rest counts as rest. Ignored with `at`.
|
|
55
56
|
* - `'commit'`: a call that continues motion also starts when the browser
|
|
56
|
-
* commits it
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* continues motion on screen (a retarget) starts now, as by default.
|
|
57
|
+
* commits it. The browser dates it, as it dates a call from rest.
|
|
58
|
+
* - `'presented'`: a call from rest leaves its element at rest. Its
|
|
59
|
+
* animations are created two frames later, once the frame with the
|
|
60
|
+
* element at rest has been presented. They then start at their commit,
|
|
61
|
+
* so a busy UI process delays the motion instead of skipping into it.
|
|
62
|
+
* Any other change to the animator before then creates the animations
|
|
63
|
+
* first, in call order. A call that continues motion on screen starts
|
|
64
|
+
* now, as by default.
|
|
65
65
|
*/
|
|
66
66
|
start?: 'commit' | 'presented';
|
|
67
67
|
/**
|
|
@@ -101,7 +101,7 @@ export interface MotionCurve {
|
|
|
101
101
|
readonly isTransition?: boolean;
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
|
-
* Options of `
|
|
104
|
+
* Options of `createMotionAnimator`.
|
|
105
105
|
*/
|
|
106
106
|
/** How `set` puts values in place. */
|
|
107
107
|
export interface SetOptions {
|
|
@@ -302,7 +302,7 @@ export declare function defaultIsCoarsePointer(): boolean;
|
|
|
302
302
|
*
|
|
303
303
|
* @example
|
|
304
304
|
* ```
|
|
305
|
-
* const animator =
|
|
305
|
+
* const animator = createMotionAnimator(sheet);
|
|
306
306
|
* // finger lifts at 1200 px/s heading for the detent at 0 (a component
|
|
307
307
|
* // passes the spring of its motion role):
|
|
308
308
|
* animator.animate({y: 0}, {spring: {response: 0.45, dampingRatio: 0.9}, velocity: {y: 1200}});
|
|
@@ -311,5 +311,5 @@ export declare function defaultIsCoarsePointer(): boolean;
|
|
|
311
311
|
* animator.stop(['y']);
|
|
312
312
|
* ```
|
|
313
313
|
*/
|
|
314
|
-
export declare function
|
|
314
|
+
export declare function createMotionAnimator(element: HTMLElement | null, options?: AnimatorOptions): Animator;
|
|
315
315
|
//# sourceMappingURL=animator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animator.d.ts","sourceRoot":"","sources":["../../src/motion/animator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"animator.d.ts","sourceRoot":"","sources":["../../src/motion/animator.ts"],"names":[],"mappings":"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"}
|
package/dist/motion/animator.js
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* @file animator.ts
|
|
5
5
|
* @input An element, target values, and a spring, momentum curves (coast.ts)
|
|
6
6
|
* or any closed-form curve
|
|
7
|
-
* @output Exports `
|
|
8
|
-
* rotate, scale and opacity,
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
7
|
+
* @output Exports `createMotionAnimator`, a compositor animator for
|
|
8
|
+
* translate, rotate, scale and opacity, and its option, handle and
|
|
9
|
+
* transition types. It reads presentation values and velocities from the
|
|
10
|
+
* analytic curves. It retargets with the velocity kept, freezes in place on
|
|
11
|
+
* `stop`, and gives completion promises, a shared clock, and UIKit's
|
|
12
|
+
* Reduced Motion substitution.
|
|
12
13
|
* @position Motion foundation (DOM). Internal to core: components use it for
|
|
13
14
|
* every touch-presentation animation; not exported from the package entry
|
|
14
15
|
*
|
|
@@ -185,6 +186,7 @@ import { registerPresentedOffset } from "./presentation.js";
|
|
|
185
186
|
import { resolveMotion } from "./resolveMotion.js";
|
|
186
187
|
import { reducedMotionCrossFade, registerReducedMotionCrossFade } from "./uikit/timing.js";
|
|
187
188
|
import { planReducedMotion } from "./reducedMotionPlan.js";
|
|
189
|
+
import { themeReducesMotion } from "../privateAttributes/reducedMotion.stylex.js";
|
|
188
190
|
|
|
189
191
|
/**
|
|
190
192
|
* A value the animator can drive.
|
|
@@ -212,7 +214,7 @@ import { planReducedMotion } from "./reducedMotionPlan.js";
|
|
|
212
214
|
*/
|
|
213
215
|
|
|
214
216
|
/**
|
|
215
|
-
* Options of `
|
|
217
|
+
* Options of `createMotionAnimator`.
|
|
216
218
|
*/
|
|
217
219
|
/** How `set` puts values in place. */
|
|
218
220
|
|
|
@@ -292,6 +294,18 @@ const SAMPLE_TOLERANCE = {
|
|
|
292
294
|
/** Keyframes start on this grid (ms) and are split where the curve needs it. */
|
|
293
295
|
const SAMPLE_GRID_MS = 1000 / 30;
|
|
294
296
|
|
|
297
|
+
/**
|
|
298
|
+
* A curve within this many sample tolerances of its target can show as at
|
|
299
|
+
* rest. A call on it then starts as one from rest does, at the browser's start.
|
|
300
|
+
*/
|
|
301
|
+
const REST_DISTANCE_TOLERANCES = 2;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* A curve shows as at rest only while it moves at most one `SAMPLE_TOLERANCE`
|
|
305
|
+
* a frame at this rate.
|
|
306
|
+
*/
|
|
307
|
+
const REST_FRAMES_PER_SECOND = 60;
|
|
308
|
+
|
|
295
309
|
/** A curve that has not settled by then (an undamped spring) snaps. */
|
|
296
310
|
const MAX_DURATION_MS = 30_000;
|
|
297
311
|
|
|
@@ -420,7 +434,7 @@ export function animatorFor(element, options = {}) {
|
|
|
420
434
|
const key = options.pseudoElement ?? '';
|
|
421
435
|
let animator = byPseudo.get(key);
|
|
422
436
|
if (animator == null) {
|
|
423
|
-
animator =
|
|
437
|
+
animator = createMotionAnimator(element, options);
|
|
424
438
|
byPseudo.set(key, animator);
|
|
425
439
|
}
|
|
426
440
|
return animator;
|
|
@@ -524,7 +538,7 @@ const REDUCED_TRANSITION = {
|
|
|
524
538
|
*
|
|
525
539
|
* @example
|
|
526
540
|
* ```
|
|
527
|
-
* const animator =
|
|
541
|
+
* const animator = createMotionAnimator(sheet);
|
|
528
542
|
* // finger lifts at 1200 px/s heading for the detent at 0 (a component
|
|
529
543
|
* // passes the spring of its motion role):
|
|
530
544
|
* animator.animate({y: 0}, {spring: {response: 0.45, dampingRatio: 0.9}, velocity: {y: 1200}});
|
|
@@ -533,7 +547,7 @@ const REDUCED_TRANSITION = {
|
|
|
533
547
|
* animator.stop(['y']);
|
|
534
548
|
* ```
|
|
535
549
|
*/
|
|
536
|
-
export function
|
|
550
|
+
export function createMotionAnimator(element, options = {}) {
|
|
537
551
|
const now = options.now ?? defaultNow;
|
|
538
552
|
const frameSource = options.requestFrame ?? (typeof requestAnimationFrame === 'function' ? callback => {
|
|
539
553
|
requestAnimationFrame(() => callback());
|
|
@@ -552,8 +566,9 @@ export function createAnimator(element, options = {}) {
|
|
|
552
566
|
};
|
|
553
567
|
const pseudoElement = options.pseudoElement;
|
|
554
568
|
// Reduced Motion reads the person's settings and nothing else: no option
|
|
555
|
-
// overrides them (design:reduced-motion DR4).
|
|
556
|
-
|
|
569
|
+
// overrides them (design:reduced-motion DR4). A theme that reduces motion
|
|
570
|
+
// for everyone counts as the setting.
|
|
571
|
+
const prefersReducedMotion = () => defaultPrefersReducedMotion() || themeReducesMotion(target);
|
|
557
572
|
const isCoarsePointer = defaultIsCoarsePointer;
|
|
558
573
|
const resting = {
|
|
559
574
|
...IDENTITY,
|
|
@@ -737,6 +752,14 @@ export function createAnimator(element, options = {}) {
|
|
|
737
752
|
}
|
|
738
753
|
return curveAt(property, time);
|
|
739
754
|
};
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* Whether a curve's tail already shows as at rest at `time`. Under a
|
|
758
|
+
* starved main thread the browser commits a call late. A call that starts
|
|
759
|
+
* at its own time then skips that far into its curve. One that starts at
|
|
760
|
+
* the commit holds an element that hardly moves.
|
|
761
|
+
*/
|
|
762
|
+
const showsAtRest = (property, segment, time) => Math.abs(valueAt(property, time) - segment.target) <= REST_DISTANCE_TOLERANCES * SAMPLE_TOLERANCE[property] && Math.abs(velocityAt(property, time)) <= SAMPLE_TOLERANCE[property] * REST_FRAMES_PER_SECOND;
|
|
740
763
|
const velocityAt = (property, time) => {
|
|
741
764
|
const held = segments.get(property);
|
|
742
765
|
if (held != null && isHeld(held)) {
|
|
@@ -1506,10 +1529,10 @@ export function createAnimator(element, options = {}) {
|
|
|
1506
1529
|
// -- starting from rest ---------------------------------------------------
|
|
1507
1530
|
|
|
1508
1531
|
/**
|
|
1509
|
-
* A call starts from rest when nothing on the channels it drives
|
|
1510
|
-
*
|
|
1511
|
-
*
|
|
1512
|
-
* start.
|
|
1532
|
+
* A call starts from rest when nothing on the channels it drives moves on
|
|
1533
|
+
* screen and nothing pins its clock (`at`). A curve still waiting for its
|
|
1534
|
+
* first frame counts as rest, as does one whose tail already shows as at
|
|
1535
|
+
* rest. Returns its start group, or null for an explicit start.
|
|
1513
1536
|
*/
|
|
1514
1537
|
const beginGroup = (time, properties, at, start) => {
|
|
1515
1538
|
if (target == null || typeof target.animate !== 'function') {
|
|
@@ -1538,16 +1561,18 @@ export function createAnimator(element, options = {}) {
|
|
|
1538
1561
|
}
|
|
1539
1562
|
return null;
|
|
1540
1563
|
}
|
|
1541
|
-
// A call that continues motion starts now unless it asks for the
|
|
1542
|
-
// browser's start (`commit`). `presented` asks only for a call from rest
|
|
1543
|
-
//
|
|
1544
|
-
// the value and velocity on screen
|
|
1564
|
+
// A call that continues motion starts now, unless it asks for the
|
|
1565
|
+
// browser's start (`commit`). `presented` asks only for a call from rest.
|
|
1566
|
+
// A curve that still moves is not at rest, so a call on it starts now,
|
|
1567
|
+
// from the value and velocity on screen. A tail that shows as at rest
|
|
1568
|
+
// counts as rest, so a call on it waits, under `presented` for its two
|
|
1569
|
+
// frames.
|
|
1545
1570
|
for (const channel of start === 'commit' ? [] : channels) {
|
|
1546
1571
|
for (const property of CHANNELS[channel]) {
|
|
1547
1572
|
const segment = segments.get(property);
|
|
1548
1573
|
// A call's first frame puts its channels on screen, even before the
|
|
1549
1574
|
// browser reports the start. So such a channel is not at rest either.
|
|
1550
|
-
if (segment != null && time < endOf(property, segment) && (segment.group == null || segment.group.resolved || shownSince(property, segment) != null)) {
|
|
1575
|
+
if (segment != null && time < endOf(property, segment) && (segment.group == null || segment.group.resolved || shownSince(property, segment) != null) && !showsAtRest(property, segment, time)) {
|
|
1551
1576
|
return null;
|
|
1552
1577
|
}
|
|
1553
1578
|
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file progress.ts
|
|
3
|
+
* @input A spring, a normalized progress, an animator's presented velocities
|
|
4
|
+
* @output Exports `progressCurve` (a spring's progress from 0 to 1 as a
|
|
5
|
+
* MotionCurve), `mapProgress` (one curve as a function of another),
|
|
6
|
+
* `mapRange` (the clamped linear map most companions use) and
|
|
7
|
+
* `presentedProgressVelocity` (the progress velocity that continues what
|
|
8
|
+
* an animator shows)
|
|
9
|
+
* @position Shared by the motion building blocks that move several channels
|
|
10
|
+
* along one path and by companion motion (a
|
|
11
|
+
* scrim's dim following a sheet): one velocity unit, one curve mapping and
|
|
12
|
+
* one way to continue an interrupted motion
|
|
13
|
+
*
|
|
14
|
+
* A path is described by a normalized progress: 0 where it starts, 1 where
|
|
15
|
+
* it rests, beyond either end on a spring's overshoot. Its velocity is in
|
|
16
|
+
* progress per second; each channel's own velocity stays in the channel's
|
|
17
|
+
* units per second.
|
|
18
|
+
*
|
|
19
|
+
* An interrupted motion continues from what is on screen: the
|
|
20
|
+
* block reads the presented values and velocities from the animator at one
|
|
21
|
+
* `now` (`get`, `getVelocity`), restarts a path from those values, and starts
|
|
22
|
+
* its progress with the presented velocity projected on the path's tangent
|
|
23
|
+
* at its start, v·t / (t·t), where t = d(values)/dp. Channels are weighted
|
|
24
|
+
* into one unit first (px per unit of scale, say), so a scale and a
|
|
25
|
+
* translation count alike.
|
|
26
|
+
*
|
|
27
|
+
* A companion follows a driving curve through `mapProgress`, most often
|
|
28
|
+
* with `mapRange`: `mapProgress(sheetY, mapRange([closedY, openY], [0, dim]))`
|
|
29
|
+
* dims a scrim as a sheet rises. Played on another animator, it stays in
|
|
30
|
+
* lockstep only when it starts with its driver: pass the driver's start,
|
|
31
|
+
* `scrim.play({opacity}, {at: start})` with `start = await handle.started`
|
|
32
|
+
* (or one shared `at` for both calls); two calls from rest otherwise each
|
|
33
|
+
* start at their own commit.
|
|
34
|
+
*
|
|
35
|
+
* SYNC: When modified, update /packages/core/src/motion/progress.test.ts and
|
|
36
|
+
* /packages/core/src/motion/README.md.
|
|
37
|
+
*/
|
|
38
|
+
import type { Animator, MotionCurve, MotionProperty } from './animator.js';
|
|
39
|
+
import { type SpringDescription } from './spring.js';
|
|
40
|
+
/**
|
|
41
|
+
* The progress of `spring` from 0 to 1, starting with `velocity` (progress
|
|
42
|
+
* per second): exactly 1 once it settles within `epsilon`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function progressCurve(spring: SpringDescription, { velocity, epsilon, }?: {
|
|
45
|
+
velocity?: number;
|
|
46
|
+
epsilon?: number;
|
|
47
|
+
}): MotionCurve;
|
|
48
|
+
/**
|
|
49
|
+
* The curve of `f(driver(t))`, its velocity by the chain rule: a channel
|
|
50
|
+
* following a path as its progress moves, or a companion following any
|
|
51
|
+
* driving curve (a sheet's `y` mapped onto its scrim's opacity). The driver
|
|
52
|
+
* is any MotionCurve, not only a progress from 0 to 1. A companion played on
|
|
53
|
+
* another animator starts with its driver (`{at: start}`; see the file
|
|
54
|
+
* header).
|
|
55
|
+
*/
|
|
56
|
+
export declare function mapProgress(driver: MotionCurve, f: (value: number) => number): MotionCurve;
|
|
57
|
+
/**
|
|
58
|
+
* The linear map from `input` to `output`, held at `output`'s ends outside
|
|
59
|
+
* `input` unless `clamp` is false: what most companions are (a scrim's dim
|
|
60
|
+
* along a sheet's travel, a parallax, a dismissal's fade). Either range may
|
|
61
|
+
* run backward (`[openY, closedY]`).
|
|
62
|
+
*/
|
|
63
|
+
export declare function mapRange(input: readonly [number, number], output: readonly [number, number], { clamp }?: {
|
|
64
|
+
clamp?: boolean;
|
|
65
|
+
}): (x: number) => number;
|
|
66
|
+
/**
|
|
67
|
+
* One channel of a path: an animator property and its value at each
|
|
68
|
+
* progress.
|
|
69
|
+
*/
|
|
70
|
+
export interface ProgressChannel {
|
|
71
|
+
readonly property: MotionProperty;
|
|
72
|
+
/** The property's value at progress `p`. */
|
|
73
|
+
at(p: number): number;
|
|
74
|
+
/**
|
|
75
|
+
* What one unit of the property weighs in the projection, in a unit the
|
|
76
|
+
* channels share (px per unit of scale for a box `weight` px wide). 1 by
|
|
77
|
+
* default.
|
|
78
|
+
*/
|
|
79
|
+
readonly weight?: number;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The progress velocity, per second, that continues what `animator`
|
|
83
|
+
* presents at `now` along a path that starts there: the presented velocity
|
|
84
|
+
* projected on the path's tangent at progress 0, v·t / (t·t). 0 when the
|
|
85
|
+
* path does not move any of its channels.
|
|
86
|
+
*/
|
|
87
|
+
export declare function presentedProgressVelocity(animator: Pick<Animator, 'getVelocity'>, channels: ReadonlyArray<ProgressChannel>, now?: number): number;
|
|
88
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/motion/progress.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AACtE,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAKlB;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,iBAAiB,EACzB,EACE,QAAY,EACZ,OAA0B,GAC3B,GAAE;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAM,GAC5C,WAAW,CAQb;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAC3B,WAAW,CAWb;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,EAAC,KAAY,EAAC,GAAE;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAM,GACrC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAWvB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,4CAA4C;IAC5C,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EACvC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAUR"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file progress.ts
|
|
5
|
+
* @input A spring, a normalized progress, an animator's presented velocities
|
|
6
|
+
* @output Exports `progressCurve` (a spring's progress from 0 to 1 as a
|
|
7
|
+
* MotionCurve), `mapProgress` (one curve as a function of another),
|
|
8
|
+
* `mapRange` (the clamped linear map most companions use) and
|
|
9
|
+
* `presentedProgressVelocity` (the progress velocity that continues what
|
|
10
|
+
* an animator shows)
|
|
11
|
+
* @position Shared by the motion building blocks that move several channels
|
|
12
|
+
* along one path and by companion motion (a
|
|
13
|
+
* scrim's dim following a sheet): one velocity unit, one curve mapping and
|
|
14
|
+
* one way to continue an interrupted motion
|
|
15
|
+
*
|
|
16
|
+
* A path is described by a normalized progress: 0 where it starts, 1 where
|
|
17
|
+
* it rests, beyond either end on a spring's overshoot. Its velocity is in
|
|
18
|
+
* progress per second; each channel's own velocity stays in the channel's
|
|
19
|
+
* units per second.
|
|
20
|
+
*
|
|
21
|
+
* An interrupted motion continues from what is on screen: the
|
|
22
|
+
* block reads the presented values and velocities from the animator at one
|
|
23
|
+
* `now` (`get`, `getVelocity`), restarts a path from those values, and starts
|
|
24
|
+
* its progress with the presented velocity projected on the path's tangent
|
|
25
|
+
* at its start, v·t / (t·t), where t = d(values)/dp. Channels are weighted
|
|
26
|
+
* into one unit first (px per unit of scale, say), so a scale and a
|
|
27
|
+
* translation count alike.
|
|
28
|
+
*
|
|
29
|
+
* A companion follows a driving curve through `mapProgress`, most often
|
|
30
|
+
* with `mapRange`: `mapProgress(sheetY, mapRange([closedY, openY], [0, dim]))`
|
|
31
|
+
* dims a scrim as a sheet rises. Played on another animator, it stays in
|
|
32
|
+
* lockstep only when it starts with its driver: pass the driver's start,
|
|
33
|
+
* `scrim.play({opacity}, {at: start})` with `start = await handle.started`
|
|
34
|
+
* (or one shared `at` for both calls); two calls from rest otherwise each
|
|
35
|
+
* start at their own commit.
|
|
36
|
+
*
|
|
37
|
+
* SYNC: When modified, update /packages/core/src/motion/progress.test.ts and
|
|
38
|
+
* /packages/core/src/motion/README.md.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
import { SETTLING_EPSILON, solveSpring, toSpring } from "./spring.js";
|
|
42
|
+
|
|
43
|
+
/** The step of the finite differences taken on a progress. */
|
|
44
|
+
const STEP = 1e-4;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The progress of `spring` from 0 to 1, starting with `velocity` (progress
|
|
48
|
+
* per second): exactly 1 once it settles within `epsilon`.
|
|
49
|
+
*/
|
|
50
|
+
export function progressCurve(spring, {
|
|
51
|
+
velocity = 0,
|
|
52
|
+
epsilon = SETTLING_EPSILON
|
|
53
|
+
} = {}) {
|
|
54
|
+
const curve = solveSpring(toSpring(spring), {
|
|
55
|
+
from: 0,
|
|
56
|
+
to: 1,
|
|
57
|
+
velocity
|
|
58
|
+
});
|
|
59
|
+
const duration = curve.settleTime(epsilon);
|
|
60
|
+
return {
|
|
61
|
+
duration,
|
|
62
|
+
at: t => t >= duration ? 1 : curve.value(t),
|
|
63
|
+
velocity: t => t >= duration ? 0 : curve.velocity(t)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The curve of `f(driver(t))`, its velocity by the chain rule: a channel
|
|
69
|
+
* following a path as its progress moves, or a companion following any
|
|
70
|
+
* driving curve (a sheet's `y` mapped onto its scrim's opacity). The driver
|
|
71
|
+
* is any MotionCurve, not only a progress from 0 to 1. A companion played on
|
|
72
|
+
* another animator starts with its driver (`{at: start}`; see the file
|
|
73
|
+
* header).
|
|
74
|
+
*/
|
|
75
|
+
export function mapProgress(driver, f) {
|
|
76
|
+
return {
|
|
77
|
+
duration: driver.duration,
|
|
78
|
+
at: t => f(driver.at(t)),
|
|
79
|
+
velocity: t => {
|
|
80
|
+
const value = driver.at(t);
|
|
81
|
+
return (f(value + STEP) - f(value - STEP)) / (2 * STEP) * driver.velocity(t);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The linear map from `input` to `output`, held at `output`'s ends outside
|
|
88
|
+
* `input` unless `clamp` is false: what most companions are (a scrim's dim
|
|
89
|
+
* along a sheet's travel, a parallax, a dismissal's fade). Either range may
|
|
90
|
+
* run backward (`[openY, closedY]`).
|
|
91
|
+
*/
|
|
92
|
+
export function mapRange(input, output, {
|
|
93
|
+
clamp = true
|
|
94
|
+
} = {}) {
|
|
95
|
+
const [a, b] = input;
|
|
96
|
+
const [c, d] = output;
|
|
97
|
+
return x => {
|
|
98
|
+
let t = a === b ? x < a ? 0 : 1 : (x - a) / (b - a);
|
|
99
|
+
if (clamp) {
|
|
100
|
+
t = Math.min(1, Math.max(0, t));
|
|
101
|
+
}
|
|
102
|
+
// Exact at both ends.
|
|
103
|
+
return t === 0 ? c : t === 1 ? d : c + (d - c) * t;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* One channel of a path: an animator property and its value at each
|
|
109
|
+
* progress.
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The progress velocity, per second, that continues what `animator`
|
|
114
|
+
* presents at `now` along a path that starts there: the presented velocity
|
|
115
|
+
* projected on the path's tangent at progress 0, v·t / (t·t). 0 when the
|
|
116
|
+
* path does not move any of its channels.
|
|
117
|
+
*/
|
|
118
|
+
export function presentedProgressVelocity(animator, channels, now) {
|
|
119
|
+
let along = 0;
|
|
120
|
+
let squared = 0;
|
|
121
|
+
for (const channel of channels) {
|
|
122
|
+
const weight = channel.weight ?? 1;
|
|
123
|
+
const tangent = (channel.at(STEP) - channel.at(0)) / STEP * weight;
|
|
124
|
+
along += animator.getVelocity(channel.property, now) * weight * tangent;
|
|
125
|
+
squared += tangent * tangent;
|
|
126
|
+
}
|
|
127
|
+
return squared > 1e-12 ? along / squared : 0;
|
|
128
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducedMotion.d.ts","sourceRoot":"","sources":["../../src/motion/reducedMotion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reducedMotion.d.ts","sourceRoot":"","sources":["../../src/motion/reducedMotion.ts"],"names":[],"mappings":"AAsDA,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,2DACoB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,iEACuB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,EACxB,OAAO,GAAE;IACP,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,iBAAiB,GAAG,IAAI,CAoB1B;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,IAAI,EAChB,IAAI,SAAI,GACP,gBAAgB,CAyClB"}
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
import { defaultIsCoarsePointer, defaultPrefersReducedMotion } from "./animator.js";
|
|
48
48
|
import { resolveMotion } from "./resolveMotion.js";
|
|
49
|
+
import { themeReducesMotion } from "../privateAttributes/reducedMotion.stylex.js";
|
|
49
50
|
import { reducedMotionCrossFade, registerReducedMotionCrossFade } from "./uikit/timing.js";
|
|
50
51
|
|
|
51
52
|
/** Reduce Motion on a coarse primary pointer: an opacity-only cross-fade. */
|
|
@@ -68,7 +69,8 @@ export const REDUCED_MOTION_INSTANT_QUERY = '(prefers-reduced-motion: reduce) an
|
|
|
68
69
|
* the length is fixed.
|
|
69
70
|
*/
|
|
70
71
|
export function reducedMotionFade(element, options = {}) {
|
|
71
|
-
|
|
72
|
+
// A theme that reduces motion for everyone counts as the setting.
|
|
73
|
+
if (!defaultPrefersReducedMotion() && !themeReducesMotion(element)) {
|
|
72
74
|
return null;
|
|
73
75
|
}
|
|
74
76
|
const fades = options.touchRelease === true || defaultIsCoarsePointer();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file alert.ts
|
|
3
|
+
* @input Nothing; data only
|
|
4
|
+
* @output Exports `alertController`: how UIAlertController (`.alert`) tracks
|
|
5
|
+
* a finger across its actions
|
|
6
|
+
* @position The alert domain of the UIKit constants table (motion/uikit);
|
|
7
|
+
* its springs are `springs.alertPresent` and `springs.alertDismiss`
|
|
8
|
+
*
|
|
9
|
+
* Every value was read from UIKit on the iOS 26.2 simulator. A host app
|
|
10
|
+
* presented `UIAlertController(.alert)` with two and with three actions.
|
|
11
|
+
* Real HID touches drove it, and the action views' highlight was sampled
|
|
12
|
+
* every frame. Lengths are in pt (CSS px), durations in ms.
|
|
13
|
+
*
|
|
14
|
+
* Every leaf carries one or more `@source`; GUESS values also carry the
|
|
15
|
+
* `@measure` task that will confirm or replace them. uikit.test.ts enforces
|
|
16
|
+
* both.
|
|
17
|
+
*
|
|
18
|
+
* SYNC: When modified, update /packages/core/src/motion/MEASUREMENTS.md
|
|
19
|
+
*/
|
|
20
|
+
export declare const alertController: {
|
|
21
|
+
readonly actions: {
|
|
22
|
+
/**
|
|
23
|
+
* How long after touch-down the touched action highlights: none, it is
|
|
24
|
+
* highlighted in the touch-down frame (a tap and a 300 ms hold alike).
|
|
25
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
26
|
+
* iPhone 17 Pro, per-frame highlight of the action views under real HID
|
|
27
|
+
* touches, Oct 23 2026
|
|
28
|
+
*/
|
|
29
|
+
readonly highlightOnsetMs: 0;
|
|
30
|
+
/**
|
|
31
|
+
* How far outside an action the finger may go and keep it highlighted:
|
|
32
|
+
* none. The highlight cleared 1 pt below the action, and a lift there ran
|
|
33
|
+
* nothing. UIButton keeps 70 pt; an alert action does not.
|
|
34
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
35
|
+
* iPhone 17 Pro, per-frame highlight of the action views under real HID
|
|
36
|
+
* touches, Oct 23 2026
|
|
37
|
+
*/
|
|
38
|
+
readonly highlightExpansion: 0;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/alert.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,eAAe;;QAExB;;;;;;WAMG;;QAEH;;;;;;;WAOG;;;CAGG,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file alert.ts
|
|
5
|
+
* @input Nothing; data only
|
|
6
|
+
* @output Exports `alertController`: how UIAlertController (`.alert`) tracks
|
|
7
|
+
* a finger across its actions
|
|
8
|
+
* @position The alert domain of the UIKit constants table (motion/uikit);
|
|
9
|
+
* its springs are `springs.alertPresent` and `springs.alertDismiss`
|
|
10
|
+
*
|
|
11
|
+
* Every value was read from UIKit on the iOS 26.2 simulator. A host app
|
|
12
|
+
* presented `UIAlertController(.alert)` with two and with three actions.
|
|
13
|
+
* Real HID touches drove it, and the action views' highlight was sampled
|
|
14
|
+
* every frame. Lengths are in pt (CSS px), durations in ms.
|
|
15
|
+
*
|
|
16
|
+
* Every leaf carries one or more `@source`; GUESS values also carry the
|
|
17
|
+
* `@measure` task that will confirm or replace them. uikit.test.ts enforces
|
|
18
|
+
* both.
|
|
19
|
+
*
|
|
20
|
+
* SYNC: When modified, update /packages/core/src/motion/MEASUREMENTS.md
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export const alertController = {
|
|
24
|
+
actions: {
|
|
25
|
+
/**
|
|
26
|
+
* How long after touch-down the touched action highlights: none, it is
|
|
27
|
+
* highlighted in the touch-down frame (a tap and a 300 ms hold alike).
|
|
28
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
29
|
+
* iPhone 17 Pro, per-frame highlight of the action views under real HID
|
|
30
|
+
* touches, Oct 23 2026
|
|
31
|
+
*/
|
|
32
|
+
highlightOnsetMs: 0,
|
|
33
|
+
/**
|
|
34
|
+
* How far outside an action the finger may go and keep it highlighted:
|
|
35
|
+
* none. The highlight cleared 1 pt below the action, and a lift there ran
|
|
36
|
+
* nothing. UIButton keeps 70 pt; an alert action does not.
|
|
37
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
38
|
+
* iPhone 17 Pro, per-frame highlight of the action views under real HID
|
|
39
|
+
* touches, Oct 23 2026
|
|
40
|
+
*/
|
|
41
|
+
highlightExpansion: 0
|
|
42
|
+
}
|
|
43
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file privateAttributes/pressGroupItem.stylex.ts
|
|
3
|
+
* @input Nothing: the private press-group-item attribute
|
|
4
|
+
* @output pressGroupItemProps, which marks an action a group's tracker
|
|
5
|
+
* follows with the pointers it follows, and isTrackedByGroup, which reads
|
|
6
|
+
* the mark
|
|
7
|
+
* @position Owner module of the private press-group-item attribute: the only
|
|
8
|
+
* file that writes its name. AlertDialog marks its actions, and the press
|
|
9
|
+
* controller (utils/pressFeedback.ts) leaves a press of those pointers to
|
|
10
|
+
* the group's tracker. No package entry exports it.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Spread on each action that a group's tracker follows. It names the pointer
|
|
14
|
+
* types the tracker follows, such as `['touch', 'pen']`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function pressGroupItemProps(pointerTypes: ReadonlyArray<string>): Readonly<Record<string, string>>;
|
|
17
|
+
/**
|
|
18
|
+
* Whether a group's tracker paints the press on `element` or an ancestor: a
|
|
19
|
+
* press of `pointerType`, or any press when it is null.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isTrackedByGroup(element: Element, pointerType?: string | null): boolean;
|
|
22
|
+
//# sourceMappingURL=pressGroupItem.stylex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pressGroupItem.stylex.d.ts","sourceRoot":"","sources":["../../src/privateAttributes/pressGroupItem.stylex.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAIH;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,GAClC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAElC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,MAAM,GAAG,IAAW,GAChC,OAAO,CAWT"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
/**
|
|
3
|
+
* @file privateAttributes/pressGroupItem.stylex.ts
|
|
4
|
+
* @input Nothing: the private press-group-item attribute
|
|
5
|
+
* @output pressGroupItemProps, which marks an action a group's tracker
|
|
6
|
+
* follows with the pointers it follows, and isTrackedByGroup, which reads
|
|
7
|
+
* the mark
|
|
8
|
+
* @position Owner module of the private press-group-item attribute: the only
|
|
9
|
+
* file that writes its name. AlertDialog marks its actions, and the press
|
|
10
|
+
* controller (utils/pressFeedback.ts) leaves a press of those pointers to
|
|
11
|
+
* the group's tracker. No package entry exports it.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const PRESS_GROUP_ITEM = 'data-astryx-press-group-item';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Spread on each action that a group's tracker follows. It names the pointer
|
|
18
|
+
* types the tracker follows, such as `['touch', 'pen']`.
|
|
19
|
+
*/
|
|
20
|
+
export function pressGroupItemProps(pointerTypes) {
|
|
21
|
+
return {
|
|
22
|
+
[PRESS_GROUP_ITEM]: pointerTypes.join(' ')
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Whether a group's tracker paints the press on `element` or an ancestor: a
|
|
28
|
+
* press of `pointerType`, or any press when it is null.
|
|
29
|
+
*/
|
|
30
|
+
export function isTrackedByGroup(element, pointerType = null) {
|
|
31
|
+
const marked = element.closest(`[${PRESS_GROUP_ITEM}]`);
|
|
32
|
+
if (marked == null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return pointerType == null || (marked.getAttribute(PRESS_GROUP_ITEM) ?? '').split(' ').includes(pointerType);
|
|
36
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file privateAttributes/reducedMotion.stylex.ts
|
|
3
|
+
* @input Whether a theme reduces motion for everyone
|
|
4
|
+
* @output reducedMotionMarkProps and setRootReducedMotionMark, which write the
|
|
5
|
+
* mark, and themeReducesMotion, which reads it
|
|
6
|
+
* @position Owner module of the private reduced-motion attribute: the only
|
|
7
|
+
* file that writes its name. Theme marks its root, and the root theme marks
|
|
8
|
+
* `<html>`; the animator, reducedMotionFade and the layout glide read it as
|
|
9
|
+
* the person's Reduce Motion setting. No package entry exports it.
|
|
10
|
+
*/
|
|
11
|
+
/** Spread on a theme's root when the theme reduces motion for everyone. */
|
|
12
|
+
export declare function reducedMotionMarkProps(isMarked: boolean): Readonly<Record<string, string>>;
|
|
13
|
+
/**
|
|
14
|
+
* Marks or unmarks `<html>` for the root theme, so a layer portaled outside
|
|
15
|
+
* the theme's root reads the mark too.
|
|
16
|
+
*/
|
|
17
|
+
export declare function setRootReducedMotionMark(root: HTMLElement, isMarked: boolean): void;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the theme `element` is in reduces motion for everyone: its root,
|
|
20
|
+
* or `<html>` for the root theme, carries the mark.
|
|
21
|
+
*/
|
|
22
|
+
export declare function themeReducesMotion(element: Element | null | undefined): boolean;
|
|
23
|
+
//# sourceMappingURL=reducedMotion.stylex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducedMotion.stylex.d.ts","sourceRoot":"","sources":["../../src/privateAttributes/reducedMotion.stylex.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAIH,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,GAChB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAElC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAClC,OAAO,CAET"}
|