Skip to content

Commit 3e05d77

Browse files
author
Kamil Paradowski
committed
feat: introduce a new feature flag enableCSSCalc to enable CSS calc() support
1 parent d59fc09 commit 3e05d77

21 files changed

Lines changed: 211 additions & 92 deletions

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<8b571241be0c86847ed265ab665059b2>>
7+
* @generated SignedSource<<3a917b13b408c071a21b2b91e1f9fbb6>>
88
*/
99

1010
/**
@@ -120,6 +120,12 @@ public object ReactNativeFeatureFlags {
120120
@JvmStatic
121121
public fun enableBridgelessArchitecture(): Boolean = accessor.enableBridgelessArchitecture()
122122

123+
/**
124+
* Enables CSS calc() support for layout (Yoga) style props in Fabric.
125+
*/
126+
@JvmStatic
127+
public fun enableCSSCalc(): Boolean = accessor.enableCSSCalc()
128+
123129
/**
124130
* Enable prop iterator setter-style construction of Props in C++ (this flag is not used in Java).
125131
*/

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<856ed167e90b330583c3a6e981927c43>>
7+
* @generated SignedSource<<20981eeda0169d86c09b1568a106827a>>
88
*/
99

1010
/**
@@ -35,6 +35,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
3535
private var enableAndroidFontWeightAdjustmentCache: Boolean? = null
3636
private var enableAndroidTextMeasurementOptimizationsCache: Boolean? = null
3737
private var enableBridgelessArchitectureCache: Boolean? = null
38+
private var enableCSSCalcCache: Boolean? = null
3839
private var enableCppPropsIteratorSetterCache: Boolean? = null
3940
private var enableCustomFocusSearchOnClippedElementsAndroidCache: Boolean? = null
4041
private var enableDestroyShadowTreeRevisionAsyncCache: Boolean? = null
@@ -241,6 +242,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
241242
return cached
242243
}
243244

245+
override fun enableCSSCalc(): Boolean {
246+
var cached = enableCSSCalcCache
247+
if (cached == null) {
248+
cached = ReactNativeFeatureFlagsCxxInterop.enableCSSCalc()
249+
enableCSSCalcCache = cached
250+
}
251+
return cached
252+
}
253+
244254
override fun enableCppPropsIteratorSetter(): Boolean {
245255
var cached = enableCppPropsIteratorSetterCache
246256
if (cached == null) {

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<2f68282c0b8c1971acdab2f229189d82>>
7+
* @generated SignedSource<<32561f31188d5b47f5bdfe690ab198de>>
88
*/
99

1010
/**
@@ -58,6 +58,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
5858

5959
@DoNotStrip @JvmStatic public external fun enableBridgelessArchitecture(): Boolean
6060

61+
@DoNotStrip @JvmStatic public external fun enableCSSCalc(): Boolean
62+
6163
@DoNotStrip @JvmStatic public external fun enableCppPropsIteratorSetter(): Boolean
6264

6365
@DoNotStrip @JvmStatic public external fun enableCustomFocusSearchOnClippedElementsAndroid(): Boolean

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<5f946970ba2e0676b55cc150de4bee01>>
7+
* @generated SignedSource<<bb19895ff858bd547dabb3e0500b4f5b>>
88
*/
99

1010
/**
@@ -53,6 +53,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
5353

5454
override fun enableBridgelessArchitecture(): Boolean = false
5555

56+
override fun enableCSSCalc(): Boolean = false
57+
5658
override fun enableCppPropsIteratorSetter(): Boolean = false
5759

5860
override fun enableCustomFocusSearchOnClippedElementsAndroid(): Boolean = true

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<c7adeebaabd6c647865bb5398b823221>>
7+
* @generated SignedSource<<08aa94f7767a9e3947d88814f7ae0edd>>
88
*/
99

1010
/**
@@ -39,6 +39,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
3939
private var enableAndroidFontWeightAdjustmentCache: Boolean? = null
4040
private var enableAndroidTextMeasurementOptimizationsCache: Boolean? = null
4141
private var enableBridgelessArchitectureCache: Boolean? = null
42+
private var enableCSSCalcCache: Boolean? = null
4243
private var enableCppPropsIteratorSetterCache: Boolean? = null
4344
private var enableCustomFocusSearchOnClippedElementsAndroidCache: Boolean? = null
4445
private var enableDestroyShadowTreeRevisionAsyncCache: Boolean? = null
@@ -260,6 +261,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
260261
return cached
261262
}
262263

264+
override fun enableCSSCalc(): Boolean {
265+
var cached = enableCSSCalcCache
266+
if (cached == null) {
267+
cached = currentProvider.enableCSSCalc()
268+
accessedFeatureFlags.add("enableCSSCalc")
269+
enableCSSCalcCache = cached
270+
}
271+
return cached
272+
}
273+
263274
override fun enableCppPropsIteratorSetter(): Boolean {
264275
var cached = enableCppPropsIteratorSetterCache
265276
if (cached == null) {

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<c4f37ab0fc935a27bae3b92e86abc243>>
7+
* @generated SignedSource<<1abf44b0b995cb213390879036fc3ce7>>
88
*/
99

