react-native-gesture-handler 2.16.1 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +9 -3
- package/android/build.gradle +105 -0
- package/android/gradle.properties +7 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +4 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +1 -0
- package/apple/RNGestureHandlerButtonComponentView.mm +10 -0
- package/apple/RNGestureHandlerModule.mm +2 -3
- package/lib/commonjs/RNGestureHandlerModule.js +4 -97
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +109 -0
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -0
- package/lib/commonjs/RNRenderer.js +10 -5
- package/lib/commonjs/RNRenderer.js.map +1 -1
- package/lib/commonjs/RNRenderer.web.js +11 -0
- package/lib/commonjs/RNRenderer.web.js.map +1 -0
- package/lib/commonjs/components/GestureButtons.js +27 -12
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +82 -19
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +52 -0
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -0
- package/lib/commonjs/components/GestureHandlerButton.js +3 -13
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.web.js +24 -0
- package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -0
- package/lib/commonjs/components/GestureHandlerRootView.js +6 -0
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/{GestureHandlerRootView.native.js → GestureHandlerRootView.web.js} +1 -7
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -0
- package/lib/commonjs/getReactNativeVersion.js +12 -1
- package/lib/commonjs/getReactNativeVersion.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.web.js +11 -0
- package/lib/commonjs/getReactNativeVersion.web.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.js +34 -5
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.web.js +15 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.js +7 -5
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +12 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +1 -3
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.js +8 -5
- package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.web.js +11 -0
- package/lib/commonjs/handlers/customDirectEventTypes.web.js.map +1 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js +3 -3
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +42 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +83 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +143 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js +6 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +80 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +180 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +55 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +47 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +176 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js +3 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +8 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/utils.js +36 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +6 -8
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +5 -6
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +56 -64
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +7 -4
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +28 -18
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +18 -12
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -6
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +7 -2
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +89 -57
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +6 -2
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +2 -1
- package/lib/commonjs/web/tools/Vector.js.map +1 -1
- package/lib/commonjs/web/utils.js +31 -0
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +4 -84
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +85 -0
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -0
- package/lib/module/RNRenderer.js +3 -3
- package/lib/module/RNRenderer.js.map +1 -1
- package/lib/module/RNRenderer.web.js +4 -0
- package/lib/module/RNRenderer.web.js.map +1 -0
- package/lib/module/components/GestureButtons.js +24 -6
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureComponents.js +80 -18
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +28 -0
- package/lib/module/components/GestureComponents.web.js.map +1 -0
- package/lib/module/components/GestureHandlerButton.js +2 -8
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.web.js +9 -0
- package/lib/module/components/GestureHandlerButton.web.js.map +1 -0
- package/lib/module/components/GestureHandlerRootView.js +5 -0
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/{GestureHandlerRootView.native.js → GestureHandlerRootView.web.js} +1 -6
- package/lib/module/components/GestureHandlerRootView.web.js.map +1 -0
- package/lib/module/getReactNativeVersion.js +7 -1
- package/lib/module/getReactNativeVersion.js.map +1 -1
- package/lib/module/getReactNativeVersion.web.js +4 -0
- package/lib/module/getReactNativeVersion.web.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.js +33 -4
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.web.js +8 -0
- package/lib/module/getShadowNodeFromRef.web.js.map +1 -0
- package/lib/module/handlers/PressabilityDebugView.js +2 -4
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.web.js +5 -0
- package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -0
- package/lib/module/handlers/createHandler.js +2 -4
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.js +2 -4
- package/lib/module/handlers/customDirectEventTypes.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.web.js +5 -0
- package/lib/module/handlers/customDirectEventTypes.web.js.map +1 -0
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js +26 -0
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +65 -0
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/index.js +115 -0
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/types.js +2 -0
- package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +64 -0
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +165 -0
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +41 -0
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +36 -0
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/utils.js +142 -0
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -0
- package/lib/module/handlers/gestures/gestureComposition.js +3 -1
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +8 -0
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/utils.js +34 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +6 -8
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +5 -6
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +56 -64
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +1 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +7 -4
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +28 -18
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +1 -0
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +1 -0
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +18 -12
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -6
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +8 -3
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +89 -57
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +7 -3
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/tools/Vector.js +2 -1
- package/lib/module/web/tools/Vector.js.map +1 -1
- package/lib/module/web/utils.js +29 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +2 -15
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +15 -0
- package/lib/typescript/RNRenderer.d.ts +1 -3
- package/lib/typescript/RNRenderer.web.d.ts +3 -0
- package/lib/typescript/components/GestureButtons.d.ts +3 -34
- package/lib/typescript/components/GestureComponents.d.ts +21 -7
- package/lib/typescript/components/GestureComponents.web.d.ts +8 -0
- package/lib/typescript/components/GestureHandlerButton.d.ts +3 -3
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +4 -0
- package/lib/typescript/getReactNativeVersion.d.ts +4 -1
- package/lib/typescript/getReactNativeVersion.web.d.ts +1 -0
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -1
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -1
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
- package/lib/typescript/handlers/customDirectEventTypes.d.ts +1 -2
- package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +2 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -2
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +13 -0
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +13 -0
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +2 -0
- package/lib/typescript/handlers/gestures/{GestureDetector.d.ts → GestureDetector/index.d.ts} +4 -12
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +3 -0
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +20 -0
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +4 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +2 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +5 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +3 -0
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +12 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -1
- package/lib/typescript/utils.d.ts +10 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
- package/lib/typescript/web/interfaces.d.ts +1 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +34 -31
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +5 -5
- package/src/RNGestureHandlerModule.ts +4 -104
- package/src/RNGestureHandlerModule.web.ts +105 -0
- package/src/RNRenderer.ts +3 -3
- package/src/RNRenderer.web.ts +3 -0
- package/src/components/GestureButtons.tsx +36 -4
- package/src/components/GestureComponents.tsx +131 -24
- package/src/components/GestureComponents.web.tsx +41 -0
- package/src/components/GestureHandlerButton.tsx +4 -5
- package/src/components/GestureHandlerButton.web.tsx +6 -0
- package/src/components/GestureHandlerRootView.tsx +6 -0
- package/src/components/{GestureHandlerRootView.native.tsx → GestureHandlerRootView.web.tsx} +0 -6
- package/src/getReactNativeVersion.ts +9 -1
- package/src/getReactNativeVersion.web.ts +3 -0
- package/src/getShadowNodeFromRef.ts +41 -4
- package/src/getShadowNodeFromRef.web.ts +7 -0
- package/src/handlers/PressabilityDebugView.tsx +2 -4
- package/src/handlers/PressabilityDebugView.web.tsx +4 -0
- package/src/handlers/createHandler.tsx +1 -3
- package/src/handlers/customDirectEventTypes.ts +2 -5
- package/src/handlers/customDirectEventTypes.web.ts +5 -0
- package/src/handlers/gestureHandlerCommon.ts +4 -1
- package/src/handlers/gestures/GestureDetector/Wrap.tsx +35 -0
- package/src/handlers/gestures/GestureDetector/attachHandlers.ts +112 -0
- package/src/handlers/gestures/GestureDetector/dropHandlers.ts +14 -0
- package/src/handlers/gestures/GestureDetector/index.tsx +187 -0
- package/src/handlers/gestures/GestureDetector/needsToReattach.ts +27 -0
- package/src/handlers/gestures/GestureDetector/types.ts +32 -0
- package/src/handlers/gestures/GestureDetector/updateHandlers.ts +94 -0
- package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +206 -0
- package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +69 -0
- package/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +54 -0
- package/src/handlers/gestures/GestureDetector/utils.ts +185 -0
- package/src/handlers/gestures/gestureComposition.ts +2 -0
- package/src/handlers/gestures/gestureStateManager.ts +12 -4
- package/src/handlers/gestures/reanimatedWrapper.ts +19 -17
- package/src/utils.ts +39 -0
- package/src/web/detectors/RotationGestureDetector.ts +6 -8
- package/src/web/detectors/ScaleGestureDetector.ts +5 -6
- package/src/web/handlers/FlingGestureHandler.ts +2 -0
- package/src/web/handlers/GestureHandler.ts +53 -62
- package/src/web/handlers/LongPressGestureHandler.ts +2 -0
- package/src/web/handlers/ManualGestureHandler.ts +2 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +8 -4
- package/src/web/handlers/PanGestureHandler.ts +32 -19
- package/src/web/handlers/PinchGestureHandler.ts +2 -0
- package/src/web/handlers/RotationGestureHandler.ts +2 -0
- package/src/web/handlers/TapGestureHandler.ts +20 -12
- package/src/web/interfaces.ts +1 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +1 -7
- package/src/web/tools/PointerEventManager.ts +10 -3
- package/src/web/tools/PointerTracker.ts +81 -74
- package/src/web/tools/TouchEventManager.ts +5 -3
- package/src/web/tools/Vector.ts +2 -4
- package/src/web/utils.ts +34 -0
- package/lib/commonjs/RNGestureHandlerModule.native.js +0 -16
- package/lib/commonjs/RNGestureHandlerModule.native.js.map +0 -1
- package/lib/commonjs/RNRenderer.native.js +0 -16
- package/lib/commonjs/RNRenderer.native.js.map +0 -1
- package/lib/commonjs/components/GestureComponents.native.js +0 -115
- package/lib/commonjs/components/GestureComponents.native.js.map +0 -1
- package/lib/commonjs/components/GestureHandlerButton.native.js +0 -14
- package/lib/commonjs/components/GestureHandlerButton.native.js.map +0 -1
- package/lib/commonjs/components/GestureHandlerRootView.native.js.map +0 -1
- package/lib/commonjs/getReactNativeVersion.native.js +0 -22
- package/lib/commonjs/getReactNativeVersion.native.js.map +0 -1
- package/lib/commonjs/getShadowNodeFromRef.native.js +0 -44
- package/lib/commonjs/getShadowNodeFromRef.native.js.map +0 -1
- package/lib/commonjs/handlers/PressabilityDebugView.native.js +0 -14
- package/lib/commonjs/handlers/PressabilityDebugView.native.js.map +0 -1
- package/lib/commonjs/handlers/customDirectEventTypes.native.js +0 -14
- package/lib/commonjs/handlers/customDirectEventTypes.native.js.map +0 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +0 -704
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +0 -1
- package/lib/module/RNGestureHandlerModule.native.js +0 -5
- package/lib/module/RNGestureHandlerModule.native.js.map +0 -1
- package/lib/module/RNRenderer.native.js +0 -4
- package/lib/module/RNRenderer.native.js.map +0 -1
- package/lib/module/components/GestureComponents.native.js +0 -90
- package/lib/module/components/GestureComponents.native.js.map +0 -1
- package/lib/module/components/GestureHandlerButton.native.js +0 -3
- package/lib/module/components/GestureHandlerButton.native.js.map +0 -1
- package/lib/module/components/GestureHandlerRootView.native.js.map +0 -1
- package/lib/module/getReactNativeVersion.native.js +0 -10
- package/lib/module/getReactNativeVersion.native.js.map +0 -1
- package/lib/module/getShadowNodeFromRef.native.js +0 -37
- package/lib/module/getShadowNodeFromRef.native.js.map +0 -1
- package/lib/module/handlers/PressabilityDebugView.native.js +0 -3
- package/lib/module/handlers/PressabilityDebugView.native.js.map +0 -1
- package/lib/module/handlers/customDirectEventTypes.native.js +0 -3
- package/lib/module/handlers/customDirectEventTypes.native.js.map +0 -1
- package/lib/module/handlers/gestures/GestureDetector.js +0 -654
- package/lib/module/handlers/gestures/GestureDetector.js.map +0 -1
- package/lib/typescript/RNGestureHandlerModule.native.d.ts +0 -2
- package/lib/typescript/RNRenderer.native.d.ts +0 -1
- package/lib/typescript/components/GestureComponents.native.d.ts +0 -22
- package/lib/typescript/components/GestureHandlerButton.native.d.ts +0 -4
- package/lib/typescript/getReactNativeVersion.native.d.ts +0 -4
- package/lib/typescript/getShadowNodeFromRef.native.d.ts +0 -1
- package/lib/typescript/handlers/PressabilityDebugView.native.d.ts +0 -1
- package/lib/typescript/handlers/customDirectEventTypes.native.d.ts +0 -1
- package/src/RNGestureHandlerModule.native.ts +0 -5
- package/src/RNRenderer.native.ts +0 -3
- package/src/components/GestureComponents.native.tsx +0 -148
- package/src/components/GestureHandlerButton.native.tsx +0 -5
- package/src/getReactNativeVersion.native.ts +0 -11
- package/src/getShadowNodeFromRef.native.ts +0 -44
- package/src/handlers/PressabilityDebugView.native.tsx +0 -2
- package/src/handlers/customDirectEventTypes.native.ts +0 -2
- package/src/handlers/gestures/GestureDetector.tsx +0 -894
- /package/lib/typescript/components/{GestureHandlerRootView.native.d.ts → GestureHandlerRootView.web.d.ts} +0 -0
@@ -284,39 +284,26 @@ class GestureHandler {
|
|
284
284
|
|
285
285
|
if (this.pointerType === _PointerType.PointerType.TOUCH) {
|
286
286
|
_GestureHandlerOrchestrator.default.getInstance().cancelMouseAndPenGestures(this);
|
287
|
-
}
|
287
|
+
} // TODO: Bring back touch events along with introducing `handleDown` method that will handle handler specific stuff
|
288
288
|
|
289
|
-
if (this.config.needsPointerData) {
|
290
|
-
this.sendTouchEvent(event);
|
291
|
-
}
|
292
289
|
} // Adding another pointer to existing ones
|
293
290
|
|
294
291
|
|
295
292
|
onPointerAdd(event) {
|
296
|
-
|
297
|
-
this.sendTouchEvent(event);
|
298
|
-
}
|
293
|
+
this.tryToSendTouchEvent(event);
|
299
294
|
}
|
300
295
|
|
301
296
|
onPointerUp(event) {
|
302
|
-
|
303
|
-
this.sendTouchEvent(event);
|
304
|
-
}
|
297
|
+
this.tryToSendTouchEvent(event);
|
305
298
|
} // Removing pointer, when there is more than one pointers
|
306
299
|
|
307
300
|
|
308
301
|
onPointerRemove(event) {
|
309
|
-
|
310
|
-
this.sendTouchEvent(event);
|
311
|
-
}
|
302
|
+
this.tryToSendTouchEvent(event);
|
312
303
|
}
|
313
304
|
|
314
305
|
onPointerMove(event) {
|
315
|
-
this.tryToSendMoveEvent(false);
|
316
|
-
|
317
|
-
if (this.config.needsPointerData) {
|
318
|
-
this.sendTouchEvent(event);
|
319
|
-
}
|
306
|
+
this.tryToSendMoveEvent(false, event);
|
320
307
|
}
|
321
308
|
|
322
309
|
onPointerLeave(event) {
|
@@ -334,32 +321,21 @@ class GestureHandler {
|
|
334
321
|
return;
|
335
322
|
}
|
336
323
|
|
337
|
-
|
338
|
-
this.sendTouchEvent(event);
|
339
|
-
}
|
324
|
+
this.tryToSendTouchEvent(event);
|
340
325
|
}
|
341
326
|
|
342
327
|
onPointerEnter(event) {
|
343
|
-
|
344
|
-
this.sendTouchEvent(event);
|
345
|
-
}
|
328
|
+
this.tryToSendTouchEvent(event);
|
346
329
|
}
|
347
330
|
|
348
331
|
onPointerCancel(event) {
|
349
|
-
|
350
|
-
this.sendTouchEvent(event);
|
351
|
-
}
|
352
|
-
|
332
|
+
this.tryToSendTouchEvent(event);
|
353
333
|
this.cancel();
|
354
334
|
this.reset();
|
355
335
|
}
|
356
336
|
|
357
337
|
onPointerOutOfBounds(event) {
|
358
|
-
this.tryToSendMoveEvent(true);
|
359
|
-
|
360
|
-
if (this.config.needsPointerData) {
|
361
|
-
this.sendTouchEvent(event);
|
362
|
-
}
|
338
|
+
this.tryToSendMoveEvent(true, event);
|
363
339
|
}
|
364
340
|
|
365
341
|
onPointerMoveOver(_event) {// used only by hover gesture handler atm
|
@@ -368,10 +344,22 @@ class GestureHandler {
|
|
368
344
|
onPointerMoveOut(_event) {// used only by hover gesture handler atm
|
369
345
|
}
|
370
346
|
|
371
|
-
tryToSendMoveEvent(out) {
|
372
|
-
if (
|
347
|
+
tryToSendMoveEvent(out, event) {
|
348
|
+
if (out && this.shouldCancelWhenOutside || !this.enabled) {
|
349
|
+
return;
|
350
|
+
}
|
351
|
+
|
352
|
+
if (this.active) {
|
373
353
|
this.sendEvent(this.currentState, this.currentState);
|
374
354
|
}
|
355
|
+
|
356
|
+
this.tryToSendTouchEvent(event);
|
357
|
+
}
|
358
|
+
|
359
|
+
tryToSendTouchEvent(event) {
|
360
|
+
if (this.config.needsPointerData) {
|
361
|
+
this.sendTouchEvent(event);
|
362
|
+
}
|
375
363
|
}
|
376
364
|
|
377
365
|
sendTouchEvent(event) {
|
@@ -397,10 +385,7 @@ class GestureHandler {
|
|
397
385
|
nativeEvent: {
|
398
386
|
numberOfPointers: this.tracker.getTrackedPointersCount(),
|
399
387
|
state: newState,
|
400
|
-
pointerInside: this.delegate.isPointerInBounds(
|
401
|
-
x: this.tracker.getLastAvgX(),
|
402
|
-
y: this.tracker.getLastAvgY()
|
403
|
-
}),
|
388
|
+
pointerInside: this.delegate.isPointerInBounds(this.tracker.getAbsoluteCoordsAverage()),
|
404
389
|
...this.transformNativeEvent(),
|
405
390
|
handlerTag: this.handlerTag,
|
406
391
|
target: this.viewRef,
|
@@ -430,10 +415,10 @@ class GestureHandler {
|
|
430
415
|
const id = this.tracker.getMappedTouchEventId(key);
|
431
416
|
all.push({
|
432
417
|
id: id,
|
433
|
-
x: element.
|
434
|
-
y: element.
|
435
|
-
absoluteX: element.
|
436
|
-
absoluteY: element.
|
418
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
419
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
420
|
+
absoluteX: element.abosoluteCoords.x,
|
421
|
+
absoluteY: element.abosoluteCoords.y
|
437
422
|
});
|
438
423
|
}); // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.
|
439
424
|
// However, if the event is cancel, we want to cancel all pointers to avoid crashes
|
@@ -451,10 +436,10 @@ class GestureHandler {
|
|
451
436
|
const id = this.tracker.getMappedTouchEventId(key);
|
452
437
|
changed.push({
|
453
438
|
id: id,
|
454
|
-
x: element.
|
455
|
-
y: element.
|
456
|
-
absoluteX: element.
|
457
|
-
absoluteY: element.
|
439
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
440
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
441
|
+
absoluteX: element.abosoluteCoords.x,
|
442
|
+
absoluteY: element.abosoluteCoords.y
|
458
443
|
});
|
459
444
|
});
|
460
445
|
}
|
@@ -497,7 +482,8 @@ class GestureHandler {
|
|
497
482
|
eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType,
|
498
483
|
changedTouches: changed,
|
499
484
|
allTouches: all,
|
500
|
-
numberOfTouches: numberOfTouches
|
485
|
+
numberOfTouches: numberOfTouches,
|
486
|
+
pointerType: this.pointerType
|
501
487
|
},
|
502
488
|
timeStamp: Date.now()
|
503
489
|
};
|
@@ -517,17 +503,17 @@ class GestureHandler {
|
|
517
503
|
const id = this.tracker.getMappedTouchEventId(key);
|
518
504
|
all.push({
|
519
505
|
id: id,
|
520
|
-
x: element.
|
521
|
-
y: element.
|
522
|
-
absoluteX: element.
|
523
|
-
absoluteY: element.
|
506
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
507
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
508
|
+
absoluteX: element.abosoluteCoords.x,
|
509
|
+
absoluteY: element.abosoluteCoords.y
|
524
510
|
});
|
525
511
|
changed.push({
|
526
512
|
id: id,
|
527
|
-
x: element.
|
528
|
-
y: element.
|
529
|
-
absoluteX: element.
|
530
|
-
absoluteY: element.
|
513
|
+
x: element.abosoluteCoords.x - rect.pageX,
|
514
|
+
y: element.abosoluteCoords.y - rect.pageY,
|
515
|
+
absoluteX: element.abosoluteCoords.x,
|
516
|
+
absoluteY: element.abosoluteCoords.y
|
531
517
|
});
|
532
518
|
});
|
533
519
|
const cancelEvent = {
|
@@ -537,7 +523,8 @@ class GestureHandler {
|
|
537
523
|
eventType: _interfaces.TouchEventType.CANCELLED,
|
538
524
|
changedTouches: changed,
|
539
525
|
allTouches: all,
|
540
|
-
numberOfTouches: all.length
|
526
|
+
numberOfTouches: all.length,
|
527
|
+
pointerType: this.pointerType
|
541
528
|
},
|
542
529
|
timeStamp: Date.now()
|
543
530
|
};
|
@@ -549,12 +536,13 @@ class GestureHandler {
|
|
549
536
|
|
550
537
|
transformNativeEvent() {
|
551
538
|
// those properties are shared by most handlers and if not this method will be overriden
|
552
|
-
const
|
539
|
+
const lastCoords = this.tracker.getAbsoluteCoordsAverage();
|
540
|
+
const lastRelativeCoords = this.tracker.getRelativeCoordsAverage();
|
553
541
|
return {
|
554
|
-
x:
|
555
|
-
y:
|
556
|
-
absoluteX:
|
557
|
-
absoluteY:
|
542
|
+
x: lastRelativeCoords.x,
|
543
|
+
y: lastRelativeCoords.y,
|
544
|
+
absoluteX: lastCoords.x,
|
545
|
+
absoluteY: lastCoords.y
|
558
546
|
};
|
559
547
|
} //
|
560
548
|
// Handling config
|
@@ -684,8 +672,12 @@ class GestureHandler {
|
|
684
672
|
}
|
685
673
|
|
686
674
|
const rect = this.delegate.measureView();
|
687
|
-
const
|
688
|
-
|
675
|
+
const {
|
676
|
+
x,
|
677
|
+
y
|
678
|
+
} = this.tracker.getLastAbsoluteCoords();
|
679
|
+
const offsetX = x - rect.pageX;
|
680
|
+
const offsetY = y - rect.pageY;
|
689
681
|
|
690
682
|
if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {
|
691
683
|
return true;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","delegate","State","UNDETERMINED","enabled","PointerTracker","PointerType","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","GestureHandlerOrchestrator","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","InteractionManager","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","EventTypes","CANCEL","TouchEventType","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","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"]}
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","delegate","State","UNDETERMINED","enabled","PointerTracker","PointerType","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","GestureHandlerOrchestrator","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","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","tryToSendTouchEvent","tryToSendMoveEvent","shouldCancelWhenOutside","_event","out","sendEvent","sendTouchEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","getAbsoluteCoordsAverage","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","x","abosoluteCoords","pageX","y","pageY","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","lastCoords","lastRelativeCoords","getRelativeCoordsAverage","updateGestureConfig","props","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","getLastAbsoluteCoords","offsetX","offsetY","isButtonInConfig","mouseButton","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 // TODO: Bring back touch events along with introducing `handleDown` method that will handle handler specific stuff\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n protected onPointerUp(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false, event);\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 this.tryToSendTouchEvent(event);\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n this.tryToSendTouchEvent(event);\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true, event);\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, event: AdaptedEvent): void {\n if ((out && this.shouldCancelWhenOutside) || !this.enabled) {\n return;\n }\n\n if (this.active) {\n this.sendEvent(this.currentState, this.currentState);\n }\n\n this.tryToSendTouchEvent(event);\n }\n\n protected tryToSendTouchEvent(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\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 this.tracker.getAbsoluteCoordsAverage()\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.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\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.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\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 pointerType: this.pointerType,\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.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\n });\n\n changed.push({\n id: id,\n x: element.abosoluteCoords.x - rect.pageX,\n y: element.abosoluteCoords.y - rect.pageY,\n absoluteX: element.abosoluteCoords.x,\n absoluteY: element.abosoluteCoords.y,\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 pointerType: this.pointerType,\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 lastCoords = this.tracker.getAbsoluteCoordsAverage();\n const lastRelativeCoords = this.tracker.getRelativeCoordsAverage();\n\n return {\n x: lastRelativeCoords.x,\n y: lastRelativeCoords.y,\n absoluteX: lastCoords.x,\n absoluteY: lastCoords.y,\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 { x, y } = this.tracker.getLastAbsoluteCoords();\n const offsetX: number = x - rect.pageX;\n const offsetY: number = y - 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"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","GestureHandler","defaultMaxDistSq","init","ref","propsRef","config","enableContextMenu","undefined","transformNativeEvent","duration","Date","now","startTime","updateGestureConfig","enabled","props","minDurationMs","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","State","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","x","startY","y","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":";;;;;;;AAAA;;AAGA;;;;;;AAEA,MAAMA,uBAAuB,GAAG,GAAhC;AACA,MAAMC,mBAAmB,GAAG,EAA5B;AACA,MAAMC,cAAc,GAAG,EAAvB;;AAEe,MAAMC,uBAAN,SAAsCC,uBAAtC,CAAqD;AAAA;AAAA;;AAAA,2CAC1CJ,uBAD0C;;AAAA,8CAEvCC,mBAAmB,GAAGC,cAFiB;;AAAA,uCAI9C,KAAKG,gBAJyC;;AAAA,oCAKjD,CALiD;;AAAA,oCAMjD,CANiD;;AAAA,uCAQ9C,CAR8C;;AAAA,0CAS3C,CAT2C;;AAAA;AAAA;;AAa3DC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,QAAI,KAAKC,MAAL,CAAYC,iBAAZ,KAAkCC,SAAtC,EAAiD;AAC/C,WAAKF,MAAL,CAAYC,iBAAZ,GAAgC,KAAhC;AACD;;AAED,UAAMJ,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAESI,EAAAA,oBAAoB,GAAG;AAC/B,WAAO,EACL,GAAG,MAAMA,oBAAN,EADE;AAELC,MAAAA,QAAQ,EAAEC,IAAI,CAACC,GAAL,KAAa,KAAKC;AAFvB,KAAP;AAID;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;;AAEA,QAAI,KAAKV,MAAL,CAAYW,aAAZ,KAA8BT,SAAlC,EAA6C;AAC3C,WAAKS,aAAL,GAAqB,KAAKX,MAAL,CAAYW,aAAjC;AACD;;AAED,QAAI,KAAKX,MAAL,CAAYY,OAAZ,KAAwBV,SAA5B,EAAuC;AACrC,WAAKW,SAAL,GAAiB,KAAKb,MAAL,CAAYY,OAAZ,GAAsB,KAAKZ,MAAL,CAAYY,OAAnD;AACD;AACF;;AAESE,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACA,SAAKH,aAAL,GAAqBpB,uBAArB;AACA,SAAKsB,SAAL,GAAiB,KAAKjB,gBAAtB;AACD;;AAESmB,EAAAA,aAAa,CAACC,SAAD,EAAmBC,SAAnB,EAA2C;AAChEC,IAAAA,YAAY,CAAC,KAAKC,iBAAN,CAAZ;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,QAAI,CAAC,KAAKC,gBAAL,CAAsBD,KAAK,CAACE,MAA5B,CAAL,EAA0C;AACxC;AACD;;AAED,SAAKC,OAAL,CAAaC,YAAb,CAA0BJ,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKK,QAAL,CAAcL,KAAd;AACA,SAAKM,WAAL;AACA,SAAKC,iBAAL,CAAuBP,KAAvB;AACD;;
|
1
|
+
{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","GestureHandler","defaultMaxDistSq","init","ref","propsRef","config","enableContextMenu","undefined","transformNativeEvent","duration","Date","now","startTime","updateGestureConfig","enabled","props","minDurationMs","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","tryBegin","tryActivate","checkDistanceFail","tryToSendTouchEvent","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","State","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","x","startY","y","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n if (this.config.enableContextMenu === undefined) {\n this.config.enableContextMenu = false;\n }\n\n super.init(ref, propsRef);\n }\n\n protected transformNativeEvent() {\n return {\n ...super.transformNativeEvent(),\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["ManualGestureHandler.ts"],"names":["ManualGestureHandler","GestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove"],"mappings":";;;;;;;AACA;;;;AAEe,MAAMA,oBAAN,SAAmCC,uBAAnC,CAAkD;AACxDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;
|
1
|
+
{"version":3,"sources":["ManualGestureHandler.ts"],"names":["ManualGestureHandler","GestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","tryToSendTouchEvent","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove"],"mappings":";;;;;;;AACA;;;;AAEe,MAAMA,oBAAN,SAAmCC,uBAAnC,CAAkD;AACxDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AAEA,SAAKC,mBAAL,CAAyBJ,KAAzB;AACD;;AAESK,EAAAA,YAAY,CAACL,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMK,YAAN,CAAmBL,KAAnB;AACD;;AAESM,EAAAA,aAAa,CAACN,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaM,KAAb,CAAmBP,KAAnB;AACA,UAAMM,aAAN,CAAoBN,KAApB;AACD;;AAESQ,EAAAA,oBAAoB,CAACR,KAAD,EAA4B;AACxD,SAAKC,OAAL,CAAaM,KAAb,CAAmBP,KAAnB;AACA,UAAMQ,oBAAN,CAA2BR,KAA3B;AACD;;AAESS,EAAAA,WAAW,CAACT,KAAD,EAA4B;AAC/C,UAAMS,WAAN,CAAkBT,KAAlB;AACA,SAAKC,OAAL,CAAaS,iBAAb,CAA+BV,KAAK,CAACW,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACZ,KAAD,EAA4B;AACnD,UAAMY,eAAN,CAAsBZ,KAAtB;AACA,SAAKC,OAAL,CAAaS,iBAAb,CAA+BV,KAAK,CAACW,SAArC;AACD;;AAxC8D","sourcesContent":["import { AdaptedEvent, Config } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n}\n"]}
|
@@ -75,6 +75,7 @@ class NativeViewGestureHandler extends _GestureHandler.default {
|
|
75
75
|
this.tracker.addToTracker(event);
|
76
76
|
super.onPointerDown(event);
|
77
77
|
this.newPointerAction();
|
78
|
+
this.tryToSendTouchEvent(event);
|
78
79
|
}
|
79
80
|
|
80
81
|
onPointerAdd(event) {
|
@@ -84,8 +85,9 @@ class NativeViewGestureHandler extends _GestureHandler.default {
|
|
84
85
|
}
|
85
86
|
|
86
87
|
newPointerAction() {
|
87
|
-
|
88
|
-
this.
|
88
|
+
const lastCoords = this.tracker.getAbsoluteCoordsAverage();
|
89
|
+
this.startX = lastCoords.x;
|
90
|
+
this.startY = lastCoords.y;
|
89
91
|
|
90
92
|
if (this.currentState !== _State.State.UNDETERMINED) {
|
91
93
|
return;
|
@@ -100,8 +102,9 @@ class NativeViewGestureHandler extends _GestureHandler.default {
|
|
100
102
|
|
101
103
|
onPointerMove(event) {
|
102
104
|
this.tracker.track(event);
|
103
|
-
const
|
104
|
-
const
|
105
|
+
const lastCoords = this.tracker.getAbsoluteCoordsAverage();
|
106
|
+
const dx = this.startX - lastCoords.x;
|
107
|
+
const dy = this.startY - lastCoords.y;
|
105
108
|
const distSq = dx * dx + dy * dy;
|
106
109
|
|
107
110
|
if (distSq >= this.minDistSq) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["NativeViewGestureHandler","GestureHandler","DEFAULT_TOUCH_SLOP","init","ref","propsRef","setShouldCancelWhenOutside","Platform","OS","view","delegate","getView","style","buttonRole","getAttribute","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","
|
1
|
+
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["NativeViewGestureHandler","GestureHandler","DEFAULT_TOUCH_SLOP","init","ref","propsRef","setShouldCancelWhenOutside","Platform","OS","view","delegate","getView","style","buttonRole","getAttribute","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","tryToSendTouchEvent","onPointerAdd","lastCoords","getAbsoluteCoordsAverage","startX","x","startY","y","currentState","State","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 this.tryToSendTouchEvent(event);\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 const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.startX = lastCoords.x;\n this.startY = lastCoords.y;\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 lastCoords = this.tracker.getAbsoluteCoordsAverage();\n const dx = this.startX - lastCoords.x;\n const dy = this.startY - lastCoords.y;\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"]}
|