diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5acab8edd496e..234181c1851f4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,7 +13,7 @@ Package-specific changes not released in any SDK will be added here just before
- Updated `@shopify/flash-list` from `1.1.0` to `1.3.0`. ([#19317](https://github.com/expo/expo/pull/19317) by [@kudo](https://github.com/kudo))
- Updated `react-native-view-shot` from `3.3.0` to `3.4.0`. ([#19405](https://github.com/expo/expo/pull/19405) by [@douglowder](https://github.com/douglowder))
- Updated `react-native-webview` from `11.23.0` to `11.23.1`. ([#19375](https://github.com/expo/expo/pull/19375) by [@aleqsio](https://github.com/aleqsio))
-- Updated `react-native-gesture-handler` from `2.5.0` to `2.7.0`. ([#19362](https://github.com/expo/expo/pull/19362) by [@tsapeta](https://github.com/tsapeta))
+- Updated `react-native-gesture-handler` from `2.5.0` to `2.8.0`. ([#19362](https://github.com/expo/expo/pull/19362) & [#19654](https://github.com/expo/expo/pull/19654) by [@tsapeta](https://github.com/tsapeta) & [@lukmccall](https://github.com/lukmccall))
- Updated `@react-native-community/netinfo` from `9.3.0` to `9.3.3`. ([#19421](https://github.com/expo/expo/pull/19421) by [@douglowder](https://github.com/douglowder))
- Updated `@react-native-picker/picker` from `2.4.2` to `2.4.6`. ([#19390](https://github.com/expo/expo/pull/19390) by [@aleqsio](https://github.com/aleqsio))
- Updated `react-native-screens` from `3.15.0` to `3.18.0`. ([#19383](https://github.com/expo/expo/pull/19383) by [@tsapeta](https://github.com/tsapeta))
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle b/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle
index f0e3e1708ebf5..211382b95ff35 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle
@@ -5,11 +5,17 @@ buildscript {
def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['RNGH_kotlinVersion']
repositories {
+ maven {
+ url "https://plugins.gradle.org/m2/"
+ }
mavenCentral()
+ google()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
+ classpath("com.android.tools.build:gradle:7.2.1")
+ classpath("com.diffplug.spotless:spotless-plugin-gradle:6.7.2")
}
}
@@ -48,6 +54,10 @@ if (isNewArchitectureEnabled()) {
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
+if (project == rootProject) {
+ apply from: "spotless.gradle"
+}
+
def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
@@ -164,13 +174,8 @@ android {
exclude "**/libreact_render*.so"
}
- // Include "lib/" as sources, unfortunately react-native link can't handle
- // setting up alternative gradle modules. We still have "lib" defined as a
- // standalone gradle module just to be used in AndroidNativeExample
sourceSets.main {
java {
- srcDirs += 'lib/src/main/java'
-
// Include "common/" only when it's not provided by Reanimated to mitigate
// multiple definitions of the same class preventing build
if (shouldUseCommonInterfaceFromReanimated()) {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties b/android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties
deleted file mode 100644
index bb5cbe32541a0..0000000000000
--- a/android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx10248m -XX:MaxPermSize=256m
-org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-RNGH_kotlinVersion=1.6.21
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/AndroidManifest.xml b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/AndroidManifest.xml
deleted file mode 100644
index 5fa4c9c519414..0000000000000
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/test/java/com/swmansion/gesturehandler/ExampleUnitTest.java b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/test/java/com/swmansion/gesturehandler/ExampleUnitTest.java
deleted file mode 100644
index b258220b8e2f3..0000000000000
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/test/java/com/swmansion/gesturehandler/ExampleUnitTest.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.swmansion.gesturehandler;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt b/android/vendored/unversioned/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
index 6202cde89b3a9..9e81005ddfbf8 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
@@ -4,7 +4,7 @@ import com.facebook.react.bridge.ReactContext
import com.facebook.react.uimanager.events.Event
class ReanimatedEventDispatcher {
- fun >sendEvent(event: T, reactApplicationContext: ReactContext) {
- // no-op
- }
+ fun >sendEvent(event: T, reactApplicationContext: ReactContext) {
+ // no-op
+ }
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt b/android/vendored/unversioned/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
index 3abd66529cd15..d1d47301d4182 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt
@@ -5,13 +5,13 @@ import com.facebook.react.uimanager.events.Event
import com.swmansion.reanimated.ReanimatedModule
class ReanimatedEventDispatcher {
- private var reanimatedModule: ReanimatedModule? = null
+ private var reanimatedModule: ReanimatedModule? = null
- fun >sendEvent(event: T, reactApplicationContext: ReactContext) {
- if (reanimatedModule == null) {
- reanimatedModule = reactApplicationContext.getNativeModule(ReanimatedModule::class.java)
- }
-
- reanimatedModule?.nodesManager?.onEventDispatch(event)
+ fun >sendEvent(event: T, reactApplicationContext: ReactContext) {
+ if (reanimatedModule == null) {
+ reanimatedModule = reactApplicationContext.getNativeModule(ReanimatedModule::class.java)
}
+
+ reanimatedModule?.nodesManager?.onEventDispatch(event)
+ }
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/settings.gradle b/android/vendored/unversioned/react-native-gesture-handler/android/settings.gradle
deleted file mode 100644
index c8e23f4979eb4..0000000000000
--- a/android/vendored/unversioned/react-native-gesture-handler/android/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-include 'lib'
\ No newline at end of file
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt
index bdc18b772df1d..2e05de9bfb639 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt
@@ -7,6 +7,6 @@ import com.facebook.react.uimanager.common.UIManagerType
import com.facebook.react.uimanager.events.Event
fun ReactContext.dispatchEvent(event: Event<*>) {
- val fabricUIManager = UIManagerHelper.getUIManager(this, UIManagerType.FABRIC) as FabricUIManager
- fabricUIManager.eventDispatcher.dispatchEvent(event)
+ val fabricUIManager = UIManagerHelper.getUIManager(this, UIManagerType.FABRIC) as FabricUIManager
+ fabricUIManager.eventDispatcher.dispatchEvent(event)
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt
index d022eb381e86a..48b7d2a15ad67 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt
@@ -4,10 +4,9 @@ import com.facebook.react.ReactPackage
import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManager
-import com.swmansion.gesturehandler.BuildConfig
+import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager
import com.swmansion.gesturehandler.react.RNGestureHandlerModule
import com.swmansion.gesturehandler.react.RNGestureHandlerRootViewManager
-import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager
class RNGestureHandlerPackage : ReactPackage {
override fun createNativeModules(reactContext: ReactApplicationContext): List {
@@ -17,5 +16,6 @@ class RNGestureHandlerPackage : ReactPackage {
override fun createViewManagers(reactContext: ReactApplicationContext) =
listOf>(
RNGestureHandlerRootViewManager(),
- RNGestureHandlerButtonViewManager())
+ RNGestureHandlerButtonViewManager()
+ )
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt
similarity index 84%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt
index fc2c8ed019bd0..e3078d0dbfc7f 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.os.Handler
import android.os.Looper
@@ -37,14 +37,17 @@ class FlingGestureHandler : GestureHandler() {
private fun tryEndFling(event: MotionEvent) = if (
maxNumberOfPointersSimultaneously == numberOfPointersRequired &&
- (direction and DIRECTION_RIGHT != 0 &&
- event.rawX - startX > minAcceptableDelta ||
- direction and DIRECTION_LEFT != 0 &&
- startX - event.rawX > minAcceptableDelta ||
- direction and DIRECTION_UP != 0 &&
- startY - event.rawY > minAcceptableDelta ||
- direction and DIRECTION_DOWN != 0 &&
- event.rawY - startY > minAcceptableDelta)) {
+ (
+ direction and DIRECTION_RIGHT != 0 &&
+ event.rawX - startX > minAcceptableDelta ||
+ direction and DIRECTION_LEFT != 0 &&
+ startX - event.rawX > minAcceptableDelta ||
+ direction and DIRECTION_UP != 0 &&
+ startY - event.rawY > minAcceptableDelta ||
+ direction and DIRECTION_DOWN != 0 &&
+ event.rawY - startY > minAcceptableDelta
+ )
+ ) {
handler!!.removeCallbacksAndMessages(null)
activate()
true
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt
similarity index 94%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt
index f690e42efb771..2c5f4b31291bb 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.app.Activity
import android.content.Context
@@ -14,6 +14,7 @@ import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.UiThreadUtil
import com.facebook.react.bridge.WritableArray
import com.facebook.react.uimanager.PixelUtil
+import com.swmansion.gesturehandler.BuildConfig
import com.swmansion.gesturehandler.react.RNGestureHandlerTouchEvent
import java.lang.IllegalStateException
import java.util.*
@@ -48,7 +49,6 @@ open class GestureHandler = Array(MAX_POINTERS_COUNT) { null }
var needsPointerData = false
-
private var hitSlop: FloatArray? = null
var eventCoalescingKey: Short = 0
private set
@@ -127,11 +127,15 @@ open class GestureHandler,
event: MotionEvent,
e: IllegalArgumentException
- ) : Exception("""
+ ) : Exception(
+ """
handler: ${handler::class.simpleName}
state: ${handler.state}
view: ${handler.view}
@@ -324,14 +329,17 @@ open class GestureHandler 0
+ return isEnabled &&
+ state != STATE_FAILED &&
+ state != STATE_CANCELLED &&
+ state != STATE_END &&
+ trackedPointersIDsCount > 0
}
open fun shouldRequireToWaitForFailure(handler: GestureHandler<*>): Boolean {
@@ -745,7 +753,7 @@ open class GestureHandler
private fun initPointerProps(size: Int) {
var size = size
- if (!::pointerProps.isInitialized) {
+ if (!Companion::pointerProps.isInitialized) {
pointerProps = arrayOfNulls(MAX_POINTERS_COUNT)
pointerCoords = arrayOfNulls(MAX_POINTERS_COUNT)
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt
similarity index 91%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt
index c9dfa2ab4c3cf..97f35d0c3850f 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
interface GestureHandlerInteractionController {
fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt
similarity index 96%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt
index d4380a2faaed8..5794462956307 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.graphics.Matrix
import android.graphics.PointF
@@ -134,7 +134,10 @@ class GestureHandlerOrchestrator(
// their state is set to END and when the gesture they are waiting for activates they
// should be cancelled, however `cancel` was never sent as gestures were already in the END state.
// Send synthetic BEGAN -> CANCELLED to properly handle JS logic
- otherHandler.dispatchStateChange(GestureHandler.STATE_CANCELLED, GestureHandler.STATE_BEGAN)
+ otherHandler.dispatchStateChange(
+ GestureHandler.STATE_CANCELLED,
+ GestureHandler.STATE_BEGAN
+ )
}
otherHandler.isAwaiting = false
} else {
@@ -253,10 +256,10 @@ class GestureHandlerOrchestrator(
val action = sourceEvent.actionMasked
val event = transformEventToViewCoords(handler.view, MotionEvent.obtain(sourceEvent))
-
+
// Touch events are sent before the handler itself has a chance to process them,
// mainly because `onTouchesUp` shoul be send befor gesture finishes. This means that
- // the first `onTouchesDown` event is sent before a gesture begins, activation in
+ // the first `onTouchesDown` event is sent before a gesture begins, activation in
// callback for this event causes problems because the handler doesn't have a chance
// to initialize itself with starting values of pointer (in pan this causes translation
// to be equal to the coordinates of the pointer). The simplest solution is to send
@@ -475,9 +478,10 @@ class GestureHandlerOrchestrator(
// if the pointer is inside the view but it overflows its parent, handlers attached to the parent
// might not have been extracted (pointer might be in a child, but may be outside parent)
- if (coords[0] in 0f..view.width.toFloat() && coords[1] in 0f..view.height.toFloat()
- && isViewOverflowingParent(view) && extractAncestorHandlers(view, coords, pointerId)) {
- found = true
+ if (coords[0] in 0f..view.width.toFloat() && coords[1] in 0f..view.height.toFloat() &&
+ isViewOverflowingParent(view) && extractAncestorHandlers(view, coords, pointerId)
+ ) {
+ found = true
}
return found
@@ -527,8 +531,10 @@ class GestureHandlerOrchestrator(
}
PointerEventsConfig.BOX_ONLY -> {
// This view is the target, its children don't matter
- (recordViewHandlersForPointer(view, coords, pointerId)
- || shouldHandlerlessViewBecomeTouchTarget(view, coords))
+ (
+ recordViewHandlersForPointer(view, coords, pointerId) ||
+ shouldHandlerlessViewBecomeTouchTarget(view, coords)
+ )
}
PointerEventsConfig.BOX_NONE -> {
// This view can't be the target, but its children might
@@ -557,8 +563,10 @@ class GestureHandlerOrchestrator(
extractGestureHandlers(view, coords, pointerId)
} else false
- (recordViewHandlersForPointer(view, coords, pointerId)
- || found || shouldHandlerlessViewBecomeTouchTarget(view, coords))
+ (
+ recordViewHandlersForPointer(view, coords, pointerId) ||
+ found || shouldHandlerlessViewBecomeTouchTarget(view, coords)
+ )
}
}
@@ -570,7 +578,6 @@ class GestureHandlerOrchestrator(
private fun isClipping(view: View) =
view !is ViewGroup || viewConfigHelper.isViewClippingChildren(view)
-
companion object {
// The limit doesn't necessarily need to exists, it was just simpler to implement it that way
// it is also more allocation-wise efficient to have a fixed limit
@@ -637,14 +644,15 @@ class GestureHandlerOrchestrator(
x in 0f..child.width.toFloat() && y in 0f..child.height.toFloat()
private fun shouldHandlerWaitForOther(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean {
- return handler !== other && (handler.shouldWaitForHandlerFailure(other)
- || other.shouldRequireToWaitForFailure(handler))
+ return handler !== other && (
+ handler.shouldWaitForHandlerFailure(other) ||
+ other.shouldRequireToWaitForFailure(handler)
+ )
}
private fun canRunSimultaneously(a: GestureHandler<*>, b: GestureHandler<*>) =
a === b || a.shouldRecognizeSimultaneously(b) || b.shouldRecognizeSimultaneously(a)
-
private fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean {
if (!handler.hasCommonPointers(other)) {
// if two handlers share no common pointer one can never trigger cancel for the other
@@ -656,7 +664,8 @@ class GestureHandlerOrchestrator(
return false
}
return if (handler !== other &&
- (handler.isAwaiting || handler.state == GestureHandler.STATE_ACTIVE)) {
+ (handler.isAwaiting || handler.state == GestureHandler.STATE_ACTIVE)
+ ) {
// in every other case as long as the handler is about to be activated or already in active
// state, we delegate the decision to the implementation of GestureHandler#shouldBeCancelledBy
handler.shouldBeCancelledBy(other)
@@ -664,8 +673,8 @@ class GestureHandlerOrchestrator(
}
private fun isFinished(state: Int) =
- state == GestureHandler.STATE_CANCELLED
- || state == GestureHandler.STATE_FAILED
- || state == GestureHandler.STATE_END
+ state == GestureHandler.STATE_CANCELLED ||
+ state == GestureHandler.STATE_FAILED ||
+ state == GestureHandler.STATE_END
}
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt
similarity index 78%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt
index f8f51723cd522..c92862eadd756 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.view.View
import java.util.*
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt
similarity index 96%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt
index 15f9c395c92ec..5060f6b3db0fe 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.view.MotionEvent
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt
similarity index 98%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt
index 47a5222c25f09..23a72545a0bfb 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.content.Context
import android.os.Handler
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt
similarity index 85%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt
index f55ecd68f4f40..cdca5725698ea 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.view.MotionEvent
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt
similarity index 96%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt
index 1ab3048169087..8d0c862a92167 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.os.SystemClock
import android.view.MotionEvent
@@ -114,7 +114,7 @@ class NativeViewGestureHandler : GestureHandler() {
override fun onCancel() {
val time = SystemClock.uptimeMillis()
val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0).apply {
- action = MotionEvent.ACTION_CANCEL
+ action = MotionEvent.ACTION_CANCEL
}
view!!.onTouchEvent(event)
}
@@ -172,8 +172,8 @@ class NativeViewGestureHandler : GestureHandler() {
}
private class EditTextHook(
- private val handler: NativeViewGestureHandler,
- private val editText: ReactEditText
+ private val handler: NativeViewGestureHandler,
+ private val editText: ReactEditText
) : NativeViewGestureHandlerHook {
private var startX = 0f
private var startY = 0f
@@ -194,7 +194,7 @@ class NativeViewGestureHandler : GestureHandler() {
// of RNGestureHandlerRootHelper so no explicit type checks, but its tag is always negative
// also if other handler is NativeViewGestureHandler then don't override the default implementation
override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>) =
- handler.tag > 0 && handler !is NativeViewGestureHandler
+ handler.tag > 0 && handler !is NativeViewGestureHandler
override fun wantsToHandleEventBeforeActivation() = true
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt
similarity index 87%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt
index 2bdd7fa75e632..2784d99dd98f9 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.view.MotionEvent
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt
similarity index 97%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt
index 7caf07fa55fc9..ad74f04e71e4d 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.content.Context
import android.os.Handler
@@ -6,8 +6,8 @@ import android.os.Looper
import android.view.MotionEvent
import android.view.VelocityTracker
import android.view.ViewConfiguration
-import com.swmansion.gesturehandler.GestureUtils.getLastPointerX
-import com.swmansion.gesturehandler.GestureUtils.getLastPointerY
+import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX
+import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY
class PanGestureHandler(context: Context?) : GestureHandler() {
var velocityX = 0f
@@ -173,12 +173,14 @@ class PanGestureHandler(context: Context?) : GestureHandler()
}
val vx = velocityX
if (minVelocityX != MIN_VALUE_IGNORE &&
- (minVelocityX < 0 && vx <= minVelocityX || minVelocityX in 0.0f..vx)) {
+ (minVelocityX < 0 && vx <= minVelocityX || minVelocityX in 0.0f..vx)
+ ) {
return true
}
val vy = velocityY
if (minVelocityY != MIN_VALUE_IGNORE &&
- (minVelocityY < 0 && vx <= minVelocityY || minVelocityY in 0.0f..vx)) {
+ (minVelocityY < 0 && vx <= minVelocityY || minVelocityY in 0.0f..vx)
+ ) {
return true
}
val velocitySq = vx * vx + vy * vy
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt
similarity index 92%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt
index 4f8c1dfe0ca90..28e858938219e 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.graphics.PointF
import android.view.MotionEvent
@@ -18,7 +18,8 @@ class PinchGestureHandler : GestureHandler() {
private var scaleGestureDetector: ScaleGestureDetector? = null
private var startingSpan = 0f
private var spanSlop = 0f
- private val gestureListener: ScaleGestureDetector.OnScaleGestureListener = object : ScaleGestureDetector.OnScaleGestureListener {
+ private val gestureListener: ScaleGestureDetector.OnScaleGestureListener = object :
+ ScaleGestureDetector.OnScaleGestureListener {
override fun onScale(detector: ScaleGestureDetector): Boolean {
val prevScaleFactor: Double = scale
scale *= detector.scaleFactor.toDouble()
@@ -26,8 +27,9 @@ class PinchGestureHandler : GestureHandler() {
if (delta > 0) {
velocity = (scale - prevScaleFactor) / delta
}
- if (abs(startingSpan - detector.currentSpan) >= spanSlop
- && state == STATE_BEGAN) {
+ if (abs(startingSpan - detector.currentSpan) >= spanSlop &&
+ state == STATE_BEGAN
+ ) {
activate()
}
return true
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PointerEventsConfig.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt
similarity index 90%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PointerEventsConfig.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt
index d85ef12f3607e..c84c931bf7b53 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PointerEventsConfig.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
enum class PointerEventsConfig {
/**
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt
similarity index 98%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt
index 6da6049ddc4a8..48cdccd60ee76 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.view.MotionEvent
import kotlin.math.atan2
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt
similarity index 94%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt
index aa6a5b599f8eb..d3d12f460173a 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt
@@ -1,8 +1,8 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.graphics.PointF
import android.view.MotionEvent
-import com.swmansion.gesturehandler.RotationGestureDetector.OnRotationGestureListener
+import com.swmansion.gesturehandler.core.RotationGestureDetector.OnRotationGestureListener
import kotlin.math.abs
class RotationGestureHandler : GestureHandler() {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java
similarity index 99%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java
index 32c266367baf5..8761b9ea2d512 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java
@@ -5,7 +5,7 @@
* Modified line 189 to set initial min span to 0 instead of copying it from the system configuration
*/
-package com.swmansion.gesturehandler;
+package com.swmansion.gesturehandler.core;
import android.content.Context;
import android.os.Build;
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt
similarity index 96%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt
index 048abd7b1123d..cb8adc77b1080 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt
@@ -1,10 +1,10 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.os.Handler
import android.os.Looper
import android.view.MotionEvent
-import com.swmansion.gesturehandler.GestureUtils.getLastPointerX
-import com.swmansion.gesturehandler.GestureUtils.getLastPointerY
+import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX
+import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY
import kotlin.math.abs
class TapGestureHandler : GestureHandler() {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt
similarity index 87%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt
index 131f4869613e8..c8069f3ea09e2 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt
@@ -1,4 +1,4 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.core
import android.view.View
import android.view.ViewGroup
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt
similarity index 60%
rename from android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt
rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt
index a0c959ddec9a9..5f00002d18d9e 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt
@@ -1,11 +1,11 @@
-package com.swmansion.gesturehandler
+package com.swmansion.gesturehandler.react
import com.facebook.react.bridge.ReactContext
import com.facebook.react.modules.core.DeviceEventManagerModule
import com.facebook.react.uimanager.UIManagerModule
val ReactContext.deviceEventEmitter: DeviceEventManagerModule.RCTDeviceEventEmitter
- get() = this.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
+ get() = this.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
val ReactContext.UIManager: UIManagerModule
- get() = this.getNativeModule(UIManagerModule::class.java)!!
+ get() = this.getNativeModule(UIManagerModule::class.java)!!
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt
index 7451e47a51382..740932f13cad6 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt
@@ -27,7 +27,7 @@ import com.facebook.react.uimanager.ViewProps
import com.facebook.react.uimanager.annotations.ReactProp
import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerDelegate
import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerInterface
-import com.swmansion.gesturehandler.NativeViewGestureHandler
+import com.swmansion.gesturehandler.core.NativeViewGestureHandler
import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager.ButtonViewGroup
@ReactModule(name = RNGestureHandlerButtonViewManager.REACT_CLASS)
@@ -35,7 +35,7 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R
private val mDelegate: ViewManagerDelegate
init {
- mDelegate = RNGestureHandlerButtonManagerDelegate(this)
+ mDelegate = RNGestureHandlerButtonManagerDelegate(this)
}
override fun getName() = REACT_CLASS
@@ -91,7 +91,8 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R
return mDelegate
}
- class ButtonViewGroup(context: Context?) : ViewGroup(context),
+ class ButtonViewGroup(context: Context?) :
+ ViewGroup(context),
NativeViewGestureHandler.NativeViewGestureHandlerHook {
// Using object because of handling null representing no value set.
var rippleColor: Int? = null
@@ -254,9 +255,9 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R
}
val drawable = RippleDrawable(
- colorStateList,
- null,
- if (useBorderlessDrawable) null else ShapeDrawable(RectShape())
+ colorStateList,
+ null,
+ if (useBorderlessDrawable) null else ShapeDrawable(RectShape())
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && rippleRadius != null) {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt
index 471ce311ef518..beefe28a99297 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt
@@ -1,12 +1,8 @@
package com.swmansion.gesturehandler.react
import android.content.Context
-import android.os.Bundle
import android.util.AttributeSet
-import android.view.MotionEvent
-import com.facebook.react.ReactInstanceManager
import com.facebook.react.ReactRootView
-import java.lang.Exception
@Deprecated(message = "Use component instead. Check gesture handler installation instructions in documentation for more information.")
class RNGestureHandlerEnabledRootView : ReactRootView {
@@ -14,6 +10,6 @@ class RNGestureHandlerEnabledRootView : ReactRootView {
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {}
init {
- throw UnsupportedOperationException("Your application is configured to use RNGestureHandlerEnabledRootView which is no longer supported. You can see how to migrate to here: https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot")
+ throw UnsupportedOperationException("Your application is configured to use RNGestureHandlerEnabledRootView which is no longer supported. You can see how to migrate to here: https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot")
}
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt
index 10ca971db7daf..a523c6a8dbac7 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt
@@ -11,7 +11,7 @@ import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.WritableMap
import com.facebook.react.uimanager.events.Event
import com.facebook.react.uimanager.events.RCTEventEmitter
-import com.swmansion.gesturehandler.GestureHandler
+import com.swmansion.gesturehandler.core.GestureHandler
class RNGestureHandlerEvent private constructor() : Event() {
private var extraData: WritableMap? = null
@@ -53,13 +53,13 @@ class RNGestureHandlerEvent private constructor() : Event
init(handler, dataExtractor)
}
- fun > createEventData(
+ fun > createEventData(
handler: T,
dataExtractor: RNGestureHandlerEventDataExtractor?
): WritableMap = Arguments.createMap().apply {
- dataExtractor?.extractEventData(handler, this)
- putInt("handlerTag", handler.tag)
- putInt("state", handler.state)
- }
+ dataExtractor?.extractEventData(handler, this)
+ putInt("handlerTag", handler.tag)
+ putInt("state", handler.state)
+ }
}
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt
index 3a4ce05e83034..58e724914971f 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt
@@ -1,7 +1,7 @@
package com.swmansion.gesturehandler.react
import com.facebook.react.bridge.WritableMap
-import com.swmansion.gesturehandler.GestureHandler
+import com.swmansion.gesturehandler.core.GestureHandler
interface RNGestureHandlerEventDataExtractor> {
fun extractEventData(handler: T, eventData: WritableMap)
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt
index 682eeec010e89..2af01ee73b296 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt
@@ -2,9 +2,9 @@ package com.swmansion.gesturehandler.react
import android.util.SparseArray
import com.facebook.react.bridge.ReadableMap
-import com.swmansion.gesturehandler.GestureHandler
-import com.swmansion.gesturehandler.GestureHandlerInteractionController
-import com.swmansion.gesturehandler.NativeViewGestureHandler
+import com.swmansion.gesturehandler.core.GestureHandler
+import com.swmansion.gesturehandler.core.GestureHandlerInteractionController
+import com.swmansion.gesturehandler.core.NativeViewGestureHandler
class RNGestureHandlerInteractionManager : GestureHandlerInteractionController {
private val waitForRelations = SparseArray()
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt
index c710e85e1e823..bafdedf0adab8 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt
@@ -3,17 +3,33 @@ package com.swmansion.gesturehandler.react
import android.content.Context
import android.util.Log
import android.view.MotionEvent
-import android.view.ViewGroup
import com.facebook.react.ReactRootView
-import com.facebook.react.bridge.*
+import com.facebook.react.bridge.JSApplicationIllegalArgumentException
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.bridge.ReactContextBaseJavaModule
+import com.facebook.react.bridge.ReactMethod
+import com.facebook.react.bridge.ReadableMap
+import com.facebook.react.bridge.ReadableType
+import com.facebook.react.bridge.WritableMap
import com.facebook.react.module.annotations.ReactModule
import com.facebook.react.uimanager.PixelUtil
-import com.facebook.react.uimanager.UIBlock
import com.facebook.react.uimanager.events.Event
import com.facebook.soloader.SoLoader
import com.swmansion.common.GestureHandlerStateManager
-import com.swmansion.gesturehandler.*
-import java.util.*
+import com.swmansion.gesturehandler.BuildConfig
+import com.swmansion.gesturehandler.ReanimatedEventDispatcher
+import com.swmansion.gesturehandler.core.FlingGestureHandler
+import com.swmansion.gesturehandler.core.GestureHandler
+import com.swmansion.gesturehandler.core.LongPressGestureHandler
+import com.swmansion.gesturehandler.core.ManualGestureHandler
+import com.swmansion.gesturehandler.core.NativeViewGestureHandler
+import com.swmansion.gesturehandler.core.OnTouchEventListener
+import com.swmansion.gesturehandler.core.PanGestureHandler
+import com.swmansion.gesturehandler.core.PinchGestureHandler
+import com.swmansion.gesturehandler.core.RotationGestureHandler
+import com.swmansion.gesturehandler.core.TapGestureHandler
+import com.swmansion.gesturehandler.dispatchEvent
+
// NativeModule.onCatalystInstanceDestroy() was deprecated in favor of NativeModule.invalidate()
// ref: https://github.com/facebook/react-native/commit/18c8417290823e67e211bde241ae9dde27b72f17
@@ -21,8 +37,8 @@ import java.util.*
// ref: https://github.com/facebook/react-native/commit/acbf9e18ea666b07c1224a324602a41d0a66985e
@Suppress("DEPRECATION")
@ReactModule(name = RNGestureHandlerModule.MODULE_NAME)
-class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
- : ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager {
+class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
+ ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager {
private abstract class HandlerFactory> : RNGestureHandlerEventDataExtractor {
abstract val type: Class
abstract val name: String
@@ -63,7 +79,8 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
super.configure(handler, config)
if (config.hasKey(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)) {
handler.setShouldActivateOnStart(
- config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START))
+ config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)
+ )
}
if (config.hasKey(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) {
handler.setDisallowInterruption(config.getBoolean(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION))
@@ -352,7 +369,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
@ReactMethod
@Suppress("UNCHECKED_CAST")
fun > createGestureHandler(
- handlerName: String, handlerTag: Int, config: ReadableMap,
+ handlerName: String,
+ handlerTag: Int,
+ config: ReadableMap,
) {
for (handlerFactory in handlerFactories as Array>) {
if (handlerFactory.name == handlerName) {
@@ -551,8 +570,9 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
// Reanimated worklet
val event = RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory)
sendEventForReanimated(event)
- } else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT
- || handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API) {
+ } else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT ||
+ handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API
+ ) {
// JS function or Animated.event with useNativeDriver: false with old API
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
val data = RNGestureHandlerStateChangeEvent.createEventData(handler, handlerFactory, newState, oldState)
@@ -570,13 +590,14 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?)
private fun > onTouchEvent(handler: T) {
// triggers onTouchesDown, onTouchesMove, onTouchesUp, onTouchesCancelled callbacks on the JS side
-
+
if (handler.tag < 0) {
// root containers use negative tags, we don't need to dispatch events for them to the JS
return
}
- if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE
- || handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null) {
+ if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE ||
+ handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null
+ ) {
if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) {
// Reanimated worklet
val event = RNGestureHandlerTouchEvent.obtain(handler)
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt
index 6c100f37a1f36..45bb76134e7e6 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt
@@ -3,8 +3,8 @@ package com.swmansion.gesturehandler.react
import android.util.SparseArray
import android.view.View
import com.facebook.react.bridge.UiThreadUtil
-import com.swmansion.gesturehandler.GestureHandler
-import com.swmansion.gesturehandler.GestureHandlerRegistry
+import com.swmansion.gesturehandler.core.GestureHandler
+import com.swmansion.gesturehandler.core.GestureHandlerRegistry
import java.util.*
class RNGestureHandlerRegistry : GestureHandlerRegistry {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt
index 2a3442e7c9f81..b2f229c74a734 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt
@@ -9,9 +9,8 @@ import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.UiThreadUtil
import com.facebook.react.common.ReactConstants
import com.facebook.react.uimanager.RootView
-import com.facebook.react.views.modal.ReactModalHostView
-import com.swmansion.gesturehandler.GestureHandler
-import com.swmansion.gesturehandler.GestureHandlerOrchestrator
+import com.swmansion.gesturehandler.core.GestureHandler
+import com.swmansion.gesturehandler.core.GestureHandlerOrchestrator
class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) {
private val orchestrator: GestureHandlerOrchestrator?
@@ -29,9 +28,11 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
rootView = findRootViewTag(wrappedView)
Log.i(
ReactConstants.TAG,
- "[GESTURE HANDLER] Initialize gesture handler for root view $rootView")
+ "[GESTURE HANDLER] Initialize gesture handler for root view $rootView"
+ )
orchestrator = GestureHandlerOrchestrator(
- wrappedView, registry, RNViewConfigurationHelper()).apply {
+ wrappedView, registry, RNViewConfigurationHelper()
+ ).apply {
minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH
}
jsGestureHandler = RootViewGestureHandler().apply { tag = -wrappedViewTag }
@@ -45,7 +46,8 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView:
fun tearDown() {
Log.i(
ReactConstants.TAG,
- "[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView")
+ "[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView"
+ )
val module = context.getNativeModule(RNGestureHandlerModule::class.java)!!
with(module) {
registry.dropHandler(jsGestureHandler!!.tag)
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt
index da3098fd03218..953d3f3d74250 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt
@@ -4,12 +4,10 @@ import android.content.Context
import android.util.Log
import android.view.MotionEvent
import android.view.ViewGroup
-import android.view.ViewParent
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.UiThreadUtil
import com.facebook.react.common.ReactConstants
import com.facebook.react.uimanager.RootView
-import com.facebook.react.views.modal.ReactModalHostView
import com.facebook.react.views.view.ReactViewGroup
class RNGestureHandlerRootView(context: Context?) : ReactViewGroup(context) {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt
index e310c04314b07..6adf7289744f0 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt
@@ -13,7 +13,8 @@ import com.facebook.react.viewmanagers.RNGestureHandlerRootViewManagerInterface
* to be provided.
*/
@ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS)
-class RNGestureHandlerRootViewManager : ViewGroupManager(),
+class RNGestureHandlerRootViewManager :
+ ViewGroupManager(),
RNGestureHandlerRootViewManagerInterface {
private val mDelegate: ViewManagerDelegate
@@ -41,7 +42,8 @@ class RNGestureHandlerRootViewManager : ViewGroupManager() {
private var extraData: WritableMap? = null
@@ -57,16 +57,16 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event> createEventData(
+ fun > createEventData(
handler: T,
dataExtractor: RNGestureHandlerEventDataExtractor?,
newState: Int,
oldState: Int,
): WritableMap = Arguments.createMap().apply {
- dataExtractor?.extractEventData(handler, this)
- putInt("handlerTag", handler.tag)
- putInt("state", newState)
- putInt("oldState", oldState)
- }
+ dataExtractor?.extractEventData(handler, this)
+ putInt("handlerTag", handler.tag)
+ putInt("state", newState)
+ putInt("oldState", oldState)
+ }
}
}
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt
index 88f0ece7e5e00..63626bad7d1a7 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt
@@ -5,7 +5,7 @@ import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.WritableMap
import com.facebook.react.uimanager.events.Event
import com.facebook.react.uimanager.events.RCTEventEmitter
-import com.swmansion.gesturehandler.GestureHandler
+import com.swmansion.gesturehandler.core.GestureHandler
class RNGestureHandlerTouchEvent private constructor() : Event() {
private var extraData: WritableMap? = null
@@ -43,11 +43,11 @@ class RNGestureHandlerTouchEvent private constructor() : Event(TOUCH_EVENTS_POOL_SIZE)
fun > obtain(handler: T): RNGestureHandlerTouchEvent =
- (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply {
- init(handler)
- }
+ (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply {
+ init(handler)
+ }
- fun > createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
+ fun > createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
putInt("handlerTag", handler.tag)
putInt("state", handler.state)
putInt("numberOfTouches", handler.trackedPointersCount)
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt
index d33c4f3034083..2ef71c0e522fa 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt
@@ -5,8 +5,8 @@ import android.view.ViewGroup
import com.facebook.react.uimanager.PointerEvents
import com.facebook.react.uimanager.ReactPointerEventsView
import com.facebook.react.views.view.ReactViewGroup
-import com.swmansion.gesturehandler.PointerEventsConfig
-import com.swmansion.gesturehandler.ViewConfigurationHelper
+import com.swmansion.gesturehandler.core.PointerEventsConfig
+import com.swmansion.gesturehandler.core.ViewConfigurationHelper
class RNViewConfigurationHelper : ViewConfigurationHelper {
override fun getPointerEventsConfigForView(view: View): PointerEventsConfig {
diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt
index 757956c9eaa7f..7861838735ceb 100644
--- a/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt
+++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt
@@ -5,9 +5,9 @@ import com.facebook.react.uimanager.UIManagerModule
import com.facebook.react.uimanager.events.Event
fun ReactContext.dispatchEvent(event: Event<*>) {
- try {
- this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event)
- } catch (e: NullPointerException) {
- throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e)
- }
+ try {
+ this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event)
+ } catch (e: NullPointerException) {
+ throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e)
+ }
}
diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock
index f9f607bcb6858..c4ec33eea8f46 100644
--- a/apps/bare-expo/ios/Podfile.lock
+++ b/apps/bare-expo/ios/Podfile.lock
@@ -703,9 +703,9 @@ PODS:
- React-Core
- RNCPicker (2.4.6):
- React-Core
- - RNDateTimePicker (6.5.0):
+ - RNDateTimePicker (6.5.2):
- React-Core
- - RNGestureHandler (2.7.0):
+ - RNGestureHandler (2.8.0):
- React-Core
- RNReanimated (2.11.0):
- DoubleConversion
@@ -1358,9 +1358,9 @@ SPEC CHECKSUMS:
RNCAsyncStorage: 466b9df1a14bccda91da86e0b7d9a345d78e1673
RNCMaskedView: c298b644a10c0c142055b3ae24d83879ecb13ccd
RNCPicker: 2f71e09c52ab6327e2c393213368ea0e5bfbcb65
- RNDateTimePicker: 154f8246e9c32fd663995647a7f9f667a8c6b258
- RNGestureHandler: 7673697e7c0e9391adefae4faa087442bc04af33
- RNReanimated: 593c667bdcb9aa41d3701768aa5ab2e7d3828693
+ RNDateTimePicker: 3f32aa2247836c12618d346113e5e82ea60ddd9c
+ RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3
+ RNReanimated: 2e463924d627f7dc857eeecbfef25c4894978cd6
RNScreens: f3230dd008a7d0ce5c0a8bc78ff12cf2315bda24
RNSharedElement: eb7d506733952d58634f34c82ec17e82f557e377
RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2
diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json
index 9d598265970c3..fbef043ad66d2 100644
--- a/apps/bare-expo/package.json
+++ b/apps/bare-expo/package.json
@@ -112,7 +112,7 @@
"react": "18.1.0",
"react-dom": "18.0.0",
"react-native": "0.70.3",
- "react-native-gesture-handler": "~2.7.0",
+ "react-native-gesture-handler": "~2.8.0",
"react-native-reanimated": "~2.11.0",
"react-native-safe-area-context": "4.4.1",
"react-native-screens": "~3.18.0",
diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json
index c58e657097088..e4961d5bc0614 100644
--- a/apps/native-component-list/package.json
+++ b/apps/native-component-list/package.json
@@ -145,7 +145,7 @@
"react": "18.1.0",
"react-dom": "18.0.0",
"react-native": "0.70.3",
- "react-native-gesture-handler": "~2.7.0",
+ "react-native-gesture-handler": "~2.8.0",
"react-native-iphone-x-helper": "^1.3.0",
"react-native-maps": "1.3.2",
"react-native-pager-view": "6.0.1",
diff --git a/apps/test-suite/package.json b/apps/test-suite/package.json
index e7e83e958ac6e..0eb83ec0a38f4 100644
--- a/apps/test-suite/package.json
+++ b/apps/test-suite/package.json
@@ -53,7 +53,7 @@
"lodash": "^4.17.19",
"react": "18.1.0",
"react-native": "0.70.3",
- "react-native-gesture-handler": "~2.7.0",
+ "react-native-gesture-handler": "~2.8.0",
"react-native-safe-area-view": "^0.14.8",
"sinon": "^7.1.1"
},
diff --git a/home/package.json b/home/package.json
index bcdc6670c67a6..0f787841fa93a 100644
--- a/home/package.json
+++ b/home/package.json
@@ -56,7 +56,7 @@
"react": "18.1.0",
"react-native": "0.70.3",
"react-native-fade-in-image": "^1.6.1",
- "react-native-gesture-handler": "~2.7.0",
+ "react-native-gesture-handler": "~2.8.0",
"react-native-infinite-scroll-view": "^0.4.5",
"react-native-keyboard-aware-scroll-view": "^0.9.5",
"react-native-maps": "1.3.2",
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 5172b5028e17b..f38ee78f3b275 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -2019,7 +2019,7 @@ PODS:
- React-perflogger (= 0.70.3)
- RNFlashList (1.3.0):
- React-Core
- - RNGestureHandler (2.7.0):
+ - RNGestureHandler (2.8.0):
- React-Core
- RNReanimated (2.11.0):
- DoubleConversion
@@ -3523,7 +3523,7 @@ SPEC CHECKSUMS:
React-runtimeexecutor: e9b1f9310158a1e265bcdfdfd8c62d6174b947a2
ReactCommon: 01064177e66d652192c661de899b1076da962fd9
RNFlashList: 5116f2de2f543f01bfc30b22d5942d5af84b43df
- RNGestureHandler: 7673697e7c0e9391adefae4faa087442bc04af33
+ RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3
RNReanimated: 590d19d77725fa713c2a0f7f656f6ac41b9ab3e8
RNScreens: f3230dd008a7d0ce5c0a8bc78ff12cf2315bda24
RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2
diff --git a/ios/vendored/unversioned/react-native-gesture-handler/RNGestureHandler.podspec.json b/ios/vendored/unversioned/react-native-gesture-handler/RNGestureHandler.podspec.json
index 86e5b94d10d18..9988c695df0e4 100644
--- a/ios/vendored/unversioned/react-native-gesture-handler/RNGestureHandler.podspec.json
+++ b/ios/vendored/unversioned/react-native-gesture-handler/RNGestureHandler.podspec.json
@@ -1,6 +1,6 @@
{
"name": "RNGestureHandler",
- "version": "2.7.0",
+ "version": "2.8.0",
"summary": "Experimental implementation of a new declarative API for gesture handling in react-native",
"homepage": "https://github.com/software-mansion/react-native-gesture-handler",
"license": "MIT",
@@ -9,7 +9,7 @@
},
"source": {
"git": "https://github.com/software-mansion/react-native-gesture-handler",
- "tag": "2.7.0"
+ "tag": "2.8.0"
},
"source_files": "ios/**/*.{h,m,mm}",
"requires_arc": true,
diff --git a/ios/vendored/unversioned/react-native-gesture-handler/ios/Handlers/RNManualHandler.m b/ios/vendored/unversioned/react-native-gesture-handler/ios/Handlers/RNManualHandler.m
index eebe5d76c3865..f584efea15ca9 100644
--- a/ios/vendored/unversioned/react-native-gesture-handler/ios/Handlers/RNManualHandler.m
+++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/Handlers/RNManualHandler.m
@@ -2,7 +2,7 @@
@interface RNManualRecognizer : UIGestureRecognizer
-- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
+- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
@end
@@ -24,7 +24,7 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
-
+
if (_shouldSendBeginEvent) {
[_gestureHandler handleGesture:self];
_shouldSendBeginEvent = NO;
@@ -35,6 +35,14 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
+
+ if ([self shouldFail]) {
+ self.state = (self.state == UIGestureRecognizerStatePossible)
+ ? UIGestureRecognizerStateFailed
+ : UIGestureRecognizerStateCancelled;
+
+ [self reset];
+ }
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
@@ -53,21 +61,29 @@ - (void)reset
{
[_gestureHandler.pointerTracker reset];
[super reset];
-
+
_shouldSendBeginEvent = YES;
}
+- (BOOL)shouldFail
+{
+ if (_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) {
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
@end
@implementation RNManualGestureHandler
- (instancetype)initWithTag:(NSNumber *)tag
{
- if ((self = [super initWithTag:tag])) {
- _recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self];
-
- }
- return self;
+ if ((self = [super initWithTag:tag])) {
+ _recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self];
+ }
+ return self;
}
@end
diff --git a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm
index 0688a780495db..27219e227a006 100644
--- a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm
+++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm
@@ -17,9 +17,8 @@
@interface RNGestureHandlerButtonComponentView ()
@end
-@implementation RNGestureHandlerButtonComponentView
-{
- RNGestureHandlerButton *_buttonView;
+@implementation RNGestureHandlerButtonComponentView {
+ RNGestureHandlerButton *_buttonView;
}
- (instancetype)initWithFrame:(CGRect)frame
@@ -28,7 +27,7 @@ - (instancetype)initWithFrame:(CGRect)frame
static const auto defaultProps = std::make_shared();
_props = defaultProps;
_buttonView = [[RNGestureHandlerButton alloc] initWithFrame:self.bounds];
-
+
self.contentView = _buttonView;
}
@@ -44,12 +43,12 @@ + (ComponentDescriptorProvider)componentDescriptorProvider
- (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
{
- const auto &newProps = *std::static_pointer_cast(props);
+ const auto &newProps = *std::static_pointer_cast(props);
- _buttonView.userEnabled = newProps.enabled;
- _buttonView.exclusiveTouch = newProps.exclusive;
+ _buttonView.userEnabled = newProps.enabled;
+ _buttonView.exclusiveTouch = newProps.exclusive;
- [super updateProps:props oldProps:oldProps];
+ [super updateProps:props oldProps:oldProps];
}
@end
diff --git a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerManager.mm b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerManager.mm
index 8b99316d79f1b..8c2d99da5a76b 100644
--- a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerManager.mm
+++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerManager.mm
@@ -1,160 +1,158 @@
#import "RNGestureHandlerManager.h"
-#import
-#import
#import
-#import
-#import
#import
+#import
#import
+#import
+#import
+#import
-#import "RNGestureHandlerActionType.h"
-#import "RNGestureHandlerState.h"
#import "RNGestureHandler.h"
+#import "RNGestureHandlerActionType.h"
#import "RNGestureHandlerRegistry.h"
+#import "RNGestureHandlerState.h"
#import "RNRootViewGestureRecognizer.h"
#ifdef RN_FABRIC_ENABLED
-#import
#import
+#import
#else
#import
#endif // RN_FABRIC_ENABLED
-#import "Handlers/RNPanHandler.h"
-#import "Handlers/RNTapHandler.h"
#import "Handlers/RNFlingHandler.h"
+#import "Handlers/RNForceTouchHandler.h"
#import "Handlers/RNLongPressHandler.h"
+#import "Handlers/RNManualHandler.h"
#import "Handlers/RNNativeViewHandler.h"
+#import "Handlers/RNPanHandler.h"
#import "Handlers/RNPinchHandler.h"
#import "Handlers/RNRotationHandler.h"
-#import "Handlers/RNForceTouchHandler.h"
-#import "Handlers/RNManualHandler.h"
+#import "Handlers/RNTapHandler.h"
// We use the method below instead of RCTLog because we log out messages after the bridge gets
// turned down in some cases. Which normally with RCTLog would cause a crash in DEBUG mode
-#define RCTLifecycleLog(...) RCTDefaultLogFunction(RCTLogLevelInfo, RCTLogSourceNative, @(__FILE__), @(__LINE__), [NSString stringWithFormat:__VA_ARGS__])
+#define RCTLifecycleLog(...) \
+ RCTDefaultLogFunction( \
+ RCTLogLevelInfo, RCTLogSourceNative, @(__FILE__), @(__LINE__), [NSString stringWithFormat:__VA_ARGS__])
@interface RNGestureHandlerManager ()
@end
-@implementation RNGestureHandlerManager
-{
- RNGestureHandlerRegistry *_registry;
- RCTUIManager *_uiManager;
- NSHashTable *_rootViewGestureRecognizers;
- RCTEventDispatcher *_eventDispatcher;
- id _reanimatedModule;
+@implementation RNGestureHandlerManager {
+ RNGestureHandlerRegistry *_registry;
+ RCTUIManager *_uiManager;
+ NSHashTable *_rootViewGestureRecognizers;
+ RCTEventDispatcher *_eventDispatcher;
+ id _reanimatedModule;
}
-- (instancetype)initWithUIManager:(RCTUIManager *)uiManager
- eventDispatcher:(RCTEventDispatcher *)eventDispatcher
+- (instancetype)initWithUIManager:(RCTUIManager *)uiManager eventDispatcher:(RCTEventDispatcher *)eventDispatcher
{
- if ((self = [super init])) {
- _uiManager = uiManager;
- _eventDispatcher = eventDispatcher;
- _registry = [RNGestureHandlerRegistry new];
- _rootViewGestureRecognizers = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory];
- _reanimatedModule = nil;
- }
- return self;
+ if ((self = [super init])) {
+ _uiManager = uiManager;
+ _eventDispatcher = eventDispatcher;
+ _registry = [RNGestureHandlerRegistry new];
+ _rootViewGestureRecognizers = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory];
+ _reanimatedModule = nil;
+ }
+ return self;
}
-- (void)createGestureHandler:(NSString *)handlerName
- tag:(NSNumber *)handlerTag
- config:(NSDictionary *)config
+- (void)createGestureHandler:(NSString *)handlerName tag:(NSNumber *)handlerTag config:(NSDictionary *)config
{
- static NSDictionary *map;
- static dispatch_once_t mapToken;
- dispatch_once(&mapToken, ^{
- map = @{
- @"PanGestureHandler" : [RNPanGestureHandler class],
- @"TapGestureHandler" : [RNTapGestureHandler class],
- @"FlingGestureHandler" : [RNFlingGestureHandler class],
- @"LongPressGestureHandler": [RNLongPressGestureHandler class],
- @"NativeViewGestureHandler": [RNNativeViewGestureHandler class],
- @"PinchGestureHandler": [RNPinchGestureHandler class],
- @"RotationGestureHandler": [RNRotationGestureHandler class],
- @"ForceTouchGestureHandler": [RNForceTouchHandler class],
- @"ManualGestureHandler": [RNManualGestureHandler class],
- };
- });
-
- Class nodeClass = map[handlerName];
- if (!nodeClass) {
- RCTLogError(@"Gesture handler type %@ is not supported", handlerName);
- return;
- }
-
- RNGestureHandler *gestureHandler = [[nodeClass alloc] initWithTag:handlerTag];
- [gestureHandler configure:config];
- [_registry registerGestureHandler:gestureHandler];
-
- __weak id emitter = self;
- gestureHandler.emitter = emitter;
+ static NSDictionary *map;
+ static dispatch_once_t mapToken;
+ dispatch_once(&mapToken, ^{
+ map = @{
+ @"PanGestureHandler" : [RNPanGestureHandler class],
+ @"TapGestureHandler" : [RNTapGestureHandler class],
+ @"FlingGestureHandler" : [RNFlingGestureHandler class],
+ @"LongPressGestureHandler" : [RNLongPressGestureHandler class],
+ @"NativeViewGestureHandler" : [RNNativeViewGestureHandler class],
+ @"PinchGestureHandler" : [RNPinchGestureHandler class],
+ @"RotationGestureHandler" : [RNRotationGestureHandler class],
+ @"ForceTouchGestureHandler" : [RNForceTouchHandler class],
+ @"ManualGestureHandler" : [RNManualGestureHandler class],
+ };
+ });
+
+ Class nodeClass = map[handlerName];
+ if (!nodeClass) {
+ RCTLogError(@"Gesture handler type %@ is not supported", handlerName);
+ return;
+ }
+
+ RNGestureHandler *gestureHandler = [[nodeClass alloc] initWithTag:handlerTag];
+ [gestureHandler configure:config];
+ [_registry registerGestureHandler:gestureHandler];
+
+ __weak id emitter = self;
+ gestureHandler.emitter = emitter;
}
-
- (void)attachGestureHandler:(nonnull NSNumber *)handlerTag
toViewWithTag:(nonnull NSNumber *)viewTag
withActionType:(RNGestureHandlerActionType)actionType
{
- UIView *view = [_uiManager viewForReactTag:viewTag];
-
+ UIView *view = [_uiManager viewForReactTag:viewTag];
+
#ifdef RN_FABRIC_ENABLED
- if (view == nil) {
- // Happens when the view with given tag has been flattened.
- // We cannot attach gesture handler to a non-existent view.
- return;
+ if (view == nil) {
+ // Happens when the view with given tag has been flattened.
+ // We cannot attach gesture handler to a non-existent view.
+ return;
+ }
+
+ // I think it should be moved to RNNativeViewHandler, but that would require
+ // additional logic for setting contentView.reactTag, this works for now
+ if ([view isKindOfClass:[RCTViewComponentView class]]) {
+ RCTViewComponentView *componentView = (RCTViewComponentView *)view;
+ if (componentView.contentView != nil) {
+ view = componentView.contentView;
}
-
- // I think it should be moved to RNNativeViewHandler, but that would require
- // additional logic for setting contentView.reactTag, this works for now
- if ([view isKindOfClass:[RCTViewComponentView class]]) {
- RCTViewComponentView *componentView = (RCTViewComponentView *)view;
- if (componentView.contentView != nil) {
- view = componentView.contentView;
- }
- }
-
- view.reactTag = viewTag; // necessary for RNReanimated eventHash (e.g. "42onGestureHandlerEvent"), also will be returned as event.target
+ }
+
+ view.reactTag = viewTag; // necessary for RNReanimated eventHash (e.g. "42onGestureHandlerEvent"), also will be
+ // returned as event.target
#endif // RN_FABRIC_ENABLED
- [_registry attachHandlerWithTag:handlerTag toView:view withActionType:actionType];
+ [_registry attachHandlerWithTag:handlerTag toView:view withActionType:actionType];
- // register view if not already there
- [self registerViewWithGestureRecognizerAttachedIfNeeded:view];
+ // register view if not already there
+ [self registerViewWithGestureRecognizerAttachedIfNeeded:view];
}
- (void)updateGestureHandler:(NSNumber *)handlerTag config:(NSDictionary *)config
{
- RNGestureHandler *handler = [_registry handlerWithTag:handlerTag];
- [handler configure:config];
+ RNGestureHandler *handler = [_registry handlerWithTag:handlerTag];
+ [handler configure:config];
}
- (void)dropGestureHandler:(NSNumber *)handlerTag
{
- [_registry dropHandlerWithTag:handlerTag];
+ [_registry dropHandlerWithTag:handlerTag];
}
- (void)dropAllGestureHandlers
{
- [_registry dropAllHandlers];
+ [_registry dropAllHandlers];
}
- (void)handleSetJSResponder:(NSNumber *)viewTag blockNativeResponder:(NSNumber *)blockNativeResponder
{
- if ([blockNativeResponder boolValue]) {
- for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) {
- [recognizer blockOtherRecognizers];
- }
+ if ([blockNativeResponder boolValue]) {
+ for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) {
+ [recognizer blockOtherRecognizers];
}
+ }
}
- (void)handleClearJSResponder
{
- // ignore...
+ // ignore...
}
- (id)handlerWithTag:(NSNumber *)handlerTag
@@ -162,145 +160,145 @@ - (id)handlerWithTag:(NSNumber *)handlerTag
return [_registry handlerWithTag:handlerTag];
}
-
#pragma mark Root Views Management
- (void)registerViewWithGestureRecognizerAttachedIfNeeded:(UIView *)childView
{
- UIView *parent = childView;
- while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) parent = parent.superview;
-
- // Many views can return the same touchHandler so we check if the one we want to register
- // is not already present in the set.
- UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
-
- if (touchHandlerView == nil) {
+ UIView *parent = childView;
+ while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)])
+ parent = parent.superview;
+
+ // Many views can return the same touchHandler so we check if the one we want to register
+ // is not already present in the set.
+ UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
+
+ if (touchHandlerView == nil) {
+ return;
+ }
+
+ for (UIGestureRecognizer *recognizer in touchHandlerView.gestureRecognizers) {
+ if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) {
return;
}
-
- for (UIGestureRecognizer *recognizer in touchHandlerView.gestureRecognizers) {
- if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) {
- return;
- }
- }
-
- RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView);
- RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new];
- recognizer.delegate = self;
- touchHandlerView.userInteractionEnabled = YES;
- [touchHandlerView addGestureRecognizer:recognizer];
- [_rootViewGestureRecognizers addObject:recognizer];
+ }
+
+ RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView);
+ RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new];
+ recognizer.delegate = self;
+ touchHandlerView.userInteractionEnabled = YES;
+ [touchHandlerView addGestureRecognizer:recognizer];
+ [_rootViewGestureRecognizers addObject:recognizer];
}
- (void)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
didActivateInViewWithTouchHandler:(UIView *)viewWithTouchHandler
{
- // Cancel touches in RN's root view in order to cancel all in-js recognizers
-
- // As scroll events are special-cased in RN responder implementation and sending them would
- // trigger JS responder change, we don't cancel touches if the handler that got activated is
- // a scroll recognizer. This way root view will keep sending touchMove and touchEnd events
- // and therefore allow JS responder to properly release the responder at the end of the touch
- // stream.
- // NOTE: this is not a proper fix and solving this problem requires upstream fixes to RN. In
- // particular if we have one PanHandler and ScrollView that can work simultaniously then when
- // the Pan handler activates it would still tigger cancel events.
- // Once the upstream fix lands the line below along with this comment can be removed
- if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]]) return;
+ // Cancel touches in RN's root view in order to cancel all in-js recognizers
+
+ // As scroll events are special-cased in RN responder implementation and sending them would
+ // trigger JS responder change, we don't cancel touches if the handler that got activated is
+ // a scroll recognizer. This way root view will keep sending touchMove and touchEnd events
+ // and therefore allow JS responder to properly release the responder at the end of the touch
+ // stream.
+ // NOTE: this is not a proper fix and solving this problem requires upstream fixes to RN. In
+ // particular if we have one PanHandler and ScrollView that can work simultaniously then when
+ // the Pan handler activates it would still tigger cancel events.
+ // Once the upstream fix lands the line below along with this comment can be removed
+ if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]])
+ return;
#ifdef RN_FABRIC_ENABLED
- RCTSurfaceTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
+ RCTSurfaceTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
#else
- RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
+ RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
#endif
- [touchHandler setEnabled:NO];
- [touchHandler setEnabled:YES];
-
+ [touchHandler setEnabled:NO];
+ [touchHandler setEnabled:YES];
}
#pragma mark Events
- (void)sendEvent:(RNGestureHandlerStateChange *)event withActionType:(RNGestureHandlerActionType)actionType
{
- switch (actionType) {
- case RNGestureHandlerActionTypeReanimatedWorklet:
- [self sendEventForReanimated:event];
- break;
-
- case RNGestureHandlerActionTypeNativeAnimatedEvent:
- if ([event.eventName isEqualToString:@"onGestureHandlerEvent"]) {
- [self sendEventForNativeAnimatedEvent:event];
- } else {
- // Although onGestureEvent prop is an Animated.event with useNativeDriver: true,
- // onHandlerStateChange prop is still a regular JS function.
- // Also, Animated.event is only supported with old API.
- [self sendEventForJSFunctionOldAPI:event];
- }
- break;
-
- case RNGestureHandlerActionTypeJSFunctionOldAPI:
- [self sendEventForJSFunctionOldAPI:event];
- break;
-
- case RNGestureHandlerActionTypeJSFunctionNewAPI:
- [self sendEventForJSFunctionNewAPI:event];
- break;
- }
+ switch (actionType) {
+ case RNGestureHandlerActionTypeReanimatedWorklet:
+ [self sendEventForReanimated:event];
+ break;
+
+ case RNGestureHandlerActionTypeNativeAnimatedEvent:
+ if ([event.eventName isEqualToString:@"onGestureHandlerEvent"]) {
+ [self sendEventForNativeAnimatedEvent:event];
+ } else {
+ // Although onGestureEvent prop is an Animated.event with useNativeDriver: true,
+ // onHandlerStateChange prop is still a regular JS function.
+ // Also, Animated.event is only supported with old API.
+ [self sendEventForJSFunctionOldAPI:event];
+ }
+ break;
+
+ case RNGestureHandlerActionTypeJSFunctionOldAPI:
+ [self sendEventForJSFunctionOldAPI:event];
+ break;
+
+ case RNGestureHandlerActionTypeJSFunctionNewAPI:
+ [self sendEventForJSFunctionNewAPI:event];
+ break;
+ }
}
- (void)sendEventForReanimated:(RNGestureHandlerStateChange *)event
{
- // Delivers the event to Reanimated.
+ // Delivers the event to Reanimated.
#ifdef RN_FABRIC_ENABLED
- // Send event directly to Reanimated
- if (_reanimatedModule == nil) {
- _reanimatedModule = [_uiManager.bridge moduleForName:@"ReanimatedModule"];
- }
-
- [_reanimatedModule eventDispatcherWillDispatchEvent:event];
+ // Send event directly to Reanimated
+ if (_reanimatedModule == nil) {
+ _reanimatedModule = [_uiManager.bridge moduleForName:@"ReanimatedModule"];
+ }
+
+ [_reanimatedModule eventDispatcherWillDispatchEvent:event];
#else
- // In the old architecture, Reanimated overwrites RCTEventDispatcher
- // with REAEventDispatcher and intercepts all direct events.
- [self sendEventForDirectEvent:event];
+ // In the old architecture, Reanimated overwrites RCTEventDispatcher
+ // with REAEventDispatcher and intercepts all direct events.
+ [self sendEventForDirectEvent:event];
#endif // RN_FABRIC_ENABLED
}
- (void)sendEventForNativeAnimatedEvent:(RNGestureHandlerStateChange *)event
{
- // Delivers the event to NativeAnimatedModule.
- // Currently, NativeAnimated[Turbo]Module is RCTEventDispatcherObserver so we can
- // simply send a direct event which is handled by the observer but ignored on JS side.
- // TODO: send event directly to NativeAnimated[Turbo]Module
- [self sendEventForDirectEvent:event];
+ // Delivers the event to NativeAnimatedModule.
+ // Currently, NativeAnimated[Turbo]Module is RCTEventDispatcherObserver so we can
+ // simply send a direct event which is handled by the observer but ignored on JS side.
+ // TODO: send event directly to NativeAnimated[Turbo]Module
+ [self sendEventForDirectEvent:event];
}
- (void)sendEventForJSFunctionOldAPI:(RNGestureHandlerStateChange *)event
{
- // Delivers the event to JS (old RNGH API).
+ // Delivers the event to JS (old RNGH API).
#ifdef RN_FABRIC_ENABLED
- [self sendEventForDeviceEvent:event];
+ [self sendEventForDeviceEvent:event];
#else
- [self sendEventForDirectEvent:event];
+ [self sendEventForDirectEvent:event];
#endif // RN_FABRIC_ENABLED
}
- (void)sendEventForJSFunctionNewAPI:(RNGestureHandlerStateChange *)event
{
- // Delivers the event to JS (new RNGH API).
- [self sendEventForDeviceEvent:event];
+ // Delivers the event to JS (new RNGH API).
+ [self sendEventForDeviceEvent:event];
}
- (void)sendEventForDirectEvent:(RNGestureHandlerStateChange *)event
{
- // Delivers the event to JS as a direct event.
- [_eventDispatcher sendEvent:event];
+ // Delivers the event to JS as a direct event.
+ [_eventDispatcher sendEvent:event];
}
- (void)sendEventForDeviceEvent:(RNGestureHandlerStateChange *)event
{
- // Delivers the event to JS as a device event.
- NSMutableDictionary *body = [[event arguments] objectAtIndex:2];
- [_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body];
+ // Delivers the event to JS as a device event.
+ NSMutableDictionary *body = [[event arguments] objectAtIndex:2];
+ [_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body];
}
@end
diff --git a/packages/expo-stories/package.json b/packages/expo-stories/package.json
index 8292a2e19caa5..f1995431bead6 100644
--- a/packages/expo-stories/package.json
+++ b/packages/expo-stories/package.json
@@ -30,7 +30,7 @@
"esbuild": "^0.12.15",
"fs-extra": "^9.1.0",
"glob": "^7.1.7",
- "react-native-gesture-handler": "~2.7.0",
+ "react-native-gesture-handler": "~2.8.0",
"react-native-safe-area-context": "4.4.1",
"react-native-screens": "~3.18.0",
"react-native-svg": "13.4.0",
diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json
index 3ea7bb2a2451c..1490800c39dc4 100644
--- a/packages/expo/bundledNativeModules.json
+++ b/packages/expo/bundledNativeModules.json
@@ -90,7 +90,7 @@
"react-native": "0.70.3",
"react-native-web": "~0.18.9",
"react-native-branch": "^5.4.0",
- "react-native-gesture-handler": "~2.7.0",
+ "react-native-gesture-handler": "~2.8.0",
"react-native-get-random-values": "~1.8.0",
"react-native-maps": "1.3.2",
"react-native-pager-view": "6.0.1",
diff --git a/tools/src/vendoring/config/expoGoConfig.ts b/tools/src/vendoring/config/expoGoConfig.ts
index cc70aa56cce1d..fca493a00a3e0 100644
--- a/tools/src/vendoring/config/expoGoConfig.ts
+++ b/tools/src/vendoring/config/expoGoConfig.ts
@@ -67,11 +67,16 @@ const config: VendoringTargetConfig = {
'def shouldUseCommonInterfaceFromReanimated() {\n return true\n'
);
buildGradle = buildGradle.replace(
- 'react-native-reanimated',
+ /react-native-reanimated/g,
'vendored_unversioned_react-native-reanimated'
);
await fs.writeFile(buildGradlePath, buildGradle);
},
+ excludeFiles: [
+ 'android/gradle{/**,**}',
+ 'android/settings.gradle',
+ 'android/spotless.gradle',
+ ],
},
},
'react-native-reanimated': {
diff --git a/yarn.lock b/yarn.lock
index 353c6a46b5d1a..ed226952ccb8e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3302,10 +3302,10 @@
prompts "^2.4.0"
semver "^6.3.0"
-"@react-native-community/datetimepicker@6.5.0":
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-6.5.0.tgz#ecbcb0f995f57570ae5fa11ed66d23fcc67c2a3c"
- integrity sha512-s0gxsz/l3Ln2+dZV+4RZI94+A+JO8ywrjC17cGK8ozM+VLXHAUARgGLGc+vqNJkxzZzGUqnkO6/kypQGoK7t/A==
+"@react-native-community/datetimepicker@6.5.2":
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-6.5.2.tgz#d2c0df9f2c6acce39f7e957743dd811547656098"
+ integrity sha512-9K3zhIH1zmpIGSG3GJTWLIoAx+sR4kJ1wqpGKMwWJ5IYXBsFxMdvGw023t0pz2CQStlnNbbNhnZY/HMYFBCsCg==
dependencies:
invariant "^2.2.4"
@@ -17185,10 +17185,10 @@ react-native-fade-in-image@^1.6.1:
react-mixin "^3.0.5"
react-timer-mixin "^0.13.3"
-react-native-gesture-handler@~2.7.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.7.0.tgz#53ad828add926c8e025f68ea581758c0f8893054"
- integrity sha512-0jr3FNm2R3gv/v6XTtENgjv0fewD6LEct8EWmXw/oHw36M3YiIIpxnW57thL+0YiKwyLBXN0QHL4JZbs/heW2Q==
+react-native-gesture-handler@~2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz#ef9857871c10663c95a51546225b6e00cd4740cf"
+ integrity sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==
dependencies:
"@egjs/hammerjs" "^2.0.17"
hoist-non-react-statics "^3.3.0"