From 5bddc32d24a7df4b60d3598fe7109c5bfaace0a3 Mon Sep 17 00:00:00 2001 From: meetdhanani17 <124246235+meetdhanani17@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:45:44 +0530 Subject: [PATCH 1/3] make readonly object editable for change style object attributes --- packages/react-native/Libraries/StyleSheet/flattenStyle.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/react-native/Libraries/StyleSheet/flattenStyle.js b/packages/react-native/Libraries/StyleSheet/flattenStyle.js index fafaf8c13fee87..8a9e47c72bb1bd 100644 --- a/packages/react-native/Libraries/StyleSheet/flattenStyle.js +++ b/packages/react-native/Libraries/StyleSheet/flattenStyle.js @@ -22,6 +22,9 @@ function flattenStyle( } if (!Array.isArray(style)) { + if (Object.isFrozen(style)) { + return {...style} + } // $FlowFixMe[incompatible-return] return style; } From de1081738a76025da73e19aa46a84650c5fee206 Mon Sep 17 00:00:00 2001 From: meetdhanani17 Date: Sat, 6 Jul 2024 01:15:19 +0530 Subject: [PATCH 2/3] changed testcases according to object convert functionality of flattenStyle --- .../Libraries/StyleSheet/__tests__/flattenStyle-test.js | 4 +--- packages/react-native/Libraries/StyleSheet/flattenStyle.js | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/react-native/Libraries/StyleSheet/__tests__/flattenStyle-test.js b/packages/react-native/Libraries/StyleSheet/__tests__/flattenStyle-test.js index 8d5404e81d310f..c9629f2ce60f9c 100644 --- a/packages/react-native/Libraries/StyleSheet/__tests__/flattenStyle-test.js +++ b/packages/react-native/Libraries/StyleSheet/__tests__/flattenStyle-test.js @@ -77,12 +77,10 @@ describe('flattenStyle', () => { expect(nullStyle).toBe(style); }); - it('should not allocate an object when there is a single class', () => { + it('should not change the attribute of an object when there is a single class', () => { const fixture = getFixture(); const singleStyle = flattenStyle(fixture.elementA); - const singleStyleAgain = flattenStyle(fixture.elementA); - expect(singleStyle).toBe(singleStyleAgain); expect(singleStyle).toEqual({ styleA: 'moduleA/elementA/styleA', styleB: 'moduleA/elementA/styleB', diff --git a/packages/react-native/Libraries/StyleSheet/flattenStyle.js b/packages/react-native/Libraries/StyleSheet/flattenStyle.js index 8a9e47c72bb1bd..87e069e8fbca6b 100644 --- a/packages/react-native/Libraries/StyleSheet/flattenStyle.js +++ b/packages/react-native/Libraries/StyleSheet/flattenStyle.js @@ -23,6 +23,7 @@ function flattenStyle( if (!Array.isArray(style)) { if (Object.isFrozen(style)) { + // $FlowFixMe[incompatible-return] return {...style} } // $FlowFixMe[incompatible-return] From d4d7e28db8dcde8984d649cb22a17eedf63a994d Mon Sep 17 00:00:00 2001 From: meetdhanani17 Date: Sat, 6 Jul 2024 01:56:29 +0530 Subject: [PATCH 3/3] format code --- packages/react-native/Libraries/StyleSheet/flattenStyle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/StyleSheet/flattenStyle.js b/packages/react-native/Libraries/StyleSheet/flattenStyle.js index 87e069e8fbca6b..046deb055c3e4a 100644 --- a/packages/react-native/Libraries/StyleSheet/flattenStyle.js +++ b/packages/react-native/Libraries/StyleSheet/flattenStyle.js @@ -24,7 +24,7 @@ function flattenStyle( if (!Array.isArray(style)) { if (Object.isFrozen(style)) { // $FlowFixMe[incompatible-return] - return {...style} + return {...style}; } // $FlowFixMe[incompatible-return] return style;