react-native-tvos 0.77.0-0rc5 → 0.78.0-0rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/Libraries/Animated/animations/Animation.js +22 -1
  2. package/Libraries/Animated/animations/DecayAnimation.js +1 -0
  3. package/Libraries/Animated/animations/SpringAnimation.js +1 -0
  4. package/Libraries/Animated/animations/TimingAnimation.js +1 -0
  5. package/Libraries/Animated/nodes/AnimatedAddition.js +9 -2
  6. package/Libraries/Animated/nodes/AnimatedColor.js +4 -1
  7. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +10 -2
  8. package/Libraries/Animated/nodes/AnimatedDivision.js +9 -2
  9. package/Libraries/Animated/nodes/AnimatedInterpolation.js +5 -1
  10. package/Libraries/Animated/nodes/AnimatedModulo.js +5 -2
  11. package/Libraries/Animated/nodes/AnimatedMultiplication.js +9 -2
  12. package/Libraries/Animated/nodes/AnimatedNode.js +25 -46
  13. package/Libraries/Animated/nodes/AnimatedObject.js +9 -2
  14. package/Libraries/Animated/nodes/AnimatedProps.js +5 -1
  15. package/Libraries/Animated/nodes/AnimatedStyle.js +5 -1
  16. package/Libraries/Animated/nodes/AnimatedSubtraction.js +9 -2
  17. package/Libraries/Animated/nodes/AnimatedTracking.js +5 -1
  18. package/Libraries/Animated/nodes/AnimatedTransform.js +5 -1
  19. package/Libraries/Animated/nodes/AnimatedValue.js +63 -4
  20. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  21. package/Libraries/Animated/useAnimatedProps.js +14 -56
  22. package/Libraries/AppDelegate/RCTAppDelegate.h +6 -48
  23. package/Libraries/AppDelegate/RCTAppDelegate.mm +5 -230
  24. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.h +21 -0
  25. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +123 -0
  26. package/Libraries/AppDelegate/RCTReactNativeFactory.h +98 -0
  27. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +263 -0
  28. package/Libraries/AppDelegate/RCTRootViewFactory.mm +1 -1
  29. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +0 -1
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +1 -1
  31. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  32. package/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +21 -0
  33. package/Libraries/Components/LayoutConformance/LayoutConformance.js +59 -0
  34. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +29 -0
  35. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  36. package/Libraries/Components/TV/TVFocusGuideView.js +0 -1
  37. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  38. package/Libraries/Components/TextInput/TextInput.d.ts +5 -0
  39. package/Libraries/Components/TextInput/TextInput.flow.js +6 -0
  40. package/Libraries/Components/TextInput/TextInput.js +6 -0
  41. package/Libraries/Components/View/ViewPropTypes.d.ts +8 -7
  42. package/Libraries/Components/View/ViewPropTypes.js +0 -9
  43. package/Libraries/Core/ReactNativeVersion.js +2 -2
  44. package/Libraries/Core/setUpBatchedBridge.js +1 -16
  45. package/Libraries/EventEmitter/RCTEventEmitter.js +2 -6
  46. package/Libraries/Image/AssetSourceResolver.js +11 -0
  47. package/Libraries/Image/RCTImageLoader.mm +9 -1
  48. package/Libraries/Image/RCTImageView.mm +3 -3
  49. package/Libraries/Inspector/BorderBox.js +26 -14
  50. package/Libraries/Inspector/BoxInspector.js +60 -42
  51. package/Libraries/Inspector/ElementBox.js +55 -48
  52. package/Libraries/Inspector/StyleInspector.js +36 -30
  53. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  54. package/Libraries/Lists/FlatList.d.ts +1 -1
  55. package/Libraries/Modal/Modal.js +2 -0
  56. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +1 -1
  57. package/Libraries/NativeComponent/BaseViewConfig.android.js +0 -2
  58. package/Libraries/NativeComponent/BaseViewConfig.ios.js +0 -2
  59. package/Libraries/Network/RCTNetworking.android.js +24 -16
  60. package/Libraries/Network/RCTNetworking.ios.js +1 -46
  61. package/Libraries/Network/RCTNetworking.js.flow +1 -46
  62. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
  63. package/Libraries/Pressability/Pressability.js +2 -2
  64. package/Libraries/ReactNative/UIManagerProperties.js +3 -1
  65. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15829 -26461
  66. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3907 -2560
  67. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4399 -2878
  68. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16103 -26908
  69. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +4034 -2695
  70. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4535 -3045
  71. package/Libraries/Renderer/shims/ReactNativeTypes.js +5 -6
  72. package/Libraries/StyleSheet/processTransform.js +6 -0
  73. package/Libraries/Text/Text/NSTextStorage+FontScaling.m +9 -0
  74. package/Libraries/Text/Text.d.ts +6 -1
  75. package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +2 -0
  76. package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +26 -0
  77. package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +2 -0
  78. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +26 -1
  79. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +2 -0
  80. package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +1 -0
  81. package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +26 -0
  82. package/Libraries/Text/TextProps.js +2 -2
  83. package/Libraries/Utilities/BackHandler.android.js +5 -4
  84. package/Libraries/Utilities/BackHandler.ios.js +3 -4
  85. package/README-core.md +2 -2
  86. package/React/Base/RCTConvert.mm +3 -1
  87. package/React/Base/RCTVersion.m +2 -2
  88. package/React/CoreModules/RCTDevSettings.h +0 -1
  89. package/React/CoreModules/RCTDeviceInfo.mm +4 -0
  90. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +3 -5
  91. package/React/DevSupport/RCTInspectorDevServerHelper.mm +1 -6
  92. package/React/DevSupport/RCTPausedInDebuggerOverlayController.mm +3 -5
  93. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +0 -24
  94. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +0 -28
  95. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +90 -57
  96. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +241 -104
  97. package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryContentView.mm +0 -5
  98. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +39 -10
  99. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +3 -3
  100. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +107 -34
  101. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +5 -0
  102. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +1 -0
  103. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +12 -4
  104. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +3 -0
  105. package/React/Fabric/Mounting/RCTMountingManager.mm +6 -9
  106. package/React/Fabric/RCTScheduler.mm +1 -1
  107. package/React/I18n/strings/da.lproj/fbt_language_pack.bin +0 -0
  108. package/React/Modules/RCTUIManager.mm +1 -2
  109. package/React/React-RCTFBReactNativeSpec.podspec +1 -0
  110. package/React/React-RCTFabric.podspec +3 -2
  111. package/React/Tests/Text/RCTParagraphComponentViewTests.mm +12 -12
  112. package/React/Views/RCTComponentData.mm +1 -5
  113. package/React/Views/RCTLayout.m +3 -0
  114. package/React/Views/RCTShadowView.h +3 -3
  115. package/React/Views/RCTShadowView.m +52 -20
  116. package/React/Views/RCTTVView.m +5 -2
  117. package/React/Views/RCTView.m +6 -2
  118. package/React/Views/RCTViewManager.m +0 -7
  119. package/React/Views/ScrollView/RCTScrollView.m +109 -45
  120. package/React-Core.podspec +1 -1
  121. package/ReactAndroid/api/ReactAndroid.api +123 -227
  122. package/ReactAndroid/build.gradle.kts +8 -13
  123. package/ReactAndroid/cmake-utils/ReactNative-application.cmake +13 -3
  124. package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +2 -0
  125. package/ReactAndroid/external-artifacts/build.gradle.kts +5 -5
  126. package/ReactAndroid/gradle.properties +3 -3
  127. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesMemoryDumper.java → HermesMemoryDumper.kt} +5 -5
  128. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesSamplingProfiler.java → HermesSamplingProfiler.kt} +8 -10
  129. package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +12 -59
  130. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +8 -0
  131. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +8 -0
  132. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +37 -0
  133. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +12 -1
  134. package/ReactAndroid/src/main/java/com/facebook/react/{ReactPackageLogger.java → ReactPackageLogger.kt} +3 -3
  135. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +8 -8
  136. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +1 -1
  137. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -3
  138. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +6 -0
  139. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.kt +5 -3
  140. package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.kt +4 -8
  141. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +11 -5
  142. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +0 -7
  143. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +1 -3
  144. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +6 -1
  145. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +11 -23
  146. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +3 -30
  147. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/HMRClient.java +4 -1
  148. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  149. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +4 -4
  150. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +21 -26
  151. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -14
  152. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.java +2 -11
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +88 -0
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +6 -6
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +39 -8
  156. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +7 -7
  157. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +21 -21
  158. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +36 -36
  159. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +8 -8
  160. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +10 -10
  161. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +40 -40
  162. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +8 -8
  163. package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +3 -3
  164. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.kt +55 -0
  165. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.kt +185 -0
  166. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/{HeadlessJsTaskEventListener.java → HeadlessJsTaskEventListener.kt} +5 -6
  167. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.kt +20 -0
  168. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/LinearCountingRetryPolicy.kt +4 -4
  169. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/NoRetryPolicy.kt +7 -8
  170. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +8 -5
  171. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.kt +11 -17
  172. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +1 -1
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.kt +16 -0
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt +107 -0
  175. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +18 -19
  176. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.kt +48 -0
  177. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  178. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +397 -0
  179. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +0 -10
  180. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +1 -1
  181. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +8 -8
  182. package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +4 -10
  183. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +4 -0
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +13 -12
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +15 -12
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ComponentNameResolver.java → ComponentNameResolver.kt} +4 -5
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/GuardedFrameCallback.kt +5 -2
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +0 -5
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.kt +21 -0
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.kt +18 -0
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{RootView.java → RootView.kt} +11 -12
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewManager.kt +1 -1
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{UIBlock.java → UIBlock.kt} +3 -3
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -5
  195. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +25 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +1 -1
  197. package/{Libraries/AppDelegate/RCTAppDelegate+Protected.h → ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerWithGeneratedInterface.kt} +3 -8
  198. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +12 -5
  199. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +46 -80
  200. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BorderDrawable.kt +5 -5
  201. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +5 -5
  202. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/{BatchEventDispatchedListener.java → BatchEventDispatchedListener.kt} +3 -3
  203. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.kt +46 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.kt +40 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +2 -6
  206. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.kt +19 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.kt +23 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +241 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.kt +193 -0
  210. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +44 -0
  211. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +37 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.kt +130 -0
  213. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.kt +1 -1
  214. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.kt +77 -0
  215. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +196 -0
  216. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +16 -17
  217. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +5 -0
  218. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +56 -3
  219. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt +11 -0
  220. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/{FpsListener.java → FpsListener.kt} +4 -4
  221. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +16 -0
  222. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +3 -3
  223. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.kt +136 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +2 -2
  225. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +152 -0
  226. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +52 -0
  227. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +1 -7
  228. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +16 -2
  229. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +8 -13
  230. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +50 -0
  231. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.kt +1 -1
  232. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +1 -9
  233. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +111 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +90 -20
  235. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +2 -2
  236. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +22 -1
  237. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +43 -1
  238. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +86 -2
  239. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +44 -2
  240. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +7 -1
  241. package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -6
  242. package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +6 -1
  243. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +96 -11
  244. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +9 -0
  245. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +1 -0
  246. package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +0 -3
  247. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
  248. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +41 -25
  249. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +0 -2
  250. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +63 -91
  251. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -7
  252. package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +9 -9
  253. package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +6 -10
  254. package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +0 -2
  255. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +4 -0
  256. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +1 -0
  257. package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +0 -1
  258. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +49 -49
  259. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +11 -11
  260. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +1 -4
  261. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +0 -1
  262. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +0 -1
  263. package/ReactAndroid/src/main/jni/react/jni/JSLogging.cpp +4 -9
  264. package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +0 -4
  265. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +3 -4
  266. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.cpp +3 -4
  267. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +6 -0
  268. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +1 -0
  269. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +6 -0
  270. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +1 -0
  271. package/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp +3 -7
  272. package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +0 -2
  273. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +0 -1
  274. package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +0 -1
  275. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +2 -8
  276. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +2 -8
  277. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -1
  278. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp +18 -17
  279. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +1 -1
  280. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +1 -1
  281. package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +0 -2
  282. package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +0 -1
  283. package/ReactAndroid/src/main/res/views/view/values/ids.xml +5 -0
  284. package/ReactCommon/React-Fabric.podspec +8 -0
  285. package/ReactCommon/React-FabricComponents.podspec +2 -2
  286. package/ReactCommon/React-FabricImage.podspec +4 -1
  287. package/ReactCommon/cxxreact/CxxNativeModule.cpp +3 -3
  288. package/ReactCommon/cxxreact/Instance.cpp +6 -6
  289. package/ReactCommon/cxxreact/JSBigString.cpp +1 -1
  290. package/ReactCommon/cxxreact/JSExecutor.cpp +4 -2
  291. package/ReactCommon/cxxreact/ModuleRegistry.cpp +6 -6
  292. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -3
  293. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  294. package/ReactCommon/cxxreact/SystraceSection.h +8 -141
  295. package/ReactCommon/cxxreact/TraceSection.h +181 -0
  296. package/ReactCommon/cxxreact/tests/jsbigstring.cpp +19 -0
  297. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -2
  298. package/ReactCommon/jsc/JSCRuntime.cpp +0 -2
  299. package/ReactCommon/jsc/React-jsc.podspec +1 -1
  300. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +27 -19
  301. package/ReactCommon/jserrorhandler/JsErrorHandler.h +5 -3
  302. package/ReactCommon/jserrorhandler/StackTraceParser.cpp +16 -16
  303. package/ReactCommon/jserrorhandler/StackTraceParser.h +1 -1
  304. package/ReactCommon/jserrorhandler/tests/StackTraceParserTest.cpp +252 -246
  305. package/ReactCommon/jsi/jsi/CMakeLists.txt +0 -3
  306. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -1
  307. package/ReactCommon/jsi/jsi/JSIDynamic.h +1 -1
  308. package/ReactCommon/jsi/jsi/decorator.h +61 -0
  309. package/ReactCommon/jsi/jsi/jsi-inl.h +4 -0
  310. package/ReactCommon/jsi/jsi/jsi.cpp +37 -0
  311. package/ReactCommon/jsi/jsi/jsi.h +81 -0
  312. package/ReactCommon/jsi/jsi/test/testlib.cpp +88 -0
  313. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +9 -9
  314. package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -1
  315. package/ReactCommon/jsinspector-modern/HostAgent.cpp +3 -7
  316. package/ReactCommon/jsinspector-modern/HostTarget.cpp +22 -1
  317. package/ReactCommon/jsinspector-modern/HostTarget.h +1 -1
  318. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +19 -4
  319. package/ReactCommon/jsinspector-modern/InspectorFlags.h +14 -0
  320. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +21 -10
  321. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +12 -11
  322. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +2 -16
  323. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +14 -14
  324. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.h +7 -13
  325. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.cpp +1 -1
  326. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.cpp +1 -3
  327. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +3 -3
  328. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +1 -1
  329. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +26 -0
  330. package/ReactCommon/jsinspector-modern/tracing/CdpTracing.h +21 -0
  331. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +187 -0
  332. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +126 -0
  333. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +56 -0
  334. package/ReactCommon/react/featureflags/CMakeLists.txt +3 -0
  335. package/ReactCommon/react/featureflags/React-featureflags.podspec +7 -0
  336. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +15 -15
  337. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +18 -18
  338. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +88 -88
  339. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +9 -9
  340. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +17 -17
  341. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +454 -0
  342. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +5 -5
  343. package/ReactCommon/react/featureflags/tests/ReactNativeFeatureFlagsDynamicProviderTest.cpp +78 -0
  344. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +2 -3
  345. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +3 -3
  346. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +13 -4
  347. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +1 -0
  348. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +19 -11
  349. package/ReactCommon/react/nativemodule/cputime/CPUTime.h +55 -0
  350. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.cpp +35 -0
  351. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.h +28 -0
  352. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +18 -18
  353. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +8 -8
  354. package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
  355. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp +5 -8
  356. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -3
  357. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +22 -43
  358. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +0 -15
  359. package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
  360. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +22 -2
  361. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +9 -4
  362. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
  363. package/ReactCommon/react/renderer/animations/CMakeLists.txt +0 -1
  364. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +1 -1
  365. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +25 -19
  366. package/ReactCommon/react/renderer/animations/primitives.h +1 -1
  367. package/ReactCommon/react/renderer/animations/utils.h +3 -4
  368. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +31 -9
  369. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +85 -29
  370. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -0
  371. package/ReactCommon/react/renderer/attributedstring/conversions.h +5 -0
  372. package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +0 -1
  373. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp +4 -1
  374. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +2 -0
  375. package/ReactCommon/react/renderer/components/image/ImageEventEmitter.cpp +2 -2
  376. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +5 -5
  377. package/ReactCommon/react/renderer/components/image/ImageProps.h +1 -1
  378. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +38 -10
  379. package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +1 -1
  380. package/ReactCommon/react/renderer/components/image/ImageState.cpp +2 -3
  381. package/ReactCommon/react/renderer/components/image/ImageState.h +9 -6
  382. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -4
  383. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +7 -0
  384. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -2
  385. package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +2 -2
  386. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +33 -0
  387. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +17 -0
  388. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +3 -2
  389. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +2 -1
  390. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -4
  391. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +7 -0
  392. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +12 -0
  393. package/ReactCommon/react/renderer/{uimanager/bindingUtils.h → components/text/ParagraphComponentDescriptor.cpp} +2 -8
  394. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +10 -7
  395. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +23 -0
  396. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +8 -1
  397. package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +243 -0
  398. package/ReactCommon/react/renderer/components/textinput/TextInputState.cpp +71 -0
  399. package/ReactCommon/react/renderer/components/textinput/{platform/ios/react/renderer/components/iostextinput/TextInputState.h → TextInputState.h} +27 -7
  400. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +6 -13
  401. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +0 -2
  402. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +145 -144
  403. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +27 -29
  404. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +4 -5
  405. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +0 -26
  406. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h +0 -6
  407. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp +0 -147
  408. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +5 -57
  409. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +60 -70
  410. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +3 -3
  411. package/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +18 -0
  412. package/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +36 -0
  413. package/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +28 -0
  414. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +4 -0
  415. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -1
  416. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +21 -22
  417. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
  418. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +3 -1
  419. package/ReactCommon/react/renderer/components/view/conversions.h +117 -43
  420. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +3 -2
  421. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +3 -1
  422. package/ReactCommon/react/renderer/components/view/primitives.h +1 -1
  423. package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +12 -12
  424. package/ReactCommon/react/renderer/core/CMakeLists.txt +0 -1
  425. package/ReactCommon/react/renderer/core/ComponentDescriptor.cpp +4 -2
  426. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +4 -2
  427. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +17 -2
  428. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +26 -0
  429. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +4 -0
  430. package/ReactCommon/react/renderer/core/EventEmitter.cpp +3 -3
  431. package/ReactCommon/react/renderer/core/Props.cpp +16 -5
  432. package/ReactCommon/react/renderer/core/Props.h +11 -4
  433. package/ReactCommon/react/renderer/core/RawProps.cpp +30 -5
  434. package/ReactCommon/react/renderer/core/RawProps.h +10 -1
  435. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +7 -2
  436. package/ReactCommon/react/renderer/core/RawPropsParser.h +7 -1
  437. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +1 -0
  438. package/ReactCommon/react/renderer/core/RawValue.h +315 -22
  439. package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +95 -4
  440. package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +19 -4
  441. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +7 -1
  442. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +7 -5
  443. package/ReactCommon/react/renderer/graphics/Transform.cpp +11 -2
  444. package/ReactCommon/react/renderer/graphics/Transform.h +2 -1
  445. package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +4 -2
  446. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +7 -0
  447. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +43 -0
  448. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +36 -0
  449. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +43 -0
  450. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +94 -0
  451. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +101 -0
  452. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageManager.cpp +9 -1
  453. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequestParams.h +30 -0
  454. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageManager.mm +9 -0
  455. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h +30 -0
  456. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImageManager.mm +2 -2
  457. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +187 -152
  458. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +4 -5
  459. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +10 -16
  460. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -12
  461. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +44 -14
  462. package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.cpp +8 -4
  463. package/ReactCommon/react/renderer/mounting/stubs/stubs.cpp +1 -1
  464. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +116 -193
  465. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +0 -3
  466. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +7 -4
  467. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +2 -1
  468. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +7 -8
  469. package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +6 -6
  470. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +3 -1
  471. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +2 -0
  472. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +11 -11
  473. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +14 -15
  474. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +4 -3
  475. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +0 -1
  476. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +6 -37
  477. package/ReactCommon/react/renderer/scheduler/Scheduler.h +0 -3
  478. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +15 -11
  479. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +1 -0
  480. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +56 -2
  481. package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +23 -3
  482. package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -2
  483. package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -0
  484. package/ReactCommon/react/renderer/textlayoutmanager/{platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h → TextLayoutManager.h} +18 -17
  485. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +2 -3
  486. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +77 -89
  487. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +6 -10
  488. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +11 -5
  489. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +23 -1
  490. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +11 -32
  491. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +9 -23
  492. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.cpp +88 -0
  493. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +50 -0
  494. package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +0 -1
  495. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +3 -40
  496. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +23 -18
  497. package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -0
  498. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -31
  499. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +0 -4
  500. package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +10 -10
  501. package/ReactCommon/react/runtime/CMakeLists.txt +0 -1
  502. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -2
  503. package/ReactCommon/react/runtime/ReactInstance.cpp +43 -57
  504. package/ReactCommon/react/runtime/TimerManager.cpp +4 -4
  505. package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +5 -1
  506. package/ReactCommon/react/runtime/hermes/HermesInstance.h +0 -2
  507. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +2 -6
  508. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +6 -15
  509. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +3 -1
  510. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +15 -15
  511. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +5 -4
  512. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +0 -3
  513. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +33 -17
  514. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +8 -2
  515. package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.cpp → ReactPerfettoLogger.cpp} +25 -24
  516. package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.h → ReactPerfettoLogger.h} +9 -9
  517. package/ReactCommon/yoga/yoga/YGEnums.cpp +6 -0
  518. package/ReactCommon/yoga/yoga/YGEnums.h +4 -1
  519. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +124 -24
  520. package/ReactCommon/yoga/yoga/YGNodeStyle.h +22 -1
  521. package/ReactCommon/yoga/yoga/YGValue.h +3 -0
  522. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +6 -6
  523. package/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +2 -2
  524. package/ReactCommon/yoga/yoga/algorithm/FlexLine.h +1 -1
  525. package/ReactCommon/yoga/yoga/algorithm/PixelGrid.cpp +9 -6
  526. package/ReactCommon/yoga/yoga/enums/Unit.h +4 -1
  527. package/ReactCommon/yoga/yoga/node/Node.cpp +8 -8
  528. package/ReactCommon/yoga/yoga/node/Node.h +5 -5
  529. package/ReactCommon/yoga/yoga/style/Style.h +14 -12
  530. package/ReactCommon/yoga/yoga/style/StyleLength.h +14 -7
  531. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +139 -0
  532. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  533. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +60 -3
  534. package/gradle/libs.versions.toml +6 -2
  535. package/index.js +5 -0
  536. package/package.json +12 -13
  537. package/react-native.config.js +6 -0
  538. package/scripts/cocoapods/codegen_utils.rb +4 -4
  539. package/scripts/cocoapods/new_architecture.rb +3 -3
  540. package/scripts/cocoapods/utils.rb +4 -3
  541. package/scripts/codegen/generate-artifacts-executor.js +8 -4
  542. package/scripts/generate-codegen-artifacts.js +6 -1
  543. package/scripts/react-native-xcode.sh +1 -1
  544. package/scripts/react_native_pods.rb +3 -3
  545. package/scripts/xcode/ccache-clang++.sh +1 -1
  546. package/scripts/xcode/ccache-clang.sh +1 -1
  547. package/sdks/.hermesversion +1 -1
  548. package/sdks/hermes-engine/hermes-utils.rb +2 -2
  549. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +1 -1
  550. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  551. package/sdks/hermesc/osx-bin/hermes +0 -0
  552. package/sdks/hermesc/osx-bin/hermesc +0 -0
  553. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  554. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  555. package/src/private/featureflags/README.md +5 -0
  556. package/src/private/featureflags/ReactNativeFeatureFlags.js +32 -26
  557. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -5
  558. package/src/private/renderer/errorhandling/ErrorHandlers.js +12 -55
  559. package/src/private/specs/modules/{NativeJSCSamplingProfiler.js → NativeCPUTime.js} +7 -2
  560. package/src/private/specs/modules/NativeFantom.js +37 -0
  561. package/src/private/utilities/ensureInstance.js +21 -0
  562. package/src/private/webapis/dom/nodes/ReactNativeElement.js +49 -6
  563. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +17 -9
  564. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +11 -11
  565. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
  566. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -1
  567. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  568. package/src/private/webapis/performance/Performance.js +0 -12
  569. package/src/private/webapis/performance/specs/NativePerformance.js +0 -11
  570. package/types/index.d.ts +1 -0
  571. package/types/public/ReactNativeTVTypes.d.ts +49 -51
  572. package/Libraries/HeapCapture/HeapCapture.js +0 -29
  573. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -13
  574. package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -13
  575. package/Libraries/Performance/SamplingProfiler.js +0 -39
  576. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +0 -334
  577. package/React/Inspector/RCTInspectorPackagerConnection.m +0 -325
  578. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +0 -50
  579. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +0 -314
  580. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSCHeapCapture.java +0 -76
  581. package/ReactAndroid/src/main/java/com/facebook/react/fabric/EmptyReactNativeConfig.kt +0 -36
  582. package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.kt +0 -33
  583. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.kt +0 -54
  584. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +0 -83
  585. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.java +0 -121
  586. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +0 -214
  587. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.java +0 -22
  588. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/XmlFormat.kt +0 -143
  589. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.java +0 -17
  590. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +0 -124
  591. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.java +0 -58
  592. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +0 -422
  593. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +0 -98
  594. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +0 -25
  595. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.java +0 -20
  596. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +0 -45
  597. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +0 -37
  598. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.java +0 -19
  599. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.java +0 -24
  600. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +0 -257
  601. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +0 -210
  602. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +0 -43
  603. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +0 -39
  604. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +0 -165
  605. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.java +0 -85
  606. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +0 -204
  607. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +0 -161
  608. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +0 -232
  609. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +0 -70
  610. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/LegacyLineHeightSpan.kt +0 -69
  611. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +0 -114
  612. package/ReactAndroid/src/main/jni/first-party/fb/CMakeLists.txt +0 -31
  613. package/ReactAndroid/src/main/jni/first-party/fb/assert.cpp +0 -39
  614. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ALog.h +0 -82
  615. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h +0 -31
  616. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Countable.h +0 -45
  617. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Doxyfile +0 -18
  618. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +0 -93
  619. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ProgramLocation.h +0 -58
  620. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +0 -266
  621. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +0 -37
  622. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ThreadLocal.h +0 -112
  623. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/assert.h +0 -43
  624. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/log.h +0 -350
  625. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/noncopyable.h +0 -20
  626. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/nonmovable.h +0 -20
  627. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/visibility.h +0 -10
  628. package/ReactAndroid/src/main/jni/first-party/fb/log.cpp +0 -102
  629. package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.cpp +0 -47
  630. package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.h +0 -38
  631. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.cpp +0 -41
  632. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.h +0 -35
  633. package/ReactAndroid/src/main/jni/react/perftests/OnLoad.cpp +0 -243
  634. package/ReactAndroid/src/main/jni/third-party/jsc/CMakeLists.txt +0 -15
  635. package/ReactCommon/React-nativeconfig.podspec +0 -36
  636. package/ReactCommon/cxxreact/tests/main.cpp +0 -15
  637. package/ReactCommon/react/config/CMakeLists.txt +0 -20
  638. package/ReactCommon/react/config/ReactNativeConfig.cpp +0 -28
  639. package/ReactCommon/react/config/ReactNativeConfig.h +0 -42
  640. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -95
  641. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.h +0 -80
  642. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.cpp +0 -10
  643. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +0 -78
  644. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +0 -69
  645. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +0 -123
  646. package/ReactCommon/react/renderer/uimanager/bindingUtils.cpp +0 -79
  647. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +0 -413
  648. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +0 -181
  649. package/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js +0 -327
  650. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewComponentDescriptor.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewComponentDescriptor.h} +0 -0
  651. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.cpp → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.cpp} +0 -0
  652. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h} +0 -0
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #include "TextLayoutManager.h"
9
+
10
+ namespace facebook::react {
11
+
12
+ Float TextLayoutManager::baseline(
13
+ const AttributedStringBox& attributedStringBox,
14
+ const ParagraphAttributes& paragraphAttributes,
15
+ const Size& size) const {
16
+ auto lines =
17
+ this->measureLines(attributedStringBox, paragraphAttributes, size);
18
+
19
+ if (!lines.empty()) {
20
+ return lines[0].ascender;
21
+ } else {
22
+ return 0;
23
+ }
24
+ }
25
+
26
+ } // namespace facebook::react
@@ -7,26 +7,26 @@
7
7
 
