react-native-gesture-handler 2.4.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 {
|