react-native-gesture-handler 3.0.0-beta.3 → 3.0.0-beta.5
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/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +42 -38
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +34 -8
- package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +3 -6
- package/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt +2 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +68 -7
- package/android/src/main/java/com/swmansion/gesturehandler/core/OnJSResponderCancelListener.kt +6 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt +2 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt +16 -6
- package/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt +17 -4
- package/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt +0 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +21 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +160 -55
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt +75 -98
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +7 -10
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +64 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +18 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +15 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +0 -6
- package/apple/Handlers/RNForceTouchHandler.m +1 -1
- package/apple/Handlers/RNHoverHandler.m +11 -11
- package/apple/Handlers/RNLongPressHandler.m +2 -2
- package/apple/Handlers/RNManualHandler.m +5 -0
- package/apple/Handlers/RNNativeViewHandler.mm +114 -53
- package/apple/Handlers/RNPanHandler.m +7 -3
- package/apple/Handlers/RNPinchHandler.m +9 -3
- package/apple/Handlers/RNRotationHandler.m +7 -2
- package/apple/Handlers/RNTapHandler.m +1 -1
- package/apple/RNGestureHandler.h +18 -0
- package/apple/RNGestureHandler.mm +82 -33
- package/apple/RNGestureHandlerButton.h +12 -2
- package/apple/RNGestureHandlerButton.mm +208 -38
- package/apple/RNGestureHandlerButtonComponentView.mm +102 -6
- package/apple/RNGestureHandlerDetector.mm +99 -75
- package/apple/RNGestureHandlerModule.mm +11 -14
- package/apple/RNGestureHandlerRegistry.h +14 -1
- package/apple/RNGestureHandlerRegistry.m +56 -0
- package/apple/RNRootViewGestureRecognizer.m +4 -15
- package/lib/module/RNGestureHandlerModule.web.js +5 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/GestureButtons.js +23 -12
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.web.js +113 -31
- package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +2 -1
- package/lib/module/components/Pressable/Pressable.js.map +1 -1
- package/lib/module/components/Pressable/stateDefinitions.js +2 -0
- package/lib/module/components/Pressable/stateDefinitions.js.map +1 -1
- package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
- package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js +38 -5
- package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +2 -6
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +1 -2
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/utils.js +11 -48
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/module/handlers/gestures/flingGesture.js +8 -0
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js +3 -3
- package/lib/module/handlers/gestures/gesture.js +8 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureComposition.js +28 -0
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +27 -1
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +9 -0
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js +8 -0
- package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +8 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/manualGesture.js +8 -0
- package/lib/module/handlers/gestures/manualGesture.js.map +1 -1
- package/lib/module/handlers/gestures/nativeGesture.js +8 -0
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +13 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/pinchGesture.js +13 -0
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +14 -2
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/handlers/gestures/rotationGesture.js +8 -0
- package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +8 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/mocks/module.js +3 -2
- package/lib/module/mocks/module.js.map +1 -1
- package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerButtonNativeComponent.ts +28 -13
- package/lib/module/v3/NativeProxy.js +5 -3
- package/lib/module/v3/NativeProxy.js.map +1 -1
- package/lib/module/v3/NativeProxy.web.js +2 -2
- package/lib/module/v3/NativeProxy.web.js.map +1 -1
- package/lib/module/v3/components/GestureButtons.js +11 -6
- package/lib/module/v3/components/GestureButtons.js.map +1 -1
- package/lib/module/v3/components/Pressable.js +3 -2
- package/lib/module/v3/components/Pressable.js.map +1 -1
- package/lib/module/v3/components/Touchable/Touchable.js +119 -32
- package/lib/module/v3/components/Touchable/Touchable.js.map +1 -1
- package/lib/module/v3/detectors/HostGestureDetector.web.js +180 -59
- package/lib/module/v3/detectors/HostGestureDetector.web.js.map +1 -1
- package/lib/module/v3/detectors/NativeDetector.js +3 -2
- package/lib/module/v3/detectors/NativeDetector.js.map +1 -1
- package/lib/module/v3/detectors/VirtualDetector/InterceptingGestureDetector.js +3 -4
- package/lib/module/v3/detectors/VirtualDetector/InterceptingGestureDetector.js.map +1 -1
- package/lib/module/v3/detectors/VirtualDetector/VirtualDetector.js +4 -2
- package/lib/module/v3/detectors/VirtualDetector/VirtualDetector.js.map +1 -1
- package/lib/module/v3/detectors/useGestureRelationsUpdater.js +23 -0
- package/lib/module/v3/detectors/useGestureRelationsUpdater.js.map +1 -0
- package/lib/module/v3/detectors/useNativeGestureRole.js +6 -0
- package/lib/module/v3/detectors/useNativeGestureRole.js.map +1 -0
- package/lib/module/v3/detectors/useNativeGestureRole.web.js +27 -0
- package/lib/module/v3/detectors/useNativeGestureRole.web.js.map +1 -0
- package/lib/module/v3/detectors/utils.js +10 -8
- package/lib/module/v3/detectors/utils.js.map +1 -1
- package/lib/module/v3/hooks/callbacks/useReanimatedEventHandler.js +17 -2
- package/lib/module/v3/hooks/callbacks/useReanimatedEventHandler.js.map +1 -1
- package/lib/module/v3/hooks/gestures/fling/useFlingGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/fling/useFlingGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/hover/useHoverGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/hover/useHoverGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/longPress/useLongPressGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/longPress/useLongPressGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/manual/useManualGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/manual/useManualGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/native/NativeTypes.js +1 -1
- package/lib/module/v3/hooks/gestures/native/NativeTypes.js.map +1 -1
- package/lib/module/v3/hooks/gestures/native/useNativeGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/native/useNativeGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/pan/usePanGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/pan/usePanGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/pinch/usePinchGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/pinch/usePinchGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/rotation/useRotationGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/rotation/useRotationGesture.js.map +1 -1
- package/lib/module/v3/hooks/gestures/tap/useTapGesture.js +2 -1
- package/lib/module/v3/hooks/gestures/tap/useTapGesture.js.map +1 -1
- package/lib/module/v3/hooks/useGesture.js +4 -22
- package/lib/module/v3/hooks/useGesture.js.map +1 -1
- package/lib/module/v3/hooks/utils/configUtils.js +8 -6
- package/lib/module/v3/hooks/utils/configUtils.js.map +1 -1
- package/lib/module/v3/hooks/utils/eventHandlersUtils.js +31 -29
- package/lib/module/v3/hooks/utils/eventHandlersUtils.js.map +1 -1
- package/lib/module/v3/hooks/utils/index.js +1 -1
- package/lib/module/v3/hooks/utils/index.js.map +1 -1
- package/lib/module/v3/hooks/utils/propsWhiteList.js +1 -1
- package/lib/module/v3/hooks/utils/propsWhiteList.js.map +1 -1
- package/lib/module/v3/hooks/utils/reanimatedUtils.js +8 -2
- package/lib/module/v3/hooks/utils/reanimatedUtils.js.map +1 -1
- package/lib/module/web/constants.js +1 -0
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +18 -5
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +9 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +25 -5
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/HoverGestureHandler.js +1 -4
- package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +65 -17
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +1 -0
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +4 -6
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +4 -3
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +6 -0
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +8 -2
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureLifecycleEvents.js +10 -0
- package/lib/module/web/tools/GestureLifecycleEvents.js.map +1 -0
- package/lib/module/web/tools/NodeManager.js +44 -0
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +9 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts.map +1 -1
- package/lib/typescript/components/GestureButtons.d.ts +14 -6
- package/lib/typescript/components/GestureButtons.d.ts.map +1 -1
- package/lib/typescript/components/GestureHandlerButton.d.ts +62 -8
- package/lib/typescript/components/GestureHandlerButton.d.ts.map +1 -1
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +14 -3
- package/lib/typescript/components/GestureHandlerButton.web.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/PressableProps.d.ts +1 -1
- package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -1
- package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +16 -14
- package/lib/typescript/components/ReanimatedDrawerLayout.d.ts.map +1 -1
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts +2 -1
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts.map +1 -1
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts +30 -34
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts.map +1 -1
- package/lib/typescript/components/touchables/GenericTouchable.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/flingGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +3 -3
- package/lib/typescript/handlers/gestures/gesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +27 -1
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +6 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/manualGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/panGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +6 -0
- package/lib/typescript/handlers/gestures/tapGesture.d.ts.map +1 -1
- package/lib/typescript/mocks/module.d.ts +1 -1
- package/lib/typescript/mocks/module.d.ts.map +1 -1
- package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +2 -2
- package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts.map +1 -1
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +19 -11
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts.map +1 -1
- package/lib/typescript/v3/NativeProxy.d.ts +1 -1
- package/lib/typescript/v3/NativeProxy.d.ts.map +1 -1
- package/lib/typescript/v3/NativeProxy.web.d.ts +1 -1
- package/lib/typescript/v3/NativeProxy.web.d.ts.map +1 -1
- package/lib/typescript/v3/components/GestureButtons.d.ts +1 -37
- package/lib/typescript/v3/components/GestureButtons.d.ts.map +1 -1
- package/lib/typescript/v3/components/GestureButtonsProps.d.ts +1 -1
- package/lib/typescript/v3/components/GestureButtonsProps.d.ts.map +1 -1
- package/lib/typescript/v3/components/GestureComponents.d.ts +3 -0
- package/lib/typescript/v3/components/GestureComponents.d.ts.map +1 -1
- package/lib/typescript/v3/components/GestureComponents.web.d.ts +4 -0
- package/lib/typescript/v3/components/GestureComponents.web.d.ts.map +1 -1
- package/lib/typescript/v3/components/Pressable.d.ts.map +1 -1
- package/lib/typescript/v3/components/Touchable/Touchable.d.ts.map +1 -1
- package/lib/typescript/v3/components/Touchable/TouchableProps.d.ts +48 -1
- package/lib/typescript/v3/components/Touchable/TouchableProps.d.ts.map +1 -1
- package/lib/typescript/v3/detectors/HostGestureDetector.web.d.ts +1 -1
- package/lib/typescript/v3/detectors/HostGestureDetector.web.d.ts.map +1 -1
- package/lib/typescript/v3/detectors/NativeDetector.d.ts.map +1 -1
- package/lib/typescript/v3/detectors/VirtualDetector/InterceptingGestureDetector.d.ts.map +1 -1
- package/lib/typescript/v3/detectors/VirtualDetector/VirtualDetector.d.ts.map +1 -1
- package/lib/typescript/v3/detectors/useGestureRelationsUpdater.d.ts +3 -0
- package/lib/typescript/v3/detectors/useGestureRelationsUpdater.d.ts.map +1 -0
- package/lib/typescript/v3/detectors/useNativeGestureRole.d.ts +3 -0
- package/lib/typescript/v3/detectors/useNativeGestureRole.d.ts.map +1 -0
- package/lib/typescript/v3/detectors/useNativeGestureRole.web.d.ts +3 -0
- package/lib/typescript/v3/detectors/useNativeGestureRole.web.d.ts.map +1 -0
- package/lib/typescript/v3/detectors/utils.d.ts +3 -3
- package/lib/typescript/v3/detectors/utils.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/callbacks/useReanimatedEventHandler.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/fling/useFlingGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/fling/useFlingGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/hover/useHoverGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/hover/useHoverGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/longPress/useLongPressGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/longPress/useLongPressGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/manual/useManualGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/manual/useManualGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/native/NativeTypes.d.ts +7 -0
- package/lib/typescript/v3/hooks/gestures/native/NativeTypes.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/native/useNativeGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/native/useNativeGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/pan/usePanGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/pan/usePanGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/pinch/usePinchGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/pinch/usePinchGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/rotation/useRotationGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/rotation/useRotationGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/gestures/tap/useTapGesture.d.ts +1 -1
- package/lib/typescript/v3/hooks/gestures/tap/useTapGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/useGesture.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/utils/configUtils.d.ts +2 -2
- package/lib/typescript/v3/hooks/utils/configUtils.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/utils/eventHandlersUtils.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/utils/index.d.ts +1 -1
- package/lib/typescript/v3/hooks/utils/index.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/utils/propsWhiteList.d.ts +2 -2
- package/lib/typescript/v3/hooks/utils/propsWhiteList.d.ts.map +1 -1
- package/lib/typescript/v3/hooks/utils/reanimatedUtils.d.ts +1 -0
- package/lib/typescript/v3/hooks/utils/reanimatedUtils.d.ts.map +1 -1
- package/lib/typescript/v3/types/ConfigTypes.d.ts +1 -0
- package/lib/typescript/v3/types/ConfigTypes.d.ts.map +1 -1
- package/lib/typescript/web/constants.d.ts +1 -0
- package/lib/typescript/web/constants.d.ts.map +1 -1
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts.map +1 -1
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts.map +1 -1
- package/lib/typescript/web/handlers/GestureHandler.d.ts +8 -2
- package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -1
- package/lib/typescript/web/handlers/HoverGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/IGestureHandler.d.ts +2 -0
- package/lib/typescript/web/handlers/IGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +13 -3
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/interfaces.d.ts +6 -0
- package/lib/typescript/web/interfaces.d.ts.map +1 -1
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +1 -0
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts.map +1 -1
- package/lib/typescript/web/tools/GestureLifecycleEvents.d.ts +7 -0
- package/lib/typescript/web/tools/GestureLifecycleEvents.d.ts.map +1 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +7 -0
- package/lib/typescript/web/tools/NodeManager.d.ts.map +1 -1
- package/lib/typescript/web/tools/PointerEventManager.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/RNGestureHandlerModule.web.ts +5 -1
- package/src/components/GestureButtons.tsx +33 -16
- package/src/components/GestureHandlerButton.tsx +70 -8
- package/src/components/GestureHandlerButton.web.tsx +184 -48
- package/src/components/Pressable/Pressable.tsx +3 -1
- package/src/components/Pressable/PressableProps.tsx +2 -1
- package/src/components/Pressable/stateDefinitions.ts +3 -0
- package/src/components/ReanimatedDrawerLayout.tsx +27 -23
- package/src/components/ReanimatedSwipeable/ReanimatedSwipeable.tsx +51 -5
- package/src/components/ReanimatedSwipeable/ReanimatedSwipeableProps.ts +31 -39
- package/src/components/touchables/GenericTouchable.tsx +2 -5
- package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +1 -2
- package/src/handlers/gestures/GestureDetector/utils.ts +11 -53
- package/src/handlers/gestures/flingGesture.ts +6 -0
- package/src/handlers/gestures/forceTouchGesture.ts +3 -3
- package/src/handlers/gestures/gesture.ts +6 -0
- package/src/handlers/gestures/gestureComposition.ts +21 -0
- package/src/handlers/gestures/gestureObjects.ts +27 -1
- package/src/handlers/gestures/gestureStateManager.ts +6 -0
- package/src/handlers/gestures/hoverGesture.ts +6 -0
- package/src/handlers/gestures/longPressGesture.ts +6 -0
- package/src/handlers/gestures/manualGesture.ts +6 -0
- package/src/handlers/gestures/nativeGesture.ts +6 -0
- package/src/handlers/gestures/panGesture.ts +9 -0
- package/src/handlers/gestures/pinchGesture.ts +9 -0
- package/src/handlers/gestures/reanimatedWrapper.ts +20 -2
- package/src/handlers/gestures/rotationGesture.ts +6 -0
- package/src/handlers/gestures/tapGesture.ts +6 -0
- package/src/mocks/module.tsx +4 -2
- package/src/specs/NativeRNGestureHandlerModule.ts +2 -4
- package/src/specs/RNGestureHandlerButtonNativeComponent.ts +28 -13
- package/src/v3/NativeProxy.ts +9 -7
- package/src/v3/NativeProxy.web.ts +2 -2
- package/src/v3/components/GestureButtons.tsx +18 -10
- package/src/v3/components/GestureButtonsProps.ts +1 -0
- package/src/v3/components/Pressable.tsx +2 -1
- package/src/v3/components/Touchable/Touchable.tsx +144 -50
- package/src/v3/components/Touchable/TouchableProps.ts +64 -2
- package/src/v3/detectors/HostGestureDetector.web.tsx +268 -108
- package/src/v3/detectors/NativeDetector.tsx +3 -2
- package/src/v3/detectors/VirtualDetector/InterceptingGestureDetector.tsx +3 -4
- package/src/v3/detectors/VirtualDetector/VirtualDetector.tsx +5 -2
- package/src/v3/detectors/useGestureRelationsUpdater.ts +30 -0
- package/src/v3/detectors/useNativeGestureRole.ts +8 -0
- package/src/v3/detectors/useNativeGestureRole.web.ts +42 -0
- package/src/v3/detectors/utils.ts +28 -12
- package/src/v3/hooks/callbacks/useReanimatedEventHandler.ts +23 -7
- package/src/v3/hooks/gestures/fling/useFlingGesture.ts +5 -1
- package/src/v3/hooks/gestures/hover/useHoverGesture.ts +5 -1
- package/src/v3/hooks/gestures/longPress/useLongPressGesture.ts +3 -1
- package/src/v3/hooks/gestures/manual/useManualGesture.ts +5 -1
- package/src/v3/hooks/gestures/native/NativeTypes.ts +13 -1
- package/src/v3/hooks/gestures/native/useNativeGesture.ts +5 -1
- package/src/v3/hooks/gestures/pan/usePanGesture.ts +5 -1
- package/src/v3/hooks/gestures/pinch/usePinchGesture.ts +5 -1
- package/src/v3/hooks/gestures/rotation/useRotationGesture.ts +3 -1
- package/src/v3/hooks/gestures/tap/useTapGesture.ts +5 -1
- package/src/v3/hooks/useGesture.ts +4 -18
- package/src/v3/hooks/utils/configUtils.ts +18 -8
- package/src/v3/hooks/utils/eventHandlersUtils.ts +43 -32
- package/src/v3/hooks/utils/index.ts +0 -1
- package/src/v3/hooks/utils/propsWhiteList.ts +1 -0
- package/src/v3/hooks/utils/reanimatedUtils.ts +10 -10
- package/src/v3/types/ConfigTypes.ts +1 -0
- package/src/web/constants.ts +1 -0
- package/src/web/detectors/RotationGestureDetector.ts +19 -5
- package/src/web/detectors/ScaleGestureDetector.ts +9 -3
- package/src/web/handlers/GestureHandler.ts +36 -6
- package/src/web/handlers/HoverGestureHandler.ts +2 -5
- package/src/web/handlers/IGestureHandler.ts +2 -0
- package/src/web/handlers/ManualGestureHandler.ts +2 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +122 -19
- package/src/web/handlers/PanGestureHandler.ts +2 -0
- package/src/web/handlers/PinchGestureHandler.ts +5 -7
- package/src/web/handlers/RotationGestureHandler.ts +5 -5
- package/src/web/interfaces.ts +7 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +11 -3
- package/src/web/tools/GestureLifecycleEvents.ts +14 -0
- package/src/web/tools/NodeManager.ts +57 -0
- package/src/web/tools/PointerEventManager.ts +12 -0
- package/lib/module/RNRenderer.js +0 -6
- package/lib/module/RNRenderer.js.map +0 -1
- package/lib/module/RNRenderer.web.js +0 -6
- package/lib/module/RNRenderer.web.js.map +0 -1
- package/lib/typescript/RNRenderer.d.ts +0 -2
- package/lib/typescript/RNRenderer.d.ts.map +0 -1
- package/lib/typescript/RNRenderer.web.d.ts +0 -4
- package/lib/typescript/RNRenderer.web.d.ts.map +0 -1
- package/src/RNRenderer.ts +0 -3
- package/src/RNRenderer.web.ts +0 -3
|
@@ -14,6 +14,7 @@ import { tagMessage } from '../../utils';
|
|
|
14
14
|
import type {
|
|
15
15
|
GestureStateChangeEventWithHandlerData,
|
|
16
16
|
GestureUpdateEventWithHandlerData,
|
|
17
|
+
HandlerData,
|
|
17
18
|
SingleGestureName,
|
|
18
19
|
} from '../../v3/types';
|
|
19
20
|
import type {
|
|
@@ -45,7 +46,7 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
45
46
|
|
|
46
47
|
private viewRef: number | null = null;
|
|
47
48
|
private propsRef: React.RefObject<PropsRef> | null = null;
|
|
48
|
-
|
|
49
|
+
protected actionType: ActionType | null = null;
|
|
49
50
|
private forAnimated: boolean = false;
|
|
50
51
|
private forReanimated: boolean = false;
|
|
51
52
|
private _handlerTag!: number;
|
|
@@ -302,6 +303,12 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
302
303
|
);
|
|
303
304
|
}
|
|
304
305
|
|
|
306
|
+
public shouldBeginWithRecordedHandlers(
|
|
307
|
+
_recorded: IGestureHandler[]
|
|
308
|
+
): boolean {
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
|
|
305
312
|
public shouldAttachGestureToChildView(): boolean {
|
|
306
313
|
return false;
|
|
307
314
|
}
|
|
@@ -355,8 +362,9 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
355
362
|
protected onPointerCancel(_event: AdaptedEvent): void {
|
|
356
363
|
// No need to send a cancel touch event explicitly here. `cancel` will
|
|
357
364
|
// handle cancelling all tracked touches if the handler expects pointer data.
|
|
358
|
-
|
|
359
|
-
|
|
365
|
+
if (GestureHandlerOrchestrator.instance.isHandlerRecorded(this)) {
|
|
366
|
+
this.cancel();
|
|
367
|
+
}
|
|
360
368
|
}
|
|
361
369
|
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
362
370
|
this.tryToSendMoveEvent(true, event);
|
|
@@ -430,11 +438,13 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
430
438
|
onGestureHandlerReanimatedStateChange,
|
|
431
439
|
}: PropsRef = this.propsRef!.current;
|
|
432
440
|
|
|
441
|
+
const isStateChange = this.lastSentState !== newState;
|
|
442
|
+
|
|
433
443
|
const resultEvent: ResultEvent = !usesNativeOrVirtualDetector(
|
|
434
444
|
this.actionType
|
|
435
445
|
)
|
|
436
446
|
? this.transformEventData(newState, oldState)
|
|
437
|
-
:
|
|
447
|
+
: isStateChange
|
|
438
448
|
? this.transformStateChangeEvent(newState, oldState)
|
|
439
449
|
: this.transformUpdateEvent(newState);
|
|
440
450
|
|
|
@@ -442,7 +452,7 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
442
452
|
// Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back
|
|
443
453
|
// Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once
|
|
444
454
|
// However, this may cause trouble in the future (but for now we don't know that)
|
|
445
|
-
if (
|
|
455
|
+
if (isStateChange) {
|
|
446
456
|
this.lastSentState = newState;
|
|
447
457
|
|
|
448
458
|
if (this.forReanimated) {
|
|
@@ -456,6 +466,16 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
456
466
|
return;
|
|
457
467
|
}
|
|
458
468
|
|
|
469
|
+
// Cover only V3 path due to different event shape
|
|
470
|
+
if (!isStateChange && usesNativeOrVirtualDetector(this.actionType)) {
|
|
471
|
+
const handlerData = (
|
|
472
|
+
resultEvent.nativeEvent as GestureUpdateEventWithHandlerData<unknown>
|
|
473
|
+
).handlerData;
|
|
474
|
+
if (this.shouldSuppressActiveUpdate(handlerData)) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
459
479
|
(resultEvent.nativeEvent as GestureHandlerNativeEvent).oldState = undefined;
|
|
460
480
|
|
|
461
481
|
if (this.forReanimated) {
|
|
@@ -467,6 +487,12 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
467
487
|
}
|
|
468
488
|
};
|
|
469
489
|
|
|
490
|
+
protected shouldSuppressActiveUpdate(
|
|
491
|
+
_handlerData: HandlerData<unknown>
|
|
492
|
+
): boolean {
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
|
|
470
496
|
private transformEventData(
|
|
471
497
|
newState: State,
|
|
472
498
|
oldState: State
|
|
@@ -744,7 +770,6 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
744
770
|
const enabledChanged = this.maybeUpdateEnabled(config.enabled);
|
|
745
771
|
|
|
746
772
|
if (config.hitSlop !== undefined) {
|
|
747
|
-
this.hitSlop = config.hitSlop;
|
|
748
773
|
this.hitSlop = config.hitSlop;
|
|
749
774
|
this.validateHitSlops();
|
|
750
775
|
}
|
|
@@ -1072,6 +1097,11 @@ export default abstract class GestureHandler implements IGestureHandler {
|
|
|
1072
1097
|
this._name = value;
|
|
1073
1098
|
}
|
|
1074
1099
|
|
|
1100
|
+
/**
|
|
1101
|
+
* Whether the handler represents a continuous gesture rather than a discrete one.
|
|
1102
|
+
*/
|
|
1103
|
+
public readonly isContinuous: boolean = false;
|
|
1104
|
+
|
|
1075
1105
|
public getTrackedPointersID(): number[] {
|
|
1076
1106
|
return this.tracker.trackedPointersIDs;
|
|
1077
1107
|
}
|
|
@@ -8,6 +8,8 @@ import GestureHandler from './GestureHandler';
|
|
|
8
8
|
import type IGestureHandler from './IGestureHandler';
|
|
9
9
|
|
|
10
10
|
export default class HoverGestureHandler extends GestureHandler {
|
|
11
|
+
public override readonly isContinuous = true;
|
|
12
|
+
|
|
11
13
|
private stylusData: StylusData | undefined;
|
|
12
14
|
|
|
13
15
|
public constructor(
|
|
@@ -52,9 +54,4 @@ export default class HoverGestureHandler extends GestureHandler {
|
|
|
52
54
|
|
|
53
55
|
super.onPointerMove(event);
|
|
54
56
|
}
|
|
55
|
-
|
|
56
|
-
protected override onPointerCancel(event: AdaptedEvent): void {
|
|
57
|
-
super.onPointerCancel(event);
|
|
58
|
-
this.reset();
|
|
59
|
-
}
|
|
60
57
|
}
|
|
@@ -22,6 +22,7 @@ export default interface IGestureHandler {
|
|
|
22
22
|
readonly delegate: GestureHandlerDelegate<unknown, this>;
|
|
23
23
|
readonly tracker: PointerTracker;
|
|
24
24
|
readonly name: SingleGestureName;
|
|
25
|
+
readonly isContinuous: boolean;
|
|
25
26
|
state: State;
|
|
26
27
|
shouldCancelWhenOutside: boolean;
|
|
27
28
|
shouldResetProgress: boolean;
|
|
@@ -53,6 +54,7 @@ export default interface IGestureHandler {
|
|
|
53
54
|
shouldRequireToWaitForFailure: (handler: IGestureHandler) => boolean;
|
|
54
55
|
shouldRecognizeSimultaneously: (handler: IGestureHandler) => boolean;
|
|
55
56
|
shouldBeCancelledByOther: (handler: IGestureHandler) => boolean;
|
|
57
|
+
shouldBeginWithRecordedHandlers: (recorded: IGestureHandler[]) => boolean;
|
|
56
58
|
shouldAttachGestureToChildView: () => boolean;
|
|
57
59
|
|
|
58
60
|
sendEvent: (newState: State, oldState: State) => void;
|
|
@@ -5,6 +5,8 @@ import GestureHandler from './GestureHandler';
|
|
|
5
5
|
import type IGestureHandler from './IGestureHandler';
|
|
6
6
|
|
|
7
7
|
export default class ManualGestureHandler extends GestureHandler {
|
|
8
|
+
public override readonly isContinuous = true;
|
|
9
|
+
|
|
8
10
|
public constructor(
|
|
9
11
|
delegate: GestureHandlerDelegate<unknown, IGestureHandler>
|
|
10
12
|
) {
|
|
@@ -1,25 +1,40 @@
|
|
|
1
1
|
import { Platform } from 'react-native';
|
|
2
2
|
|
|
3
|
-
import type
|
|
3
|
+
import { type ActionType, usesNativeOrVirtualDetector } from '../../ActionType';
|
|
4
4
|
import { State } from '../../State';
|
|
5
|
+
import { deepEqual } from '../../utils';
|
|
6
|
+
import type { NativeHandlerData } from '../../v3/hooks/gestures/native/NativeTypes';
|
|
7
|
+
import type { HandlerData } from '../../v3/types';
|
|
5
8
|
import { SingleGestureName } from '../../v3/types';
|
|
6
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_TOUCH_SLOP,
|
|
11
|
+
NATIVE_GESTURE_ROLE_ATTRIBUTE,
|
|
12
|
+
} from '../constants';
|
|
7
13
|
import type { AdaptedEvent, Config, PropsRef } from '../interfaces';
|
|
14
|
+
import { NativeGestureRole } from '../interfaces';
|
|
8
15
|
import type { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
|
|
16
|
+
import {
|
|
17
|
+
dispatchGestureLifecycleEvent,
|
|
18
|
+
GestureLifecycleEvent,
|
|
19
|
+
} from '../tools/GestureLifecycleEvents';
|
|
9
20
|
import GestureHandler from './GestureHandler';
|
|
10
21
|
import type IGestureHandler from './IGestureHandler';
|
|
22
|
+
|
|
11
23
|
export default class NativeViewGestureHandler extends GestureHandler {
|
|
12
|
-
|
|
24
|
+
public override readonly isContinuous = true;
|
|
25
|
+
private role: NativeGestureRole | null = null;
|
|
13
26
|
|
|
14
|
-
// TODO: Implement logic for activation on start
|
|
15
|
-
// @ts-ignore Logic yet to be implemented
|
|
27
|
+
// TODO: Implement logic for activation on start properly
|
|
16
28
|
private shouldActivateOnStart = false;
|
|
17
29
|
private disallowInterruption = false;
|
|
30
|
+
private yieldsToContinuousGestures = false;
|
|
18
31
|
|
|
19
32
|
private startX = 0;
|
|
20
33
|
private startY = 0;
|
|
21
34
|
private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;
|
|
22
35
|
|
|
36
|
+
private lastActiveHandlerData: HandlerData<NativeHandlerData> | null = null;
|
|
37
|
+
|
|
23
38
|
public constructor(
|
|
24
39
|
delegate: GestureHandlerDelegate<unknown, IGestureHandler>
|
|
25
40
|
) {
|
|
@@ -43,7 +58,19 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
43
58
|
const view = this.delegate.view as HTMLElement;
|
|
44
59
|
|
|
45
60
|
this.restoreViewStyles(view);
|
|
46
|
-
|
|
61
|
+
|
|
62
|
+
if (usesNativeOrVirtualDetector(this.actionType)) {
|
|
63
|
+
this.role =
|
|
64
|
+
(view.getAttribute(
|
|
65
|
+
NATIVE_GESTURE_ROLE_ATTRIBUTE
|
|
66
|
+
) as NativeGestureRole) ?? null;
|
|
67
|
+
} else {
|
|
68
|
+
if (view.getAttribute('role') === 'button') {
|
|
69
|
+
this.role = NativeGestureRole.Button;
|
|
70
|
+
} else if (view.querySelector(':scope > input[role="switch"]') !== null) {
|
|
71
|
+
this.role = NativeGestureRole.Switch;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
47
74
|
}
|
|
48
75
|
|
|
49
76
|
public override updateGestureConfig(config: Config): void {
|
|
@@ -55,6 +82,9 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
55
82
|
if (config.disallowInterruption !== undefined) {
|
|
56
83
|
this.disallowInterruption = config.disallowInterruption;
|
|
57
84
|
}
|
|
85
|
+
if (config.yieldsToContinuousGestures !== undefined) {
|
|
86
|
+
this.yieldsToContinuousGestures = config.yieldsToContinuousGestures;
|
|
87
|
+
}
|
|
58
88
|
|
|
59
89
|
const view = this.delegate.view as HTMLElement;
|
|
60
90
|
this.restoreViewStyles(view);
|
|
@@ -66,7 +96,7 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
66
96
|
}
|
|
67
97
|
|
|
68
98
|
view.style['touchAction'] = 'auto';
|
|
69
|
-
// @ts-ignore Turns on
|
|
99
|
+
// @ts-ignore Turns on default touch behavior on Safari
|
|
70
100
|
view.style['WebkitTouchCallout'] = 'auto';
|
|
71
101
|
}
|
|
72
102
|
|
|
@@ -93,10 +123,19 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
93
123
|
|
|
94
124
|
this.begin();
|
|
95
125
|
|
|
126
|
+
dispatchGestureLifecycleEvent(
|
|
127
|
+
this.delegate.view as HTMLElement | null,
|
|
128
|
+
GestureLifecycleEvent.Began
|
|
129
|
+
);
|
|
130
|
+
|
|
96
131
|
const view = this.delegate.view as HTMLElement;
|
|
97
132
|
const isRNGHText = view.hasAttribute('rnghtext');
|
|
98
133
|
|
|
99
|
-
if (
|
|
134
|
+
if (
|
|
135
|
+
(this.role === NativeGestureRole.Button && this.shouldActivateOnStart) ||
|
|
136
|
+
this.role === NativeGestureRole.Switch ||
|
|
137
|
+
isRNGHText
|
|
138
|
+
) {
|
|
100
139
|
this.activate();
|
|
101
140
|
}
|
|
102
141
|
}
|
|
@@ -109,12 +148,15 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
109
148
|
const dy = this.startY - lastCoords.y;
|
|
110
149
|
const distSq = dx * dx + dy * dy;
|
|
111
150
|
|
|
112
|
-
if (
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
151
|
+
if (
|
|
152
|
+
this.role === NativeGestureRole.Switch ||
|
|
153
|
+
this.role === NativeGestureRole.Button
|
|
154
|
+
) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (distSq >= this.minDistSq && this.state === State.BEGAN) {
|
|
159
|
+
this.activate();
|
|
118
160
|
}
|
|
119
161
|
}
|
|
120
162
|
|
|
@@ -138,6 +180,13 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
138
180
|
this.tracker.removeFromTracker(event.pointerId);
|
|
139
181
|
|
|
140
182
|
if (this.tracker.trackedPointersCount === 0) {
|
|
183
|
+
if (
|
|
184
|
+
this.role === NativeGestureRole.Button &&
|
|
185
|
+
this.state === State.BEGAN
|
|
186
|
+
) {
|
|
187
|
+
this.activate();
|
|
188
|
+
}
|
|
189
|
+
|
|
141
190
|
if (this.state === State.ACTIVE) {
|
|
142
191
|
this.end();
|
|
143
192
|
} else {
|
|
@@ -156,12 +205,15 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
156
205
|
if (
|
|
157
206
|
handler instanceof NativeViewGestureHandler &&
|
|
158
207
|
handler.state === State.ACTIVE &&
|
|
159
|
-
handler.disallowsInterruption()
|
|
208
|
+
handler.disallowsInterruption() &&
|
|
209
|
+
!handler.yieldsToContinuousGestures
|
|
160
210
|
) {
|
|
161
211
|
return false;
|
|
162
212
|
}
|
|
163
213
|
|
|
164
|
-
const canBeInterrupted =
|
|
214
|
+
const canBeInterrupted =
|
|
215
|
+
!this.disallowInterruption ||
|
|
216
|
+
(this.yieldsToContinuousGestures && handler.isContinuous);
|
|
165
217
|
|
|
166
218
|
if (
|
|
167
219
|
this.state === State.ACTIVE &&
|
|
@@ -176,8 +228,16 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
176
228
|
);
|
|
177
229
|
}
|
|
178
230
|
|
|
179
|
-
public override
|
|
180
|
-
|
|
231
|
+
public override detach(): void {
|
|
232
|
+
super.detach();
|
|
233
|
+
this.role = null;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
public override shouldBeCancelledByOther(handler: IGestureHandler): boolean {
|
|
237
|
+
return (
|
|
238
|
+
!this.disallowInterruption ||
|
|
239
|
+
(this.yieldsToContinuousGestures && handler.isContinuous)
|
|
240
|
+
);
|
|
181
241
|
}
|
|
182
242
|
|
|
183
243
|
public override shouldAttachGestureToChildView(): boolean {
|
|
@@ -189,7 +249,32 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
189
249
|
}
|
|
190
250
|
|
|
191
251
|
public isButton(): boolean {
|
|
192
|
-
return this.
|
|
252
|
+
return this.role === NativeGestureRole.Button;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
public override shouldBeginWithRecordedHandlers(
|
|
256
|
+
recorded: IGestureHandler[]
|
|
257
|
+
): boolean {
|
|
258
|
+
if (!this.isButton()) {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const self = this as IGestureHandler;
|
|
263
|
+
return recorded.every(
|
|
264
|
+
(other) =>
|
|
265
|
+
other.shouldRecognizeSimultaneously(self) ||
|
|
266
|
+
self.shouldRecognizeSimultaneously(other) ||
|
|
267
|
+
other.delegate.view === this.delegate.view ||
|
|
268
|
+
other.name === SingleGestureName.Hover
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
protected override onCancel(): void {
|
|
273
|
+
super.onCancel();
|
|
274
|
+
dispatchGestureLifecycleEvent(
|
|
275
|
+
this.delegate.view as HTMLElement | null,
|
|
276
|
+
GestureLifecycleEvent.Canceled
|
|
277
|
+
);
|
|
193
278
|
}
|
|
194
279
|
|
|
195
280
|
protected override transformNativeEvent(): Record<string, unknown> {
|
|
@@ -199,4 +284,22 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
199
284
|
),
|
|
200
285
|
};
|
|
201
286
|
}
|
|
287
|
+
|
|
288
|
+
protected override shouldSuppressActiveUpdate(
|
|
289
|
+
handlerData: HandlerData<NativeHandlerData>
|
|
290
|
+
): boolean {
|
|
291
|
+
if (
|
|
292
|
+
this.lastActiveHandlerData &&
|
|
293
|
+
deepEqual(this.lastActiveHandlerData, handlerData)
|
|
294
|
+
) {
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
this.lastActiveHandlerData = handlerData;
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
public override reset(): void {
|
|
302
|
+
super.reset();
|
|
303
|
+
this.lastActiveHandlerData = null;
|
|
304
|
+
}
|
|
202
305
|
}
|
|
@@ -13,6 +13,8 @@ const DEFAULT_MAX_POINTERS = 10;
|
|
|
13
13
|
const DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;
|
|
14
14
|
|
|
15
15
|
export default class PanGestureHandler extends GestureHandler {
|
|
16
|
+
public override readonly isContinuous = true;
|
|
17
|
+
|
|
16
18
|
public velocityX = 0;
|
|
17
19
|
public velocityY = 0;
|
|
18
20
|
|
|
@@ -10,6 +10,8 @@ import GestureHandler from './GestureHandler';
|
|
|
10
10
|
import type IGestureHandler from './IGestureHandler';
|
|
11
11
|
|
|
12
12
|
export default class PinchGestureHandler extends GestureHandler {
|
|
13
|
+
public override readonly isContinuous = true;
|
|
14
|
+
|
|
13
15
|
private scale = 1;
|
|
14
16
|
private velocity = 0;
|
|
15
17
|
|
|
@@ -89,8 +91,8 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
89
91
|
protected override onPointerAdd(event: AdaptedEvent): void {
|
|
90
92
|
this.tracker.addToTracker(event);
|
|
91
93
|
super.onPointerAdd(event);
|
|
92
|
-
this.tryBegin();
|
|
93
94
|
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
95
|
+
this.tryBegin();
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
protected override onPointerUp(event: AdaptedEvent): void {
|
|
@@ -111,26 +113,22 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
111
113
|
super.onPointerRemove(event);
|
|
112
114
|
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
113
115
|
this.tracker.removeFromTracker(event.pointerId);
|
|
114
|
-
|
|
115
|
-
if (this.state === State.ACTIVE && this.tracker.trackedPointersCount < 2) {
|
|
116
|
-
this.end();
|
|
117
|
-
}
|
|
118
116
|
}
|
|
119
117
|
|
|
120
118
|
protected override onPointerMove(event: AdaptedEvent): void {
|
|
119
|
+
this.tracker.track(event);
|
|
121
120
|
if (this.tracker.trackedPointersCount < 2) {
|
|
122
121
|
return;
|
|
123
122
|
}
|
|
124
|
-
this.tracker.track(event);
|
|
125
123
|
|
|
126
124
|
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
127
125
|
super.onPointerMove(event);
|
|
128
126
|
}
|
|
129
127
|
protected override onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
128
|
+
this.tracker.track(event);
|
|
130
129
|
if (this.tracker.trackedPointersCount < 2) {
|
|
131
130
|
return;
|
|
132
131
|
}
|
|
133
|
-
this.tracker.track(event);
|
|
134
132
|
|
|
135
133
|
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
136
134
|
super.onPointerOutOfBounds(event);
|
|
@@ -11,6 +11,8 @@ import type IGestureHandler from './IGestureHandler';
|
|
|
11
11
|
const ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36;
|
|
12
12
|
|
|
13
13
|
export default class RotationGestureHandler extends GestureHandler {
|
|
14
|
+
public override readonly isContinuous = true;
|
|
15
|
+
|
|
14
16
|
private rotation = 0;
|
|
15
17
|
private velocity = 0;
|
|
16
18
|
|
|
@@ -98,11 +100,12 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
98
100
|
this.tracker.addToTracker(event);
|
|
99
101
|
super.onPointerAdd(event);
|
|
100
102
|
|
|
101
|
-
this.tryBegin();
|
|
102
103
|
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
104
|
+
this.tryBegin();
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
protected override onPointerMove(event: AdaptedEvent): void {
|
|
108
|
+
this.tracker.track(event);
|
|
106
109
|
if (this.tracker.trackedPointersCount < 2) {
|
|
107
110
|
return;
|
|
108
111
|
}
|
|
@@ -111,14 +114,13 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
111
114
|
this.cachedAnchorX = anchor.x;
|
|
112
115
|
this.cachedAnchorY = anchor.y;
|
|
113
116
|
|
|
114
|
-
this.tracker.track(event);
|
|
115
|
-
|
|
116
117
|
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
117
118
|
|
|
118
119
|
super.onPointerMove(event);
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
protected override onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
123
|
+
this.tracker.track(event);
|
|
122
124
|
if (this.tracker.trackedPointersCount < 2) {
|
|
123
125
|
return;
|
|
124
126
|
}
|
|
@@ -127,8 +129,6 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
127
129
|
this.cachedAnchorX = anchor.x;
|
|
128
130
|
this.cachedAnchorY = anchor.y;
|
|
129
131
|
|
|
130
|
-
this.tracker.track(event);
|
|
131
|
-
|
|
132
132
|
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
133
133
|
|
|
134
134
|
super.onPointerOutOfBounds(event);
|
package/src/web/interfaces.ts
CHANGED
|
@@ -88,6 +88,7 @@ export interface Config extends Record<string, ConfigArgs> {
|
|
|
88
88
|
maxDeltaY?: number;
|
|
89
89
|
shouldActivateOnStart?: boolean;
|
|
90
90
|
disallowInterruption?: boolean;
|
|
91
|
+
yieldsToContinuousGestures?: boolean;
|
|
91
92
|
direction?: Directions;
|
|
92
93
|
enableTrackpadTwoFingerGesture?: boolean;
|
|
93
94
|
}
|
|
@@ -177,3 +178,9 @@ export type GestureHandlerRef = {
|
|
|
177
178
|
export type SVGRef = {
|
|
178
179
|
elementRef: { current: SVGElement };
|
|
179
180
|
};
|
|
181
|
+
|
|
182
|
+
export enum NativeGestureRole {
|
|
183
|
+
Button = 'GestureHandlerButton',
|
|
184
|
+
Switch = 'Switch',
|
|
185
|
+
ScrollView = 'ScrollView',
|
|
186
|
+
}
|
|
@@ -32,6 +32,10 @@ export default class GestureHandlerOrchestrator {
|
|
|
32
32
|
handler.activationIndex = Number.MAX_VALUE;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
public isHandlerRecorded(handler: IGestureHandler): boolean {
|
|
36
|
+
return this.gestureHandlers.includes(handler);
|
|
37
|
+
}
|
|
38
|
+
|
|
35
39
|
public removeHandlerFromOrchestrator(handler: IGestureHandler): void {
|
|
36
40
|
const indexInGestureHandlers = this.gestureHandlers.indexOf(handler);
|
|
37
41
|
const indexInAwaitingHandlers = this.awaitingHandlers.indexOf(handler);
|
|
@@ -266,15 +270,19 @@ export default class GestureHandlerOrchestrator {
|
|
|
266
270
|
}
|
|
267
271
|
|
|
268
272
|
public recordHandlerIfNotPresent(handler: IGestureHandler): void {
|
|
269
|
-
if (this.
|
|
273
|
+
if (this.isHandlerRecorded(handler)) {
|
|
270
274
|
return;
|
|
271
275
|
}
|
|
272
276
|
|
|
273
|
-
this.gestureHandlers.push(handler);
|
|
274
|
-
|
|
275
277
|
handler.active = false;
|
|
276
278
|
handler.awaiting = false;
|
|
277
279
|
handler.activationIndex = Number.MAX_SAFE_INTEGER;
|
|
280
|
+
|
|
281
|
+
if (!handler.shouldBeginWithRecordedHandlers(this.gestureHandlers)) {
|
|
282
|
+
handler.cancel();
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
this.gestureHandlers.push(handler);
|
|
278
286
|
}
|
|
279
287
|
|
|
280
288
|
private shouldHandlerWaitForOther(
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const GestureLifecycleEvent = {
|
|
2
|
+
Began: 'gh:gestureBegan',
|
|
3
|
+
Canceled: 'gh:gestureCanceled',
|
|
4
|
+
} as const;
|
|
5
|
+
|
|
6
|
+
export type GestureLifecycleEventName =
|
|
7
|
+
(typeof GestureLifecycleEvent)[keyof typeof GestureLifecycleEvent];
|
|
8
|
+
|
|
9
|
+
export function dispatchGestureLifecycleEvent(
|
|
10
|
+
view: HTMLElement | null | undefined,
|
|
11
|
+
name: GestureLifecycleEventName
|
|
12
|
+
): void {
|
|
13
|
+
view?.dispatchEvent(new CustomEvent(name));
|
|
14
|
+
}
|
|
@@ -2,6 +2,8 @@ import type { ValueOf } from '../../typeUtils';
|
|
|
2
2
|
import type { Gestures } from '../Gestures';
|
|
3
3
|
import type IGestureHandler from '../handlers/IGestureHandler';
|
|
4
4
|
|
|
5
|
+
type HandlerReadyCallback = (handler: IGestureHandler) => void;
|
|
6
|
+
|
|
5
7
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
6
8
|
export default abstract class NodeManager {
|
|
7
9
|
private static gestures: Record<
|
|
@@ -9,6 +11,9 @@ export default abstract class NodeManager {
|
|
|
9
11
|
InstanceType<ValueOf<typeof Gestures>>
|
|
10
12
|
> = {};
|
|
11
13
|
|
|
14
|
+
private static observers: Map<number, Map<object, HandlerReadyCallback>> =
|
|
15
|
+
new Map();
|
|
16
|
+
|
|
12
17
|
public static getHandler(tag: number): IGestureHandler {
|
|
13
18
|
if (tag in this.gestures) {
|
|
14
19
|
return this.gestures[tag] as IGestureHandler;
|
|
@@ -17,6 +22,10 @@ export default abstract class NodeManager {
|
|
|
17
22
|
throw new Error(`No handler for tag ${tag}`);
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
public static hasHandler(tag: number): boolean {
|
|
26
|
+
return tag in this.gestures;
|
|
27
|
+
}
|
|
28
|
+
|
|
20
29
|
public static createGestureHandler(
|
|
21
30
|
handlerTag: number,
|
|
22
31
|
handler: InstanceType<ValueOf<typeof Gestures>>
|
|
@@ -29,6 +38,15 @@ export default abstract class NodeManager {
|
|
|
29
38
|
|
|
30
39
|
this.gestures[handlerTag] = handler;
|
|
31
40
|
this.gestures[handlerTag].handlerTag = handlerTag;
|
|
41
|
+
|
|
42
|
+
const pending = this.observers.get(handlerTag);
|
|
43
|
+
if (pending) {
|
|
44
|
+
// Snapshot before iterating — callbacks may call back into observeHandler / cancelObservation
|
|
45
|
+
// and mutate the underlying map.
|
|
46
|
+
for (const callback of Array.from(pending.values())) {
|
|
47
|
+
callback(handler as IGestureHandler);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
32
50
|
}
|
|
33
51
|
|
|
34
52
|
public static dropGestureHandler(handlerTag: number): void {
|
|
@@ -50,6 +68,45 @@ export default abstract class NodeManager {
|
|
|
50
68
|
this.gestures[handlerTag].detach();
|
|
51
69
|
}
|
|
52
70
|
|
|
71
|
+
// Invokes `callback` every time a handler with `tag` is created and, if the handler already exists,
|
|
72
|
+
// immediately before returning. The observation persists until explicitly cancelled: the registry
|
|
73
|
+
// holds both `owner` and `callback` strongly, so callers MUST call `cancelObservation` or
|
|
74
|
+
// `cancelAllObservationsForOwner` when the owner is going away (typically in effect cleanup) to
|
|
75
|
+
// avoid leaking. Observing the same tag twice with the same `owner` replaces the previous callback.
|
|
76
|
+
public static observeHandler(
|
|
77
|
+
tag: number,
|
|
78
|
+
owner: object,
|
|
79
|
+
callback: HandlerReadyCallback
|
|
80
|
+
): void {
|
|
81
|
+
let table = this.observers.get(tag);
|
|
82
|
+
if (!table) {
|
|
83
|
+
table = new Map();
|
|
84
|
+
this.observers.set(tag, table);
|
|
85
|
+
}
|
|
86
|
+
table.set(owner, callback);
|
|
87
|
+
|
|
88
|
+
if (tag in this.gestures) {
|
|
89
|
+
callback(this.gestures[tag] as IGestureHandler);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public static cancelObservation(tag: number, owner: object): void {
|
|
94
|
+
const table = this.observers.get(tag);
|
|
95
|
+
if (!table) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
table.delete(owner);
|
|
99
|
+
if (table.size === 0) {
|
|
100
|
+
this.observers.delete(tag);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public static cancelAllObservationsForOwner(owner: object): void {
|
|
105
|
+
for (const tag of this.observers.keys()) {
|
|
106
|
+
this.cancelObservation(tag, owner);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
53
110
|
public static get nodes() {
|
|
54
111
|
return { ...this.gestures };
|
|
55
112
|
}
|
|
@@ -162,6 +162,18 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
|
|
|
162
162
|
const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.LEAVE);
|
|
163
163
|
|
|
164
164
|
this.onPointerMoveOut(adaptedEvent);
|
|
165
|
+
|
|
166
|
+
// When the view is not capturing the pointer (e.g. when `role="button"`),
|
|
167
|
+
// `pointermove` stops firing once the pointer leaves the view's bounds, so
|
|
168
|
+
// the out-of-bounds detection in `pointerMoveCallback` never runs. Fall back
|
|
169
|
+
// to the DOM `pointerleave` event for any tracked, in-bounds pointer.
|
|
170
|
+
if (
|
|
171
|
+
this.trackedPointers.has(event.pointerId) &&
|
|
172
|
+
this.pointersInBounds.indexOf(event.pointerId) >= 0
|
|
173
|
+
) {
|
|
174
|
+
this.onPointerLeave(adaptedEvent);
|
|
175
|
+
this.markAsOutOfBounds(event.pointerId);
|
|
176
|
+
}
|
|
165
177
|
};
|
|
166
178
|
|
|
167
179
|
private lostPointerCaptureCallback = (event: PointerEvent) => {
|
package/lib/module/RNRenderer.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["default","RNRenderer"],"sourceRoot":"../../src","sources":["RNRenderer.ts"],"mappings":";;AAAA;AACA;AACA,SAASA,OAAO,IAAIC,UAAU,QAAQ,mDAAmD","ignoreList":[]}
|