mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: On the new architecture, the setup that would allow Yoga to read the baseline of a node was missing. This PR adds it: - adds new ShadowNode trait - `BaselineYogaNode` that marks a node as having a custom baseline function - adds `yogaNodeBaselineCallbackConnector` that's responsible for allowing Yoga to call baseline function on the node - changes signatures of `lastBaseline` and `firstBaseline` to accept `LayoutContext` as the first argument, which is necessary to build an attributed string - adds implementation of `lastBaseline` that's invoked by `yogaNodeBaselineCallbackConnector` - adds methods for calculating the last baseline in platform-specific `TextLayoutManagers`, using the same approach on both Android and iOS (this differs from the old architecture where calculations were different) ## Changelog: [GENERAL] [FIXED] - Fixed `alignItems: 'baseline'` not working correctly on the new architecture Pull Request resolved: https://github.com/facebook/react-native/pull/45102 Test Plan: Tested on the relevant part of RNTester: ### Android |Old arch|New arch before|New arch after| |-|-|-| |<img width="426" alt="baseline-android-old-arch" src="https://github.com/facebook/react-native/assets/21055725/08550dfc-cf30-4938-8872-9bef916dc53c">|<img width="426" alt="baseline-android-new-arch-before" src="https://github.com/facebook/react-native/assets/21055725/9e3667f7-5c42-4e23-8972-fd2e994694a4">|<img width="409" alt="Screenshot 2024-07-02 at 16 40 38" src="https://github.com/facebook/react-native/assets/21055725/13379b11-b69e-4082-81cc-dec5e6d092f2">| ### iOS |Old arch|New arch before|New arch after| |-|-|-| |<img width="519" alt="baseline-ios-old-arch" src="https://github.com/facebook/react-native/assets/21055725/da3956a1-5588-4933-87ce-4b5a9c256957">|<img width="519" alt="baseline-ios-new-arch-before" src="https://github.com/facebook/react-native/assets/21055725/09aef2c1-2eec-4710-b237-0f4a0c3d52d0">|<img width="519" alt="Screenshot 2024-07-02 at 16 40 29" src="https://github.com/facebook/react-native/assets/21055725/0a8a7251-1f6f-40db-81d7-4f37142932db">| Reviewed By: NickGerleman Differential Revision: D59323974 Pulled By: cortinico fbshipit-source-id: e50882d399a0791a39ce8b416ed96d8fd3c48f23