react-native-tvos 0.81.1-2 → 0.81.2-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/Libraries/Components/TV/TVFocusGuideView.js +29 -34
  2. package/Libraries/Components/View/View.js +20 -23
  3. package/Libraries/Core/ReactNativeVersion.js +3 -2
  4. package/React/Base/RCTVersion.m +3 -3
  5. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
  6. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
  7. package/ReactAndroid/build.gradle.kts +10 -1
  8. package/ReactAndroid/gradle.properties +1 -1
  9. package/ReactAndroid/hermes-engine/build.gradle.kts +6 -0
  10. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +9 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +5 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  19. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +19 -0
  20. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
  21. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  22. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +3 -1
  23. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +2 -1
  24. package/ReactAndroid/src/main/jni/react/jni/NativeArray.h +4 -0
  25. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +2 -0
  26. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.cpp +6 -0
  27. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.h +1 -0
  28. package/ReactAndroid/src/main/jni/react/jni/TransformHelper.cpp +60 -0
  29. package/ReactAndroid/src/main/jni/react/jni/TransformHelper.h +22 -0
  30. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +3 -1
  31. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +3 -1
  32. package/ReactCommon/cxxreact/ReactNativeVersion.h +7 -3
  33. package/ReactCommon/hermes/executor/CMakeLists.txt +1 -1
  34. package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +1 -1
  35. package/ReactCommon/jsinspector-modern/CMakeLists.txt +6 -4
  36. package/ReactCommon/react/debug/CMakeLists.txt +1 -1
  37. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  38. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  39. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +44 -8
  40. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  41. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
  42. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  43. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +9 -1
  44. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  45. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  46. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  47. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -2
  48. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +5 -0
  49. package/ReactCommon/react/runtime/CMakeLists.txt +3 -1
  50. package/ReactCommon/react/runtime/hermes/CMakeLists.txt +1 -1
  51. package/package.json +8 -8
  52. package/scripts/cocoapods/autolinking.rb +6 -0
  53. package/scripts/cocoapods/codegen_utils.rb +1 -1
  54. package/scripts/codegen/generate-artifacts-executor/index.js +5 -1
  55. package/scripts/codegen/generate-artifacts-executor/utils.js +41 -10
  56. package/scripts/replace-rncore-version.js +4 -2
  57. package/sdks/hermes-engine/utils/replace_hermes_version.js +4 -2
  58. package/sdks/hermesc/osx-bin/hermes +0 -0
  59. package/sdks/hermesc/osx-bin/hermesc +0 -0
  60. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  61. package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
  62. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
  63. package/third-party-podspecs/replace_dependencies_version.js +4 -2
  64. package/types_generated/Libraries/Components/TV/TVFocusGuideView.d.ts +2 -2
@@ -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<<dae981c66bf0751fd2863937ecf255d8>>
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
- target_compile_options(hermes_executor PRIVATE $<$<CONFIG:Debug>:-DHERMES_ENABLE_DEBUGGER=1>)
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
- target_compile_options(hermesinstancejni PRIVATE $<$<CONFIG:Debug>:-DHERMES_ENABLE_DEBUGGER=1>)
30
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
31
+ target_compile_options(hermesinstancejni PRIVATE -DHERMES_ENABLE_DEBUGGER=1)
32
+ endif ()
@@ -17,7 +17,9 @@ add_library(rninstance
17
17
  )
18
18
 
19
19
  target_compile_reactnative_options(rninstance PRIVATE)
20
- target_compile_options(rninstance PRIVATE $<$<CONFIG:Debug>:-DHERMES_ENABLE_DEBUGGER=1>)
20
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
21
+ target_compile_options(rninstance PRIVATE -DHERMES_ENABLE_DEBUGGER=1)
22
+ endif ()
21
23
 
22
24
  target_merge_so(rninstance)
23
25
  target_include_directories(rninstance PUBLIC .)
@@ -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 by scripts/releases/set-rn-version.js
7
+ * @generated by scripts/releases/set-version.js
8
8
  */
9
9
 
10
10
  #pragma once
