From 74812d6b9cf5fc969650ee87f0e46b3ca90daa57 Mon Sep 17 00:00:00 2001 From: meetdhanani17 Date: Wed, 7 Aug 2024 22:38:01 +0530 Subject: [PATCH 1/7] fixed font weight not update for mutate state --- .../Libraries/Text/TextOptimized.js | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/react-native/Libraries/Text/TextOptimized.js b/packages/react-native/Libraries/Text/TextOptimized.js index 615badd9ad6758..01cab7b5257df2 100644 --- a/packages/react-native/Libraries/Text/TextOptimized.js +++ b/packages/react-native/Libraries/Text/TextOptimized.js @@ -8,6 +8,7 @@ * @format */ +import type {____TextStyle_Internal as TextStyleInternal} from '../StyleSheet/StyleSheetTypes'; import type {PressEvent} from '../Types/CoreEventTypes'; import type {NativeTextProps} from './TextNativeComponent'; import type {PressRetentionOffset, TextProps} from './TextProps'; @@ -141,25 +142,32 @@ const TextOptimized: React.AbstractComponent = let _selectable = selectable; - const processedStyle = flattenStyle(_style); + let processedStyle: ?TextStyleInternal = flattenStyle(_style); if (processedStyle != null) { + let overrides: ?{...TextStyleInternal} = null; if (typeof processedStyle.fontWeight === 'number') { - // $FlowFixMe[cannot-write] - processedStyle.fontWeight = processedStyle.fontWeight.toString(); + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.fontWeight = + // $FlowFixMe[incompatible-cast] + (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); } if (processedStyle.userSelect != null) { _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - // $FlowFixMe[cannot-write] - delete processedStyle.userSelect; + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.userSelect = undefined; } if (processedStyle.verticalAlign != null) { - // $FlowFixMe[cannot-write] - processedStyle.textAlignVertical = + overrides = overrides || ({}: {...TextStyleInternal}); + overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; - // $FlowFixMe[cannot-write] - delete processedStyle.verticalAlign; + overrides.verticalAlign = undefined; + } + + if (overrides != null) { + // $FlowFixMe[incompatible-type] + processedStyle = [processedStyle, overrides]; } } From bc9b0968749d18cf0ebd36c0c678168e822ae05c Mon Sep 17 00:00:00 2001 From: meetdhanani17 Date: Thu, 8 Aug 2024 08:42:12 +0530 Subject: [PATCH 2/7] fix: change textinput style for mutate state --- .../Libraries/Components/TextInput/TextInput.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index 8b827ae1cc6969..c3be4f332fbcd3 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -1646,14 +1646,11 @@ const ExportedForwardRef: React.AbstractComponent< let style = flattenStyle(restProps.style); if (style?.verticalAlign != null) { - // $FlowFixMe[prop-missing] - // $FlowFixMe[cannot-write] - style.textAlignVertical = - // $FlowFixMe[invalid-computed-prop] + let overrides = {}; + overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[style.verticalAlign]; - // $FlowFixMe[prop-missing] - // $FlowFixMe[cannot-write] - delete style.verticalAlign; + overrides.textAlignVertical = undefined; + style = [style, overrides]; } return ( From d4ace54df6985f16f7ee88e38e1edfb9d1561939 Mon Sep 17 00:00:00 2001 From: meetdhanani17 Date: Thu, 8 Aug 2024 08:42:53 +0530 Subject: [PATCH 3/7] provided flowfix type for overrides --- .../react-native/Libraries/Components/TextInput/TextInput.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index c3be4f332fbcd3..11e6a318473389 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -1650,6 +1650,7 @@ const ExportedForwardRef: React.AbstractComponent< overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[style.verticalAlign]; overrides.textAlignVertical = undefined; + // $FlowFixMe[incompatible-type] style = [style, overrides]; } From fc023b65f633d32a927e8497a0fc450eba8dbf55 Mon Sep 17 00:00:00 2001 From: meetdhanani17 Date: Thu, 8 Aug 2024 09:33:26 +0530 Subject: [PATCH 4/7] assign new style changes in overrides object for text input --- .../Libraries/Components/TextInput/TextInput.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index 11e6a318473389..d4e12bf17b38ba 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -1646,10 +1646,11 @@ const ExportedForwardRef: React.AbstractComponent< let style = flattenStyle(restProps.style); if (style?.verticalAlign != null) { - let overrides = {}; - overrides.textAlignVertical = - verticalAlignToTextAlignVerticalMap[style.verticalAlign]; - overrides.textAlignVertical = undefined; + const overrides = { + textAlignVertical: + verticalAlignToTextAlignVerticalMap[style.verticalAlign], + verticalAlign: undefined, + }; // $FlowFixMe[incompatible-type] style = [style, overrides]; } From 26e59d799ad5b5d75f9959496424deeb2719d941 Mon Sep 17 00:00:00 2001 From: meetdhanani17 <124246235+meetdhanani17@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:15:49 +0530 Subject: [PATCH 5/7] Update TextInput.js --- .../Libraries/Components/TextInput/TextInput.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index d4e12bf17b38ba..14bddbbf3e9362 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -1646,13 +1646,13 @@ const ExportedForwardRef: React.AbstractComponent< let style = flattenStyle(restProps.style); if (style?.verticalAlign != null) { - const overrides = { - textAlignVertical: - verticalAlignToTextAlignVerticalMap[style.verticalAlign], - verticalAlign: undefined, - }; - // $FlowFixMe[incompatible-type] - style = [style, overrides]; + if (Object.isFrozen(style)) { + // $FlowFixMe[incompatible-type] + style = {...style}; + } + style.textAlignVertical = + verticalAlignToTextAlignVerticalMap[style.verticalAlign]; + style.verticalAlign: undefined; } return ( From 9dbfb3f782bc3308677e0bcc3e1c11c60c62f690 Mon Sep 17 00:00:00 2001 From: meetdhanani17 <124246235+meetdhanani17@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:16:41 +0530 Subject: [PATCH 6/7] Update TextInput.js --- .../react-native/Libraries/Components/TextInput/TextInput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index 14bddbbf3e9362..cfe56cf44c8cd7 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -1652,7 +1652,7 @@ const ExportedForwardRef: React.AbstractComponent< } style.textAlignVertical = verticalAlignToTextAlignVerticalMap[style.verticalAlign]; - style.verticalAlign: undefined; + delete style.verticalAlign; } return ( From 88cbc2a0ae3c65a919553030bf2e24a6ce34337c Mon Sep 17 00:00:00 2001 From: meetdhanani17 <124246235+meetdhanani17@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:24:18 +0530 Subject: [PATCH 7/7] Update TextInput.js --- .../Libraries/Components/TextInput/TextInput.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index cfe56cf44c8cd7..7fe1210f8278d7 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -1650,8 +1650,13 @@ const ExportedForwardRef: React.AbstractComponent< // $FlowFixMe[incompatible-type] style = {...style}; } + // $FlowFixMe[prop-missing] + // $FlowFixMe[cannot-write] style.textAlignVertical = - verticalAlignToTextAlignVerticalMap[style.verticalAlign]; + // $FlowFixMe[invalid-computed-prop] + verticalAlignToTextAlignVerticalMap[style.verticalAlign]; + // $FlowFixMe[prop-missing] + // $FlowFixMe[cannot-write] delete style.verticalAlign; }