@astryxdesign/core 0.7.5 → 0.7.6-canary.0ef60dd
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 +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +5 -5
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +12 -3
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +7 -1
- package/dist/BottomSheet/BottomSheet.js +1 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +2 -1
- package/dist/BottomSheet/useSheetGestures.d.ts +12 -0
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +30 -3
- package/dist/Button/Button.js +4 -4
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +6 -5
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +37 -4
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +12 -4
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +101 -15
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +8 -3
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +23 -12
- package/dist/DateTimeInput/NativeTimeSegment.d.ts.map +1 -1
- package/dist/DateTimeInput/NativeTimeSegment.js +5 -4
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +4 -3
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +34 -9
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +5 -4
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +2 -1
- package/dist/Drawer/Drawer.d.ts +1 -0
- package/dist/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Drawer/Drawer.js +7 -2
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +7 -3
- package/dist/DropdownMenu/MenuBottomSheetActionList.d.ts.map +1 -1
- package/dist/DropdownMenu/MenuBottomSheetActionList.js +6 -5
- package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts +20 -2
- package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts.map +1 -1
- package/dist/DropdownMenu/lazyMenuBottomSheet.js +31 -3
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +21 -16
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +2 -1
- package/dist/Field/FieldLabel.d.ts +1 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +4 -4
- package/dist/Field/InputClearButton.js +3 -3
- package/dist/Field/PanelSearchInput.js +2 -2
- package/dist/FieldStatus/FieldStatus.js +2 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +7 -1
- package/dist/Heading/Heading.js +1 -1
- package/dist/Icon/Icon.js +1 -1
- package/dist/Indicator/CheckIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckIndicator.js +2 -1
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +3 -1
- package/dist/Indicator/RadioIndicator.d.ts.map +1 -1
- package/dist/Indicator/RadioIndicator.js +3 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +2 -1
- package/dist/Item/ItemSwipeLayer.js +1 -1
- package/dist/Layer/popoverOperations.d.ts +27 -0
- package/dist/Layer/popoverOperations.d.ts.map +1 -0
- package/dist/Layer/popoverOperations.js +159 -0
- package/dist/Layer/useLayer.d.ts +1 -1
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +93 -59
- package/dist/Layout/Layout.js +1 -1
- package/dist/Layout/LayoutContent.js +1 -1
- package/dist/Layout/LayoutFooter.js +1 -1
- package/dist/Layout/LayoutHeader.js +1 -1
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +5 -0
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +5 -4
- package/dist/List/List.js +1 -1
- package/dist/List/ListItem.js +3 -3
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +7 -2
- package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +7 -6
- package/dist/MultiSelector/MultiSelector.d.ts +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +26 -10
- package/dist/NumberInput/NumberInput.d.ts +3 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +3 -3
- package/dist/NumberInput/numberParser.d.ts +3 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -1
- package/dist/NumberInput/numberParser.js +7 -44
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +16 -12
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +28 -2
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +4 -1
- package/dist/Selector/useSelectorPresentation.d.ts +8 -1
- package/dist/Selector/useSelectorPresentation.d.ts.map +1 -1
- package/dist/Selector/useSelectorPresentation.js +20 -4
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +1 -1
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +10 -2
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +3 -3
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +16 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +9 -1
- package/dist/Text/Text.js +1 -1
- package/dist/Text/useTruncation.d.ts.map +1 -1
- package/dist/Text/useTruncation.js +23 -5
- package/dist/TextArea/TextArea.d.ts +1 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +13 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +3 -3
- package/dist/TimeInput/TimeInput.d.ts +6 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +21 -14
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +5 -4
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +2 -2
- package/dist/Timestamp/TimestampHoverCard.js +4 -4
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +60 -20
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +82 -51
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +13 -2
- package/dist/Tokenizer/TokenizerBottomSheet.js +3 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +2 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +3 -0
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +1 -0
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +9 -1
- package/dist/astryx.css +20 -4
- package/dist/gestures/GestureArena.d.ts +6 -0
- package/dist/gestures/GestureArena.d.ts.map +1 -1
- package/dist/gestures/GestureArena.js +39 -0
- package/dist/gestures/GestureHost.d.ts +352 -0
- package/dist/gestures/GestureHost.d.ts.map +1 -0
- package/dist/gestures/GestureHost.js +1773 -0
- package/dist/gestures/GestureRecognizer.d.ts +10 -0
- package/dist/gestures/GestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/GestureRecognizer.js +16 -0
- package/dist/gestures/LongPressGestureRecognizer.d.ts +1 -0
- package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/LongPressGestureRecognizer.js +3 -0
- package/dist/gestures/PanGestureRecognizer.d.ts +1 -0
- package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/PanGestureRecognizer.js +3 -0
- package/dist/gestures/PinchGestureRecognizer.d.ts +31 -0
- package/dist/gestures/PinchGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/PinchGestureRecognizer.js +128 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +71 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.js +223 -0
- package/dist/gestures/SwipeGestureRecognizer.d.ts +37 -0
- package/dist/gestures/SwipeGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/SwipeGestureRecognizer.js +148 -0
- package/dist/gestures/TapGestureRecognizer.d.ts +1 -0
- package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/TapGestureRecognizer.js +3 -0
- package/dist/gestures/VelocityTracker.d.ts +6 -2
- package/dist/gestures/VelocityTracker.d.ts.map +1 -1
- package/dist/gestures/VelocityTracker.js +7 -3
- package/dist/gestures/haptics.d.ts +65 -0
- package/dist/gestures/haptics.d.ts.map +1 -0
- package/dist/gestures/haptics.js +182 -0
- package/dist/gestures/nativeScroll.d.ts +42 -0
- package/dist/gestures/nativeScroll.d.ts.map +1 -0
- package/dist/gestures/nativeScroll.js +228 -0
- package/dist/gestures/touchAction.d.ts +60 -0
- package/dist/gestures/touchAction.d.ts.map +1 -0
- package/dist/gestures/touchAction.js +157 -0
- package/dist/gestures/touchActionRule.d.ts +34 -0
- package/dist/gestures/touchActionRule.d.ts.map +1 -0
- package/dist/gestures/touchActionRule.js +140 -0
- package/dist/gestures/types.d.ts +18 -7
- package/dist/gestures/types.d.ts.map +1 -1
- package/dist/gestures/types.js +22 -2
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/modalAnnounce.d.ts.map +1 -1
- package/dist/hooks/modalAnnounce.js +107 -61
- package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
- package/dist/hooks/useAdaptivePresentation.js +4 -1
- package/dist/hooks/useAnnounce.d.ts +101 -42
- package/dist/hooks/useAnnounce.d.ts.map +1 -1
- package/dist/hooks/useAnnounce.js +161 -75
- package/dist/hooks/useAnnounceRenderedText.d.ts +11 -3
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +5 -3
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +6 -12
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +12 -1
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +5 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +5 -0
- package/dist/motion/animator.d.ts +7 -1
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +119 -27
- package/dist/theme/defineTheme.d.ts +19 -5
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +64 -4
- package/dist/theme/domainTokens/domainTokenDefaults.d.ts +3 -0
- package/dist/theme/domainTokens/domainTokenDefaults.d.ts.map +1 -0
- package/dist/theme/domainTokens/domainTokenDefaults.js +19 -0
- package/dist/theme/domainTokens/index.d.ts +5 -4
- package/dist/theme/domainTokens/index.d.ts.map +1 -1
- package/dist/theme/domainTokens/index.js +5 -9
- package/dist/theme/index.d.ts +1 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/motionKnobs.d.ts +56 -0
- package/dist/theme/motionKnobs.d.ts.map +1 -0
- package/dist/theme/motionKnobs.js +48 -0
- package/dist/theme/resolveThemeValues.d.ts +11 -4
- package/dist/theme/resolveThemeValues.d.ts.map +1 -1
- package/dist/theme/resolveThemeValues.js +40 -4
- package/dist/theme/themeAdaptations.d.ts +7 -3
- package/dist/theme/themeAdaptations.d.ts.map +1 -1
- package/dist/theme/themeAdaptations.js +36 -7
- package/dist/theme/themeMotion.d.ts +96 -0
- package/dist/theme/themeMotion.d.ts.map +1 -0
- package/dist/theme/themeMotion.js +177 -0
- package/dist/theme/tokenReferences.d.ts +31 -0
- package/dist/theme/tokenReferences.d.ts.map +1 -0
- package/dist/theme/tokenReferences.js +132 -0
- package/dist/theme/tokens.d.ts +1 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +9 -129
- package/dist/theme/tokens.stylex.d.ts +12 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +12 -0
- package/dist/utils/focusReturn.d.ts +17 -1
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +11 -4
- package/dist/utils/getNodeText.d.ts +8 -0
- package/dist/utils/getNodeText.d.ts.map +1 -0
- package/dist/utils/getNodeText.js +37 -0
- package/dist/utils/interactionModality.d.ts +11 -2
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +58 -5
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +17 -8
- package/dist/utils/plainDate.d.ts +2 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +46 -3
- package/dist/utils/presentation.d.ts +50 -0
- package/dist/utils/presentation.d.ts.map +1 -0
- package/dist/utils/presentation.js +125 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +20 -1
- package/dist/utils/primaryClick.d.ts +11 -0
- package/dist/utils/primaryClick.d.ts.map +1 -0
- package/dist/utils/primaryClick.js +25 -0
- package/dist/utils/timeFormat.d.ts +47 -0
- package/dist/utils/timeFormat.d.ts.map +1 -0
- package/dist/utils/timeFormat.js +240 -0
- package/dist/utils/touchPresentation.d.ts.map +1 -1
- package/dist/utils/touchPresentation.js +5 -3
- package/dist/utils/touchPresentation.stylex.d.ts +15 -0
- package/dist/utils/touchPresentation.stylex.d.ts.map +1 -0
- package/dist/utils/touchPresentation.stylex.js +33 -0
- package/dist/utils/unicodeDigits.d.ts +20 -0
- package/dist/utils/unicodeDigits.d.ts.map +1 -0
- package/dist/utils/unicodeDigits.js +70 -0
- package/locales/en.json +23 -3
- package/locales/pseudo.json +15 -0
- package/package.json +5 -4
- package/src/AlertDialog/AlertDialog.tsx +6 -5
- package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +18 -6
- package/src/Avatar/Avatar.spec.md +22 -22
- package/src/Avatar/Avatar.tsx +18 -1
- package/src/Avatar/__tests__/AvatarForcedColors.a11y.chromium.spec.ts +126 -0
- package/src/Badge/Badge.doc.mjs +1 -1
- package/src/Badge/Badge.tsx +19 -2
- package/src/Badge/__tests__/BadgeLargerText.a11y.chromium.spec.ts +260 -0
- package/src/BottomSheet/BottomSheet.test.tsx +46 -0
- package/src/BottomSheet/BottomSheet.tsx +1 -1
- package/src/BottomSheet/BottomSheetPanel.tsx +2 -1
- package/src/BottomSheet/useSheetGestures.test.ts +52 -0
- package/src/BottomSheet/useSheetGestures.ts +37 -6
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +18 -6
- package/src/Button/Button.tsx +4 -4
- package/src/Calendar/Calendar.spec.md +87 -48
- package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +21 -7
- package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +21 -7
- package/src/CheckboxInput/CheckboxInput.tsx +6 -5
- package/src/ClickableCard/ClickableCard.test.tsx +96 -0
- package/src/ClickableCard/ClickableCard.tsx +48 -4
- package/src/Collapsible/Collapsible.spec.md +2 -0
- package/src/Collapsible/CollapsibleGroup.spec.md +57 -29
- package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +18 -7
- package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +18 -6
- package/src/ComplexSelector/ComplexSelector.test.tsx +37 -0
- package/src/ContextMenu/ContextMenu.test.tsx +35 -0
- package/src/DateInput/DateInput.test.tsx +115 -3
- package/src/DateInput/DateInput.tsx +29 -14
- package/src/DateInput/DateInputTouch.test.tsx +76 -0
- package/src/DateInput/MonthScroller.tsx +106 -20
- package/src/DateInput/MonthScrollerSettle.test.tsx +165 -0
- package/src/DateInput/TouchDateField.tsx +14 -3
- package/src/DateInput/__tests__/MonthScrollerSteps.interaction.browser.spec.ts +312 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +46 -3
- package/src/DateRangeInput/DateRangeInput.tsx +16 -12
- package/src/DateTimeInput/DateTimeInput.doc.mjs +10 -8
- package/src/DateTimeInput/DateTimeInput.spec.md +75 -51
- package/src/DateTimeInput/DateTimeInput.test.tsx +81 -0
- package/src/DateTimeInput/DateTimeInput.tsx +46 -24
- package/src/DateTimeInput/NativeTimeSegment.tsx +4 -6
- package/src/DateTimeInput/TouchDateTimeField.tsx +3 -7
- package/src/Dialog/Dialog.test.tsx +216 -2
- package/src/Dialog/Dialog.tsx +42 -9
- package/src/Dialog/DialogHeader.tsx +5 -4
- package/src/Dialog/__tests__/DialogSecondDocument.a11y.browser.spec.ts +202 -0
- package/src/Divider/Divider.tsx +2 -1
- package/src/Drawer/Drawer.spec.md +111 -80
- package/src/Drawer/Drawer.test.tsx +35 -0
- package/src/Drawer/Drawer.tsx +13 -2
- package/src/Drawer/DrawerHeader.spec.md +181 -0
- package/src/Drawer/__tests__/DrawerNonModalPageScroll.a11y.chromium.spec.ts +267 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +41 -0
- package/src/DropdownMenu/DropdownMenu.tsx +10 -3
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +34 -0
- package/src/DropdownMenu/MenuBottomSheetActionList.tsx +6 -5
- package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +19 -7
- package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +21 -9
- package/src/DropdownMenu/lazyMenuBottomSheet.test.ts +60 -0
- package/src/DropdownMenu/lazyMenuBottomSheet.ts +36 -7
- package/src/DropdownMenu/renderDropdownItems.tsx +24 -19
- package/src/EmptyState/EmptyState.tsx +2 -1
- package/src/Field/FieldLabel.tsx +5 -4
- package/src/Field/InputClearButton.tsx +3 -3
- package/src/Field/PanelSearchInput.tsx +2 -2
- package/src/FieldStatus/FieldStatus.tsx +2 -2
- package/src/FileInput/FileInput.test.tsx +21 -0
- package/src/FileInput/FileInput.tsx +4 -1
- package/src/FormLayout/FormLayout.spec.md +7 -8
- package/src/Heading/Heading.tsx +1 -1
- package/src/Icon/Icon.tsx +1 -1
- package/src/Indicator/CheckIndicator.spec.md +47 -42
- package/src/Indicator/CheckIndicator.tsx +2 -1
- package/src/Indicator/CheckboxIndicator.spec.md +40 -37
- package/src/Indicator/CheckboxIndicator.tsx +3 -1
- package/src/Indicator/Indicator.spec.md +188 -0
- package/src/Indicator/RadioIndicator.tsx +3 -1
- package/src/Item/Item.tsx +2 -1
- package/src/Item/ItemSwipeLayer.tsx +1 -1
- package/src/Kbd/Kbd.spec.md +81 -38
- package/src/Layer/__tests__/LayerBrowserHide.a11y.chromium.spec.ts +126 -0
- package/src/Layer/popoverOperations.test.ts +205 -0
- package/src/Layer/popoverOperations.ts +172 -0
- package/src/Layer/useLayer.test.tsx +348 -1
- package/src/Layer/useLayer.tsx +118 -71
- package/src/Layout/Layout.spec.md +127 -131
- package/src/Layout/Layout.tsx +1 -1
- package/src/Layout/LayoutContent.spec.md +205 -0
- package/src/Layout/LayoutContent.tsx +1 -1
- package/src/Layout/LayoutFooter.spec.md +190 -0
- package/src/Layout/LayoutFooter.tsx +1 -1
- package/src/Layout/LayoutHeader.spec.md +193 -0
- package/src/Layout/LayoutHeader.tsx +1 -1
- package/src/Layout/LayoutPanel.spec.md +194 -0
- package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +18 -6
- package/src/Lightbox/Lightbox.test.tsx +18 -0
- package/src/Lightbox/Lightbox.tsx +5 -0
- package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +8 -4
- package/src/Link/__tests__/Link.a11y.chromium.spec.ts +18 -8
- package/src/List/List.tsx +1 -1
- package/src/List/ListItem.spec.md +205 -0
- package/src/List/ListItem.tsx +3 -3
- package/src/MetadataList/MetadataList.spec.md +187 -0
- package/src/MetadataList/MetadataListItem.spec.md +165 -0
- package/src/MobileNav/MobileNav.test.tsx +15 -0
- package/src/MobileNav/MobileNav.tsx +9 -1
- package/src/MobileNav/__tests__/MobileNavHeader.a11y.chromium.spec.ts +89 -0
- package/src/MoreMenu/MoreMenu.test.tsx +11 -0
- package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +7 -8
- package/src/MultiSelector/MultiSelector.spec.md +7 -4
- package/src/MultiSelector/MultiSelector.test.tsx +270 -1
- package/src/MultiSelector/MultiSelector.tsx +25 -10
- package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +8 -1
- package/src/NavMenu/NavHeadingMenu.spec.md +1 -5
- package/src/NumberInput/NumberInput.doc.mjs +13 -7
- package/src/NumberInput/NumberInput.spec.md +59 -37
- package/src/NumberInput/NumberInput.tsx +13 -3
- package/src/NumberInput/__tests__/NumberInput.coarse-pointer.a11y.chromium.spec.ts +102 -0
- package/src/NumberInput/numberParser.ts +7 -45
- package/src/ProgressBar/ProgressBar.test.tsx +108 -32
- package/src/ProgressBar/ProgressBar.tsx +58 -10
- package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +21 -9
- package/src/ProgressBar/__tests__/ProgressBarMotion.a11y.chromium.spec.ts +831 -0
- package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +21 -14
- package/src/Resizable/useResizable.test.ts +43 -0
- package/src/Resizable/useResizable.ts +32 -9
- package/src/SegmentedControl/SegmentedControl.test.tsx +84 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +11 -5
- package/src/Selector/Selector.test.tsx +90 -1
- package/src/Selector/__tests__/Selector.combobox.a11y.test.tsx +8 -1
- package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +8 -1
- package/src/Selector/useSelectorPresentation.ts +31 -3
- package/src/SideNav/SideNav.test.tsx +27 -0
- package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +176 -51
- package/src/Skeleton/Skeleton.tsx +3 -1
- package/src/Slider/Slider.test.tsx +31 -0
- package/src/Slider/Slider.tsx +8 -3
- package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +19 -7
- package/src/Spinner/Spinner.tsx +5 -3
- package/src/Stack/Stack.tsx +1 -1
- package/src/Stack/StackItem.tsx +1 -1
- package/src/TabList/TabList.test.tsx +58 -4
- package/src/TabList/TabList.tsx +16 -1
- package/src/TabList/__tests__/TabPressPointer.interaction.browser.spec.ts +163 -0
- package/src/Table/__tests__/Table.a11y.chromium.spec.ts +18 -6
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +22 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +8 -4
- package/src/Text/Text.tsx +1 -1
- package/src/Text/useTruncation.test.tsx +128 -1
- package/src/Text/useTruncation.ts +23 -5
- package/src/TextArea/TextArea.spec.md +10 -13
- package/src/TextArea/TextArea.test.tsx +60 -0
- package/src/TextArea/TextArea.tsx +15 -1
- package/src/TextInput/TextInput.test.tsx +21 -0
- package/src/TextInput/TextInput.tsx +3 -1
- package/src/TimeInput/NativeTimeInput.test.tsx +17 -0
- package/src/TimeInput/Presentation.test.tsx +21 -0
- package/src/TimeInput/TimeInput.doc.mjs +8 -8
- package/src/TimeInput/TimeInput.spec.md +45 -48
- package/src/TimeInput/TimeInput.test.tsx +76 -0
- package/src/TimeInput/TimeInput.tsx +36 -18
- package/src/TimeInput/TouchTimeField.tsx +4 -6
- package/src/Timestamp/Timestamp.spec.md +6 -12
- package/src/Timestamp/Timestamp.test.tsx +30 -5
- package/src/Timestamp/Timestamp.tsx +6 -2
- package/src/Timestamp/TimestampHoverCard.tsx +4 -4
- package/src/Toast/Toast.spec.md +14 -20
- package/src/Toast/Toast.tsx +104 -36
- package/src/Toast/ToastViewport.test.tsx +719 -1
- package/src/Toast/ToastViewport.tsx +100 -50
- package/src/Tokenizer/Tokenizer.spec.md +5 -3
- package/src/Tokenizer/Tokenizer.test.tsx +68 -0
- package/src/Tokenizer/Tokenizer.tsx +14 -2
- package/src/Tokenizer/TokenizerBottomSheet.test.tsx +15 -4
- package/src/Tokenizer/TokenizerBottomSheet.tsx +3 -3
- package/src/Toolbar/Toolbar.spec.md +5 -6
- package/src/Toolbar/Toolbar.test.tsx +30 -0
- package/src/Toolbar/Toolbar.tsx +2 -1
- package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +18 -6
- package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +18 -7
- package/src/TopNav/TopNav.test.tsx +27 -0
- package/src/TopNav/TopNavMegaMenu.test.tsx +21 -0
- package/src/TopNav/TopNavMegaMenu.tsx +4 -1
- package/src/TopNav/TopNavMenu.test.tsx +17 -0
- package/src/TopNav/TopNavMenu.tsx +1 -0
- package/src/Typeahead/Typeahead.test.tsx +40 -0
- package/src/Typeahead/Typeahead.tsx +12 -1
- package/src/__tests__/pressState.ts +8 -4
- package/src/gestures/GestureArena.ts +35 -0
- package/src/gestures/GestureHost.ts +2065 -0
- package/src/gestures/GestureRecognizer.ts +18 -0
- package/src/gestures/LongPressGestureRecognizer.ts +4 -0
- package/src/gestures/PanGestureRecognizer.ts +4 -0
- package/src/gestures/PinchGestureRecognizer.ts +148 -0
- package/src/gestures/ScreenEdgePanGestureRecognizer.ts +256 -0
- package/src/gestures/SwipeGestureRecognizer.ts +197 -0
- package/src/gestures/TapGestureRecognizer.ts +4 -0
- package/src/gestures/VelocityTracker.ts +10 -3
- package/src/gestures/__tests__/GestureHost.test.ts +2087 -0
- package/src/gestures/__tests__/PanGestureRecognizer.test.ts +4 -4
- package/src/gestures/__tests__/PinchGestureRecognizer.test.ts +74 -0
- package/src/gestures/__tests__/ScreenEdgePanGestureRecognizer.test.ts +498 -0
- package/src/gestures/__tests__/SwipeGestureRecognizer.test.ts +108 -0
- package/src/gestures/__tests__/arena.test.ts +5 -0
- package/src/gestures/__tests__/arenaPinchSwipeEdge.test.ts +193 -0
- package/src/gestures/__tests__/browser/build-fixture.mjs +46 -0
- package/src/gestures/__tests__/browser/fixture.ts +307 -0
- package/src/gestures/__tests__/browser/gestures.interaction.browser.spec.ts +1137 -0
- package/src/gestures/__tests__/browserNegotiation.test.ts +293 -0
- package/src/gestures/__tests__/haptics.test.ts +187 -0
- package/src/gestures/__tests__/harness.ts +21 -2
- package/src/gestures/__tests__/recognizerKind.test.ts +78 -0
- package/src/gestures/__tests__/touchActionRule.test.ts +54 -0
- package/src/gestures/haptics.ts +203 -0
- package/src/gestures/nativeScroll.ts +277 -0
- package/src/gestures/touchAction.ts +191 -0
- package/src/gestures/touchActionRule.ts +157 -0
- package/src/gestures/types.ts +30 -9
- package/src/hooks/index.ts +5 -1
- package/src/hooks/modalAnnounce.ts +129 -72
- package/src/hooks/useAdaptivePresentation.ts +4 -1
- package/src/hooks/useAnnounce.doc.mjs +35 -3
- package/src/hooks/useAnnounce.replace.test.tsx +516 -0
- package/src/hooks/useAnnounce.ts +209 -102
- package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +10 -1
- package/src/hooks/useAnnounceRenderedText.ts +17 -3
- package/src/hooks/useBusyAnnouncement.ts +7 -10
- package/src/hooks/useMenuHover.ts +15 -1
- package/src/i18n/generated-locales/en.generated.ts +6 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +6 -0
- package/src/motion/README.md +11 -1
- package/src/motion/animator.test.ts +151 -3
- package/src/motion/animator.ts +149 -33
- package/src/theme/Theme.doc.mjs +1 -1
- package/src/theme/defineTheme.ts +117 -8
- package/src/theme/derivedVarRegistry.test.ts +4 -0
- package/src/theme/domainTokens/domainTokenDefaults.ts +19 -0
- package/src/theme/domainTokens/index.ts +6 -10
- package/src/theme/expandMotionScale.test.ts +1 -1
- package/src/theme/index.ts +5 -0
- package/src/theme/motionKnobs.ts +82 -0
- package/src/theme/resolveThemeValues.ts +68 -6
- package/src/theme/themeAdaptations.ts +52 -12
- package/src/theme/themeMotion.test.ts +620 -0
- package/src/theme/themeMotion.ts +221 -0
- package/src/theme/tokenReferences.ts +149 -0
- package/src/theme/tokens.stylex.ts +10 -0
- package/src/theme/tokens.ts +15 -158
- package/src/utils/focusReturn.ts +17 -6
- package/src/utils/getNodeText.test.ts +24 -0
- package/src/utils/getNodeText.ts +37 -0
- package/src/utils/interactionModality.test.ts +45 -1
- package/src/utils/interactionModality.ts +64 -5
- package/src/utils/interactionOverlay.stylex.ts +12 -3
- package/src/utils/plainDate.test.ts +90 -0
- package/src/utils/plainDate.ts +58 -3
- package/src/utils/presentation.test.ts +380 -0
- package/src/utils/presentation.ts +180 -0
- package/src/utils/pressFeedback.test.ts +138 -0
- package/src/utils/pressFeedback.ts +34 -11
- package/src/utils/pressPaintPriority.test.ts +80 -0
- package/src/utils/primaryClick.test.ts +38 -0
- package/src/utils/primaryClick.ts +28 -0
- package/src/utils/timeFormat.test.ts +204 -0
- package/src/utils/timeFormat.ts +314 -0
- package/src/utils/touchPresentation.stylex.ts +43 -0
- package/src/utils/touchPresentation.test.ts +140 -1
- package/src/utils/touchPresentation.ts +5 -3
- package/src/utils/unicodeDigits.test.ts +44 -0
- package/src/utils/unicodeDigits.ts +71 -0
|
@@ -75,7 +75,15 @@ export interface NativeTouchBehavior {
|
|
|
75
75
|
export declare const ALL_NATIVE_TOUCH: NativeTouchBehavior;
|
|
76
76
|
/** A tap-like recognizer only needs double-tap zoom gone (no click delay). */
|
|
77
77
|
export declare const MANIPULATION: NativeTouchBehavior;
|
|
78
|
+
/**
|
|
79
|
+
* What a recognizer is. The gesture code tells the family apart by it, never
|
|
80
|
+
* by `instanceof` (`architecture:react-component-runtime` INV13); a
|
|
81
|
+
* screen-edge pan is its own kind, though it is built on the pan.
|
|
82
|
+
*/
|
|
83
|
+
export type RecognizerKind = 'tap' | 'longPress' | 'pan' | 'screenEdgePan' | 'swipe' | 'pinch';
|
|
78
84
|
export declare abstract class GestureRecognizer {
|
|
85
|
+
/** What this recognizer is (see RecognizerKind). */
|
|
86
|
+
abstract get kind(): RecognizerKind;
|
|
79
87
|
/** Stable id, for ordering and debugging. */
|
|
80
88
|
readonly id: number;
|
|
81
89
|
name: string;
|
|
@@ -224,6 +232,8 @@ export declare abstract class GestureRecognizer {
|
|
|
224
232
|
deliverCancelled(touches: ReadonlyArray<GestureTouch>, event: GestureEventContext): void;
|
|
225
233
|
/** @internal */
|
|
226
234
|
deliverTakenByBrowser(touches: ReadonlyArray<GestureTouch>, event: GestureEventContext): void;
|
|
235
|
+
/** @internal The host's hook: listeners follow whether anything is enabled. */
|
|
236
|
+
onEnabledChange: (() => void) | null;
|
|
227
237
|
/**
|
|
228
238
|
* UIKit's `isEnabled` setter: turning a recognizer off mid-gesture cancels
|
|
229
239
|
* the gesture (an active one) or fails it (a possible one).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureRecognizer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,iBAAiB;IAC7D,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACjD,sFAAsF;IACtF,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,OAAO,CAAC;IACzC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IACrE,+DAA+D;IAC/D,6BAA6B,CAAC,EAAE,CAC9B,UAAU,EAAE,CAAC,EACb,KAAK,EAAE,iBAAiB,KACrB,OAAO,CAAC;IACb,oDAAoD;IACpD,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAC9E,sDAAsD;IACtD,wBAAwB,CAAC,EAAE,CACzB,UAAU,EAAE,CAAC,EACb,KAAK,EAAE,iBAAiB,KACrB,OAAO,CAAC;CACd;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CACzC,UAAU,EAAE,CAAC,EACb,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,KACb,IAAI,CAAC;AAmBV,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,GACf,OAAO,CAET;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAErD;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,gBAAgB,EAAE,mBAK9B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,YAAY,EAAE,mBAK1B,CAAC;
|
|
1
|
+
{"version":3,"file":"GestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureRecognizer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,iBAAiB;IAC7D,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACjD,sFAAsF;IACtF,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,OAAO,CAAC;IACzC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IACrE,+DAA+D;IAC/D,6BAA6B,CAAC,EAAE,CAC9B,UAAU,EAAE,CAAC,EACb,KAAK,EAAE,iBAAiB,KACrB,OAAO,CAAC;IACb,oDAAoD;IACpD,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAC9E,sDAAsD;IACtD,wBAAwB,CAAC,EAAE,CACzB,UAAU,EAAE,CAAC,EACb,KAAK,EAAE,iBAAiB,KACrB,OAAO,CAAC;CACd;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CACzC,UAAU,EAAE,CAAC,EACb,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,KACb,IAAI,CAAC;AAmBV,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,GACf,OAAO,CAET;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAErD;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,gBAAgB,EAAE,mBAK9B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,YAAY,EAAE,mBAK1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACxB,KAAK,GAAG,WAAW,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC;AAIpE,8BAAsB,iBAAiB;IACrC,oDAAoD;IACpD,QAAQ,KAAK,IAAI,IAAI,cAAc,CAAC;IAEpC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,SAAsB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACrD,0BAA0B,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAQ;IAErB,yEAAyE;IACzE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAQ;IAClC,iEAAiE;IACjE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAQ;IAEzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IACtE,OAAO,CAAC,UAAU,CAA4B;IAG9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAC3E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAEhC;IACJ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAgC;IACpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,wCAAwC;IACxC,SAAS,CAAC,QAAQ,CAAC,OAAO,4BAAmC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,cAAqB;IAC1C,OAAO,CAAC,YAAY,CAAuB;gBAE/B,OAAO,GAAE,wBAAwB,CAAC,KAAK,CAAM;IAgBzD,mEAAmE;IACnE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;OAIG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,KAAK,IAAI,YAAY,CAExB;IAED;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,mBAAmB,CAE7C;IAED,iEAAiE;IACjE,IAAI,iBAAiB,IAAI,OAAO,CAI/B;IAED,6DAA6D;IAC7D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,0DAA0D;IAC1D,IAAI,cAAc,IAAI,aAAa,CAAC,YAAY,CAAC,CAEhD;IAED;;;OAGG;IACH,QAAQ,IAAI,KAAK;IAcjB,0DAA0D;IAC1D,SAAS,KAAK,WAAW,IAAI,kBAAkB,CAE9C;IAID,0EAA0E;IAC1E,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAK7C,8EAA8E;IAC9E,2BAA2B,CAAC,GAAG,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAQjE,uEAAuE;IACvE,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAQpD;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAQrD,oDAAoD;IACpD,WAAW,IAAI,OAAO;IAItB,mEAAmE;IACnE,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAI9C,qCAAqC;IACrC,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAIlD;;;;;OAKG;IACH,UAAU,IAAI,OAAO;IAMrB,kEAAkE;IAClE,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAQxD,8EAA8E;IAC9E,qBAAqB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAU5E,uCAAuC;IACvC,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,mBAAmB,GAC1B,IAAI;IAEP,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,mBAAmB,GAC1B,IAAI;IAEP,0EAA0E;IAC1E,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,mBAAmB,GAC1B,IAAI;IAEP;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CACxB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,mBAAmB,GAC1B,IAAI;IAQP;;;;;OAKG;IACH,SAAS,CAAC,qBAAqB,CAC7B,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,OAAO;IAKV;;;;;;OAMG;IACH,SAAS,CAAC,mBAAmB,CAC3B,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,MAAM,EAAE,mBAAmB,GAC1B,IAAI;IAEP,uDAAuD;IACvD,SAAS,CAAC,KAAK,IAAI,IAAI;IAEvB;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAoBpD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAQ5C,6EAA6E;IAC7E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIhE,SAAS,CAAC,UAAU,IAAI,IAAI;IAI5B,sCAAsC;IACtC,SAAS,CAAC,GAAG,IAAI,MAAM;IAMvB,iEAAiE;IACjE,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAUxC,gBAAgB;IAChB,YAAY,CACV,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IASP,gBAAgB;IAChB,qBAAqB,CACnB,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAOP,gBAAgB;IAChB,YAAY,CACV,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IASP,gBAAgB;IAChB,YAAY,CACV,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAcP,gBAAgB;IAChB,gBAAgB,CACd,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAaP,gBAAgB;IAChB,qBAAqB,CACnB,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAaP,+EAA+E;IAC/E,eAAe,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAE5C;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAWhC,4EAA4E;IAC5E,MAAM,IAAI,IAAI;IAWd,2DAA2D;IAC3D,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAsBpC,2DAA2D;IAC3D,eAAe,IAAI,IAAI;CAQxB"}
|
|
@@ -65,8 +65,17 @@ export const MANIPULATION = {
|
|
|
65
65
|
pinchZoom: true,
|
|
66
66
|
doubleTapZoom: false
|
|
67
67
|
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* What a recognizer is. The gesture code tells the family apart by it, never
|
|
71
|
+
* by `instanceof` (`architecture:react-component-runtime` INV13); a
|
|
72
|
+
* screen-edge pan is its own kind, though it is built on the pan.
|
|
73
|
+
*/
|
|
74
|
+
|
|
68
75
|
let nextRecognizerId = 1;
|
|
69
76
|
export class GestureRecognizer {
|
|
77
|
+
/** What this recognizer is (see RecognizerKind). */
|
|
78
|
+
|
|
70
79
|
/** Stable id, for ordering and debugging. */
|
|
71
80
|
id = nextRecognizerId++;
|
|
72
81
|
/**
|
|
@@ -429,12 +438,19 @@ export class GestureRecognizer {
|
|
|
429
438
|
}
|
|
430
439
|
}
|
|
431
440
|
|
|
441
|
+
/** @internal The host's hook: listeners follow whether anything is enabled. */
|
|
442
|
+
onEnabledChange = null;
|
|
443
|
+
|
|
432
444
|
/**
|
|
433
445
|
* UIKit's `isEnabled` setter: turning a recognizer off mid-gesture cancels
|
|
434
446
|
* the gesture (an active one) or fails it (a possible one).
|
|
435
447
|
*/
|
|
436
448
|
setEnabled(value) {
|
|
449
|
+
const changed = this.isEnabled !== value;
|
|
437
450
|
this.isEnabled = value;
|
|
451
|
+
if (changed) {
|
|
452
|
+
this.onEnabledChange?.();
|
|
453
|
+
}
|
|
438
454
|
if (!value && (this.state !== 'possible' || this.isInvolved())) {
|
|
439
455
|
this.cancel();
|
|
440
456
|
}
|
|
@@ -9,6 +9,7 @@ export interface LongPressGestureRecognizerOptions extends GestureRecognizerOpti
|
|
|
9
9
|
numberOfTouchesRequired?: number;
|
|
10
10
|
}
|
|
11
11
|
export declare class LongPressGestureRecognizer extends GestureRecognizer {
|
|
12
|
+
get kind(): GestureRecognizer['kind'];
|
|
12
13
|
minimumPressDuration: number;
|
|
13
14
|
allowableMovement: number;
|
|
14
15
|
numberOfTapsRequired: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LongPressGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/LongPressGestureRecognizer.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,iBAAiB,EAGjB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAE/D,MAAM,WAAW,iCAAkC,SAAQ,wBAAwB,CAAC,0BAA0B,CAAC;IAC7G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;IAC/D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAK;IACrB,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAClC,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAElB,OAAO,GAAE,iCAAsC;IAWlD,UAAU,IAAI,OAAO;IAI9B,IAAa,mBAAmB,IAAI,mBAAmB,CAEtD;cAEkB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;cAQ1C,YAAY,CAC7B,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cAsCY,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,IAAI;cAYxD,YAAY,CAC7B,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cAuCY,KAAK,IAAI,IAAI;CAOjC"}
|
|
1
|
+
{"version":3,"file":"LongPressGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/LongPressGestureRecognizer.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,iBAAiB,EAGjB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAE/D,MAAM,WAAW,iCAAkC,SAAQ,wBAAwB,CAAC,0BAA0B,CAAC;IAC7G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;IAC/D,IAAa,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAE7C;IAED,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAK;IACrB,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAClC,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAElB,OAAO,GAAE,iCAAsC;IAWlD,UAAU,IAAI,OAAO;IAI9B,IAAa,mBAAmB,IAAI,mBAAmB,CAEtD;cAEkB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;cAQ1C,YAAY,CAC7B,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cAsCY,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,IAAI;cAYxD,YAAY,CAC7B,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cAuCY,KAAK,IAAI,IAAI;CAOjC"}
|
|
@@ -24,6 +24,9 @@ import { UIKIT_LONG_PRESS, UIKIT_TAP } from "../motion/uikit/gestures.js";
|
|
|
24
24
|
import { travel } from "./geometry.js";
|
|
25
25
|
import { GestureRecognizer, isActive, MANIPULATION } from "./GestureRecognizer.js";
|
|
26
26
|
export class LongPressGestureRecognizer extends GestureRecognizer {
|
|
27
|
+
get kind() {
|
|
28
|
+
return 'longPress';
|
|
29
|
+
}
|
|
27
30
|
tapsDone = 0;
|
|
28
31
|
/** The taps phase's current tap: when it landed and its most fingers. */
|
|
29
32
|
tapStartedAt = null;
|
|
@@ -28,6 +28,7 @@ export interface PanGestureRecognizerOptions extends GestureRecognizerOptions<Pa
|
|
|
28
28
|
scrollEdge?: boolean;
|
|
29
29
|
}
|
|
30
30
|
export declare class PanGestureRecognizer extends GestureRecognizer {
|
|
31
|
+
get kind(): GestureRecognizer['kind'];
|
|
31
32
|
minimumNumberOfTouches: number;
|
|
32
33
|
maximumNumberOfTouches: number;
|
|
33
34
|
hysteresis: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/PanGestureRecognizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PanGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/PanGestureRecognizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,9 @@ const DIRECTION_VECTORS = {
|
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
export class PanGestureRecognizer extends GestureRecognizer {
|
|
65
|
+
get kind() {
|
|
66
|
+
return 'pan';
|
|
67
|
+
}
|
|
65
68
|
/** The axis a `lockAxis` pan locked to when it began. */
|
|
66
69
|
lockedAxis = null;
|
|
67
70
|
/** The movement the begin threshold took (excluded from `translation()`). */
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { GestureRecognizer, type GestureRecognizerOptions, type NativeTouchBehavior } from './GestureRecognizer.js';
|
|
2
|
+
import type { GestureEventContext, GestureTouch, Point } from './types.js';
|
|
3
|
+
export interface PinchGestureRecognizerOptions extends GestureRecognizerOptions<PinchGestureRecognizer> {
|
|
4
|
+
hysteresis?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class PinchGestureRecognizer extends GestureRecognizer {
|
|
7
|
+
get kind(): GestureRecognizer['kind'];
|
|
8
|
+
hysteresis: number;
|
|
9
|
+
private initialSpan;
|
|
10
|
+
private scaleValue;
|
|
11
|
+
private readonly tracker;
|
|
12
|
+
private lastTime;
|
|
13
|
+
constructor(options?: PinchGestureRecognizerOptions);
|
|
14
|
+
/** Current span over the span the fingers started at. */
|
|
15
|
+
get scale(): number;
|
|
16
|
+
/** Re-base: from now on the scale reads `value` at the current span. */
|
|
17
|
+
set scale(value: number);
|
|
18
|
+
/** Scale per second (UIKit's filter; measured for pans, assumed here). */
|
|
19
|
+
get velocity(): number;
|
|
20
|
+
/** The midpoint between the two fingers. */
|
|
21
|
+
focalPoint(): Point;
|
|
22
|
+
/** Two fingers on this view are this recognizer's, not the browser's zoom. */
|
|
23
|
+
get nativeTouchBehavior(): NativeTouchBehavior;
|
|
24
|
+
protected acceptsTouch(touch: GestureTouch): boolean;
|
|
25
|
+
protected touchesBegan(_touches: ReadonlyArray<GestureTouch>, event: GestureEventContext): void;
|
|
26
|
+
protected touchesMoved(_touches: ReadonlyArray<GestureTouch>, event: GestureEventContext): void;
|
|
27
|
+
protected touchesEnded(): void;
|
|
28
|
+
protected reset(): void;
|
|
29
|
+
private span;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=PinchGestureRecognizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PinchGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/PinchGestureRecognizer.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,iBAAiB,EAEjB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAC,MAAM,SAAS,CAAC;AAGtE,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB,CAAC,sBAAsB,CAAC;IACrG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,IAAa,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAE7C;IAED,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,GAAE,6BAAkC;IAKvD,yDAAyD;IACzD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,wEAAwE;IACxE,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAStB;IAED,0EAA0E;IAC1E,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,4CAA4C;IAC5C,UAAU,IAAI,KAAK;IAInB,8EAA8E;IAC9E,IAAa,mBAAmB,IAAI,mBAAmB,CAEtD;cAEkB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;cAI1C,YAAY,CAC7B,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cAUY,YAAY,CAC7B,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cA6BY,YAAY,IAAI,IAAI;cAIpB,KAAK,IAAI,IAAI;IAMhC,OAAO,CAAC,IAAI;CAIb"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file PinchGestureRecognizer.ts
|
|
5
|
+
* @input Touches from a GestureArena
|
|
6
|
+
* @output Exports PinchGestureRecognizer (UIPinchGestureRecognizer) and its
|
|
7
|
+
* options
|
|
8
|
+
* @position Continuous two-finger recognizer of packages/core/src/gestures
|
|
9
|
+
*
|
|
10
|
+
* Tracks the first two fingers; more are ignored. Begins once the distance
|
|
11
|
+
* between them has changed by `hysteresis` px. As in UIKit, `scale` is then
|
|
12
|
+
* the current distance over the starting distance moved by the hysteresis
|
|
13
|
+
* toward the pinch, so it does not jump (settable to re-base it); `velocity`
|
|
14
|
+
* is scale per second. Lifting either finger ends an
|
|
15
|
+
* active pinch and fails a possible one.
|
|
16
|
+
*
|
|
17
|
+
* A host gives every element WITHOUT a pinch recognizer `pinch-zoom` in its
|
|
18
|
+
* `touch-action`, so the page stays zoomable (WCAG 1.4.4); attaching one
|
|
19
|
+
* takes the two-finger gesture for this element only.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { UIKIT_PINCH } from "../motion/uikit/gestures.js";
|
|
23
|
+
import { centroid, distance } from "./geometry.js";
|
|
24
|
+
import { GestureRecognizer, isActive } from "./GestureRecognizer.js";
|
|
25
|
+
import { VelocityTracker } from "./VelocityTracker.js";
|
|
26
|
+
export class PinchGestureRecognizer extends GestureRecognizer {
|
|
27
|
+
get kind() {
|
|
28
|
+
return 'pinch';
|
|
29
|
+
}
|
|
30
|
+
initialSpan = 0;
|
|
31
|
+
scaleValue = 1;
|
|
32
|
+
tracker = new VelocityTracker();
|
|
33
|
+
lastTime = 0;
|
|
34
|
+
constructor(options = {}) {
|
|
35
|
+
super(options);
|
|
36
|
+
this.hysteresis = options.hysteresis ?? UIKIT_PINCH.hysteresis.value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Current span over the span the fingers started at. */
|
|
40
|
+
get scale() {
|
|
41
|
+
return this.scaleValue;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Re-base: from now on the scale reads `value` at the current span. */
|
|
45
|
+
set scale(value) {
|
|
46
|
+
const span = this.span();
|
|
47
|
+
if (span > 0 && value > 0) {
|
|
48
|
+
this.initialSpan = span / value;
|
|
49
|
+
this.scaleValue = value;
|
|
50
|
+
// The velocity continues from the re-based value, without a jump.
|
|
51
|
+
this.tracker.reset();
|
|
52
|
+
this.tracker.add(value, 0, this.lastTime);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Scale per second (UIKit's filter; measured for pans, assumed here). */
|
|
57
|
+
get velocity() {
|
|
58
|
+
return this.tracker.velocity().x;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** The midpoint between the two fingers. */
|
|
62
|
+
focalPoint() {
|
|
63
|
+
return centroid(this.touches.values());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Two fingers on this view are this recognizer's, not the browser's zoom. */
|
|
67
|
+
get nativeTouchBehavior() {
|
|
68
|
+
return {
|
|
69
|
+
panX: true,
|
|
70
|
+
panY: true,
|
|
71
|
+
pinchZoom: false,
|
|
72
|
+
doubleTapZoom: false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
acceptsTouch(touch) {
|
|
76
|
+
return this.numberOfTouches < 2 && super.acceptsTouch(touch);
|
|
77
|
+
}
|
|
78
|
+
touchesBegan(_touches, event) {
|
|
79
|
+
this.lastTime = event.time;
|
|
80
|
+
if (this.numberOfTouches === 2) {
|
|
81
|
+
this.initialSpan = this.span();
|
|
82
|
+
this.scaleValue = 1;
|
|
83
|
+
this.tracker.reset();
|
|
84
|
+
this.tracker.add(1, 0, event.time);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
touchesMoved(_touches, event) {
|
|
88
|
+
if (this.numberOfTouches < 2 || this.initialSpan <= 0) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.lastTime = event.time;
|
|
92
|
+
const span = this.span();
|
|
93
|
+
// Once recognized, a pinch waiting on a recognizer it requires to fail
|
|
94
|
+
// keeps its re-based start: its moves only follow the fingers.
|
|
95
|
+
if (this.state === 'possible' && this.pending == null) {
|
|
96
|
+
if (Math.abs(span - this.initialSpan) >= this.hysteresis) {
|
|
97
|
+
// UIKit measures from the start moved by the hysteresis, and its
|
|
98
|
+
// first velocity spans from the touch-down (scale 1) to here.
|
|
99
|
+
this.initialSpan += Math.sign(span - this.initialSpan) * this.hysteresis;
|
|
100
|
+
this.scaleValue = span / this.initialSpan;
|
|
101
|
+
this.tracker.add(this.scaleValue, 0, event.time);
|
|
102
|
+
this.setState('began');
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
this.scaleValue = span / this.initialSpan;
|
|
107
|
+
// Every move of the fingers is a sample: a span that holds while they
|
|
108
|
+
// move reads as no change, so the velocity never goes stale.
|
|
109
|
+
this.tracker.add(this.scaleValue, 0, event.time, {
|
|
110
|
+
isMotion: true
|
|
111
|
+
});
|
|
112
|
+
if (isActive(this.state)) {
|
|
113
|
+
this.setState('changed');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
touchesEnded() {
|
|
117
|
+
this.setState(isActive(this.state) ? 'ended' : 'failed');
|
|
118
|
+
}
|
|
119
|
+
reset() {
|
|
120
|
+
this.initialSpan = 0;
|
|
121
|
+
this.scaleValue = 1;
|
|
122
|
+
this.tracker.reset();
|
|
123
|
+
}
|
|
124
|
+
span() {
|
|
125
|
+
const [a, b] = this.trackedTouches;
|
|
126
|
+
return a == null || b == null ? 0 : distance(a, b);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type NativeTouchBehavior } from './GestureRecognizer.js';
|
|
2
|
+
import { PanGestureRecognizer, type PanGestureRecognizerOptions } from './PanGestureRecognizer.js';
|
|
3
|
+
import type { GestureEventContext, GestureTouch } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* An edge by writing direction: under RTL the leading edge is the right one.
|
|
6
|
+
* Top and bottom edges land with their first user.
|
|
7
|
+
*/
|
|
8
|
+
export type ScreenEdge = 'leading' | 'trailing';
|
|
9
|
+
/** A physical horizontal edge of the viewport. */
|
|
10
|
+
type PhysicalEdge = 'left' | 'right';
|
|
11
|
+
/**
|
|
12
|
+
* A screen-edge pan is a finger's: it takes no `allowedPointerTypes`
|
|
13
|
+
* (`spec:AST-094` FR43).
|
|
14
|
+
*/
|
|
15
|
+
export interface ScreenEdgePanGestureRecognizerOptions extends Omit<PanGestureRecognizerOptions, 'direction' | 'allowedPointerTypes'> {
|
|
16
|
+
/** The edges a touch may start from. @default ['leading'] */
|
|
17
|
+
edges?: ReadonlyArray<ScreenEdge>;
|
|
18
|
+
/** Width of the band at each edge, px. */
|
|
19
|
+
edgeRegion?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class ScreenEdgePanGestureRecognizer extends PanGestureRecognizer {
|
|
22
|
+
get kind(): PanGestureRecognizer['kind'];
|
|
23
|
+
edges: ReadonlyArray<ScreenEdge>;
|
|
24
|
+
edgeRegion: number;
|
|
25
|
+
/** The physical edge the current gesture started from. */
|
|
26
|
+
activeEdge: PhysicalEdge | null;
|
|
27
|
+
/**
|
|
28
|
+
* @internal Set by the host while attached: called when the edge-zone
|
|
29
|
+
* answer changes, so the element's `touch-action` follows it
|
|
30
|
+
* (spec:AST-094 FR19, DEC-22).
|
|
31
|
+
*/
|
|
32
|
+
onTouchBehaviorChange: (() => void) | null;
|
|
33
|
+
/** The hysteresis where the pan takes its axis (UIKit's 15 px). */
|
|
34
|
+
private readonly edgeHysteresis;
|
|
35
|
+
/** What the pan measured of its view (see EdgeLayout), until a layout change. */
|
|
36
|
+
private layout;
|
|
37
|
+
constructor(options?: ScreenEdgePanGestureRecognizerOptions);
|
|
38
|
+
/**
|
|
39
|
+
* The pan takes the horizontal axis only in its edge zone, a view within
|
|
40
|
+
* the band of an edge it watches; elsewhere it leaves the browser every
|
|
41
|
+
* touch behavior, so the author's scrolling is untouched (spec:AST-094
|
|
42
|
+
* FR18), never claiming across a whole wider element.
|
|
43
|
+
*/
|
|
44
|
+
get nativeTouchBehavior(): NativeTouchBehavior;
|
|
45
|
+
/**
|
|
46
|
+
* @internal Whether the edge zone depends on the viewport's width: the pan
|
|
47
|
+
* watches the right side, whose band moves with the viewport, so the host
|
|
48
|
+
* reports a viewport resize to it as well as its own box's (FR19, FR24).
|
|
49
|
+
*/
|
|
50
|
+
get watchesViewport(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* @internal The view's box may have changed (a resize): its edges' sides
|
|
53
|
+
* and the edge zone are measured again, and a changed answer calls
|
|
54
|
+
* onTouchBehaviorChange.
|
|
55
|
+
*/
|
|
56
|
+
layoutChanged(): void;
|
|
57
|
+
protected touchesBegan(touches: ReadonlyArray<GestureTouch>, event: GestureEventContext): void;
|
|
58
|
+
/**
|
|
59
|
+
* The physical sides the pan's edges resolve to under the view's writing
|
|
60
|
+
* direction, and the sides whose band the view lies within, measured
|
|
61
|
+
* together once until a layout change: the view starts at that side and
|
|
62
|
+
* reaches no farther than `edgeRegion` from it, within layout's rounding
|
|
63
|
+
* (a strip authored at the 40.2 px region lays out at 40.203 px, on
|
|
64
|
+
* 1/64 px). A view that cannot be measured lies within none.
|
|
65
|
+
*/
|
|
66
|
+
private measured;
|
|
67
|
+
protected reset(): void;
|
|
68
|
+
private edgeAt;
|
|
69
|
+
}
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=ScreenEdgePanGestureRecognizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenEdgePanGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/ScreenEdgePanGestureRecognizer.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAmB,KAAK,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAS/D;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEhD,kDAAkD;AAClD,KAAK,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAarC;;;GAGG;AACH,MAAM,WAAW,qCAAsC,SAAQ,IAAI,CACjE,2BAA2B,EAC3B,WAAW,GAAG,qBAAqB,CACpC;IACC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAClC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,8BAA+B,SAAQ,oBAAoB;IACtE,IAAa,IAAI,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAEhD;IAED,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,UAAU,EAAE,YAAY,GAAG,IAAI,CAAQ;IACvC;;;;OAIG;IACH,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAClD,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAA2B;gBAE7B,OAAO,GAAE,qCAA0C;IAe/D;;;;;OAKG;IACH,IAAa,mBAAmB,IAAI,mBAAmB,CAWtD;IAED;;;;OAIG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;;;OAIG;IACH,aAAa,IAAI,IAAI;cAcF,YAAY,CAC7B,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAiCP;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;cAyBG,KAAK,IAAI,IAAI;IAKhC,OAAO,CAAC,MAAM;CAaf"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file ScreenEdgePanGestureRecognizer.ts
|
|
5
|
+
* @input Touches from a GestureArena; the viewport size and writing
|
|
6
|
+
* direction from its environment
|
|
7
|
+
* @output Exports ScreenEdgePanGestureRecognizer
|
|
8
|
+
* (UIScreenEdgePanGestureRecognizer), its options and edge type
|
|
9
|
+
* @position Continuous recognizer of packages/core/src/gestures, a pan that
|
|
10
|
+
* only starts from a band at the edge of the viewport
|
|
11
|
+
*
|
|
12
|
+
* A touch that lands outside every requested band fails at once, so a
|
|
13
|
+
* recognizer that requires this one to fail is not held up by a touch in the
|
|
14
|
+
* middle of the screen. Inside a band, the pan begins on movement away from
|
|
15
|
+
* that edge. `leading` and `trailing` resolve against the view's writing
|
|
16
|
+
* direction: under RTL the leading edge is the right one, as the
|
|
17
|
+
* interactive pop gesture's is.
|
|
18
|
+
*
|
|
19
|
+
* Attach it to the edge zone: an element that lies within the band at its
|
|
20
|
+
* edge. There the pan takes the horizontal axis from the browser, which has
|
|
21
|
+
* nothing to scroll in so thin a band, so a touch in the band decides at
|
|
22
|
+
* UIKit's 15 px screen-edge hysteresis. On any other view, whose
|
|
23
|
+
* `touch-action` cannot claim per touch, it leaves the browser every touch
|
|
24
|
+
* behavior, so the author's scrolling there is untouched, and a touch in the
|
|
25
|
+
* band decides at FR19's 10 px like every other claim (spec:AST-094 FR18,
|
|
26
|
+
* DEC-22). The edges' physical sides and the edge zone are measured once,
|
|
27
|
+
* together, and serve both the element's `touch-action` and the touch-down
|
|
28
|
+
* decision; the host reports a layout change (layoutChanged), and a changed
|
|
29
|
+
* answer is announced (onTouchBehaviorChange) so `touch-action` follows it
|
|
30
|
+
* (FR19). The writing direction is read again at each touch-down: a view
|
|
31
|
+
* switched to RTL in place, with no resize, is measured again there and the
|
|
32
|
+
* change announced, so a `leading` back swipe follows the new leading edge
|
|
33
|
+
* (`design:bidirectionality` DR13). That touch landed under the touch-action
|
|
34
|
+
* from before, so it decides at FR19's 10 px unless that one claimed the
|
|
35
|
+
* axis.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
import { UIKIT_PAN, UIKIT_SCREEN_EDGE_PAN } from "../motion/uikit/gestures.js";
|
|
39
|
+
import { ALL_NATIVE_TOUCH } from "./GestureRecognizer.js";
|
|
40
|
+
import { PanGestureRecognizer } from "./PanGestureRecognizer.js";
|
|
41
|
+
/**
|
|
42
|
+
* How far past `edgeRegion` a view still counts as the edge zone, px: layout
|
|
43
|
+
* snaps sizes to 1/64 px, so a strip authored at the region measures a hair
|
|
44
|
+
* wider; half a pixel takes that and nothing a pixel wider.
|
|
45
|
+
*/
|
|
46
|
+
const EDGE_ZONE_TOLERANCE = 0.5;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* An edge by writing direction: under RTL the leading edge is the right one.
|
|
50
|
+
* Top and bottom edges land with their first user.
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/** A physical horizontal edge of the viewport. */
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* What the pan measures of its view, once until a layout change: the
|
|
57
|
+
* writing direction it read, the physical sides its edges resolve to under
|
|
58
|
+
* that direction, and the sides whose band the view lies within.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A screen-edge pan is a finger's: it takes no `allowedPointerTypes`
|
|
63
|
+
* (`spec:AST-094` FR43).
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
export class ScreenEdgePanGestureRecognizer extends PanGestureRecognizer {
|
|
67
|
+
get kind() {
|
|
68
|
+
return 'screenEdgePan';
|
|
69
|
+
}
|
|
70
|
+
/** The physical edge the current gesture started from. */
|
|
71
|
+
activeEdge = null;
|
|
72
|
+
/**
|
|
73
|
+
* @internal Set by the host while attached: called when the edge-zone
|
|
74
|
+
* answer changes, so the element's `touch-action` follows it
|
|
75
|
+
* (spec:AST-094 FR19, DEC-22).
|
|
76
|
+
*/
|
|
77
|
+
onTouchBehaviorChange = null;
|
|
78
|
+
/** The hysteresis where the pan takes its axis (UIKit's 15 px). */
|
|
79
|
+
|
|
80
|
+
/** What the pan measured of its view (see EdgeLayout), until a layout change. */
|
|
81
|
+
layout = null;
|
|
82
|
+
constructor(options = {}) {
|
|
83
|
+
super({
|
|
84
|
+
maximumNumberOfTouches: 1,
|
|
85
|
+
hysteresis: UIKIT_SCREEN_EDGE_PAN.hysteresis.value,
|
|
86
|
+
...options,
|
|
87
|
+
// A finger's only: under a mouse, a trackpad or a pen the screen-edge
|
|
88
|
+
// pan stays off (`spec:AST-094` FR43), whatever a caller passes.
|
|
89
|
+
allowedPointerTypes: ['touch']
|
|
90
|
+
});
|
|
91
|
+
this.edges = options.edges ?? ['leading'];
|
|
92
|
+
this.edgeRegion = options.edgeRegion ?? UIKIT_SCREEN_EDGE_PAN.edgeRegion.value;
|
|
93
|
+
this.edgeHysteresis = this.hysteresis;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The pan takes the horizontal axis only in its edge zone, a view within
|
|
98
|
+
* the band of an edge it watches; elsewhere it leaves the browser every
|
|
99
|
+
* touch behavior, so the author's scrolling is untouched (spec:AST-094
|
|
100
|
+
* FR18), never claiming across a whole wider element.
|
|
101
|
+
*/
|
|
102
|
+
get nativeTouchBehavior() {
|
|
103
|
+
const {
|
|
104
|
+
watched,
|
|
105
|
+
zone
|
|
106
|
+
} = this.measured();
|
|
107
|
+
if (!watched.some(edge => zone.has(edge))) {
|
|
108
|
+
return ALL_NATIVE_TOUCH;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
panX: false,
|
|
112
|
+
panY: true,
|
|
113
|
+
pinchZoom: true,
|
|
114
|
+
doubleTapZoom: false
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @internal Whether the edge zone depends on the viewport's width: the pan
|
|
120
|
+
* watches the right side, whose band moves with the viewport, so the host
|
|
121
|
+
* reports a viewport resize to it as well as its own box's (FR19, FR24).
|
|
122
|
+
*/
|
|
123
|
+
get watchesViewport() {
|
|
124
|
+
return this.measured().watched.includes('right');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @internal The view's box may have changed (a resize): its edges' sides
|
|
129
|
+
* and the edge zone are measured again, and a changed answer calls
|
|
130
|
+
* onTouchBehaviorChange.
|
|
131
|
+
*/
|
|
132
|
+
layoutChanged() {
|
|
133
|
+
const before = this.layout;
|
|
134
|
+
this.layout = null;
|
|
135
|
+
const after = this.measured();
|
|
136
|
+
if (before == null || before.watched.join() !== after.watched.join() || before.zone.size !== after.zone.size || [...after.zone].some(edge => !before.zone.has(edge))) {
|
|
137
|
+
this.onTouchBehaviorChange?.();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
touchesBegan(touches, event) {
|
|
141
|
+
if (this.numberOfTouches === touches.length) {
|
|
142
|
+
// The touch-action the browser applies to this touch was derived from
|
|
143
|
+
// the layout in force as it landed: whether that claimed the axis.
|
|
144
|
+
const inForce = this.measured();
|
|
145
|
+
const claimedAxis = inForce.watched.some(side => inForce.zone.has(side));
|
|
146
|
+
// A direction switched in place (no resize) moves the leading edge:
|
|
147
|
+
// measure again, and announce it so touch-action follows for the next
|
|
148
|
+
// touch (DR13).
|
|
149
|
+
if (inForce.isRtl !== this.environment.isRtl(this.view)) {
|
|
150
|
+
this.layoutChanged();
|
|
151
|
+
}
|
|
152
|
+
const edge = this.edgeAt(touches[0]);
|
|
153
|
+
if (edge == null) {
|
|
154
|
+
this.setState('failed');
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.activeEdge = edge;
|
|
158
|
+
// On an element within the band, which takes the axis across the edge,
|
|
159
|
+
// a touch decides at UIKit's 15 px; on any other, which leaves the
|
|
160
|
+
// browser that axis, at FR19's 10 px, before the browser commits to a
|
|
161
|
+
// scroll (spec:AST-094 FR18, DEC-22). The answer is the one this
|
|
162
|
+
// touch's touch-action was derived from: a touch that measured again
|
|
163
|
+
// decides at 10 px unless the layout in force claimed the axis.
|
|
164
|
+
const offZone = !claimedAxis || !this.measured().zone.has(edge);
|
|
165
|
+
this.hysteresis = offZone ? Math.min(this.edgeHysteresis, UIKIT_PAN.hysteresis.value) : this.edgeHysteresis;
|
|
166
|
+
this.direction = edge === 'left' ? 'right' : 'left';
|
|
167
|
+
}
|
|
168
|
+
super.touchesBegan(touches, event);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The physical sides the pan's edges resolve to under the view's writing
|
|
173
|
+
* direction, and the sides whose band the view lies within, measured
|
|
174
|
+
* together once until a layout change: the view starts at that side and
|
|
175
|
+
* reaches no farther than `edgeRegion` from it, within layout's rounding
|
|
176
|
+
* (a strip authored at the 40.2 px region lays out at 40.203 px, on
|
|
177
|
+
* 1/64 px). A view that cannot be measured lies within none.
|
|
178
|
+
*/
|
|
179
|
+
measured() {
|
|
180
|
+
if (this.layout != null) {
|
|
181
|
+
return this.layout;
|
|
182
|
+
}
|
|
183
|
+
const isRtl = this.environment.isRtl(this.view);
|
|
184
|
+
const watched = this.edges.map(edge => edge === 'leading' !== isRtl ? 'left' : 'right');
|
|
185
|
+
const zone = new Set();
|
|
186
|
+
const rect = this.environment.viewRect?.(this.view);
|
|
187
|
+
if (rect != null && rect.width > 0) {
|
|
188
|
+
const {
|
|
189
|
+
width
|
|
190
|
+
} = this.environment.viewportSize();
|
|
191
|
+
const right = rect.left + rect.width;
|
|
192
|
+
const band = this.edgeRegion + EDGE_ZONE_TOLERANCE;
|
|
193
|
+
if (rect.left >= -EDGE_ZONE_TOLERANCE && right <= band) {
|
|
194
|
+
zone.add('left');
|
|
195
|
+
}
|
|
196
|
+
if (rect.left >= width - band && right <= width + EDGE_ZONE_TOLERANCE) {
|
|
197
|
+
zone.add('right');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
this.layout = {
|
|
201
|
+
isRtl,
|
|
202
|
+
watched,
|
|
203
|
+
zone
|
|
204
|
+
};
|
|
205
|
+
return this.layout;
|
|
206
|
+
}
|
|
207
|
+
reset() {
|
|
208
|
+
super.reset();
|
|
209
|
+
this.activeEdge = null;
|
|
210
|
+
}
|
|
211
|
+
edgeAt(touch) {
|
|
212
|
+
const {
|
|
213
|
+
width
|
|
214
|
+
} = this.environment.viewportSize();
|
|
215
|
+
for (const physical of this.measured().watched) {
|
|
216
|
+
const inBand = physical === 'left' ? touch.startX <= this.edgeRegion : touch.startX >= width - this.edgeRegion;
|
|
217
|
+
if (inBand) {
|
|
218
|
+
return physical;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { GestureRecognizer, type GestureRecognizerOptions, type NativeTouchBehavior } from './GestureRecognizer.js';
|
|
2
|
+
import type { GestureEventContext, GestureTouch } from './types.js';
|
|
3
|
+
export type SwipeDirection = 'left' | 'right' | 'up' | 'down';
|
|
4
|
+
export interface SwipeGestureRecognizerOptions extends GestureRecognizerOptions<SwipeGestureRecognizer> {
|
|
5
|
+
/** @default ['right'] */
|
|
6
|
+
direction?: SwipeDirection | ReadonlyArray<SwipeDirection>;
|
|
7
|
+
/** @default 1 */
|
|
8
|
+
numberOfTouchesRequired?: number;
|
|
9
|
+
minimumDistance?: number;
|
|
10
|
+
maximumDuration?: number;
|
|
11
|
+
maximumSecondaryMovement?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class SwipeGestureRecognizer extends GestureRecognizer {
|
|
14
|
+
get kind(): GestureRecognizer['kind'];
|
|
15
|
+
directions: ReadonlyArray<SwipeDirection>;
|
|
16
|
+
numberOfTouchesRequired: number;
|
|
17
|
+
minimumDistance: number;
|
|
18
|
+
maximumDuration: number;
|
|
19
|
+
maximumSecondaryMovement: number;
|
|
20
|
+
/** The direction of the recognized swipe. */
|
|
21
|
+
recognizedDirection: SwipeDirection | null;
|
|
22
|
+
private origin;
|
|
23
|
+
/** Directions this touch's path has ruled out. */
|
|
24
|
+
private readonly ruledOut;
|
|
25
|
+
/** The centroid at the previous move. */
|
|
26
|
+
private last;
|
|
27
|
+
constructor(options?: SwipeGestureRecognizerOptions);
|
|
28
|
+
get isDiscrete(): boolean;
|
|
29
|
+
get nativeTouchBehavior(): NativeTouchBehavior;
|
|
30
|
+
protected touchesBegan(touches: ReadonlyArray<GestureTouch>, event: GestureEventContext): void;
|
|
31
|
+
protected touchesMoved(): void;
|
|
32
|
+
/** Travel along and across `direction` from the origin to `point`. */
|
|
33
|
+
private project;
|
|
34
|
+
protected touchesEnded(): void;
|
|
35
|
+
protected reset(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SwipeGestureRecognizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwipeGestureRecognizer.d.ts","sourceRoot":"","sources":["../../src/gestures/SwipeGestureRecognizer.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,mBAAmB,EAAE,YAAY,EAAQ,MAAM,SAAS,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB,CAAC,sBAAsB,CAAC;IACrG,yBAAyB;IACzB,SAAS,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC3D,iBAAiB;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAID,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,IAAa,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAE7C;IAED,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC1C,uBAAuB,EAAE,MAAM,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,6CAA6C;IAC7C,mBAAmB,EAAE,cAAc,GAAG,IAAI,CAAQ;IAElD,OAAO,CAAC,MAAM,CAAuB;IACrC,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,yCAAyC;IACzC,OAAO,CAAC,IAAI,CAAsB;gBAEtB,OAAO,GAAE,6BAAkC;IAavD,IAAa,UAAU,IAAI,OAAO,CAEjC;IAED,IAAa,mBAAmB,IAAI,mBAAmB,CAatD;cAEkB,YAAY,CAC7B,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,KAAK,EAAE,mBAAmB,GACzB,IAAI;cAmBY,YAAY,IAAI,IAAI;IAyCvC,sEAAsE;IACtE,OAAO,CAAC,OAAO;cAYI,YAAY,IAAI,IAAI;cAOpB,KAAK,IAAI,IAAI;CAMjC"}
|