react-native-gesture-handler 2.7.0 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +10 -5
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
- package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +7 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +6 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +35 -14
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
- package/ios/Handlers/RNManualHandler.m +24 -8
- package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
- package/ios/RNGestureHandlerManager.mm +176 -178
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +26 -12
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js +15 -4
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +18 -15
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +36 -7
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +2 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +4 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +117 -0
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +5 -2
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +26 -12
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureComposition.js +15 -4
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +18 -15
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +36 -6
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +2 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -5
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +0 -5
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -1
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +4 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +25 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
- package/lib/typescript/components/DrawerLayout.d.ts +7 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
- package/lib/typescript/web/interfaces.d.ts +3 -1
- package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
- package/package.json +14 -10
- package/src/RNGestureHandlerModule.macos.ts +2 -2
- package/src/RNGestureHandlerModule.web.ts +2 -2
- package/src/RNGestureHandlerModule.windows.ts +140 -0
- package/src/components/DrawerLayout.tsx +14 -8
- package/src/components/Swipeable.tsx +2 -4
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/getShadowNodeFromRef.ts +3 -3
- package/src/handlers/createHandler.tsx +13 -15
- package/src/handlers/gestureHandlerCommon.ts +9 -4
- package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
- package/src/handlers/gestures/GestureDetector.tsx +46 -19
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- package/src/handlers/gestures/gestureComposition.ts +19 -6
- package/src/jestUtils/jestUtils.ts +3 -4
- package/src/web/detectors/RotationGestureDetector.ts +2 -1
- package/src/web/handlers/FlingGestureHandler.ts +28 -20
- package/src/web/handlers/GestureHandler.ts +42 -17
- package/src/web/handlers/LongPressGestureHandler.ts +2 -2
- package/src/web/handlers/ManualGestureHandler.ts +10 -1
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -5
- package/src/web/handlers/PanGestureHandler.ts +0 -6
- package/src/web/handlers/PinchGestureHandler.ts +0 -2
- package/src/web/handlers/RotationGestureHandler.ts +2 -5
- package/src/web/handlers/TapGestureHandler.ts +0 -2
- package/src/web/interfaces.ts +3 -0
- package/src/web/tools/InteractionManager.ts +2 -3
- package/src/web_hammer/GestureHandler.ts +6 -8
- package/src/web_hammer/NodeManager.ts +3 -1
- package/src/web_hammer/PanGestureHandler.ts +12 -6
- package/android/lib/build.gradle +0 -28
- 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
@@ -27,7 +27,7 @@ import com.facebook.react.uimanager.ViewProps
|
|
27
27
|
import com.facebook.react.uimanager.annotations.ReactProp
|
28
28
|
import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerDelegate
|
29
29
|
import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerInterface
|
30
|
-
import com.swmansion.gesturehandler.NativeViewGestureHandler
|
30
|
+
import com.swmansion.gesturehandler.core.NativeViewGestureHandler
|
31
31
|
import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager.ButtonViewGroup
|
32
32
|
|
33
33
|
@ReactModule(name = RNGestureHandlerButtonViewManager.REACT_CLASS)
|
@@ -35,7 +35,7 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
|
|
35
35
|
private val mDelegate: ViewManagerDelegate<ButtonViewGroup>
|
36
36
|
|
37
37
|
init {
|
38
|
-
|
38
|
+
mDelegate = RNGestureHandlerButtonManagerDelegate<ButtonViewGroup, RNGestureHandlerButtonViewManager>(this)
|
39
39
|
}
|
40
40
|
|
41
41
|
override fun getName() = REACT_CLASS
|
@@ -91,7 +91,8 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
|
|
91
91
|
return mDelegate
|
92
92
|
}
|
93
93
|
|
94
|
-
class ButtonViewGroup(context: Context?) :
|
94
|
+
class ButtonViewGroup(context: Context?) :
|
95
|
+
ViewGroup(context),
|
95
96
|
NativeViewGestureHandler.NativeViewGestureHandlerHook {
|
96
97
|
// Using object because of handling null representing no value set.
|
97
98
|
var rippleColor: Int? = null
|
@@ -254,9 +255,9 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
|
|
254
255
|
}
|
255
256
|
|
256
257
|
val drawable = RippleDrawable(
|
257
|
-
|
258
|
-
|
259
|
-
|
258
|
+
colorStateList,
|
259
|
+
null,
|
260
|
+
if (useBorderlessDrawable) null else ShapeDrawable(RectShape())
|
260
261
|
)
|
261
262
|
|
262
263
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && rippleRadius != null) {
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
package com.swmansion.gesturehandler.react
|
2
2
|
|
3
3
|
import android.content.Context
|
4
|
-
import android.os.Bundle
|
5
4
|
import android.util.AttributeSet
|
6
|
-
import android.view.MotionEvent
|
7
|
-
import com.facebook.react.ReactInstanceManager
|
8
5
|
import com.facebook.react.ReactRootView
|
9
|
-
import java.lang.Exception
|
10
6
|
|
11
7
|
@Deprecated(message = "Use <GestureHandlerRootView /> component instead. Check gesture handler installation instructions in documentation for more information.")
|
12
8
|
class RNGestureHandlerEnabledRootView : ReactRootView {
|
@@ -14,6 +10,6 @@ class RNGestureHandlerEnabledRootView : ReactRootView {
|
|
14
10
|
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {}
|
15
11
|
|
16
12
|
init {
|
17
|
-
|
13
|
+
throw UnsupportedOperationException("Your application is configured to use RNGestureHandlerEnabledRootView which is no longer supported. You can see how to migrate to <GestureHandlerRootView /> here: https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot")
|
18
14
|
}
|
19
15
|
}
|
@@ -11,7 +11,7 @@ import com.facebook.react.bridge.Arguments
|
|
11
11
|
import com.facebook.react.bridge.WritableMap
|
12
12
|
import com.facebook.react.uimanager.events.Event
|
13
13
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
14
|
-
import com.swmansion.gesturehandler.GestureHandler
|
14
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
15
15
|
|
16
16
|
class RNGestureHandlerEvent private constructor() : Event<RNGestureHandlerEvent>() {
|
17
17
|
private var extraData: WritableMap? = null
|
@@ -53,13 +53,13 @@ class RNGestureHandlerEvent private constructor() : Event<RNGestureHandlerEvent>
|
|
53
53
|
init(handler, dataExtractor)
|
54
54
|
}
|
55
55
|
|
56
|
-
fun <T: GestureHandler<T>> createEventData(
|
56
|
+
fun <T : GestureHandler<T>> createEventData(
|
57
57
|
handler: T,
|
58
58
|
dataExtractor: RNGestureHandlerEventDataExtractor<T>?
|
59
59
|
): WritableMap = Arguments.createMap().apply {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
60
|
+
dataExtractor?.extractEventData(handler, this)
|
61
|
+
putInt("handlerTag", handler.tag)
|
62
|
+
putInt("state", handler.state)
|
63
|
+
}
|
64
64
|
}
|
65
65
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
package com.swmansion.gesturehandler.react
|
2
2
|
|
3
3
|
import com.facebook.react.bridge.WritableMap
|
4
|
-
import com.swmansion.gesturehandler.GestureHandler
|
4
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
5
5
|
|
6
6
|
interface RNGestureHandlerEventDataExtractor<T : GestureHandler<T>> {
|
7
7
|
fun extractEventData(handler: T, eventData: WritableMap)
|
@@ -2,9 +2,9 @@ package com.swmansion.gesturehandler.react
|
|
2
2
|
|
3
3
|
import android.util.SparseArray
|
4
4
|
import com.facebook.react.bridge.ReadableMap
|
5
|
-
import com.swmansion.gesturehandler.GestureHandler
|
6
|
-
import com.swmansion.gesturehandler.GestureHandlerInteractionController
|
7
|
-
import com.swmansion.gesturehandler.NativeViewGestureHandler
|
5
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
6
|
+
import com.swmansion.gesturehandler.core.GestureHandlerInteractionController
|
7
|
+
import com.swmansion.gesturehandler.core.NativeViewGestureHandler
|
8
8
|
|
9
9
|
class RNGestureHandlerInteractionManager : GestureHandlerInteractionController {
|
10
10
|
private val waitForRelations = SparseArray<IntArray>()
|
@@ -3,17 +3,33 @@ package com.swmansion.gesturehandler.react
|
|
3
3
|
import android.content.Context
|
4
4
|
import android.util.Log
|
5
5
|
import android.view.MotionEvent
|
6
|
-
import android.view.ViewGroup
|
7
6
|
import com.facebook.react.ReactRootView
|
8
|
-
import com.facebook.react.bridge
|
7
|
+
import com.facebook.react.bridge.JSApplicationIllegalArgumentException
|
8
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
9
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
10
|
+
import com.facebook.react.bridge.ReactMethod
|
11
|
+
import com.facebook.react.bridge.ReadableMap
|
12
|
+
import com.facebook.react.bridge.ReadableType
|
13
|
+
import com.facebook.react.bridge.WritableMap
|
9
14
|
import com.facebook.react.module.annotations.ReactModule
|
10
15
|
import com.facebook.react.uimanager.PixelUtil
|
11
|
-
import com.facebook.react.uimanager.UIBlock
|
12
16
|
import com.facebook.react.uimanager.events.Event
|
13
17
|
import com.facebook.soloader.SoLoader
|
14
18
|
import com.swmansion.common.GestureHandlerStateManager
|
15
|
-
import com.swmansion.gesturehandler
|
16
|
-
import
|
19
|
+
import com.swmansion.gesturehandler.BuildConfig
|
20
|
+
import com.swmansion.gesturehandler.ReanimatedEventDispatcher
|
21
|
+
import com.swmansion.gesturehandler.core.FlingGestureHandler
|
22
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
23
|
+
import com.swmansion.gesturehandler.core.LongPressGestureHandler
|
24
|
+
import com.swmansion.gesturehandler.core.ManualGestureHandler
|
25
|
+
import com.swmansion.gesturehandler.core.NativeViewGestureHandler
|
26
|
+
import com.swmansion.gesturehandler.core.OnTouchEventListener
|
27
|
+
import com.swmansion.gesturehandler.core.PanGestureHandler
|
28
|
+
import com.swmansion.gesturehandler.core.PinchGestureHandler
|
29
|
+
import com.swmansion.gesturehandler.core.RotationGestureHandler
|
30
|
+
import com.swmansion.gesturehandler.core.TapGestureHandler
|
31
|
+
import com.swmansion.gesturehandler.dispatchEvent
|
32
|
+
|
17
33
|
// NativeModule.onCatalystInstanceDestroy() was deprecated in favor of NativeModule.invalidate()
|
18
34
|
// ref: https://github.com/facebook/react-native/commit/18c8417290823e67e211bde241ae9dde27b72f17
|
19
35
|
|
@@ -21,8 +37,8 @@ import java.util.*
|
|
21
37
|
// ref: https://github.com/facebook/react-native/commit/acbf9e18ea666b07c1224a324602a41d0a66985e
|
22
38
|
@Suppress("DEPRECATION")
|
23
39
|
@ReactModule(name = RNGestureHandlerModule.MODULE_NAME)
|
24
|
-
class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
25
|
-
|
40
|
+
class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
|
41
|
+
ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager {
|
26
42
|
private abstract class HandlerFactory<T : GestureHandler<T>> : RNGestureHandlerEventDataExtractor<T> {
|
27
43
|
abstract val type: Class<T>
|
28
44
|
abstract val name: String
|
@@ -63,7 +79,8 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
63
79
|
super.configure(handler, config)
|
64
80
|
if (config.hasKey(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)) {
|
65
81
|
handler.setShouldActivateOnStart(
|
66
|
-
config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)
|
82
|
+
config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)
|
83
|
+
)
|
67
84
|
}
|
68
85
|
if (config.hasKey(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) {
|
69
86
|
handler.setDisallowInterruption(config.getBoolean(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION))
|
@@ -352,7 +369,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
352
369
|
@ReactMethod
|
353
370
|
@Suppress("UNCHECKED_CAST")
|
354
371
|
fun <T : GestureHandler<T>> createGestureHandler(
|
355
|
-
handlerName: String,
|
372
|
+
handlerName: String,
|
373
|
+
handlerTag: Int,
|
374
|
+
config: ReadableMap,
|
356
375
|
) {
|
357
376
|
for (handlerFactory in handlerFactories as Array<HandlerFactory<T>>) {
|
358
377
|
if (handlerFactory.name == handlerName) {
|
@@ -551,8 +570,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
551
570
|
// Reanimated worklet
|
552
571
|
val event = RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory)
|
553
572
|
sendEventForReanimated(event)
|
554
|
-
} else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT
|
555
|
-
|
573
|
+
} else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT ||
|
574
|
+
handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API
|
575
|
+
) {
|
556
576
|
// JS function or Animated.event with useNativeDriver: false with old API
|
557
577
|
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
558
578
|
val data = RNGestureHandlerStateChangeEvent.createEventData(handler, handlerFactory, newState, oldState)
|
@@ -570,13 +590,14 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
570
590
|
|
571
591
|
private fun <T : GestureHandler<T>> onTouchEvent(handler: T) {
|
572
592
|
// triggers onTouchesDown, onTouchesMove, onTouchesUp, onTouchesCancelled callbacks on the JS side
|
573
|
-
|
593
|
+
|
574
594
|
if (handler.tag < 0) {
|
575
595
|
// root containers use negative tags, we don't need to dispatch events for them to the JS
|
576
596
|
return
|
577
597
|
}
|
578
|
-
if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE
|
579
|
-
|
598
|
+
if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE ||
|
599
|
+
handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null
|
600
|
+
) {
|
580
601
|
if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) {
|
581
602
|
// Reanimated worklet
|
582
603
|
val event = RNGestureHandlerTouchEvent.obtain(handler)
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt
CHANGED
@@ -3,8 +3,8 @@ package com.swmansion.gesturehandler.react
|
|
3
3
|
import android.util.SparseArray
|
4
4
|
import android.view.View
|
5
5
|
import com.facebook.react.bridge.UiThreadUtil
|
6
|
-
import com.swmansion.gesturehandler.GestureHandler
|
7
|
-
import com.swmansion.gesturehandler.GestureHandlerRegistry
|
6
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
7
|
+
import com.swmansion.gesturehandler.core.GestureHandlerRegistry
|
8
8
|
import java.util.*
|
9
9
|
|
10
10
|
class RNGestureHandlerRegistry : GestureHandlerRegistry {
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt
CHANGED
@@ -9,9 +9,8 @@ import com.facebook.react.bridge.ReactContext
|
|
9
9
|
import com.facebook.react.bridge.UiThreadUtil
|
10
10
|
import com.facebook.react.common.ReactConstants
|
11
11
|
import com.facebook.react.uimanager.RootView
|
12
|
-
import com.
|
13
|
-
import com.swmansion.gesturehandler.
|
14
|
-
import com.swmansion.gesturehandler.GestureHandlerOrchestrator
|
12
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
13
|
+
import com.swmansion.gesturehandler.core.GestureHandlerOrchestrator
|
15
14
|
|
16
15
|
class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) {
|
17
16
|
private val orchestrator: GestureHandlerOrchestrator?
|
@@ -29,9 +28,11 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
|
|
29
28
|
rootView = findRootViewTag(wrappedView)
|
30
29
|
Log.i(
|
31
30
|
ReactConstants.TAG,
|
32
|
-
"[GESTURE HANDLER] Initialize gesture handler for root view $rootView"
|
31
|
+
"[GESTURE HANDLER] Initialize gesture handler for root view $rootView"
|
32
|
+
)
|
33
33
|
orchestrator = GestureHandlerOrchestrator(
|
34
|
-
wrappedView, registry, RNViewConfigurationHelper()
|
34
|
+
wrappedView, registry, RNViewConfigurationHelper()
|
35
|
+
).apply {
|
35
36
|
minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH
|
36
37
|
}
|
37
38
|
jsGestureHandler = RootViewGestureHandler().apply { tag = -wrappedViewTag }
|
@@ -45,7 +46,8 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
|
|
45
46
|
fun tearDown() {
|
46
47
|
Log.i(
|
47
48
|
ReactConstants.TAG,
|
48
|
-
"[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView"
|
49
|
+
"[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView"
|
50
|
+
)
|
49
51
|
val module = context.getNativeModule(RNGestureHandlerModule::class.java)!!
|
50
52
|
with(module) {
|
51
53
|
registry.dropHandler(jsGestureHandler!!.tag)
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt
CHANGED
@@ -4,12 +4,10 @@ import android.content.Context
|
|
4
4
|
import android.util.Log
|
5
5
|
import android.view.MotionEvent
|
6
6
|
import android.view.ViewGroup
|
7
|
-
import android.view.ViewParent
|
8
7
|
import com.facebook.react.bridge.ReactContext
|
9
8
|
import com.facebook.react.bridge.UiThreadUtil
|
10
9
|
import com.facebook.react.common.ReactConstants
|
11
10
|
import com.facebook.react.uimanager.RootView
|
12
|
-
import com.facebook.react.views.modal.ReactModalHostView
|
13
11
|
import com.facebook.react.views.view.ReactViewGroup
|
14
12
|
|
15
13
|
class RNGestureHandlerRootView(context: Context?) : ReactViewGroup(context) {
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt
CHANGED
@@ -13,7 +13,8 @@ import com.facebook.react.viewmanagers.RNGestureHandlerRootViewManagerInterface
|
|
13
13
|
* to be provided.
|
14
14
|
*/
|
15
15
|
@ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS)
|
16
|
-
class RNGestureHandlerRootViewManager :
|
16
|
+
class RNGestureHandlerRootViewManager :
|
17
|
+
ViewGroupManager<RNGestureHandlerRootView>(),
|
17
18
|
RNGestureHandlerRootViewManagerInterface<RNGestureHandlerRootView> {
|
18
19
|
private val mDelegate: ViewManagerDelegate<RNGestureHandlerRootView>
|
19
20
|
|
@@ -41,7 +42,8 @@ class RNGestureHandlerRootViewManager : ViewGroupManager<RNGestureHandlerRootVie
|
|
41
42
|
RNGestureHandlerEvent.EVENT_NAME to
|
42
43
|
mutableMapOf("registrationName" to RNGestureHandlerEvent.EVENT_NAME),
|
43
44
|
RNGestureHandlerStateChangeEvent.EVENT_NAME to
|
44
|
-
mutableMapOf("registrationName" to RNGestureHandlerStateChangeEvent.EVENT_NAME)
|
45
|
+
mutableMapOf("registrationName" to RNGestureHandlerStateChangeEvent.EVENT_NAME)
|
46
|
+
)
|
45
47
|
|
46
48
|
companion object {
|
47
49
|
const val REACT_CLASS = "RNGestureHandlerRootView"
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt
CHANGED
@@ -11,7 +11,7 @@ import com.facebook.react.bridge.Arguments
|
|
11
11
|
import com.facebook.react.bridge.WritableMap
|
12
12
|
import com.facebook.react.uimanager.events.Event
|
13
13
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
14
|
-
import com.swmansion.gesturehandler.GestureHandler
|
14
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
15
15
|
|
16
16
|
class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHandlerStateChangeEvent>() {
|
17
17
|
private var extraData: WritableMap? = null
|
@@ -57,16 +57,16 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHa
|
|
57
57
|
init(handler, newState, oldState, dataExtractor)
|
58
58
|
}
|
59
59
|
|
60
|
-
fun <T: GestureHandler<T>> createEventData(
|
60
|
+
fun <T : GestureHandler<T>> createEventData(
|
61
61
|
handler: T,
|
62
62
|
dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
|
63
63
|
newState: Int,
|
64
64
|
oldState: Int,
|
65
65
|
): WritableMap = Arguments.createMap().apply {
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
66
|
+
dataExtractor?.extractEventData(handler, this)
|
67
|
+
putInt("handlerTag", handler.tag)
|
68
|
+
putInt("state", newState)
|
69
|
+
putInt("oldState", oldState)
|
70
|
+
}
|
71
71
|
}
|
72
72
|
}
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt
CHANGED
@@ -5,7 +5,7 @@ import com.facebook.react.bridge.Arguments
|
|
5
5
|
import com.facebook.react.bridge.WritableMap
|
6
6
|
import com.facebook.react.uimanager.events.Event
|
7
7
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
8
|
-
import com.swmansion.gesturehandler.GestureHandler
|
8
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
9
9
|
|
10
10
|
class RNGestureHandlerTouchEvent private constructor() : Event<RNGestureHandlerTouchEvent>() {
|
11
11
|
private var extraData: WritableMap? = null
|
@@ -43,11 +43,11 @@ class RNGestureHandlerTouchEvent private constructor() : Event<RNGestureHandlerT
|
|
43
43
|
private val EVENTS_POOL = Pools.SynchronizedPool<RNGestureHandlerTouchEvent>(TOUCH_EVENTS_POOL_SIZE)
|
44
44
|
|
45
45
|
fun <T : GestureHandler<T>> obtain(handler: T): RNGestureHandlerTouchEvent =
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
(EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply {
|
47
|
+
init(handler)
|
48
|
+
}
|
49
49
|
|
50
|
-
fun <T: GestureHandler<T>> createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
|
50
|
+
fun <T : GestureHandler<T>> createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
|
51
51
|
putInt("handlerTag", handler.tag)
|
52
52
|
putInt("state", handler.state)
|
53
53
|
putInt("numberOfTouches", handler.trackedPointersCount)
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt
CHANGED
@@ -5,8 +5,8 @@ import android.view.ViewGroup
|
|
5
5
|
import com.facebook.react.uimanager.PointerEvents
|
6
6
|
import com.facebook.react.uimanager.ReactPointerEventsView
|
7
7
|
import com.facebook.react.views.view.ReactViewGroup
|
8
|
-
import com.swmansion.gesturehandler.PointerEventsConfig
|
9
|
-
import com.swmansion.gesturehandler.ViewConfigurationHelper
|
8
|
+
import com.swmansion.gesturehandler.core.PointerEventsConfig
|
9
|
+
import com.swmansion.gesturehandler.core.ViewConfigurationHelper
|
10
10
|
|
11
11
|
class RNViewConfigurationHelper : ViewConfigurationHelper {
|
12
12
|
override fun getPointerEventsConfigForView(view: View): PointerEventsConfig {
|
@@ -5,9 +5,9 @@ import com.facebook.react.uimanager.UIManagerModule
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
6
6
|
|
7
7
|
fun ReactContext.dispatchEvent(event: Event<*>) {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
try {
|
9
|
+
this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event)
|
10
|
+
} catch (e: NullPointerException) {
|
11
|
+
throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e)
|
12
|
+
}
|
13
13
|
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
@interface RNManualRecognizer : UIGestureRecognizer
|
4
4
|
|
5
|
-
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
|
5
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
6
6
|
|
7
7
|
@end
|
8
8
|
|
@@ -24,7 +24,7 @@
|
|
24
24
|
{
|
25
25
|
[super touchesBegan:touches withEvent:event];
|
26
26
|
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
|
27
|
-
|
27
|
+
|
28
28
|
if (_shouldSendBeginEvent) {
|
29
29
|
[_gestureHandler handleGesture:self];
|
30
30
|
_shouldSendBeginEvent = NO;
|
@@ -35,6 +35,14 @@
|
|
35
35
|
{
|
36
36
|
[super touchesMoved:touches withEvent:event];
|
37
37
|
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
|
38
|
+
|
39
|
+
if ([self shouldFail]) {
|
40
|
+
self.state = (self.state == UIGestureRecognizerStatePossible)
|
41
|
+
? UIGestureRecognizerStateFailed
|
42
|
+
: UIGestureRecognizerStateCancelled;
|
43
|
+
|
44
|
+
[self reset];
|
45
|
+
}
|
38
46
|
}
|
39
47
|
|
40
48
|
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
@@ -53,21 +61,29 @@
|
|
53
61
|
{
|
54
62
|
[_gestureHandler.pointerTracker reset];
|
55
63
|
[super reset];
|
56
|
-
|
64
|
+
|
57
65
|
_shouldSendBeginEvent = YES;
|
58
66
|
}
|
59
67
|
|
68
|
+
- (BOOL)shouldFail
|
69
|
+
{
|
70
|
+
if (_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) {
|
71
|
+
return YES;
|
72
|
+
} else {
|
73
|
+
return NO;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
60
77
|
@end
|
61
78
|
|
62
79
|
@implementation RNManualGestureHandler
|
63
80
|
|
64
81
|
- (instancetype)initWithTag:(NSNumber *)tag
|
65
82
|
{
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
return self;
|
83
|
+
if ((self = [super initWithTag:tag])) {
|
84
|
+
_recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self];
|
85
|
+
}
|
86
|
+
return self;
|
71
87
|
}
|
72
88
|
|
73
89
|
@end
|
@@ -17,9 +17,8 @@ using namespace facebook::react;
|
|
17
17
|
@interface RNGestureHandlerButtonComponentView () <RCTRNGestureHandlerButtonViewProtocol>
|
18
18
|
@end
|
19
19
|
|
20
|
-
@implementation RNGestureHandlerButtonComponentView
|
21
|
-
|
22
|
-
RNGestureHandlerButton *_buttonView;
|
20
|
+
@implementation RNGestureHandlerButtonComponentView {
|
21
|
+
RNGestureHandlerButton *_buttonView;
|
23
22
|
}
|
24
23
|
|
25
24
|
- (instancetype)initWithFrame:(CGRect)frame
|
@@ -28,7 +27,7 @@ using namespace facebook::react;
|
|
28
27
|
static const auto defaultProps = std::make_shared<const RNGestureHandlerButtonProps>();
|
29
28
|
_props = defaultProps;
|
30
29
|
_buttonView = [[RNGestureHandlerButton alloc] initWithFrame:self.bounds];
|
31
|
-
|
30
|
+
|
32
31
|
self.contentView = _buttonView;
|
33
32
|
}
|
34
33
|
|
@@ -44,12 +43,12 @@ using namespace facebook::react;
|
|
44
43
|
|
45
44
|
- (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
|
46
45
|
{
|
47
|
-
|
46
|
+
const auto &newProps = *std::static_pointer_cast<const RNGestureHandlerButtonProps>(props);
|
48
47
|
|
49
|
-
|
50
|
-
|
48
|
+
_buttonView.userEnabled = newProps.enabled;
|
49
|
+
_buttonView.exclusiveTouch = newProps.exclusive;
|
51
50
|
|
52
|
-
|
51
|
+
[super updateProps:props oldProps:oldProps];
|
53
52
|
}
|
54
53
|
@end
|
55
54
|
|