react-native-gesture-handler 3.0.0-beta.3 → 3.0.0-beta.4
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 +22 -4
- 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 +63 -6
- 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/RNGestureHandlerButtonViewManager.kt +47 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +1 -1
- 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 +32 -6
- package/apple/RNGestureHandlerButton.h +8 -0
- package/apple/RNGestureHandlerButton.mm +102 -11
- package/apple/RNGestureHandlerButtonComponentView.mm +85 -4
- package/apple/RNGestureHandlerRegistry.h +0 -1
- package/apple/RNRootViewGestureRecognizer.m +4 -15
- package/lib/module/components/GestureButtons.js +8 -8
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.web.js +51 -9
- package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +1 -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/touchables/GenericTouchable.js +2 -6
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/utils.js +11 -1
- 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/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/v3/components/GestureButtons.js +4 -4
- 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 +67 -29
- package/lib/module/v3/components/Touchable/Touchable.js.map +1 -1
- package/lib/module/v3/detectors/HostGestureDetector.web.js +2 -0
- package/lib/module/v3/detectors/HostGestureDetector.web.js.map +1 -1
- package/lib/module/v3/detectors/VirtualDetector/VirtualDetector.js +2 -0
- package/lib/module/v3/detectors/VirtualDetector/VirtualDetector.js.map +1 -1
- 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/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 +1 -4
- package/lib/module/v3/hooks/useGesture.js.map +1 -1
- package/lib/module/v3/hooks/utils/configUtils.js +7 -3
- package/lib/module/v3/hooks/utils/configUtils.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/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/PointerEventManager.js +9 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/typescript/components/GestureButtons.d.ts.map +1 -1
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +5 -1
- 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/stateDefinitions.d.ts.map +1 -1
- package/lib/typescript/components/touchables/GenericTouchable.d.ts.map +1 -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/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/v3/components/GestureButtons.d.ts +1 -0
- package/lib/typescript/v3/components/GestureButtons.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 +10 -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/VirtualDetector/VirtualDetector.d.ts.map +1 -1
- 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/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/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/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/PointerEventManager.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/GestureButtons.tsx +10 -9
- package/src/components/GestureHandlerButton.web.tsx +94 -26
- package/src/components/Pressable/Pressable.tsx +2 -1
- package/src/components/Pressable/stateDefinitions.ts +3 -0
- package/src/components/touchables/GenericTouchable.tsx +2 -5
- package/src/handlers/gestures/GestureDetector/utils.ts +11 -1
- 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/rotationGesture.ts +6 -0
- package/src/handlers/gestures/tapGesture.ts +6 -0
- package/src/v3/components/GestureButtons.tsx +5 -5
- package/src/v3/components/Pressable.tsx +2 -1
- package/src/v3/components/Touchable/Touchable.tsx +80 -47
- package/src/v3/components/Touchable/TouchableProps.ts +15 -1
- package/src/v3/detectors/HostGestureDetector.web.tsx +4 -1
- package/src/v3/detectors/VirtualDetector/VirtualDetector.tsx +3 -0
- package/src/v3/detectors/useNativeGestureRole.ts +8 -0
- package/src/v3/detectors/useNativeGestureRole.web.ts +42 -0
- 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 +0 -4
- package/src/v3/hooks/utils/configUtils.ts +16 -5
- package/src/v3/hooks/utils/index.ts +0 -1
- package/src/v3/hooks/utils/propsWhiteList.ts +1 -0
- 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/PointerEventManager.ts +12 -0
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt
CHANGED
|
@@ -13,6 +13,7 @@ import com.facebook.react.uimanager.RootView
|
|
|
13
13
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
14
14
|
import com.swmansion.gesturehandler.core.GestureHandler
|
|
15
15
|
import com.swmansion.gesturehandler.core.GestureHandlerOrchestrator
|
|
16
|
+
import com.swmansion.gesturehandler.core.OnJSResponderCancelListener
|
|
16
17
|
|
|
17
18
|
class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup, private val moduleId: Int) {
|
|
18
19
|
private val orchestrator: GestureHandlerOrchestrator?
|
|
@@ -34,11 +35,26 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
|
|
|
34
35
|
ReactConstants.TAG,
|
|
35
36
|
"[GESTURE HANDLER] Initialize gesture handler for root view $rootView",
|
|
36
37
|
)
|
|
38
|
+
val onJSResponderCancelListener = object : OnJSResponderCancelListener {
|
|
39
|
+
override fun onCancelJSResponderRequested(handler: GestureHandler) {
|
|
40
|
+
val time = SystemClock.uptimeMillis()
|
|
41
|
+
val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0)
|
|
42
|
+
if (rootView is RootView) {
|
|
43
|
+
rootView.onChildStartedNativeGesture(rootView, event)
|
|
44
|
+
}
|
|
45
|
+
event.recycle()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
override fun onCancelJSResponderReleased(handler: GestureHandler) {
|
|
49
|
+
shouldIntercept = false
|
|
50
|
+
}
|
|
51
|
+
}
|
|
37
52
|
orchestrator = GestureHandlerOrchestrator(
|
|
38
53
|
wrappedView,
|
|
39
54
|
registry,
|
|
40
55
|
RNViewConfigurationHelper(),
|
|
41
56
|
rootView,
|
|
57
|
+
onJSResponderCancelListener,
|
|
42
58
|
).apply {
|
|
43
59
|
minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH
|
|
44
60
|
}
|
|
@@ -66,6 +82,8 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
|
|
|
66
82
|
}
|
|
67
83
|
|
|
68
84
|
internal inner class RootViewGestureHandler(handlerTag: Int) : GestureHandler() {
|
|
85
|
+
override val isContinuous = true
|
|
86
|
+
|
|
69
87
|
init {
|
|
70
88
|
this.tag = handlerTag
|
|
71
89
|
}
|
|
@@ -95,14 +113,6 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
|
|
|
95
113
|
|
|
96
114
|
override fun onCancel() {
|
|
97
115
|
shouldIntercept = true
|
|
98
|
-
val time = SystemClock.uptimeMillis()
|
|
99
|
-
val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0).apply {
|
|
100
|
-
action = MotionEvent.ACTION_CANCEL
|
|
101
|
-
}
|
|
102
|
-
if (rootView is RootView) {
|
|
103
|
-
rootView.onChildStartedNativeGesture(rootView, event)
|
|
104
|
-
}
|
|
105
|
-
event.recycle()
|
|
106
116
|
}
|
|
107
117
|
}
|
|
108
118
|
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt
CHANGED
|
@@ -45,10 +45,21 @@ class RNGestureHandlerRootView(context: Context?) : ReactViewGroup(context) {
|
|
|
45
45
|
rootHelper?.recordHandlerIfNotPresent(handler)
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
override fun dispatchTouchEvent(event: MotionEvent)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
|
|
49
|
+
// When starting a new event stream, dispatch CANCEL event so the subtree
|
|
50
|
+
// can clean up its internal state that may be stale due to Gesture Handler
|
|
51
|
+
// starting to intercept events mid-stream.
|
|
52
|
+
if (rootViewEnabled && event.actionMasked == MotionEvent.ACTION_DOWN) {
|
|
53
|
+
val cancelEvent = MotionEvent.obtain(event).apply { action = MotionEvent.ACTION_CANCEL }
|
|
54
|
+
super.dispatchTouchEvent(cancelEvent)
|
|
55
|
+
cancelEvent.recycle()
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return if (rootViewEnabled && rootHelper!!.dispatchTouchEvent(event)) {
|
|
59
|
+
true
|
|
60
|
+
} else {
|
|
61
|
+
super.dispatchTouchEvent(event)
|
|
62
|
+
}
|
|
52
63
|
}
|
|
53
64
|
|
|
54
65
|
override fun dispatchGenericMotionEvent(ev: MotionEvent) =
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt
CHANGED
|
@@ -38,12 +38,6 @@ class RNViewConfigurationHelper : ViewConfigurationHelper {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
override fun getChildInDrawingOrderAtIndex(parent: ViewGroup, index: Int): View = if (parent is ReactViewGroup) {
|
|
42
|
-
parent.getChildAt(parent.getZIndexMappedChildIndex(index))
|
|
43
|
-
} else {
|
|
44
|
-
parent.getChildAt(index)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
41
|
override fun isViewClippingChildren(view: ViewGroup) = when {
|
|
48
42
|
view.clipChildren -> true
|
|
49
43
|
view is ReactScrollView -> view.overflow != "visible"
|
|
@@ -170,7 +170,7 @@ static const BOOL defaultFeedbackOnActivation = NO;
|
|
|
170
170
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(RNForceTouchGestureRecognizer *)recognizer
|
|
171
171
|
{
|
|
172
172
|
return [RNGestureHandlerEventExtraData forForce:recognizer.force
|
|
173
|
-
forPosition:[recognizer locationInView:
|
|
173
|
+
forPosition:[recognizer locationInView:self.coordinateView]
|
|
174
174
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
|
|
175
175
|
withNumberOfTouches:recognizer.numberOfTouches
|
|
176
176
|
withPointerType:_pointerType];
|
|
@@ -56,16 +56,6 @@ API_AVAILABLE(ios(13.4))
|
|
|
56
56
|
[_gestureHandler handleGesture:self];
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
- (void)triggerAction
|
|
60
|
-
{
|
|
61
|
-
[_gestureHandler handleGesture:self fromReset:NO fromManualStateChange:NO];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
- (void)cancel
|
|
65
|
-
{
|
|
66
|
-
self.enabled = NO;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
59
|
- (void)reset
|
|
70
60
|
{
|
|
71
61
|
[super reset];
|
|
@@ -177,11 +167,16 @@ API_AVAILABLE(ios(13.4))
|
|
|
177
167
|
|
|
178
168
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
|
|
179
169
|
{
|
|
180
|
-
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:
|
|
170
|
+
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:self.coordinateView]
|
|
181
171
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
|
|
182
172
|
withPointerType:_pointerType];
|
|
183
173
|
}
|
|
184
174
|
|
|
175
|
+
- (BOOL)isContinuous
|
|
176
|
+
{
|
|
177
|
+
return YES;
|
|
178
|
+
}
|
|
179
|
+
|
|
185
180
|
@end
|
|
186
181
|
|
|
187
182
|
#else
|
|
@@ -201,6 +196,11 @@ API_AVAILABLE(ios(13.4))
|
|
|
201
196
|
return self;
|
|
202
197
|
}
|
|
203
198
|
|
|
199
|
+
- (BOOL)isContinuous
|
|
200
|
+
{
|
|
201
|
+
return YES;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
204
|
- (void)bindToView:(RNGHUIView *)view
|
|
205
205
|
{
|
|
206
206
|
_view = view;
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
|
|
288
288
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
|
|
289
289
|
{
|
|
290
|
-
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:
|
|
290
|
+
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:self.coordinateView]
|
|
291
291
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
|
|
292
292
|
withNumberOfTouches:recognizer.numberOfTouches
|
|
293
293
|
withDuration:[(RNBetterLongPressGestureRecognizer *)recognizer getDuration]
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
|
|
299
299
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(NSGestureRecognizer *)recognizer
|
|
300
300
|
{
|
|
301
|
-
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:
|
|
301
|
+
return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:self.coordinateView]
|
|
302
302
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window.contentView]
|
|
303
303
|
withNumberOfTouches:1
|
|
304
304
|
withDuration:[(RNBetterLongPressGestureRecognizer *)recognizer getDuration]
|
|
@@ -113,6 +113,8 @@
|
|
|
113
113
|
@implementation RNNativeViewGestureHandler {
|
|
114
114
|
BOOL _shouldActivateOnStart;
|
|
115
115
|
BOOL _disallowInterruption;
|
|
116
|
+
BOOL _yieldsToContinuousGestures;
|
|
117
|
+
RNGestureHandlerEventExtraData *_lastActiveExtraData;
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
- (instancetype)initWithTag:(NSNumber *)tag
|
|
@@ -128,6 +130,7 @@
|
|
|
128
130
|
[super updateConfig:config];
|
|
129
131
|
_shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]];
|
|
130
132
|
_disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]];
|
|
133
|
+
_yieldsToContinuousGestures = [RCTConvert BOOL:config[@"yieldsToContinuousGestures"]];
|
|
131
134
|
}
|
|
132
135
|
|
|
133
136
|
#if !TARGET_OS_OSX
|
|
@@ -138,22 +141,33 @@
|
|
|
138
141
|
// for properties like `disallowInterruption` to work.
|
|
139
142
|
if ([view isKindOfClass:[UIControl class]]) {
|
|
140
143
|
UIControl *control = (UIControl *)view;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
[
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
144
|
+
|
|
145
|
+
// Pressing UISwitch triggers only touchUp and valueChanged callbacks. In order to align its behavior
|
|
146
|
+
// with other UIControls, we have to dispatch full Gesture Handler events flow in one callback, as
|
|
147
|
+
// touchesDown is not executed.
|
|
148
|
+
if ([view isKindOfClass:[UISwitch class]]) {
|
|
149
|
+
_pointerType = RNGestureHandlerTouch;
|
|
150
|
+
[control addTarget:self action:@selector(handleSwitch:) forControlEvents:UIControlEventValueChanged];
|
|
151
|
+
} else {
|
|
152
|
+
[control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown];
|
|
153
|
+
[control addTarget:self
|
|
154
|
+
action:@selector(handleTouchUpOutside:forEvent:)
|
|
155
|
+
forControlEvents:UIControlEventTouchUpOutside];
|
|
156
|
+
[control addTarget:self
|
|
157
|
+
action:@selector(handleTouchUpInside:forEvent:)
|
|
158
|
+
forControlEvents:UIControlEventTouchUpInside];
|
|
159
|
+
[control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit];
|
|
160
|
+
[control addTarget:self
|
|
161
|
+
action:@selector(handleDragInside:forEvent:)
|
|
162
|
+
forControlEvents:UIControlEventTouchDragInside];
|
|
163
|
+
[control addTarget:self
|
|
164
|
+
action:@selector(handleDragOutside:forEvent:)
|
|
165
|
+
forControlEvents:UIControlEventTouchDragOutside];
|
|
166
|
+
[control addTarget:self
|
|
167
|
+
action:@selector(handleDragEnter:forEvent:)
|
|
168
|
+
forControlEvents:UIControlEventTouchDragEnter];
|
|
169
|
+
[control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel];
|
|
170
|
+
}
|
|
157
171
|
} else {
|
|
158
172
|
[super bindToView:view];
|
|
159
173
|
}
|
|
@@ -180,6 +194,46 @@
|
|
|
180
194
|
[super unbindFromView];
|
|
181
195
|
}
|
|
182
196
|
|
|
197
|
+
- (BOOL)shouldSuppressActiveEvent:(RNGestureHandlerEventExtraData *)extraData
|
|
198
|
+
{
|
|
199
|
+
if (_lastActiveExtraData != nil && [_lastActiveExtraData.data isEqualToDictionary:extraData.data]) {
|
|
200
|
+
return YES;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
_lastActiveExtraData = extraData;
|
|
204
|
+
return NO;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
- (void)sendActiveStateEventIfChangedForView:(UIView *)sender extraData:(RNGestureHandlerEventExtraData *)extraData
|
|
208
|
+
{
|
|
209
|
+
if ([self shouldSuppressActiveEvent:extraData]) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
[self sendEventsInState:RNGestureHandlerStateActive forViewWithTag:sender.reactTag withExtraData:extraData];
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
- (void)handleSwitch:(UIView *)sender
|
|
217
|
+
{
|
|
218
|
+
[self sendEventsInState:RNGestureHandlerStateBegan
|
|
219
|
+
forViewWithTag:sender.reactTag
|
|
220
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
221
|
+
withNumberOfTouches:1
|
|
222
|
+
withPointerType:_pointerType]];
|
|
223
|
+
[self sendEventsInState:RNGestureHandlerStateActive
|
|
224
|
+
forViewWithTag:sender.reactTag
|
|
225
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
226
|
+
withNumberOfTouches:1
|
|
227
|
+
withPointerType:_pointerType]];
|
|
228
|
+
[self sendEventsInState:RNGestureHandlerStateEnd
|
|
229
|
+
forViewWithTag:sender.reactTag
|
|
230
|
+
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
231
|
+
withNumberOfTouches:1
|
|
232
|
+
withPointerType:_pointerType]];
|
|
233
|
+
|
|
234
|
+
[self reset];
|
|
235
|
+
}
|
|
236
|
+
|
|
183
237
|
- (void)handleTouchDown:(UIView *)sender forEvent:(UIEvent *)event
|
|
184
238
|
{
|
|
185
239
|
[self setCurrentPointerTypeForEvent:event];
|
|
@@ -187,11 +241,18 @@
|
|
|
187
241
|
|
|
188
242
|
if (_disallowInterruption) {
|
|
189
243
|
// When `disallowInterruption` is set we cancel all gesture handlers when this UIControl
|
|
190
|
-
// gets DOWN event
|
|
244
|
+
// gets DOWN event. When `yieldsToContinuousGestures` is also set we leave alone:
|
|
245
|
+
// - non-RNGH recognizers (e.g. UIScrollView's pan), so native containers can take over
|
|
246
|
+
// - continuous RNGH recognizers, so other continuous gestures wrapping the touchable can still take over
|
|
191
247
|
for (RNGHUITouch *touch in [event allTouches]) {
|
|
192
|
-
for (UIGestureRecognizer *
|
|
193
|
-
|
|
194
|
-
|
|
248
|
+
for (UIGestureRecognizer *recognizer in [touch gestureRecognizers]) {
|
|
249
|
+
if (_yieldsToContinuousGestures &&
|
|
250
|
+
(recognizer.gestureHandler == nil || [recognizer.gestureHandler isContinuous])) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
recognizer.enabled = NO;
|
|
255
|
+
recognizer.enabled = YES;
|
|
195
256
|
}
|
|
196
257
|
}
|
|
197
258
|
}
|
|
@@ -201,12 +262,6 @@
|
|
|
201
262
|
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
202
263
|
withNumberOfTouches:event.allTouches.count
|
|
203
264
|
withPointerType:_pointerType]];
|
|
204
|
-
|
|
205
|
-
[self sendEventsInState:RNGestureHandlerStateActive
|
|
206
|
-
forViewWithTag:sender.reactTag
|
|
207
|
-
withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
208
|
-
withNumberOfTouches:event.allTouches.count
|
|
209
|
-
withPointerType:_pointerType]];
|
|
210
265
|
}
|
|
211
266
|
|
|
212
267
|
- (void)handleTouchUpOutside:(UIView *)sender forEvent:(UIEvent *)event
|
|
@@ -224,11 +279,12 @@
|
|
|
224
279
|
|
|
225
280
|
- (void)handleTouchUpInside:(UIView *)sender forEvent:(UIEvent *)event
|
|
226
281
|
{
|
|
227
|
-
[
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
282
|
+
RNGestureHandlerEventExtraData *extraData = [RNGestureHandlerEventExtraData forPointerInside:YES
|
|
283
|
+
withNumberOfTouches:event.allTouches.count
|
|
284
|
+
withPointerType:_pointerType];
|
|
285
|
+
|
|
286
|
+
[self sendActiveStateEventIfChangedForView:sender extraData:extraData];
|
|
287
|
+
[self sendEventsInState:RNGestureHandlerStateEnd forViewWithTag:sender.reactTag withExtraData:extraData];
|
|
232
288
|
}
|
|
233
289
|
|
|
234
290
|
- (void)handleDragExit:(UIView *)sender forEvent:(UIEvent *)event
|
|
@@ -238,30 +294,27 @@
|
|
|
238
294
|
UIControl *control = (UIControl *)sender;
|
|
239
295
|
[control cancelTrackingWithEvent:event];
|
|
240
296
|
} else {
|
|
241
|
-
[self
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
withPointerType:_pointerType]];
|
|
297
|
+
[self sendActiveStateEventIfChangedForView:sender
|
|
298
|
+
extraData:[RNGestureHandlerEventExtraData forPointerInside:NO
|
|
299
|
+
withNumberOfTouches:event.allTouches.count
|
|
300
|
+
withPointerType:_pointerType]];
|
|
246
301
|
}
|
|
247
302
|
}
|
|
248
303
|
|
|
249
304
|
- (void)handleDragEnter:(UIView *)sender forEvent:(UIEvent *)event
|
|
250
305
|
{
|
|
251
|
-
[self
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
withPointerType:_pointerType]];
|
|
306
|
+
[self sendActiveStateEventIfChangedForView:sender
|
|
307
|
+
extraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
308
|
+
withNumberOfTouches:event.allTouches.count
|
|
309
|
+
withPointerType:_pointerType]];
|
|
256
310
|
}
|
|
257
311
|
|
|
258
312
|
- (void)handleDragInside:(UIView *)sender forEvent:(UIEvent *)event
|
|
259
313
|
{
|
|
260
|
-
[self
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
withPointerType:_pointerType]];
|
|
314
|
+
[self sendActiveStateEventIfChangedForView:sender
|
|
315
|
+
extraData:[RNGestureHandlerEventExtraData forPointerInside:YES
|
|
316
|
+
withNumberOfTouches:event.allTouches.count
|
|
317
|
+
withPointerType:_pointerType]];
|
|
265
318
|
}
|
|
266
319
|
|
|
267
320
|
- (void)handleDragOutside:(UIView *)sender forEvent:(UIEvent *)event
|
|
@@ -270,11 +323,10 @@
|
|
|
270
323
|
return;
|
|
271
324
|
}
|
|
272
325
|
|
|
273
|
-
[self
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
withPointerType:_pointerType]];
|
|
326
|
+
[self sendActiveStateEventIfChangedForView:sender
|
|
327
|
+
extraData:[RNGestureHandlerEventExtraData forPointerInside:NO
|
|
328
|
+
withNumberOfTouches:event.allTouches.count
|
|
329
|
+
withPointerType:_pointerType]];
|
|
278
330
|
}
|
|
279
331
|
|
|
280
332
|
- (void)handleTouchCancel:(UIView *)sender forEvent:(UIEvent *)event
|
|
@@ -291,7 +343,13 @@
|
|
|
291
343
|
return YES;
|
|
292
344
|
}
|
|
293
345
|
|
|
294
|
-
|
|
346
|
+
- (void)reset
|
|
347
|
+
{
|
|
348
|
+
[super reset];
|
|
349
|
+
_lastActiveExtraData = nil;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
#endif
|
|
295
353
|
|
|
296
354
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(RNDummyGestureRecognizer *)recognizer
|
|
297
355
|
{
|
|
@@ -300,6 +358,9 @@
|
|
|
300
358
|
withPointerType:RNGestureHandlerMouse];
|
|
301
359
|
}
|
|
302
360
|
|
|
303
|
-
|
|
361
|
+
- (BOOL)isContinuous
|
|
362
|
+
{
|
|
363
|
+
return YES;
|
|
364
|
+
}
|
|
304
365
|
|
|
305
366
|
@end
|
|
@@ -269,7 +269,6 @@
|
|
|
269
269
|
[self triggerActionFromReset];
|
|
270
270
|
[_gestureHandler.pointerTracker reset];
|
|
271
271
|
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(activateAfterLongPress) object:nil];
|
|
272
|
-
self.enabled = YES;
|
|
273
272
|
[super reset];
|
|
274
273
|
[_gestureHandler reset];
|
|
275
274
|
|
|
@@ -363,6 +362,11 @@
|
|
|
363
362
|
return self;
|
|
364
363
|
}
|
|
365
364
|
|
|
365
|
+
- (BOOL)isContinuous
|
|
366
|
+
{
|
|
367
|
+
return YES;
|
|
368
|
+
}
|
|
369
|
+
|
|
366
370
|
- (void)resetConfig
|
|
367
371
|
{
|
|
368
372
|
[super resetConfig];
|
|
@@ -452,7 +456,7 @@
|
|
|
452
456
|
#if TARGET_OS_OSX
|
|
453
457
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(NSPanGestureRecognizer *)recognizer
|
|
454
458
|
{
|
|
455
|
-
return [RNGestureHandlerEventExtraData forPan:[recognizer locationInView:
|
|
459
|
+
return [RNGestureHandlerEventExtraData forPan:[recognizer locationInView:self.coordinateView]
|
|
456
460
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window.contentView]
|
|
457
461
|
withTranslation:[recognizer translationInView:recognizer.view.window.contentView]
|
|
458
462
|
withVelocity:[recognizer velocityInView:recognizer.view.window.contentView]
|
|
@@ -466,7 +470,7 @@
|
|
|
466
470
|
RNBetterPanGestureRecognizer *panRecognizer = (RNBetterPanGestureRecognizer *)recognizer;
|
|
467
471
|
|
|
468
472
|
return [RNGestureHandlerEventExtraData
|
|
469
|
-
forPan:[recognizer locationInView:
|
|
473
|
+
forPan:[recognizer locationInView:self.coordinateView]
|
|
470
474
|
withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
|
|
471
475
|
withTranslation:[recognizer translationInView:recognizer.view.window]
|
|
472
476
|
withVelocity:[recognizer velocityInView:recognizer.view.window]
|
|
@@ -161,13 +161,18 @@
|
|
|
161
161
|
return self;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
+
- (BOOL)isContinuous
|
|
165
|
+
{
|
|
166
|
+
return YES;
|
|
167
|
+
}
|
|
168
|
+
|
|
164
169
|
#if !TARGET_OS_TV
|
|
165
170
|
|
|
166
171
|
#if TARGET_OS_OSX
|
|
167
172
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(NSMagnificationGestureRecognizer *)recognizer
|
|
168
173
|
{
|
|
169
174
|
return [RNGestureHandlerEventExtraData forPinch:recognizer.magnification
|
|
170
|
-
withFocalPoint:[recognizer locationInView:
|
|
175
|
+
withFocalPoint:[recognizer locationInView:self.coordinateView]
|
|
171
176
|
withVelocity:((RNBetterPinchRecognizer *)recognizer).velocity
|
|
172
177
|
withNumberOfTouches:2
|
|
173
178
|
withPointerType:RNGestureHandlerMouse];
|
|
@@ -177,12 +182,13 @@
|
|
|
177
182
|
{
|
|
178
183
|
CGPoint focalPoint;
|
|
179
184
|
NSUInteger numberOfTouches = recognizer.numberOfTouches;
|
|
185
|
+
RNGHUIView *coordinateView = self.coordinateView;
|
|
180
186
|
|
|
181
187
|
if (numberOfTouches > 0) {
|
|
182
188
|
CGPoint accumulatedPoint = CGPointZero;
|
|
183
189
|
|
|
184
190
|
for (int i = 0; i < numberOfTouches; i++) {
|
|
185
|
-
CGPoint location = [recognizer locationOfTouch:i inView:
|
|
191
|
+
CGPoint location = [recognizer locationOfTouch:i inView:coordinateView];
|
|
186
192
|
accumulatedPoint.x += location.x;
|
|
187
193
|
accumulatedPoint.y += location.y;
|
|
188
194
|
}
|
|
@@ -190,7 +196,7 @@
|
|
|
190
196
|
focalPoint = CGPointMake(accumulatedPoint.x / numberOfTouches, accumulatedPoint.y / numberOfTouches);
|
|
191
197
|
} else {
|
|
192
198
|
// Trackpad pinch gestures may report 0 touches - use the recognizer's location instead
|
|
193
|
-
focalPoint = [recognizer locationInView:
|
|
199
|
+
focalPoint = [recognizer locationInView:coordinateView];
|
|
194
200
|
}
|
|
195
201
|
|
|
196
202
|
return [RNGestureHandlerEventExtraData forPinch:recognizer.scale
|
|
@@ -155,13 +155,18 @@
|
|
|
155
155
|
return self;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
- (BOOL)isContinuous
|
|
159
|
+
{
|
|
160
|
+
return YES;
|
|
161
|
+
}
|
|
162
|
+
|
|
158
163
|
#if !TARGET_OS_TV
|
|
159
164
|
|
|
160
165
|
#if TARGET_OS_OSX
|
|
161
166
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(NSRotationGestureRecognizer *)recognizer
|
|
162
167
|
{
|
|
163
168
|
return [RNGestureHandlerEventExtraData forRotation:-recognizer.rotation
|
|
164
|
-
withAnchorPoint:[recognizer locationInView:
|
|
169
|
+
withAnchorPoint:[recognizer locationInView:self.coordinateView]
|
|
165
170
|
withVelocity:((RNBetterRotationRecognizer *)recognizer).velocity
|
|
166
171
|
withNumberOfTouches:2
|
|
167
172
|
withPointerType:RNGestureHandlerMouse];
|
|
@@ -170,7 +175,7 @@
|
|
|
170
175
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer
|
|
171
176
|
{
|
|
172
177
|
return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation
|
|
173
|
-
withAnchorPoint:[recognizer locationInView:
|
|
178
|
+
withAnchorPoint:[recognizer locationInView:self.coordinateView]
|
|
174
179
|
withVelocity:recognizer.velocity
|
|
175
180
|
withNumberOfTouches:recognizer.numberOfTouches
|
|
176
181
|
withPointerType:_pointerType];
|
|
@@ -258,7 +258,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
|
258
258
|
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cancel) object:nil];
|
|
259
259
|
_tapsSoFar = 0;
|
|
260
260
|
_maxNumberOfTouches = 0;
|
|
261
|
-
self.enabled =
|
|
261
|
+
self.enabled = _gestureHandler.enabled;
|
|
262
262
|
[super reset];
|
|
263
263
|
[_gestureHandler reset];
|
|
264
264
|
}
|
package/apple/RNGestureHandler.h
CHANGED
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
@property (nonatomic) BOOL shouldCancelWhenOutside;
|
|
82
82
|
@property (nonatomic) BOOL needsPointerData;
|
|
83
83
|
@property (nonatomic) BOOL manualActivation;
|
|
84
|
+
@property (nonatomic) BOOL cancelsJSResponder;
|
|
84
85
|
@property (nonatomic) BOOL dispatchesAnimatedEvents;
|
|
85
86
|
@property (nonatomic) BOOL dispatchesReanimatedEvents;
|
|
86
87
|
@property (nonatomic, weak, nullable) RNGHUIView *hostDetectorView;
|
|
@@ -88,6 +89,17 @@
|
|
|
88
89
|
@property (nonatomic, copy, nullable) NSNumber *viewTag;
|
|
89
90
|
@property (nonatomic, readonly) RNGestureHandlerState lastState;
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
The view whose coordinate space should be used when reporting event positions to JS.
|
|
94
|
+
Handlers attached via the V3 NativeDetector are bound to the `RNGestureHandlerDetector` wrapper,
|
|
95
|
+
which never carries user-applied transforms — those live on its child. When the detector has
|
|
96
|
+
exactly one subview we descend into it so reported coordinates match the visible (transformed)
|
|
97
|
+
view, the same coordinate space V2 and the V3 VirtualGestureDetector report in. With multiple
|
|
98
|
+
subviews there is no JS-side way to disambiguate which child caught the pointer, so we keep
|
|
99
|
+
the detector itself as the reference frame.
|
|
100
|
+
*/
|
|
101
|
+
@property (nonatomic, readonly, nullable) RNGHUIView *coordinateView;
|
|
102
|
+
|
|
91
103
|
- (BOOL)isViewParagraphComponent:(nullable RNGHUIView *)view;
|
|
92
104
|
- (nonnull RNGHUIView *)chooseViewForInteraction:(nonnull UIGestureRecognizer *)recognizer;
|
|
93
105
|
- (void)bindToView:(nonnull RNGHUIView *)view;
|
|
@@ -96,6 +108,7 @@
|
|
|
96
108
|
- (void)setConfig:(nullable NSDictionary *)config NS_REQUIRES_SUPER;
|
|
97
109
|
- (void)updateConfig:(nullable NSDictionary *)config NS_REQUIRES_SUPER;
|
|
98
110
|
- (void)updateRelations:(nonnull NSDictionary *)relations;
|
|
111
|
+
- (BOOL)shouldSuppressActiveEvent:(nonnull RNGestureHandlerEventExtraData *)extraData;
|
|
99
112
|
- (void)handleGesture:(nonnull id)recognizer;
|
|
100
113
|
- (void)handleGesture:(nonnull id)recognizer fromReset:(BOOL)fromReset;
|
|
101
114
|
- (void)handleGesture:(nonnull id)recognizer
|
|
@@ -125,6 +138,7 @@
|
|
|
125
138
|
- (nonnull RNGHUIView *)findViewForEvents;
|
|
126
139
|
- (BOOL)wantsToAttachDirectlyToView;
|
|
127
140
|
- (BOOL)usesNativeOrVirtualDetector;
|
|
141
|
+
- (BOOL)isContinuous;
|
|
128
142
|
|
|
129
143
|
#if !TARGET_OS_OSX
|
|
130
144
|
- (BOOL)isUIScrollViewPanGestureRecognizer:(nonnull UIGestureRecognizer *)gestureRecognizer;
|
|
@@ -140,3 +154,7 @@
|
|
|
140
154
|
#endif
|
|
141
155
|
|
|
142
156
|
@end
|
|
157
|
+
|
|
158
|
+
@interface UIGestureRecognizer (GestureHandler)
|
|
159
|
+
@property (nonatomic, readonly, nullable) RNGestureHandler *gestureHandler;
|
|
160
|
+
@end
|