react-native-gesture-handler 2.7.1 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/RNGestureHandler.podspec +1 -1
- package/android/build.gradle +53 -46
- 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 +8 -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 +20 -8
- 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 +40 -15
- 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/main/jni/CMakeLists.txt +10 -44
- package/android/src/main/jni/cpp-adapter.cpp +16 -13
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
- package/ios/Handlers/RNFlingHandler.m +39 -37
- package/ios/Handlers/RNForceTouchHandler.m +19 -17
- package/ios/Handlers/RNLongPressHandler.m +20 -22
- package/ios/Handlers/RNManualHandler.m +23 -8
- package/ios/Handlers/RNNativeViewHandler.mm +92 -88
- package/ios/Handlers/RNPanHandler.m +28 -32
- package/ios/Handlers/RNPinchHandler.m +9 -10
- package/ios/Handlers/RNRotationHandler.m +11 -14
- package/ios/Handlers/RNTapHandler.m +26 -26
- package/ios/RNGestureHandler.h +31 -24
- package/ios/RNGestureHandler.m +278 -273
- package/ios/RNGestureHandlerActionType.h +6 -4
- package/ios/RNGestureHandlerButton.m +11 -12
- package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
- package/ios/RNGestureHandlerButtonManager.m +6 -5
- package/ios/RNGestureHandlerDirection.h +4 -4
- package/ios/RNGestureHandlerEvents.h +3 -4
- package/ios/RNGestureHandlerEvents.m +114 -119
- package/ios/RNGestureHandlerManager.h +1 -2
- package/ios/RNGestureHandlerManager.mm +176 -178
- package/ios/RNGestureHandlerModule.h +1 -2
- package/ios/RNGestureHandlerModule.mm +126 -122
- package/ios/RNGestureHandlerPointerTracker.h +1 -1
- package/ios/RNGestureHandlerPointerTracker.m +40 -37
- package/ios/RNGestureHandlerRegistry.h +3 -1
- package/ios/RNGestureHandlerRegistry.m +24 -22
- package/ios/RNGestureHandlerState.h +6 -6
- package/ios/RNGestureHandlerStateManager.h +1 -1
- package/ios/RNManualActivationRecognizer.m +9 -9
- package/ios/RNRootViewGestureRecognizer.m +36 -39
- 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/gestureHandlerRootHOC.js +2 -1
- package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
- package/lib/commonjs/handlers/TapGestureHandler.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 +87 -38
- 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/longPressGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/tapGesture.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 +0 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +28 -3
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -2
- 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 -2
- 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 -2
- 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/gestureHandlerRootHOC.js +2 -1
- package/lib/module/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +3 -1
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +3 -1
- package/lib/module/handlers/TapGestureHandler.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 +89 -39
- 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/longPressGesture.js +1 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +1 -0
- package/lib/module/handlers/gestures/tapGesture.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 +0 -1
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +28 -3
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +0 -2
- 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 -2
- 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 -2
- 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 +10 -1
- package/lib/typescript/components/Swipeable.d.ts +3 -2
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
- package/lib/typescript/gestureHandlerRootHOC.d.ts +1 -1
- 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/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 +17 -14
- 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 +22 -12
- package/src/components/Swipeable.tsx +16 -13
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/gestureHandlerRootHOC.tsx +4 -1
- package/src/getShadowNodeFromRef.ts +3 -3
- package/src/handlers/LongPressGestureHandler.ts +3 -1
- package/src/handlers/TapGestureHandler.ts +3 -1
- 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 +117 -44
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- package/src/handlers/gestures/longPressGesture.ts +1 -0
- package/src/handlers/gestures/tapGesture.ts +1 -0
- package/src/jestUtils/jestUtils.ts +3 -4
- package/src/web/detectors/RotationGestureDetector.ts +2 -1
- package/src/web/handlers/FlingGestureHandler.ts +2 -3
- package/src/web/handlers/GestureHandler.ts +30 -11
- package/src/web/handlers/LongPressGestureHandler.ts +0 -3
- package/src/web/handlers/ManualGestureHandler.ts +10 -1
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -2
- 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 -3
- 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
@@ -1,4 +1,4 @@
|
|
1
|
-
package com.swmansion.gesturehandler
|
1
|
+
package com.swmansion.gesturehandler.core
|
2
2
|
|
3
3
|
import android.content.Context
|
4
4
|
import android.os.Handler
|
@@ -6,8 +6,8 @@ import android.os.Looper
|
|
6
6
|
import android.view.MotionEvent
|
7
7
|
import android.view.VelocityTracker
|
8
8
|
import android.view.ViewConfiguration
|
9
|
-
import com.swmansion.gesturehandler.GestureUtils.getLastPointerX
|
10
|
-
import com.swmansion.gesturehandler.GestureUtils.getLastPointerY
|
9
|
+
import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX
|
10
|
+
import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY
|
11
11
|
|
12
12
|
class PanGestureHandler(context: Context?) : GestureHandler<PanGestureHandler>() {
|
13
13
|
var velocityX = 0f
|
@@ -173,12 +173,14 @@ class PanGestureHandler(context: Context?) : GestureHandler<PanGestureHandler>()
|
|
173
173
|
}
|
174
174
|
val vx = velocityX
|
175
175
|
if (minVelocityX != MIN_VALUE_IGNORE &&
|
176
|
-
(minVelocityX < 0 && vx <= minVelocityX || minVelocityX in 0.0f..vx)
|
176
|
+
(minVelocityX < 0 && vx <= minVelocityX || minVelocityX in 0.0f..vx)
|
177
|
+
) {
|
177
178
|
return true
|
178
179
|
}
|
179
180
|
val vy = velocityY
|
180
181
|
if (minVelocityY != MIN_VALUE_IGNORE &&
|
181
|
-
(minVelocityY < 0 && vx <= minVelocityY || minVelocityY in 0.0f..vx)
|
182
|
+
(minVelocityY < 0 && vx <= minVelocityY || minVelocityY in 0.0f..vx)
|
183
|
+
) {
|
182
184
|
return true
|
183
185
|
}
|
184
186
|
val velocitySq = vx * vx + vy * vy
|
@@ -1,4 +1,4 @@
|
|
1
|
-
package com.swmansion.gesturehandler
|
1
|
+
package com.swmansion.gesturehandler.core
|
2
2
|
|
3
3
|
import android.graphics.PointF
|
4
4
|
import android.view.MotionEvent
|
@@ -18,7 +18,8 @@ class PinchGestureHandler : GestureHandler<PinchGestureHandler>() {
|
|
18
18
|
private var scaleGestureDetector: ScaleGestureDetector? = null
|
19
19
|
private var startingSpan = 0f
|
20
20
|
private var spanSlop = 0f
|
21
|
-
private val gestureListener: ScaleGestureDetector.OnScaleGestureListener = object :
|
21
|
+
private val gestureListener: ScaleGestureDetector.OnScaleGestureListener = object :
|
22
|
+
ScaleGestureDetector.OnScaleGestureListener {
|
22
23
|
override fun onScale(detector: ScaleGestureDetector): Boolean {
|
23
24
|
val prevScaleFactor: Double = scale
|
24
25
|
scale *= detector.scaleFactor.toDouble()
|
@@ -26,8 +27,9 @@ class PinchGestureHandler : GestureHandler<PinchGestureHandler>() {
|
|
26
27
|
if (delta > 0) {
|
27
28
|
velocity = (scale - prevScaleFactor) / delta
|
28
29
|
}
|
29
|
-
if (abs(startingSpan - detector.currentSpan) >= spanSlop
|
30
|
-
|
30
|
+
if (abs(startingSpan - detector.currentSpan) >= spanSlop &&
|
31
|
+
state == STATE_BEGAN
|
32
|
+
) {
|
31
33
|
activate()
|
32
34
|
}
|
33
35
|
return true
|
@@ -55,6 +57,11 @@ class PinchGestureHandler : GestureHandler<PinchGestureHandler>() {
|
|
55
57
|
scaleGestureDetector = ScaleGestureDetector(context, gestureListener)
|
56
58
|
val configuration = ViewConfiguration.get(context)
|
57
59
|
spanSlop = configuration.scaledTouchSlop.toFloat()
|
60
|
+
|
61
|
+
// set the focal point to the position of the first pointer as NaN causes the event not to arrive
|
62
|
+
this.focalPointX = event.x
|
63
|
+
this.focalPointY = event.y
|
64
|
+
|
58
65
|
begin()
|
59
66
|
}
|
60
67
|
scaleGestureDetector?.onTouchEvent(sourceEvent)
|
@@ -1,8 +1,8 @@
|
|
1
|
-
package com.swmansion.gesturehandler
|
1
|
+
package com.swmansion.gesturehandler.core
|
2
2
|
|
3
3
|
import android.graphics.PointF
|
4
4
|
import android.view.MotionEvent
|
5
|
-
import com.swmansion.gesturehandler.RotationGestureDetector.OnRotationGestureListener
|
5
|
+
import com.swmansion.gesturehandler.core.RotationGestureDetector.OnRotationGestureListener
|
6
6
|
import kotlin.math.abs
|
7
7
|
|
8
8
|
class RotationGestureHandler : GestureHandler<RotationGestureHandler>() {
|
@@ -45,6 +45,11 @@ class RotationGestureHandler : GestureHandler<RotationGestureHandler>() {
|
|
45
45
|
if (state == STATE_UNDETERMINED) {
|
46
46
|
resetProgress()
|
47
47
|
rotationGestureDetector = RotationGestureDetector(gestureListener)
|
48
|
+
|
49
|
+
// set the anchor to the position of the first pointer as NaN causes the event not to arrive
|
50
|
+
this.anchorX = event.x
|
51
|
+
this.anchorY = event.y
|
52
|
+
|
48
53
|
begin()
|
49
54
|
}
|
50
55
|
rotationGestureDetector?.onTouchEvent(sourceEvent)
|
@@ -1,10 +1,10 @@
|
|
1
|
-
package com.swmansion.gesturehandler
|
1
|
+
package com.swmansion.gesturehandler.core
|
2
2
|
|
3
3
|
import android.os.Handler
|
4
4
|
import android.os.Looper
|
5
5
|
import android.view.MotionEvent
|
6
|
-
import com.swmansion.gesturehandler.GestureUtils.getLastPointerX
|
7
|
-
import com.swmansion.gesturehandler.GestureUtils.getLastPointerY
|
6
|
+
import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX
|
7
|
+
import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY
|
8
8
|
import kotlin.math.abs
|
9
9
|
|
10
10
|
class TapGestureHandler : GestureHandler<TapGestureHandler>() {
|
@@ -1,11 +1,11 @@
|
|
1
|
-
package com.swmansion.gesturehandler
|
1
|
+
package com.swmansion.gesturehandler.react
|
2
2
|
|
3
3
|
import com.facebook.react.bridge.ReactContext
|
4
4
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
5
5
|
import com.facebook.react.uimanager.UIManagerModule
|
6
6
|
|
7
7
|
val ReactContext.deviceEventEmitter: DeviceEventManagerModule.RCTDeviceEventEmitter
|
8
|
-
|
8
|
+
get() = this.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
9
9
|
|
10
10
|
val ReactContext.UIManager: UIManagerModule
|
11
|
-
|
11
|
+
get() = this.getNativeModule(UIManagerModule::class.java)!!
|
@@ -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) {
|
@@ -330,6 +331,7 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager<ButtonViewGroup>(), R
|
|
330
331
|
// don't preform click when a child button is pressed (mainly to prevent sound effect of
|
331
332
|
// a parent button from playing)
|
332
333
|
return if (!isChildTouched() && soundResponder == this) {
|
334
|
+
tryFreeingResponder()
|
333
335
|
soundResponder = null
|
334
336
|
super.performClick()
|
335
337
|
} else {
|
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,18 +11,28 @@ 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
|
18
18
|
private var coalescingKey: Short = 0
|
19
|
+
|
20
|
+
// On the new architecture, native animated expects event names prefixed with `top` instead of `on`,
|
21
|
+
// since we know when the native animated node is the target of the event we can use the different
|
22
|
+
// event name where appropriate.
|
23
|
+
// TODO: This is a workaround not as solution, but doing this properly would require a total overhaul of
|
24
|
+
// how GH sends events (which needs to be done, but maybe wait until the RN's apis stop changing)
|
25
|
+
private var useTopPrefixedName: Boolean = false
|
26
|
+
|
19
27
|
private fun <T : GestureHandler<T>> init(
|
20
28
|
handler: T,
|
21
29
|
dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
|
30
|
+
useNativeAnimatedName: Boolean
|
22
31
|
) {
|
23
32
|
super.init(handler.view!!.id)
|
24
33
|
extraData = createEventData(handler, dataExtractor)
|
25
34
|
coalescingKey = handler.eventCoalescingKey
|
35
|
+
this.useTopPrefixedName = useNativeAnimatedName
|
26
36
|
}
|
27
37
|
|
28
38
|
override fun onDispose() {
|
@@ -30,7 +40,7 @@ class RNGestureHandlerEvent private constructor() : Event<RNGestureHandlerEvent>
|
|
30
40
|
EVENTS_POOL.release(this)
|
31
41
|
}
|
32
42
|
|
33
|
-
override fun getEventName() = EVENT_NAME
|
43
|
+
override fun getEventName() = if (useTopPrefixedName) NATIVE_ANIMATED_EVENT_NAME else EVENT_NAME
|
34
44
|
|
35
45
|
override fun canCoalesce() = true
|
36
46
|
|
@@ -42,24 +52,26 @@ class RNGestureHandlerEvent private constructor() : Event<RNGestureHandlerEvent>
|
|
42
52
|
|
43
53
|
companion object {
|
44
54
|
const val EVENT_NAME = "onGestureHandlerEvent"
|
55
|
+
const val NATIVE_ANIMATED_EVENT_NAME = "topGestureHandlerEvent"
|
45
56
|
private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic
|
46
57
|
private val EVENTS_POOL = Pools.SynchronizedPool<RNGestureHandlerEvent>(TOUCH_EVENTS_POOL_SIZE)
|
47
58
|
|
48
59
|
fun <T : GestureHandler<T>> obtain(
|
49
60
|
handler: T,
|
50
61
|
dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
|
62
|
+
useTopPrefixedName: Boolean = false
|
51
63
|
): RNGestureHandlerEvent =
|
52
64
|
(EVENTS_POOL.acquire() ?: RNGestureHandlerEvent()).apply {
|
53
|
-
init(handler, dataExtractor)
|
65
|
+
init(handler, dataExtractor, useTopPrefixedName)
|
54
66
|
}
|
55
67
|
|
56
|
-
fun <T: GestureHandler<T>> createEventData(
|
68
|
+
fun <T : GestureHandler<T>> createEventData(
|
57
69
|
handler: T,
|
58
70
|
dataExtractor: RNGestureHandlerEventDataExtractor<T>?
|
59
71
|
): WritableMap = Arguments.createMap().apply {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
72
|
+
dataExtractor?.extractEventData(handler, this)
|
73
|
+
putInt("handlerTag", handler.tag)
|
74
|
+
putInt("state", handler.state)
|
75
|
+
}
|
64
76
|
}
|
65
77
|
}
|
@@ -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) {
|
@@ -519,7 +538,11 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
519
538
|
sendEventForReanimated(event)
|
520
539
|
} else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT) {
|
521
540
|
// Animated with useNativeDriver: true
|
522
|
-
val event = RNGestureHandlerEvent.obtain(
|
541
|
+
val event = RNGestureHandlerEvent.obtain(
|
542
|
+
handler,
|
543
|
+
handlerFactory,
|
544
|
+
useTopPrefixedName = BuildConfig.REACT_NATIVE_MINOR_VERSION >= 71
|
545
|
+
)
|
523
546
|
sendEventForNativeAnimatedEvent(event)
|
524
547
|
} else if (handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API) {
|
525
548
|
// JS function, Animated.event with useNativeDriver: false using old API
|
@@ -551,8 +574,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
551
574
|
// Reanimated worklet
|
552
575
|
val event = RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory)
|
553
576
|
sendEventForReanimated(event)
|
554
|
-
} else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT
|
555
|
-
|
577
|
+
} else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT ||
|
578
|
+
handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API
|
579
|
+
) {
|
556
580
|
// JS function or Animated.event with useNativeDriver: false with old API
|
557
581
|
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
558
582
|
val data = RNGestureHandlerStateChangeEvent.createEventData(handler, handlerFactory, newState, oldState)
|
@@ -570,13 +594,14 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
|
|
570
594
|
|
571
595
|
private fun <T : GestureHandler<T>> onTouchEvent(handler: T) {
|
572
596
|
// triggers onTouchesDown, onTouchesMove, onTouchesUp, onTouchesCancelled callbacks on the JS side
|
573
|
-
|
597
|
+
|
574
598
|
if (handler.tag < 0) {
|
575
599
|
// root containers use negative tags, we don't need to dispatch events for them to the JS
|
576
600
|
return
|
577
601
|
}
|
578
|
-
if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE
|
579
|
-
|
602
|
+
if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE ||
|
603
|
+
handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null
|
604
|
+
) {
|
580
605
|
if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) {
|
581
606
|
// Reanimated worklet
|
582
607
|
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 {
|