react-native-gesture-handler 2.16.0-rc.0 → 2.16.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,12 +1,17 @@
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
2
|
|
3
3
|
import { State } from '../../State';
|
4
|
-
import {
|
4
|
+
import { DiagonalDirections, Directions } from '../../Directions';
|
5
5
|
import GestureHandler from './GestureHandler';
|
6
|
+
import Vector from '../tools/Vector';
|
7
|
+
import { coneToDeviation } from '../utils';
|
6
8
|
const DEFAULT_MAX_DURATION_MS = 800;
|
7
|
-
const
|
8
|
-
const
|
9
|
+
const DEFAULT_MIN_VELOCITY = 700;
|
10
|
+
const DEFAULT_ALIGNMENT_CONE = 30;
|
11
|
+
const DEFAULT_DIRECTION = Directions.RIGHT;
|
9
12
|
const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;
|
13
|
+
const AXIAL_DEVIATION_COSINE = coneToDeviation(DEFAULT_ALIGNMENT_CONE);
|
14
|
+
const DIAGONAL_DEVIATION_COSINE = coneToDeviation(90 - DEFAULT_ALIGNMENT_CONE);
|
10
15
|
export default class FlingGestureHandler extends GestureHandler {
|
11
16
|
constructor(...args) {
|
12
17
|
super(...args);
|
@@ -17,14 +22,10 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
17
22
|
|
18
23
|
_defineProperty(this, "maxDurationMs", DEFAULT_MAX_DURATION_MS);
|
19
24
|
|
20
|
-
_defineProperty(this, "
|
25
|
+
_defineProperty(this, "minVelocity", DEFAULT_MIN_VELOCITY);
|
21
26
|
|
22
27
|
_defineProperty(this, "delayTimeout", void 0);
|
23
28
|
|
24
|
-
_defineProperty(this, "startX", 0);
|
25
|
-
|
26
|
-
_defineProperty(this, "startY", 0);
|
27
|
-
|
28
29
|
_defineProperty(this, "maxNumberOfPointersSimultaneously", 0);
|
29
30
|
|
30
31
|
_defineProperty(this, "keyPointer", NaN);
|
@@ -53,15 +54,27 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
53
54
|
}
|
54
55
|
|
55
56
|
startFling() {
|
56
|
-
this.startX = this.tracker.getLastX(this.keyPointer);
|
57
|
-
this.startY = this.tracker.getLastY(this.keyPointer);
|
58
57
|
this.begin();
|
59
58
|
this.maxNumberOfPointersSimultaneously = 1;
|
60
59
|
this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
|
61
60
|
}
|
62
61
|
|
63
62
|
tryEndFling() {
|
64
|
-
|
63
|
+
const velocityVector = Vector.fromVelocity(this.tracker, this.keyPointer);
|
64
|
+
|
65
|
+
const getAlignment = (direction, minimalAlignmentCosine) => {
|
66
|
+
return (direction & this.direction) === direction && velocityVector.isSimilar(Vector.fromDirection(direction), minimalAlignmentCosine);
|
67
|
+
};
|
68
|
+
|
69
|
+
const axialDirectionsList = Object.values(Directions);
|
70
|
+
const diagonalDirectionsList = Object.values(DiagonalDirections); // list of alignments to all activated directions
|
71
|
+
|
72
|
+
const axialAlignmentList = axialDirectionsList.map(direction => getAlignment(direction, AXIAL_DEVIATION_COSINE));
|
73
|
+
const diagonalAlignmentList = diagonalDirectionsList.map(direction => getAlignment(direction, DIAGONAL_DEVIATION_COSINE));
|
74
|
+
const isAligned = axialAlignmentList.some(Boolean) || diagonalAlignmentList.some(Boolean);
|
75
|
+
const isFast = velocityVector.magnitude > this.minVelocity;
|
76
|
+
|
77
|
+
if (this.maxNumberOfPointersSimultaneously === this.numberOfPointersRequired && isAligned && isFast) {
|
65
78
|
clearTimeout(this.delayTimeout);
|
66
79
|
this.activate();
|
67
80
|
return true;
|
@@ -109,7 +122,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
109
122
|
}
|
110
123
|
}
|
111
124
|
|
112
|
-
|
125
|
+
pointerMoveAction(event) {
|
113
126
|
this.tracker.track(event);
|
114
127
|
|
115
128
|
if (this.currentState !== State.BEGAN) {
|
@@ -117,9 +130,18 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
117
130
|
}
|
118
131
|
|
119
132
|
this.tryEndFling();
|
133
|
+
}
|
134
|
+
|
135
|
+
onPointerMove(event) {
|
136
|
+
this.pointerMoveAction(event);
|
120
137
|
super.onPointerMove(event);
|
121
138
|
}
|
122
139
|
|
140
|
+
onPointerOutOfBounds(event) {
|
141
|
+
this.pointerMoveAction(event);
|
142
|
+
super.onPointerOutOfBounds(event);
|
143
|
+
}
|
144
|
+
|
123
145
|
onPointerUp(event) {
|
124
146
|
super.onPointerUp(event);
|
125
147
|
this.onUp(event);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","startFling","startX","tracker","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","isButtonInConfig","button","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 32;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n if (this.currentState === State.BEGAN) {\n this.endFling();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","DiagonalDirections","Directions","GestureHandler","Vector","coneToDeviation","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_VELOCITY","DEFAULT_ALIGNMENT_CONE","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","AXIAL_DEVIATION_COSINE","DIAGONAL_DEVIATION_COSINE","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","startFling","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","velocityVector","fromVelocity","tracker","keyPointer","getAlignment","minimalAlignmentCosine","isSimilar","fromDirection","axialDirectionsList","Object","values","diagonalDirectionsList","axialAlignmentList","map","diagonalAlignmentList","isAligned","some","Boolean","isFast","magnitude","minVelocity","clearTimeout","activate","endFling","onPointerDown","event","isButtonInConfig","button","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","pointerMoveAction","track","onPointerMove","onPointerOutOfBounds","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DiagonalDirections, Directions } from '../../Directions';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport Vector from '../tools/Vector';\nimport { coneToDeviation } from '../utils';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_VELOCITY = 700;\nconst DEFAULT_ALIGNMENT_CONE = 30;\nconst DEFAULT_DIRECTION = Directions.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nconst AXIAL_DEVIATION_COSINE = coneToDeviation(DEFAULT_ALIGNMENT_CONE);\nconst DIAGONAL_DEVIATION_COSINE = coneToDeviation(90 - DEFAULT_ALIGNMENT_CONE);\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction: Directions = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minVelocity = DEFAULT_MIN_VELOCITY;\n private delayTimeout!: number;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n private startFling(): void {\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n const velocityVector = Vector.fromVelocity(this.tracker, this.keyPointer);\n\n const getAlignment = (\n direction: Directions | DiagonalDirections,\n minimalAlignmentCosine: number\n ) => {\n return (\n (direction & this.direction) === direction &&\n velocityVector.isSimilar(\n Vector.fromDirection(direction),\n minimalAlignmentCosine\n )\n );\n };\n\n const axialDirectionsList = Object.values(Directions);\n const diagonalDirectionsList = Object.values(DiagonalDirections);\n\n // list of alignments to all activated directions\n const axialAlignmentList = axialDirectionsList.map((direction) =>\n getAlignment(direction, AXIAL_DEVIATION_COSINE)\n );\n\n const diagonalAlignmentList = diagonalDirectionsList.map((direction) =>\n getAlignment(direction, DIAGONAL_DEVIATION_COSINE)\n );\n\n const isAligned =\n axialAlignmentList.some(Boolean) || diagonalAlignmentList.some(Boolean);\n\n const isFast = velocityVector.magnitude > this.minVelocity;\n\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n isAligned &&\n isFast\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n private pointerMoveAction(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.pointerMoveAction(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.pointerMoveAction(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n if (this.currentState === State.BEGAN) {\n this.endFling();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
|
@@ -2,10 +2,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
2
2
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-empty-function */
|
4
4
|
import { State } from '../../State';
|
5
|
-
import { TouchEventType, EventTypes
|
5
|
+
import { TouchEventType, EventTypes } from '../interfaces';
|
6
6
|
import GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';
|
7
7
|
import InteractionManager from '../tools/InteractionManager';
|
8
8
|
import PointerTracker from '../tools/PointerTracker';
|
9
|
+
import { MouseButton } from '../../handlers/gestureHandlerCommon';
|
9
10
|
import { PointerType } from '../../PointerType';
|
10
11
|
export default class GestureHandler {
|
11
12
|
// Orchestrator properties
|
@@ -14,7 +15,7 @@ export default class GestureHandler {
|
|
14
15
|
|
15
16
|
_defineProperty(this, "currentState", State.UNDETERMINED);
|
16
17
|
|
17
|
-
_defineProperty(this, "
|
18
|
+
_defineProperty(this, "shouldCancelWhenOutside", false);
|
18
19
|
|
19
20
|
_defineProperty(this, "hasCustomActivationCriteria", false);
|
20
21
|
|
@@ -90,7 +91,7 @@ export default class GestureHandler {
|
|
90
91
|
manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
|
91
92
|
manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));
|
92
93
|
manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));
|
93
|
-
manager.
|
94
|
+
manager.registerListeners();
|
94
95
|
} //
|
95
96
|
// Resetting handler
|
96
97
|
//
|
@@ -173,8 +174,8 @@ export default class GestureHandler {
|
|
173
174
|
}
|
174
175
|
}
|
175
176
|
|
176
|
-
activate(
|
177
|
-
if (this.currentState === State.UNDETERMINED || this.currentState === State.BEGAN) {
|
177
|
+
activate(force = false) {
|
178
|
+
if ((this.config.manualActivation !== true || force) && (this.currentState === State.UNDETERMINED || this.currentState === State.BEGAN)) {
|
178
179
|
this.delegate.onActivate();
|
179
180
|
this.moveToState(State.ACTIVE);
|
180
181
|
}
|
@@ -302,7 +303,7 @@ export default class GestureHandler {
|
|
302
303
|
}
|
303
304
|
|
304
305
|
onPointerLeave(event) {
|
305
|
-
if (this.
|
306
|
+
if (this.shouldCancelWhenOutside) {
|
306
307
|
switch (this.currentState) {
|
307
308
|
case State.ACTIVE:
|
308
309
|
this.cancel();
|
@@ -351,7 +352,7 @@ export default class GestureHandler {
|
|
351
352
|
}
|
352
353
|
|
353
354
|
tryToSendMoveEvent(out) {
|
354
|
-
if (this.enabled && this.active && (!out || out && !this.
|
355
|
+
if (this.enabled && this.active && (!out || out && !this.shouldCancelWhenOutside)) {
|
355
356
|
this.sendEvent(this.currentState, this.currentState);
|
356
357
|
}
|
357
358
|
}
|
@@ -725,11 +726,11 @@ export default class GestureHandler {
|
|
725
726
|
}
|
726
727
|
|
727
728
|
setShouldCancelWhenOutside(shouldCancel) {
|
728
|
-
this.
|
729
|
+
this.shouldCancelWhenOutside = shouldCancel;
|
729
730
|
}
|
730
731
|
|
731
732
|
getShouldCancelWhenOutside() {
|
732
|
-
return this.
|
733
|
+
return this.shouldCancelWhenOutside;
|
733
734
|
}
|
734
735
|
|
735
736
|
getPointerType() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["State","TouchEventType","EventTypes","MouseButton","GestureHandlerOrchestrator","InteractionManager","PointerTracker","PointerType","GestureHandler","constructor","delegate","UNDETERMINED","enabled","MOUSE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","setListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","_force","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isButtonInConfig","mouseButton","LEFT","resetConfig","onDestroy","destroy","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n TouchEventType,\n EventTypes,\n MouseButton,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\nimport { PointerType } from '../../PointerType';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.MOUSE;\n\n protected delegate: GestureHandlerDelegate<unknown>;\n\n public constructor(delegate: GestureHandlerDelegate<unknown>) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n manager.setListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n\n if (!this.enabled && this.isFinished()) {\n this.currentState = State.UNDETERMINED;\n }\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.delegate.onActivate();\n\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n pointerType: this.pointerType,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isButtonInConfig(mouseButton: MouseButton | undefined) {\n return (\n !mouseButton ||\n (!this.config.mouseButton && mouseButton === MouseButton.LEFT) ||\n (this.config.mouseButton && mouseButton & this.config.mouseButton)\n );\n }\n\n protected resetConfig(): void {}\n\n public onDestroy(): void {\n this.delegate.destroy(this.config);\n }\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping }: { argMapping: unknown } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["State","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerTracker","MouseButton","PointerType","GestureHandler","constructor","delegate","UNDETERMINED","enabled","MOUSE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","registerListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","force","manualActivation","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancelWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isButtonInConfig","mouseButton","LEFT","resetConfig","onDestroy","destroy","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\nimport IGestureHandler from './IGestureHandler';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport { PointerType } from '../../PointerType';\n\nexport default abstract class GestureHandler implements IGestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancelWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.MOUSE;\n\n protected delegate: GestureHandlerDelegate<unknown, IGestureHandler>;\n\n public constructor(\n delegate: GestureHandlerDelegate<unknown, IGestureHandler>\n ) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n\n manager.registerListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n\n if (!this.enabled && this.isFinished()) {\n this.currentState = State.UNDETERMINED;\n }\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(force = false) {\n if (\n (this.config.manualActivation !== true || force) &&\n (this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN)\n ) {\n this.delegate.onActivate();\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: IGestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: IGestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancelWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancelWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n pointerType: this.pointerType,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isButtonInConfig(mouseButton: MouseButton | undefined) {\n return (\n !mouseButton ||\n (!this.config.mouseButton && mouseButton === MouseButton.LEFT) ||\n (this.config.mouseButton && mouseButton & this.config.mouseButton)\n );\n }\n\n protected resetConfig(): void {}\n\n public onDestroy(): void {\n this.delegate.destroy(this.config);\n }\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown, IGestureHandler> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancelWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancelWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping }: { argMapping: unknown } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
@@ -33,12 +33,7 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
33
33
|
view.style['touchAction'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari
|
34
34
|
|
35
35
|
view.style['WebkitTouchCallout'] = 'auto';
|
36
|
-
|
37
|
-
if (view.hasAttribute('role')) {
|
38
|
-
this.buttonRole = true;
|
39
|
-
} else {
|
40
|
-
this.buttonRole = false;
|
41
|
-
}
|
36
|
+
this.buttonRole = view.getAttribute('role') === 'button';
|
42
37
|
}
|
43
38
|
|
44
39
|
updateGestureConfig({
|
@@ -159,5 +154,9 @@ export default class NativeViewGestureHandler extends GestureHandler {
|
|
159
154
|
return this.disallowInterruption;
|
160
155
|
}
|
161
156
|
|
157
|
+
isButton() {
|
158
|
+
return this.buttonRole;
|
159
|
+
}
|
160
|
+
|
162
161
|
}
|
163
162
|
//# sourceMappingURL=NativeViewGestureHandler.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["Platform","State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","OS","view","delegate","getView","style","
|
1
|
+
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["Platform","State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","OS","view","delegate","getView","style","buttonRole","getAttribute","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","ACTIVE","cancel","BEGAN","onPointerLeave","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","end","fail","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler","isButton"],"mappings":"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","sourcesContent":["import { Platform } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n if (Platform.OS !== 'web') {\n return;\n }\n\n const view = this.delegate.getView() as HTMLElement;\n\n view.style['touchAction'] = 'auto';\n //@ts-ignore Turns on defualt touch behavior on Safari\n view.style['WebkitTouchCallout'] = 'auto';\n\n this.buttonRole = view.getAttribute('role') === 'button';\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (distSq >= this.minDistSq) {\n if (this.buttonRole && this.currentState === State.ACTIVE) {\n this.cancel();\n } else if (!this.buttonRole && this.currentState === State.BEGAN) {\n this.activate();\n }\n }\n }\n\n protected onPointerLeave(): void {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.cancel();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n\n public isButton(): boolean {\n return this.buttonRole;\n }\n}\n"]}
|
@@ -10,7 +10,7 @@ export default class PanGestureHandler extends GestureHandler {
|
|
10
10
|
constructor(...args) {
|
11
11
|
super(...args);
|
12
12
|
|
13
|
-
_defineProperty(this, "customActivationProperties", ['activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetXStart', 'failOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd', 'failOffsetYStart', 'failOffsetYEnd', 'minVelocityX', 'minVelocityY']);
|
13
|
+
_defineProperty(this, "customActivationProperties", ['activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetXStart', 'failOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd', 'failOffsetYStart', 'failOffsetYEnd', 'minVelocityX', 'minVelocityY', 'minVelocity']);
|
14
14
|
|
15
15
|
_defineProperty(this, "velocityX", 0);
|
16
16
|
|
@@ -224,6 +224,8 @@ export default class PanGestureHandler extends GestureHandler {
|
|
224
224
|
super.onPointerDown(event);
|
225
225
|
this.lastX = this.tracker.getLastAvgX();
|
226
226
|
this.lastY = this.tracker.getLastAvgY();
|
227
|
+
this.startX = this.lastX;
|
228
|
+
this.startY = this.lastY;
|
227
229
|
this.tryBegin(event);
|
228
230
|
this.checkBegan();
|
229
231
|
}
|