react-native-gesture-handler 2.7.1 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 {
|