react-native 0.81.1 → 0.81.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
- package/ReactAndroid/build.gradle.kts +10 -1
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle.kts +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +19 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +3 -1
- package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +2 -1
- package/ReactAndroid/src/main/jni/react/jni/NativeArray.h +4 -0
- package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +2 -0
- package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.cpp +6 -0
- package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.h +1 -0
- package/ReactAndroid/src/main/jni/react/jni/TransformHelper.cpp +60 -0
- package/ReactAndroid/src/main/jni/react/jni/TransformHelper.h +22 -0
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +3 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +3 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/hermes/executor/CMakeLists.txt +1 -1
- package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +1 -1
- package/ReactCommon/jsinspector-modern/CMakeLists.txt +6 -4
- package/ReactCommon/react/debug/CMakeLists.txt +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +44 -8
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +9 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -2
- package/ReactCommon/react/renderer/components/view/BaseViewProps.h +5 -0
- package/ReactCommon/react/runtime/CMakeLists.txt +3 -1
- package/ReactCommon/react/runtime/hermes/CMakeLists.txt +1 -1
- package/package.json +8 -8
- package/scripts/replace-rncore-version.js +4 -2
- package/sdks/hermes-engine/utils/replace_hermes_version.js +4 -2
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
- package/third-party-podspecs/replace_dependencies_version.js +4 -2
package/React/Base/RCTVersion.m
CHANGED
|
@@ -347,6 +347,16 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabr
|
|
|
347
347
|
rt
|
|
348
348
|
);
|
|
349
349
|
}
|
|
350
|
+
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
351
|
+
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useNativeEqualsInNativeReadableArrayAndroid(
|
|
352
|
+
rt
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeTransformHelperAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
356
|
+
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useNativeTransformHelperAndroid(
|
|
357
|
+
rt
|
|
358
|
+
);
|
|
359
|
+
}
|
|
350
360
|
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
351
361
|
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useNativeViewConfigsInBridgelessMode(
|
|
352
362
|
rt
|
|
@@ -438,6 +448,8 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
|
|
|
438
448
|
methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_updateRuntimeShadowNodeReferencesOnCommit};
|
|
439
449
|
methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useAlwaysAvailableJSErrorHandling};
|
|
440
450
|
methodMap_["useFabricInterop"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabricInterop};
|
|
451
|
+
methodMap_["useNativeEqualsInNativeReadableArrayAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeEqualsInNativeReadableArrayAndroid};
|
|
452
|
+
methodMap_["useNativeTransformHelperAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeTransformHelperAndroid};
|
|
441
453
|
methodMap_["useNativeViewConfigsInBridgelessMode"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode};
|
|
442
454
|
methodMap_["useOptimizedEventBatchingOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useOptimizedEventBatchingOnAndroid};
|
|
443
455
|
methodMap_["useRawPropsJsiValue"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useRawPropsJsiValue};
|
|
@@ -379,6 +379,8 @@ public:
|
|
|
379
379
|
virtual bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt) = 0;
|
|
380
380
|
virtual bool useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt) = 0;
|
|
381
381
|
virtual bool useFabricInterop(jsi::Runtime &rt) = 0;
|
|
382
|
+
virtual bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt) = 0;
|
|
383
|
+
virtual bool useNativeTransformHelperAndroid(jsi::Runtime &rt) = 0;
|
|
382
384
|
virtual bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) = 0;
|
|
383
385
|
virtual bool useOptimizedEventBatchingOnAndroid(jsi::Runtime &rt) = 0;
|
|
384
386
|
virtual bool useRawPropsJsiValue(jsi::Runtime &rt) = 0;
|
|
@@ -840,6 +842,22 @@ private:
|
|
|
840
842
|
return bridging::callFromJs<bool>(
|
|
841
843
|
rt, &T::useFabricInterop, jsInvoker_, instance_);
|
|
842
844
|
}
|
|
845
|
+
bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt) override {
|
|
846
|
+
static_assert(
|
|
847
|
+
bridging::getParameterCount(&T::useNativeEqualsInNativeReadableArrayAndroid) == 1,
|
|
848
|
+
"Expected useNativeEqualsInNativeReadableArrayAndroid(...) to have 1 parameters");
|
|
849
|
+
|
|
850
|
+
return bridging::callFromJs<bool>(
|
|
851
|
+
rt, &T::useNativeEqualsInNativeReadableArrayAndroid, jsInvoker_, instance_);
|
|
852
|
+
}
|
|
853
|
+
bool useNativeTransformHelperAndroid(jsi::Runtime &rt) override {
|
|
854
|
+
static_assert(
|
|
855
|
+
bridging::getParameterCount(&T::useNativeTransformHelperAndroid) == 1,
|
|
856
|
+
"Expected useNativeTransformHelperAndroid(...) to have 1 parameters");
|
|
857
|
+
|
|
858
|
+
return bridging::callFromJs<bool>(
|
|
859
|
+
rt, &T::useNativeTransformHelperAndroid, jsInvoker_, instance_);
|
|
860
|
+
}
|
|
843
861
|
bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) override {
|
|
844
862
|
static_assert(
|
|
845
863
|
bridging::getParameterCount(&T::useNativeViewConfigsInBridgelessMode) == 1,
|
|
@@ -598,7 +598,7 @@ android {
|
|
|
598
598
|
publishing {
|
|
599
599
|
multipleVariants {
|
|
600
600
|
withSourcesJar()
|
|
601
|
-
includeBuildTypeValues("debug", "release")
|
|
601
|
+
includeBuildTypeValues("debug", "release", "debugOptimized")
|
|
602
602
|
}
|
|
603
603
|
}
|
|
604
604
|
|
|
@@ -606,6 +606,15 @@ android {
|
|
|
606
606
|
unitTests { isIncludeAndroidResources = true }
|
|
607
607
|
targetSdk = libs.versions.targetSdk.get().toInt()
|
|
608
608
|
}
|
|
609
|
+
|
|
610
|
+
buildTypes {
|
|
611
|
+
create("debugOptimized") {
|
|
612
|
+
initWith(getByName("debug"))
|
|
613
|
+
externalNativeBuild {
|
|
614
|
+
cmake { arguments("-DCMAKE_BUILD_TYPE=Release", "-DREACT_NATIVE_DEBUG_OPTIMIZED=True") }
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
609
618
|
}
|
|
610
619
|
|
|
611
620
|
tasks.withType<KotlinCompile>().configureEach {
|
|
@@ -306,6 +306,12 @@ android {
|
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
|
+
buildTypes {
|
|
310
|
+
create("debugOptimized") {
|
|
311
|
+
initWith(getByName("debug"))
|
|
312
|
+
externalNativeBuild { cmake { arguments("-DCMAKE_BUILD_TYPE=Release") } }
|
|
313
|
+
}
|
|
314
|
+
}
|
|
309
315
|
}
|
|
310
316
|
|
|
311
317
|
sourceSets.getByName("main") {
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
package com.facebook.react.bridge
|
|
9
9
|
|
|
10
10
|
import com.facebook.proguard.annotations.DoNotStrip
|
|
11
|
+
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
|
|
11
12
|
import java.util.ArrayList
|
|
12
13
|
import java.util.Arrays
|
|
13
14
|
import kotlin.jvm.JvmStatic
|
|
@@ -65,9 +66,16 @@ public open class ReadableNativeArray protected constructor() : NativeArray(), R
|
|
|
65
66
|
if (other !is ReadableNativeArray) {
|
|
66
67
|
return false
|
|
67
68
|
}
|
|
68
|
-
|
|
69
|
+
|
|
70
|
+
return if (ReactNativeFeatureFlags.useNativeEqualsInNativeReadableArrayAndroid()) {
|
|
71
|
+
nativeEquals(other)
|
|
72
|
+
} else {
|
|
73
|
+
localArray.contentDeepEquals(other.localArray)
|
|
74
|
+
}
|
|
69
75
|
}
|
|
70
76
|
|
|
77
|
+
private external fun nativeEquals(other: ReadableNativeArray): Boolean
|
|
78
|
+
|
|
71
79
|
override fun toArrayList(): ArrayList<Any?> {
|
|
72
80
|
val arrayList = ArrayList<Any?>()
|
|
73
81
|
repeat(size()) { i ->
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<c52f3977ea07f976e36177f13c1ec684>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -342,6 +342,18 @@ public object ReactNativeFeatureFlags {
|
|
|
342
342
|
@JvmStatic
|
|
343
343
|
public fun useFabricInterop(): Boolean = accessor.useFabricInterop()
|
|
344
344
|
|
|
345
|
+
/**
|
|
346
|
+
* Use a native implementation of equals in NativeReadableArray.
|
|
347
|
+
*/
|
|
348
|
+
@JvmStatic
|
|
349
|
+
public fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean = accessor.useNativeEqualsInNativeReadableArrayAndroid()
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Use a native implementation of TransformHelper
|
|
353
|
+
*/
|
|
354
|
+
@JvmStatic
|
|
355
|
+
public fun useNativeTransformHelperAndroid(): Boolean = accessor.useNativeTransformHelperAndroid()
|
|
356
|
+
|
|
345
357
|
/**
|
|
346
358
|
* When enabled, the native view configs are used in bridgeless mode.
|
|
347
359
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<8e0125e82b359e6a175ffc49a4df5537>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -72,6 +72,8 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
72
72
|
private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
|
|
73
73
|
private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
|
|
74
74
|
private var useFabricInteropCache: Boolean? = null
|
|
75
|
+
private var useNativeEqualsInNativeReadableArrayAndroidCache: Boolean? = null
|
|
76
|
+
private var useNativeTransformHelperAndroidCache: Boolean? = null
|
|
75
77
|
private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
|
|
76
78
|
private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
|
|
77
79
|
private var useRawPropsJsiValueCache: Boolean? = null
|
|
@@ -548,6 +550,24 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
548
550
|
return cached
|
|
549
551
|
}
|
|
550
552
|
|
|
553
|
+
override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean {
|
|
554
|
+
var cached = useNativeEqualsInNativeReadableArrayAndroidCache
|
|
555
|
+
if (cached == null) {
|
|
556
|
+
cached = ReactNativeFeatureFlagsCxxInterop.useNativeEqualsInNativeReadableArrayAndroid()
|
|
557
|
+
useNativeEqualsInNativeReadableArrayAndroidCache = cached
|
|
558
|
+
}
|
|
559
|
+
return cached
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
override fun useNativeTransformHelperAndroid(): Boolean {
|
|
563
|
+
var cached = useNativeTransformHelperAndroidCache
|
|
564
|
+
if (cached == null) {
|
|
565
|
+
cached = ReactNativeFeatureFlagsCxxInterop.useNativeTransformHelperAndroid()
|
|
566
|
+
useNativeTransformHelperAndroidCache = cached
|
|
567
|
+
}
|
|
568
|
+
return cached
|
|
569
|
+
}
|
|
570
|
+
|
|
551
571
|
override fun useNativeViewConfigsInBridgelessMode(): Boolean {
|
|
552
572
|
var cached = useNativeViewConfigsInBridgelessModeCache
|
|
553
573
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<a5d9d11cc2a6529641243dc47a61f201>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -132,6 +132,10 @@ public object ReactNativeFeatureFlagsCxxInterop {
|
|
|
132
132
|
|
|
133
133
|
@DoNotStrip @JvmStatic public external fun useFabricInterop(): Boolean
|
|
134
134
|
|
|
135
|
+
@DoNotStrip @JvmStatic public external fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean
|
|
136
|
+
|
|
137
|
+
@DoNotStrip @JvmStatic public external fun useNativeTransformHelperAndroid(): Boolean
|
|
138
|
+
|
|
135
139
|
@DoNotStrip @JvmStatic public external fun useNativeViewConfigsInBridgelessMode(): Boolean
|
|
136
140
|
|
|
137
141
|
@DoNotStrip @JvmStatic public external fun useOptimizedEventBatchingOnAndroid(): Boolean
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<10d708ce4449eede46d750a1ed48d02e>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -127,6 +127,10 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
|
|
|
127
127
|
|
|
128
128
|
override fun useFabricInterop(): Boolean = true
|
|
129
129
|
|
|
130
|
+
override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean = false
|
|
131
|
+
|
|
132
|
+
override fun useNativeTransformHelperAndroid(): Boolean = false
|
|
133
|
+
|
|
130
134
|
override fun useNativeViewConfigsInBridgelessMode(): Boolean = false
|
|
131
135
|
|
|
132
136
|
override fun useOptimizedEventBatchingOnAndroid(): Boolean = false
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<b04948c792c5db63decf1df80d3a867e>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -76,6 +76,8 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
76
76
|
private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
|
|
77
77
|
private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
|
|
78
78
|
private var useFabricInteropCache: Boolean? = null
|
|
79
|
+
private var useNativeEqualsInNativeReadableArrayAndroidCache: Boolean? = null
|
|
80
|
+
private var useNativeTransformHelperAndroidCache: Boolean? = null
|
|
79
81
|
private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
|
|
80
82
|
private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
|
|
81
83
|
private var useRawPropsJsiValueCache: Boolean? = null
|
|
@@ -604,6 +606,26 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
604
606
|
return cached
|
|
605
607
|
}
|
|
606
608
|
|
|
609
|
+
override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean {
|
|
610
|
+
var cached = useNativeEqualsInNativeReadableArrayAndroidCache
|
|
611
|
+
if (cached == null) {
|
|
612
|
+
cached = currentProvider.useNativeEqualsInNativeReadableArrayAndroid()
|
|
613
|
+
accessedFeatureFlags.add("useNativeEqualsInNativeReadableArrayAndroid")
|
|
614
|
+
useNativeEqualsInNativeReadableArrayAndroidCache = cached
|
|
615
|
+
}
|
|
616
|
+
return cached
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
override fun useNativeTransformHelperAndroid(): Boolean {
|
|
620
|
+
var cached = useNativeTransformHelperAndroidCache
|
|
621
|
+
if (cached == null) {
|
|
622
|
+
cached = currentProvider.useNativeTransformHelperAndroid()
|
|
623
|
+
accessedFeatureFlags.add("useNativeTransformHelperAndroid")
|
|
624
|
+
useNativeTransformHelperAndroidCache = cached
|
|
625
|
+
}
|
|
626
|
+
return cached
|
|
627
|
+
}
|
|
628
|
+
|
|
607
629
|
override fun useNativeViewConfigsInBridgelessMode(): Boolean {
|
|
608
630
|
var cached = useNativeViewConfigsInBridgelessModeCache
|
|
609
631
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<0bafb0a2fb79c4220d21f1736894af14>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -24,4 +24,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android :
|
|
|
24
24
|
// but that is more expensive than just duplicating the defaults here.
|
|
25
25
|
|
|
26
26
|
override fun preventShadowTreeCommitExhaustion(): Boolean = true
|
|
27
|
+
|
|
28
|
+
override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean = true
|
|
29
|
+
|
|
30
|
+
override fun useNativeTransformHelperAndroid(): Boolean = true
|
|
27
31
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<21704207ce520def05b05f89dfba1048>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -127,6 +127,10 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
127
127
|
|
|
128
128
|
@DoNotStrip public fun useFabricInterop(): Boolean
|
|
129
129
|
|
|
130
|
+
@DoNotStrip public fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean
|
|
131
|
+
|
|
132
|
+
@DoNotStrip public fun useNativeTransformHelperAndroid(): Boolean
|
|
133
|
+
|
|
130
134
|
@DoNotStrip public fun useNativeViewConfigsInBridgelessMode(): Boolean
|
|
131
135
|
|
|
132
136
|
@DoNotStrip public fun useOptimizedEventBatchingOnAndroid(): Boolean
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
package com.facebook.react.uimanager
|
|
9
9
|
|
|
10
10
|
import com.facebook.common.logging.FLog
|
|
11
|
+
import com.facebook.react.bridge.NativeArray
|
|
11
12
|
import com.facebook.react.bridge.ReadableArray
|
|
12
13
|
import com.facebook.react.bridge.ReadableMap
|
|
13
14
|
import com.facebook.react.bridge.ReadableType
|
|
14
15
|
import com.facebook.react.common.ReactConstants
|
|
16
|
+
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
|
|
15
17
|
|
|
16
18
|
public object TransformHelper {
|
|
17
19
|
|
|
@@ -69,6 +71,14 @@ public object TransformHelper {
|
|
|
69
71
|
transformOrigin: ReadableArray?,
|
|
70
72
|
allowPercentageResolution: Boolean
|
|
71
73
|
) {
|
|
74
|
+
if (allowPercentageResolution &&
|
|
75
|
+
ReactNativeFeatureFlags.useNativeTransformHelperAndroid() &&
|
|
76
|
+
transforms is NativeArray &&
|
|
77
|
+
transformOrigin is NativeArray?) {
|
|
78
|
+
nativeProcessTransform(transforms, result, viewWidth, viewHeight, transformOrigin)
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
|
|
72
82
|
val helperMatrix = helperMatrix.get()!!
|
|
73
83
|
MatrixMathHelper.resetIdentityMatrix(result)
|
|
74
84
|
val offsets =
|
|
@@ -220,4 +230,13 @@ public object TransformHelper {
|
|
|
220
230
|
|
|
221
231
|
return doubleArrayOf(newTranslateX, newTranslateY, newTranslateZ)
|
|
222
232
|
}
|
|
233
|
+
|
|
234
|
+
@JvmStatic
|
|
235
|
+
private external fun nativeProcessTransform(
|
|
236
|
+
transforms: NativeArray,
|
|
237
|
+
result: DoubleArray,
|
|
238
|
+
viewWidth: Float,
|
|
239
|
+
viewHeight: Float,
|
|
240
|
+
transformOrigin: NativeArray?
|
|
241
|
+
)
|
|
223
242
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<bbad4ee8cacd33099874d0c3078ea716>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -351,6 +351,18 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
351
351
|
return method(javaProvider_);
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
+
bool useNativeEqualsInNativeReadableArrayAndroid() override {
|
|
355
|
+
static const auto method =
|
|
356
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useNativeEqualsInNativeReadableArrayAndroid");
|
|
357
|
+
return method(javaProvider_);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
bool useNativeTransformHelperAndroid() override {
|
|
361
|
+
static const auto method =
|
|
362
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useNativeTransformHelperAndroid");
|
|
363
|
+
return method(javaProvider_);
|
|
364
|
+
}
|
|
365
|
+
|
|
354
366
|
bool useNativeViewConfigsInBridgelessMode() override {
|
|
355
367
|
static const auto method =
|
|
356
368
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useNativeViewConfigsInBridgelessMode");
|
|
@@ -657,6 +669,16 @@ bool JReactNativeFeatureFlagsCxxInterop::useFabricInterop(
|
|
|
657
669
|
return ReactNativeFeatureFlags::useFabricInterop();
|
|
658
670
|
}
|
|
659
671
|
|
|
672
|
+
bool JReactNativeFeatureFlagsCxxInterop::useNativeEqualsInNativeReadableArrayAndroid(
|
|
673
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
674
|
+
return ReactNativeFeatureFlags::useNativeEqualsInNativeReadableArrayAndroid();
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
bool JReactNativeFeatureFlagsCxxInterop::useNativeTransformHelperAndroid(
|
|
678
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
679
|
+
return ReactNativeFeatureFlags::useNativeTransformHelperAndroid();
|
|
680
|
+
}
|
|
681
|
+
|
|
660
682
|
bool JReactNativeFeatureFlagsCxxInterop::useNativeViewConfigsInBridgelessMode(
|
|
661
683
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
662
684
|
return ReactNativeFeatureFlags::useNativeViewConfigsInBridgelessMode();
|
|
@@ -879,6 +901,12 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
879
901
|
makeNativeMethod(
|
|
880
902
|
"useFabricInterop",
|
|
881
903
|
JReactNativeFeatureFlagsCxxInterop::useFabricInterop),
|
|
904
|
+
makeNativeMethod(
|
|
905
|
+
"useNativeEqualsInNativeReadableArrayAndroid",
|
|
906
|
+
JReactNativeFeatureFlagsCxxInterop::useNativeEqualsInNativeReadableArrayAndroid),
|
|
907
|
+
makeNativeMethod(
|
|
908
|
+
"useNativeTransformHelperAndroid",
|
|
909
|
+
JReactNativeFeatureFlagsCxxInterop::useNativeTransformHelperAndroid),
|
|
882
910
|
makeNativeMethod(
|
|
883
911
|
"useNativeViewConfigsInBridgelessMode",
|
|
884
912
|
JReactNativeFeatureFlagsCxxInterop::useNativeViewConfigsInBridgelessMode),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<57f2dcf4b71512c6b15e8021258d6036>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -186,6 +186,12 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
186
186
|
static bool useFabricInterop(
|
|
187
187
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
188
188
|
|
|
189
|
+
static bool useNativeEqualsInNativeReadableArrayAndroid(
|
|
190
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
191
|
+
|
|
192
|
+
static bool useNativeTransformHelperAndroid(
|
|
193
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
194
|
+
|
|
189
195
|
static bool useNativeViewConfigsInBridgelessMode(
|
|
190
196
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
191
197
|
|
|
@@ -25,4 +25,6 @@ target_link_libraries(
|
|
|
25
25
|
reactnative
|
|
26
26
|
)
|
|
27
27
|
target_compile_reactnative_options(hermes_executor PRIVATE)
|
|
28
|
-
|
|
28
|
+
if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
|
|
29
|
+
target_compile_options(hermes_executor PRIVATE -DHERMES_ENABLE_DEBUGGER=1)
|
|
30
|
+
endif()
|
|
@@ -31,13 +31,14 @@ add_library(
|
|
|
31
31
|
OnLoad-common.cpp
|
|
32
32
|
ReadableNativeArray.cpp
|
|
33
33
|
ReadableNativeMap.cpp
|
|
34
|
+
TransformHelper.cpp
|
|
34
35
|
WritableNativeArray.cpp
|
|
35
36
|
WritableNativeMap.cpp
|
|
36
37
|
)
|
|
37
38
|
target_merge_so(reactnativejni_common)
|
|
38
39
|
target_include_directories(reactnativejni_common PUBLIC ../../)
|
|
39
40
|
|
|
40
|
-
target_link_libraries(reactnativejni_common fbjni folly_runtime react_cxxreact)
|
|
41
|
+
target_link_libraries(reactnativejni_common fbjni folly_runtime react_cxxreact yoga react_renderer_graphics)
|
|
41
42
|
target_compile_reactnative_options(reactnativejni_common PRIVATE)
|
|
42
43
|
target_compile_options(reactnativejni_common PRIVATE -Wno-unused-lambda-capture)
|
|
43
44
|
|
|
@@ -21,6 +21,10 @@ class NativeArray : public jni::HybridClass<NativeArray> {
|
|
|
21
21
|
|
|
22
22
|
jni::local_ref<jstring> toString();
|
|
23
23
|
|
|
24
|
+
const folly::dynamic& getArray() const {
|
|
25
|
+
return array_;
|
|
26
|
+
}
|
|
27
|
+
|
|
24
28
|
RN_EXPORT folly::dynamic consume();
|
|
25
29
|
|
|
26
30
|
// Whether this array has been added to another array or map and no longer
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include "JReactMarker.h"
|
|
12
12
|
#include "NativeArray.h"
|
|
13
13
|
#include "NativeMap.h"
|
|
14
|
+
#include "TransformHelper.h"
|
|
14
15
|
#include "WritableNativeArray.h"
|
|
15
16
|
#include "WritableNativeMap.h"
|
|
16
17
|
|
|
@@ -27,6 +28,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
|
|
|
27
28
|
ReadableNativeMap::registerNatives();
|
|
28
29
|
WritableNativeArray::registerNatives();
|
|
29
30
|
WritableNativeMap::registerNatives();
|
|
31
|
+
TransformHelper::registerNatives();
|
|
30
32
|
});
|
|
31
33
|
}
|
|
32
34
|
|
|
@@ -40,10 +40,16 @@ local_ref<JArrayClass<jobject>> ReadableNativeArray::importTypeArray() {
|
|
|
40
40
|
return jarray;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
bool ReadableNativeArray::equals(
|
|
44
|
+
jni::alias_ref<ReadableNativeArray::javaobject> other) {
|
|
45
|
+
return array_ == other->cthis()->array_;
|
|
46
|
+
}
|
|
47
|
+
|
|
43
48
|
void ReadableNativeArray::registerNatives() {
|
|
44
49
|
registerHybrid({
|
|
45
50
|
makeNativeMethod("importArray", ReadableNativeArray::importArray),
|
|
46
51
|
makeNativeMethod("importTypeArray", ReadableNativeArray::importTypeArray),
|
|
52
|
+
makeNativeMethod("nativeEquals", ReadableNativeArray::equals),
|
|
47
53
|
});
|
|
48
54
|
}
|
|
49
55
|
|
|
@@ -35,6 +35,7 @@ class ReadableNativeArray
|
|
|
35
35
|
static void mapException(std::exception_ptr ex);
|
|
36
36
|
static void registerNatives();
|
|
37
37
|
|
|
38
|
+
bool equals(jni::alias_ref<ReadableNativeArray::javaobject> other);
|
|
38
39
|
jni::local_ref<jni::JArrayClass<jobject>> importArray();
|
|
39
40
|
jni::local_ref<jni::JArrayClass<jobject>> importTypeArray();
|
|
40
41
|
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "TransformHelper.h"
|
|
9
|
+
|
|
10
|
+
#include <react/renderer/components/view/BaseViewProps.h>
|
|
11
|
+
#include <react/renderer/components/view/conversions.h>
|
|
12
|
+
|
|
13
|
+
#include "NativeArray.h"
|
|
14
|
+
|
|
15
|
+
using namespace facebook::jni;
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
namespace {
|
|
20
|
+
void processTransform(
|
|
21
|
+
jni::alias_ref<jclass> /*unused*/,
|
|
22
|
+
NativeArray* jTransforms,
|
|
23
|
+
jni::alias_ref<jni::JArrayDouble> jResult,
|
|
24
|
+
float viewWidth,
|
|
25
|
+
float viewHeight,
|
|
26
|
+
NativeArray* jTransformOrigin) {
|
|
27
|
+
// Assuming parsing transforms doesn't require a real PropsParserContext
|
|
28
|
+
static ContextContainer contextContainer;
|
|
29
|
+
static PropsParserContext context(0, contextContainer);
|
|
30
|
+
|
|
31
|
+
RawValue transformValue(jTransforms->getArray());
|
|
32
|
+
Transform transform;
|
|
33
|
+
fromRawValue(context, transformValue, transform);
|
|
34
|
+
|
|
35
|
+
TransformOrigin transformOrigin;
|
|
36
|
+
if (jTransformOrigin != nullptr) {
|
|
37
|
+
RawValue transformOriginValue(jTransformOrigin->getArray());
|
|
38
|
+
fromRawValue(context, transformOriginValue, transformOrigin);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
auto result = BaseViewProps::resolveTransform(
|
|
42
|
+
Size(viewWidth, viewHeight), transform, transformOrigin);
|
|
43
|
+
|
|
44
|
+
// Convert from matrix of floats to double matrix
|
|
45
|
+
constexpr size_t MatrixSize = std::tuple_size_v<decltype(result.matrix)>;
|
|
46
|
+
std::array<double, MatrixSize> doubleTransform{};
|
|
47
|
+
std::copy(
|
|
48
|
+
result.matrix.begin(), result.matrix.end(), doubleTransform.begin());
|
|
49
|
+
jResult->setRegion(0, MatrixSize, doubleTransform.data());
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
} // namespace
|
|
53
|
+
|
|
54
|
+
void TransformHelper::registerNatives() {
|
|
55
|
+
javaClassLocal()->registerNatives({
|
|
56
|
+
makeNativeMethod("nativeProcessTransform", processTransform),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
class TransformHelper : public jni::JavaClass<TransformHelper> {
|
|
15
|
+
public:
|
|
16
|
+
static auto constexpr* kJavaDescriptor =
|
|
17
|
+
"Lcom/facebook/react/uimanager/TransformHelper;";
|
|
18
|
+
|
|
19
|
+
static void registerNatives();
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
} // namespace facebook::react
|
|
@@ -27,4 +27,6 @@ target_link_libraries(hermesinstancejni
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
target_compile_reactnative_options(hermesinstancejni PRIVATE)
|
|
30
|
-
|
|
30
|
+
if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
|
|
31
|
+
target_compile_options(hermesinstancejni PRIVATE -DHERMES_ENABLE_DEBUGGER=1)
|
|
32
|
+
endif ()
|