diff --git a/packages/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js b/packages/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js index db39c72950ef..e869e9fa41d5 100644 --- a/packages/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js +++ b/packages/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js @@ -265,6 +265,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = { * Text */ color: colorAttribute, + experimental_textWidthMode: true, fontFamily: true, fontSize: true, fontStyle: true, diff --git a/packages/react-native/Libraries/StyleSheet/StyleSheetTypes.js b/packages/react-native/Libraries/StyleSheet/StyleSheetTypes.js index 5a1951a1e2c6..c46d61527332 100644 --- a/packages/react-native/Libraries/StyleSheet/StyleSheetTypes.js +++ b/packages/react-native/Libraries/StyleSheet/StyleSheetTypes.js @@ -1007,6 +1007,14 @@ export type ____FontVariationSettings_Internal = type ____TextStyle_InternalBase = Readonly<{ color?: ____ColorValue_Internal, + /** + * Controls how wrapped text contributes its width to layout. `longest-line` + * uses the width of the longest rendered line instead of the wrapping + * constraint. + * + * @default `'auto'` + */ + experimental_textWidthMode?: 'auto' | 'longest-line', fontFamily?: string, fontSize?: number, fontStyle?: 'normal' | 'italic', diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt index c2679fa12265..5ea878dcef05 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt @@ -96,6 +96,7 @@ internal object TextLayoutManager { const val PA_KEY_MINIMUM_FONT_SIZE: Int = 6 const val PA_KEY_MAXIMUM_FONT_SIZE: Int = 7 const val PA_KEY_TEXT_ALIGN_VERTICAL: Int = 8 + const val PA_KEY_TEXT_WIDTH_MODE: Int = 9 private val TAG: String = TextLayoutManager::class.java.simpleName @@ -110,6 +111,8 @@ internal object TextLayoutManager { private const val DEFAULT_ADJUST_FONT_SIZE_TO_FIT = false + private const val TEXT_WIDTH_MODE_LONGEST_LINE = "longest-line" + private val tagToSpannableCache = ConcurrentHashMap() // Lazily cached Method for StaticLayout.Builder.setUseBoundsForWidth (API 35+). @@ -1065,12 +1068,33 @@ internal object TextLayoutManager { ) } - return CreateLayoutResult( - createLayout( + var layout = createLayout( + text, + boring, + width, + widthYogaMeasureMode, + includeFontPadding, + textBreakStrategy, + hyphenationFrequency, + alignment, + justificationMode, + ellipsizeMode, + maximumNumberOfLines, + paint, + ) + + if ( + widthYogaMeasureMode == YogaMeasureMode.AT_MOST && + paragraphAttributes.contains(PA_KEY_TEXT_WIDTH_MODE) && + paragraphAttributes.getString(PA_KEY_TEXT_WIDTH_MODE) == TEXT_WIDTH_MODE_LONGEST_LINE + ) { + val lineCount = calculateLineCount(layout, maximumNumberOfLines) + val longestLineWidth = longestLineWidth(layout, lineCount) + val tightenedWidth = max(1, ceil(longestLineWidth).toInt()) + if (tightenedWidth < layout.width) { + val tightenedLayout = buildLayout( text, - boring, - width, - widthYogaMeasureMode, + tightenedWidth, includeFontPadding, textBreakStrategy, hyphenationFrequency, @@ -1079,7 +1103,15 @@ internal object TextLayoutManager { ellipsizeMode, maximumNumberOfLines, paint, - ), + ) + if (calculateLineCount(tightenedLayout, maximumNumberOfLines) == lineCount) { + layout = tightenedLayout + } + } + } + + return CreateLayoutResult( + layout, textBreakStrategy, justificationMode, ) @@ -1471,6 +1503,18 @@ internal object TextLayoutManager { layout.lineCount else min(maximumNumberOfLines, layout.lineCount) + @VisibleForTesting + internal fun longestLineWidth(layout: Layout, lineCount: Int): Float { + var longestLineWidth = 0f + for (line in 0 until lineCount) { + val lineEnd = layout.getLineEnd(line) + val endsWithNewLine = lineEnd > 0 && layout.text[lineEnd - 1] == '\n' + val lineWidth = if (endsWithNewLine) layout.getLineMax(line) else layout.getLineWidth(line) + longestLineWidth = max(longestLineWidth, lineWidth) + } + return longestLineWidth + } + private fun calculateWidth( layout: Layout, text: Spanned, diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerLongestLineWidthTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerLongestLineWidthTest.kt new file mode 100644 index 000000000000..49ce97ec717a --- /dev/null +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/views/text/TextLayoutManagerLongestLineWidthTest.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.views.text + +import android.text.Layout +import android.text.SpannableString +import android.text.StaticLayout +import android.text.TextPaint +import kotlin.math.ceil +import org.assertj.core.api.Assertions.assertThat +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34]) +class TextLayoutManagerLongestLineWidthTest { + + @Test + fun `longest line width tightens a wrapped layout without adding a line`() { + val text = SpannableString("Sitting, Standing,\nRoomscale") + val paint = TextPaint(TextPaint.ANTI_ALIAS_FLAG).apply { textSize = 16f } + val layout = createLayout(text, paint, 20) + + assertThat(layout.lineCount).isGreaterThan(1) + + val tightenedWidth = ceil(TextLayoutManager.longestLineWidth(layout, layout.lineCount)).toInt() + val tightenedLayout = createLayout(text, paint, tightenedWidth) + + assertThat(tightenedWidth).isLessThan(layout.width) + assertThat(tightenedLayout.lineCount).isEqualTo(layout.lineCount) + assertThat(TextLayoutManager.longestLineWidth(tightenedLayout, tightenedLayout.lineCount)) + .isLessThanOrEqualTo(tightenedWidth.toFloat()) + } + + private fun createLayout(text: SpannableString, paint: TextPaint, width: Int): Layout = + StaticLayout.Builder.obtain(text, 0, text.length, paint, width) + .setBreakStrategy(Layout.BREAK_STRATEGY_HIGH_QUALITY) + .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_NONE) + .build() +} diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp b/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp index 4eac922716fb..98992aa2287a 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp @@ -19,6 +19,7 @@ bool ParagraphAttributes::operator==(const ParagraphAttributes& rhs) const { maximumNumberOfLines, ellipsizeMode, textBreakStrategy, + textWidthMode, adjustsFontSizeToFit, includeFontPadding, android_hyphenationFrequency, @@ -27,6 +28,7 @@ bool ParagraphAttributes::operator==(const ParagraphAttributes& rhs) const { rhs.maximumNumberOfLines, rhs.ellipsizeMode, rhs.textBreakStrategy, + rhs.textWidthMode, rhs.adjustsFontSizeToFit, rhs.includeFontPadding, rhs.android_hyphenationFrequency, @@ -52,6 +54,8 @@ SharedDebugStringConvertibleList ParagraphAttributes::getDebugProps() const { "textBreakStrategy", textBreakStrategy, paragraphAttributes.textBreakStrategy), + debugStringConvertibleItem( + "textWidthMode", textWidthMode, paragraphAttributes.textWidthMode), debugStringConvertibleItem( "adjustsFontSizeToFit", adjustsFontSizeToFit, diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h b/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h index b61457dbcf1c..6207386a640c 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h @@ -48,6 +48,8 @@ class ParagraphAttributes : public DebugStringConvertible { */ TextBreakStrategy textBreakStrategy{TextBreakStrategy::HighQuality}; + TextWidthMode textWidthMode{TextWidthMode::Auto}; + /* * Enables font size adjustment to fit constrained boundaries. */ @@ -105,6 +107,7 @@ struct hash { attributes.maximumNumberOfLines, attributes.ellipsizeMode, attributes.textBreakStrategy, + attributes.textWidthMode, attributes.adjustsFontSizeToFit, attributes.minimumFontSize, attributes.maximumFontSize, diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/conversions.h b/packages/react-native/ReactCommon/react/renderer/attributedstring/conversions.h index f2c1eeed4b3b..4c03d715c35d 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/conversions.h @@ -204,6 +204,42 @@ inline void fromRawValue(const PropsParserContext &context, const RawValue &valu result = TextBreakStrategy::HighQuality; } +inline std::string toString(const TextWidthMode &textWidthMode) +{ + switch (textWidthMode) { + case TextWidthMode::Auto: + return "auto"; + case TextWidthMode::LongestLine: + return "longest-line"; + } + + LOG(ERROR) << "Unsupported TextWidthMode value"; + react_native_expect(false); + return "auto"; +} + +inline void fromRawValue(const PropsParserContext & /*context*/, const RawValue &value, TextWidthMode &result) +{ + react_native_expect(value.hasType()); + if (value.hasType()) { + auto string = (std::string)value; + if (string == "auto") { + result = TextWidthMode::Auto; + } else if (string == "longest-line") { + result = TextWidthMode::LongestLine; + } else { + LOG(ERROR) << "Unsupported TextWidthMode value: " << string; + react_native_expect(false); + result = TextWidthMode::Auto; + } + return; + } + + LOG(ERROR) << "Unsupported TextWidthMode type"; + react_native_expect(false); + result = TextWidthMode::Auto; +} + inline void fromRawValue(const PropsParserContext &context, const RawValue &value, FontWeight &result) { react_native_expect(value.hasType() || value.hasType()); @@ -1031,6 +1067,12 @@ inline ParagraphAttributes convertRawProp( "textBreakStrategy", sourceParagraphAttributes.textBreakStrategy, defaultParagraphAttributes.textBreakStrategy); + paragraphAttributes.textWidthMode = convertRawProp( + context, + rawProps, + "experimental_textWidthMode", + sourceParagraphAttributes.textWidthMode, + defaultParagraphAttributes.textWidthMode); paragraphAttributes.adjustsFontSizeToFit = convertRawProp( context, rawProps, @@ -1160,6 +1202,7 @@ constexpr static MapBuffer::Key PA_KEY_HYPHENATION_FREQUENCY = 5; constexpr static MapBuffer::Key PA_KEY_MINIMUM_FONT_SIZE = 6; constexpr static MapBuffer::Key PA_KEY_MAXIMUM_FONT_SIZE = 7; constexpr static MapBuffer::Key PA_KEY_TEXT_ALIGN_VERTICAL = 8; +constexpr static MapBuffer::Key PA_KEY_TEXT_WIDTH_MODE = 9; inline MapBuffer toMapBuffer(const ParagraphAttributes ¶graphAttributes) { @@ -1167,6 +1210,7 @@ inline MapBuffer toMapBuffer(const ParagraphAttributes ¶graphAttributes) builder.putInt(PA_KEY_MAX_NUMBER_OF_LINES, paragraphAttributes.maximumNumberOfLines); builder.putString(PA_KEY_ELLIPSIZE_MODE, toString(paragraphAttributes.ellipsizeMode)); builder.putString(PA_KEY_TEXT_BREAK_STRATEGY, toString(paragraphAttributes.textBreakStrategy)); + builder.putString(PA_KEY_TEXT_WIDTH_MODE, toString(paragraphAttributes.textWidthMode)); builder.putBool(PA_KEY_ADJUST_FONT_SIZE_TO_FIT, paragraphAttributes.adjustsFontSizeToFit); builder.putBool(PA_KEY_INCLUDE_FONT_PADDING, paragraphAttributes.includeFontPadding); builder.putString(PA_KEY_HYPHENATION_FREQUENCY, toString(paragraphAttributes.android_hyphenationFrequency)); diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h b/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h index d9edc8de45a9..515b2b43ba9d 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/primitives.h @@ -94,6 +94,11 @@ enum class TextBreakStrategy { Balanced // Balances line lengths. }; +enum class TextWidthMode { + Auto, + LongestLine, +}; + enum class TextAlignment { Natural, // Indicates the default alignment for script. Left, // Visually left aligned. diff --git a/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp b/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp index b5d4a47ed1fc..3b395a1d9065 100644 --- a/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp +++ b/packages/react-native/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace facebook::react { @@ -70,4 +71,16 @@ TEST( EXPECT_FALSE(unset == set); } +TEST(ParagraphAttributesTest, testOperatorEqualsIncludesTextWidthMode) { + ParagraphAttributes autoWidth{}; + ParagraphAttributes longestLineWidth{}; + longestLineWidth.textWidthMode = TextWidthMode::LongestLine; + + EXPECT_FALSE(autoWidth == longestLineWidth); +} + +TEST(ParagraphAttributesTest, testAutoTextWidthModeSerializesAsAuto) { + EXPECT_EQ(toString(TextWidthMode::Auto), "auto"); +} + } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp index 9cd9fdbfbc61..e0fcc551392e 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp @@ -80,6 +80,12 @@ void BaseParagraphProps::setProp( paragraphAttributes, textBreakStrategy, "textBreakStrategy"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + textWidthMode, + "experimental_textWidthMode"); REBUILD_FIELD_SWITCH_CASE( paDefaults, value, diff --git a/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm b/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm index 5f9847a398fa..171f5f67b618 100644 --- a/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +++ b/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm @@ -568,7 +568,7 @@ - (TextMeasurement)_measureTextStorage:(NSTextStorage *)textStorage CGRect usedBounds = [layoutManager usedRectForTextContainer:textContainer]; CGSize size = usedBounds.size; - if (textDidWrap) { + if (textDidWrap && paragraphAttributes.textWidthMode == TextWidthMode::Auto) { size.width = textContainer.size.width; } diff --git a/packages/react-native/types_DEPRECATED/Libraries/StyleSheet/StyleSheetTypes.d.ts b/packages/react-native/types_DEPRECATED/Libraries/StyleSheet/StyleSheetTypes.d.ts index 95a4acd756f7..4aa9f68b437d 100644 --- a/packages/react-native/types_DEPRECATED/Libraries/StyleSheet/StyleSheetTypes.d.ts +++ b/packages/react-native/types_DEPRECATED/Libraries/StyleSheet/StyleSheetTypes.d.ts @@ -567,6 +567,10 @@ export type FontVariationSettings = string | Readonly>; export interface TextStyle extends TextStyleIOS, TextStyleAndroid, ViewStyle { color?: ColorValue | undefined; + /** + * Controls how wrapped text contributes its width to layout. + */ + experimental_textWidthMode?: 'auto' | 'longest-line' | undefined; fontFamily?: string | undefined; fontSize?: number | undefined; fontStyle?: 'normal' | 'italic' | undefined; diff --git a/packages/rn-tester/.maestro/screenshots/text-width-mode-android.png b/packages/rn-tester/.maestro/screenshots/text-width-mode-android.png new file mode 100644 index 000000000000..d58802dae2b5 Binary files /dev/null and b/packages/rn-tester/.maestro/screenshots/text-width-mode-android.png differ diff --git a/packages/rn-tester/.maestro/screenshots/text-width-mode-ios.png b/packages/rn-tester/.maestro/screenshots/text-width-mode-ios.png new file mode 100644 index 000000000000..dd359a37b629 Binary files /dev/null and b/packages/rn-tester/.maestro/screenshots/text-width-mode-ios.png differ diff --git a/packages/rn-tester/.maestro/text-width-mode.yml b/packages/rn-tester/.maestro/text-width-mode.yml new file mode 100644 index 000000000000..304f636736bc --- /dev/null +++ b/packages/rn-tester/.maestro/text-width-mode.yml @@ -0,0 +1,27 @@ +appId: ${APP_ID} +tags: + - local-screenshot-baseline +--- +- runFlow: ./helpers/launch-app-and-search.yml +- inputText: 'Text' +- assertVisible: + id: 'Text' +- tapOn: + id: 'Text' +- assertVisible: + id: 'example_search' +- tapOn: + id: 'example_search' +- inputText: 'Wrapped text width mode' +- hideKeyboard +- scrollUntilVisible: + element: + id: 'text-width-mode-example' + direction: DOWN + speed: 40 + timeout: 10000 +- assertScreenshot: + path: screenshots/text-width-mode-${maestro.platform} + cropOn: + id: 'text-width-mode-example' + thresholdPercentage: 95 diff --git a/packages/rn-tester/js/examples/Text/TextExample.android.js b/packages/rn-tester/js/examples/Text/TextExample.android.js index a88bef0bac79..d8cde91ddf14 100644 --- a/packages/rn-tester/js/examples/Text/TextExample.android.js +++ b/packages/rn-tester/js/examples/Text/TextExample.android.js @@ -17,6 +17,7 @@ import RNTesterText from '../../components/RNTesterText'; import TextLegend from '../../components/TextLegend'; import TextAdjustsDynamicLayoutExample from './TextAdjustsDynamicLayoutExample'; import TextSharedExamples from './TextSharedExamples'; +import TextWidthModeExample from './TextWidthModeExample'; const TextInlineView = require('../../components/TextInlineView'); const React = require('react'); @@ -1336,6 +1337,13 @@ function TextBaseLineLayoutExample(props: {}): React.Node { } const examples = [ + { + title: 'Wrapped text width mode', + name: 'textWidthMode', + description: + 'Compares automatic constrained text width with text sized to its longest rendered line.', + render: TextWidthModeExample, + }, { title: 'Background Color and Border Width', name: 'background-border-width', diff --git a/packages/rn-tester/js/examples/Text/TextExample.ios.js b/packages/rn-tester/js/examples/Text/TextExample.ios.js index b607c5094c01..5de344e2aed7 100644 --- a/packages/rn-tester/js/examples/Text/TextExample.ios.js +++ b/packages/rn-tester/js/examples/Text/TextExample.ios.js @@ -16,6 +16,7 @@ import hotdog from '../../assets/hotdog.jpg'; import RNTesterText from '../../components/RNTesterText'; import TextLegend from '../../components/TextLegend'; import TextSharedExamples from './TextSharedExamples'; +import TextWidthModeExample from './TextWidthModeExample'; const TextInlineView = require('../../components/TextInlineView'); const React = require('react'); @@ -571,6 +572,13 @@ class TextWithCapBaseBox extends React.Component< } const examples = [ + { + title: 'Wrapped text width mode', + name: 'textWidthMode', + description: + 'Compares automatic constrained text width with text sized to its longest rendered line.', + render: TextWidthModeExample, + }, { title: 'iOS System Font Families (iOS only)', name: 'iOSSystemFontFamilies', diff --git a/packages/rn-tester/js/examples/Text/TextWidthModeExample.js b/packages/rn-tester/js/examples/Text/TextWidthModeExample.js new file mode 100644 index 000000000000..383dc2a8a387 --- /dev/null +++ b/packages/rn-tester/js/examples/Text/TextWidthModeExample.js @@ -0,0 +1,89 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +'use strict'; + +import RNTesterText from '../../components/RNTesterText'; +import * as React from 'react'; +import {ScrollView, StyleSheet, Text, View} from 'react-native'; + +const LABELS = [ + 'Comfort: Moderate', + 'Sitting, Standing, Roomscale', + 'Touch Controllers', +]; + +component TextWidthModeRow( + testID: string, + experimentalTextWidthMode: 'auto' | 'longest-line', +) { + return ( + + {LABELS.map(label => ( + + + {label} + + + ))} + + ); +} + +export default component TextWidthModeExample() { + return ( + + Auto width + + Longest rendered line + + + ); +} + +const styles = StyleSheet.create({ + example: { + gap: 24, + }, + item: { + alignItems: 'flex-start', + flexDirection: 'row', + flexShrink: 1, + maxWidth: 120, + }, + row: { + alignItems: 'flex-start', + flexDirection: 'row', + gap: 16, + }, + text: { + backgroundColor: '#ff8a80', + color: '#111111', + flexShrink: 1, + fontSize: 12, + }, +}); diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index 3cb2ffc8ae38..3e66d6fa896d 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -512,6 +512,7 @@ static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_MAX_NUM static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_MINIMUM_FONT_SIZE; static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_ALIGN_VERTICAL; static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_BREAK_STRATEGY; +static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_WIDTH_MODE; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ACCESSIBILITY_ROLE; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ALIGNMENT; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ALIGNMENT_VERTICAL; @@ -992,6 +993,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -1139,6 +1141,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -4017,6 +4020,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::Float minimumFontSize; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -6684,6 +6688,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index 41dd003f6161..1a3e77795946 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -512,6 +512,7 @@ static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_MAX_NUM static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_MINIMUM_FONT_SIZE; static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_ALIGN_VERTICAL; static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_BREAK_STRATEGY; +static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_WIDTH_MODE; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ACCESSIBILITY_ROLE; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ALIGNMENT; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ALIGNMENT_VERTICAL; @@ -990,6 +991,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -1135,6 +1137,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -3871,6 +3874,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::Float minimumFontSize; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -6494,6 +6498,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index 44978f7d9e94..46bed8798cdb 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -512,6 +512,7 @@ static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_MAX_NUM static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_MINIMUM_FONT_SIZE; static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_ALIGN_VERTICAL; static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_BREAK_STRATEGY; +static constexpr facebook::react::MapBuffer::Key facebook::react::PA_KEY_TEXT_WIDTH_MODE; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ACCESSIBILITY_ROLE; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ALIGNMENT; static constexpr facebook::react::MapBuffer::Key facebook::react::TA_KEY_ALIGNMENT_VERTICAL; @@ -992,6 +993,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -1139,6 +1141,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -4014,6 +4017,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::Float minimumFontSize; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -6675,6 +6679,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index 6b70a2c65905..29a12a04d1d7 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -3838,6 +3838,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -3986,6 +3987,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -6216,6 +6218,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::Float minimumFontSize; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -8867,6 +8870,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index fa5ec8f945b9..c7108e0046a2 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -3828,6 +3828,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -3975,6 +3976,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -6102,6 +6104,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::Float minimumFontSize; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -8709,6 +8712,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 1e409cb4ebcc..799d86650b9e 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -3838,6 +3838,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -3986,6 +3987,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -6213,6 +6215,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::Float minimumFontSize; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -8858,6 +8861,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 003175c4dfba..cc81464d50d4 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -563,6 +563,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -698,6 +699,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -2631,6 +2633,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::EllipsizeMode ellipsizeMode; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -5005,6 +5008,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index 7e3f78408158..1460ec90ef54 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -561,6 +561,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -695,6 +696,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -2525,6 +2527,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::EllipsizeMode ellipsizeMode; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -4855,6 +4858,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval, diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index a7c085821a13..f7bd3a5b09c9 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -563,6 +563,7 @@ std::string facebook::react::toString(const facebook::react::TextBreakStrategy& std::string facebook::react::toString(const facebook::react::TextDecorationLineType& textDecorationLineType); std::string facebook::react::toString(const facebook::react::TextDecorationStyle& textDecorationStyle); std::string facebook::react::toString(const facebook::react::TextTransform& textTransform); +std::string facebook::react::toString(const facebook::react::TextWidthMode& textWidthMode); std::string facebook::react::toString(const facebook::react::WritingDirection& writingDirection); std::string facebook::react::toString(double doubleValue, char suffix); std::string facebook::react::toString(facebook::react::AccessibilityLiveRegion accessibilityLiveRegion); @@ -698,6 +699,7 @@ void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, c void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::Size& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::SubmitBehavior& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextAlignmentVertical& result); +void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::TextWidthMode& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::react::ValueUnit& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::BoxSizing& result); void facebook::react::fromRawValue(const facebook::react::PropsParserContext&, const facebook::react::RawValue& value, facebook::yoga::Style::SizeLength& result); @@ -2628,6 +2630,7 @@ class facebook::react::ParagraphAttributes : public facebook::react::DebugString public facebook::react::EllipsizeMode ellipsizeMode; public facebook::react::HyphenationFrequency android_hyphenationFrequency; public facebook::react::TextBreakStrategy textBreakStrategy; + public facebook::react::TextWidthMode textWidthMode; public int maximumNumberOfLines; public std::optional textAlignVertical; } @@ -4996,6 +4999,11 @@ enum facebook::react::TextTransform { Uppercase, } +enum facebook::react::TextWidthMode { + Auto, + LongestLine, +} + enum facebook::react::TimerSource { RequestAnimationFrame, SetInterval,