From fd528ec1f974371ad3556f1ce88a19b8ab88c1f6 Mon Sep 17 00:00:00 2001 From: Tomasz Sapeta Date: Mon, 3 Oct 2022 10:35:05 +0200 Subject: [PATCH 1/4] [ios][android] Update react-native-gesture-handler to 2.6.2 --- CHANGELOG.md | 1 + .../gesturehandler/FlingGestureHandler.kt | 3 +- .../GestureHandlerOrchestrator.kt | 39 ++++++++++++++----- .../gesturehandler/LongPressGestureHandler.kt | 7 +++- .../NativeViewGestureHandler.kt | 3 +- .../gesturehandler/PanGestureHandler.kt | 3 +- .../gesturehandler/RNGestureHandlerPackage.kt | 8 ---- .../gesturehandler/TapGestureHandler.kt | 5 ++- .../RNGestureHandlerInteractionManager.kt | 8 +++- .../react/RNGestureHandlerModule.kt | 2 +- apps/bare-expo/ios/Podfile.lock | 4 +- apps/bare-expo/package.json | 2 +- apps/bare-sandbox/package.json | 2 +- apps/native-component-list/package.json | 2 +- apps/test-suite/package.json | 2 +- home/package.json | 2 +- ios/Podfile.lock | 4 +- .../RNGestureHandler.podspec.json | 4 +- .../RNGestureHandlerButtonComponentView.mm | 2 +- .../ios/RNGestureHandlerManager.mm | 5 --- .../RNGestureHandlerRootViewComponentView.mm | 2 +- packages/expo-stories/package.json | 2 +- packages/expo/bundledNativeModules.json | 2 +- yarn.lock | 10 ++--- 24 files changed, 73 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88c0f9cc579d9..932bdee3907c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Package-specific changes not released in any SDK will be added here just before - Updated `@stripe/stripe-react-native` from `0.13.1` to `0.18.1` on iOS. ([#19055](https://github.com/expo/expo/pull/19055) by [@tsapeta](https://github.com/tsapeta)) - 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-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.6.2`. ([#19362](https://github.com/expo/expo/pull/19362) by [@tsapeta](https://github.com/tsapeta)) ### 🛠 Breaking changes diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt index c73bc6f7d1572..5ff0dd80acf24 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt @@ -1,6 +1,7 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler import android.os.Handler +import android.os.Looper import android.view.MotionEvent class FlingGestureHandler : GestureHandler() { @@ -27,7 +28,7 @@ class FlingGestureHandler : GestureHandler() { begin() maxNumberOfPointersSimultaneously = 1 if (handler == null) { - handler = Handler() // lazy delegate? + handler = Handler(Looper.getMainLooper()) // lazy delegate? } else { handler!!.removeCallbacksAndMessages(null) } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt index 861de375e7ab5..4c5333bb20212 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt @@ -5,6 +5,7 @@ import android.graphics.PointF import android.view.MotionEvent import android.view.View import android.view.ViewGroup +import android.widget.EditText import java.util.* class GestureHandlerOrchestrator( @@ -128,6 +129,13 @@ class GestureHandlerOrchestrator( if (newState == GestureHandler.STATE_END) { // gesture has ended, we need to kill the awaiting handler otherHandler.cancel() + if (otherHandler.state == GestureHandler.STATE_END) { + // Handle edge case, where discrete gestures end immediately after activation thus + // 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.isAwaiting = false } else { // gesture has failed recognition, we may try activating @@ -142,9 +150,12 @@ class GestureHandlerOrchestrator( } else if (prevState == GestureHandler.STATE_ACTIVE || prevState == GestureHandler.STATE_END) { if (handler.isActive) { handler.dispatchStateChange(newState, prevState) - } else if (prevState == GestureHandler.STATE_ACTIVE) { - // handle edge case where handler awaiting for another one tries to activate but finishes - // before the other would not send state change event upon ending + } else if (prevState == GestureHandler.STATE_ACTIVE && (newState == GestureHandler.STATE_CANCELLED || newState == GestureHandler.STATE_FAILED)) { + // Handle edge case where handler awaiting for another one tries to activate but finishes + // before the other would not send state change event upon ending. Note that we only want + // to do this if the newState is either CANCELLED or FAILED, if it is END we still want to + // wait for the other handler to finish as in that case synthetic events will be sent by the + // makeActive method. handler.dispatchStateChange(newState, GestureHandler.STATE_BEGAN) } } else if (prevState != GestureHandler.STATE_UNDETERMINED || newState != GestureHandler.STATE_CANCELLED) { @@ -474,14 +485,24 @@ class GestureHandlerOrchestrator( } PointerEventsConfig.BOX_NONE -> { // This view can't be the target, but its children might - if (view is ViewGroup) { - extractGestureHandlers(view, coords, pointerId).also { found -> - // A child view is handling touch, also extract handlers attached to this view - if (found) { - recordViewHandlersForPointer(view, coords, pointerId) + when (view) { + is ViewGroup -> { + extractGestureHandlers(view, coords, pointerId).also { found -> + // A child view is handling touch, also extract handlers attached to this view + if (found) { + recordViewHandlersForPointer(view, coords, pointerId) + } } } - } else false + // When has editable set to `false` getPointerEventsConfigForView returns + // `BOX_NONE` as it's `isEnabled` property is false. In this case we still want to extract + // handlers attached to the text input, as it makes sense that gestures would work on a + // non-editable TextInput. + is EditText -> { + recordViewHandlersForPointer(view, coords, pointerId) + } + else -> false + } } PointerEventsConfig.AUTO -> { // Either this view or one of its children is the target diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt index e8073b396a8ca..6f67d90a613a5 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt @@ -2,6 +2,7 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler import android.content.Context import android.os.Handler +import android.os.Looper import android.os.SystemClock import android.view.MotionEvent @@ -19,7 +20,9 @@ class LongPressGestureHandler(context: Context) : GestureHandler 0) { handler!!.postDelayed({ activate() }, minDurationMs) } else if (minDurationMs == 0L) { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt index 19eedfc845326..b062f06f08a73 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt @@ -9,7 +9,8 @@ import com.facebook.react.views.textinput.ReactEditText class NativeViewGestureHandler : GestureHandler() { private var shouldActivateOnStart = false - private var disallowInterruption = false + var disallowInterruption = false + private set private var hook: NativeViewGestureHandlerHook = defaultHook diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt index 999f245ab80e9..f96a91a341d44 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt @@ -2,6 +2,7 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler import android.content.Context import android.os.Handler +import android.os.Looper import android.view.MotionEvent import android.view.VelocityTracker import android.view.ViewConfiguration @@ -233,7 +234,7 @@ class PanGestureHandler(context: Context?) : GestureHandler() if (activateAfterLongPress > 0) { if (handler == null) { - handler = Handler() + handler = Handler(Looper.getMainLooper()) } handler!!.postDelayed(activateDelayed, activateAfterLongPress) } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt index 8dbd9f55f8ed9..065f0100e825d 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt @@ -5,7 +5,6 @@ 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.facebook.soloader.SoLoader import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerModule import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerRootViewManager @@ -13,13 +12,6 @@ import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.R class RNGestureHandlerPackage : ReactPackage { override fun createNativeModules(reactContext: ReactApplicationContext): List { - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // For Fabric, we load c++ native library here, this triggers gesture handler's - // Fabric component registration which is necessary in order to avoid asking users - // to manually add init calls in their application code. - // This should no longer be needed if RN's autolink mechanism has Fabric support - SoLoader.loadLibrary("rngesturehandler_modules") - } return listOf(RNGestureHandlerModule(reactContext)) } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt index 78aa19c4f50b7..0800edc4ee4aa 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt @@ -1,6 +1,7 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler import android.os.Handler +import android.os.Looper import android.view.MotionEvent import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureUtils.getLastPointerX import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureUtils.getLastPointerY @@ -70,7 +71,7 @@ class TapGestureHandler : GestureHandler() { private fun startTap() { if (handler == null) { - handler = Handler() // TODO: lazy init (handle else branch correctly) + handler = Handler(Looper.getMainLooper()) // TODO: lazy init (handle else branch correctly) } else { handler!!.removeCallbacksAndMessages(null) } @@ -79,7 +80,7 @@ class TapGestureHandler : GestureHandler() { private fun endTap() { if (handler == null) { - handler = Handler() + handler = Handler(Looper.getMainLooper()) } else { handler!!.removeCallbacksAndMessages(null) } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt index 7cb640720d657..e44719523b273 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt @@ -4,6 +4,7 @@ import android.util.SparseArray import com.facebook.react.bridge.ReadableMap import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandlerInteractionController +import versioned.host.exp.exponent.modules.api.components.gesturehandler.NativeViewGestureHandler class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { private val waitForRelations = SparseArray() @@ -42,8 +43,13 @@ class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { otherHandler: GestureHandler<*>, ) = false - override fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>) = false + override fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean { + if (otherHandler is NativeViewGestureHandler) { + return otherHandler.disallowInterruption + } + return false + } override fun shouldRecognizeSimultaneously( handler: GestureHandler<*>, otherHandler: GestureHandler<*>, diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt index b962aac4efb6a..890a74b4d96ea 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt @@ -426,7 +426,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) @ReactMethod(isBlockingSynchronousMethod = true) fun install(): Boolean { return try { - SoLoader.loadLibrary("rngesturehandler_modules") + SoLoader.loadLibrary("gesturehandler") val jsContext = reactApplicationContext.javaScriptContextHolder decorateRuntime(jsContext.get()) true diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock index e662e2d131056..9eacd3d2c2f43 100644 --- a/apps/bare-expo/ios/Podfile.lock +++ b/apps/bare-expo/ios/Podfile.lock @@ -714,7 +714,7 @@ PODS: - React-Core - RNDateTimePicker (6.2.0): - React-Core - - RNGestureHandler (2.5.0): + - RNGestureHandler (2.6.2): - React-Core - RNReanimated (2.10.0): - DoubleConversion @@ -1373,7 +1373,7 @@ SPEC CHECKSUMS: RNCMaskedView: c298b644a10c0c142055b3ae24d83879ecb13ccd RNCPicker: 0250e95ad170569a96f5b0555cdd5e65b9084dca RNDateTimePicker: 30e6733efc179d1e49d6008ea5fce42cdc9aeeca - RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50 + RNGestureHandler: 4defbd70b2faf3d6761b82fa7880285241762cb0 RNReanimated: 60e291d42c77752a0f6d6f358387bdf225a87c6e RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7 RNSharedElement: eb7d506733952d58634f34c82ec17e82f557e377 diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json index 56b395d2ac01e..2a685dfa4e386 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.1", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-reanimated": "~2.10.0", "react-native-safe-area-context": "4.3.1", "react-native-screens": "~3.15.0", diff --git a/apps/bare-sandbox/package.json b/apps/bare-sandbox/package.json index b15f6be67ae62..5b9da44446fd2 100644 --- a/apps/bare-sandbox/package.json +++ b/apps/bare-sandbox/package.json @@ -18,7 +18,7 @@ "react": "18.1.0", "react-dom": "18.0.0", "react-native": "0.70.1", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-reanimated": "~2.10.0", "react-native-screens": "~3.15.0", "react-native-web": "~0.18.9" diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index 250acb8e7327e..44f3165936378 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -144,7 +144,7 @@ "react": "18.1.0", "react-dom": "18.0.0", "react-native": "0.70.1", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-iphone-x-helper": "^1.3.0", "react-native-maps": "0.31.1", "react-native-pager-view": "5.4.24", diff --git a/apps/test-suite/package.json b/apps/test-suite/package.json index 234dbaff10e08..fc364daebab9a 100644 --- a/apps/test-suite/package.json +++ b/apps/test-suite/package.json @@ -51,7 +51,7 @@ "lodash": "^4.17.19", "react": "18.1.0", "react-native": "0.70.1", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-safe-area-view": "^0.14.8", "sinon": "^7.1.1" }, diff --git a/home/package.json b/home/package.json index e0b729141556f..1d6e5c3f79481 100644 --- a/home/package.json +++ b/home/package.json @@ -55,7 +55,7 @@ "react": "18.1.0", "react-native": "0.70.1", "react-native-fade-in-image": "^1.6.1", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-infinite-scroll-view": "^0.4.5", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-maps": "0.31.1", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index de7fddedcbf76..4bd14020991c6 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2014,7 +2014,7 @@ PODS: - React-perflogger (= 0.70.1) - RNFlashList (1.3.0): - React-Core - - RNGestureHandler (2.5.0): + - RNGestureHandler (2.6.2): - React-Core - RNReanimated (2.9.1): - DoubleConversion @@ -3509,7 +3509,7 @@ SPEC CHECKSUMS: React-runtimeexecutor: a11d0c2e14140baf1e449264ca9168ae9ae6bbd0 ReactCommon: 7f86326b92009925c6dcf93f8e825060171c379f RNFlashList: 5116f2de2f543f01bfc30b22d5942d5af84b43df - RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50 + RNGestureHandler: 4defbd70b2faf3d6761b82fa7880285241762cb0 RNReanimated: 5c8c17e26787fd8984cd5accdc70fef2ca70aafd RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7 Stripe: fb29a476e4866fec4ef22fb76207363dd32795aa 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 da8cd3f5865dd..80578f05ad105 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.5.0", + "version": "2.6.2", "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.5.0" + "tag": "2.6.2" }, "source_files": "ios/**/*.{h,m,mm}", "requires_arc": true, 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 af99949db4899..29ac1566b1282 100644 --- a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm +++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm @@ -3,13 +3,13 @@ #import "RNGestureHandlerButtonComponentView.h" #import +#import #import #import #import #import -#import "RCTFabricComponentsPlugins.h" #import "RNGestureHandlerButton.h" using namespace facebook::react; 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 83b3d9bbc5f8e..8b99316d79f1b 100644 --- a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerManager.mm +++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerManager.mm @@ -6,12 +6,7 @@ #import #import #import - -#if __has_include() #import -#else -#import "RCTRootContentView.h" -#endif #import "RNGestureHandlerActionType.h" #import "RNGestureHandlerState.h" diff --git a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm index 8423fdec12fcf..af3976c83ea1b 100644 --- a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm +++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm @@ -1,6 +1,6 @@ #ifdef RN_FABRIC_ENABLED -#import "RCTFabricComponentsPlugins.h" +#import Class RNGestureHandlerRootViewCls(void) { diff --git a/packages/expo-stories/package.json b/packages/expo-stories/package.json index 0516f6ec35a3a..f51f60db638ec 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.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-safe-area-context": "4.3.1", "react-native-screens": "~3.15.0", "react-native-svg": "12.3.0", diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json index ce392110bd6c7..b66f38aea2608 100644 --- a/packages/expo/bundledNativeModules.json +++ b/packages/expo/bundledNativeModules.json @@ -90,7 +90,7 @@ "react-native": "0.70.1", "react-native-web": "~0.18.9", "react-native-branch": "^5.4.0", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.6.2", "react-native-get-random-values": "~1.8.0", "react-native-maps": "0.31.1", "react-native-pager-view": "5.4.24", diff --git a/yarn.lock b/yarn.lock index 74c5c1ccd366d..3875584917371 100644 --- a/yarn.lock +++ b/yarn.lock @@ -95,7 +95,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.4.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.9.0": +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.18.6", "@babel/core@^7.4.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.9.0": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== @@ -17294,10 +17294,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.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.5.0.tgz#61385583570ed0a45a9ed142425e35f8fe8274fb" - integrity sha512-djZdcprFf08PZC332D+AeG5wcGeAPhzfCJtB3otUgOgTlvjVXmg/SLFdPJSpzLBqkRAmrC77tM79QgKbuLxkfw== +react-native-gesture-handler@~2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.6.2.tgz#f3b68d374f5dda603ff29f7df2edb39472eb97ce" + integrity sha512-Ff/WKlR8KiM1wq7UJZvIyCB+OsweewaeZk+4RDIYNGM9tvNIAXEm/MtYnLHiBXiSJjZItF/8B83gE6pVq40vIw== dependencies: "@egjs/hammerjs" "^2.0.17" hoist-non-react-statics "^3.3.0" From 4691d471b5ba5a2f7c623ef5de45892304d59dc5 Mon Sep 17 00:00:00 2001 From: Tomasz Sapeta Date: Tue, 4 Oct 2022 14:59:59 +0200 Subject: [PATCH 2/4] Update to 2.7.0 --- CHANGELOG.md | 2 +- .../gesturehandler/FlingGestureHandler.kt | 14 +-- .../gesturehandler/GestureHandler.kt | 72 +++++++----- .../GestureHandlerOrchestrator.kt | 105 +++++++++++++----- .../components/gesturehandler/GestureUtils.kt | 10 +- .../gesturehandler/LongPressGestureHandler.kt | 12 +- .../gesturehandler/ManualGestureHandler.kt | 2 +- .../NativeViewGestureHandler.kt | 2 +- .../gesturehandler/PanGestureHandler.kt | 22 ++-- .../gesturehandler/PinchGestureHandler.kt | 26 +++-- .../gesturehandler/RotationGestureHandler.kt | 23 ++-- .../gesturehandler/TapGestureHandler.kt | 20 ++-- .../RNGestureHandlerButtonViewManager.kt | 43 +++++-- .../react/RNGestureHandlerModule.kt | 4 +- .../react/RNGestureHandlerRootHelper.kt | 2 +- apps/bare-expo/package.json | 2 +- apps/bare-sandbox/package.json | 2 +- apps/native-component-list/package.json | 2 +- apps/test-suite/package.json | 2 +- home/package.json | 2 +- ios/Podfile.lock | 4 +- .../RNGestureHandler.podspec.json | 4 +- .../RNGestureHandlerButtonComponentView.mm | 8 +- packages/expo-stories/package.json | 2 +- packages/expo/bundledNativeModules.json | 2 +- 25 files changed, 244 insertions(+), 145 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 932bdee3907c4..77e64477fd3a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ Package-specific changes not released in any SDK will be added here just before - Updated `@stripe/stripe-react-native` from `0.13.1` to `0.18.1` on iOS. ([#19055](https://github.com/expo/expo/pull/19055) by [@tsapeta](https://github.com/tsapeta)) - 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-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.6.2`. ([#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.7.0`. ([#19362](https://github.com/expo/expo/pull/19362) by [@tsapeta](https://github.com/tsapeta)) ### 🛠 Breaking changes diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt index 5ff0dd80acf24..e1bb6fd828b33 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt @@ -63,19 +63,19 @@ class FlingGestureHandler : GestureHandler() { } } - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { val state = state if (state == STATE_UNDETERMINED) { - startFling(event) + startFling(sourceEvent) } if (state == STATE_BEGAN) { - tryEndFling(event) - if (event.pointerCount > maxNumberOfPointersSimultaneously) { - maxNumberOfPointersSimultaneously = event.pointerCount + tryEndFling(sourceEvent) + if (sourceEvent.pointerCount > maxNumberOfPointersSimultaneously) { + maxNumberOfPointersSimultaneously = sourceEvent.pointerCount } - val action = event.actionMasked + val action = sourceEvent.actionMasked if (action == MotionEvent.ACTION_UP) { - endFling(event) + endFling(sourceEvent) } } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt index f99caa3e9b37d..c9602050d117b 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt @@ -4,6 +4,7 @@ import host.exp.expoview.BuildConfig import android.app.Activity import android.content.Context import android.content.ContextWrapper +import android.graphics.PointF import android.graphics.Rect import android.view.MotionEvent import android.view.MotionEvent.PointerCoords @@ -326,7 +327,7 @@ open class GestureHandler + val padLeft = hitSlop[HIT_SLOP_LEFT_IDX] + val padTop = hitSlop[HIT_SLOP_TOP_IDX] + val padRight = hitSlop[HIT_SLOP_RIGHT_IDX] + val padBottom = hitSlop[HIT_SLOP_BOTTOM_IDX] if (hitSlopSet(padLeft)) { left -= padLeft } @@ -603,8 +607,8 @@ open class GestureHandler, event: MotionEvent) { + private fun deliverEventToGestureHandler(handler: GestureHandler<*>, sourceEvent: MotionEvent) { if (!isViewAttachedUnderWrapper(handler.view)) { handler.cancel() return @@ -250,18 +250,9 @@ class GestureHandlerOrchestrator( if (!handler.wantEvents()) { return } - val action = event.actionMasked - val coords = tempCoords - extractCoordsForView(handler.view, event, coords) - val oldX = event.x - val oldY = event.y - // TODO: we may consider scaling events if necessary using MotionEvent.transform - // for now the events are only offset to the top left corner of the view but if - // view or any ot the parents is scaled the other pointers position will not reflect - // their actual place in the view. On the other hand not scaling seems like a better - // approach when we want to use pointer coordinates to calculate velocity or distance - // for pinch so I don't know yet if we should transform or not... - event.setLocation(coords[0], coords[1]) + + 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 @@ -277,7 +268,7 @@ class GestureHandlerOrchestrator( if (!handler.isAwaiting || action != MotionEvent.ACTION_MOVE) { val isFirstEvent = handler.state == 0 - handler.handle(event) + handler.handle(event, sourceEvent) if (handler.isActive) { // After handler is done waiting for other one to fail its progress should be // reset, otherwise there may be a visible jump in values sent by the handler. @@ -305,7 +296,7 @@ class GestureHandlerOrchestrator( } } - event.setLocation(oldX, oldY) + event.recycle() } /** @@ -329,19 +320,75 @@ class GestureHandlerOrchestrator( return parent === wrapperView } - private fun extractCoordsForView(view: View?, event: MotionEvent, outputCoords: FloatArray) { - if (view === wrapperView) { - outputCoords[0] = event.x - outputCoords[1] = event.y - return + /** + * Transforms an event in the coordinates of wrapperView into the coordinate space of the received view. + * + * This modifies and returns the same event as it receives + * + * @param view - view to which coordinate space the event should be transformed + * @param event - event to transform + */ + fun transformEventToViewCoords(view: View?, event: MotionEvent): MotionEvent { + if (view == null) { + return event } - require(!(view == null || view.parent !is ViewGroup)) { "Parent is null? View is no longer in the tree" } - val parent = view.parent as ViewGroup - extractCoordsForView(parent, event, outputCoords) - val childPoint = tempPoint - transformTouchPointToViewCoords(outputCoords[0], outputCoords[1], parent, view, childPoint) - outputCoords[0] = childPoint.x - outputCoords[1] = childPoint.y + + val parent = view.parent as? ViewGroup + // Events are passed down to the orchestrator by the wrapperView, so they are already in the + // relevant coordinate space. We want to stop traversing the tree when we reach it. + if (parent != wrapperView) { + transformEventToViewCoords(parent, event) + } + + if (parent != null) { + val localX = event.x + parent.scrollX - view.left + val localY = event.y + parent.scrollY - view.top + event.setLocation(localX, localY) + } + + if (!view.matrix.isIdentity) { + view.matrix.invert(inverseMatrix) + event.transform(inverseMatrix) + } + + return event + } + + /** + * Transforms a point in the coordinates of wrapperView into the coordinate space of the received view. + * + * This modifies and returns the same point as it receives + * + * @param view - view to which coordinate space the point should be transformed + * @param point - point to transform + */ + fun transformPointToViewCoords(view: View?, point: PointF): PointF { + if (view == null) { + return point + } + + val parent = view.parent as? ViewGroup + // Events are passed down to the orchestrator by the wrapperView, so they are already in the + // relevant coordinate space. We want to stop traversing the tree when we reach it. + if (parent != wrapperView) { + transformPointToViewCoords(parent, point) + } + + if (parent != null) { + point.x += parent.scrollX - view.left + point.y += parent.scrollY - view.top + } + + if (!view.matrix.isIdentity) { + view.matrix.invert(inverseMatrix) + tempCoords[0] = point.x + tempCoords[1] = point.y + inverseMatrix.mapPoints(tempCoords) + point.x = tempCoords[0] + point.y = tempCoords[1] + } + + return point } private fun addAwaitingHandler(handler: GestureHandler<*>) { @@ -451,7 +498,7 @@ class GestureHandlerOrchestrator( val child = viewConfigHelper.getChildInDrawingOrderAtIndex(viewGroup, i) if (canReceiveEvents(child)) { val childPoint = tempPoint - transformTouchPointToViewCoords(coords[0], coords[1], viewGroup, child, childPoint) + transformPointToChildViewCoords(coords[0], coords[1], viewGroup, child, childPoint) val restoreX = coords[0] val restoreY = coords[1] coords[0] = childPoint.x @@ -564,7 +611,7 @@ class GestureHandlerOrchestrator( return isLeafOrTransparent && isTransformedTouchPointInView(coords[0], coords[1], view) } - private fun transformTouchPointToViewCoords( + private fun transformPointToChildViewCoords( x: Float, y: Float, parent: ViewGroup, diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt index def114cba35b2..b7198c9e8087a 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt @@ -4,14 +4,13 @@ import android.view.MotionEvent object GestureUtils { fun getLastPointerX(event: MotionEvent, averageTouches: Boolean): Float { - val offset = event.rawX - event.x val excludeIndex = if (event.actionMasked == MotionEvent.ACTION_POINTER_UP) event.actionIndex else -1 return if (averageTouches) { var sum = 0f var count = 0 for (i in 0 until event.pointerCount) { if (i != excludeIndex) { - sum += event.getX(i) + offset + sum += event.getX(i) count++ } } @@ -21,19 +20,18 @@ object GestureUtils { if (lastPointerIdx == excludeIndex) { lastPointerIdx-- } - event.getX(lastPointerIdx) + offset + event.getX(lastPointerIdx) } } fun getLastPointerY(event: MotionEvent, averageTouches: Boolean): Float { - val offset = event.rawY - event.y val excludeIndex = if (event.actionMasked == MotionEvent.ACTION_POINTER_UP) event.actionIndex else -1 return if (averageTouches) { var sum = 0f var count = 0 for (i in 0 until event.pointerCount) { if (i != excludeIndex) { - sum += event.getY(i) + offset + sum += event.getY(i) count++ } } @@ -43,7 +41,7 @@ object GestureUtils { if (lastPointerIdx == excludeIndex) { lastPointerIdx -= 1 } - event.getY(lastPointerIdx) + offset + event.getY(lastPointerIdx) } } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt index 6f67d90a613a5..fe975593fa472 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt @@ -37,13 +37,13 @@ class LongPressGestureHandler(context: Context) : GestureHandler 0) { handler!!.postDelayed({ activate() }, minDurationMs) @@ -51,7 +51,7 @@ class LongPressGestureHandler(context: Context) : GestureHandler maxDistSq) { if (state == STATE_ACTIVE) { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt index 11e713da5db22..9d3a3f571f0a0 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt @@ -3,7 +3,7 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler import android.view.MotionEvent class ManualGestureHandler : GestureHandler() { - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { if (state == STATE_UNDETERMINED) { begin() } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt index b062f06f08a73..5cc1c0bf47eef 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt @@ -75,7 +75,7 @@ class NativeViewGestureHandler : GestureHandler() { } } - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { val view = view!! if (event.actionMasked == MotionEvent.ACTION_UP) { view.onTouchEvent(event) diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt index f96a91a341d44..84663192b50f4 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt @@ -205,31 +205,31 @@ class PanGestureHandler(context: Context?) : GestureHandler() return failOffsetYEnd != MIN_VALUE_IGNORE && dy > failOffsetYEnd } - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { val state = state - val action = event.actionMasked + val action = sourceEvent.actionMasked if (action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_POINTER_DOWN) { // update offset if new pointer gets added or removed offsetX += lastX - startX offsetY += lastY - startY // reset starting point - lastX = getLastPointerX(event, averageTouches) - lastY = getLastPointerY(event, averageTouches) + lastX = getLastPointerX(sourceEvent, averageTouches) + lastY = getLastPointerY(sourceEvent, averageTouches) startX = lastX startY = lastY } else { - lastX = getLastPointerX(event, averageTouches) - lastY = getLastPointerY(event, averageTouches) + lastX = getLastPointerX(sourceEvent, averageTouches) + lastY = getLastPointerY(sourceEvent, averageTouches) } - if (state == STATE_UNDETERMINED && event.pointerCount >= minPointers) { + if (state == STATE_UNDETERMINED && sourceEvent.pointerCount >= minPointers) { resetProgress() offsetX = 0f offsetY = 0f velocityX = 0f velocityY = 0f velocityTracker = VelocityTracker.obtain() - addVelocityMovement(velocityTracker, event) + addVelocityMovement(velocityTracker, sourceEvent) begin() if (activateAfterLongPress > 0) { @@ -239,7 +239,7 @@ class PanGestureHandler(context: Context?) : GestureHandler() handler!!.postDelayed(activateDelayed, activateAfterLongPress) } } else if (velocityTracker != null) { - addVelocityMovement(velocityTracker, event) + addVelocityMovement(velocityTracker, sourceEvent) velocityTracker!!.computeCurrentVelocity(1000) velocityX = velocityTracker!!.xVelocity velocityY = velocityTracker!!.yVelocity @@ -250,14 +250,14 @@ class PanGestureHandler(context: Context?) : GestureHandler() } else { fail() } - } else if (action == MotionEvent.ACTION_POINTER_DOWN && event.pointerCount > maxPointers) { + } else if (action == MotionEvent.ACTION_POINTER_DOWN && sourceEvent.pointerCount > maxPointers) { // When new finger is placed down (POINTER_DOWN) we check if MAX_POINTERS is not exceeded if (state == STATE_ACTIVE) { cancel() } else { fail() } - } else if (action == MotionEvent.ACTION_POINTER_UP && state == STATE_ACTIVE && event.pointerCount < minPointers) { + } else if (action == MotionEvent.ACTION_POINTER_UP && state == STATE_ACTIVE && sourceEvent.pointerCount < minPointers) { // When finger is lifted up (POINTER_UP) and the number of pointers falls below MIN_POINTERS // threshold, we only want to take an action when the handler has already activated. Otherwise // we can still expect more fingers to be placed on screen and fulfill MIN_POINTERS criteria. diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt index 56ec6acc25c05..e89904cc271e6 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt @@ -1,5 +1,6 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler +import android.graphics.PointF import android.view.MotionEvent import android.view.ViewConfiguration import kotlin.math.abs @@ -9,10 +10,10 @@ class PinchGestureHandler : GestureHandler() { private set var velocity = 0.0 private set - val focalPointX: Float - get() = scaleGestureDetector?.focusX ?: Float.NaN - val focalPointY: Float - get() = scaleGestureDetector?.focusY ?: Float.NaN + var focalPointX: Float = Float.NaN + private set + var focalPointY: Float = Float.NaN + private set private var scaleGestureDetector: ScaleGestureDetector? = null private var startingSpan = 0f @@ -47,7 +48,7 @@ class PinchGestureHandler : GestureHandler() { } } - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { if (state == STATE_UNDETERMINED) { val context = view!!.context resetProgress() @@ -56,14 +57,19 @@ class PinchGestureHandler : GestureHandler() { spanSlop = configuration.scaledTouchSlop.toFloat() begin() } - scaleGestureDetector?.onTouchEvent(event) - var activePointers = event.pointerCount - if (event.actionMasked == MotionEvent.ACTION_POINTER_UP) { + scaleGestureDetector?.onTouchEvent(sourceEvent) + scaleGestureDetector?.let { + val point = transformPoint(PointF(it.focusX, it.focusY)) + this.focalPointX = point.x + this.focalPointY = point.y + } + var activePointers = sourceEvent.pointerCount + if (sourceEvent.actionMasked == MotionEvent.ACTION_POINTER_UP) { activePointers -= 1 } if (state == STATE_ACTIVE && activePointers < 2) { end() - } else if (event.actionMasked == MotionEvent.ACTION_UP) { + } else if (sourceEvent.actionMasked == MotionEvent.ACTION_UP) { fail() } } @@ -78,6 +84,8 @@ class PinchGestureHandler : GestureHandler() { override fun onReset() { scaleGestureDetector = null + focalPointX = Float.NaN + focalPointY = Float.NaN resetProgress() } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt index be9ff4b61e942..a8e120704619d 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt @@ -1,5 +1,6 @@ package versioned.host.exp.exponent.modules.api.components.gesturehandler +import android.graphics.PointF import android.view.MotionEvent import versioned.host.exp.exponent.modules.api.components.gesturehandler.RotationGestureDetector.OnRotationGestureListener import kotlin.math.abs @@ -10,11 +11,10 @@ class RotationGestureHandler : GestureHandler() { private set var velocity = 0.0 private set - - val anchorX: Float - get() = rotationGestureDetector?.anchorX ?: Float.NaN - val anchorY: Float - get() = rotationGestureDetector?.anchorY ?: Float.NaN + var anchorX: Float = Float.NaN + private set + var anchorY: Float = Float.NaN + private set init { setShouldCancelWhenOutside(false) @@ -41,14 +41,19 @@ class RotationGestureHandler : GestureHandler() { } } - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { if (state == STATE_UNDETERMINED) { resetProgress() rotationGestureDetector = RotationGestureDetector(gestureListener) begin() } - rotationGestureDetector?.onTouchEvent(event) - if (event.actionMasked == MotionEvent.ACTION_UP) { + rotationGestureDetector?.onTouchEvent(sourceEvent) + rotationGestureDetector?.let { + val point = transformPoint(PointF(it.anchorX, it.anchorY)) + anchorX = point.x + anchorY = point.y + } + if (sourceEvent.actionMasked == MotionEvent.ACTION_UP) { if (state == STATE_ACTIVE) { end() } else { @@ -67,6 +72,8 @@ class RotationGestureHandler : GestureHandler() { override fun onReset() { rotationGestureDetector = null + anchorX = Float.NaN + anchorY = Float.NaN resetProgress() } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt index 0800edc4ee4aa..0242acafc9770 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt @@ -104,28 +104,28 @@ class TapGestureHandler : GestureHandler() { return maxDistSq != MAX_VALUE_IGNORE && dist > maxDistSq } - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { val state = state - val action = event.actionMasked + val action = sourceEvent.actionMasked if (state == STATE_UNDETERMINED) { offsetX = 0f offsetY = 0f - startX = event.rawX - startY = event.rawY + startX = getLastPointerX(sourceEvent, true) + startY = getLastPointerY(sourceEvent, true) } if (action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_POINTER_DOWN) { offsetX += lastX - startX offsetY += lastY - startY - lastX = getLastPointerX(event, true) - lastY = getLastPointerY(event, true) + lastX = getLastPointerX(sourceEvent, true) + lastY = getLastPointerY(sourceEvent, true) startX = lastX startY = lastY } else { - lastX = getLastPointerX(event, true) - lastY = getLastPointerY(event, true) + lastX = getLastPointerX(sourceEvent, true) + lastY = getLastPointerY(sourceEvent, true) } - if (currentMaxNumberOfPointers < event.pointerCount) { - currentMaxNumberOfPointers = event.pointerCount + if (currentMaxNumberOfPointers < sourceEvent.pointerCount) { + currentMaxNumberOfPointers = sourceEvent.pointerCount } if (shouldFail()) { fail() diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt index 27ab12d30b861..5fdf80ba84b41 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt @@ -168,6 +168,10 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R * [versioned.host.exp.exponent.modules.api.components.gesturehandler.NativeViewGestureHandler.onHandle] */ @SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean { + if (event.action == MotionEvent.ACTION_CANCEL) { + tryFreeingResponder() + } + val eventTime = event.eventTime val action = event.action // always true when lastEventTime or lastAction have default value (-1) @@ -268,7 +272,7 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R } override fun drawableHotspotChanged(x: Float, y: Float) { - if (responder == null || responder === this) { + if (touchResponder == null || touchResponder === this) { super.drawableHotspotChanged(x, y) } } @@ -281,19 +285,31 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R return isResponder } + override fun afterGestureEnd(event: MotionEvent) { + tryFreeingResponder() + isTouched = false + } + + private fun tryFreeingResponder() { + if (touchResponder === this) { + touchResponder = null + soundResponder = this + } + } + private fun tryGrabbingResponder(): Boolean { if (isChildTouched()) { return false } - if (responder == null) { - responder = this + if (touchResponder == null) { + touchResponder = this return true } return if (exclusive) { - responder === this + touchResponder === this } else { - !(responder?.exclusive ?: false) + !(touchResponder?.exclusive ?: false) } } @@ -314,7 +330,8 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R override fun performClick(): Boolean { // don't preform click when a child button is pressed (mainly to prevent sound effect of // a parent button from playing) - return if (!isChildTouched()) { + return if (!isChildTouched() && soundResponder == this) { + soundResponder = null super.performClick() } else { false @@ -328,22 +345,23 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R // when canStart is called eventually, tryGrabbingResponder will return true if the button // already is a responder if (pressed) { - tryGrabbingResponder() + if (tryGrabbingResponder()) { + soundResponder = this + } } // button can be pressed alongside other button if both are non-exclusive and it doesn't have // any pressed children (to prevent pressing the parent when children is pressed). - val canBePressedAlongsideOther = !exclusive && responder?.exclusive != true && !isChildTouched() + val canBePressedAlongsideOther = !exclusive && touchResponder?.exclusive != true && !isChildTouched() - if (!pressed || responder === this || canBePressedAlongsideOther) { + if (!pressed || touchResponder === this || canBePressedAlongsideOther) { // we set pressed state only for current responder or any non-exclusive button when responder // is null or non-exclusive, assuming it doesn't have pressed children isTouched = pressed super.setPressed(pressed) } - if (!pressed && responder === this) { + if (!pressed && touchResponder === this) { // if the responder is no longer pressed we release button responder - responder = null isTouched = false } } @@ -355,7 +373,8 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R companion object { var resolveOutValue = TypedValue() - var responder: ButtonViewGroup? = null + var touchResponder: ButtonViewGroup? = null + var soundResponder: ButtonViewGroup? = null var dummyClickListener = OnClickListener { } } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt index 890a74b4d96ea..3b10389ca544d 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt @@ -347,7 +347,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) val registry: RNGestureHandlerRegistry = RNGestureHandlerRegistry() private val interactionManager = RNGestureHandlerInteractionManager() private val roots: MutableList = ArrayList() - private val enqueuedRootViewInit: MutableList = ArrayList() + private val reanimatedEventDispatcher = ReanimatedEventDispatcher() override fun getName() = MODULE_NAME @ReactMethod @@ -594,7 +594,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) // Delivers the event to Reanimated. if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // Send event directly to Reanimated - // ReanimatedEventDispatcher.sendEvent(event, reactApplicationContext) // COMMENTED OUT BY VENDORING SCRIPT + reanimatedEventDispatcher.sendEvent(event, reactApplicationContext) } else { // In the old architecture, Reanimated subscribes for specific direct events. sendEventForDirectEvent(event) diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt index 90570d118f8dd..3db1cf07785dc 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt @@ -54,7 +54,7 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: } private inner class RootViewGestureHandler : GestureHandler() { - override fun onHandle(event: MotionEvent) { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { val currentState = state if (currentState == STATE_UNDETERMINED) { begin() diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json index 2a685dfa4e386..0a7f08578b0f5 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.1", - "react-native-gesture-handler": "~2.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-reanimated": "~2.10.0", "react-native-safe-area-context": "4.3.1", "react-native-screens": "~3.15.0", diff --git a/apps/bare-sandbox/package.json b/apps/bare-sandbox/package.json index 5b9da44446fd2..df7c55245e881 100644 --- a/apps/bare-sandbox/package.json +++ b/apps/bare-sandbox/package.json @@ -18,7 +18,7 @@ "react": "18.1.0", "react-dom": "18.0.0", "react-native": "0.70.1", - "react-native-gesture-handler": "~2.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-reanimated": "~2.10.0", "react-native-screens": "~3.15.0", "react-native-web": "~0.18.9" diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index 44f3165936378..81456e613602b 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -144,7 +144,7 @@ "react": "18.1.0", "react-dom": "18.0.0", "react-native": "0.70.1", - "react-native-gesture-handler": "~2.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-iphone-x-helper": "^1.3.0", "react-native-maps": "0.31.1", "react-native-pager-view": "5.4.24", diff --git a/apps/test-suite/package.json b/apps/test-suite/package.json index fc364daebab9a..52cfc6a6ad77a 100644 --- a/apps/test-suite/package.json +++ b/apps/test-suite/package.json @@ -51,7 +51,7 @@ "lodash": "^4.17.19", "react": "18.1.0", "react-native": "0.70.1", - "react-native-gesture-handler": "~2.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-safe-area-view": "^0.14.8", "sinon": "^7.1.1" }, diff --git a/home/package.json b/home/package.json index 1d6e5c3f79481..8d6885472675e 100644 --- a/home/package.json +++ b/home/package.json @@ -55,7 +55,7 @@ "react": "18.1.0", "react-native": "0.70.1", "react-native-fade-in-image": "^1.6.1", - "react-native-gesture-handler": "~2.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-infinite-scroll-view": "^0.4.5", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-maps": "0.31.1", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4bd14020991c6..8fd8d44322863 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2014,7 +2014,7 @@ PODS: - React-perflogger (= 0.70.1) - RNFlashList (1.3.0): - React-Core - - RNGestureHandler (2.6.2): + - RNGestureHandler (2.7.0): - React-Core - RNReanimated (2.9.1): - DoubleConversion @@ -3509,7 +3509,7 @@ SPEC CHECKSUMS: React-runtimeexecutor: a11d0c2e14140baf1e449264ca9168ae9ae6bbd0 ReactCommon: 7f86326b92009925c6dcf93f8e825060171c379f RNFlashList: 5116f2de2f543f01bfc30b22d5942d5af84b43df - RNGestureHandler: 4defbd70b2faf3d6761b82fa7880285241762cb0 + RNGestureHandler: 7673697e7c0e9391adefae4faa087442bc04af33 RNReanimated: 5c8c17e26787fd8984cd5accdc70fef2ca70aafd RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7 Stripe: fb29a476e4866fec4ef22fb76207363dd32795aa 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 80578f05ad105..86e5b94d10d18 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.6.2", + "version": "2.7.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.6.2" + "tag": "2.7.0" }, "source_files": "ios/**/*.{h,m,mm}", "requires_arc": true, 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 29ac1566b1282..0688a780495db 100644 --- a/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm +++ b/ios/vendored/unversioned/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm @@ -5,10 +5,10 @@ #import #import -#import -#import -#import -#import +#import +#import +#import +#import #import "RNGestureHandlerButton.h" diff --git a/packages/expo-stories/package.json b/packages/expo-stories/package.json index f51f60db638ec..7796b72d5a03b 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.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-safe-area-context": "4.3.1", "react-native-screens": "~3.15.0", "react-native-svg": "12.3.0", diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json index b66f38aea2608..3705ee936967b 100644 --- a/packages/expo/bundledNativeModules.json +++ b/packages/expo/bundledNativeModules.json @@ -90,7 +90,7 @@ "react-native": "0.70.1", "react-native-web": "~0.18.9", "react-native-branch": "^5.4.0", - "react-native-gesture-handler": "~2.6.2", + "react-native-gesture-handler": "~2.7.0", "react-native-get-random-values": "~1.8.0", "react-native-maps": "0.31.1", "react-native-pager-view": "5.4.24", From ef1d27898ea8e0137bada8402ac7dfc9d63e3e18 Mon Sep 17 00:00:00 2001 From: Tomasz Sapeta Date: Tue, 4 Oct 2022 17:53:59 +0200 Subject: [PATCH 3/4] Migrate to the new vendoring mechanism --- .../host/exp/exponent/ExponentPackage.kt | 4 +- .../modules/api/reanimated/NativeProxy.java | 3 +- .../android/build.gradle | 229 ++++++++++++++++++ .../common/GestureHandlerStateManager.kt | 2 +- .../android/gradle.properties | 19 ++ .../android/lib/src/main/AndroidManifest.xml | 3 + .../swmansion}/gesturehandler/Extensions.kt | 2 +- .../gesturehandler/FlingGestureHandler.kt | 2 +- .../gesturehandler/GestureHandler.kt | 5 +- .../GestureHandlerInteractionController.kt | 2 +- .../GestureHandlerOrchestrator.kt | 2 +- .../gesturehandler/GestureHandlerRegistry.kt | 2 +- .../swmansion}/gesturehandler/GestureUtils.kt | 2 +- .../gesturehandler/LongPressGestureHandler.kt | 2 +- .../gesturehandler/ManualGestureHandler.kt | 2 +- .../NativeViewGestureHandler.kt | 2 +- .../gesturehandler/OnTouchEventListener.kt | 2 +- .../gesturehandler/PanGestureHandler.kt | 6 +- .../gesturehandler/PinchGestureHandler.kt | 2 +- .../gesturehandler/PointerEventsConfig.kt | 2 +- .../gesturehandler/RotationGestureDetector.kt | 2 +- .../gesturehandler/RotationGestureHandler.kt | 4 +- .../gesturehandler/ScaleGestureDetector.java | 2 +- .../gesturehandler/TapGestureHandler.kt | 6 +- .../gesturehandler/ViewConfigurationHelper.kt | 2 +- .../gesturehandler/ExampleUnitTest.java | 12 + .../ReanimatedEventDispatcher.kt | 10 + .../ReanimatedEventDispatcher.kt | 17 ++ .../android/settings.gradle | 1 + .../RNGestureHandlerComponentsRegistry.java | 29 +++ .../gesturehandler/ReactContextExtensions.kt | 12 + .../android/src/main/AndroidManifest.xml | 3 + .../gesturehandler/RNGestureHandlerPackage.kt | 11 +- .../RNGestureHandlerButtonViewManager.kt | 9 +- .../react/RNGestureHandlerEnabledRootView.kt | 2 +- .../react/RNGestureHandlerEvent.kt | 4 +- .../RNGestureHandlerEventDataExtractor.kt | 4 +- .../RNGestureHandlerInteractionManager.kt | 8 +- .../react/RNGestureHandlerModule.kt | 7 +- .../react/RNGestureHandlerRegistry.kt | 6 +- .../react/RNGestureHandlerRootHelper.kt | 6 +- .../react/RNGestureHandlerRootInterface.kt | 2 +- .../react/RNGestureHandlerRootView.kt | 2 +- .../react/RNGestureHandlerRootViewManager.kt | 2 +- .../react/RNGestureHandlerStateChangeEvent.kt | 4 +- .../react/RNGestureHandlerTouchEvent.kt | 4 +- .../react/RNViewConfigurationHelper.kt | 6 +- .../android/src/main/jni/CMakeLists.txt | 59 +++++ .../android/src/main/jni/cpp-adapter.cpp | 41 ++++ ...RNGestureHandlerButtonManagerDelegate.java | 0 ...NGestureHandlerButtonManagerInterface.java | 0 ...GestureHandlerRootViewManagerDelegate.java | 0 ...estureHandlerRootViewManagerInterface.java | 0 .../gesturehandler/ReactContextExtensions.kt | 2 +- tools/src/vendoring/config/expoGoConfig.ts | 1 + 55 files changed, 504 insertions(+), 71 deletions(-) create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/build.gradle rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler => vendored/unversioned/react-native-gesture-handler/android/common/src/main/java/com/swmansion}/common/GestureHandlerStateManager.kt (58%) create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/AndroidManifest.xml rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/Extensions.kt (85%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/FlingGestureHandler.kt (97%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/GestureHandler.kt (99%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/GestureHandlerInteractionController.kt (86%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/GestureHandlerOrchestrator.kt (99%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/GestureHandlerRegistry.kt (67%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/GestureUtils.kt (94%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/LongPressGestureHandler.kt (97%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/ManualGestureHandler.kt (76%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/NativeViewGestureHandler.kt (99%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/OnTouchEventListener.kt (79%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/PanGestureHandler.kt (97%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/PinchGestureHandler.kt (97%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/PointerEventsConfig.kt (84%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/RotationGestureDetector.kt (98%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/RotationGestureHandler.kt (91%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/ScaleGestureDetector.java (99%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/TapGestureHandler.kt (94%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion}/gesturehandler/ViewConfigurationHelper.kt (79%) create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/lib/src/test/java/com/swmansion/gesturehandler/ExampleUnitTest.java create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/settings.gradle create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/src/main/AndroidManifest.xml rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/RNGestureHandlerPackage.kt (57%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerButtonViewManager.kt (96%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerEnabledRootView.kt (91%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerEvent.kt (92%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt (51%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerInteractionManager.kt (85%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerModule.kt (99%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerRegistry.kt (91%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerRootHelper.kt (94%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerRootInterface.kt (53%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerRootView.kt (96%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerRootViewManager.kt (96%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt (93%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNGestureHandlerTouchEvent.kt (92%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion}/gesturehandler/react/RNViewConfigurationHelper.kt (86%) create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt create mode 100644 android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp rename android/{expoview/src/main => vendored/unversioned/react-native-gesture-handler/android/src/paper}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java (100%) rename android/{expoview/src/main => vendored/unversioned/react-native-gesture-handler/android/src/paper}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java (100%) rename android/{expoview/src/main => vendored/unversioned/react-native-gesture-handler/android/src/paper}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java (100%) rename android/{expoview/src/main => vendored/unversioned/react-native-gesture-handler/android/src/paper}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java (100%) rename android/{expoview/src/main/java/versioned/host/exp/exponent/modules/api/components => vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion}/gesturehandler/ReactContextExtensions.kt (86%) diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt b/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt index 4575933434a65..d463e6a680e33 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentPackage.kt @@ -9,6 +9,8 @@ import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.ViewManager import com.shopify.reactnative.flash_list.ReactNativeFlashListPackage import com.shopify.reactnative.skia.RNSkiaPackage +import com.swmansion.gesturehandler.RNGestureHandlerPackage +import com.swmansion.gesturehandler.react.RNGestureHandlerModule import expo.modules.adapters.react.ReactModuleRegistryProvider import expo.modules.core.interfaces.Package import expo.modules.core.interfaces.SingletonModule @@ -26,8 +28,6 @@ import org.json.JSONException import versioned.host.exp.exponent.modules.api.* import versioned.host.exp.exponent.modules.api.cognito.RNAWSCognitoModule import versioned.host.exp.exponent.modules.api.components.datetimepicker.RNDateTimePickerPackage -import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerModule -import versioned.host.exp.exponent.modules.api.components.gesturehandler.RNGestureHandlerPackage import versioned.host.exp.exponent.modules.api.components.lottie.LottiePackage import versioned.host.exp.exponent.modules.api.components.maps.MapsPackage import versioned.host.exp.exponent.modules.api.components.maskedview.RNCMaskedViewPackage diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/reanimated/NativeProxy.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/reanimated/NativeProxy.java index 6d2ab5d7802cb..02fd6797927a9 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/reanimated/NativeProxy.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/reanimated/NativeProxy.java @@ -15,7 +15,8 @@ import com.facebook.react.turbomodule.core.CallInvokerHolderImpl; import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.events.RCTEventEmitter; -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandlerStateManager; +import com.swmansion.common.GestureHandlerStateManager; + import versioned.host.exp.exponent.modules.api.reanimated.layoutReanimation.AnimationsManager; import versioned.host.exp.exponent.modules.api.reanimated.layoutReanimation.LayoutAnimations; import versioned.host.exp.exponent.modules.api.reanimated.layoutReanimation.NativeMethodsHolder; diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle b/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle new file mode 100644 index 0000000000000..59e09d694a166 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/build.gradle @@ -0,0 +1,229 @@ +import groovy.json.JsonSlurper +import java.nio.file.Paths + +buildscript { + def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['RNGH_kotlinVersion'] + + repositories { + mavenCentral() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +def isNewArchitectureEnabled() { + // To opt-in for the New Architecture, you can either: + // - Set `newArchEnabled` to true inside the `gradle.properties` file + // - Invoke gradle with `-newArchEnabled=true` + // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" +} + +static def findNodeModulePath(baseDir, packageName) { + def basePath = baseDir.toPath().normalize() + // Node's module resolution algorithm searches up to the root directory, + // after which the base path will be null + while (basePath) { + def candidatePath = Paths.get(basePath.toString(), "node_modules", packageName) + if (candidatePath.toFile().exists()) { + return candidatePath.toString() + } + basePath = basePath.getParent() + } + return null +} + +def findNodeModulePath(packageName) { + // Don't start in the project dir, as its path ends with node_modules/react-native-gesture-handler/android + // we want to go two levels up, so we end up in the first_node modules and eventually + // search upwards if the package is not found there + return findNodeModulePath(projectDir.toPath().parent.parent.toFile(), packageName) +} + +if (isNewArchitectureEnabled()) { + apply plugin: 'com.facebook.react' +} +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +def safeExtGet(prop, fallback) { + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback +} + +// Check whether Reanimated 2.3 or higher is installed alongside Gesture Handler +def shouldUseCommonInterfaceFromReanimated() { + def reanimated = rootProject.subprojects.find { it.name == 'react-native-reanimated' } + if (reanimated != null) { + def inputFile = new File(reanimated.projectDir, '../package.json') + def json = new JsonSlurper().parseText(inputFile.text) + def reanimatedVersion = json.version as String + def (major, minor, patch) = reanimatedVersion.tokenize('.') + return (Integer.parseInt(major) == 2 && Integer.parseInt(minor) >= 3) || Integer.parseInt(major) == 3 + } else { + return false + } +} + +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} + +def shouldAssertNoMultipleInstances() { + if (rootProject.hasProperty("disableMultipleInstancesCheck")) { + return rootProject.property("disableMultipleInstancesCheck") != "true" + } else { + return true + } +} + +def noMultipleInstancesAssertion() { + Set files = fileTree(rootDir.parent) { + include "node_modules/**/react-native-gesture-handler/package.json" + exclude "**/.yarn/**" + }.files + + if (files.size() > 1) { + String parsedLocation = files.stream().map({ File file -> "- " + file.toString().replace("/package.json", "") }).collect().join("\n") + String exceptionMessage = "\n[Gesture Handler] Multiple instances of Gesture Handler were detected. Only one instance of react-native-gesture-handler can be installed in a project. You need to resolve the conflict manually. Check out the documentation: https://docs.swmansion.com/react-native-gesture-handler/docs/troubleshooting#multiple-instances-of-gesture-handler-were-detected \n\nConflict between: \n" + parsedLocation + "\n"; + throw new Exception(exceptionMessage); + } +} + +def REACT_NATIVE_DIR = findNodeModulePath("react-native") + +def assertionTask = task assertNoMultipleInstances { + onlyIf { shouldAssertNoMultipleInstances() } + doFirst { + noMultipleInstancesAssertion() + } +} + +tasks.preBuild { + dependsOn assertionTask +} + +repositories { + mavenCentral() +} + +android { + compileSdkVersion safeExtGet("compileSdkVersion", 28) + + // Used to override the NDK path/version on internal CI or by allowing + // users to customize the NDK path/version from their root project (e.g. for M1 support) + if (rootProject.hasProperty("ndkPath")) { + ndkPath rootProject.ext.ndkPath + } + if (rootProject.hasProperty("ndkVersion")) { + ndkVersion rootProject.ext.ndkVersion + } + + defaultConfig { + minSdkVersion safeExtGet('minSdkVersion', 16) + targetSdkVersion safeExtGet('targetSdkVersion', 28) + versionCode 1 + versionName "1.0" + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() + if (isNewArchitectureEnabled()) { + var appProject = rootProject.allprojects.find {it.plugins.hasPlugin('com.android.application')} + externalNativeBuild { + cmake { + cppFlags "-O2 -frtti -fexceptions -Wall -Wno-unused-variable -fstack-protector-all" + arguments "-DAPP_BUILD_DIR=${appProject.buildDir}", + "-DREACT_NATIVE_DIR=${REACT_NATIVE_DIR}", + "-DANDROID_STL=c++_shared" + abiFilters (*reactNativeArchitectures()) + } + } + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + if (isNewArchitectureEnabled()) { + externalNativeBuild { + cmake { + path "src/main/jni/CMakeLists.txt" + } + } + } + + packagingOptions { + // For some reason gradle only complains about the duplicated version of libreact_render libraries + // while there are more libraries copied in intermediates folder of the lib build directory, we exclude + // only the ones that make the build fail (ideally we should only include libgesturehandler but we + // are only allowed to specify exclude patterns) + 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()) { + srcDirs += 'reanimated/src/main/java' + } else { + srcDirs += 'common/src/main/java' + srcDirs += 'noreanimated/src/main/java' + } + + if (isNewArchitectureEnabled()) { + srcDirs += 'src/fabric/java' + } else { + // this folder also includes files from codegen so the library can compile with + // codegen turned off + srcDirs += 'src/paper/java' + } + } + } +} + +def kotlin_version = safeExtGet('kotlinVersion', project.properties['RNGH_kotlinVersion']) + +dependencies { + //noinspection GradleDynamicVersion + if (isNewArchitectureEnabled()) { + implementation project(':ReactAndroid') + } else { + implementation 'com.facebook.react:react-native:+' + } + + if (shouldUseCommonInterfaceFromReanimated()) { + // Include Reanimated as dependency to load the common interface + implementation (rootProject.subprojects.find { it.name == 'react-native-reanimated' }) { + exclude group:'com.facebook.fbjni' // resolves "Duplicate class com.facebook.jni.CppException" + } + } + + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation "androidx.core:core-ktx:1.6.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} + +if (isNewArchitectureEnabled()) { + // Resolves "LOCAL_SRC_FILES points to a missing file, Check that libfb.so exists or that its path is correct". + tasks.whenTaskAdded { task -> + if (task.name.contains("configureCMakeDebug")) { + rootProject.getTasksByName("packageReactNdkDebugLibs", true).forEach { + task.dependsOn(it) + } + } + // We want to add a dependency for both configureCMakeRelease and configureCMakeRelWithDebInfo + if (task.name.contains("configureCMakeRel")) { + rootProject.getTasksByName("packageReactNdkReleaseLibs", true).forEach { + task.dependsOn(it) + } + } + } +} diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/common/GestureHandlerStateManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt similarity index 58% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/common/GestureHandlerStateManager.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt index 95b91702dbd37..4e754cdbf1a0d 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/common/GestureHandlerStateManager.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.common interface GestureHandlerStateManager { fun setGestureHandlerState(handlerTag: Int, newState: Int) diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties b/android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties new file mode 100644 index 0000000000000..bb5cbe32541a0 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/gradle.properties @@ -0,0 +1,19 @@ +# 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 new file mode 100644 index 0000000000000..5fa4c9c519414 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/Extensions.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt similarity index 85% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/Extensions.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt index 1033096d6a915..a0c959ddec9a9 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/Extensions.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import com.facebook.react.bridge.ReactContext import com.facebook.react.modules.core.DeviceEventManagerModule diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt index e1bb6fd828b33..fc2c8ed019bd0 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/FlingGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.os.Handler import android.os.Looper diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt similarity index 99% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt index c9602050d117b..f690e42efb771 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt @@ -1,5 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler -import host.exp.expoview.BuildConfig +package com.swmansion.gesturehandler import android.app.Activity import android.content.Context @@ -15,7 +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 versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerTouchEvent +import com.swmansion.gesturehandler.react.RNGestureHandlerTouchEvent import java.lang.IllegalStateException import java.util.* diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerInteractionController.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt similarity index 86% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerInteractionController.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt index 4d3df1f7a0b43..c9dfa2ab4c3cf 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerInteractionController.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler interface GestureHandlerInteractionController { fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt similarity index 99% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt index f114a31c809de..d4380a2faaed8 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerOrchestrator.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.graphics.Matrix import android.graphics.PointF diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerRegistry.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt similarity index 67% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerRegistry.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt index d0f721b018970..f8f51723cd522 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureHandlerRegistry.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.view.View import java.util.* diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt similarity index 94% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt index b7198c9e8087a..15f9c395c92ec 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/GestureUtils.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.view.MotionEvent diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt index fe975593fa472..47a5222c25f09 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/LongPressGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.content.Context import android.os.Handler diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt similarity index 76% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt index 9d3a3f571f0a0..f55ecd68f4f40 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ManualGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.view.MotionEvent diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt similarity index 99% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt index 5cc1c0bf47eef..1ab3048169087 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/NativeViewGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.os.SystemClock import android.view.MotionEvent diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/OnTouchEventListener.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt similarity index 79% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/OnTouchEventListener.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt index b82986a050e00..2bdd7fa75e632 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/OnTouchEventListener.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.view.MotionEvent diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt index 84663192b50f4..7caf07fa55fc9 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PanGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureUtils.getLastPointerX -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureUtils.getLastPointerY +import com.swmansion.gesturehandler.GestureUtils.getLastPointerX +import com.swmansion.gesturehandler.GestureUtils.getLastPointerY class PanGestureHandler(context: Context?) : GestureHandler() { var velocityX = 0f diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt index e89904cc271e6..6f6afd72557da 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PinchGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.graphics.PointF import android.view.MotionEvent diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PointerEventsConfig.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PointerEventsConfig.kt similarity index 84% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PointerEventsConfig.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PointerEventsConfig.kt index 90b400a388d6c..d85ef12f3607e 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/PointerEventsConfig.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/PointerEventsConfig.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler enum class PointerEventsConfig { /** diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureDetector.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt similarity index 98% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureDetector.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt index 5fd4ff3a8fcbc..6da6049ddc4a8 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureDetector.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.view.MotionEvent import kotlin.math.atan2 diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt similarity index 91% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt index a8e120704619d..e86c7447c1dad 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RotationGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt @@ -1,8 +1,8 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.graphics.PointF import android.view.MotionEvent -import versioned.host.exp.exponent.modules.api.components.gesturehandler.RotationGestureDetector.OnRotationGestureListener +import com.swmansion.gesturehandler.RotationGestureDetector.OnRotationGestureListener import kotlin.math.abs class RotationGestureHandler : GestureHandler() { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ScaleGestureDetector.java b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java similarity index 99% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ScaleGestureDetector.java rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java index 087600881cf23..32c266367baf5 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ScaleGestureDetector.java +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/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 versioned.host.exp.exponent.modules.api.components.gesturehandler; +package com.swmansion.gesturehandler; import android.content.Context; import android.os.Build; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt similarity index 94% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt index 0242acafc9770..048abd7b1123d 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/TapGestureHandler.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt @@ -1,10 +1,10 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.os.Handler import android.os.Looper import android.view.MotionEvent -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureUtils.getLastPointerX -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureUtils.getLastPointerY +import com.swmansion.gesturehandler.GestureUtils.getLastPointerX +import com.swmansion.gesturehandler.GestureUtils.getLastPointerY import kotlin.math.abs class TapGestureHandler : GestureHandler() { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ViewConfigurationHelper.kt b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt similarity index 79% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ViewConfigurationHelper.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt index 869aeafb63947..131f4869613e8 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ViewConfigurationHelper.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import android.view.View import android.view.ViewGroup 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 new file mode 100644 index 0000000000000..b258220b8e2f3 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/lib/src/test/java/com/swmansion/gesturehandler/ExampleUnitTest.java @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000000000..6202cde89b3a9 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt @@ -0,0 +1,10 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.events.Event + +class ReanimatedEventDispatcher { + 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 new file mode 100644 index 0000000000000..3abd66529cd15 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt @@ -0,0 +1,17 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.events.Event +import com.swmansion.reanimated.ReanimatedModule + +class ReanimatedEventDispatcher { + private var reanimatedModule: ReanimatedModule? = null + + 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 new file mode 100644 index 0000000000000..c8e23f4979eb4 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/settings.gradle @@ -0,0 +1 @@ +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/RNGestureHandlerComponentsRegistry.java b/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java new file mode 100644 index 0000000000000..44f6fc6ff31ed --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java @@ -0,0 +1,29 @@ +package com.swmansion.gesturehandler.react; + +import com.facebook.jni.HybridData; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.fabric.ComponentFactory; +import com.facebook.soloader.SoLoader; + +@DoNotStrip +public class RNGestureHandlerComponentsRegistry { + static { + SoLoader.loadLibrary("fabricjni"); + SoLoader.loadLibrary("gesturehandler"); + } + + @DoNotStrip private final HybridData mHybridData; + + @DoNotStrip + private native HybridData initHybrid(ComponentFactory componentFactory); + + @DoNotStrip + private RNGestureHandlerComponentsRegistry(ComponentFactory componentFactory) { + mHybridData = initHybrid(componentFactory); + } + + @DoNotStrip + public static RNGestureHandlerComponentsRegistry register(ComponentFactory componentFactory) { + return new RNGestureHandlerComponentsRegistry(componentFactory); + } +} 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 new file mode 100644 index 0000000000000..bdc18b772df1d --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt @@ -0,0 +1,12 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.fabric.FabricUIManager +import com.facebook.react.uimanager.UIManagerHelper +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) +} diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/AndroidManifest.xml b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000000000..5fa4c9c519414 --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt similarity index 57% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt index 065f0100e825d..d022eb381e86a 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/RNGestureHandlerPackage.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt @@ -1,14 +1,13 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler -import host.exp.expoview.BuildConfig +package com.swmansion.gesturehandler import com.facebook.react.ReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.ViewManager - -import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerModule -import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerRootViewManager -import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerButtonViewManager +import com.swmansion.gesturehandler.BuildConfig +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 { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt similarity index 96% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt index 5fdf80ba84b41..7451e47a51382 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt @@ -1,5 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react -import host.exp.expoview.R +package com.swmansion.gesturehandler.react import android.annotation.SuppressLint import android.annotation.TargetApi @@ -28,8 +27,8 @@ 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.NativeViewGestureHandler -import versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerButtonViewManager.ButtonViewGroup +import com.swmansion.gesturehandler.NativeViewGestureHandler +import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager.ButtonViewGroup @ReactModule(name = RNGestureHandlerButtonViewManager.REACT_CLASS) class RNGestureHandlerButtonViewManager : ViewGroupManager(), RNGestureHandlerButtonManagerInterface { @@ -165,7 +164,7 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R * (e.g. move and up in one gesture; move and cancel) * * Reference: - * [versioned.host.exp.exponent.modules.api.components.gesturehandler.NativeViewGestureHandler.onHandle] */ + * [com.swmansion.gesturehandler.NativeViewGestureHandler.onHandle] */ @SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean { if (event.action == MotionEvent.ACTION_CANCEL) { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEnabledRootView.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt similarity index 91% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEnabledRootView.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt index 5f922b4e8b352..471ce311ef518 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import android.content.Context import android.os.Bundle diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEvent.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt similarity index 92% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEvent.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt index ece0c0abe6512..10ca971db7daf 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEvent.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt @@ -4,14 +4,14 @@ // ref: https://github.com/facebook/react-native/commit/2fbbdbb2ce897e8da3f471b08b93f167d566db1d @file:Suppress("DEPRECATION") -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import androidx.core.util.Pools 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandler class RNGestureHandlerEvent private constructor() : Event() { private var extraData: WritableMap? = null diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt similarity index 51% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt index 70b4566250098..3a4ce05e83034 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/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 versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import com.facebook.react.bridge.WritableMap -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandler interface RNGestureHandlerEventDataExtractor> { fun extractEventData(handler: T, eventData: WritableMap) diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt similarity index 85% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt index e44719523b273..682eeec010e89 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerInteractionManager.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt @@ -1,10 +1,10 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import android.util.SparseArray import com.facebook.react.bridge.ReadableMap -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandlerInteractionController -import versioned.host.exp.exponent.modules.api.components.gesturehandler.NativeViewGestureHandler +import com.swmansion.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandlerInteractionController +import com.swmansion.gesturehandler.NativeViewGestureHandler class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { private val waitForRelations = SparseArray() diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt similarity index 99% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt index 3b10389ca544d..c710e85e1e823 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerModule.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt @@ -1,5 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react -import host.exp.expoview.BuildConfig +package com.swmansion.gesturehandler.react import android.content.Context import android.util.Log @@ -12,8 +11,8 @@ 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandlerStateManager -import versioned.host.exp.exponent.modules.api.components.gesturehandler.* +import com.swmansion.common.GestureHandlerStateManager +import com.swmansion.gesturehandler.* import java.util.* // NativeModule.onCatalystInstanceDestroy() was deprecated in favor of NativeModule.invalidate() // ref: https://github.com/facebook/react-native/commit/18c8417290823e67e211bde241ae9dde27b72f17 diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRegistry.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt similarity index 91% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRegistry.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt index b517da0a5148c..6c100f37a1f36 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRegistry.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt @@ -1,10 +1,10 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import android.util.SparseArray import android.view.View import com.facebook.react.bridge.UiThreadUtil -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandlerRegistry +import com.swmansion.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandlerRegistry import java.util.* class RNGestureHandlerRegistry : GestureHandlerRegistry { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt similarity index 94% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt index 3db1cf07785dc..2a3442e7c9f81 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootHelper.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import android.os.SystemClock import android.util.Log @@ -10,8 +10,8 @@ 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler -import versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandlerOrchestrator +import com.swmansion.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandlerOrchestrator class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) { private val orchestrator: GestureHandlerOrchestrator? diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootInterface.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt similarity index 53% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootInterface.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt index d85d88e83db71..5bed5489b8428 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootInterface.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react interface RNGestureHandlerRootInterface { val rootHelper: RNGestureHandlerRootHelper? diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootView.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt similarity index 96% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootView.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt index 6b36e18a8c5fe..da3098fd03218 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootView.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import android.content.Context import android.util.Log diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootViewManager.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt similarity index 96% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootViewManager.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt index ed698b17256f0..e310c04314b07 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerRootViewManager.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import com.facebook.react.module.annotations.ReactModule import com.facebook.react.uimanager.ThemedReactContext diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt similarity index 93% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt index b9993f1cb1e6a..90aff4694145a 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt @@ -4,14 +4,14 @@ // ref: https://github.com/facebook/react-native/commit/2fbbdbb2ce897e8da3f471b08b93f167d566db1d @file:Suppress("DEPRECATION") -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import androidx.core.util.Pools 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandler class RNGestureHandlerStateChangeEvent private constructor() : Event() { private var extraData: WritableMap? = null diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerTouchEvent.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt similarity index 92% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerTouchEvent.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt index 6a94c2e128b46..88f0ece7e5e00 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNGestureHandlerTouchEvent.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt @@ -1,11 +1,11 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import androidx.core.util.Pools 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 versioned.host.exp.exponent.modules.api.components.gesturehandler.GestureHandler +import com.swmansion.gesturehandler.GestureHandler class RNGestureHandlerTouchEvent private constructor() : Event() { private var extraData: WritableMap? = null diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNViewConfigurationHelper.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt similarity index 86% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNViewConfigurationHelper.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt index 83b5e662bd9c3..d33c4f3034083 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/react/RNViewConfigurationHelper.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt @@ -1,12 +1,12 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler.react +package com.swmansion.gesturehandler.react import android.view.View import android.view.ViewGroup import com.facebook.react.uimanager.PointerEvents import com.facebook.react.uimanager.ReactPointerEventsView import com.facebook.react.views.view.ReactViewGroup -import versioned.host.exp.exponent.modules.api.components.gesturehandler.PointerEventsConfig -import versioned.host.exp.exponent.modules.api.components.gesturehandler.ViewConfigurationHelper +import com.swmansion.gesturehandler.PointerEventsConfig +import com.swmansion.gesturehandler.ViewConfigurationHelper class RNViewConfigurationHelper : ViewConfigurationHelper { override fun getPointerEventsConfigForView(view: View): PointerEventsConfig { diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt new file mode 100644 index 0000000000000..af11fb44ecbaa --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt @@ -0,0 +1,59 @@ +project(GestureHandler) +cmake_minimum_required(VERSION 3.9.0) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_FLAGS "-DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_MOBILE=1 -DFOLLY_HAVE_RECVMMSG=1 -DFOLLY_HAVE_PTHREAD=1") + +add_library(gesturehandler + SHARED + cpp-adapter.cpp +) + +set(REACT_ANDROID_DIR "${REACT_NATIVE_DIR}/ReactAndroid") +set(REACT_COMMON_DIR "${REACT_NATIVE_DIR}/ReactCommon") +set(REACT_NDK_EXPORT_DIR "${APP_BUILD_DIR}/react-ndk/exported") + +# copied from react-native/ReactAndroid/cmake-utils/Android-prebuilt.cmake + +## jsi +add_library(jsi SHARED IMPORTED GLOBAL) +set_target_properties(jsi + PROPERTIES + IMPORTED_LOCATION + ${REACT_NDK_EXPORT_DIR}/${ANDROID_ABI}/libjsi.so) +target_include_directories(jsi INTERFACE ${REACT_COMMON_DIR}/jsi) + +## react_render_core +add_library(react_render_core SHARED IMPORTED GLOBAL) +set_target_properties(react_render_core + PROPERTIES + IMPORTED_LOCATION + ${REACT_NDK_EXPORT_DIR}/${ANDROID_ABI}/libreact_render_core.so) +target_include_directories(react_render_core + INTERFACE + ${REACT_COMMON_DIR} + ${REACT_COMMON_DIR}/react/renderer/core) + +## react_render_uimanager +add_library(react_render_uimanager SHARED IMPORTED GLOBAL) +set_target_properties(react_render_uimanager + PROPERTIES + IMPORTED_LOCATION + ${REACT_NDK_EXPORT_DIR}/${ANDROID_ABI}/libreact_render_uimanager.so) +target_include_directories(react_render_uimanager INTERFACE ${REACT_COMMON_DIR}/react/renderer/uimanager) + +target_include_directories( + gesturehandler + PRIVATE + "${REACT_ANDROID_DIR}/build/third-party-ndk/boost/boost_1_76_0" + "${REACT_ANDROID_DIR}/build/third-party-ndk/double-conversion" + "${REACT_ANDROID_DIR}/build/third-party-ndk/folly" +) + +target_link_libraries( + gesturehandler + jsi + react_render_uimanager + react_render_core +) diff --git a/android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp new file mode 100644 index 0000000000000..211f2f966769e --- /dev/null +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp @@ -0,0 +1,41 @@ +#include +#include + +#include + +using namespace facebook; +using namespace react; + +void decorateRuntime(jsi::Runtime &runtime) +{ + auto isFormsStackingContext = jsi::Function::createFromHostFunction( + runtime, + jsi::PropNameID::forAscii(runtime, "isFormsStackingContext"), + 1, + [](jsi::Runtime &runtime, + const jsi::Value &thisValue, + const jsi::Value *arguments, + size_t count) -> jsi::Value + { + if (!arguments[0].isObject()) + { + return jsi::Value::null(); + } + + auto shadowNode = arguments[0].asObject(runtime).getHostObject(runtime)->shadowNode; + bool isFormsStackingContext = shadowNode->getTraits().check(ShadowNodeTraits::FormsStackingContext); + + return jsi::Value(isFormsStackingContext); + }); + runtime.global().setProperty(runtime, "isFormsStackingContext", std::move(isFormsStackingContext)); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_swmansion_gesturehandler_react_RNGestureHandlerModule_decorateRuntime(JNIEnv *env, jobject clazz, jlong jsiPtr) +{ + jsi::Runtime *runtime = reinterpret_cast(jsiPtr); + if (runtime) + { + decorateRuntime(*runtime); + } +} diff --git a/android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java similarity index 100% rename from android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java rename to android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java diff --git a/android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java similarity index 100% rename from android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java rename to android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java diff --git a/android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java similarity index 100% rename from android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java rename to android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java diff --git a/android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java similarity index 100% rename from android/expoview/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java rename to android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ReactContextExtensions.kt b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt similarity index 86% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ReactContextExtensions.kt rename to android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt index 9613d94920367..757956c9eaa7f 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/gesturehandler/ReactContextExtensions.kt +++ b/android/vendored/unversioned/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt @@ -1,4 +1,4 @@ -package versioned.host.exp.exponent.modules.api.components.gesturehandler +package com.swmansion.gesturehandler import com.facebook.react.bridge.ReactContext import com.facebook.react.uimanager.UIManagerModule diff --git a/tools/src/vendoring/config/expoGoConfig.ts b/tools/src/vendoring/config/expoGoConfig.ts index 7bc326f022f8b..ac06e4239e4e3 100644 --- a/tools/src/vendoring/config/expoGoConfig.ts +++ b/tools/src/vendoring/config/expoGoConfig.ts @@ -58,6 +58,7 @@ const config: VendoringTargetConfig = { source: 'https://github.com/software-mansion/react-native-gesture-handler.git', semverPrefix: '~', ios: {}, + android: {}, }, 'react-native-reanimated': { source: 'https://github.com/software-mansion/react-native-reanimated.git', From b84558e35495b9b618751e88df9ca0e6086107b2 Mon Sep 17 00:00:00 2001 From: Tomasz Sapeta Date: Wed, 5 Oct 2022 11:57:38 +0200 Subject: [PATCH 4/4] Update lockfiles [skip ci] --- apps/bare-expo/ios/Podfile.lock | 12 ++++++------ yarn.lock | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock index 9eacd3d2c2f43..58285fb144534 100644 --- a/apps/bare-expo/ios/Podfile.lock +++ b/apps/bare-expo/ios/Podfile.lock @@ -638,7 +638,7 @@ PODS: - React-Core - react-native-viewpager (5.0.11): - React-Core - - react-native-webview (11.22.4): + - react-native-webview (11.23.1): - React-Core - React-perflogger (0.70.1) - React-RCTActionSheet (0.70.1): @@ -710,11 +710,11 @@ PODS: - React-Core - RNCMaskedView (0.2.6): - React-Core - - RNCPicker (2.4.2): + - RNCPicker (2.4.6): - React-Core - RNDateTimePicker (6.2.0): - React-Core - - RNGestureHandler (2.6.2): + - RNGestureHandler (2.7.0): - React-Core - RNReanimated (2.10.0): - DoubleConversion @@ -1356,7 +1356,7 @@ SPEC CHECKSUMS: react-native-slider: 98b724cd3e44c3454a6d0724e796d4e9c52189ce react-native-view-shot: da768466e1cd371de50a3a5c722d1e95456b5b2c react-native-viewpager: b99b53127d830885917ef84809c5065edd614a78 - react-native-webview: a1ed211d50a5047a4fe54e07140991e277cd66e6 + react-native-webview: d33e2db8925d090871ffeb232dfa50cb3a727581 React-perflogger: 48c6b363e867d64b682e84f80ca45636bd65e19c React-RCTActionSheet: 33c74fe5c754835e3715c300618da9aa2f7203fa React-RCTAnimation: 2dbf0120d4d1ab7716079b4180f2ca89c465e46b @@ -1371,9 +1371,9 @@ SPEC CHECKSUMS: ReactCommon: 7f86326b92009925c6dcf93f8e825060171c379f RNCAsyncStorage: 466b9df1a14bccda91da86e0b7d9a345d78e1673 RNCMaskedView: c298b644a10c0c142055b3ae24d83879ecb13ccd - RNCPicker: 0250e95ad170569a96f5b0555cdd5e65b9084dca + RNCPicker: 2f71e09c52ab6327e2c393213368ea0e5bfbcb65 RNDateTimePicker: 30e6733efc179d1e49d6008ea5fce42cdc9aeeca - RNGestureHandler: 4defbd70b2faf3d6761b82fa7880285241762cb0 + RNGestureHandler: 7673697e7c0e9391adefae4faa087442bc04af33 RNReanimated: 60e291d42c77752a0f6d6f358387bdf225a87c6e RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7 RNSharedElement: eb7d506733952d58634f34c82ec17e82f557e377 diff --git a/yarn.lock b/yarn.lock index 3875584917371..53ea6b2a86e62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17294,10 +17294,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.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.6.2.tgz#f3b68d374f5dda603ff29f7df2edb39472eb97ce" - integrity sha512-Ff/WKlR8KiM1wq7UJZvIyCB+OsweewaeZk+4RDIYNGM9tvNIAXEm/MtYnLHiBXiSJjZItF/8B83gE6pVq40vIw== +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== dependencies: "@egjs/hammerjs" "^2.0.17" hoist-non-react-statics "^3.3.0"