react-native-gesture-handler 2.4.1 → 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 +4 -2
- 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/GestureHandler.kt +9 -5
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +32 -6
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +5 -2
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +105 -23
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +30 -2
- 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/RNGestureHandlerButtonViewManager.kt +74 -84
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +7 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +5 -1
- package/android/src/main/jni/CMakeLists.txt +59 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +12 -9
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +1 -0
- package/ios/Handlers/RNFlingHandler.m +43 -1
- package/ios/Handlers/{RNNativeViewHandler.m → RNNativeViewHandler.mm} +13 -1
- package/ios/Handlers/RNPanHandler.m +27 -0
- package/ios/RNGestureHandler.h +1 -0
- package/ios/RNGestureHandler.m +22 -4
- package/ios/RNGestureHandlerButtonComponentView.mm +1 -1
- package/ios/RNGestureHandlerManager.mm +10 -7
- package/ios/RNGestureHandlerModule.mm +4 -1
- package/ios/RNGestureHandlerRootViewComponentView.mm +1 -1
- package/ios/RNManualActivationRecognizer.m +10 -3
- package/ios/RNRootViewGestureRecognizer.m +12 -1
- package/lib/commonjs/EnableExperimentalWebImplementation.js +24 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js +138 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -0
- 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 +41 -12
- 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 +5 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +2 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +14 -0
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -0
- 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 +33 -12
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +150 -75
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +13 -2
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +13 -9
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +5 -0
- package/lib/commonjs/handlers/gestures/panGesture.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/utils.js +6 -3
- package/lib/commonjs/utils.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 +1 -1
- package/lib/module/EnableExperimentalWebImplementation.js +15 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -0
- package/lib/module/RNGestureHandlerModule.macos.js +102 -0
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -0
- 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 +41 -12
- 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 +5 -1
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +1 -1
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js +3 -0
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -0
- 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 +35 -14
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +147 -74
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +13 -2
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +13 -9
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +5 -0
- package/lib/module/handlers/gestures/panGesture.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/utils.js +2 -1
- package/lib/module/utils.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 +1 -1
- package/lib/typescript/EnableExperimentalWebImplementation.d.ts +2 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +44 -0
- 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 +4 -1
- package/lib/typescript/components/GestureButtons.d.ts +22 -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/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -1
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +3 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
- 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 +114 -0
- 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 +37 -14
- package/src/components/GestureButtons.tsx +64 -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 +2 -0
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +1 -0
- package/src/handlers/ForceTouchGestureHandler.ts +3 -2
- package/src/handlers/PanGestureHandler.ts +2 -0
- package/src/handlers/PressabilityDebugView.tsx +2 -0
- package/src/handlers/PressabilityDebugView.web.tsx +4 -0
- package/src/handlers/{createHandler.ts → createHandler.tsx} +45 -19
- package/src/handlers/gestureHandlerCommon.ts +2 -0
- package/src/handlers/gestures/GestureDetector.tsx +185 -93
- package/src/handlers/gestures/gesture.ts +16 -0
- package/src/handlers/gestures/gestureStateManager.ts +13 -8
- package/src/handlers/gestures/panGesture.ts +5 -0
- package/src/handlers/gestures/reanimatedWrapper.ts +7 -0
- package/src/index.ts +3 -0
- package/src/utils.ts +3 -1
- 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 +1 -1
- package/android/src/main/jni/Android.mk +0 -53
- 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/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
- 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
|
@@ -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() {},
|
|
@@ -148,6 +148,11 @@ export interface DrawerLayoutProps {
|
|
|
148
148
|
onDrawerSlide?: (position: number) => void;
|
|
149
149
|
|
|
150
150
|
onGestureRef?: (ref: PanGestureHandler) => void;
|
|
151
|
+
|
|
152
|
+
// implicit `children` prop has been removed in @types/react^18.0.0
|
|
153
|
+
children?:
|
|
154
|
+
| React.ReactNode
|
|
155
|
+
| ((openValue?: Animated.AnimatedInterpolation) => React.ReactNode);
|
|
151
156
|
}
|
|
152
157
|
|
|
153
158
|
export type DrawerLayoutState = {
|
|
@@ -155,6 +160,8 @@ export type DrawerLayoutState = {
|
|
|
155
160
|
touchX: Animated.Value;
|
|
156
161
|
drawerTranslation: Animated.Value;
|
|
157
162
|
containerWidth: number;
|
|
163
|
+
drawerState: DrawerState;
|
|
164
|
+
drawerOpened: boolean;
|
|
158
165
|
};
|
|
159
166
|
|
|
160
167
|
export type DrawerMovementOption = {
|
|
@@ -189,15 +196,14 @@ export default class DrawerLayout extends Component<
|
|
|
189
196
|
touchX,
|
|
190
197
|
drawerTranslation,
|
|
191
198
|
containerWidth: 0,
|
|
199
|
+
drawerState: IDLE,
|
|
200
|
+
drawerOpened: false,
|
|
192
201
|
};
|
|
193
202
|
|
|
194
203
|
this.updateAnimatedEvent(props, this.state);
|
|
195
204
|
}
|
|
196
205
|
|
|
197
|
-
|
|
198
|
-
props: DrawerLayoutProps,
|
|
199
|
-
state: DrawerLayoutState
|
|
200
|
-
) {
|
|
206
|
+
shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState) {
|
|
201
207
|
if (
|
|
202
208
|
this.props.drawerPosition !== props.drawerPosition ||
|
|
203
209
|
this.props.drawerWidth !== props.drawerWidth ||
|
|
@@ -206,6 +212,8 @@ export default class DrawerLayout extends Component<
|
|
|
206
212
|
) {
|
|
207
213
|
this.updateAnimatedEvent(props, state);
|
|
208
214
|
}
|
|
215
|
+
|
|
216
|
+
return true;
|
|
209
217
|
}
|
|
210
218
|
|
|
211
219
|
private openValue?: Animated.AnimatedInterpolation;
|
|
@@ -349,6 +357,7 @@ export default class DrawerLayout extends Component<
|
|
|
349
357
|
this.handleRelease({ nativeEvent });
|
|
350
358
|
} else if (nativeEvent.state === State.ACTIVE) {
|
|
351
359
|
this.emitStateChanged(DRAGGING, false);
|
|
360
|
+
this.setState({ drawerState: DRAGGING });
|
|
352
361
|
if (this.props.keyboardDismissMode === 'on-drag') {
|
|
353
362
|
Keyboard.dismiss();
|
|
354
363
|
}
|
|
@@ -464,6 +473,7 @@ export default class DrawerLayout extends Component<
|
|
|
464
473
|
const willShow = toValue !== 0;
|
|
465
474
|
this.updateShowing(willShow);
|
|
466
475
|
this.emitStateChanged(SETTLING, willShow);
|
|
476
|
+
this.setState({ drawerState: SETTLING });
|
|
467
477
|
if (this.props.hideStatusBar) {
|
|
468
478
|
StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');
|
|
469
479
|
}
|
|
@@ -476,6 +486,12 @@ export default class DrawerLayout extends Component<
|
|
|
476
486
|
}).start(({ finished }) => {
|
|
477
487
|
if (finished) {
|
|
478
488
|
this.emitStateChanged(IDLE, willShow);
|
|
489
|
+
this.setState({ drawerOpened: willShow });
|
|
490
|
+
if (this.state.drawerState !== DRAGGING) {
|
|
491
|
+
// it's possilbe that user started drag while the drawer
|
|
492
|
+
// was settling, don't override state in this case
|
|
493
|
+
this.setState({ drawerState: IDLE });
|
|
494
|
+
}
|
|
479
495
|
if (willShow) {
|
|
480
496
|
this.props.onDrawerOpen?.();
|
|
481
497
|
} else {
|
|
@@ -516,11 +532,14 @@ export default class DrawerLayout extends Component<
|
|
|
516
532
|
private renderOverlay = () => {
|
|
517
533
|
/* Overlay styles */
|
|
518
534
|
invariant(this.openValue, 'should be set');
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
535
|
+
let overlayOpacity;
|
|
536
|
+
|
|
537
|
+
if (this.state.drawerState !== IDLE) {
|
|
538
|
+
overlayOpacity = this.openValue;
|
|
539
|
+
} else {
|
|
540
|
+
overlayOpacity = this.state.drawerOpened ? 1 : 0;
|
|
541
|
+
}
|
|
542
|
+
|
|
524
543
|
const dynamicOverlayStyles = {
|
|
525
544
|
opacity: overlayOpacity,
|
|
526
545
|
backgroundColor: this.props.overlayColor,
|
|
@@ -579,11 +598,15 @@ export default class DrawerLayout extends Component<
|
|
|
579
598
|
let drawerTranslateX: number | Animated.AnimatedInterpolation = 0;
|
|
580
599
|
if (drawerSlide) {
|
|
581
600
|
const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!;
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
601
|
+
if (this.state.drawerState !== IDLE) {
|
|
602
|
+
drawerTranslateX = openValue.interpolate({
|
|
603
|
+
inputRange: [0, 1],
|
|
604
|
+
outputRange: [closedDrawerOffset, 0],
|
|
605
|
+
extrapolate: 'clamp',
|
|
606
|
+
});
|
|
607
|
+
} else {
|
|
608
|
+
drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset;
|
|
609
|
+
}
|
|
587
610
|
}
|
|
588
611
|
const drawerStyles: {
|
|
589
612
|
transform: { translateX: number | Animated.AnimatedInterpolation }[];
|
|
@@ -56,6 +56,13 @@ export interface RawButtonProps extends NativeViewGestureHandlerProps {
|
|
|
56
56
|
* Defines whether the ripple animation should be drawn on the foreground of the view.
|
|
57
57
|
*/
|
|
58
58
|
foreground?: boolean;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Android only.
|
|
62
|
+
*
|
|
63
|
+
* Set this to true if you don't want the system to play sound when the button is pressed.
|
|
64
|
+
*/
|
|
65
|
+
touchSoundDisabled?: boolean;
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
export interface BaseButtonProps extends RawButtonProps {
|
|
@@ -65,6 +72,12 @@ export interface BaseButtonProps extends RawButtonProps {
|
|
|
65
72
|
*/
|
|
66
73
|
onPress?: (pointerInside: boolean) => void;
|
|
67
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Called when the button gets pressed and is held for `delayLongPress`
|
|
77
|
+
* milliseconds.
|
|
78
|
+
*/
|
|
79
|
+
onLongPress?: () => void;
|
|
80
|
+
|
|
68
81
|
/**
|
|
69
82
|
* Called when button changes from inactive to active and vice versa. It
|
|
70
83
|
* passes active state as a boolean variable as a first parameter for that
|
|
@@ -73,6 +86,12 @@ export interface BaseButtonProps extends RawButtonProps {
|
|
|
73
86
|
onActiveStateChange?: (active: boolean) => void;
|
|
74
87
|
style?: StyleProp<ViewStyle>;
|
|
75
88
|
testID?: string;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Delay, in milliseconds, after which the `onLongPress` callback gets called.
|
|
92
|
+
* Defaults to 600.
|
|
93
|
+
*/
|
|
94
|
+
delayLongPress?: number;
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
export interface RectButtonProps extends BaseButtonProps {
|
|
@@ -104,11 +123,18 @@ export const RawButton = createNativeWrapper(GestureHandlerButton, {
|
|
|
104
123
|
});
|
|
105
124
|
|
|
106
125
|
export class BaseButton extends React.Component<BaseButtonProps> {
|
|
126
|
+
static defaultProps = {
|
|
127
|
+
delayLongPress: 600,
|
|
128
|
+
};
|
|
129
|
+
|
|
107
130
|
private lastActive: boolean;
|
|
131
|
+
private longPressTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
132
|
+
private longPressDetected: boolean;
|
|
108
133
|
|
|
109
134
|
constructor(props: BaseButtonProps) {
|
|
110
135
|
super(props);
|
|
111
136
|
this.lastActive = false;
|
|
137
|
+
this.longPressDetected = false;
|
|
112
138
|
}
|
|
113
139
|
|
|
114
140
|
private handleEvent = ({
|
|
@@ -122,6 +148,7 @@ export class BaseButton extends React.Component<BaseButtonProps> {
|
|
|
122
148
|
}
|
|
123
149
|
|
|
124
150
|
if (
|
|
151
|
+
!this.longPressDetected &&
|
|
125
152
|
oldState === State.ACTIVE &&
|
|
126
153
|
state !== State.CANCELLED &&
|
|
127
154
|
this.lastActive &&
|
|
@@ -130,9 +157,46 @@ export class BaseButton extends React.Component<BaseButtonProps> {
|
|
|
130
157
|
this.props.onPress(active);
|
|
131
158
|
}
|
|
132
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
|
+
|
|
133
192
|
this.lastActive = active;
|
|
134
193
|
};
|
|
135
194
|
|
|
195
|
+
private onLongPress = () => {
|
|
196
|
+
this.longPressDetected = true;
|
|
197
|
+
this.props.onLongPress?.();
|
|
198
|
+
};
|
|
199
|
+
|
|
136
200
|
// Normally, the parent would execute it's handler first, then forward the
|
|
137
201
|
// event to listeners. However, here our handler is virtually only forwarding
|
|
138
202
|
// events to listeners, so we reverse the order to keep the proper order of
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,
|
|
17
17
|
FlatList as RNFlatList,
|
|
18
18
|
FlatListProps as RNFlatListProps,
|
|
19
|
+
RefreshControl as RNRefreshControl,
|
|
19
20
|
} from 'react-native';
|
|
20
21
|
|
|
21
22
|
import createNativeWrapper from '../handlers/createNativeWrapper';
|
|
@@ -25,16 +26,53 @@ import {
|
|
|
25
26
|
nativeViewProps,
|
|
26
27
|
} from '../handlers/NativeViewGestureHandler';
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
import { toArray } from '../utils';
|
|
30
|
+
|
|
31
|
+
export const RefreshControl = createNativeWrapper(RNRefreshControl, {
|
|
31
32
|
disallowInterruption: true,
|
|
32
33
|
shouldCancelWhenOutside: false,
|
|
33
34
|
});
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
36
|
+
export type RefreshControl = typeof RefreshControl & RNRefreshControl;
|
|
37
|
+
|
|
38
|
+
const GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(
|
|
39
|
+
RNScrollView,
|
|
40
|
+
{
|
|
41
|
+
disallowInterruption: true,
|
|
42
|
+
shouldCancelWhenOutside: false,
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
export const ScrollView = React.forwardRef<
|
|
46
|
+
RNScrollView,
|
|
47
|
+
RNScrollViewProps & NativeViewGestureHandlerProps
|
|
48
|
+
>((props, ref) => {
|
|
49
|
+
const refreshControlGestureRef = React.useRef<RefreshControl>(null);
|
|
50
|
+
const { refreshControl, waitFor, ...rest } = props;
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<GHScrollView
|
|
54
|
+
{...rest}
|
|
55
|
+
// @ts-ignore `ref` exists on `GHScrollView`
|
|
56
|
+
ref={ref}
|
|
57
|
+
waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
|
|
58
|
+
// @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
|
|
59
|
+
refreshControl={
|
|
60
|
+
refreshControl ? (
|
|
61
|
+
<RefreshControl
|
|
62
|
+
{...refreshControl.props}
|
|
63
|
+
ref={refreshControlGestureRef}
|
|
64
|
+
/>
|
|
65
|
+
) : (
|
|
66
|
+
refreshControl
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
/>
|
|
70
|
+
);
|
|
71
|
+
});
|
|
34
72
|
// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457
|
|
35
73
|
// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.
|
|
36
74
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
37
|
-
export type ScrollView = typeof
|
|
75
|
+
export type ScrollView = typeof GHScrollView & RNScrollView;
|
|
38
76
|
|
|
39
77
|
export const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {
|
|
40
78
|
shouldCancelWhenOutside: false,
|
|
@@ -56,9 +94,13 @@ export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &
|
|
|
56
94
|
RNDrawerLayoutAndroid;
|
|
57
95
|
|
|
58
96
|
export const FlatList = React.forwardRef((props, ref) => {
|
|
97
|
+
const refreshControlGestureRef = React.useRef<RefreshControl>(null);
|
|
98
|
+
|
|
99
|
+
const { waitFor, refreshControl, ...rest } = props;
|
|
100
|
+
|
|
59
101
|
const flatListProps = {};
|
|
60
102
|
const scrollViewProps = {};
|
|
61
|
-
for (const [propName, value] of Object.entries(
|
|
103
|
+
for (const [propName, value] of Object.entries(rest)) {
|
|
62
104
|
// https://github.com/microsoft/TypeScript/issues/26255
|
|
63
105
|
if ((nativeViewProps as readonly string[]).includes(propName)) {
|
|
64
106
|
// @ts-ignore - this function cannot have generic type so we have to ignore this error
|
|
@@ -70,14 +112,32 @@ export const FlatList = React.forwardRef((props, ref) => {
|
|
|
70
112
|
flatListProps[propName] = value;
|
|
71
113
|
}
|
|
72
114
|
}
|
|
115
|
+
|
|
73
116
|
return (
|
|
74
117
|
// @ts-ignore - this function cannot have generic type so we have to ignore this error
|
|
75
118
|
<RNFlatList
|
|
76
119
|
ref={ref}
|
|
77
120
|
{...flatListProps}
|
|
78
121
|
renderScrollComponent={(scrollProps) => (
|
|
79
|
-
<ScrollView
|
|
122
|
+
<ScrollView
|
|
123
|
+
{...{
|
|
124
|
+
...scrollProps,
|
|
125
|
+
...scrollViewProps,
|
|
126
|
+
waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
|
|
127
|
+
}}
|
|
128
|
+
/>
|
|
80
129
|
)}
|
|
130
|
+
// @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
|
|
131
|
+
refreshControl={
|
|
132
|
+
refreshControl ? (
|
|
133
|
+
<RefreshControl
|
|
134
|
+
{...refreshControl.props}
|
|
135
|
+
ref={refreshControlGestureRef}
|
|
136
|
+
/>
|
|
137
|
+
) : (
|
|
138
|
+
refreshControl
|
|
139
|
+
)
|
|
140
|
+
}
|
|
81
141
|
/>
|
|
82
142
|
);
|
|
83
143
|
}) as <ItemT = any>(
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
TextInput as RNTextInput,
|
|
7
7
|
ScrollView as RNScrollView,
|
|
8
8
|
FlatListProps,
|
|
9
|
+
View,
|
|
9
10
|
} from 'react-native';
|
|
10
11
|
|
|
11
12
|
import createNativeWrapper from '../handlers/createNativeWrapper';
|
|
@@ -25,6 +26,10 @@ export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, {
|
|
|
25
26
|
});
|
|
26
27
|
// @ts-ignore -- TODO(TS) to investigate if it's needed
|
|
27
28
|
DrawerLayoutAndroid.positions = RNDrawerLayoutAndroid.positions;
|
|
29
|
+
// RefreshControl is implemented as a functional component, rendering a View
|
|
30
|
+
// NativeViewGestureHandler needs to set a ref on its child, which cannot be done
|
|
31
|
+
// on functional components
|
|
32
|
+
export const RefreshControl = createNativeWrapper(View);
|
|
28
33
|
|
|
29
34
|
export const FlatList = React.forwardRef(
|
|
30
35
|
<ItemT extends any>(props: FlatListProps<ItemT>, ref: any) => (
|
|
@@ -219,7 +219,7 @@ export default class Swipeable extends Component<
|
|
|
219
219
|
);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {
|
|
223
223
|
if (
|
|
224
224
|
this.props.friction !== props.friction ||
|
|
225
225
|
this.props.overshootLeft !== props.overshootLeft ||
|
|
@@ -231,6 +231,8 @@ export default class Swipeable extends Component<
|
|
|
231
231
|
) {
|
|
232
232
|
this.updateAnimatedEvent(props, state);
|
|
233
233
|
}
|
|
234
|
+
|
|
235
|
+
return true;
|
|
234
236
|
}
|
|
235
237
|
|
|
236
238
|
private onGestureEvent?: (
|
|
@@ -277,6 +277,8 @@ export default class GenericTouchable extends Component<
|
|
|
277
277
|
shouldActivateOnStart={this.props.shouldActivateOnStart}
|
|
278
278
|
disallowInterruption={this.props.disallowInterruption}
|
|
279
279
|
testID={this.props.testID}
|
|
280
|
+
touchSoundDisabled={this.props.touchSoundDisabled ?? false}
|
|
281
|
+
enabled={!this.props.disabled}
|
|
280
282
|
{...this.props.extraButtonProps}>
|
|
281
283
|
<Animated.View {...coreProps} style={this.props.style}>
|
|
282
284
|
{this.props.children}
|
|
@@ -22,6 +22,7 @@ interface NativeProps extends ViewProps {
|
|
|
22
22
|
enabled?: WithDefault<boolean, true>;
|
|
23
23
|
rippleColor?: ColorValue;
|
|
24
24
|
rippleRadius?: Int32;
|
|
25
|
+
touchSoundDisabled?: WithDefault<boolean, false>;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export default codegenNativeComponent<NativeProps>('RNGestureHandlerButton');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { tagMessage } from '../utils';
|
|
3
3
|
import PlatformConstants from '../PlatformConstants';
|
|
4
4
|
import createHandler from './createHandler';
|
|
@@ -13,7 +13,8 @@ export const forceTouchGestureHandlerProps = [
|
|
|
13
13
|
'feedbackOnActivation',
|
|
14
14
|
] as const;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// implicit `children` prop has been removed in @types/react^18.0.0
|
|
17
|
+
class ForceTouchFallback extends React.Component<PropsWithChildren<unknown>> {
|
|
17
18
|
static forceTouchAvailable = false;
|
|
18
19
|
componentDidMount() {
|
|
19
20
|
console.warn(
|
|
@@ -17,6 +17,7 @@ export const panGestureHandlerProps = [
|
|
|
17
17
|
'maxPointers',
|
|
18
18
|
'avgTouches',
|
|
19
19
|
'enableTrackpadTwoFingerGesture',
|
|
20
|
+
'activateAfterLongPress',
|
|
20
21
|
] as const;
|
|
21
22
|
|
|
22
23
|
export const panGestureHandlerCustomNativeProps = [
|
|
@@ -124,6 +125,7 @@ interface CommonPanProperties {
|
|
|
124
125
|
minVelocity?: number;
|
|
125
126
|
minVelocityX?: number;
|
|
126
127
|
minVelocityY?: number;
|
|
128
|
+
activateAfterLongPress?: number;
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
export interface PanGestureConfig extends CommonPanProperties {
|