react-native-gesture-handler 2.7.1 → 2.8.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/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 +17 -10
- 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/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 -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 -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 -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 +17 -10
- 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/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 -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 -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 -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/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 +36 -16
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- 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 -2
- 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 -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/android/build.gradle
CHANGED
|
@@ -5,11 +5,17 @@ buildscript {
|
|
|
5
5
|
def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['RNGH_kotlinVersion']
|
|
6
6
|
|
|
7
7
|
repositories {
|
|
8
|
+
maven {
|
|
9
|
+
url "https://plugins.gradle.org/m2/"
|
|
10
|
+
}
|
|
8
11
|
mavenCentral()
|
|
12
|
+
google()
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
dependencies {
|
|
12
16
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
|
|
17
|
+
classpath("com.android.tools.build:gradle:7.2.1")
|
|
18
|
+
classpath("com.diffplug.spotless:spotless-plugin-gradle:6.7.2")
|
|
13
19
|
}
|
|
14
20
|
}
|
|
15
21
|
|
|
@@ -48,6 +54,10 @@ if (isNewArchitectureEnabled()) {
|
|
|
48
54
|
apply plugin: 'com.android.library'
|
|
49
55
|
apply plugin: 'kotlin-android'
|
|
50
56
|
|
|
57
|
+
if (project == rootProject) {
|
|
58
|
+
apply from: "spotless.gradle"
|
|
59
|
+
}
|
|
60
|
+
|
|
51
61
|
def safeExtGet(prop, fallback) {
|
|
52
62
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
53
63
|
}
|
|
@@ -162,13 +172,8 @@ android {
|
|
|
162
172
|
exclude "**/libreact_render*.so"
|
|
163
173
|
}
|
|
164
174
|
|
|
165
|
-
// Include "lib/" as sources, unfortunately react-native link can't handle
|
|
166
|
-
// setting up alternative gradle modules. We still have "lib" defined as a
|
|
167
|
-
// standalone gradle module just to be used in AndroidNativeExample
|
|
168
175
|
sourceSets.main {
|
|
169
176
|
java {
|
|
170
|
-
srcDirs += 'lib/src/main/java'
|
|
171
|
-
|
|
172
177
|
// Include "common/" only when it's not provided by Reanimated to mitigate
|
|
173
178
|
// multiple definitions of the same class preventing build
|
|
174
179
|
if (shouldUseCommonInterfaceFromReanimated()) {
|
package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
CHANGED
|
@@ -4,7 +4,7 @@ import com.facebook.react.bridge.ReactContext
|
|
|
4
4
|
import com.facebook.react.uimanager.events.Event
|
|
5
5
|
|
|
6
6
|
class ReanimatedEventDispatcher {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
fun <T : Event<T>>sendEvent(event: T, reactApplicationContext: ReactContext) {
|
|
8
|
+
// no-op
|
|
9
|
+
}
|
|
10
10
|
}
|
package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
CHANGED
|
@@ -5,13 +5,13 @@ import com.facebook.react.uimanager.events.Event
|
|
|
5
5
|
import com.swmansion.reanimated.ReanimatedModule
|
|
6
6
|
|
|
7
7
|
class ReanimatedEventDispatcher {
|
|
8
|
-
|
|
8
|
+
private var reanimatedModule: ReanimatedModule? = null
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
reanimatedModule?.nodesManager?.onEventDispatch(event)
|
|
10
|
+
fun <T : Event<T>>sendEvent(event: T, reactApplicationContext: ReactContext) {
|
|
11
|
+
if (reanimatedModule == null) {
|
|
12
|
+
reanimatedModule = reactApplicationContext.getNativeModule(ReanimatedModule::class.java)
|
|
16
13
|
}
|
|
14
|
+
|
|
15
|
+
reanimatedModule?.nodesManager?.onEventDispatch(event)
|
|
16
|
+
}
|
|
17
17
|
}
|
|
@@ -7,6 +7,6 @@ import com.facebook.react.uimanager.common.UIManagerType
|
|
|
7
7
|
import com.facebook.react.uimanager.events.Event
|
|
8
8
|
|
|
9
9
|
fun ReactContext.dispatchEvent(event: Event<*>) {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
val fabricUIManager = UIManagerHelper.getUIManager(this, UIManagerType.FABRIC) as FabricUIManager
|
|
11
|
+
fabricUIManager.eventDispatcher.dispatchEvent(event)
|
|
12
12
|
}
|
|
@@ -4,10 +4,9 @@ import com.facebook.react.ReactPackage
|
|
|
4
4
|
import com.facebook.react.bridge.NativeModule
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
6
|
import com.facebook.react.uimanager.ViewManager
|
|
7
|
-
import com.swmansion.gesturehandler.
|
|
7
|
+
import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager
|
|
8
8
|
import com.swmansion.gesturehandler.react.RNGestureHandlerModule
|
|
9
9
|
import com.swmansion.gesturehandler.react.RNGestureHandlerRootViewManager
|
|
10
|
-
import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager
|
|
11
10
|
|
|
12
11
|
class RNGestureHandlerPackage : ReactPackage {
|
|
13
12
|
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
|
|
@@ -17,5 +16,6 @@ class RNGestureHandlerPackage : ReactPackage {
|
|
|
17
16
|
override fun createViewManagers(reactContext: ReactApplicationContext) =
|
|
18
17
|
listOf<ViewManager<*, *>>(
|
|
19
18
|
RNGestureHandlerRootViewManager(),
|
|
20
|
-
RNGestureHandlerButtonViewManager()
|
|
19
|
+
RNGestureHandlerButtonViewManager()
|
|
20
|
+
)
|
|
21
21
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
@@ -37,14 +37,17 @@ class FlingGestureHandler : GestureHandler<FlingGestureHandler>() {
|
|
|
37
37
|
|
|
38
38
|
private fun tryEndFling(event: MotionEvent) = if (
|
|
39
39
|
maxNumberOfPointersSimultaneously == numberOfPointersRequired &&
|
|
40
|
-
(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
(
|
|
41
|
+
direction and DIRECTION_RIGHT != 0 &&
|
|
42
|
+
event.rawX - startX > minAcceptableDelta ||
|
|
43
|
+
direction and DIRECTION_LEFT != 0 &&
|
|
44
|
+
startX - event.rawX > minAcceptableDelta ||
|
|
45
|
+
direction and DIRECTION_UP != 0 &&
|
|
46
|
+
startY - event.rawY > minAcceptableDelta ||
|
|
47
|
+
direction and DIRECTION_DOWN != 0 &&
|
|
48
|
+
event.rawY - startY > minAcceptableDelta
|
|
49
|
+
)
|
|
50
|
+
) {
|
|
48
51
|
handler!!.removeCallbacksAndMessages(null)
|
|
49
52
|
activate()
|
|
50
53
|
true
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.gesturehandler
|
|
1
|
+
package com.swmansion.gesturehandler.core
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
4
|
import android.content.Context
|
|
@@ -14,6 +14,7 @@ import com.facebook.react.bridge.Arguments
|
|
|
14
14
|
import com.facebook.react.bridge.UiThreadUtil
|
|
15
15
|
import com.facebook.react.bridge.WritableArray
|
|
16
16
|
import com.facebook.react.uimanager.PixelUtil
|
|
17
|
+
import com.swmansion.gesturehandler.BuildConfig
|
|
17
18
|
import com.swmansion.gesturehandler.react.RNGestureHandlerTouchEvent
|
|
18
19
|
import java.lang.IllegalStateException
|
|
19
20
|
import java.util.*
|
|
@@ -48,7 +49,6 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
48
49
|
private val trackedPointers: Array<PointerData?> = Array(MAX_POINTERS_COUNT) { null }
|
|
49
50
|
var needsPointerData = false
|
|
50
51
|
|
|
51
|
-
|
|
52
52
|
private var hitSlop: FloatArray? = null
|
|
53
53
|
var eventCoalescingKey: Short = 0
|
|
54
54
|
private set
|
|
@@ -127,11 +127,15 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
fun setManualActivation(manualActivation: Boolean): ConcreteGestureHandlerT =
|
|
130
|
-
|
|
130
|
+
applySelf { this.manualActivation = manualActivation }
|
|
131
131
|
|
|
132
132
|
fun setHitSlop(
|
|
133
|
-
leftPad: Float,
|
|
134
|
-
|
|
133
|
+
leftPad: Float,
|
|
134
|
+
topPad: Float,
|
|
135
|
+
rightPad: Float,
|
|
136
|
+
bottomPad: Float,
|
|
137
|
+
width: Float,
|
|
138
|
+
height: Float,
|
|
135
139
|
): ConcreteGestureHandlerT = applySelf {
|
|
136
140
|
if (hitSlop == null) {
|
|
137
141
|
hitSlop = FloatArray(6)
|
|
@@ -278,7 +282,7 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
278
282
|
}
|
|
279
283
|
|
|
280
284
|
// introduced in 1.11.0, remove if crashes are not reported
|
|
281
|
-
if(pointerProps.isEmpty()|| pointerCoords.isEmpty()){
|
|
285
|
+
if (pointerProps.isEmpty() || pointerCoords.isEmpty()) {
|
|
282
286
|
throw IllegalStateException("pointerCoords.size=${pointerCoords.size}, pointerProps.size=${pointerProps.size}")
|
|
283
287
|
}
|
|
284
288
|
|
|
@@ -289,8 +293,8 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
289
293
|
event.eventTime,
|
|
290
294
|
action,
|
|
291
295
|
count,
|
|
292
|
-
pointerProps,
|
|
293
|
-
pointerCoords,
|
|
296
|
+
pointerProps, /* props are copied and hence it is safe to use static array here */
|
|
297
|
+
pointerCoords, /* same applies to coords */
|
|
294
298
|
event.metaState,
|
|
295
299
|
event.buttonState,
|
|
296
300
|
event.xPrecision,
|
|
@@ -313,7 +317,8 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
313
317
|
handler: GestureHandler<*>,
|
|
314
318
|
event: MotionEvent,
|
|
315
319
|
e: IllegalArgumentException
|
|
316
|
-
) : Exception(
|
|
320
|
+
) : Exception(
|
|
321
|
+
"""
|
|
317
322
|
handler: ${handler::class.simpleName}
|
|
318
323
|
state: ${handler.state}
|
|
319
324
|
view: ${handler.view}
|
|
@@ -324,14 +329,17 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
324
329
|
trackedPointersCount: ${handler.trackedPointersIDsCount}
|
|
325
330
|
trackedPointers: ${handler.trackedPointerIDs.joinToString(separator = ", ")}
|
|
326
331
|
while handling event: $event
|
|
327
|
-
|
|
332
|
+
""".trimIndent(),
|
|
333
|
+
e
|
|
334
|
+
)
|
|
328
335
|
|
|
329
336
|
fun handle(transformedEvent: MotionEvent, sourceEvent: MotionEvent) {
|
|
330
|
-
if (!isEnabled
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
337
|
+
if (!isEnabled ||
|
|
338
|
+
state == STATE_CANCELLED ||
|
|
339
|
+
state == STATE_FAILED ||
|
|
340
|
+
state == STATE_END ||
|
|
341
|
+
trackedPointersIDsCount < 1
|
|
342
|
+
) {
|
|
335
343
|
return
|
|
336
344
|
}
|
|
337
345
|
|
|
@@ -380,11 +388,11 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
380
388
|
val offsetY = event.rawY - event.y
|
|
381
389
|
|
|
382
390
|
trackedPointers[pointerId] = PointerData(
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
391
|
+
pointerId,
|
|
392
|
+
event.getX(event.actionIndex),
|
|
393
|
+
event.getY(event.actionIndex),
|
|
394
|
+
event.getX(event.actionIndex) + offsetX - windowOffset[0],
|
|
395
|
+
event.getY(event.actionIndex) + offsetY - windowOffset[1],
|
|
388
396
|
)
|
|
389
397
|
trackedPointersCount++
|
|
390
398
|
addChangedPointer(trackedPointers[pointerId]!!)
|
|
@@ -402,11 +410,11 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
402
410
|
val offsetY = event.rawY - event.y
|
|
403
411
|
|
|
404
412
|
trackedPointers[pointerId] = PointerData(
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
413
|
+
pointerId,
|
|
414
|
+
event.getX(event.actionIndex),
|
|
415
|
+
event.getY(event.actionIndex),
|
|
416
|
+
event.getX(event.actionIndex) + offsetX - windowOffset[0],
|
|
417
|
+
event.getY(event.actionIndex) + offsetY - windowOffset[1],
|
|
410
418
|
)
|
|
411
419
|
addChangedPointer(trackedPointers[pointerId]!!)
|
|
412
420
|
trackedPointers[pointerId] = null
|
|
@@ -545,11 +553,11 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
545
553
|
}
|
|
546
554
|
|
|
547
555
|
fun wantEvents(): Boolean {
|
|
548
|
-
return isEnabled
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
556
|
+
return isEnabled &&
|
|
557
|
+
state != STATE_FAILED &&
|
|
558
|
+
state != STATE_CANCELLED &&
|
|
559
|
+
state != STATE_END &&
|
|
560
|
+
trackedPointersIDsCount > 0
|
|
553
561
|
}
|
|
554
562
|
|
|
555
563
|
open fun shouldRequireToWaitForFailure(handler: GestureHandler<*>): Boolean {
|
|
@@ -745,7 +753,7 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
745
753
|
private lateinit var pointerCoords: Array<PointerCoords?>
|
|
746
754
|
private fun initPointerProps(size: Int) {
|
|
747
755
|
var size = size
|
|
748
|
-
if (
|
|
756
|
+
if (!Companion::pointerProps.isInitialized) {
|
|
749
757
|
pointerProps = arrayOfNulls(MAX_POINTERS_COUNT)
|
|
750
758
|
pointerCoords = arrayOfNulls(MAX_POINTERS_COUNT)
|
|
751
759
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.gesturehandler
|
|
1
|
+
package com.swmansion.gesturehandler.core
|
|
2
2
|
|
|
3
3
|
import android.graphics.Matrix
|
|
4
4
|
import android.graphics.PointF
|
|
@@ -134,7 +134,10 @@ class GestureHandlerOrchestrator(
|
|
|
134
134
|
// their state is set to END and when the gesture they are waiting for activates they
|
|
135
135
|
// should be cancelled, however `cancel` was never sent as gestures were already in the END state.
|
|
136
136
|
// Send synthetic BEGAN -> CANCELLED to properly handle JS logic
|
|
137
|
-
otherHandler.dispatchStateChange(
|
|
137
|
+
otherHandler.dispatchStateChange(
|
|
138
|
+
GestureHandler.STATE_CANCELLED,
|
|
139
|
+
GestureHandler.STATE_BEGAN
|
|
140
|
+
)
|
|
138
141
|
}
|
|
139
142
|
otherHandler.isAwaiting = false
|
|
140
143
|
} else {
|
|
@@ -253,10 +256,10 @@ class GestureHandlerOrchestrator(
|
|
|
253
256
|
|
|
254
257
|
val action = sourceEvent.actionMasked
|
|
255
258
|
val event = transformEventToViewCoords(handler.view, MotionEvent.obtain(sourceEvent))
|
|
256
|
-
|
|
259
|
+
|
|
257
260
|
// Touch events are sent before the handler itself has a chance to process them,
|
|
258
261
|
// mainly because `onTouchesUp` shoul be send befor gesture finishes. This means that
|
|
259
|
-
// the first `onTouchesDown` event is sent before a gesture begins, activation in
|
|
262
|
+
// the first `onTouchesDown` event is sent before a gesture begins, activation in
|
|
260
263
|
// callback for this event causes problems because the handler doesn't have a chance
|
|
261
264
|
// to initialize itself with starting values of pointer (in pan this causes translation
|
|
262
265
|
// to be equal to the coordinates of the pointer). The simplest solution is to send
|
|
@@ -475,9 +478,10 @@ class GestureHandlerOrchestrator(
|
|
|
475
478
|
|
|
476
479
|
// if the pointer is inside the view but it overflows its parent, handlers attached to the parent
|
|
477
480
|
// might not have been extracted (pointer might be in a child, but may be outside parent)
|
|
478
|
-
if (coords[0] in 0f..view.width.toFloat() && coords[1] in 0f..view.height.toFloat()
|
|
479
|
-
|
|
480
|
-
|
|
481
|
+
if (coords[0] in 0f..view.width.toFloat() && coords[1] in 0f..view.height.toFloat() &&
|
|
482
|
+
isViewOverflowingParent(view) && extractAncestorHandlers(view, coords, pointerId)
|
|
483
|
+
) {
|
|
484
|
+
found = true
|
|
481
485
|
}
|
|
482
486
|
|
|
483
487
|
return found
|
|
@@ -527,8 +531,10 @@ class GestureHandlerOrchestrator(
|
|
|
527
531
|
}
|
|
528
532
|
PointerEventsConfig.BOX_ONLY -> {
|
|
529
533
|
// This view is the target, its children don't matter
|
|
530
|
-
(
|
|
531
|
-
|
|
534
|
+
(
|
|
535
|
+
recordViewHandlersForPointer(view, coords, pointerId) ||
|
|
536
|
+
shouldHandlerlessViewBecomeTouchTarget(view, coords)
|
|
537
|
+
)
|
|
532
538
|
}
|
|
533
539
|
PointerEventsConfig.BOX_NONE -> {
|
|
534
540
|
// This view can't be the target, but its children might
|
|
@@ -557,8 +563,10 @@ class GestureHandlerOrchestrator(
|
|
|
557
563
|
extractGestureHandlers(view, coords, pointerId)
|
|
558
564
|
} else false
|
|
559
565
|
|
|
560
|
-
(
|
|
561
|
-
|
|
566
|
+
(
|
|
567
|
+
recordViewHandlersForPointer(view, coords, pointerId) ||
|
|
568
|
+
found || shouldHandlerlessViewBecomeTouchTarget(view, coords)
|
|
569
|
+
)
|
|
562
570
|
}
|
|
563
571
|
}
|
|
564
572
|
|
|
@@ -570,7 +578,6 @@ class GestureHandlerOrchestrator(
|
|
|
570
578
|
private fun isClipping(view: View) =
|
|
571
579
|
view !is ViewGroup || viewConfigHelper.isViewClippingChildren(view)
|
|
572
580
|
|
|
573
|
-
|
|
574
581
|
companion object {
|
|
575
582
|
// The limit doesn't necessarily need to exists, it was just simpler to implement it that way
|
|
576
583
|
// it is also more allocation-wise efficient to have a fixed limit
|
|
@@ -637,14 +644,15 @@ class GestureHandlerOrchestrator(
|
|
|
637
644
|
x in 0f..child.width.toFloat() && y in 0f..child.height.toFloat()
|
|
638
645
|
|
|
639
646
|
private fun shouldHandlerWaitForOther(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean {
|
|
640
|
-
return handler !== other && (
|
|
641
|
-
|
|
647
|
+
return handler !== other && (
|
|
648
|
+
handler.shouldWaitForHandlerFailure(other) ||
|
|
649
|
+
other.shouldRequireToWaitForFailure(handler)
|
|
650
|
+
)
|
|
642
651
|
}
|
|
643
652
|
|
|
644
653
|
private fun canRunSimultaneously(a: GestureHandler<*>, b: GestureHandler<*>) =
|
|
645
654
|
a === b || a.shouldRecognizeSimultaneously(b) || b.shouldRecognizeSimultaneously(a)
|
|
646
655
|
|
|
647
|
-
|
|
648
656
|
private fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean {
|
|
649
657
|
if (!handler.hasCommonPointers(other)) {
|
|
650
658
|
// if two handlers share no common pointer one can never trigger cancel for the other
|
|
@@ -656,7 +664,8 @@ class GestureHandlerOrchestrator(
|
|
|
656
664
|
return false
|
|
657
665
|
}
|
|
658
666
|
return if (handler !== other &&
|
|
659
|
-
(handler.isAwaiting || handler.state == GestureHandler.STATE_ACTIVE)
|
|
667
|
+
(handler.isAwaiting || handler.state == GestureHandler.STATE_ACTIVE)
|
|
668
|
+
) {
|
|
660
669
|
// in every other case as long as the handler is about to be activated or already in active
|
|
661
670
|
// state, we delegate the decision to the implementation of GestureHandler#shouldBeCancelledBy
|
|
662
671
|
handler.shouldBeCancelledBy(other)
|
|
@@ -664,8 +673,8 @@ class GestureHandlerOrchestrator(
|
|
|
664
673
|
}
|
|
665
674
|
|
|
666
675
|
private fun isFinished(state: Int) =
|
|
667
|
-
state == GestureHandler.STATE_CANCELLED
|
|
668
|
-
|
|
669
|
-
|
|
676
|
+
state == GestureHandler.STATE_CANCELLED ||
|
|
677
|
+
state == GestureHandler.STATE_FAILED ||
|
|
678
|
+
state == GestureHandler.STATE_END
|
|
670
679
|
}
|
|
671
680
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.gesturehandler
|
|
1
|
+
package com.swmansion.gesturehandler.core
|
|
2
2
|
|
|
3
3
|
import android.os.SystemClock
|
|
4
4
|
import android.view.MotionEvent
|
|
@@ -114,7 +114,7 @@ class NativeViewGestureHandler : GestureHandler<NativeViewGestureHandler>() {
|
|
|
114
114
|
override fun onCancel() {
|
|
115
115
|
val time = SystemClock.uptimeMillis()
|
|
116
116
|
val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0).apply {
|
|
117
|
-
action =
|
|
117
|
+
action = MotionEvent.ACTION_CANCEL
|
|
118
118
|
}
|
|
119
119
|
view!!.onTouchEvent(event)
|
|
120
120
|
}
|
|
@@ -172,8 +172,8 @@ class NativeViewGestureHandler : GestureHandler<NativeViewGestureHandler>() {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
private class EditTextHook(
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
private val handler: NativeViewGestureHandler,
|
|
176
|
+
private val editText: ReactEditText
|
|
177
177
|
) : NativeViewGestureHandlerHook {
|
|
178
178
|
private var startX = 0f
|
|
179
179
|
private var startY = 0f
|
|
@@ -194,7 +194,7 @@ class NativeViewGestureHandler : GestureHandler<NativeViewGestureHandler>() {
|
|
|
194
194
|
// of RNGestureHandlerRootHelper so no explicit type checks, but its tag is always negative
|
|
195
195
|
// also if other handler is NativeViewGestureHandler then don't override the default implementation
|
|
196
196
|
override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>) =
|
|
197
|
-
|
|
197
|
+
handler.tag > 0 && handler !is NativeViewGestureHandler
|
|
198
198
|
|
|
199
199
|
override fun wantsToHandleEventBeforeActivation() = true
|
|
200
200
|
|
|
@@ -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)!!
|