1010
/**
@@ -53,6 +53,8 @@ public interface ReactNativeFeatureFlagsProvider {
5353

5454
@DoNotStrip public fun enableBridgelessArchitecture(): Boolean
5555

56+
@DoNotStrip public fun enableCSSCalc(): Boolean
57+
5658
@DoNotStrip public fun enableCppPropsIteratorSetter(): Boolean
5759

5860
@DoNotStrip public fun enableCustomFocusSearchOnClippedElementsAndroid(): Boolean

‎packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<6719e639a89507a2019fcf1901394152>>
7+
* @generated SignedSource<<455b05f4803f2289d542ef0debaea35b>>
88
*/
99

1010
/**
@@ -129,6 +129,12 @@ class ReactNativeFeatureFlagsJavaProvider
129129
return method(javaProvider_);
130130
}
131131

132+
bool enableCSSCalc() override {
133+
static const auto method =
134+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableCSSCalc");
135+
return method(javaProvider_);
136+
}
137+
132138
bool enableCppPropsIteratorSetter() override {
133139
static const auto method =
134140
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableCppPropsIteratorSetter");
@@ -628,6 +634,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableBridgelessArchitecture(
628634
return ReactNativeFeatureFlags::enableBridgelessArchitecture();
629635
}
630636

637+
bool JReactNativeFeatureFlagsCxxInterop::enableCSSCalc(
638+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
639+
return ReactNativeFeatureFlags::enableCSSCalc();
640+
}
641+
631642
bool JReactNativeFeatureFlagsCxxInterop::enableCppPropsIteratorSetter(
632643
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
633644
return ReactNativeFeatureFlags::enableCppPropsIteratorSetter();
@@ -1054,6 +1065,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
10541065
makeNativeMethod(
10551066
"enableBridgelessArchitecture",
10561067
JReactNativeFeatureFlagsCxxInterop::enableBridgelessArchitecture),
1068+
makeNativeMethod(
1069+
"enableCSSCalc",
1070+
JReactNativeFeatureFlagsCxxInterop::enableCSSCalc),
10571071
makeNativeMethod(
10581072
"enableCppPropsIteratorSetter",
10591073
JReactNativeFeatureFlagsCxxInterop::enableCppPropsIteratorSetter),

‎packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<ea2573be7bc2e1444cd9d157ac282f16>>
7+
* @generated SignedSource<<9ca21b0fd2218455c4b694ff9159eda1>>
88
*/
99

1010
/**
@@ -75,6 +75,9 @@ class JReactNativeFeatureFlagsCxxInterop
7575
static bool enableBridgelessArchitecture(
7676
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
7777

78+
static bool enableCSSCalc(
79+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
80+
7881
static bool enableCppPropsIteratorSetter(
7982
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
8083

‎packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<929bf9431ec07ddc39040cfff5b94754>>
7+
* @generated SignedSource<<227025369a508a375cbcb9a9fd7a9acd>>
88
*/
99

1010
/**
@@ -86,6 +86,10 @@ bool ReactNativeFeatureFlags::enableBridgelessArchitecture() {
8686
return getAccessor().enableBridgelessArchitecture();
8787
}
8888

89+
bool ReactNativeFeatureFlags::enableCSSCalc() {
90+
return getAccessor().enableCSSCalc();
91+
}
92+
8993
bool ReactNativeFeatureFlags::enableCppPropsIteratorSetter() {
9094
return getAccessor().enableCppPropsIteratorSetter();
9195
}

‎packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<d7532c66f74b2f5e3b1dcd259089f6cd>>
7+
* @generated SignedSource<<204b892e9a4d38942c286fe8a4e3bb88>>
88
*/
99

1010
/**
@@ -114,6 +114,11 @@ class ReactNativeFeatureFlags {
114114
*/
115115
RN_EXPORT static bool enableBridgelessArchitecture();
116116

117+
/**
118+
* Enables CSS calc() support for layout (Yoga) style props in Fabric.
119+
*/
120+
RN_EXPORT static bool enableCSSCalc();
121+
117122
/**
118123
* Enable prop iterator setter-style construction of Props in C++ (this flag is not used in Java).
119124
*/

0 commit comments

Comments
 (0)