From e0b3a029392dc92d7f4ff8a0871ce50d858ed6ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Fri, 5 Jul 2024 19:00:33 +0200 Subject: [PATCH] rn-0.75 --- android/build.gradle | 5 +- .../components/camera/RNMBXCameraManager.kt | 1 + .../components/images/RNMBXImagesManager.kt | 11 ++- .../RNMBXCustomLocationProviderManager.kt | 2 + .../RNMBXNativeUserLocationManager.kt | 1 + .../components/mapview/NativeMapViewModule.kt | 14 +-- .../components/mapview/RNMBXMapViewManager.kt | 8 +- .../styles/RNMBXStyleImportManager.kt | 1 + .../components/styles/RNMBXStyleValue.kt | 1 + .../styles/sources/RNMBXImageSource.kt | 4 +- .../styles/sources/RNMBXShapeSourceModule.kt | 4 +- .../styles/sources/RNMBXTileSourceManager.kt | 8 +- .../rnmapbox/rnmbx/utils/ViewTagResolver.kt | 2 +- .../rnmbx/utils/extensions/Dynamic.kt | 1 + .../rnmbx/utils/extensions/ReadableMap.kt | 1 + .../com/rnmapbox/rnmbx/rncompat/Dynamic.kt | 10 +++ .../rnmapbox/rnmbx/rncompat/ReadableMap.kt | 5 ++ .../rncompat/ResourceDrawableIdHelper.kt | 7 ++ example/package.json | 17 ++-- ...eact-native-safe-area-context+4.10.4.patch | 22 +++++ .../patches/react-native-screens+3.31.1.patch | 85 +++++++++++++++++++ package.json | 5 -- 22 files changed, 175 insertions(+), 40 deletions(-) create mode 100644 android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/Dynamic.kt create mode 100644 android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ReadableMap.kt create mode 100644 android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ResourceDrawableIdHelper.kt create mode 100644 example/patches/react-native-safe-area-context+4.10.4.patch create mode 100644 example/patches/react-native-screens+3.31.1.patch diff --git a/android/build.gradle b/android/build.gradle index db952374e..a008e17d7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -72,6 +72,7 @@ android { } else { java.srcDirs += 'src/main/mapbox-v11-compat/v10' } + java.srcDirs += 'src/main/rn-compat/rn75' if (safeExtGet("RNMapboxMapsUseV11", false)) { logger.warn("RNMapboxMapsUseV11 is deprecated, just set RNMapboxMapsVersion to 11.*") } @@ -164,9 +165,9 @@ dependencies { // Dependencies customizableDependencies('RNMapboxMapsSupportLibs') { - implementation "com.android.support:support-vector-drawable:28.0.0" + //implementation "com.android.support:support-vector-drawable:28.0.0" implementation "com.android.support:support-annotations:28.0.0" - implementation "com.android.support:appcompat-v7:28.0.0" + //implementation "com.android.support:appcompat-v7:28.0.0" } customizableDependencies('RNMapboxMapsOkHTTPLibs') { implementation "com.squareup.okhttp3:okhttp:4.9.0" diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCameraManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCameraManager.kt index 09728867e..9523702b7 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCameraManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCameraManager.kt @@ -13,6 +13,7 @@ import com.rnmapbox.rnmbx.utils.ViewTagResolver import com.rnmapbox.rnmbx.utils.extensions.asBooleanOrNull import com.rnmapbox.rnmbx.utils.extensions.asDoubleOrNull import com.rnmapbox.rnmbx.utils.extensions.asStringOrNull +import com.rnmapbox.rnmbx.rncompat.dynamic.* class RNMBXCameraManager(private val mContext: ReactApplicationContext, val viewTagResolver: ViewTagResolver) : AbstractEventEmitter( diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt index 67c865631..a9e2b683c 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt @@ -15,6 +15,7 @@ import com.mapbox.maps.ImageStretches import com.rnmapbox.rnmbx.components.AbstractEventEmitter import com.rnmapbox.rnmbx.events.constants.EventKeys import com.rnmapbox.rnmbx.events.constants.eventMapOf +import com.rnmapbox.rnmbx.rncompat.dynamic.* import com.rnmapbox.rnmbx.utils.ImageEntry import com.rnmapbox.rnmbx.utils.Logger import com.rnmapbox.rnmbx.utils.ResourceUtils @@ -202,15 +203,13 @@ class RNMBXImagesManager(private val mContext: ReactApplicationContext) : images.setNativeImages(nativeImages) } - override fun customEvents(): Map? { - return eventMapOf( + override fun customEvents(): Map? { return eventMapOf( EventKeys.IMAGES_MISSING to "onImageMissing" ) } // region RNMBXImage children - - override fun addView(parent: RNMBXImages?, childView: View?, childPosition: Int) { + override fun addView(parent: RNMBXImages, childView: View, childPosition: Int) { if (parent == null || childView == null) { Logger.e("RNMBXImages", "addView: parent or childView is null") return @@ -225,7 +224,7 @@ class RNMBXImagesManager(private val mContext: ReactApplicationContext) : childView.nativeImageUpdater = parent } - override fun removeView(parent: RNMBXImages?, view: View?) { + override fun removeView(parent: RNMBXImages, view: View) { if (parent == null || view == null) { Logger.e("RNMBXImages", "removeView: parent or view is null") return @@ -234,7 +233,7 @@ class RNMBXImagesManager(private val mContext: ReactApplicationContext) : parent.mImageViews.remove(view) } - override fun removeAllViews(parent: RNMBXImages?) { + override fun removeAllViews(parent: RNMBXImages) { if (parent == null) { Logger.e("RNMBXImages", "removeAllViews parent is null") return diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProviderManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProviderManager.kt index 5ff144b10..67145d1c2 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProviderManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProviderManager.kt @@ -6,8 +6,10 @@ import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ViewGroupManager import com.facebook.react.uimanager.annotations.ReactProp import com.facebook.react.viewmanagers.RNMBXCustomLocationProviderManagerInterface +import com.rnmapbox.rnmbx.rncompat.dynamic.* import com.rnmapbox.rnmbx.utils.Logger + class RNMBXCustomLocationProviderManager : ViewGroupManager(), RNMBXCustomLocationProviderManagerInterface { override fun getName(): String { diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocationManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocationManager.kt index 26fba5c49..2869ce62a 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocationManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocationManager.kt @@ -11,6 +11,7 @@ import com.google.gson.Gson import com.google.gson.stream.JsonWriter import com.mapbox.bindgen.Value import com.mapbox.maps.extension.style.expressions.generated.Expression +import com.rnmapbox.rnmbx.rncompat.dynamic.* import com.rnmapbox.rnmbx.utils.Logger import com.rnmapbox.rnmbx.utils.extensions.toJsonArray import java.io.StringWriter diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt index ef529ef14..27253a567 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt @@ -143,22 +143,22 @@ class NativeMapViewModule(context: ReactApplicationContext, val viewTagResolver: override fun setHandledMapChangedEvents( viewRef: ViewRefTag?, - events: ReadableArray, - promise: Promise + events: ReadableArray?, + promise: Promise? ) { - withMapViewOnUIThread(viewRef, promise) { - it.setHandledMapChangedEvents(events.asArrayString()) + withMapViewOnUIThread(viewRef, promise!!) { + it.setHandledMapChangedEvents(events!!.asArrayString()) promise.resolve(null) } } - +/* public fun setHandledMapChangedEvents( viewRef: Double?, events: ReadableArray, - promise: Promise + promise: Promise? ) { setHandledMapChangedEvents(viewRef?.toInt(), events, promise) - } + } */ override fun clearData(viewRef: ViewRefTag?, promise: Promise) { withMapViewOnUIThread(viewRef, promise) { diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapViewManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapViewManager.kt index 98febe73a..860128694 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapViewManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapViewManager.kt @@ -86,19 +86,19 @@ open class RNMBXMapViewManager(context: ReactApplicationContext, val viewTagReso } } - override fun addView(mapView: RNMBXMapView?, childView: View?, childPosition: Int) { + override fun addView(mapView: RNMBXMapView, childView: View, childPosition: Int) { mapView!!.addFeature(childView, childPosition) } - override fun getChildCount(mapView: RNMBXMapView?): Int { + override fun getChildCount(mapView: RNMBXMapView): Int { return mapView!!.featureCount } - override fun getChildAt(mapView: RNMBXMapView?, index: Int): View? { + override fun getChildAt(mapView: RNMBXMapView, index: Int): View? { return mapView!!.getFeatureAt(index) } - override fun removeViewAt(mapView: RNMBXMapView?, index: Int) { + override fun removeViewAt(mapView: RNMBXMapView, index: Int) { mapView!!.removeFeatureAt(index) } diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleImportManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleImportManager.kt index 833997fd2..fafc00bef 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleImportManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleImportManager.kt @@ -11,6 +11,7 @@ import com.facebook.react.viewmanagers.RNMBXStyleImportManagerInterface import com.rnmapbox.rnmbx.components.AbstractEventEmitter import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView import com.mapbox.bindgen.Value +import com.rnmapbox.rnmbx.rncompat.dynamic.* import com.rnmapbox.rnmbx.utils.Logger import com.rnmapbox.rnmbx.utils.extensions.toValueHashMap import org.json.JSONObject diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleValue.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleValue.kt index e886cc763..db13128f3 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleValue.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleValue.kt @@ -8,6 +8,7 @@ import com.mapbox.maps.extension.style.types.StyleTransition import com.rnmapbox.rnmbx.components.styles.RNMBXStyleFactory import com.mapbox.maps.extension.style.expressions.generated.Expression import com.mapbox.maps.extension.style.light.LightPosition +import com.rnmapbox.rnmbx.rncompat.dynamic.* import com.rnmapbox.rnmbx.utils.ExpressionParser import com.rnmapbox.rnmbx.utils.Logger import java.util.ArrayList diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXImageSource.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXImageSource.kt index be2207289..16a455d80 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXImageSource.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXImageSource.kt @@ -5,6 +5,7 @@ import android.net.Uri import android.util.Log import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper import com.mapbox.maps.extension.style.sources.generated.ImageSource +import com.rnmapbox.rnmbx.rncompat.resourcedrawableidhelper.* import com.rnmapbox.rnmbx.utils.LatLngQuad import java.net.URL @@ -66,4 +67,5 @@ class RNMBXImageSource(context: Context?) : RNMBXSource(context) { companion object { const val LOG_TAG = "RNMBXImageSource" } -} \ No newline at end of file +} + diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSourceModule.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSourceModule.kt index 63984974e..03c18298c 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSourceModule.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSourceModule.kt @@ -44,8 +44,8 @@ class RNMBXShapeSourceModule(reactContext: ReactApplicationContext?, private val override fun getClusterLeaves( viewRef: ViewRefTag?, featureJSON: String, - number: Int, - offset: Int, + number: Double, + offset: Double, promise: Promise ) { withShapeSourceOnUIThread(viewRef, promise) { diff --git a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXTileSourceManager.kt b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXTileSourceManager.kt index 767d27b5c..e18cbcfc0 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXTileSourceManager.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXTileSourceManager.kt @@ -10,19 +10,19 @@ import com.rnmapbox.rnmbx.components.AbstractEventEmitter abstract class RNMBXTileSourceManager?> internal constructor( reactApplicationContext: ReactApplicationContext ) : AbstractEventEmitter(reactApplicationContext) { - override fun getChildAt(source: T, childPosition: Int): View { + override fun getChildAt(source: T & Any, childPosition: Int): View { return source!!.getChildAt(childPosition) } - override fun getChildCount(source: T): Int { + override fun getChildCount(source: T & Any): Int { return source!!.childCount } - override fun addView(source: T, childView: View, childPosition: Int) { + override fun addView(source: T & Any, childView: View, childPosition: Int) { source!!.addLayer(childView, childPosition) } - override fun removeViewAt(source: T, childPosition: Int) { + override fun removeViewAt(source: T & Any, childPosition: Int) { source!!.removeLayer(childPosition) } diff --git a/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt b/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt index 07bac4da4..f45cc25da 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/utils/ViewTagResolver.kt @@ -16,7 +16,7 @@ data class ViewTagWaiter( const val LOG_TAG = "ViewTagResolver" -typealias ViewRefTag = Int +typealias ViewRefTag = Double // see https://github.com/rnmapbox/maps/pull/3074 open class ViewTagResolver(val context: ReactApplicationContext) { private val createdViews: HashSet = hashSetOf() diff --git a/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/Dynamic.kt b/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/Dynamic.kt index a4966048e..d52fa211d 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/Dynamic.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/Dynamic.kt @@ -5,6 +5,7 @@ import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableMap import com.facebook.react.bridge.ReadableType import com.mapbox.bindgen.Value +import com.rnmapbox.rnmbx.rncompat.dynamic.* fun ReadableMap.toValueHashMap(): HashMap { var result = hashMapOf() diff --git a/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableMap.kt b/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableMap.kt index 2882e0dab..c69ef8c22 100644 --- a/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableMap.kt +++ b/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableMap.kt @@ -17,6 +17,7 @@ import com.mapbox.geojson.MultiPolygon import com.mapbox.geojson.Point import com.mapbox.geojson.Polygon import com.mapbox.maps.EdgeInsets +import com.rnmapbox.rnmbx.rncompat.readable_map.* import com.rnmapbox.rnmbx.utils.ConvertUtils import com.rnmapbox.rnmbx.utils.Logger diff --git a/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/Dynamic.kt b/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/Dynamic.kt new file mode 100644 index 000000000..ee7c4e8df --- /dev/null +++ b/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/Dynamic.kt @@ -0,0 +1,10 @@ +package com.rnmapbox.rnmbx.rncompat.dynamic + +import com.facebook.react.bridge.Dynamic +import com.facebook.react.bridge.ReadableType + +val Dynamic.type: ReadableType + get() { return this.getType() } + +val Dynamic.isNull: Boolean + get() { return this.isNull() } diff --git a/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ReadableMap.kt b/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ReadableMap.kt new file mode 100644 index 000000000..d9559c9b0 --- /dev/null +++ b/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ReadableMap.kt @@ -0,0 +1,5 @@ +package com.rnmapbox.rnmbx.rncompat.readable_map +import com.facebook.react.bridge.ReadableMap + +val ReadableMap.entryIterator: Iterator> + get() { return this.getEntryIterator() } \ No newline at end of file diff --git a/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ResourceDrawableIdHelper.kt b/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ResourceDrawableIdHelper.kt new file mode 100644 index 000000000..0bb9b81ab --- /dev/null +++ b/android/src/main/rn-compat/rn75/com/rnmapbox/rnmbx/rncompat/ResourceDrawableIdHelper.kt @@ -0,0 +1,7 @@ +package com.rnmapbox.rnmbx.rncompat.resourcedrawableidhelper; + +import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper + +public fun ResourceDrawableIdHelper.Companion.getInstance(): ResourceDrawableIdHelper { + return this.instance +} \ No newline at end of file diff --git a/example/package.json b/example/package.json index b381cb44e..663312e64 100644 --- a/example/package.json +++ b/example/package.json @@ -9,7 +9,7 @@ "web": "expo start -c --web", "pod:install": "cd ios && pod install", "start": "yarn react-native start", - "postinstall": "node ./scripts/set_access_token.js", + "postinstall": "node ./scripts/set_access_token.js && patch-package", "purge:android": "(cd android && ./gradlew --stop) && rm -rf ~/.gradle/caches/ android/app/build", "purge:ios": "rm -rf ios/Pods/* ios/build ~/Library/Caches/CocoaPods ~/Library/Developer/Xcode/DerivedData && pod cache clean --all", "purge:js": "rm -rf node_modules && yarn cache clean && watchman watch-del-all", @@ -24,6 +24,7 @@ "@react-navigation/native": "^6.0.17", "@react-navigation/native-stack": "^6.9.26", "@rneui/base": "^4.0.0-rc.6", + "@rnmapbox/maps": "link:../", "@turf/along": "^6.5.0", "@turf/bbox": "^6.5.0", "@turf/bbox-polygon": "^6.5.0", @@ -40,8 +41,7 @@ "react-native": "0.75.0-rc.3", "react-native-safe-area-context": "4.10.4", "react-native-screens": "3.31.1", - "react-native-vector-icons": "9.2.0", - "@rnmapbox/maps": "link:../" + "react-native-vector-icons": "9.2.0" }, "optionalDependencies": { "@expo/metro-runtime": "3.2.1", @@ -63,15 +63,16 @@ "@types/react": "^18.2.45", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.6.3", + "babel-plugin-module-resolver": "^5.0.0", + "detox": "^20.12.1", "eslint": "^8.19.0", + "glob-to-regexp": "^0.4.0", "jest": "^29.6.3", + "patch-package": "^8.0.0", + "pod-install": "^0.1.0", "prettier": "^2.8.8", "react-test-renderer": "19.0.0-rc-fb9a90fa48-20240614", - "typescript": "^5.3.3", - "detox": "^20.12.1", - "glob-to-regexp": "^0.4.0", - "babel-plugin-module-resolver": "^5.0.0", - "pod-install": "^0.1.0" + "typescript": "^5.3.3" }, "engines": { "node": ">=18" diff --git a/example/patches/react-native-safe-area-context+4.10.4.patch b/example/patches/react-native-safe-area-context+4.10.4.patch new file mode 100644 index 000000000..53a37cfc2 --- /dev/null +++ b/example/patches/react-native-safe-area-context+4.10.4.patch @@ -0,0 +1,22 @@ +diff --git a/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt b/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt +index a57fa38..c1103ac 100644 +--- a/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt ++++ b/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt +@@ -143,7 +143,7 @@ class SafeAreaViewShadowNode : LayoutShadowNode() { + override fun setPaddings(index: Int, padding: Dynamic) { + val spacingType = ViewProps.PADDING_MARGIN_SPACING_TYPES[index] + mPaddings[spacingType] = +- if (padding.type == ReadableType.Number) padding.asDouble().toFloat() else Float.NaN ++ if (padding.getType() == ReadableType.Number) padding.asDouble().toFloat() else Float.NaN + super.setPaddings(index, padding) + mNeedsUpdate = true + } +@@ -163,7 +163,7 @@ class SafeAreaViewShadowNode : LayoutShadowNode() { + override fun setMargins(index: Int, margin: Dynamic) { + val spacingType = ViewProps.PADDING_MARGIN_SPACING_TYPES[index] + mMargins[spacingType] = +- if (margin.type == ReadableType.Number) margin.asDouble().toFloat() else Float.NaN ++ if (margin.getType() == ReadableType.Number) margin.asDouble().toFloat() else Float.NaN + super.setMargins(index, margin) + mNeedsUpdate = true + } diff --git a/example/patches/react-native-screens+3.31.1.patch b/example/patches/react-native-screens+3.31.1.patch new file mode 100644 index 000000000..35873ee7c --- /dev/null +++ b/example/patches/react-native-screens+3.31.1.patch @@ -0,0 +1,85 @@ +diff --git a/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt b/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +index c45adc0..9fa52f0 100644 +--- a/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt ++++ b/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +@@ -44,7 +44,7 @@ open class ScreenViewManager : ViewGroupManager(), RNSScreenManagerInter + ): Any? { + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // fabricViewStateManager should never be null in Fabric. The null check is only for Paper's empty impl. +- view.fabricViewStateManager?.setStateWrapper(stateWrapper) ++ view.setStateWrapper(stateWrapper) + } + return super.updateState(view, props, stateWrapper) + } +diff --git a/node_modules/react-native-screens/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt b/node_modules/react-native-screens/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +index 917c18d..71570a8 100644 +--- a/node_modules/react-native-screens/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt ++++ b/node_modules/react-native-screens/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +@@ -2,11 +2,12 @@ package com.swmansion.rnscreens + + import android.view.ViewGroup + import com.facebook.react.bridge.ReactContext +-import com.facebook.react.uimanager.FabricViewStateManager ++import com.facebook.react.uimanager.StateWrapper + +-abstract class FabricEnabledViewGroup constructor(context: ReactContext?) : ViewGroup(context) { ++abstract class FabricEnabledViewGroup(context: ReactContext?) : ViewGroup(context) { ++ private var mStateWrapper: StateWrapper? = null + +- val fabricViewStateManager get() = null as FabricViewStateManager? ++ fun setStateWrapper(stateWrapper: StateWrapper?) = Unit + + protected fun updateScreenSizeFabric(width: Int, height: Int, headerHeight: Double) { + // do nothing +diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +index 1de0596..5b28c16 100644 +--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp ++++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +@@ -5,7 +5,7 @@ namespace react { + + extern const char RNSModalScreenComponentName[] = "RNSModalScreen"; + +-Point RNSModalScreenShadowNode::getContentOriginOffset() const { ++Point RNSModalScreenShadowNode::getContentOriginOffset(bool includeTransform) const { + auto stateData = getStateData(); + auto contentOffset = stateData.contentOffset; + return {contentOffset.x, contentOffset.y}; +diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +index 67709d9..05ffb81 100644 +--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h ++++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +@@ -19,7 +19,7 @@ class JSI_EXPORT RNSModalScreenShadowNode final : public ConcreteViewShadowNode< + public: + using ConcreteViewShadowNode::ConcreteViewShadowNode; + +- Point getContentOriginOffset() const override; ++ Point getContentOriginOffset(bool includeTransform) const override; + static ShadowNodeTraits BaseTraits() { + auto traits = ConcreteViewShadowNode::BaseTraits(); + traits.set(ShadowNodeTraits::Trait::RootNodeKind); +diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +index 0e3746e..ea707fb 100644 +--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp ++++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +@@ -5,7 +5,7 @@ namespace react { + + extern const char RNSScreenComponentName[] = "RNSScreen"; + +-Point RNSScreenShadowNode::getContentOriginOffset() const { ++Point RNSScreenShadowNode::getContentOriginOffset(bool includeTransform) const { + auto stateData = getStateData(); + auto contentOffset = stateData.contentOffset; + return {contentOffset.x, contentOffset.y}; +diff --git a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +index 25b6442..4688721 100644 +--- a/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h ++++ b/node_modules/react-native-screens/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +@@ -19,7 +19,7 @@ class JSI_EXPORT RNSScreenShadowNode final : public ConcreteViewShadowNode< + public: + using ConcreteViewShadowNode::ConcreteViewShadowNode; + +- Point getContentOriginOffset() const override; ++ Point getContentOriginOffset(bool includeTransform ) const override; + }; + + } // namespace react diff --git a/package.json b/package.json index de0e8e606..996deed17 100644 --- a/package.json +++ b/package.json @@ -126,11 +126,6 @@ "name": "rnmapbox_maps_specs", "type": "all", "jsSrcsDir": "src/specs", - "includesGeneratedCode": true, - "outputDir": { - "android": "android/src/main/codegen", - "ios": "ios/codegen" - }, "android": { "javaPackageName": "com.rnmapbox.rnmbx" }