8
8
  #pragma once
9
9
 
10
- #include <react/config/ReactNativeConfig.h>
11
- #include <react/renderer/attributedstring/AttributedString.h>
12
10
  #include <react/renderer/attributedstring/AttributedStringBox.h>
11
+ #include <react/renderer/attributedstring/ParagraphAttributes.h>
13
12
  #include <react/renderer/core/LayoutConstraints.h>
14
13
  #include <react/renderer/textlayoutmanager/TextLayoutContext.h>
15
14
  #include <react/renderer/textlayoutmanager/TextMeasureCache.h>
16
15
  #include <react/utils/ContextContainer.h>
16
+ #include <memory>
17
17
 
18
18
  namespace facebook::react {
19
19
 
20
20
  class TextLayoutManager;
21
21
 
22
- using SharedTextLayoutManager = std::shared_ptr<const TextLayoutManager>;
23
-
24
22
  /*
25
- * Cross platform facade for Android-specific TextLayoutManager.
23
+ * Cross platform facade for text measurement (e.g. Android-specific
24
+ * TextLayoutManager)
26
25
  */
27
26
  class TextLayoutManager {
28
27
  public:
29
28
  TextLayoutManager(const ContextContainer::Shared& contextContainer);
29
+ virtual ~TextLayoutManager() = default;
30
30
 
31
31
  /*
32
32
  * Not copyable.
@@ -43,12 +43,13 @@ class TextLayoutManager {
43
43
  /*
44
44
  * Measures `attributedString` using native text rendering infrastructure.
45
45
  */
46
- TextMeasurement measure(
46
+ virtual TextMeasurement measure(
47
47
  const AttributedStringBox& attributedStringBox,
48
48
  const ParagraphAttributes& paragraphAttributes,
49
49
  const TextLayoutContext& layoutContext,
50
50
  const LayoutConstraints& layoutConstraints) const;
51
51
 
52
+ #ifdef ANDROID
52
53
  /**
53
54
  * Measures an AttributedString on the platform, as identified by some
54
55
  * opaque cache ID.
@@ -57,12 +58,13 @@ class TextLayoutManager {
57
58
  int64_t cacheId,
58
59
  const ParagraphAttributes& paragraphAttributes,
59
60
  const LayoutConstraints& layoutConstraints) const;
61
+ #endif
60
62
 
61
63
  /*
62
64
  * Measures lines of `attributedString` using native text rendering
63
65
  * infrastructure.
64
66
  */
65
- LinesMeasurements measureLines(
67
+ virtual LinesMeasurements measureLines(
66
68
  const AttributedStringBox& attributedStringBox,
67
69
  const ParagraphAttributes& paragraphAttributes,
68
70
  const Size& size) const;
@@ -76,20 +78,19 @@ class TextLayoutManager {
76
78
  const ParagraphAttributes& paragraphAttributes,
77
79
  const Size& size) const;
78
80
 
81
+ #ifdef __APPLE__
79
82
  /*
80
83
  * Returns an opaque pointer to platform-specific TextLayoutManager.
81
84
  * Is used on a native views layer to delegate text rendering to the manager.
82
85
  */
83
- void* getNativeTextLayoutManager() const;
84
-
85
- private:
86
- TextMeasurement doMeasure(
87
- const AttributedString& attributedString,
88
- const ParagraphAttributes& paragraphAttributes,
89
- const LayoutConstraints& layoutConstraints) const;
90
-
91
- void* self_{};
92
- ContextContainer::Shared contextContainer_;
86
+ std::shared_ptr<void> getNativeTextLayoutManager() const;
87
+ #endif
88
+
89
+ protected:
90
+ std::shared_ptr<const ContextContainer> contextContainer_;
91
+ #ifdef __APPLE__
92
+ std::shared_ptr<void> nativeTextLayoutManager_;
93
+ #endif
93
94
  TextMeasureCache textMeasureCache_;
94
95
  LineMeasureCache lineMeasureCache_;
95
96
  };
@@ -208,8 +208,7 @@ inline bool operator==(
208
208
  return areAttributedStringsEquivalentLayoutWise(
209
209
  lhs.attributedString, rhs.attributedString) &&
210
210
  lhs.paragraphAttributes == rhs.paragraphAttributes &&
211
- lhs.layoutConstraints.maximumSize.width ==
212
- rhs.layoutConstraints.maximumSize.width;
211
+ lhs.layoutConstraints == rhs.layoutConstraints;
213
212
  }
214
213
 
215
214
  inline bool operator!=(
@@ -243,7 +242,7 @@ struct hash<facebook::react::TextMeasureCacheKey> {
243
242
  return facebook::react::hash_combine(
244
243
  attributedStringHashLayoutWise(key.attributedString),
245
244
  key.paragraphAttributes,
246
- key.layoutConstraints.maximumSize.width);
245
+ key.layoutConstraints);
247
246
  }
248
247
  };
249
248
 
@@ -7,8 +7,6 @@
7
7
 
8
8
  #include "TextLayoutManager.h"
9
9
 
10
- #include <limits>
11
-
12
10
  #include <react/common/mapbuffer/JReadableMapBuffer.h>
13
11
  #include <react/jni/ReadableNativeMap.h>
14
12
  #include <react/renderer/attributedstring/conversions.h>
@@ -17,11 +15,11 @@
17
15
  #include <react/renderer/mapbuffer/MapBufferBuilder.h>
18
16
  #include <react/renderer/telemetry/TransactionTelemetry.h>
19
17
 
20
- using namespace facebook::jni;
21
-
22
18
  namespace facebook::react {
23
19
 
24
- static int countAttachments(const AttributedString& attributedString) {
20
+ namespace {
21
+
22
+ int countAttachments(const AttributedString& attributedString) {
25
23
  int count = 0;
26
24
 
27
25
  for (const auto& fragment : attributedString.getFragments()) {
@@ -46,7 +44,7 @@ Size measureAndroidComponent(
46
44
  jfloatArray attachmentPositions) {
47
45
  const jni::global_ref<jobject>& fabricUIManager =
48
46
  contextContainer->at<jni::global_ref<jobject>>("FabricUIManager");
49
- auto componentNameRef = make_jstring(componentName);
47
+ auto componentNameRef = jni::make_jstring(componentName);
50
48
 
51
49
  static auto measure =
52
50
  jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
@@ -86,16 +84,79 @@ Size measureAndroidComponent(
86
84
  return size;
87
85
  }
88
86
 
87
+ TextMeasurement doMeasure(
88
+ const ContextContainer::Shared& contextContainer,
89
+ const AttributedString& attributedString,
90
+ const ParagraphAttributes& paragraphAttributes,
91
+ const LayoutConstraints& layoutConstraints) {
92
+ const int attachmentCount = countAttachments(attributedString);
93
+ auto env = jni::Environment::current();
94
+ auto attachmentPositions = env->NewFloatArray(attachmentCount * 2);
95
+
96
+ auto minimumSize = layoutConstraints.minimumSize;
97
+ auto maximumSize = layoutConstraints.maximumSize;
98
+
99
+ // We assume max height will have no effect on measurement, so we override it
100
+ // with a constant value with no constraints, to enable cache reuse later down
101
+ // in the stack.
102
+ // TODO: This is suss, and not at the right layer
103
+ maximumSize.height = std::numeric_limits<Float>::infinity();
104
+
105
+ auto attributedStringMap = toMapBuffer(attributedString);
106
+ auto paragraphAttributesMap = toMapBuffer(paragraphAttributes);
107
+
108
+ auto size = measureAndroidComponent(
109
+ contextContainer,
110
+ -1, // TODO: we should pass rootTag in
111
+ "RCTText",
112
+ std::move(attributedStringMap),
113
+ std::move(paragraphAttributesMap),
114
+ minimumSize.width,
115
+ maximumSize.width,
116
+ minimumSize.height,
117
+ maximumSize.height,
118
+ attachmentPositions);
119
+
120
+ jfloat* attachmentData =
121
+ env->GetFloatArrayElements(attachmentPositions, nullptr);
122
+
123
+ auto attachments = TextMeasurement::Attachments{};
124
+ if (attachmentCount > 0) {
125
+ int attachmentIndex = 0;
126
+ for (const auto& fragment : attributedString.getFragments()) {
127
+ if (fragment.isAttachment()) {
128
+ float top = attachmentData[attachmentIndex * 2];
129
+ float left = attachmentData[attachmentIndex * 2 + 1];
130
+ float width = fragment.parentShadowView.layoutMetrics.frame.size.width;
131
+ float height =
132
+ fragment.parentShadowView.layoutMetrics.frame.size.height;
133
+
134
+ auto rect = facebook::react::Rect{
135
+ .origin = {.x = left, .y = top},
136
+ .size = facebook::react::Size{.width = width, .height = height}};
137
+ attachments.push_back(
138
+ TextMeasurement::Attachment{.frame = rect, .isClipped = false});
139
+ attachmentIndex++;
140
+ }
141
+ }
142
+ }
143
+
144
+ // Clean up allocated ref
145
+ env->ReleaseFloatArrayElements(
146
+ attachmentPositions, attachmentData, JNI_ABORT);
147
+ env->DeleteLocalRef(attachmentPositions);
148
+
149
+ return TextMeasurement{.size = size, .attachments = attachments};
150
+ }
151
+
152
+ } // namespace
153
+
89
154
  TextLayoutManager::TextLayoutManager(
90
155
  const ContextContainer::Shared& contextContainer)
91
156
  : contextContainer_(contextContainer),
92
157
  textMeasureCache_(kSimpleThreadSafeCacheSizeCap),
93
158
  lineMeasureCache_(kSimpleThreadSafeCacheSizeCap) {}
94
159
 
95
- void* TextLayoutManager::getNativeTextLayoutManager() const {
96
- return self_;
97
- }
98
-
99
160
  TextMeasurement TextLayoutManager::measure(
100
161
  const AttributedStringBox& attributedStringBox,
101
162
  const ParagraphAttributes& paragraphAttributes,
@@ -111,8 +172,11 @@ TextMeasurement TextLayoutManager::measure(
111
172
  telemetry->willMeasureText();
112
173
  }
113
174
 
114
- auto measurement =
115
- doMeasure(attributedString, paragraphAttributes, layoutConstraints);
175
+ auto measurement = doMeasure(
176
+ contextContainer_,
177
+ attributedString,
178
+ paragraphAttributes,
179
+ layoutConstraints);
116
180
 
117
181
  if (telemetry != nullptr) {
118
182
  telemetry->didMeasureText();
@@ -129,7 +193,7 @@ TextMeasurement TextLayoutManager::measureCachedSpannableById(
129
193
  int64_t cacheId,
130
194
  const ParagraphAttributes& paragraphAttributes,
131
195
  const LayoutConstraints& layoutConstraints) const {
132
- auto env = Environment::current();
196
+ auto env = jni::Environment::current();
133
197
  auto attachmentPositions = env->NewFloatArray(0);
134
198
  auto minimumSize = layoutConstraints.minimumSize;
135
199
  auto maximumSize = layoutConstraints.maximumSize;
@@ -213,80 +277,4 @@ LinesMeasurements TextLayoutManager::measureLines(
213
277
  return lineMeasurements;
214
278
  }
215
279
 
216
- Float TextLayoutManager::baseline(
217
- const AttributedStringBox& attributedStringBox,
218
- const ParagraphAttributes& paragraphAttributes,
219
- const Size& size) const {
220
- auto lines =
221
- this->measureLines(attributedStringBox, paragraphAttributes, size);
222
-
223
- if (!lines.empty()) {
224
- return lines[0].ascender;
225
- } else {
226
- return 0;
227
- }
228
- }
229
-
230
- TextMeasurement TextLayoutManager::doMeasure(
231
- const AttributedString& attributedString,
232
- const ParagraphAttributes& paragraphAttributes,
233
- const LayoutConstraints& layoutConstraints) const {
234
- const int attachmentCount = countAttachments(attributedString);
235
- auto env = Environment::current();
236
- auto attachmentPositions = env->NewFloatArray(attachmentCount * 2);
237
-
238
- auto minimumSize = layoutConstraints.minimumSize;
239
- auto maximumSize = layoutConstraints.maximumSize;
240
-
241
- // We assume max height will have no effect on measurement, so we override it
242
- // with a constant value with no constraints, to enable cache reuse later down
243
- // in the stack.
244
- // TODO: This is suss, and not at the right layer
245
- maximumSize.height = std::numeric_limits<Float>::infinity();
246
-
247
- auto attributedStringMap = toMapBuffer(attributedString);
248
- auto paragraphAttributesMap = toMapBuffer(paragraphAttributes);
249
-
250
- auto size = measureAndroidComponent(
251
- contextContainer_,
252
- -1, // TODO: we should pass rootTag in
253
- "RCTText",
254
- std::move(attributedStringMap),
255
- std::move(paragraphAttributesMap),
256
- minimumSize.width,
257
- maximumSize.width,
258
- minimumSize.height,
259
- maximumSize.height,
260
- attachmentPositions);
261
-
262
- jfloat* attachmentData =
263
- env->GetFloatArrayElements(attachmentPositions, nullptr);
264
-
265
- auto attachments = TextMeasurement::Attachments{};
266
- if (attachmentCount > 0) {
267
- int attachmentIndex = 0;
268
- for (const auto& fragment : attributedString.getFragments()) {
269
- if (fragment.isAttachment()) {
270
- float top = attachmentData[attachmentIndex * 2];
271
- float left = attachmentData[attachmentIndex * 2 + 1];
272
- float width = fragment.parentShadowView.layoutMetrics.frame.size.width;
273
- float height =
274
- fragment.parentShadowView.layoutMetrics.frame.size.height;
275
-
276
- auto rect = facebook::react::Rect{
277
- {left, top}, facebook::react::Size{width, height}};
278
- attachments.push_back(TextMeasurement::Attachment{rect, false});
279
- attachmentIndex++;
280
- }
281
- }
282
- }
283
-
284
- // Clean up allocated ref
285
- env->ReleaseFloatArrayElements(
286
- attachmentPositions, attachmentData, JNI_ABORT);
287
- env->DeleteLocalRef(attachmentPositions);
288
-
289
- return TextMeasurement{size, attachments};
290
- }
291
-
292
280
  } // namespace facebook::react
@@ -9,9 +9,10 @@
9
9
 
10
10
  namespace facebook::react {
11
11
 
12
- void* TextLayoutManager::getNativeTextLayoutManager() const {
13
- return (void*)this;
14
- }
12
+ TextLayoutManager::TextLayoutManager(
13
+ const ContextContainer::Shared& /*contextContainer*/)
14
+ : textMeasureCache_(kSimpleThreadSafeCacheSizeCap),
15
+ lineMeasureCache_(kSimpleThreadSafeCacheSizeCap) {}
15
16
 
16
17
  TextMeasurement TextLayoutManager::measure(
17
18
  const AttributedStringBox& attributedStringBox,
@@ -28,12 +29,14 @@ TextMeasurement TextLayoutManager::measure(
28
29
  return TextMeasurement{{0, 0}, attachments};
29
30
  }
30
31
 
32
+ #ifdef ANDROID
31
33
  TextMeasurement TextLayoutManager::measureCachedSpannableById(
32
34
  int64_t /*cacheId*/,
33
35
  const ParagraphAttributes& /*paragraphAttributes*/,
34
36
  const LayoutConstraints& /*layoutConstraints*/) const {
35
37
  return {};
36
38
  }
39
+ #endif
37
40
 
38
41
  LinesMeasurements TextLayoutManager::measureLines(
39
42
  const AttributedStringBox& /*attributedStringBox*/,
@@ -42,11 +45,4 @@ LinesMeasurements TextLayoutManager::measureLines(
42
45
  return {};
43
46
  };
44
47
 
45
- Float TextLayoutManager::baseline(
46
- const AttributedStringBox& /*attributedStringBox*/,
47
- const ParagraphAttributes& /*paragraphAttributes*/,
48
- const Size& /*size*/) const {
49
- return 0;
50
- }
51
-
52
48
  } // namespace facebook::react
@@ -139,6 +139,7 @@ inline static CGFloat RCTBaseSizeForDynamicTypeRamp(const DynamicTypeRamp &dynam
139
139
  inline static CGFloat RCTEffectiveFontSizeMultiplierFromTextAttributes(const TextAttributes &textAttributes)
140
140
  {
141
141
  if (textAttributes.allowFontScaling.value_or(true)) {
142
+ CGFloat fontSizeMultiplier = !isnan(textAttributes.fontSizeMultiplier) ? textAttributes.fontSizeMultiplier : 1.0;
142
143
  if (textAttributes.dynamicTypeRamp.has_value()) {
143
144
  DynamicTypeRamp dynamicTypeRamp = textAttributes.dynamicTypeRamp.value();
144
145
  UIFontMetrics *fontMetrics =
@@ -146,10 +147,11 @@ inline static CGFloat RCTEffectiveFontSizeMultiplierFromTextAttributes(const Tex
146
147
  // Using a specific font size reduces rounding errors from -scaledValueForValue:
147
148
  CGFloat requestedSize =
148
149
  isnan(textAttributes.fontSize) ? RCTBaseSizeForDynamicTypeRamp(dynamicTypeRamp) : textAttributes.fontSize;
149
- return [fontMetrics scaledValueForValue:requestedSize] / requestedSize;
150
- } else {
151
- return textAttributes.fontSizeMultiplier;
150
+ fontSizeMultiplier = [fontMetrics scaledValueForValue:requestedSize] / requestedSize;
152
151
  }
152
+ CGFloat maxFontSizeMultiplier =
153
+ !isnan(textAttributes.maxFontSizeMultiplier) ? textAttributes.maxFontSizeMultiplier : 0.0;
154
+ return maxFontSizeMultiplier >= 1.0 ? fminf(maxFontSizeMultiplier, fontSizeMultiplier) : fontSizeMultiplier;
153
155
  } else {
154
156
  return 1.0;
155
157
  }
@@ -307,8 +309,12 @@ NSMutableDictionary<NSAttributedStringKey, id> *RCTNSTextAttributesFromTextAttri
307
309
  auto textShadowOffset = textAttributes.textShadowOffset.value();
308
310
  NSShadow *shadow = [NSShadow new];
309
311
  shadow.shadowOffset = CGSize{textShadowOffset.width, textShadowOffset.height};
310
- shadow.shadowBlurRadius = textAttributes.textShadowRadius;
311
- shadow.shadowColor = RCTUIColorFromSharedColor(textAttributes.textShadowColor);
312
+ if (!isnan(textAttributes.textShadowRadius)) {
313
+ shadow.shadowBlurRadius = textAttributes.textShadowRadius;
314
+ }
315
+ if (textAttributes.textShadowColor) {
316
+ shadow.shadowColor = RCTUIColorFromSharedColor(textAttributes.textShadowColor);
317
+ }
312
318
  attributes[NSShadowAttributeName] = shadow;
313
319
  }
314
320
 
@@ -146,6 +146,19 @@ static UIFont *RCTDefaultFontWithFontProperties(RCTFontProperties fontProperties
146
146
  return font;
147
147
  }
148
148
 
149
+ static UIFontDescriptorSystemDesign RCTGetFontDescriptorSystemDesign(NSString *family)
150
+ {
151
+ static NSDictionary<NSString *, NSString *> *systemDesigns = @{
152
+ @"system-ui" : UIFontDescriptorSystemDesignDefault,
153
+ @"ui-sans-serif" : UIFontDescriptorSystemDesignDefault,
154
+ @"ui-serif" : UIFontDescriptorSystemDesignSerif,
155
+ @"ui-rounded" : UIFontDescriptorSystemDesignRounded,
156
+ @"ui-monospace" : UIFontDescriptorSystemDesignMonospaced
157
+ };
158
+
159
+ return systemDesigns[family];
160
+ }
161
+
149
162
  UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties)
150
163
  {
151
164
  RCTFontProperties defaultFontProperties = RCTDefaultFontProperties();
@@ -154,7 +167,16 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties)
154
167
  assert(!isnan(fontProperties.sizeMultiplier));
155
168
  CGFloat effectiveFontSize = fontProperties.sizeMultiplier * fontProperties.size;
156
169
  UIFont *font;
157
- if ([fontProperties.family isEqualToString:defaultFontProperties.family]) {
170
+ UIFontDescriptorSystemDesign design = RCTGetFontDescriptorSystemDesign([fontProperties.family lowercaseString]);
171
+ if (design) {
172
+ // Create a system font which `-fontDescriptorWithDesign:` asks for
173
+ // (see:
174
+ // https://developer.apple.com/documentation/uikit/uifontdescriptor/3151797-fontdescriptorwithdesign?language=objc)
175
+ // It's OK to use `RCTDefaultFontWithFontProperties` which creates a system font
176
+ font = RCTDefaultFontWithFontProperties(fontProperties);
177
+ UIFontDescriptor *descriptor = [font.fontDescriptor fontDescriptorWithDesign:design];
178
+ font = [UIFont fontWithDescriptor:descriptor size:effectiveFontSize];
179
+ } else if ([fontProperties.family isEqualToString:defaultFontProperties.family]) {
158
180
  // Handle system font as special case. This ensures that we preserve
159
181
  // the specific metrics of the standard system font as closely as possible.
160
182
  font = RCTDefaultFontWithFontProperties(fontProperties);
@@ -203,27 +203,15 @@ static NSLineBreakMode RCTNSLineBreakModeFromEllipsizeMode(EllipsizeMode ellipsi
203
203
  facebook::react::Point{usedRect.origin.x, usedRect.origin.y},
204
204
  facebook::react::Size{usedRect.size.width, usedRect.size.height}};
205
205
 
206
- if (ReactNativeFeatureFlags::enableAlignItemsBaselineOnFabricIOS()) {
207
- CGFloat baseline =
208
- [layoutManager locationForGlyphAtIndex:range.location].y;
209
- auto line = LineMeasurement{
210
- std::string([renderedString UTF8String]),
211
- rect,
212
- overallRect.size.height - baseline,
213
- font.capHeight,
214
- baseline,
215
- font.xHeight};
216
- blockParagraphLines->push_back(line);
217
- } else {
218
- auto line = LineMeasurement{
219
- std::string([renderedString UTF8String]),
220
- rect,
221
- -font.descender,
222
- font.capHeight,
223
- font.ascender,
224
- font.xHeight};
225
- blockParagraphLines->push_back(line);
226
- }
206
+ CGFloat baseline = [layoutManager locationForGlyphAtIndex:range.location].y;
207
+ auto line = LineMeasurement{
208
+ std::string([renderedString UTF8String]),
209
+ rect,
210
+ overallRect.size.height - baseline,
211
+ font.capHeight,
212
+ baseline,
213
+ font.xHeight};
214
+ blockParagraphLines->push_back(line);
227
215
  }];
228
216
  return paragraphLines;
229
217
  }
@@ -391,18 +379,9 @@ static NSLineBreakMode RCTNSLineBreakModeFromEllipsizeMode(EllipsizeMode ellipsi
391
379
  CGRect glyphRect = [layoutManager boundingRectForGlyphRange:range inTextContainer:textContainer];
392
380
 
393
381
  CGRect frame;
394
- if (ReactNativeFeatureFlags::enableAlignItemsBaselineOnFabricIOS()) {
395
- CGFloat baseline = [layoutManager locationForGlyphAtIndex:range.location].y;
382
+ CGFloat baseline = [layoutManager locationForGlyphAtIndex:range.location].y;
396
383
 
397
- frame = {{glyphRect.origin.x, glyphRect.origin.y + baseline - attachmentSize.height}, attachmentSize};
398
- } else {
399
- UIFont *font = [textStorage attribute:NSFontAttributeName atIndex:range.location effectiveRange:nil];
400
-
401
- frame = {
402
- {glyphRect.origin.x,
403
- glyphRect.origin.y + glyphRect.size.height - attachmentSize.height + font.descender},
404
- attachmentSize};
405
- }
384
+ frame = {{glyphRect.origin.x, glyphRect.origin.y + baseline - attachmentSize.height}, attachmentSize};
406
385
 
407
386
  auto rect = facebook::react::Rect{
408
387
  facebook::react::Point{frame.origin.x, frame.origin.y},
@@ -5,23 +5,23 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- #include "TextLayoutManager.h"
9
- #include <react/renderer/telemetry/TransactionTelemetry.h>
10
- #include <react/utils/ManagedObjectWrapper.h>
11
-
8
+ #import "TextLayoutManager.h"
12
9
  #import "RCTTextLayoutManager.h"
13
10
 
11
+ #import <react/renderer/telemetry/TransactionTelemetry.h>
12
+ #import <react/utils/ManagedObjectWrapper.h>
13
+
14
14
  namespace facebook::react {
15
15
 
16
16
  TextLayoutManager::TextLayoutManager(const ContextContainer::Shared &contextContainer)
17
17
  {
18
- self_ = wrapManagedObject([RCTTextLayoutManager new]);
18
+ nativeTextLayoutManager_ = wrapManagedObject([RCTTextLayoutManager new]);
19
19
  }
20
20
 
21
21
  std::shared_ptr<void> TextLayoutManager::getNativeTextLayoutManager() const
22
22
  {
23
- assert(self_ && "Stored NativeTextLayoutManager must not be null.");
24
- return self_;
23
+ assert(nativeTextLayoutManager_ && "Stored NativeTextLayoutManager must not be null.");
24
+ return nativeTextLayoutManager_;
25
25
  }
26
26
 
27
27
  TextMeasurement TextLayoutManager::measure(
@@ -30,7 +30,7 @@ TextMeasurement TextLayoutManager::measure(
30
30
  const TextLayoutContext &layoutContext,
31
31
  const LayoutConstraints &layoutConstraints) const
32
32
  {
33
- RCTTextLayoutManager *textLayoutManager = (RCTTextLayoutManager *)unwrapManagedObject(self_);
33
+ RCTTextLayoutManager *textLayoutManager = (RCTTextLayoutManager *)unwrapManagedObject(nativeTextLayoutManager_);
34
34
 
35
35
  auto measurement = TextMeasurement{};
36
36
 
@@ -92,7 +92,7 @@ LinesMeasurements TextLayoutManager::measureLines(
92
92
  react_native_assert(attributedStringBox.getMode() == AttributedStringBox::Mode::Value);
93
93
  const auto &attributedString = attributedStringBox.getValue();
94
94
 
95
- RCTTextLayoutManager *textLayoutManager = (RCTTextLayoutManager *)unwrapManagedObject(self_);
95
+ RCTTextLayoutManager *textLayoutManager = (RCTTextLayoutManager *)unwrapManagedObject(nativeTextLayoutManager_);
96
96
 
97
97
  auto measurement =
98
98
  lineMeasureCache_.get({attributedString, paragraphAttributes, size}, [&](const LineMeasureCacheKey &key) {
@@ -105,18 +105,4 @@ LinesMeasurements TextLayoutManager::measureLines(
105
105
  return measurement;
106
106
  }
107
107
 
108
- Float TextLayoutManager::baseline(
109
- const AttributedStringBox &attributedStringBox,
110
- const ParagraphAttributes &paragraphAttributes,
111
- const Size &size) const
112
- {
113
- auto lines = this->measureLines(attributedStringBox, paragraphAttributes, size);
114
-
115
- if (!lines.empty()) {
116
- return lines[0].ascender;
117
- } else {
118
- return 0;
119
- }
120
- }
121
-
122
108
  } // namespace facebook::react