react-native-gesture-handler 2.16.0-rc.0 → 2.16.1
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/README.md +1 -0
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +2 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +9 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +3 -0
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/core/DiagonalDirections.kt +8 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt +61 -24
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +17 -22
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +30 -11
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt +3 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/Vector.kt +66 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +119 -19
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +1 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +1 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +4 -7
- package/apple/Handlers/RNLongPressHandler.m +5 -13
- package/apple/Handlers/RNPinchHandler.m +12 -1
- package/apple/RNGestureHandler.m +3 -1
- package/lib/commonjs/Directions.js +19 -6
- package/lib/commonjs/Directions.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +97 -4
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.native.js +16 -0
- package/lib/commonjs/RNGestureHandlerModule.native.js.map +1 -0
- package/lib/commonjs/RNRenderer.js +5 -10
- package/lib/commonjs/RNRenderer.js.map +1 -1
- package/lib/commonjs/RNRenderer.native.js +16 -0
- package/lib/commonjs/RNRenderer.native.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +19 -82
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.native.js +115 -0
- package/lib/commonjs/components/GestureComponents.native.js.map +1 -0
- package/lib/commonjs/components/GestureHandlerButton.js +13 -3
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.native.js +14 -0
- package/lib/commonjs/components/GestureHandlerButton.native.js.map +1 -0
- package/lib/commonjs/components/GestureHandlerRootView.js +0 -6
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/{GestureHandlerRootView.web.js → GestureHandlerRootView.native.js} +7 -1
- package/lib/commonjs/components/GestureHandlerRootView.native.js.map +1 -0
- package/lib/commonjs/components/Swipeable.js +3 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +1 -0
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +1 -12
- package/lib/commonjs/getReactNativeVersion.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.native.js +22 -0
- package/lib/commonjs/getReactNativeVersion.native.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.js +5 -34
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.native.js +44 -0
- package/lib/commonjs/getShadowNodeFromRef.native.js.map +1 -0
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +5 -7
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.native.js +14 -0
- package/lib/commonjs/handlers/PressabilityDebugView.native.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +11 -5
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.js +11 -0
- package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -0
- package/lib/commonjs/handlers/customDirectEventTypes.native.js +14 -0
- package/lib/commonjs/handlers/customDirectEventTypes.native.js.map +1 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js +13 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/flingGesture.js +13 -0
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +17 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +135 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js +66 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +12 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/nativeGesture.js +10 -0
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +76 -0
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +42 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/index.js +8 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mocks.js +2 -0
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/utils.js +5 -1
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/Gestures.js +66 -0
- package/lib/commonjs/web/Gestures.js.map +1 -0
- package/lib/commonjs/web/constants.js +3 -8
- package/lib/commonjs/web/constants.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +36 -12
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +11 -9
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/IGestureHandler.js +2 -0
- package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +5 -6
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +3 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +1 -13
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +114 -115
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +10 -5
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +12 -3
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +55 -27
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +26 -5
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +58 -0
- package/lib/commonjs/web/tools/Vector.js.map +1 -0
- package/lib/commonjs/web/utils.js +9 -1
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/Directions.js +16 -4
- package/lib/module/Directions.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +84 -4
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.native.js +5 -0
- package/lib/module/RNGestureHandlerModule.native.js.map +1 -0
- package/lib/module/RNRenderer.js +3 -3
- package/lib/module/RNRenderer.js.map +1 -1
- package/lib/module/RNRenderer.native.js +4 -0
- package/lib/module/RNRenderer.native.js.map +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureComponents.js +18 -80
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.native.js +90 -0
- package/lib/module/components/GestureComponents.native.js.map +1 -0
- package/lib/module/components/GestureHandlerButton.js +8 -2
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.native.js +3 -0
- package/lib/module/components/GestureHandlerButton.native.js.map +1 -0
- package/lib/module/components/GestureHandlerRootView.js +0 -5
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/{GestureHandlerRootView.web.js → GestureHandlerRootView.native.js} +6 -1
- package/lib/module/components/GestureHandlerRootView.native.js.map +1 -0
- package/lib/module/components/Swipeable.js +3 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +1 -0
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/getReactNativeVersion.js +1 -7
- package/lib/module/getReactNativeVersion.js.map +1 -1
- package/lib/module/getReactNativeVersion.native.js +10 -0
- package/lib/module/getReactNativeVersion.native.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.js +4 -33
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.native.js +37 -0
- package/lib/module/getShadowNodeFromRef.native.js.map +1 -0
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js +4 -2
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.native.js +3 -0
- package/lib/module/handlers/PressabilityDebugView.native.js.map +1 -0
- package/lib/module/handlers/createHandler.js +11 -6
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.js +5 -0
- package/lib/module/handlers/customDirectEventTypes.js.map +1 -0
- package/lib/module/handlers/customDirectEventTypes.native.js +3 -0
- package/lib/module/handlers/customDirectEventTypes.native.js.map +1 -0
- package/lib/module/handlers/gestureHandlerCommon.js +11 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +25 -0
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/flingGesture.js +13 -0
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js +17 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +135 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +67 -0
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +12 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/nativeGesture.js +10 -0
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +76 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +42 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/mocks.js +2 -0
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/utils.js +5 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/Gestures.js +39 -0
- package/lib/module/web/Gestures.js.map +1 -0
- package/lib/module/web/constants.js +1 -6
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +34 -12
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +10 -9
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/IGestureHandler.js +2 -0
- package/lib/module/web/handlers/IGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +5 -6
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +3 -1
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +0 -11
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +114 -115
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +9 -4
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +9 -3
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +53 -26
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +26 -5
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/tools/Vector.js +47 -0
- package/lib/module/web/tools/Vector.js.map +1 -0
- package/lib/module/web/utils.js +2 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/typescript/Directions.d.ts +7 -0
- package/lib/typescript/RNGestureHandlerModule.d.ts +15 -2
- package/lib/typescript/RNGestureHandlerModule.native.d.ts +2 -0
- package/lib/typescript/RNRenderer.d.ts +3 -1
- package/lib/typescript/RNRenderer.native.d.ts +1 -0
- package/lib/typescript/components/DrawerLayout.d.ts +1 -2
- package/lib/typescript/components/GestureComponents.d.ts +7 -21
- package/lib/typescript/components/GestureComponents.native.d.ts +22 -0
- package/lib/typescript/components/GestureHandlerButton.d.ts +3 -3
- package/lib/typescript/components/GestureHandlerButton.native.d.ts +4 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -1
- package/lib/typescript/getReactNativeVersion.d.ts +1 -4
- package/lib/typescript/getReactNativeVersion.native.d.ts +4 -0
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -1
- package/lib/typescript/getShadowNodeFromRef.native.d.ts +1 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +4 -4
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -1
- package/lib/typescript/handlers/PressabilityDebugView.native.d.ts +1 -0
- package/lib/typescript/handlers/customDirectEventTypes.d.ts +2 -0
- package/lib/typescript/handlers/customDirectEventTypes.native.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +11 -2
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +38 -1
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +11 -0
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +14 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts +114 -2
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +57 -0
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +10 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +8 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +67 -4
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +35 -0
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/mocks.d.ts +1 -0
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +4 -1
- package/lib/typescript/web/Gestures.d.ts +36 -0
- package/lib/typescript/web/constants.d.ts +1 -6
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +3 -3
- package/lib/typescript/web/handlers/GestureHandler.d.ts +13 -11
- package/lib/typescript/web/handlers/IGestureHandler.d.ts +38 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web/interfaces.d.ts +8 -10
- package/lib/typescript/web/tools/EventManager.d.ts +15 -12
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +3 -4
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +7 -5
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +3 -3
- package/lib/typescript/web/tools/InteractionManager.d.ts +6 -6
- package/lib/typescript/web/tools/NodeManager.d.ts +4 -3
- package/lib/typescript/web/tools/PointerEventManager.d.ts +11 -2
- package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -1
- package/lib/typescript/web/tools/Vector.d.ts +15 -0
- package/lib/typescript/web/utils.d.ts +4 -4
- package/lib/typescript/web_hammer/NodeManager.d.ts +1 -1
- package/package.json +4 -2
- package/src/Directions.ts +21 -4
- package/src/RNGestureHandlerModule.native.ts +5 -0
- package/src/RNGestureHandlerModule.ts +104 -4
- package/src/RNRenderer.native.ts +3 -0
- package/src/RNRenderer.ts +3 -3
- package/src/components/DrawerLayout.tsx +1 -1
- package/src/components/GestureComponents.native.tsx +148 -0
- package/src/components/GestureComponents.tsx +24 -131
- package/src/components/GestureHandlerButton.native.tsx +5 -0
- package/src/components/GestureHandlerButton.tsx +5 -4
- package/src/components/{GestureHandlerRootView.web.tsx → GestureHandlerRootView.native.tsx} +6 -0
- package/src/components/GestureHandlerRootView.tsx +0 -6
- package/src/components/Swipeable.tsx +2 -0
- package/src/components/touchables/GenericTouchable.tsx +3 -0
- package/src/getReactNativeVersion.native.ts +11 -0
- package/src/getReactNativeVersion.ts +1 -9
- package/src/getShadowNodeFromRef.native.ts +44 -0
- package/src/getShadowNodeFromRef.ts +4 -41
- package/src/handlers/PanGestureHandler.ts +8 -4
- package/src/handlers/PressabilityDebugView.native.tsx +2 -0
- package/src/handlers/PressabilityDebugView.tsx +4 -2
- package/src/handlers/createHandler.tsx +24 -14
- package/src/handlers/customDirectEventTypes.native.ts +2 -0
- package/src/handlers/customDirectEventTypes.ts +5 -0
- package/src/handlers/gestureHandlerCommon.ts +28 -1
- package/src/handlers/gestures/GestureDetector.tsx +62 -4
- package/src/handlers/gestures/flingGesture.ts +11 -0
- package/src/handlers/gestures/forceTouchGesture.ts +14 -0
- package/src/handlers/gestures/gesture.ts +114 -1
- package/src/handlers/gestures/gestureObjects.ts +57 -0
- package/src/handlers/gestures/gestureStateManager.web.ts +1 -1
- package/src/handlers/gestures/hoverGesture.ts +1 -1
- package/src/handlers/gestures/longPressGesture.ts +10 -0
- package/src/handlers/gestures/nativeGesture.ts +8 -0
- package/src/handlers/gestures/panGesture.ts +75 -4
- package/src/handlers/gestures/tapGesture.ts +35 -0
- package/src/index.ts +1 -1
- package/src/mocks.ts +2 -0
- package/src/specs/RNGestureHandlerButtonNativeComponent.ts +4 -0
- package/src/utils.ts +9 -2
- package/src/web/Gestures.ts +41 -0
- package/src/web/constants.ts +1 -7
- package/src/web/handlers/FlingGestureHandler.ts +54 -24
- package/src/web/handlers/GestureHandler.ts +23 -19
- package/src/web/handlers/IGestureHandler.ts +50 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +5 -6
- package/src/web/handlers/PanGestureHandler.ts +4 -0
- package/src/web/interfaces.ts +14 -10
- package/src/web/tools/EventManager.ts +16 -14
- package/src/web/tools/GestureHandlerDelegate.ts +3 -4
- package/src/web/tools/GestureHandlerOrchestrator.ts +160 -145
- package/src/web/tools/GestureHandlerWebDelegate.ts +14 -9
- package/src/web/tools/InteractionManager.ts +18 -12
- package/src/web/tools/NodeManager.ts +4 -3
- package/src/web/tools/PointerEventManager.ts +181 -166
- package/src/web/tools/TouchEventManager.ts +126 -114
- package/src/web/tools/Vector.ts +60 -0
- package/src/web/utils.ts +7 -4
- package/src/web_hammer/NodeManager.ts +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +0 -163
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +0 -1
- package/lib/commonjs/RNRenderer.web.js +0 -11
- package/lib/commonjs/RNRenderer.web.js.map +0 -1
- package/lib/commonjs/components/GestureComponents.web.js +0 -52
- package/lib/commonjs/components/GestureComponents.web.js.map +0 -1
- package/lib/commonjs/components/GestureHandlerButton.web.js +0 -24
- package/lib/commonjs/components/GestureHandlerButton.web.js.map +0 -1
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +0 -1
- package/lib/commonjs/getReactNativeVersion.web.js +0 -11
- package/lib/commonjs/getReactNativeVersion.web.js.map +0 -1
- package/lib/commonjs/getShadowNodeFromRef.web.js +0 -15
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +0 -1
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +0 -12
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +0 -1
- package/lib/module/RNGestureHandlerModule.web.js +0 -122
- package/lib/module/RNGestureHandlerModule.web.js.map +0 -1
- package/lib/module/RNRenderer.web.js +0 -4
- package/lib/module/RNRenderer.web.js.map +0 -1
- package/lib/module/components/GestureComponents.web.js +0 -28
- package/lib/module/components/GestureComponents.web.js.map +0 -1
- package/lib/module/components/GestureHandlerButton.web.js +0 -9
- package/lib/module/components/GestureHandlerButton.web.js.map +0 -1
- package/lib/module/components/GestureHandlerRootView.web.js.map +0 -1
- package/lib/module/getReactNativeVersion.web.js +0 -4
- package/lib/module/getReactNativeVersion.web.js.map +0 -1
- package/lib/module/getShadowNodeFromRef.web.js +0 -8
- package/lib/module/getShadowNodeFromRef.web.js.map +0 -1
- package/lib/module/handlers/PressabilityDebugView.web.js +0 -5
- package/lib/module/handlers/PressabilityDebugView.web.js.map +0 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +0 -50
- package/lib/typescript/RNRenderer.web.d.ts +0 -3
- package/lib/typescript/components/GestureComponents.web.d.ts +0 -8
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +0 -4
- package/lib/typescript/getReactNativeVersion.web.d.ts +0 -1
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +0 -1
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +0 -1
- package/src/RNGestureHandlerModule.web.ts +0 -146
- package/src/RNRenderer.web.ts +0 -3
- package/src/components/GestureComponents.web.tsx +0 -41
- package/src/components/GestureHandlerButton.web.tsx +0 -6
- package/src/getReactNativeVersion.web.ts +0 -3
- package/src/getShadowNodeFromRef.web.ts +0 -7
- package/src/handlers/PressabilityDebugView.web.tsx +0 -4
- /package/lib/typescript/components/{GestureHandlerRootView.web.d.ts → GestureHandlerRootView.native.d.ts} +0 -0
|
@@ -28,15 +28,10 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
28
28
|
const view = this.delegate.getView() as HTMLElement;
|
|
29
29
|
|
|
30
30
|
view.style['touchAction'] = 'auto';
|
|
31
|
-
|
|
32
31
|
//@ts-ignore Turns on defualt touch behavior on Safari
|
|
33
32
|
view.style['WebkitTouchCallout'] = 'auto';
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
this.buttonRole = true;
|
|
37
|
-
} else {
|
|
38
|
-
this.buttonRole = false;
|
|
39
|
-
}
|
|
34
|
+
this.buttonRole = view.getAttribute('role') === 'button';
|
|
40
35
|
}
|
|
41
36
|
|
|
42
37
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
@@ -164,4 +159,8 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
|
164
159
|
public disallowsInterruption(): boolean {
|
|
165
160
|
return this.disallowInterruption;
|
|
166
161
|
}
|
|
162
|
+
|
|
163
|
+
public isButton(): boolean {
|
|
164
|
+
return this.buttonRole;
|
|
165
|
+
}
|
|
167
166
|
}
|
|
@@ -20,6 +20,7 @@ export default class PanGestureHandler extends GestureHandler {
|
|
|
20
20
|
'failOffsetYEnd',
|
|
21
21
|
'minVelocityX',
|
|
22
22
|
'minVelocityY',
|
|
23
|
+
'minVelocity',
|
|
23
24
|
];
|
|
24
25
|
|
|
25
26
|
public velocityX = 0;
|
|
@@ -221,6 +222,9 @@ export default class PanGestureHandler extends GestureHandler {
|
|
|
221
222
|
this.lastX = this.tracker.getLastAvgX();
|
|
222
223
|
this.lastY = this.tracker.getLastAvgY();
|
|
223
224
|
|
|
225
|
+
this.startX = this.lastX;
|
|
226
|
+
this.startY = this.lastY;
|
|
227
|
+
|
|
224
228
|
this.tryBegin(event);
|
|
225
229
|
this.checkBegan();
|
|
226
230
|
}
|
package/src/web/interfaces.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
UserSelect,
|
|
3
|
+
ActiveCursor,
|
|
4
|
+
MouseButton,
|
|
5
|
+
TouchAction,
|
|
6
|
+
} from '../handlers/gestureHandlerCommon';
|
|
2
7
|
import { Directions } from '../Directions';
|
|
3
8
|
import { State } from '../State';
|
|
4
9
|
import { PointerType } from '../PointerType';
|
|
@@ -23,6 +28,7 @@ type ConfigArgs =
|
|
|
23
28
|
| boolean
|
|
24
29
|
| HitSlop
|
|
25
30
|
| UserSelect
|
|
31
|
+
| TouchAction
|
|
26
32
|
| ActiveCursor
|
|
27
33
|
| Directions
|
|
28
34
|
| Handler[]
|
|
@@ -40,6 +46,8 @@ export interface Config extends Record<string, ConfigArgs> {
|
|
|
40
46
|
activeCursor?: ActiveCursor;
|
|
41
47
|
mouseButton?: MouseButton;
|
|
42
48
|
enableContextMenu?: boolean;
|
|
49
|
+
touchAction?: TouchAction;
|
|
50
|
+
manualActivation?: boolean;
|
|
43
51
|
|
|
44
52
|
activateAfterLongPress?: number;
|
|
45
53
|
failOffsetXStart?: number;
|
|
@@ -83,6 +91,11 @@ interface NativeEvent extends Record<string, NativeEventArgs> {
|
|
|
83
91
|
pointerType: PointerType;
|
|
84
92
|
}
|
|
85
93
|
|
|
94
|
+
export interface Point {
|
|
95
|
+
x: number;
|
|
96
|
+
y: number;
|
|
97
|
+
}
|
|
98
|
+
|
|
86
99
|
export interface PointerData {
|
|
87
100
|
id: number;
|
|
88
101
|
x: number;
|
|
@@ -133,15 +146,6 @@ export interface AdaptedEvent {
|
|
|
133
146
|
touchEventType?: TouchEventType;
|
|
134
147
|
}
|
|
135
148
|
|
|
136
|
-
export enum MouseButton {
|
|
137
|
-
LEFT = 1,
|
|
138
|
-
RIGHT = 2,
|
|
139
|
-
MIDDLE = 4,
|
|
140
|
-
BUTTON_4 = 8,
|
|
141
|
-
BUTTON_5 = 16,
|
|
142
|
-
ALL = 31,
|
|
143
|
-
}
|
|
144
|
-
|
|
145
149
|
export enum EventTypes {
|
|
146
150
|
DOWN,
|
|
147
151
|
ADDITIONAL_POINTER_DOWN,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
2
2
|
import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
|
|
3
3
|
|
|
4
|
+
type PointerEventCallback = (event: AdaptedEvent) => void;
|
|
5
|
+
|
|
4
6
|
export default abstract class EventManager<T> {
|
|
5
7
|
protected readonly view: T;
|
|
6
8
|
protected pointersInBounds: number[] = [];
|
|
@@ -11,7 +13,9 @@ export default abstract class EventManager<T> {
|
|
|
11
13
|
this.activePointersCounter = 0;
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
public abstract
|
|
16
|
+
public abstract registerListeners(): void;
|
|
17
|
+
public abstract unregisterListeners(): void;
|
|
18
|
+
|
|
15
19
|
protected abstract mapEvent(
|
|
16
20
|
event: Event,
|
|
17
21
|
eventType: EventTypes,
|
|
@@ -36,39 +40,37 @@ export default abstract class EventManager<T> {
|
|
|
36
40
|
protected onPointerMoveOver(_event: AdaptedEvent): void {}
|
|
37
41
|
protected onPointerMoveOut(_event: AdaptedEvent): void {}
|
|
38
42
|
|
|
39
|
-
public setOnPointerDown(callback:
|
|
43
|
+
public setOnPointerDown(callback: PointerEventCallback): void {
|
|
40
44
|
this.onPointerDown = callback;
|
|
41
45
|
}
|
|
42
|
-
public setOnPointerAdd(callback:
|
|
46
|
+
public setOnPointerAdd(callback: PointerEventCallback): void {
|
|
43
47
|
this.onPointerAdd = callback;
|
|
44
48
|
}
|
|
45
|
-
public setOnPointerUp(callback:
|
|
49
|
+
public setOnPointerUp(callback: PointerEventCallback): void {
|
|
46
50
|
this.onPointerUp = callback;
|
|
47
51
|
}
|
|
48
|
-
public setOnPointerRemove(callback:
|
|
52
|
+
public setOnPointerRemove(callback: PointerEventCallback): void {
|
|
49
53
|
this.onPointerRemove = callback;
|
|
50
54
|
}
|
|
51
|
-
public setOnPointerMove(callback:
|
|
55
|
+
public setOnPointerMove(callback: PointerEventCallback): void {
|
|
52
56
|
this.onPointerMove = callback;
|
|
53
57
|
}
|
|
54
|
-
public setOnPointerLeave(callback:
|
|
58
|
+
public setOnPointerLeave(callback: PointerEventCallback): void {
|
|
55
59
|
this.onPointerLeave = callback;
|
|
56
60
|
}
|
|
57
|
-
public setOnPointerEnter(callback:
|
|
61
|
+
public setOnPointerEnter(callback: PointerEventCallback): void {
|
|
58
62
|
this.onPointerEnter = callback;
|
|
59
63
|
}
|
|
60
|
-
public setOnPointerCancel(callback:
|
|
64
|
+
public setOnPointerCancel(callback: PointerEventCallback): void {
|
|
61
65
|
this.onPointerCancel = callback;
|
|
62
66
|
}
|
|
63
|
-
public setOnPointerOutOfBounds(
|
|
64
|
-
callback: (event: AdaptedEvent) => void
|
|
65
|
-
): void {
|
|
67
|
+
public setOnPointerOutOfBounds(callback: PointerEventCallback): void {
|
|
66
68
|
this.onPointerOutOfBounds = callback;
|
|
67
69
|
}
|
|
68
|
-
public setOnPointerMoveOver(callback:
|
|
70
|
+
public setOnPointerMoveOver(callback: PointerEventCallback): void {
|
|
69
71
|
this.onPointerMoveOver = callback;
|
|
70
72
|
}
|
|
71
|
-
public setOnPointerMoveOut(callback:
|
|
73
|
+
public setOnPointerMoveOut(callback: PointerEventCallback): void {
|
|
72
74
|
this.onPointerMoveOut = callback;
|
|
73
75
|
}
|
|
74
76
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type GestureHandler from '../handlers/GestureHandler';
|
|
2
1
|
import { Config } from '../interfaces';
|
|
3
2
|
|
|
4
3
|
export interface MeasureResult {
|
|
@@ -8,10 +7,10 @@ export interface MeasureResult {
|
|
|
8
7
|
height: number;
|
|
9
8
|
}
|
|
10
9
|
|
|
11
|
-
export interface GestureHandlerDelegate<
|
|
12
|
-
getView():
|
|
10
|
+
export interface GestureHandlerDelegate<TComponent, THandler> {
|
|
11
|
+
getView(): TComponent;
|
|
13
12
|
|
|
14
|
-
init(viewRef: number, handler:
|
|
13
|
+
init(viewRef: number, handler: THandler): void;
|
|
15
14
|
isPointerInBounds({ x, y }: { x: number; y: number }): boolean;
|
|
16
15
|
measureView(): MeasureResult;
|
|
17
16
|
reset(): void;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { PointerType } from '../../PointerType';
|
|
2
2
|
import { State } from '../../State';
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import type IGestureHandler from '../handlers/IGestureHandler';
|
|
5
5
|
import PointerTracker from './PointerTracker';
|
|
6
6
|
|
|
7
7
|
export default class GestureHandlerOrchestrator {
|
|
8
8
|
private static instance: GestureHandlerOrchestrator;
|
|
9
9
|
|
|
10
|
-
private gestureHandlers:
|
|
11
|
-
private awaitingHandlers:
|
|
10
|
+
private gestureHandlers: IGestureHandler[] = [];
|
|
11
|
+
private awaitingHandlers: IGestureHandler[] = [];
|
|
12
|
+
private awaitingHandlersTags: Set<number> = new Set();
|
|
12
13
|
|
|
13
14
|
private handlingChangeSemaphore = 0;
|
|
14
15
|
private activationIndex = 0;
|
|
@@ -23,94 +24,130 @@ export default class GestureHandlerOrchestrator {
|
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
private cleanHandler(handler:
|
|
27
|
+
private cleanHandler(handler: IGestureHandler): void {
|
|
27
28
|
handler.reset();
|
|
28
29
|
handler.setActive(false);
|
|
29
30
|
handler.setAwaiting(false);
|
|
30
31
|
handler.setActivationIndex(Number.MAX_VALUE);
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
public removeHandlerFromOrchestrator(handler:
|
|
34
|
-
this.gestureHandlers.
|
|
35
|
-
this.awaitingHandlers.
|
|
34
|
+
public removeHandlerFromOrchestrator(handler: IGestureHandler): void {
|
|
35
|
+
const indexInGestureHandlers = this.gestureHandlers.indexOf(handler);
|
|
36
|
+
const indexInAwaitingHandlers = this.awaitingHandlers.indexOf(handler);
|
|
37
|
+
|
|
38
|
+
if (indexInGestureHandlers >= 0) {
|
|
39
|
+
this.gestureHandlers.splice(indexInGestureHandlers, 1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (indexInAwaitingHandlers >= 0) {
|
|
43
|
+
this.awaitingHandlers.splice(indexInAwaitingHandlers, 1);
|
|
44
|
+
this.awaitingHandlersTags.delete(handler.getTag());
|
|
45
|
+
}
|
|
36
46
|
}
|
|
37
47
|
|
|
38
48
|
private cleanupFinishedHandlers(): void {
|
|
49
|
+
const handlersToRemove = new Set<IGestureHandler>();
|
|
50
|
+
|
|
39
51
|
for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {
|
|
40
52
|
const handler = this.gestureHandlers[i];
|
|
41
53
|
|
|
42
|
-
if (!handler) {
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
54
|
if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {
|
|
46
|
-
this.gestureHandlers.splice(i, 1);
|
|
47
|
-
|
|
48
55
|
this.cleanHandler(handler);
|
|
56
|
+
handlersToRemove.add(handler);
|
|
49
57
|
}
|
|
50
58
|
}
|
|
59
|
+
|
|
60
|
+
this.gestureHandlers = this.gestureHandlers.filter(
|
|
61
|
+
(handler) => !handlersToRemove.has(handler)
|
|
62
|
+
);
|
|
51
63
|
}
|
|
52
64
|
|
|
53
|
-
private hasOtherHandlerToWaitFor(handler:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (
|
|
57
|
-
otherHandler &&
|
|
65
|
+
private hasOtherHandlerToWaitFor(handler: IGestureHandler): boolean {
|
|
66
|
+
const hasToWaitFor = (otherHandler: IGestureHandler) => {
|
|
67
|
+
return (
|
|
58
68
|
!this.isFinished(otherHandler.getState()) &&
|
|
59
69
|
this.shouldHandlerWaitForOther(handler, otherHandler)
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
70
|
+
);
|
|
71
|
+
};
|
|
65
72
|
|
|
66
|
-
return
|
|
73
|
+
return this.gestureHandlers.some(hasToWaitFor);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private shouldBeCancelledByFinishedHandler(
|
|
77
|
+
handler: IGestureHandler
|
|
78
|
+
): boolean {
|
|
79
|
+
const shouldBeCancelled = (otherHandler: IGestureHandler) => {
|
|
80
|
+
return (
|
|
81
|
+
this.shouldHandlerWaitForOther(handler, otherHandler) &&
|
|
82
|
+
otherHandler.getState() === State.END
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return this.gestureHandlers.some(shouldBeCancelled);
|
|
67
87
|
}
|
|
68
88
|
|
|
69
|
-
private tryActivate(handler:
|
|
89
|
+
private tryActivate(handler: IGestureHandler): void {
|
|
90
|
+
if (this.shouldBeCancelledByFinishedHandler(handler)) {
|
|
91
|
+
handler.cancel();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
70
95
|
if (this.hasOtherHandlerToWaitFor(handler)) {
|
|
71
96
|
this.addAwaitingHandler(handler);
|
|
72
|
-
|
|
73
|
-
handler.getState() !== State.CANCELLED &&
|
|
74
|
-
handler.getState() !== State.FAILED
|
|
75
|
-
) {
|
|
76
|
-
if (this.shouldActivate(handler)) {
|
|
77
|
-
this.makeActive(handler);
|
|
78
|
-
} else {
|
|
79
|
-
switch (handler.getState()) {
|
|
80
|
-
case State.ACTIVE:
|
|
81
|
-
handler.fail();
|
|
82
|
-
break;
|
|
83
|
-
case State.BEGAN:
|
|
84
|
-
handler.cancel();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
97
|
+
return;
|
|
87
98
|
}
|
|
88
|
-
}
|
|
89
99
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
100
|
+
const handlerState = handler.getState();
|
|
101
|
+
|
|
102
|
+
if (handlerState === State.CANCELLED || handlerState === State.FAILED) {
|
|
103
|
+
return;
|
|
95
104
|
}
|
|
96
105
|
|
|
97
|
-
|
|
106
|
+
if (this.shouldActivate(handler)) {
|
|
107
|
+
this.makeActive(handler);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (handlerState === State.ACTIVE) {
|
|
112
|
+
handler.fail();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (handlerState === State.BEGAN) {
|
|
117
|
+
handler.cancel();
|
|
118
|
+
}
|
|
98
119
|
}
|
|
99
120
|
|
|
100
|
-
private
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
121
|
+
private shouldActivate(handler: IGestureHandler): boolean {
|
|
122
|
+
const shouldBeCancelledBy = (otherHandler: IGestureHandler) => {
|
|
123
|
+
return this.shouldHandlerBeCancelledBy(handler, otherHandler);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
return !this.gestureHandlers.some(shouldBeCancelledBy);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
private cleanupAwaitingHandlers(handler: IGestureHandler): void {
|
|
130
|
+
const shouldWait = (otherHandler: IGestureHandler) => {
|
|
131
|
+
return (
|
|
132
|
+
!otherHandler.isAwaiting() &&
|
|
133
|
+
this.shouldHandlerWaitForOther(otherHandler, handler)
|
|
134
|
+
);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
for (const otherHandler of this.awaitingHandlers) {
|
|
138
|
+
if (shouldWait(otherHandler)) {
|
|
139
|
+
this.cleanHandler(otherHandler);
|
|
140
|
+
this.awaitingHandlersTags.delete(otherHandler.getTag());
|
|
108
141
|
}
|
|
109
142
|
}
|
|
143
|
+
|
|
144
|
+
this.awaitingHandlers = this.awaitingHandlers.filter((otherHandler) =>
|
|
145
|
+
this.awaitingHandlersTags.has(otherHandler.getTag())
|
|
146
|
+
);
|
|
110
147
|
}
|
|
111
148
|
|
|
112
149
|
public onHandlerStateChange(
|
|
113
|
-
handler:
|
|
150
|
+
handler: IGestureHandler,
|
|
114
151
|
newState: State,
|
|
115
152
|
oldState: State,
|
|
116
153
|
sendIfDisabled?: boolean
|
|
@@ -122,23 +159,31 @@ export default class GestureHandlerOrchestrator {
|
|
|
122
159
|
this.handlingChangeSemaphore += 1;
|
|
123
160
|
|
|
124
161
|
if (this.isFinished(newState)) {
|
|
125
|
-
this.awaitingHandlers
|
|
126
|
-
if (
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
162
|
+
for (const otherHandler of this.awaitingHandlers) {
|
|
163
|
+
if (
|
|
164
|
+
!this.shouldHandlerWaitForOther(otherHandler, handler) ||
|
|
165
|
+
!this.awaitingHandlersTags.has(otherHandler.getTag())
|
|
166
|
+
) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (newState !== State.END) {
|
|
171
|
+
this.tryActivate(otherHandler);
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
otherHandler.cancel();
|
|
176
|
+
|
|
177
|
+
if (otherHandler.getState() === State.END) {
|
|
178
|
+
// Handle edge case, where discrete gestures end immediately after activation thus
|
|
179
|
+
// their state is set to END and when the gesture they are waiting for activates they
|
|
180
|
+
// should be cancelled, however `cancel` was never sent as gestures were already in the END state.
|
|
181
|
+
// Send synthetic BEGAN -> CANCELLED to properly handle JS logic
|
|
182
|
+
otherHandler.sendEvent(State.CANCELLED, State.BEGAN);
|
|
140
183
|
}
|
|
141
|
-
|
|
184
|
+
|
|
185
|
+
otherHandler.setAwaiting(false);
|
|
186
|
+
}
|
|
142
187
|
}
|
|
143
188
|
|
|
144
189
|
if (newState === State.ACTIVE) {
|
|
@@ -163,12 +208,12 @@ export default class GestureHandlerOrchestrator {
|
|
|
163
208
|
|
|
164
209
|
this.scheduleFinishedHandlersCleanup();
|
|
165
210
|
|
|
166
|
-
if (this.awaitingHandlers.
|
|
211
|
+
if (!this.awaitingHandlers.includes(handler)) {
|
|
167
212
|
this.cleanupAwaitingHandlers(handler);
|
|
168
213
|
}
|
|
169
214
|
}
|
|
170
215
|
|
|
171
|
-
private makeActive(handler:
|
|
216
|
+
private makeActive(handler: IGestureHandler): void {
|
|
172
217
|
const currentState = handler.getState();
|
|
173
218
|
|
|
174
219
|
handler.setActive(true);
|
|
@@ -181,12 +226,11 @@ export default class GestureHandlerOrchestrator {
|
|
|
181
226
|
}
|
|
182
227
|
}
|
|
183
228
|
|
|
184
|
-
this.awaitingHandlers
|
|
229
|
+
for (const otherHandler of this.awaitingHandlers) {
|
|
185
230
|
if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {
|
|
186
|
-
otherHandler
|
|
187
|
-
otherHandler?.setAwaiting(true);
|
|
231
|
+
otherHandler.setAwaiting(false);
|
|
188
232
|
}
|
|
189
|
-
}
|
|
233
|
+
}
|
|
190
234
|
|
|
191
235
|
handler.sendEvent(State.ACTIVE, State.BEGAN);
|
|
192
236
|
|
|
@@ -197,47 +241,31 @@ export default class GestureHandlerOrchestrator {
|
|
|
197
241
|
}
|
|
198
242
|
}
|
|
199
243
|
|
|
200
|
-
if (handler.isAwaiting()) {
|
|
201
|
-
|
|
202
|
-
for (let i = 0; i < this.awaitingHandlers.length; ++i) {
|
|
203
|
-
if (this.awaitingHandlers[i] === handler) {
|
|
204
|
-
this.awaitingHandlers.splice(i, 1);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
244
|
+
if (!handler.isAwaiting()) {
|
|
245
|
+
return;
|
|
207
246
|
}
|
|
208
|
-
}
|
|
209
247
|
|
|
210
|
-
|
|
211
|
-
let alreadyExists = false;
|
|
248
|
+
handler.setAwaiting(false);
|
|
212
249
|
|
|
213
|
-
this.awaitingHandlers.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
});
|
|
250
|
+
this.awaitingHandlers = this.awaitingHandlers.filter(
|
|
251
|
+
(otherHandler) => otherHandler !== handler
|
|
252
|
+
);
|
|
253
|
+
}
|
|
219
254
|
|
|
220
|
-
|
|
255
|
+
private addAwaitingHandler(handler: IGestureHandler): void {
|
|
256
|
+
if (this.awaitingHandlers.includes(handler)) {
|
|
221
257
|
return;
|
|
222
258
|
}
|
|
223
259
|
|
|
224
260
|
this.awaitingHandlers.push(handler);
|
|
261
|
+
this.awaitingHandlersTags.add(handler.getTag());
|
|
225
262
|
|
|
226
263
|
handler.setAwaiting(true);
|
|
227
264
|
handler.setActivationIndex(this.activationIndex++);
|
|
228
265
|
}
|
|
229
266
|
|
|
230
|
-
public recordHandlerIfNotPresent(handler:
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.gestureHandlers.forEach((otherHandler) => {
|
|
234
|
-
if (otherHandler === handler) {
|
|
235
|
-
alreadyExists = true;
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
if (alreadyExists) {
|
|
267
|
+
public recordHandlerIfNotPresent(handler: IGestureHandler): void {
|
|
268
|
+
if (this.gestureHandlers.includes(handler)) {
|
|
241
269
|
return;
|
|
242
270
|
}
|
|
243
271
|
|
|
@@ -249,8 +277,8 @@ export default class GestureHandlerOrchestrator {
|
|
|
249
277
|
}
|
|
250
278
|
|
|
251
279
|
private shouldHandlerWaitForOther(
|
|
252
|
-
handler:
|
|
253
|
-
otherHandler:
|
|
280
|
+
handler: IGestureHandler,
|
|
281
|
+
otherHandler: IGestureHandler
|
|
254
282
|
): boolean {
|
|
255
283
|
return (
|
|
256
284
|
handler !== otherHandler &&
|
|
@@ -260,8 +288,8 @@ export default class GestureHandlerOrchestrator {
|
|
|
260
288
|
}
|
|
261
289
|
|
|
262
290
|
private canRunSimultaneously(
|
|
263
|
-
gh1:
|
|
264
|
-
gh2:
|
|
291
|
+
gh1: IGestureHandler,
|
|
292
|
+
gh2: IGestureHandler
|
|
265
293
|
): boolean {
|
|
266
294
|
return (
|
|
267
295
|
gh1 === gh2 ||
|
|
@@ -271,17 +299,14 @@ export default class GestureHandlerOrchestrator {
|
|
|
271
299
|
}
|
|
272
300
|
|
|
273
301
|
private shouldHandlerBeCancelledBy(
|
|
274
|
-
handler:
|
|
275
|
-
otherHandler:
|
|
302
|
+
handler: IGestureHandler,
|
|
303
|
+
otherHandler: IGestureHandler
|
|
276
304
|
): boolean {
|
|
277
305
|
if (this.canRunSimultaneously(handler, otherHandler)) {
|
|
278
306
|
return false;
|
|
279
307
|
}
|
|
280
308
|
|
|
281
|
-
if (
|
|
282
|
-
handler !== otherHandler &&
|
|
283
|
-
(handler.isAwaiting() || handler.getState() === State.ACTIVE)
|
|
284
|
-
) {
|
|
309
|
+
if (handler.isAwaiting() || handler.getState() === State.ACTIVE) {
|
|
285
310
|
// For now it always returns false
|
|
286
311
|
return handler.shouldBeCancelledByOther(otherHandler);
|
|
287
312
|
}
|
|
@@ -300,8 +325,8 @@ export default class GestureHandlerOrchestrator {
|
|
|
300
325
|
}
|
|
301
326
|
|
|
302
327
|
private checkOverlap(
|
|
303
|
-
handler:
|
|
304
|
-
otherHandler:
|
|
328
|
+
handler: IGestureHandler,
|
|
329
|
+
otherHandler: IGestureHandler
|
|
305
330
|
): boolean {
|
|
306
331
|
// If handlers don't have common pointers, default return value is false.
|
|
307
332
|
// However, if at least on pointer overlaps with both handlers, we return true
|
|
@@ -309,38 +334,28 @@ export default class GestureHandlerOrchestrator {
|
|
|
309
334
|
|
|
310
335
|
// TODO: Find better way to handle that issue, for example by activation order and handler cancelling
|
|
311
336
|
|
|
312
|
-
const
|
|
313
|
-
const otherPointers: number[] = otherHandler.getTrackedPointersID();
|
|
314
|
-
|
|
315
|
-
let overlap = false;
|
|
316
|
-
|
|
317
|
-
handlerPointers.forEach((pointer: number) => {
|
|
337
|
+
const isPointerWithinBothBounds = (pointer: number) => {
|
|
318
338
|
const handlerX: number = handler.getTracker().getLastX(pointer);
|
|
319
339
|
const handlerY: number = handler.getTracker().getLastY(pointer);
|
|
320
340
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
.isPointerInBounds({ x: handlerX, y: handlerY })
|
|
326
|
-
) {
|
|
327
|
-
overlap = true;
|
|
328
|
-
}
|
|
329
|
-
});
|
|
341
|
+
const point = {
|
|
342
|
+
x: handlerX,
|
|
343
|
+
y: handlerY,
|
|
344
|
+
};
|
|
330
345
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
346
|
+
return (
|
|
347
|
+
handler.getDelegate().isPointerInBounds(point) &&
|
|
348
|
+
otherHandler.getDelegate().isPointerInBounds(point)
|
|
349
|
+
);
|
|
350
|
+
};
|
|
334
351
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
otherHandler.getDelegate().isPointerInBounds({ x: otherX, y: otherY })
|
|
338
|
-
) {
|
|
339
|
-
overlap = true;
|
|
340
|
-
}
|
|
341
|
-
});
|
|
352
|
+
const handlerPointers: number[] = handler.getTrackedPointersID();
|
|
353
|
+
const otherPointers: number[] = otherHandler.getTrackedPointersID();
|
|
342
354
|
|
|
343
|
-
return
|
|
355
|
+
return (
|
|
356
|
+
handlerPointers.some(isPointerWithinBothBounds) ||
|
|
357
|
+
otherPointers.some(isPointerWithinBothBounds)
|
|
358
|
+
);
|
|
344
359
|
}
|
|
345
360
|
|
|
346
361
|
private isFinished(state: State): boolean {
|
|
@@ -355,8 +370,8 @@ export default class GestureHandlerOrchestrator {
|
|
|
355
370
|
// This became a problem because handler was left at active state without any signal to end or fail
|
|
356
371
|
// To handle this, when new touch event is received, we loop through active handlers and check which type of
|
|
357
372
|
// pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them
|
|
358
|
-
public cancelMouseAndPenGestures(currentHandler:
|
|
359
|
-
this.gestureHandlers.forEach((handler:
|
|
373
|
+
public cancelMouseAndPenGestures(currentHandler: IGestureHandler): void {
|
|
374
|
+
this.gestureHandlers.forEach((handler: IGestureHandler) => {
|
|
360
375
|
if (
|
|
361
376
|
handler.getPointerType() !== PointerType.MOUSE &&
|
|
362
377
|
handler.getPointerType() !== PointerType.STYLUS
|