From d90d18853c5ee75aa7073f3f1ade03842a684867 Mon Sep 17 00:00:00 2001 From: Minh Vu Date: Sat, 25 Jul 2026 22:01:25 +0200 Subject: [PATCH] Preserve negative values in transformOrigin strings --- .../__tests__/processTransformOrigin-itest.js | 11 +++++++++++ .../Libraries/StyleSheet/processTransformOrigin.js | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/StyleSheet/__tests__/processTransformOrigin-itest.js b/packages/react-native/Libraries/StyleSheet/__tests__/processTransformOrigin-itest.js index 81a882f4175a..318b3f9e088d 100644 --- a/packages/react-native/Libraries/StyleSheet/__tests__/processTransformOrigin-itest.js +++ b/packages/react-native/Libraries/StyleSheet/__tests__/processTransformOrigin-itest.js @@ -122,5 +122,16 @@ describe('processTransformOrigin', () => { expect(processTransformOrigin('12.5px 7.5px')).toEqual([12.5, 7.5, 0]); expect(processTransformOrigin('.5% .5px')).toEqual(['.5%', 0.5, 0]); }); + it('should preserve negative percentage and pixel values', () => { + expect(processTransformOrigin('-50.5% -30.2%')).toEqual([ + '-50.5%', + '-30.2%', + 0, + ]); + expect(processTransformOrigin('-12.5px -7.5px -2.5px')).toEqual([ + -12.5, -7.5, -2.5, + ]); + expect(processTransformOrigin('-.5% -.5px')).toEqual(['-.5%', -0.5, 0]); + }); }); }); diff --git a/packages/react-native/Libraries/StyleSheet/processTransformOrigin.js b/packages/react-native/Libraries/StyleSheet/processTransformOrigin.js index 96cd040d8142..5c132d92ae43 100644 --- a/packages/react-native/Libraries/StyleSheet/processTransformOrigin.js +++ b/packages/react-native/Libraries/StyleSheet/processTransformOrigin.js @@ -12,7 +12,7 @@ import invariant from 'invariant'; // Pre-compiled regex pattern for performance - avoids regex compilation on each call const TRANSFORM_ORIGIN_REGEX = - /(top|bottom|left|right|center|\d*\.?\d+(?:%|px)|0)/gi; + /(top|bottom|left|right|center|-?\d*\.?\d+(?:%|px)|0)/gi; const INDEX_X = 0; const INDEX_Y = 1;