@@ -12,13 +12,17 @@
12
12
  #include <cstdint>
13
13
  #include <string_view>
14
14
 
15
+ #define REACT_NATIVE_VERSION_MAJOR 0
16
+ #define REACT_NATIVE_VERSION_MINOR 81
17
+ #define REACT_NATIVE_VERSION_PATCH 2
18
+
15
19
  namespace facebook::react {
16
20
 
17
21
  constexpr struct {
18
22
  int32_t Major = 0;
19
23
  int32_t Minor = 81;
20
- int32_t Patch = 1;
21
- std::string_view Prerelease = "2";
24
+ int32_t Patch = 2;
25
+ std::string_view Prerelease = "0";
22
26
  } ReactNativeVersion;
23
27
 
24
28
  } // namespace facebook::react
@@ -26,7 +26,7 @@ target_link_libraries(hermes_executor_common
26
26
  )
27
27
 
28
28
  target_compile_reactnative_options(hermes_executor_common PRIVATE)
29
- if(${CMAKE_BUILD_TYPE} MATCHES Debug)
29
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
30
30
  target_compile_options(
31
31
  hermes_executor_common
32
32
  PRIVATE
@@ -17,7 +17,7 @@ add_library(hermes_inspector_modern
17
17
 
18
18
  target_compile_reactnative_options(hermes_inspector_modern PRIVATE)
19
19
 
20
- if(${CMAKE_BUILD_TYPE} MATCHES Debug)
20
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
21
21
  target_compile_options(
22
22
  hermes_inspector_modern
23
23
  PRIVATE
@@ -27,7 +27,9 @@ target_link_libraries(jsinspector
27
27
  runtimeexecutor
28
28
  )
29
29
  target_compile_reactnative_options(jsinspector PRIVATE)
30
- target_compile_options(jsinspector PRIVATE
31
- $<$<CONFIG:Debug>:-DREACT_NATIVE_DEBUGGER_ENABLED=1>
32
- $<$<CONFIG:Debug>:-DREACT_NATIVE_DEBUGGER_ENABLED_DEVONLY=1>
33
- )
30
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
31
+ target_compile_options(jsinspector PRIVATE
32
+ -DREACT_NATIVE_DEBUGGER_ENABLED=1
33
+ -DREACT_NATIVE_DEBUGGER_ENABLED_DEVONLY=1
34
+ )
35
+ endif ()
@@ -21,6 +21,6 @@ endif()
21
21
 
22
22
  target_compile_reactnative_options(react_debug PRIVATE)
23
23
  target_compile_options(react_debug PRIVATE -Wpedantic)
24
- if(NOT ${CMAKE_BUILD_TYPE} MATCHES Debug)
24
+ if(NOT ${CMAKE_BUILD_TYPE} MATCHES Debug AND NOT REACT_NATIVE_DEBUG_OPTIMIZED)
25
25
  target_compile_options(react_debug PUBLIC -DNDEBUG)
26
26
  endif()
@@ -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<<f73bbcd926a835c09b70d814c6662dbb>>
7
+ * @generated SignedSource<<2cabd888b74b84201ff027457efc6007>>
8
8
  */
9
9
 
10
10
  /**
@@ -234,6 +234,14 @@ bool ReactNativeFeatureFlags::useFabricInterop() {
234
234
  return getAccessor().useFabricInterop();
235
235
  }
236
236
 
237
+ bool ReactNativeFeatureFlags::useNativeEqualsInNativeReadableArrayAndroid() {
238
+ return getAccessor().useNativeEqualsInNativeReadableArrayAndroid();
239
+ }
240
+
241
+ bool ReactNativeFeatureFlags::useNativeTransformHelperAndroid() {
242
+ return getAccessor().useNativeTransformHelperAndroid();
243
+ }
244
+
237
245
  bool ReactNativeFeatureFlags::useNativeViewConfigsInBridgelessMode() {
238
246
  return getAccessor().useNativeViewConfigsInBridgelessMode();
239
247
  }
@@ -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<<da14545268455bfd4cd35e5c2ecf81ee>>
7
+ * @generated SignedSource<<e26a0c35f1499abf24e46275bbcbe06d>>
8
8
  */
9
9
 
10
10
  /**
@@ -299,6 +299,16 @@ class ReactNativeFeatureFlags {
299
299
  */
300
300
  RN_EXPORT static bool useFabricInterop();
301
301
 
302
+ /**
303
+ * Use a native implementation of equals in NativeReadableArray.
304
+ */
305
+ RN_EXPORT static bool useNativeEqualsInNativeReadableArrayAndroid();
306
+
307
+ /**
308
+ * Use a native implementation of TransformHelper
309
+ */
310
+ RN_EXPORT static bool useNativeTransformHelperAndroid();
311
+
302
312
  /**
303
313
  * When enabled, the native view configs are used in bridgeless mode.
304
314
  */
@@ -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<<681bff71eb87886a108f67b3162b030c>>
7
+ * @generated SignedSource<<7ae9a203a94e3a22197bc9eda69b741c>>
8
8
  */
9
9
 
10
10
  /**
@@ -965,6 +965,42 @@ bool ReactNativeFeatureFlagsAccessor::useFabricInterop() {
965
965
  return flagValue.value();
966
966
  }
967
967
 
968
+ bool ReactNativeFeatureFlagsAccessor::useNativeEqualsInNativeReadableArrayAndroid() {
969
+ auto flagValue = useNativeEqualsInNativeReadableArrayAndroid_.load();
970
+
971
+ if (!flagValue.has_value()) {
972
+ // This block is not exclusive but it is not necessary.
973
+ // If multiple threads try to initialize the feature flag, we would only
974
+ // be accessing the provider multiple times but the end state of this
975
+ // instance and the returned flag value would be the same.
976
+
977
+ markFlagAsAccessed(52, "useNativeEqualsInNativeReadableArrayAndroid");
978
+
979
+ flagValue = currentProvider_->useNativeEqualsInNativeReadableArrayAndroid();
980
+ useNativeEqualsInNativeReadableArrayAndroid_ = flagValue;
981
+ }
982
+
983
+ return flagValue.value();
984
+ }
985
+
986
+ bool ReactNativeFeatureFlagsAccessor::useNativeTransformHelperAndroid() {
987
+ auto flagValue = useNativeTransformHelperAndroid_.load();
988
+
989
+ if (!flagValue.has_value()) {
990
+ // This block is not exclusive but it is not necessary.
991
+ // If multiple threads try to initialize the feature flag, we would only
992
+ // be accessing the provider multiple times but the end state of this
993
+ // instance and the returned flag value would be the same.
994
+
995
+ markFlagAsAccessed(53, "useNativeTransformHelperAndroid");
996
+
997
+ flagValue = currentProvider_->useNativeTransformHelperAndroid();
998
+ useNativeTransformHelperAndroid_ = flagValue;
999
+ }
1000
+
1001
+ return flagValue.value();
1002
+ }
1003
+
968
1004
  bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() {
969
1005
  auto flagValue = useNativeViewConfigsInBridgelessMode_.load();
970
1006
 
@@ -974,7 +1010,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() {
974
1010
  // be accessing the provider multiple times but the end state of this
975
1011
  // instance and the returned flag value would be the same.
976
1012
 
977
- markFlagAsAccessed(52, "useNativeViewConfigsInBridgelessMode");
1013
+ markFlagAsAccessed(54, "useNativeViewConfigsInBridgelessMode");
978
1014
 
979
1015
  flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode();
980
1016
  useNativeViewConfigsInBridgelessMode_ = flagValue;
@@ -992,7 +1028,7 @@ bool ReactNativeFeatureFlagsAccessor::useOptimizedEventBatchingOnAndroid() {
992
1028
  // be accessing the provider multiple times but the end state of this
993
1029
  // instance and the returned flag value would be the same.
994
1030
 
995
- markFlagAsAccessed(53, "useOptimizedEventBatchingOnAndroid");
1031
+ markFlagAsAccessed(55, "useOptimizedEventBatchingOnAndroid");
996
1032
 
997
1033
  flagValue = currentProvider_->useOptimizedEventBatchingOnAndroid();
998
1034
  useOptimizedEventBatchingOnAndroid_ = flagValue;
@@ -1010,7 +1046,7 @@ bool ReactNativeFeatureFlagsAccessor::useRawPropsJsiValue() {
1010
1046
  // be accessing the provider multiple times but the end state of this
1011
1047
  // instance and the returned flag value would be the same.
1012
1048
 
1013
- markFlagAsAccessed(54, "useRawPropsJsiValue");
1049
+ markFlagAsAccessed(56, "useRawPropsJsiValue");
1014
1050
 
1015
1051
  flagValue = currentProvider_->useRawPropsJsiValue();
1016
1052
  useRawPropsJsiValue_ = flagValue;
@@ -1028,7 +1064,7 @@ bool ReactNativeFeatureFlagsAccessor::useShadowNodeStateOnClone() {
1028
1064
  // be accessing the provider multiple times but the end state of this
1029
1065
  // instance and the returned flag value would be the same.
1030
1066
 
1031
- markFlagAsAccessed(55, "useShadowNodeStateOnClone");
1067
+ markFlagAsAccessed(57, "useShadowNodeStateOnClone");
1032
1068
 
1033
1069
  flagValue = currentProvider_->useShadowNodeStateOnClone();
1034
1070
  useShadowNodeStateOnClone_ = flagValue;
@@ -1046,7 +1082,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModuleInterop() {
1046
1082
  // be accessing the provider multiple times but the end state of this
1047
1083
  // instance and the returned flag value would be the same.
1048
1084
 
1049
- markFlagAsAccessed(56, "useTurboModuleInterop");
1085
+ markFlagAsAccessed(58, "useTurboModuleInterop");
1050
1086
 
1051
1087
  flagValue = currentProvider_->useTurboModuleInterop();
1052
1088
  useTurboModuleInterop_ = flagValue;
@@ -1064,7 +1100,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() {
1064
1100
  // be accessing the provider multiple times but the end state of this
1065
1101
  // instance and the returned flag value would be the same.
1066
1102
 
1067
- markFlagAsAccessed(57, "useTurboModules");
1103
+ markFlagAsAccessed(59, "useTurboModules");
1068
1104
 
1069
1105
  flagValue = currentProvider_->useTurboModules();
1070
1106
  useTurboModules_ = flagValue;
@@ -1082,7 +1118,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewPrerenderRatio() {
1082
1118
  // be accessing the provider multiple times but the end state of this
1083
1119
  // instance and the returned flag value would be the same.
1084
1120
 
1085
- markFlagAsAccessed(58, "virtualViewPrerenderRatio");
1121
+ markFlagAsAccessed(60, "virtualViewPrerenderRatio");
1086
1122
 
1087
1123
  flagValue = currentProvider_->virtualViewPrerenderRatio();
1088
1124
  virtualViewPrerenderRatio_ = flagValue;
@@ -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<<e5a8a196b35c010d92d3f616979891a9>>
7
+ * @generated SignedSource<<74560113d0b23c05d7822eeba1c0dee4>>
8
8
  */
9
9
 
10
10
  /**
@@ -84,6 +84,8 @@ class ReactNativeFeatureFlagsAccessor {
84
84
  bool updateRuntimeShadowNodeReferencesOnCommit();
85
85
  bool useAlwaysAvailableJSErrorHandling();
86
86
  bool useFabricInterop();
87
+ bool useNativeEqualsInNativeReadableArrayAndroid();
88
+ bool useNativeTransformHelperAndroid();
87
89
  bool useNativeViewConfigsInBridgelessMode();
88
90
  bool useOptimizedEventBatchingOnAndroid();
89
91
  bool useRawPropsJsiValue();
@@ -102,7 +104,7 @@ class ReactNativeFeatureFlagsAccessor {
102
104
  std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
103
105
  bool wasOverridden_;
104
106
 
105
- std::array<std::atomic<const char*>, 59> accessedFeatureFlags_;
107
+ std::array<std::atomic<const char*>, 61> accessedFeatureFlags_;
106
108
 
107
109
  std::atomic<std::optional<bool>> commonTestFlag_;
108
110
  std::atomic<std::optional<bool>> animatedShouldSignalBatch_;
@@ -156,6 +158,8 @@ class ReactNativeFeatureFlagsAccessor {
156
158
  std::atomic<std::optional<bool>> updateRuntimeShadowNodeReferencesOnCommit_;
157
159
  std::atomic<std::optional<bool>> useAlwaysAvailableJSErrorHandling_;
158
160
  std::atomic<std::optional<bool>> useFabricInterop_;
161
+ std::atomic<std::optional<bool>> useNativeEqualsInNativeReadableArrayAndroid_;
162
+ std::atomic<std::optional<bool>> useNativeTransformHelperAndroid_;
159
163
  std::atomic<std::optional<bool>> useNativeViewConfigsInBridgelessMode_;
160
164
  std::atomic<std::optional<bool>> useOptimizedEventBatchingOnAndroid_;
161
165
  std::atomic<std::optional<bool>> useRawPropsJsiValue_;
@@ -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<<9832c18e4c7ccf232b7222e2356f99d9>>
7
+ * @generated SignedSource<<1a54000b8eb51cb91304902c7f722d45>>
8
8
  */
9
9
 
10
10
  /**
@@ -235,6 +235,14 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
235
235
  return true;
236
236
  }
237
237
 
238
+ bool useNativeEqualsInNativeReadableArrayAndroid() override {
239
+ return false;
240
+ }
241
+
242
+ bool useNativeTransformHelperAndroid() override {
243
+ return false;
244
+ }
245
+
238
246
  bool useNativeViewConfigsInBridgelessMode() override {
239
247
  return false;
240
248
  }
@@ -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<<19f0a48bcfa8f8ffaf634e85301adc7e>>
7
+ * @generated SignedSource<<244db790cc754f31402981967cd902b5>>
8
8
  */
9
9
 
10
10
  /**
@@ -513,6 +513,24 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
513
513
  return ReactNativeFeatureFlagsDefaults::useFabricInterop();
514
514
  }
515
515
 
516
+ bool useNativeEqualsInNativeReadableArrayAndroid() override {
517
+ auto value = values_["useNativeEqualsInNativeReadableArrayAndroid"];
518
+ if (!value.isNull()) {
519
+ return value.getBool();
520
+ }
521
+
522
+ return ReactNativeFeatureFlagsDefaults::useNativeEqualsInNativeReadableArrayAndroid();
523
+ }
524
+
525
+ bool useNativeTransformHelperAndroid() override {
526
+ auto value = values_["useNativeTransformHelperAndroid"];
527
+ if (!value.isNull()) {
528
+ return value.getBool();
529
+ }
530
+
531
+ return ReactNativeFeatureFlagsDefaults::useNativeTransformHelperAndroid();
532
+ }
533
+
516
534
  bool useNativeViewConfigsInBridgelessMode() override {
517
535
  auto value = values_["useNativeViewConfigsInBridgelessMode"];
518
536
  if (!value.isNull()) {
@@ -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<<f33ea0f19a27ec6124d8dbf1a043b4ce>>
7
+ * @generated SignedSource<<a045579d42e45fa80831856734a063aa>>
8
8
  */
9
9
 
10
10
  /**
@@ -30,6 +30,14 @@ class ReactNativeFeatureFlagsOverridesOSSExperimental : public ReactNativeFeatur
30
30
  bool preventShadowTreeCommitExhaustion() override {
31
31
  return true;
32
32
  }
33
+
34
+ bool useNativeEqualsInNativeReadableArrayAndroid() override {
35
+ return true;
36
+ }
37
+
38
+ bool useNativeTransformHelperAndroid() override {
39
+ return true;
40
+ }
33
41
  };
34
42
 
35
43
  } // namespace facebook::react
@@ -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<<815769cc8d08e19b2598dd1862ed5060>>
7
+ * @generated SignedSource<<2387ed12fe46fb5b606ad13a17511f03>>
8
8
  */
9
9
 
10
10
  /**
@@ -77,6 +77,8 @@ class ReactNativeFeatureFlagsProvider {
77
77
  virtual bool updateRuntimeShadowNodeReferencesOnCommit() = 0;
78
78
  virtual bool useAlwaysAvailableJSErrorHandling() = 0;
79
79
  virtual bool useFabricInterop() = 0;
80
+ virtual bool useNativeEqualsInNativeReadableArrayAndroid() = 0;
81
+ virtual bool useNativeTransformHelperAndroid() = 0;
80
82
  virtual bool useNativeViewConfigsInBridgelessMode() = 0;
81
83
  virtual bool useOptimizedEventBatchingOnAndroid() = 0;
82
84
  virtual bool useRawPropsJsiValue() = 0;
@@ -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<<474a64af739969acebb4bb9bb1005168>>
7
+ * @generated SignedSource<<45e1b08fd2438b27af82591b5cfa5744>>
8
8
  */
9
9
 
10
10
  /**
@@ -304,6 +304,16 @@ bool NativeReactNativeFeatureFlags::useFabricInterop(
304
304
  return ReactNativeFeatureFlags::useFabricInterop();
305
305
  }
306
306
 
307
+ bool NativeReactNativeFeatureFlags::useNativeEqualsInNativeReadableArrayAndroid(
308
+ jsi::Runtime& /*runtime*/) {
309
+ return ReactNativeFeatureFlags::useNativeEqualsInNativeReadableArrayAndroid();
310
+ }
311
+
312
+ bool NativeReactNativeFeatureFlags::useNativeTransformHelperAndroid(
313
+ jsi::Runtime& /*runtime*/) {
314
+ return ReactNativeFeatureFlags::useNativeTransformHelperAndroid();
315
+ }
316
+
307
317
  bool NativeReactNativeFeatureFlags::useNativeViewConfigsInBridgelessMode(
308
318
  jsi::Runtime& /*runtime*/) {
309
319
  return ReactNativeFeatureFlags::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<<bfaa3cc7ab3eeff306337b06b7ae978a>>
7
+ * @generated SignedSource<<d1862a9ce3cfeda5d140941fcd3b25bc>>
8
8
  */
9
9
 
10
10
  /**
@@ -140,6 +140,10 @@ class NativeReactNativeFeatureFlags
140
140
 
141
141
  bool useFabricInterop(jsi::Runtime& runtime);
142
142
 
143
+ bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime& runtime);
144
+
145
+ bool useNativeTransformHelperAndroid(jsi::Runtime& runtime);
146
+
143
147
  bool useNativeViewConfigsInBridgelessMode(jsi::Runtime& runtime);
144
148
 
145
149
  bool useOptimizedEventBatchingOnAndroid(jsi::Runtime& runtime);
@@ -638,6 +638,13 @@ BorderMetrics BaseViewProps::resolveBorderMetrics(
638
638
  Transform BaseViewProps::resolveTransform(
639
639
  const LayoutMetrics& layoutMetrics) const {
640
640
  const auto& frameSize = layoutMetrics.frame.size;
641
+ return resolveTransform(frameSize, transform, transformOrigin);
642
+ }
643
+
644
+ Transform BaseViewProps::resolveTransform(
645
+ const Size& frameSize,
646
+ const Transform& transform,
647
+ const TransformOrigin& transformOrigin) {
641
648
  auto transformMatrix = Transform{};
642
649
  if (frameSize.width == 0 && frameSize.height == 0) {
643
650
  return transformMatrix;
@@ -650,8 +657,7 @@ Transform BaseViewProps::resolveTransform(
650
657
  } else {
651
658
  for (const auto& operation : transform.operations) {
652
659
  transformMatrix = transformMatrix *
653
- Transform::FromTransformOperation(
654
- operation, layoutMetrics.frame.size, transform);
660
+ Transform::FromTransformOperation(operation, frameSize, transform);
655
661
  }
656
662
  }
657
663