react-native-gesture-handler 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/RNGestureHandler.podspec +17 -5
- package/android/build.gradle +71 -15
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +2 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +30 -9
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +5 -2
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +2 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +2 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +3 -2
- package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +0 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +7 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +1 -1
- package/android/src/main/jni/CMakeLists.txt +59 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +1 -1
- package/ios/RNGestureHandlerManager.mm +0 -5
- package/ios/RNGestureHandlerRootViewComponentView.mm +1 -1
- package/lib/commonjs/EnableExperimentalWebImplementation.js +24 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js +87 -30
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +87 -25
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNRenderer.js +16 -0
- package/lib/commonjs/RNRenderer.js.map +1 -0
- package/lib/commonjs/RNRenderer.web.js +11 -0
- package/lib/commonjs/RNRenderer.web.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +3 -1
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js +42 -9
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +41 -4
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +7 -2
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +3 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +8 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +67 -12
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +7 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/index.js +14 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/web/constants.js +3 -51
- package/lib/commonjs/web/constants.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +169 -0
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -0
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +167 -0
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +154 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/GestureHandler.js +538 -0
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +147 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +116 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/PanGestureHandler.js +451 -0
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +171 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +187 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/TapGestureHandler.js +296 -0
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -0
- package/lib/commonjs/web/interfaces.js +34 -0
- package/lib/commonjs/web/interfaces.js.map +1 -0
- package/lib/commonjs/web/tools/EventManager.js +169 -0
- package/lib/commonjs/web/tools/EventManager.js.map +1 -0
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +283 -0
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -0
- package/lib/commonjs/web/tools/InteractionManager.js +102 -0
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -0
- package/lib/commonjs/web/tools/NodeManager.js +48 -0
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -0
- package/lib/commonjs/web/tools/PointerTracker.js +132 -0
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/Errors.js +0 -0
- package/lib/commonjs/{web → web_hammer}/Errors.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/GestureHandler.js +83 -42
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
- package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/NodeManager.js +0 -0
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js.map +0 -0
- package/lib/commonjs/web_hammer/constants.js +64 -0
- package/lib/commonjs/web_hammer/constants.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/utils.js +0 -0
- package/lib/commonjs/{web → web_hammer}/utils.js.map +0 -0
- package/lib/module/EnableExperimentalWebImplementation.js +15 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -0
- package/lib/module/RNGestureHandlerModule.macos.js +74 -29
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +73 -24
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNRenderer.js +4 -0
- package/lib/module/RNRenderer.js.map +1 -0
- package/lib/module/RNRenderer.web.js +4 -0
- package/lib/module/RNRenderer.web.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +3 -1
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js +43 -9
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureComponents.js +39 -4
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +6 -2
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/components/Swipeable.js +3 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +2 -1
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/handlers/createHandler.js +9 -2
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +64 -11
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +7 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/web/constants.js +1 -36
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +159 -0
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -0
- package/lib/module/web/detectors/ScaleGestureDetector.js +156 -0
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js +139 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/GestureHandler.js +521 -0
- package/lib/module/web/handlers/GestureHandler.js.map +1 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js +133 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +103 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/PanGestureHandler.js +434 -0
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/PinchGestureHandler.js +155 -0
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/RotationGestureHandler.js +171 -0
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/TapGestureHandler.js +281 -0
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -0
- package/lib/module/web/interfaces.js +26 -0
- package/lib/module/web/interfaces.js.map +1 -0
- package/lib/module/web/tools/EventManager.js +160 -0
- package/lib/module/web/tools/EventManager.js.map +1 -0
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +270 -0
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -0
- package/lib/module/web/tools/InteractionManager.js +93 -0
- package/lib/module/web/tools/InteractionManager.js.map +1 -0
- package/lib/module/web/tools/NodeManager.js +39 -0
- package/lib/module/web/tools/NodeManager.js.map +1 -0
- package/lib/module/web/tools/PointerTracker.js +122 -0
- package/lib/module/web/tools/PointerTracker.js.map +1 -0
- package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/DraggingGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/Errors.js +0 -0
- package/lib/module/{web → web_hammer}/Errors.js.map +0 -0
- package/lib/module/{web → web_hammer}/FlingGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/GestureHandler.js +83 -42
- package/lib/module/web_hammer/GestureHandler.js.map +1 -0
- package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/LongPressGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
- package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -0
- package/lib/module/{web → web_hammer}/NodeManager.js +0 -0
- package/lib/module/web_hammer/NodeManager.js.map +1 -0
- package/lib/module/{web → web_hammer}/PanGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/PanGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/PinchGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/PressGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/PressGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/RotationGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/TapGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/TapGestureHandler.js.map +0 -0
- package/lib/module/web_hammer/constants.js +43 -0
- package/lib/module/web_hammer/constants.js.map +1 -0
- package/lib/module/{web → web_hammer}/utils.js +0 -0
- package/lib/module/{web → web_hammer}/utils.js.map +0 -0
- package/lib/typescript/EnableExperimentalWebImplementation.d.ts +2 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +28 -18
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +29 -18
- package/lib/typescript/RNRenderer.d.ts +1 -0
- package/lib/typescript/RNRenderer.web.d.ts +3 -0
- package/lib/typescript/components/DrawerLayout.d.ts +1 -1
- package/lib/typescript/components/GestureButtons.d.ts +16 -0
- package/lib/typescript/components/GestureComponents.d.ts +7 -3
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
- package/lib/typescript/components/Swipeable.d.ts +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/web/constants.d.ts +1 -33
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +30 -0
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +30 -0
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +31 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +84 -0
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +33 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +16 -0
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +68 -0
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +30 -0
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +30 -0
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +49 -0
- package/lib/typescript/web/interfaces.d.ts +97 -0
- package/lib/typescript/web/tools/EventManager.d.ts +28 -0
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +28 -0
- package/lib/typescript/web/tools/InteractionManager.d.ts +13 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +11 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +28 -0
- package/lib/typescript/{web → web_hammer}/DiscreteGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/DraggingGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/Errors.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/GestureHandler.d.ts +6 -0
- package/lib/typescript/{web → web_hammer}/IndiscreteGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/NodeManager.d.ts +8 -0
- package/lib/typescript/{web → web_hammer}/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/PinchGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/PressGestureHandler.d.ts +2 -0
- package/lib/typescript/{web → web_hammer}/RotationGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/constants.d.ts +39 -0
- package/lib/typescript/{web → web_hammer}/utils.d.ts +0 -0
- package/package.json +1 -1
- package/src/EnableExperimentalWebImplementation.ts +18 -0
- package/src/RNGestureHandlerModule.macos.ts +81 -29
- package/src/RNGestureHandlerModule.web.ts +89 -26
- package/src/RNRenderer.ts +3 -0
- package/src/RNRenderer.web.ts +3 -0
- package/src/components/DrawerLayout.tsx +3 -4
- package/src/components/GestureButtons.tsx +57 -0
- package/src/components/GestureComponents.tsx +66 -6
- package/src/components/GestureComponents.web.tsx +5 -0
- package/src/components/Swipeable.tsx +3 -1
- package/src/components/touchables/GenericTouchable.tsx +1 -0
- package/src/handlers/createHandler.tsx +13 -2
- package/src/handlers/gestures/GestureDetector.tsx +78 -12
- package/src/handlers/gestures/reanimatedWrapper.ts +7 -0
- package/src/index.ts +3 -0
- package/src/web/constants.ts +1 -41
- package/src/web/detectors/RotationGestureDetector.ts +199 -0
- package/src/web/detectors/ScaleGestureDetector.ts +208 -0
- package/src/web/handlers/FlingGestureHandler.ts +146 -0
- package/src/web/handlers/GestureHandler.ts +572 -0
- package/src/web/handlers/LongPressGestureHandler.ts +122 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +109 -0
- package/src/web/handlers/PanGestureHandler.ts +488 -0
- package/src/web/handlers/PinchGestureHandler.ts +162 -0
- package/src/web/handlers/RotationGestureHandler.ts +181 -0
- package/src/web/handlers/TapGestureHandler.ts +275 -0
- package/src/web/interfaces.ts +114 -0
- package/src/web/tools/EventManager.ts +186 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +329 -0
- package/src/web/tools/InteractionManager.ts +108 -0
- package/src/web/tools/NodeManager.ts +43 -0
- package/src/web/tools/PointerTracker.ts +130 -0
- package/src/{web → web_hammer}/DiscreteGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/DraggingGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/Errors.ts +0 -0
- package/src/{web → web_hammer}/FlingGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/GestureHandler.ts +102 -55
- package/src/{web → web_hammer}/IndiscreteGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/LongPressGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/NativeViewGestureHandler.ts +4 -0
- package/src/{web → web_hammer}/NodeManager.ts +6 -3
- package/src/{web → web_hammer}/PanGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/PinchGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/PressGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/RotationGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/TapGestureHandler.ts +0 -0
- package/src/web_hammer/constants.ts +48 -0
- package/src/{web → web_hammer}/utils.ts +0 -0
- package/android/src/main/jni/Android.mk +0 -52
- package/android/src/main/jni/OnLoad.cpp +0 -9
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +0 -71
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +0 -34
- package/lib/commonjs/web/GestureHandler.js.map +0 -1
- package/lib/commonjs/web/NativeViewGestureHandler.js.map +0 -1
- package/lib/commonjs/web/NodeManager.js.map +0 -1
- package/lib/module/web/GestureHandler.js.map +0 -1
- package/lib/module/web/NativeViewGestureHandler.js.map +0 -1
- package/lib/module/web/NodeManager.js.map +0 -1
- package/lib/typescript/web/NodeManager.d.ts +0 -8
|
@@ -21,6 +21,7 @@ export declare type Config = Partial<{
|
|
|
21
21
|
activeOffsetYStart: number;
|
|
22
22
|
activeOffsetYEnd: number;
|
|
23
23
|
waitFor: any[] | null;
|
|
24
|
+
simultaneousHandlers: any[] | null;
|
|
24
25
|
}>;
|
|
25
26
|
declare abstract class GestureHandler {
|
|
26
27
|
handlerTag: any;
|
|
@@ -43,6 +44,7 @@ declare abstract class GestureHandler {
|
|
|
43
44
|
private ref;
|
|
44
45
|
abstract get name(): string;
|
|
45
46
|
get id(): string;
|
|
47
|
+
get isNative(): boolean;
|
|
46
48
|
get isDiscrete(): boolean;
|
|
47
49
|
get shouldEnableGestureOnSetup(): boolean;
|
|
48
50
|
constructor();
|
|
@@ -65,6 +67,7 @@ declare abstract class GestureHandler {
|
|
|
65
67
|
activeOffsetYStart: number;
|
|
66
68
|
activeOffsetYEnd: number;
|
|
67
69
|
waitFor: any[] | null;
|
|
70
|
+
simultaneousHandlers: any[] | null;
|
|
68
71
|
}>;
|
|
69
72
|
onWaitingEnded(_gesture: this): void;
|
|
70
73
|
removePendingGesture(id: string): void;
|
|
@@ -98,6 +101,7 @@ declare abstract class GestureHandler {
|
|
|
98
101
|
activeOffsetYStart: number;
|
|
99
102
|
activeOffsetYEnd: number;
|
|
100
103
|
waitFor: any[] | null;
|
|
104
|
+
simultaneousHandlers: any[] | null;
|
|
101
105
|
}>;
|
|
102
106
|
destroy: () => void;
|
|
103
107
|
isPointInView: ({ x, y }: {
|
|
@@ -124,6 +128,7 @@ declare abstract class GestureHandler {
|
|
|
124
128
|
forceInvalidate(event: HammerInputExt): void;
|
|
125
129
|
cancelEvent(event: HammerInputExt): void;
|
|
126
130
|
onRawEvent({ isFirst }: HammerInputExt): void;
|
|
131
|
+
shouldUseTouchEvents(config: Config): boolean;
|
|
127
132
|
setView(ref: Parameters<typeof findNodeHandle>['0'], propsRef: any): void;
|
|
128
133
|
setupEvents(): void;
|
|
129
134
|
onStart({ deltaX, deltaY, rotation }: HammerInputExt): void;
|
|
@@ -135,5 +140,6 @@ declare abstract class GestureHandler {
|
|
|
135
140
|
};
|
|
136
141
|
sync: () => void;
|
|
137
142
|
simulateCancelEvent(_inputData: any): void;
|
|
143
|
+
ensureConfig(config: Config): Required<Config>;
|
|
138
144
|
}
|
|
139
145
|
export default GestureHandler;
|
|
@@ -27,6 +27,7 @@ declare abstract class IndiscreteGestureHandler extends GestureHandler {
|
|
|
27
27
|
activeOffsetYStart: number;
|
|
28
28
|
activeOffsetYEnd: number;
|
|
29
29
|
waitFor: any[] | null;
|
|
30
|
+
simultaneousHandlers: any[] | null;
|
|
30
31
|
}>;
|
|
31
32
|
isGestureEnabledForEvent({ minPointers, maxPointers }: any, _recognizer: any, { maxPointers: pointerLength }: any): {
|
|
32
33
|
failed: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HammerInputExt } from './GestureHandler';
|
|
2
2
|
import PressGestureHandler from './PressGestureHandler';
|
|
3
3
|
declare class NativeViewGestureHandler extends PressGestureHandler {
|
|
4
|
+
get isNative(): boolean;
|
|
4
5
|
onRawEvent(ev: HammerInputExt): void;
|
|
5
6
|
}
|
|
6
7
|
export default NativeViewGestureHandler;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValueOf } from '../typeUtils';
|
|
2
|
+
import { HammerGestures } from '../RNGestureHandlerModule.web';
|
|
3
|
+
export declare function getHandler(tag: number): import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./TapGestureHandler").default | import("./LongPressGestureHandler").default | import("./PinchGestureHandler").default | import("./RotationGestureHandler").default | import("./FlingGestureHandler").default;
|
|
4
|
+
export declare function createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof HammerGestures>>): void;
|
|
5
|
+
export declare function dropGestureHandler(handlerTag: number): void;
|
|
6
|
+
export declare function getNodes(): {
|
|
7
|
+
[x: number]: import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./TapGestureHandler").default | import("./LongPressGestureHandler").default | import("./PinchGestureHandler").default | import("./RotationGestureHandler").default | import("./FlingGestureHandler").default;
|
|
8
|
+
};
|
|
@@ -30,6 +30,7 @@ declare class PanGestureHandler extends DraggingGestureHandler {
|
|
|
30
30
|
activeOffsetYStart: number;
|
|
31
31
|
activeOffsetYEnd: number;
|
|
32
32
|
waitFor: any[] | null;
|
|
33
|
+
simultaneousHandlers: any[] | null;
|
|
33
34
|
}>;
|
|
34
35
|
shouldFailUnderCustomCriteria({ deltaX, deltaY }: HammerInputExt, criteria: any): boolean;
|
|
35
36
|
shouldActivateUnderCustomCriteria({ deltaX, deltaY, velocity }: any, criteria: any): boolean;
|
|
File without changes
|
|
@@ -34,6 +34,7 @@ declare class PressGestureHandler extends DiscreteGestureHandler {
|
|
|
34
34
|
activeOffsetYStart: number;
|
|
35
35
|
activeOffsetYEnd: number;
|
|
36
36
|
waitFor: any[] | null;
|
|
37
|
+
simultaneousHandlers: any[] | null;
|
|
37
38
|
}> | {
|
|
38
39
|
shouldCancelWhenOutside: boolean;
|
|
39
40
|
maxDistSq: number;
|
|
@@ -76,6 +77,7 @@ declare class PressGestureHandler extends DiscreteGestureHandler {
|
|
|
76
77
|
activeOffsetYStart: number;
|
|
77
78
|
activeOffsetYEnd: number;
|
|
78
79
|
waitFor: any[] | null;
|
|
80
|
+
simultaneousHandlers: any[] | null;
|
|
79
81
|
}>;
|
|
80
82
|
}
|
|
81
83
|
export default PressGestureHandler;
|
|
File without changes
|
|
@@ -49,6 +49,7 @@ declare class TapGestureHandler extends DiscreteGestureHandler {
|
|
|
49
49
|
activeOffsetYStart: number;
|
|
50
50
|
activeOffsetYEnd: number;
|
|
51
51
|
waitFor: any[] | null;
|
|
52
|
+
simultaneousHandlers: any[] | null;
|
|
52
53
|
}>;
|
|
53
54
|
onGestureEnded(...props: any): void;
|
|
54
55
|
onWaitingEnded(_gesture: any): void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const CONTENT_TOUCHES_DELAY = 240;
|
|
2
|
+
export declare const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;
|
|
3
|
+
export declare const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;
|
|
4
|
+
export declare const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;
|
|
5
|
+
export declare const DEG_RAD: number;
|
|
6
|
+
export declare const EventMap: {
|
|
7
|
+
readonly 1: 2;
|
|
8
|
+
readonly 2: 4;
|
|
9
|
+
readonly 4: 5;
|
|
10
|
+
readonly 8: 1;
|
|
11
|
+
};
|
|
12
|
+
export declare const Direction: {
|
|
13
|
+
RIGHT: number;
|
|
14
|
+
LEFT: number;
|
|
15
|
+
UP: number;
|
|
16
|
+
DOWN: number;
|
|
17
|
+
};
|
|
18
|
+
export declare const DirectionMap: {
|
|
19
|
+
4: number;
|
|
20
|
+
2: number;
|
|
21
|
+
8: number;
|
|
22
|
+
16: number;
|
|
23
|
+
};
|
|
24
|
+
export declare const HammerInputNames: {
|
|
25
|
+
1: string;
|
|
26
|
+
2: string;
|
|
27
|
+
4: string;
|
|
28
|
+
8: string;
|
|
29
|
+
};
|
|
30
|
+
export declare const HammerDirectionNames: {
|
|
31
|
+
6: string;
|
|
32
|
+
8: string;
|
|
33
|
+
16: string;
|
|
34
|
+
24: string;
|
|
35
|
+
1: string;
|
|
36
|
+
30: string;
|
|
37
|
+
4: string;
|
|
38
|
+
2: string;
|
|
39
|
+
};
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
let EXPERIMENTAL_WEB_IMPLEMENTATION = false;
|
|
2
|
+
let getWasCalled = false;
|
|
3
|
+
|
|
4
|
+
export function enableExperimentalWebImplementation(shouldEnable = true): void {
|
|
5
|
+
if (getWasCalled) {
|
|
6
|
+
console.error(
|
|
7
|
+
'Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'
|
|
8
|
+
);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function isExperimentalWebImplementationEnabled(): boolean {
|
|
16
|
+
getWasCalled = true;
|
|
17
|
+
return EXPERIMENTAL_WEB_IMPLEMENTATION;
|
|
18
|
+
}
|
|
@@ -1,61 +1,113 @@
|
|
|
1
1
|
import { ActionType } from './ActionType';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import PanGestureHandler from './web/PanGestureHandler';
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
2
|
+
import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';
|
|
3
|
+
|
|
4
|
+
//GestureHandlers
|
|
5
|
+
import InteractionManager from './web/tools/InteractionManager';
|
|
6
|
+
import NodeManager from './web/tools/NodeManager';
|
|
7
|
+
import PanGestureHandler from './web/handlers/PanGestureHandler';
|
|
8
|
+
import TapGestureHandler from './web/handlers/TapGestureHandler';
|
|
9
|
+
import LongPressGestureHandler from './web/handlers/LongPressGestureHandler';
|
|
10
|
+
import PinchGestureHandler from './web/handlers/PinchGestureHandler';
|
|
11
|
+
import RotationGestureHandler from './web/handlers/RotationGestureHandler';
|
|
12
|
+
import FlingGestureHandler from './web/handlers/FlingGestureHandler';
|
|
13
|
+
import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';
|
|
14
|
+
|
|
15
|
+
//Hammer Handlers
|
|
16
|
+
import * as HammerNodeManager from './web_hammer/NodeManager';
|
|
17
|
+
import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';
|
|
18
|
+
import HammerPanGestureHandler from './web_hammer/PanGestureHandler';
|
|
19
|
+
import HammerTapGestureHandler from './web_hammer/TapGestureHandler';
|
|
20
|
+
import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';
|
|
21
|
+
import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
|
|
22
|
+
import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
|
|
23
|
+
import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
|
|
24
|
+
import { Config } from './web_hammer/GestureHandler';
|
|
11
25
|
|
|
12
26
|
export const Gestures = {
|
|
27
|
+
NativeViewGestureHandler,
|
|
13
28
|
PanGestureHandler,
|
|
14
|
-
RotationGestureHandler,
|
|
15
|
-
PinchGestureHandler,
|
|
16
29
|
TapGestureHandler,
|
|
17
|
-
NativeViewGestureHandler,
|
|
18
30
|
LongPressGestureHandler,
|
|
31
|
+
PinchGestureHandler,
|
|
32
|
+
RotationGestureHandler,
|
|
19
33
|
FlingGestureHandler,
|
|
20
|
-
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const HammerGestures = {
|
|
37
|
+
NativeViewGestureHandler: HammerNativeViewGestureHandler,
|
|
38
|
+
PanGestureHandler: HammerPanGestureHandler,
|
|
39
|
+
TapGestureHandler: HammerTapGestureHandler,
|
|
40
|
+
LongPressGestureHandler: HammerLongPressGestureHandler,
|
|
41
|
+
PinchGestureHandler: HammerPinchGestureHandler,
|
|
42
|
+
RotationGestureHandler: HammerRotationGestureHandler,
|
|
43
|
+
FlingGestureHandler: HammerFlingGestureHandler,
|
|
21
44
|
};
|
|
22
45
|
|
|
23
46
|
export default {
|
|
24
|
-
Direction,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
handleClearJSResponder() {
|
|
47
|
+
// Direction,
|
|
48
|
+
handleSetJSResponder(tag: number, blockNativeResponder: boolean) {
|
|
49
|
+
console.warn('handleSetJSResponder: ', tag, blockNativeResponder);
|
|
50
|
+
},
|
|
51
|
+
handleClearJSResponder() {
|
|
52
|
+
console.warn('handleClearJSResponder: ');
|
|
53
|
+
},
|
|
29
54
|
createGestureHandler<T>(
|
|
30
55
|
handlerName: keyof typeof Gestures,
|
|
31
56
|
handlerTag: number,
|
|
32
57
|
config: T
|
|
33
58
|
) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
59
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
60
|
+
if (!(handlerName in Gestures)) return;
|
|
61
|
+
|
|
62
|
+
const interactionManager = new InteractionManager();
|
|
63
|
+
|
|
64
|
+
const GestureClass = Gestures[handlerName];
|
|
65
|
+
NodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
66
|
+
interactionManager.configureInteractions(
|
|
67
|
+
NodeManager.getHandler(handlerTag),
|
|
68
|
+
(config as unknown) as Config
|
|
38
69
|
);
|
|
39
|
-
|
|
40
|
-
|
|
70
|
+
} else {
|
|
71
|
+
if (!(handlerName in HammerGestures)) return;
|
|
72
|
+
|
|
73
|
+
const GestureClass = HammerGestures[handlerName];
|
|
74
|
+
HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
75
|
+
}
|
|
76
|
+
|
|
41
77
|
this.updateGestureHandler(handlerTag, config);
|
|
42
78
|
},
|
|
43
79
|
attachGestureHandler(
|
|
44
80
|
handlerTag: number,
|
|
45
|
-
newView: number,
|
|
81
|
+
newView: number, //ref
|
|
46
82
|
_actionType: ActionType,
|
|
47
83
|
propsRef: React.RefObject<unknown>
|
|
48
84
|
) {
|
|
49
|
-
|
|
85
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
86
|
+
NodeManager.getHandler(handlerTag).init(newView, propsRef);
|
|
87
|
+
} else {
|
|
88
|
+
HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);
|
|
89
|
+
}
|
|
50
90
|
},
|
|
51
91
|
updateGestureHandler(handlerTag: number, newConfig: any) {
|
|
52
|
-
|
|
92
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
93
|
+
NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
94
|
+
} else {
|
|
95
|
+
HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
96
|
+
}
|
|
53
97
|
},
|
|
54
98
|
getGestureHandlerNode(handlerTag: number) {
|
|
55
|
-
|
|
99
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
100
|
+
return NodeManager.getHandler(handlerTag);
|
|
101
|
+
} else {
|
|
102
|
+
return HammerNodeManager.getHandler(handlerTag);
|
|
103
|
+
}
|
|
56
104
|
},
|
|
57
105
|
dropGestureHandler(handlerTag: number) {
|
|
58
|
-
|
|
106
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
107
|
+
NodeManager.dropGestureHandler(handlerTag);
|
|
108
|
+
} else {
|
|
109
|
+
HammerNodeManager.dropGestureHandler(handlerTag);
|
|
110
|
+
}
|
|
59
111
|
},
|
|
60
112
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
61
113
|
flushOperations() {},
|
|
@@ -1,27 +1,52 @@
|
|
|
1
1
|
import { ActionType } from './ActionType';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
2
|
+
|
|
3
|
+
//GestureHandlers
|
|
4
|
+
import InteractionManager from './web/tools/InteractionManager';
|
|
5
|
+
import NodeManager from './web/tools/NodeManager';
|
|
6
|
+
import PanGestureHandler from './web/handlers/PanGestureHandler';
|
|
7
|
+
import TapGestureHandler from './web/handlers/TapGestureHandler';
|
|
8
|
+
import LongPressGestureHandler from './web/handlers/LongPressGestureHandler';
|
|
9
|
+
import PinchGestureHandler from './web/handlers/PinchGestureHandler';
|
|
10
|
+
import RotationGestureHandler from './web/handlers/RotationGestureHandler';
|
|
11
|
+
import FlingGestureHandler from './web/handlers/FlingGestureHandler';
|
|
12
|
+
import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';
|
|
13
|
+
|
|
14
|
+
//Hammer Handlers
|
|
15
|
+
import * as HammerNodeManager from './web_hammer/NodeManager';
|
|
16
|
+
import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';
|
|
17
|
+
import HammerPanGestureHandler from './web_hammer/PanGestureHandler';
|
|
18
|
+
import HammerTapGestureHandler from './web_hammer/TapGestureHandler';
|
|
19
|
+
import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';
|
|
20
|
+
import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
|
|
21
|
+
import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
|
|
22
|
+
import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
|
|
23
|
+
import { Config } from './web/interfaces';
|
|
24
|
+
import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';
|
|
11
25
|
|
|
12
26
|
export const Gestures = {
|
|
27
|
+
NativeViewGestureHandler,
|
|
13
28
|
PanGestureHandler,
|
|
14
|
-
RotationGestureHandler,
|
|
15
|
-
PinchGestureHandler,
|
|
16
29
|
TapGestureHandler,
|
|
17
|
-
NativeViewGestureHandler,
|
|
18
30
|
LongPressGestureHandler,
|
|
31
|
+
PinchGestureHandler,
|
|
32
|
+
RotationGestureHandler,
|
|
19
33
|
FlingGestureHandler,
|
|
20
|
-
// ForceTouchGestureHandler,
|
|
21
34
|
};
|
|
22
35
|
|
|
36
|
+
export const HammerGestures = {
|
|
37
|
+
NativeViewGestureHandler: HammerNativeViewGestureHandler,
|
|
38
|
+
PanGestureHandler: HammerPanGestureHandler,
|
|
39
|
+
TapGestureHandler: HammerTapGestureHandler,
|
|
40
|
+
LongPressGestureHandler: HammerLongPressGestureHandler,
|
|
41
|
+
PinchGestureHandler: HammerPinchGestureHandler,
|
|
42
|
+
RotationGestureHandler: HammerRotationGestureHandler,
|
|
43
|
+
FlingGestureHandler: HammerFlingGestureHandler,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const interactionManager = new InteractionManager();
|
|
47
|
+
|
|
23
48
|
export default {
|
|
24
|
-
Direction,
|
|
49
|
+
// Direction,
|
|
25
50
|
handleSetJSResponder(tag: number, blockNativeResponder: boolean) {
|
|
26
51
|
console.warn('handleSetJSResponder: ', tag, blockNativeResponder);
|
|
27
52
|
},
|
|
@@ -33,14 +58,31 @@ export default {
|
|
|
33
58
|
handlerTag: number,
|
|
34
59
|
config: T
|
|
35
60
|
) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
61
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
62
|
+
if (!(handlerName in Gestures)) {
|
|
63
|
+
throw new Error(
|
|
64
|
+
`react-native-gesture-handler: ${handlerName} is not supported on web.`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const GestureClass = Gestures[handlerName];
|
|
69
|
+
NodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
70
|
+
interactionManager.configureInteractions(
|
|
71
|
+
NodeManager.getHandler(handlerTag),
|
|
72
|
+
(config as unknown) as Config
|
|
40
73
|
);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
74
|
+
} else {
|
|
75
|
+
if (!(handlerName in HammerGestures)) {
|
|
76
|
+
throw new Error(
|
|
77
|
+
`react-native-gesture-handler: ${handlerName} is not supported on web.`
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const GestureClass = HammerGestures[handlerName];
|
|
82
|
+
HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
this.updateGestureHandler(handlerTag, (config as unknown) as Config);
|
|
44
86
|
},
|
|
45
87
|
attachGestureHandler(
|
|
46
88
|
handlerTag: number,
|
|
@@ -48,16 +90,37 @@ export default {
|
|
|
48
90
|
_actionType: ActionType,
|
|
49
91
|
propsRef: React.RefObject<unknown>
|
|
50
92
|
) {
|
|
51
|
-
|
|
93
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
94
|
+
NodeManager.getHandler(handlerTag).init(newView, propsRef);
|
|
95
|
+
} else {
|
|
96
|
+
HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);
|
|
97
|
+
}
|
|
52
98
|
},
|
|
53
|
-
updateGestureHandler(handlerTag: number, newConfig:
|
|
54
|
-
|
|
99
|
+
updateGestureHandler(handlerTag: number, newConfig: Config) {
|
|
100
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
101
|
+
NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
102
|
+
|
|
103
|
+
interactionManager.configureInteractions(
|
|
104
|
+
NodeManager.getHandler(handlerTag),
|
|
105
|
+
newConfig
|
|
106
|
+
);
|
|
107
|
+
} else {
|
|
108
|
+
HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
109
|
+
}
|
|
55
110
|
},
|
|
56
111
|
getGestureHandlerNode(handlerTag: number) {
|
|
57
|
-
|
|
112
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
113
|
+
return NodeManager.getHandler(handlerTag);
|
|
114
|
+
} else {
|
|
115
|
+
return HammerNodeManager.getHandler(handlerTag);
|
|
116
|
+
}
|
|
58
117
|
},
|
|
59
118
|
dropGestureHandler(handlerTag: number) {
|
|
60
|
-
|
|
119
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
120
|
+
NodeManager.dropGestureHandler(handlerTag);
|
|
121
|
+
} else {
|
|
122
|
+
HammerNodeManager.dropGestureHandler(handlerTag);
|
|
123
|
+
}
|
|
61
124
|
},
|
|
62
125
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
63
126
|
flushOperations() {},
|
|
@@ -203,10 +203,7 @@ export default class DrawerLayout extends Component<
|
|
|
203
203
|
this.updateAnimatedEvent(props, this.state);
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
props: DrawerLayoutProps,
|
|
208
|
-
state: DrawerLayoutState
|
|
209
|
-
) {
|
|
206
|
+
shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState) {
|
|
210
207
|
if (
|
|
211
208
|
this.props.drawerPosition !== props.drawerPosition ||
|
|
212
209
|
this.props.drawerWidth !== props.drawerWidth ||
|
|
@@ -215,6 +212,8 @@ export default class DrawerLayout extends Component<
|
|
|
215
212
|
) {
|
|
216
213
|
this.updateAnimatedEvent(props, state);
|
|
217
214
|
}
|
|
215
|
+
|
|
216
|
+
return true;
|
|
218
217
|
}
|
|
219
218
|
|
|
220
219
|
private openValue?: Animated.AnimatedInterpolation;
|
|
@@ -72,6 +72,12 @@ export interface BaseButtonProps extends RawButtonProps {
|
|
|
72
72
|
*/
|
|
73
73
|
onPress?: (pointerInside: boolean) => void;
|
|
74
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Called when the button gets pressed and is held for `delayLongPress`
|
|
77
|
+
* milliseconds.
|
|
78
|
+
*/
|
|
79
|
+
onLongPress?: () => void;
|
|
80
|
+
|
|
75
81
|
/**
|
|
76
82
|
* Called when button changes from inactive to active and vice versa. It
|
|
77
83
|
* passes active state as a boolean variable as a first parameter for that
|
|
@@ -80,6 +86,12 @@ export interface BaseButtonProps extends RawButtonProps {
|
|
|
80
86
|
onActiveStateChange?: (active: boolean) => void;
|
|
81
87
|
style?: StyleProp<ViewStyle>;
|
|
82
88
|
testID?: string;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Delay, in milliseconds, after which the `onLongPress` callback gets called.
|
|
92
|
+
* Defaults to 600.
|
|
93
|
+
*/
|
|
94
|
+
delayLongPress?: number;
|
|
83
95
|
}
|
|
84
96
|
|
|
85
97
|
export interface RectButtonProps extends BaseButtonProps {
|
|
@@ -111,11 +123,18 @@ export const RawButton = createNativeWrapper(GestureHandlerButton, {
|
|
|
111
123
|
});
|
|
112
124
|
|
|
113
125
|
export class BaseButton extends React.Component<BaseButtonProps> {
|
|
126
|
+
static defaultProps = {
|
|
127
|
+
delayLongPress: 600,
|
|
128
|
+
};
|
|
129
|
+
|
|
114
130
|
private lastActive: boolean;
|
|
131
|
+
private longPressTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
132
|
+
private longPressDetected: boolean;
|
|
115
133
|
|
|
116
134
|
constructor(props: BaseButtonProps) {
|
|
117
135
|
super(props);
|
|
118
136
|
this.lastActive = false;
|
|
137
|
+
this.longPressDetected = false;
|
|
119
138
|
}
|
|
120
139
|
|
|
121
140
|
private handleEvent = ({
|
|
@@ -129,6 +148,7 @@ export class BaseButton extends React.Component<BaseButtonProps> {
|
|
|
129
148
|
}
|
|
130
149
|
|
|
131
150
|
if (
|
|
151
|
+
!this.longPressDetected &&
|
|
132
152
|
oldState === State.ACTIVE &&
|
|
133
153
|
state !== State.CANCELLED &&
|
|
134
154
|
this.lastActive &&
|
|
@@ -137,9 +157,46 @@ export class BaseButton extends React.Component<BaseButtonProps> {
|
|
|
137
157
|
this.props.onPress(active);
|
|
138
158
|
}
|
|
139
159
|
|
|
160
|
+
if (
|
|
161
|
+
!this.lastActive &&
|
|
162
|
+
// NativeViewGestureHandler sends different events based on platform
|
|
163
|
+
state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&
|
|
164
|
+
pointerInside
|
|
165
|
+
) {
|
|
166
|
+
this.longPressDetected = false;
|
|
167
|
+
if (this.props.onLongPress) {
|
|
168
|
+
this.longPressTimeout = setTimeout(
|
|
169
|
+
this.onLongPress,
|
|
170
|
+
this.props.delayLongPress
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
} else if (
|
|
174
|
+
// cancel longpress timeout if it's set and the finger moved out of the view
|
|
175
|
+
state === State.ACTIVE &&
|
|
176
|
+
!pointerInside &&
|
|
177
|
+
this.longPressTimeout !== undefined
|
|
178
|
+
) {
|
|
179
|
+
clearTimeout(this.longPressTimeout);
|
|
180
|
+
this.longPressTimeout = undefined;
|
|
181
|
+
} else if (
|
|
182
|
+
// cancel longpress timeout if it's set and the gesture has finished
|
|
183
|
+
this.longPressTimeout !== undefined &&
|
|
184
|
+
(state === State.END ||
|
|
185
|
+
state === State.CANCELLED ||
|
|
186
|
+
state === State.FAILED)
|
|
187
|
+
) {
|
|
188
|
+
clearTimeout(this.longPressTimeout);
|
|
189
|
+
this.longPressTimeout = undefined;
|
|
190
|
+
}
|
|
191
|
+
|
|
140
192
|
this.lastActive = active;
|
|
141
193
|
};
|
|
142
194
|
|
|
195
|
+
private onLongPress = () => {
|
|
196
|
+
this.longPressDetected = true;
|
|
197
|
+
this.props.onLongPress?.();
|
|
198
|
+
};
|
|
199
|
+
|
|
143
200
|
// Normally, the parent would execute it's handler first, then forward the
|
|
144
201
|
// event to listeners. However, here our handler is virtually only forwarding
|
|
145
202
|
// events to listeners, so we reverse the order to keep the proper order of
|