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

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 (655) 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 +266 -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/Core/setUpDeveloperTools.js +2 -3
  46. package/Libraries/EventEmitter/RCTEventEmitter.js +2 -6
  47. package/Libraries/Image/AssetSourceResolver.js +11 -0
  48. package/Libraries/Image/RCTImageLoader.mm +9 -1
  49. package/Libraries/Image/RCTImageView.mm +3 -3
  50. package/Libraries/Inspector/BorderBox.js +26 -14
  51. package/Libraries/Inspector/BoxInspector.js +60 -42
  52. package/Libraries/Inspector/ElementBox.js +55 -48
  53. package/Libraries/Inspector/StyleInspector.js +36 -30
  54. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  55. package/Libraries/Lists/FlatList.d.ts +1 -1
  56. package/Libraries/Modal/Modal.js +2 -0
  57. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +1 -1
  58. package/Libraries/NativeComponent/BaseViewConfig.android.js +0 -2
  59. package/Libraries/NativeComponent/BaseViewConfig.ios.js +0 -2
  60. package/Libraries/Network/RCTNetworking.android.js +24 -16
  61. package/Libraries/Network/RCTNetworking.ios.js +1 -46
  62. package/Libraries/Network/RCTNetworking.js.flow +1 -46
  63. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
  64. package/Libraries/Pressability/Pressability.js +2 -2
  65. package/Libraries/ReactNative/UIManagerProperties.js +3 -1
  66. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15829 -26461
  67. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3907 -2560
  68. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4399 -2878
  69. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16103 -26908
  70. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +4034 -2695
  71. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4535 -3045
  72. package/Libraries/Renderer/shims/ReactNativeTypes.js +5 -6
  73. package/Libraries/StyleSheet/processTransform.js +6 -0
  74. package/Libraries/Text/Text/NSTextStorage+FontScaling.m +9 -0
  75. package/Libraries/Text/Text.d.ts +6 -1
  76. package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +2 -0
  77. package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +26 -0
  78. package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +2 -0
  79. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +26 -1
  80. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +2 -0
  81. package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +1 -0
  82. package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +26 -0
  83. package/Libraries/Text/TextProps.js +2 -2
  84. package/Libraries/Utilities/BackHandler.android.js +5 -4
  85. package/Libraries/Utilities/BackHandler.ios.js +3 -4
  86. package/Libraries/Utilities/HMRClient.js +0 -28
  87. package/Libraries/Utilities/HMRClientProdShim.js +0 -1
  88. package/README-core.md +2 -2
  89. package/React/Base/RCTConvert.mm +3 -1
  90. package/React/Base/RCTVersion.m +2 -2
  91. package/React/CoreModules/RCTDevSettings.h +0 -1
  92. package/React/CoreModules/RCTDeviceInfo.mm +4 -0
  93. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +3 -5
  94. package/React/DevSupport/RCTInspectorDevServerHelper.mm +1 -6
  95. package/React/DevSupport/RCTPausedInDebuggerOverlayController.mm +3 -5
  96. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +0 -24
  97. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +0 -28
  98. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +90 -57
  99. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +241 -104
  100. package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryContentView.mm +0 -5
  101. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +39 -10
  102. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +3 -3
  103. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +107 -34
  104. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +5 -0
  105. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +1 -0
  106. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +12 -4
  107. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +3 -0
  108. package/React/Fabric/Mounting/RCTMountingManager.mm +6 -9
  109. package/React/Fabric/RCTScheduler.mm +1 -1
  110. package/React/I18n/strings/da.lproj/fbt_language_pack.bin +0 -0
  111. package/React/Modules/RCTUIManager.mm +1 -2
  112. package/React/React-RCTFBReactNativeSpec.podspec +1 -0
  113. package/React/React-RCTFabric.podspec +3 -2
  114. package/React/Tests/Text/RCTParagraphComponentViewTests.mm +12 -12
  115. package/React/Views/RCTComponentData.mm +1 -5
  116. package/React/Views/RCTLayout.m +3 -0
  117. package/React/Views/RCTShadowView.h +3 -3
  118. package/React/Views/RCTShadowView.m +52 -20
  119. package/React/Views/RCTTVView.m +5 -2
  120. package/React/Views/RCTView.m +6 -2
  121. package/React/Views/RCTViewManager.m +0 -7
  122. package/React/Views/ScrollView/RCTScrollView.m +109 -45
  123. package/React-Core.podspec +1 -1
  124. package/ReactAndroid/api/ReactAndroid.api +123 -227
  125. package/ReactAndroid/build.gradle.kts +8 -13
  126. package/ReactAndroid/cmake-utils/ReactNative-application.cmake +13 -3
  127. package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +2 -0
  128. package/ReactAndroid/external-artifacts/build.gradle.kts +5 -5
  129. package/ReactAndroid/gradle.properties +3 -3
  130. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesMemoryDumper.java → HermesMemoryDumper.kt} +5 -5
  131. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/{HermesSamplingProfiler.java → HermesSamplingProfiler.kt} +8 -10
  132. package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +12 -59
  133. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +8 -0
  134. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +8 -0
  135. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +37 -0
  136. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +12 -1
  137. package/ReactAndroid/src/main/java/com/facebook/react/{ReactPackageLogger.java → ReactPackageLogger.kt} +3 -3
  138. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +8 -8
  139. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +1 -1
  140. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -3
  141. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +6 -0
  142. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.kt +5 -3
  143. package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.kt +4 -8
  144. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +11 -5
  145. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +0 -7
  146. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +1 -3
  147. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +6 -1
  148. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +11 -23
  149. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +3 -30
  150. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/HMRClient.java +4 -1
  151. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  152. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +4 -4
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +21 -26
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -14
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.java +2 -11
  156. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +88 -0
  157. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +6 -6
  158. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +39 -8
  159. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +7 -7
  160. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +21 -21
  161. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +36 -36
  162. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +8 -8
  163. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +10 -10
  164. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +40 -40
  165. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +8 -8
  166. package/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +3 -3
  167. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.kt +55 -0
  168. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.kt +185 -0
  169. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/{HeadlessJsTaskEventListener.java → HeadlessJsTaskEventListener.kt} +5 -6
  170. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.kt +20 -0
  171. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/LinearCountingRetryPolicy.kt +4 -4
  172. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/NoRetryPolicy.kt +7 -8
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +8 -5
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.kt +11 -17
  175. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +1 -1
  176. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.kt +16 -0
  177. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.kt +107 -0
  178. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +18 -19
  179. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.kt +48 -0
  180. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  181. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +397 -0
  182. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +0 -10
  183. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +1 -1
  184. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +8 -8
  185. package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +4 -10
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +4 -0
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +13 -12
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +15 -12
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ComponentNameResolver.java → ComponentNameResolver.kt} +4 -5
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/GuardedFrameCallback.kt +5 -2
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +0 -5
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.kt +21 -0
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.kt +18 -0
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{RootView.java → RootView.kt} +11 -12
  195. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewManager.kt +1 -1
  196. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{UIBlock.java → UIBlock.kt} +3 -3
  197. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -5
  198. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +25 -0
  199. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +1 -1
  200. package/{Libraries/AppDelegate/RCTAppDelegate+Protected.h → ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerWithGeneratedInterface.kt} +3 -8
  201. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +12 -5
  202. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +46 -80
  203. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BorderDrawable.kt +5 -5
  204. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +5 -5
  205. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/{BatchEventDispatchedListener.java → BatchEventDispatchedListener.kt} +3 -3
  206. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.kt +46 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.kt +40 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +2 -6
  209. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.kt +19 -0
  210. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.kt +23 -0
  211. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +241 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.kt +193 -0
  213. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +44 -0
  214. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +37 -0
  215. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.kt +130 -0
  216. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.kt +1 -1
  217. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.kt +77 -0
  218. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +196 -0
  219. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +16 -17
  220. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +5 -0
  221. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +56 -3
  222. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt +11 -0
  223. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/{FpsListener.java → FpsListener.kt} +4 -4
  224. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +16 -0
  225. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +3 -3
  226. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.kt +136 -0
  227. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +2 -2
  228. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +152 -0
  229. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchShadowNode.kt +52 -0
  230. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +1 -7
  231. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +16 -2
  232. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +8 -13
  233. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.kt +50 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ShadowStyleSpan.kt +1 -1
  235. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +1 -9
  236. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +111 -0
  237. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +91 -20
  238. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +14 -2
  239. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +22 -1
  240. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +43 -1
  241. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +86 -2
  242. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +44 -2
  243. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +7 -1
  244. package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -6
  245. package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +6 -1
  246. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +96 -11
  247. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +9 -0
  248. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +1 -0
  249. package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +0 -3
  250. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
  251. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +41 -25
  252. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +0 -2
  253. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +63 -91
  254. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -7
  255. package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +9 -9
  256. package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +6 -10
  257. package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +0 -2
  258. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +4 -0
  259. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +1 -0
  260. package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +0 -1
  261. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +49 -49
  262. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +11 -11
  263. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +1 -4
  264. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +0 -1
  265. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +0 -1
  266. package/ReactAndroid/src/main/jni/react/jni/JSLogging.cpp +4 -9
  267. package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +0 -4
  268. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +3 -4
  269. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.cpp +3 -4
  270. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +6 -0
  271. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +1 -0
  272. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +6 -0
  273. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +1 -0
  274. package/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp +3 -7
  275. package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +0 -2
  276. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +0 -1
  277. package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +0 -1
  278. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +2 -8
  279. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +2 -8
  280. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -1
  281. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp +18 -17
  282. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +1 -1
  283. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +1 -1
  284. package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +0 -2
  285. package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +0 -1
  286. package/ReactAndroid/src/main/res/views/view/values/ids.xml +5 -0
  287. package/ReactCommon/React-Fabric.podspec +8 -0
  288. package/ReactCommon/React-FabricComponents.podspec +2 -2
  289. package/ReactCommon/React-FabricImage.podspec +4 -1
  290. package/ReactCommon/cxxreact/CxxNativeModule.cpp +3 -3
  291. package/ReactCommon/cxxreact/Instance.cpp +6 -6
  292. package/ReactCommon/cxxreact/JSBigString.cpp +1 -1
  293. package/ReactCommon/cxxreact/JSExecutor.cpp +4 -2
  294. package/ReactCommon/cxxreact/ModuleRegistry.cpp +6 -6
  295. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -3
  296. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  297. package/ReactCommon/cxxreact/SystraceSection.h +8 -141
  298. package/ReactCommon/cxxreact/TraceSection.h +181 -0
  299. package/ReactCommon/cxxreact/tests/jsbigstring.cpp +19 -0
  300. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -2
  301. package/ReactCommon/jsc/JSCRuntime.cpp +0 -2
  302. package/ReactCommon/jsc/React-jsc.podspec +1 -1
  303. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +27 -19
  304. package/ReactCommon/jserrorhandler/JsErrorHandler.h +5 -3
  305. package/ReactCommon/jserrorhandler/StackTraceParser.cpp +16 -16
  306. package/ReactCommon/jserrorhandler/StackTraceParser.h +1 -1
  307. package/ReactCommon/jserrorhandler/tests/StackTraceParserTest.cpp +252 -246
  308. package/ReactCommon/jsi/jsi/CMakeLists.txt +0 -3
  309. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -1
  310. package/ReactCommon/jsi/jsi/JSIDynamic.h +1 -1
  311. package/ReactCommon/jsi/jsi/decorator.h +61 -0
  312. package/ReactCommon/jsi/jsi/jsi-inl.h +4 -0
  313. package/ReactCommon/jsi/jsi/jsi.cpp +37 -0
  314. package/ReactCommon/jsi/jsi/jsi.h +81 -0
  315. package/ReactCommon/jsi/jsi/test/testlib.cpp +88 -0
  316. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +9 -9
  317. package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -1
  318. package/ReactCommon/jsinspector-modern/HostAgent.cpp +3 -7
  319. package/ReactCommon/jsinspector-modern/HostTarget.cpp +22 -1
  320. package/ReactCommon/jsinspector-modern/HostTarget.h +1 -1
  321. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +19 -4
  322. package/ReactCommon/jsinspector-modern/InspectorFlags.h +14 -0
  323. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +21 -10
  324. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +12 -11
  325. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +2 -16
  326. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +14 -14
  327. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.h +7 -13
  328. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.cpp +1 -1
  329. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.cpp +1 -3
  330. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +3 -3
  331. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +1 -1
  332. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +26 -0
  333. package/ReactCommon/jsinspector-modern/tracing/CdpTracing.h +21 -0
  334. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +187 -0
  335. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +126 -0
  336. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +56 -0
  337. package/ReactCommon/react/featureflags/CMakeLists.txt +3 -0
  338. package/ReactCommon/react/featureflags/React-featureflags.podspec +7 -0
  339. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +15 -15
  340. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +18 -18
  341. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +88 -88
  342. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +9 -9
  343. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +17 -17
  344. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +454 -0
  345. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +5 -5
  346. package/ReactCommon/react/featureflags/tests/ReactNativeFeatureFlagsDynamicProviderTest.cpp +78 -0
  347. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +2 -3
  348. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +3 -3
  349. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +13 -4
  350. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +1 -0
  351. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +19 -11
  352. package/ReactCommon/react/nativemodule/cputime/CPUTime.h +55 -0
  353. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.cpp +35 -0
  354. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.h +28 -0
  355. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +18 -18
  356. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +8 -8
  357. package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
  358. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp +5 -8
  359. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -3
  360. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +22 -43
  361. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +0 -15
  362. package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
  363. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +22 -2
  364. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +9 -4
  365. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
  366. package/ReactCommon/react/renderer/animations/CMakeLists.txt +0 -1
  367. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +1 -1
  368. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +25 -19
  369. package/ReactCommon/react/renderer/animations/primitives.h +1 -1
  370. package/ReactCommon/react/renderer/animations/utils.h +3 -4
  371. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +31 -9
  372. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +85 -29
  373. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -0
  374. package/ReactCommon/react/renderer/attributedstring/conversions.h +5 -0
  375. package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +0 -1
  376. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp +4 -1
  377. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +2 -0
  378. package/ReactCommon/react/renderer/components/image/ImageEventEmitter.cpp +2 -2
  379. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +5 -5
  380. package/ReactCommon/react/renderer/components/image/ImageProps.h +1 -1
  381. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +38 -10
  382. package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +1 -1
  383. package/ReactCommon/react/renderer/components/image/ImageState.cpp +2 -3
  384. package/ReactCommon/react/renderer/components/image/ImageState.h +9 -6
  385. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -4
  386. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +7 -0
  387. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +2 -2
  388. package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +2 -2
  389. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +33 -0
  390. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +17 -0
  391. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +3 -2
  392. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +2 -1
  393. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -4
  394. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +7 -0
  395. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +12 -0
  396. package/ReactCommon/react/renderer/{uimanager/bindingUtils.h → components/text/ParagraphComponentDescriptor.cpp} +2 -8
  397. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +10 -7
  398. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +23 -0
  399. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +8 -1
  400. package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +243 -0
  401. package/ReactCommon/react/renderer/components/textinput/TextInputState.cpp +71 -0
  402. package/ReactCommon/react/renderer/components/textinput/{platform/ios/react/renderer/components/iostextinput/TextInputState.h → TextInputState.h} +27 -7
  403. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +6 -13
  404. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +0 -2
  405. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +145 -144
  406. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +27 -29
  407. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +4 -5
  408. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +0 -26
  409. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h +0 -6
  410. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp +0 -147
  411. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +5 -57
  412. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +60 -70
  413. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +3 -3
  414. package/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +18 -0
  415. package/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +36 -0
  416. package/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +28 -0
  417. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +4 -0
  418. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -1
  419. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +21 -22
  420. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
  421. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +3 -1
  422. package/ReactCommon/react/renderer/components/view/conversions.h +117 -43
  423. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +3 -2
  424. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +3 -1
  425. package/ReactCommon/react/renderer/components/view/primitives.h +1 -1
  426. package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +12 -12
  427. package/ReactCommon/react/renderer/core/CMakeLists.txt +0 -1
  428. package/ReactCommon/react/renderer/core/ComponentDescriptor.cpp +4 -2
  429. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +4 -2
  430. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +17 -2
  431. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +26 -0
  432. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +4 -0
  433. package/ReactCommon/react/renderer/core/EventEmitter.cpp +3 -3
  434. package/ReactCommon/react/renderer/core/Props.cpp +16 -5
  435. package/ReactCommon/react/renderer/core/Props.h +11 -4
  436. package/ReactCommon/react/renderer/core/RawProps.cpp +30 -5
  437. package/ReactCommon/react/renderer/core/RawProps.h +10 -1
  438. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +7 -2
  439. package/ReactCommon/react/renderer/core/RawPropsParser.h +7 -1
  440. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +1 -0
  441. package/ReactCommon/react/renderer/core/RawValue.h +315 -22
  442. package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +95 -4
  443. package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +19 -4
  444. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +7 -1
  445. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +7 -5
  446. package/ReactCommon/react/renderer/graphics/Transform.cpp +11 -2
  447. package/ReactCommon/react/renderer/graphics/Transform.h +2 -1
  448. package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +4 -2
  449. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +7 -0
  450. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +43 -0
  451. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +36 -0
  452. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +43 -0
  453. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +94 -0
  454. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +101 -0
  455. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageManager.cpp +9 -1
  456. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequestParams.h +30 -0
  457. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageManager.mm +9 -0
  458. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h +30 -0
  459. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImageManager.mm +2 -2
  460. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +187 -152
  461. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +4 -5
  462. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +10 -16
  463. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -12
  464. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +44 -14
  465. package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.cpp +8 -4
  466. package/ReactCommon/react/renderer/mounting/stubs/stubs.cpp +1 -1
  467. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +116 -193
  468. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +0 -3
  469. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +7 -4
  470. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +2 -1
  471. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +7 -8
  472. package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +6 -6
  473. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +3 -1
  474. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +2 -0
  475. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +11 -11
  476. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +14 -15
  477. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +4 -3
  478. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +0 -1
  479. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +6 -37
  480. package/ReactCommon/react/renderer/scheduler/Scheduler.h +0 -3
  481. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +15 -11
  482. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +1 -0
  483. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +56 -2
  484. package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +23 -3
  485. package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -2
  486. package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -0
  487. package/ReactCommon/react/renderer/textlayoutmanager/{platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h → TextLayoutManager.h} +18 -17
  488. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +2 -3
  489. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +77 -89
  490. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +6 -10
  491. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +11 -5
  492. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +23 -1
  493. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +11 -32
  494. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +9 -23
  495. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.cpp +88 -0
  496. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +50 -0
  497. package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +0 -1
  498. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +3 -40
  499. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +23 -18
  500. package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -0
  501. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -31
  502. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +0 -4
  503. package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +10 -10
  504. package/ReactCommon/react/runtime/CMakeLists.txt +0 -1
  505. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -2
  506. package/ReactCommon/react/runtime/ReactInstance.cpp +43 -57
  507. package/ReactCommon/react/runtime/TimerManager.cpp +4 -4
  508. package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +5 -1
  509. package/ReactCommon/react/runtime/hermes/HermesInstance.h +0 -2
  510. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +2 -6
  511. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +6 -15
  512. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +3 -1
  513. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +15 -15
  514. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +5 -4
  515. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +0 -3
  516. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +33 -17
  517. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +8 -2
  518. package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.cpp → ReactPerfettoLogger.cpp} +25 -24
  519. package/ReactCommon/reactperflogger/reactperflogger/{ReactPerfLogger.h → ReactPerfettoLogger.h} +9 -9
  520. package/ReactCommon/yoga/yoga/YGEnums.cpp +6 -0
  521. package/ReactCommon/yoga/yoga/YGEnums.h +4 -1
  522. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +124 -24
  523. package/ReactCommon/yoga/yoga/YGNodeStyle.h +22 -1
  524. package/ReactCommon/yoga/yoga/YGValue.h +3 -0
  525. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +6 -6
  526. package/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +2 -2
  527. package/ReactCommon/yoga/yoga/algorithm/FlexLine.h +1 -1
  528. package/ReactCommon/yoga/yoga/algorithm/PixelGrid.cpp +9 -6
  529. package/ReactCommon/yoga/yoga/enums/Unit.h +4 -1
  530. package/ReactCommon/yoga/yoga/node/Node.cpp +8 -8
  531. package/ReactCommon/yoga/yoga/node/Node.h +5 -5
  532. package/ReactCommon/yoga/yoga/style/Style.h +14 -12
  533. package/ReactCommon/yoga/yoga/style/StyleLength.h +14 -7
  534. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +139 -0
  535. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  536. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +60 -3
  537. package/gradle/libs.versions.toml +6 -2
  538. package/index.js +5 -0
  539. package/package.json +17 -15
  540. package/react-native.config.js +6 -0
  541. package/scripts/cocoapods/codegen_utils.rb +4 -4
  542. package/scripts/cocoapods/new_architecture.rb +3 -3
  543. package/scripts/cocoapods/utils.rb +4 -3
  544. package/scripts/codegen/generate-artifacts-executor.js +8 -4
  545. package/scripts/generate-codegen-artifacts.js +6 -1
  546. package/scripts/react-native-xcode.sh +1 -1
  547. package/scripts/react_native_pods.rb +3 -3
  548. package/scripts/xcode/ccache-clang++.sh +1 -1
  549. package/scripts/xcode/ccache-clang.sh +1 -1
  550. package/sdks/.hermesversion +1 -1
  551. package/sdks/hermes-engine/hermes-utils.rb +2 -2
  552. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +1 -1
  553. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  554. package/sdks/hermesc/osx-bin/hermes +0 -0
  555. package/sdks/hermesc/osx-bin/hermesc +0 -0
  556. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  557. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  558. package/src/private/featureflags/README.md +5 -0
  559. package/src/private/featureflags/ReactNativeFeatureFlags.js +32 -26
  560. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -5
  561. package/src/private/renderer/errorhandling/ErrorHandlers.js +12 -55
  562. package/src/private/specs/modules/{NativeJSCSamplingProfiler.js → NativeCPUTime.js} +7 -2
  563. package/src/private/specs/modules/NativeFantom.js +37 -0
  564. package/src/private/utilities/ensureInstance.js +21 -0
  565. package/src/private/webapis/dom/nodes/ReactNativeElement.js +49 -6
  566. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +17 -9
  567. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +11 -11
  568. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
  569. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -1
  570. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  571. package/src/private/webapis/performance/Performance.js +0 -12
  572. package/src/private/webapis/performance/specs/NativePerformance.js +0 -11
  573. package/types/index.d.ts +1 -0
  574. package/types/public/ReactNativeTVTypes.d.ts +49 -51
  575. package/Libraries/HeapCapture/HeapCapture.js +0 -29
  576. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -13
  577. package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -13
  578. package/Libraries/Performance/SamplingProfiler.js +0 -39
  579. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +0 -334
  580. package/React/Inspector/RCTInspectorPackagerConnection.m +0 -325
  581. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +0 -50
  582. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +0 -314
  583. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSCHeapCapture.java +0 -76
  584. package/ReactAndroid/src/main/java/com/facebook/react/fabric/EmptyReactNativeConfig.kt +0 -36
  585. package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.kt +0 -33
  586. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.kt +0 -54
  587. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +0 -83
  588. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskConfig.java +0 -121
  589. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +0 -214
  590. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskRetryPolicy.java +0 -22
  591. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/XmlFormat.kt +0 -143
  592. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CookieJarContainer.java +0 -17
  593. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +0 -124
  594. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ReactCookieJarContainer.java +0 -58
  595. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +0 -422
  596. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +0 -98
  597. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +0 -25
  598. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactPointerEventsView.java +0 -20
  599. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +0 -45
  600. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +0 -37
  601. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherListener.java +0 -19
  602. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherProvider.java +0 -24
  603. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +0 -257
  604. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +0 -210
  605. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +0 -43
  606. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +0 -39
  607. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +0 -165
  608. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventCoalescingKeyHelper.java +0 -85
  609. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +0 -204
  610. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +0 -161
  611. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +0 -232
  612. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageViewManager.java +0 -70
  613. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/LegacyLineHeightSpan.kt +0 -69
  614. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +0 -114
  615. package/ReactAndroid/src/main/jni/first-party/fb/CMakeLists.txt +0 -31
  616. package/ReactAndroid/src/main/jni/first-party/fb/assert.cpp +0 -39
  617. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ALog.h +0 -82
  618. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Build.h +0 -31
  619. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Countable.h +0 -45
  620. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Doxyfile +0 -18
  621. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +0 -93
  622. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ProgramLocation.h +0 -58
  623. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +0 -266
  624. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +0 -37
  625. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ThreadLocal.h +0 -112
  626. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/assert.h +0 -43
  627. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/log.h +0 -350
  628. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/noncopyable.h +0 -20
  629. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/nonmovable.h +0 -20
  630. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/visibility.h +0 -10
  631. package/ReactAndroid/src/main/jni/first-party/fb/log.cpp +0 -102
  632. package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.cpp +0 -47
  633. package/ReactAndroid/src/main/jni/react/fabric/JEmptyReactNativeConfig.h +0 -38
  634. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.cpp +0 -41
  635. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.h +0 -35
  636. package/ReactAndroid/src/main/jni/react/perftests/OnLoad.cpp +0 -243
  637. package/ReactAndroid/src/main/jni/third-party/jsc/CMakeLists.txt +0 -15
  638. package/ReactCommon/React-nativeconfig.podspec +0 -36
  639. package/ReactCommon/cxxreact/tests/main.cpp +0 -15
  640. package/ReactCommon/react/config/CMakeLists.txt +0 -20
  641. package/ReactCommon/react/config/ReactNativeConfig.cpp +0 -28
  642. package/ReactCommon/react/config/ReactNativeConfig.h +0 -42
  643. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -95
  644. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.h +0 -80
  645. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputState.cpp +0 -10
  646. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +0 -78
  647. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +0 -69
  648. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +0 -123
  649. package/ReactCommon/react/renderer/uimanager/bindingUtils.cpp +0 -79
  650. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +0 -413
  651. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +0 -181
  652. package/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js +0 -327
  653. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewComponentDescriptor.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewComponentDescriptor.h} +0 -0
  654. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.cpp → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.cpp} +0 -0
  655. /package/ReactCommon/react/renderer/components/scrollview/{AndroidHorizontalScrollContentViewShadowNode.h → platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h} +0 -0
@@ -0,0 +1,71 @@
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 "TextInputState.h"
9
+
10
+ #ifdef ANDROID
11
+ #include <react/renderer/attributedstring/conversions.h>
12
+ #include <react/renderer/components/text/ParagraphState.h>
13
+ #endif
14
+
15
+ namespace facebook::react {
16
+
17
+ TextInputState::TextInputState(
18
+ AttributedStringBox attributedStringBox,
19
+ AttributedString reactTreeAttributedString,
20
+ ParagraphAttributes paragraphAttributes,
21
+ int64_t mostRecentEventCount)
22
+ : attributedStringBox(std::move(attributedStringBox)),
23
+ reactTreeAttributedString(std::move(reactTreeAttributedString)),
24
+ paragraphAttributes(std::move(paragraphAttributes)),
25
+ mostRecentEventCount(mostRecentEventCount) {}
26
+
27
+ #ifdef ANDROID
28
+ TextInputState::TextInputState(
29
+ const TextInputState& previousState,
30
+ const folly::dynamic& data)
31
+ : attributedStringBox(previousState.attributedStringBox),
32
+ reactTreeAttributedString(previousState.reactTreeAttributedString),
33
+ paragraphAttributes(previousState.paragraphAttributes),
34
+ mostRecentEventCount(data.getDefault(
35
+ "mostRecentEventCount",
36
+ previousState.mostRecentEventCount)
37
+ .getInt()),
38
+ cachedAttributedStringId(data.getDefault(
39
+ "opaqueCacheId",
40
+ previousState.cachedAttributedStringId)
41
+ .getInt()){};
42
+
43
+ folly::dynamic TextInputState::getDynamic() const {
44
+ LOG(FATAL) << "TextInputState state should only be read using MapBuffer";
45
+ }
46
+
47
+ MapBuffer TextInputState::getMapBuffer() const {
48
+ auto builder = MapBufferBuilder();
49
+ // If we have a `cachedAttributedStringId` we know that we're (1) not trying
50
+ // to set a new string, so we don't need to pass it along; (2) setState was
51
+ // called from Java to trigger a relayout with a `cachedAttributedStringId`,
52
+ // so Java has all up-to-date information and we should pass an empty map
53
+ // through.
54
+ if (cachedAttributedStringId == 0) {
55
+ // TODO truncation
56
+ builder.putInt(
57
+ TX_STATE_KEY_MOST_RECENT_EVENT_COUNT,
58
+ static_cast<int32_t>(mostRecentEventCount));
59
+
60
+ auto attStringMapBuffer = toMapBuffer(attributedStringBox.getValue());
61
+ builder.putMapBuffer(TX_STATE_KEY_ATTRIBUTED_STRING, attStringMapBuffer);
62
+ auto paMapBuffer = toMapBuffer(paragraphAttributes);
63
+ builder.putMapBuffer(TX_STATE_KEY_PARAGRAPH_ATTRIBUTES, paMapBuffer);
64
+
65
+ builder.putInt(TX_STATE_KEY_HASH, attStringMapBuffer.getInt(AS_KEY_HASH));
66
+ }
67
+ return builder.build();
68
+ }
69
+ #endif
70
+
71
+ } // namespace facebook::react
@@ -11,6 +11,11 @@
11
11
  #include <react/renderer/attributedstring/ParagraphAttributes.h>
12
12
  #include <react/renderer/textlayoutmanager/TextLayoutManager.h>
13
13
 
14
+ #ifdef ANDROID
15
+ #include <folly/dynamic.h>
16
+ #include <react/renderer/mapbuffer/MapBuffer.h>
17
+ #endif
18
+
14
19
  namespace facebook::react {
15
20
 
16
21
  /*
@@ -20,6 +25,20 @@ class TextInputState final {
20
25
  public:
21
26
  TextInputState() = default;
22
27
 
28
+ TextInputState(
29
+ AttributedStringBox attributedStringBox,
30
+ AttributedString reactTreeAttributedString,
31
+ ParagraphAttributes paragraphAttributes,
32
+ int64_t mostRecentEventCount);
33
+
34
+ #ifdef ANDROID
35
+ TextInputState(
36
+ const TextInputState& previousState,
37
+ const folly::dynamic& data);
38
+ folly::dynamic getDynamic() const;
39
+ MapBuffer getMapBuffer() const;
40
+ #endif
41
+
23
42
  /*
24
43
  * All content of <TextInput> component.
25
44
  */
@@ -40,14 +59,15 @@ class TextInputState final {
40
59
  */
41
60
  ParagraphAttributes paragraphAttributes;
42
61
 
43
- /*
44
- * `TextLayoutManager` provides a connection to platform-specific
45
- * text rendering infrastructure which is capable to render the
46
- * `AttributedString`.
47
- */
48
- std::shared_ptr<const TextLayoutManager> layoutManager;
62
+ int64_t mostRecentEventCount{0};
49
63
 
50
- size_t mostRecentEventCount{0};
64
+ #ifdef ANDROID
65
+ /**
66
+ * Stores an opaque cache ID used on the Java side to refer to a specific
67
+ * AttributedString for measurement purposes only.
68
+ */
69
+ int64_t cachedAttributedStringId{0};
70
+ #endif
51
71
  };
52
72
 
53
73
  } // namespace facebook::react
@@ -28,11 +28,9 @@ class AndroidTextInputComponentDescriptor final
28
28
  public:
29
29
  AndroidTextInputComponentDescriptor(
30
30
  const ComponentDescriptorParameters& parameters)
31
- : ConcreteComponentDescriptor<AndroidTextInputShadowNode>(parameters) {
32
- // Every single `AndroidTextInputShadowNode` will have a reference to
33
- // a shared `TextLayoutManager`.
34
- textLayoutManager_ = std::make_shared<TextLayoutManager>(contextContainer_);
35
- }
31
+ : ConcreteComponentDescriptor<AndroidTextInputShadowNode>(parameters),
32
+ textLayoutManager_(
33
+ std::make_shared<TextLayoutManager>(contextContainer_)) {}
36
34
 
37
35
  virtual State::Shared createInitialState(
38
36
  const Props::Shared& props,
@@ -70,8 +68,7 @@ class AndroidTextInputComponentDescriptor final
70
68
  }
71
69
 
72
70
  return std::make_shared<AndroidTextInputShadowNode::ConcreteState>(
73
- std::make_shared<const AndroidTextInputState>(AndroidTextInputState(
74
- 0, {}, {}, {}, theme.start, theme.end, theme.top, theme.bottom)),
71
+ std::make_shared<const TextInputState>(TextInputState({}, {}, {}, 0)),
75
72
  family);
76
73
  }
77
74
 
@@ -80,13 +77,10 @@ class AndroidTextInputComponentDescriptor final
80
77
  auto& textInputShadowNode =
81
78
  static_cast<AndroidTextInputShadowNode&>(shadowNode);
82
79
 
83
- // `ParagraphShadowNode` uses `TextLayoutManager` to measure text content
80
+ // `TextInputShadowNode` uses `TextLayoutManager` to measure text content
84
81
  // and communicate text rendering metrics to mounting layer.
85
82
  textInputShadowNode.setTextLayoutManager(textLayoutManager_);
86
83
 
87
- textInputShadowNode.setContextContainer(
88
- const_cast<ContextContainer*>(getContextContainer().get()));
89
-
90
84
  int surfaceId = textInputShadowNode.getSurfaceId();
91
85
  if (surfaceIdToThemePaddingMap_.find(surfaceId) !=
92
86
  surfaceIdToThemePaddingMap_.end()) {
@@ -152,7 +146,6 @@ class AndroidTextInputComponentDescriptor final
152
146
  }
153
147
 
154
148
  textInputShadowNode.dirtyLayout();
155
- textInputShadowNode.enableMeasurement();
156
149
 
157
150
  ConcreteComponentDescriptor::adopt(shadowNode);
158
151
  }
@@ -169,7 +162,7 @@ class AndroidTextInputComponentDescriptor final
169
162
  constexpr static auto UIManagerJavaDescriptor =
170
163
  "com/facebook/react/fabric/FabricUIManager";
171
164
 
172
- SharedTextLayoutManager textLayoutManager_;
165
+ const std::shared_ptr<TextLayoutManager> textLayoutManager_;
173
166
  mutable std::unordered_map<int, ThemePadding> surfaceIdToThemePaddingMap_;
174
167
  };
175
168
 
@@ -18,9 +18,7 @@
18
18
  #include <react/renderer/core/propsConversions.h>
19
19
  #include <react/renderer/graphics/Color.h>
20
20
  #include <react/renderer/imagemanager/primitives.h>
21
- #include <cinttypes>
22
21
  #include <unordered_map>
23
- #include <vector>
24
22
 
25
23
  namespace facebook::react {
26
24
 
@@ -7,10 +7,7 @@
7
7
 
8
8
  #include "AndroidTextInputShadowNode.h"
9
9
 
10
- #include <fbjni/fbjni.h>
11
- #include <react/debug/react_native_assert.h>
12
10
  #include <react/featureflags/ReactNativeFeatureFlags.h>
13
- #include <react/jni/ReadableNativeMap.h>
14
11
  #include <react/renderer/attributedstring/AttributedStringBox.h>
15
12
  #include <react/renderer/attributedstring/TextAttributes.h>
16
13
  #include <react/renderer/components/text/BaseTextShadowNode.h>
@@ -19,106 +16,106 @@
19
16
  #include <react/renderer/core/conversions.h>
20
17
  #include <react/renderer/textlayoutmanager/TextLayoutContext.h>
21
18
 
22
- #include <utility>
23
-
24
- using namespace facebook::jni;
25
-
26
19
  namespace facebook::react {
27
20
 
28
21
  extern const char AndroidTextInputComponentName[] = "AndroidTextInput";
29
22
 
30
- void AndroidTextInputShadowNode::setContextContainer(
31
- ContextContainer* contextContainer) {
23
+ void AndroidTextInputShadowNode::setTextLayoutManager(
24
+ std::shared_ptr<const TextLayoutManager> textLayoutManager) {
32
25
  ensureUnsealed();
33
- contextContainer_ = contextContainer;
26
+ textLayoutManager_ = std::move(textLayoutManager);
34
27
  }
35
28
 
36
- AttributedString AndroidTextInputShadowNode::getAttributedString() const {
37
- // Use BaseTextShadowNode to get attributed string from children
38
- auto childTextAttributes = TextAttributes::defaultTextAttributes();
39
- childTextAttributes.apply(getConcreteProps().textAttributes);
40
- // Don't propagate the background color of the TextInput onto the attributed
41
- // string. Android tries to render shadow of the background alongside the
42
- // shadow of the text which results in weird artifacts.
43
- childTextAttributes.backgroundColor = HostPlatformColor::UndefinedColor;
44
-
45
- auto attributedString = AttributedString{};
46
- auto attachments = BaseTextShadowNode::Attachments{};
47
- BaseTextShadowNode::buildAttributedString(
48
- childTextAttributes, *this, attributedString, attachments);
49
- attributedString.setBaseTextAttributes(childTextAttributes);
29
+ Size AndroidTextInputShadowNode::measureContent(
30
+ const LayoutContext& layoutContext,
31
+ const LayoutConstraints& layoutConstraints) const {
32
+ auto textConstraints = getTextConstraints(layoutConstraints);
50
33
 
51
- // BaseTextShadowNode only gets children. We must detect and prepend text
52
- // value attributes manually.
53
- if (!getConcreteProps().text.empty()) {
54
- auto textAttributes = TextAttributes::defaultTextAttributes();
55
- textAttributes.apply(getConcreteProps().textAttributes);
56
- auto fragment = AttributedString::Fragment{};
57
- fragment.string = getConcreteProps().text;
58
- fragment.textAttributes = textAttributes;
59
- // If the TextInput opacity is 0 < n < 1, the opacity of the TextInput and
60
- // text value's background will stack. This is a hack/workaround to prevent
61
- // that effect.
62
- fragment.textAttributes.backgroundColor = clearColor();
63
- fragment.parentShadowView = ShadowView(*this);
64
- attributedString.prependFragment(std::move(fragment));
34
+ if (getStateData().cachedAttributedStringId != 0) {
35
+ auto textSize = textLayoutManager_
36
+ ->measureCachedSpannableById(
37
+ getStateData().cachedAttributedStringId,
38
+ getConcreteProps().paragraphAttributes,
39
+ textConstraints)
40
+ .size;
41
+ return layoutConstraints.clamp(textSize);
65
42
  }
66
43
 
67
- return attributedString;
68
- }
69
-
70
- // For measurement purposes, we want to make sure that there's at least a
71
- // single character in the string so that the measured height is greater
72
- // than zero. Otherwise, empty TextInputs with no placeholder don't
73
- // display at all.
74
- // TODO T67606511: We will redefine the measurement of empty strings as part
75
- // of T67606511
76
- AttributedString AndroidTextInputShadowNode::getPlaceholderAttributedString()
77
- const {
78
- // Return placeholder text, since text and children are empty.
79
- auto textAttributedString = AttributedString{};
80
- auto fragment = AttributedString::Fragment{};
81
- fragment.string = getConcreteProps().placeholder;
44
+ // Layout is called right after measure.
45
+ // Measure is marked as `const`, and `layout` is not; so State can be
46
+ // updated during layout, but not during `measure`. If State is out-of-date
47
+ // in layout, it's too late: measure will have already operated on old
48
+ // State. Thus, we use the same value here that we *will* use in layout to
49
+ // update the state.
50
+ AttributedString attributedString = getMostRecentAttributedString();
82
51
 
83
- if (fragment.string.empty()) {
84
- fragment.string = BaseTextShadowNode::getEmptyPlaceholder();
52
+ if (attributedString.isEmpty()) {
53
+ attributedString = getPlaceholderAttributedString();
85
54
  }
86
55
 
87
- auto textAttributes = TextAttributes::defaultTextAttributes();
88
- textAttributes.apply(getConcreteProps().textAttributes);
89
-
90
- // If there's no text, it's possible that this Fragment isn't actually
91
- // appended to the AttributedString (see implementation of appendFragment)
92
- fragment.textAttributes = textAttributes;
93
- fragment.parentShadowView = ShadowView(*this);
94
- textAttributedString.appendFragment(std::move(fragment));
56
+ if (attributedString.isEmpty() && getStateData().mostRecentEventCount != 0) {
57
+ return {.width = 0, .height = 0};
58
+ }
95
59
 
96
- return textAttributedString;
60
+ TextLayoutContext textLayoutContext;
61
+ textLayoutContext.pointScaleFactor = layoutContext.pointScaleFactor;
62
+ auto textSize = textLayoutManager_
63
+ ->measure(
64
+ AttributedStringBox{attributedString},
65
+ getConcreteProps().paragraphAttributes,
66
+ textLayoutContext,
67
+ textConstraints)
68
+ .size;
69
+ return layoutConstraints.clamp(textSize);
97
70
  }
98
71
 
99
- void AndroidTextInputShadowNode::setTextLayoutManager(
100
- SharedTextLayoutManager textLayoutManager) {
101
- ensureUnsealed();
102
- textLayoutManager_ = std::move(textLayoutManager);
72
+ void AndroidTextInputShadowNode::layout(LayoutContext layoutContext) {
73
+ updateStateIfNeeded();
74
+ ConcreteViewShadowNode::layout(layoutContext);
103
75
  }
104
76
 
105
- AttributedString AndroidTextInputShadowNode::getMostRecentAttributedString()
106
- const {
107
- const auto& state = getStateData();
77
+ Float AndroidTextInputShadowNode::baseline(
78
+ const LayoutContext& /*layoutContext*/,
79
+ Size size) const {
80
+ AttributedString attributedString = getMostRecentAttributedString();
108
81
 
109
- auto reactTreeAttributedString = getAttributedString();
82
+ if (attributedString.isEmpty()) {
83
+ attributedString = getPlaceholderAttributedString();
84
+ }
110
85
 
111
- // Sometimes the treeAttributedString will only differ from the state
112
- // not by inherent properties (string or prop attributes), but by the frame of
113
- // the parent which has changed Thus, we can't directly compare the entire
114
- // AttributedString
115
- bool treeAttributedStringChanged =
116
- !state.reactTreeAttributedString.compareTextAttributesWithoutFrame(
117
- reactTreeAttributedString);
86
+ // Yoga expects a baseline relative to the Node's border-box edge instead of
87
+ // the content, so we need to adjust by the padding and border widths, which
88
+ // have already been set by the time of baseline alignment
89
+ auto top = YGNodeLayoutGetBorder(&yogaNode_, YGEdgeTop) +
90
+ YGNodeLayoutGetPadding(&yogaNode_, YGEdgeTop);
118
91
 
119
- return (
120
- !treeAttributedStringChanged ? state.attributedString
121
- : reactTreeAttributedString);
92
+ AttributedStringBox attributedStringBox{attributedString};
93
+ return textLayoutManager_->baseline(
94
+ attributedStringBox,
95
+ getConcreteProps().paragraphAttributes,
96
+ size) +
97
+ top;
98
+ }
99
+
100
+ LayoutConstraints AndroidTextInputShadowNode::getTextConstraints(
101
+ const LayoutConstraints& layoutConstraints) const {
102
+ if (getConcreteProps().multiline) {
103
+ return layoutConstraints;
104
+ } else {
105
+ // A single line TextInput acts as a horizontal scroller of infinitely
106
+ // expandable text, so we want to measure the text as if it is allowed to
107
+ // infinitely expand horizontally, and later clamp to the constraints of the
108
+ // input.
109
+ return LayoutConstraints{
110
+ .minimumSize = layoutConstraints.minimumSize,
111
+ .maximumSize =
112
+ Size{
113
+ .width = std::numeric_limits<Float>::infinity(),
114
+ .height = layoutConstraints.maximumSize.height,
115
+ },
116
+ .layoutDirection = layoutConstraints.layoutDirection,
117
+ };
118
+ }
122
119
  }
123
120
 
124
121
  void AndroidTextInputShadowNode::updateStateIfNeeded() {
@@ -150,83 +147,87 @@ void AndroidTextInputShadowNode::updateStateIfNeeded() {
150
147
  : getConcreteProps().mostRecentEventCount;
151
148
  auto newAttributedString = getMostRecentAttributedString();
152
149
 
153
- setStateData(AndroidTextInputState{
154
- newEventCount,
155
- newAttributedString,
150
+ setStateData(TextInputState{
151
+ AttributedStringBox(newAttributedString),
156
152
  reactTreeAttributedString,
157
153
  getConcreteProps().paragraphAttributes,
158
- state.defaultThemePaddingStart,
159
- state.defaultThemePaddingEnd,
160
- state.defaultThemePaddingTop,
161
- state.defaultThemePaddingBottom});
154
+ newEventCount});
162
155
  }
163
156
 
164
- #pragma mark - LayoutableShadowNode
165
-
166
- Size AndroidTextInputShadowNode::measureContent(
167
- const LayoutContext& layoutContext,
168
- const LayoutConstraints& layoutConstraints) const {
169
- if (getStateData().cachedAttributedStringId != 0) {
170
- return textLayoutManager_
171
- ->measureCachedSpannableById(
172
- getStateData().cachedAttributedStringId,
173
- getConcreteProps().paragraphAttributes,
174
- layoutConstraints)
175
- .size;
176
- }
177
-
178
- // Layout is called right after measure.
179
- // Measure is marked as `const`, and `layout` is not; so State can be updated
180
- // during layout, but not during `measure`. If State is out-of-date in layout,
181
- // it's too late: measure will have already operated on old State. Thus, we
182
- // use the same value here that we *will* use in layout to update the state.
183
- AttributedString attributedString = getMostRecentAttributedString();
157
+ AttributedString AndroidTextInputShadowNode::getAttributedString() const {
158
+ // Use BaseTextShadowNode to get attributed string from children
159
+ auto childTextAttributes = TextAttributes::defaultTextAttributes();
160
+ childTextAttributes.apply(getConcreteProps().textAttributes);
161
+ // Don't propagate the background color of the TextInput onto the attributed
162
+ // string. Android tries to render shadow of the background alongside the
163
+ // shadow of the text which results in weird artifacts.
164
+ childTextAttributes.backgroundColor = HostPlatformColor::UndefinedColor;
184
165
 
185
- if (attributedString.isEmpty()) {
186
- attributedString = getPlaceholderAttributedString();
187
- }
166
+ auto attributedString = AttributedString{};
167
+ auto attachments = BaseTextShadowNode::Attachments{};
168
+ BaseTextShadowNode::buildAttributedString(
169
+ childTextAttributes, *this, attributedString, attachments);
170
+ attributedString.setBaseTextAttributes(childTextAttributes);
188
171
 
189
- if (attributedString.isEmpty() && getStateData().mostRecentEventCount != 0) {
190
- return {0, 0};
172
+ // BaseTextShadowNode only gets children. We must detect and prepend text
173
+ // value attributes manually.
174
+ if (!getConcreteProps().text.empty()) {
175
+ auto textAttributes = TextAttributes::defaultTextAttributes();
176
+ textAttributes.apply(getConcreteProps().textAttributes);
177
+ auto fragment = AttributedString::Fragment{};
178
+ fragment.string = getConcreteProps().text;
179
+ fragment.textAttributes = textAttributes;
180
+ // If the TextInput opacity is 0 < n < 1, the opacity of the TextInput and
181
+ // text value's background will stack. This is a hack/workaround to prevent
182
+ // that effect.
183
+ fragment.textAttributes.backgroundColor = clearColor();
184
+ fragment.parentShadowView = ShadowView(*this);
185
+ attributedString.prependFragment(std::move(fragment));
191
186
  }
192
187
 
193
- TextLayoutContext textLayoutContext;
194
- textLayoutContext.pointScaleFactor = layoutContext.pointScaleFactor;
195
- return textLayoutManager_
196
- ->measure(
197
- AttributedStringBox{attributedString},
198
- getConcreteProps().paragraphAttributes,
199
- textLayoutContext,
200
- layoutConstraints)
201
- .size;
188
+ return attributedString;
202
189
  }
203
190
 
204
- Float AndroidTextInputShadowNode::baseline(
205
- const LayoutContext& layoutContext,
206
- Size size) const {
207
- AttributedString attributedString = getMostRecentAttributedString();
191
+ AttributedString AndroidTextInputShadowNode::getMostRecentAttributedString()
192
+ const {
193
+ const auto& state = getStateData();
208
194
 
209
- if (attributedString.isEmpty()) {
210
- attributedString = getPlaceholderAttributedString();
211
- }
195
+ auto reactTreeAttributedString = getAttributedString();
212
196
 
213
- // Yoga expects a baseline relative to the Node's border-box edge instead of
214
- // the content, so we need to adjust by the padding and border widths, which
215
- // have already been set by the time of baseline alignment
216
- auto top = YGNodeLayoutGetBorder(&yogaNode_, YGEdgeTop) +
217
- YGNodeLayoutGetPadding(&yogaNode_, YGEdgeTop);
197
+ // Sometimes the treeAttributedString will only differ from the state
198
+ // not by inherent properties (string or prop attributes), but by the frame of
199
+ // the parent which has changed Thus, we can't directly compare the entire
200
+ // AttributedString
201
+ bool treeAttributedStringChanged =
202
+ !state.reactTreeAttributedString.compareTextAttributesWithoutFrame(
203
+ reactTreeAttributedString);
218
204
 
219
- AttributedStringBox attributedStringBox{attributedString};
220
- return textLayoutManager_->baseline(
221
- attributedStringBox,
222
- getConcreteProps().paragraphAttributes,
223
- size) +
224
- top;
205
+ return (
206
+ !treeAttributedStringChanged ? state.attributedStringBox.getValue()
207
+ : reactTreeAttributedString);
225
208
  }
226
209
 
227
- void AndroidTextInputShadowNode::layout(LayoutContext layoutContext) {
228
- updateStateIfNeeded();
229
- ConcreteViewShadowNode::layout(layoutContext);
210
+ // For measurement purposes, we want to make sure that there's at least a
211
+ // single character in the string so that the measured height is greater
212
+ // than zero. Otherwise, empty TextInputs with no placeholder don't
213
+ // display at all.
214
+ // TODO T67606511: We will redefine the measurement of empty strings as part
215
+ // of T67606511
216
+ AttributedString AndroidTextInputShadowNode::getPlaceholderAttributedString()
217
+ const {
218
+ const auto& props = BaseShadowNode::getConcreteProps();
219
+
220
+ AttributedString attributedString;
221
+ auto placeholderString = !props.placeholder.empty()
222
+ ? props.placeholder
223
+ : BaseTextShadowNode::getEmptyPlaceholder();
224
+ auto textAttributes = TextAttributes::defaultTextAttributes();
225
+ textAttributes.apply(props.textAttributes);
226
+ attributedString.appendFragment(
227
+ {.string = std::move(placeholderString),
228
+ .textAttributes = textAttributes,
229
+ .parentShadowView = ShadowView(*this)});
230
+ return attributedString;
230
231
  }
231
232
 
232
233
  } // namespace facebook::react
@@ -9,13 +9,12 @@
9
9
 
10
10
  #include "AndroidTextInputEventEmitter.h"
11
11
  #include "AndroidTextInputProps.h"
12
- #include "AndroidTextInputState.h"
13
12
 
13
+ #include <react/renderer/attributedstring/AttributedString.h>
14
+ #include <react/renderer/components/textinput/TextInputState.h>
14
15
  #include <react/renderer/components/view/ConcreteViewShadowNode.h>
15
16
  #include <react/utils/ContextContainer.h>
16
17
 
17
- #include <react/renderer/attributedstring/AttributedString.h>
18
-
19
18
  namespace facebook::react {
20
19
 
21
20
  extern const char AndroidTextInputComponentName[];
@@ -28,63 +27,62 @@ class AndroidTextInputShadowNode final
28
27
  AndroidTextInputComponentName,
29
28
  AndroidTextInputProps,
30
29
  AndroidTextInputEventEmitter,
31
- AndroidTextInputState,
30
+ TextInputState,
32
31
  /* usesMapBufferForStateData */ true> {
33
32
  public:
33
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
34
+
34
35
  static ShadowNodeTraits BaseTraits() {
35
36
  auto traits = ConcreteViewShadowNode::BaseTraits();
36
37
  traits.set(ShadowNodeTraits::Trait::LeafYogaNode);
38
+ traits.set(ShadowNodeTraits::Trait::MeasurableYogaNode);
37
39
  traits.set(ShadowNodeTraits::Trait::BaselineYogaNode);
38
40
  return traits;
39
41
  }
40
42
 
41
- using ConcreteViewShadowNode::ConcreteViewShadowNode;
42
-
43
- void setContextContainer(ContextContainer* contextContainer);
44
-
45
- /*
46
- * Returns a `AttributedString` which represents text content of the node.
47
- */
48
- AttributedString getAttributedString() const;
49
- AttributedString getPlaceholderAttributedString() const;
50
-
51
43
  /*
52
44
  * Associates a shared TextLayoutManager with the node.
53
- * `ParagraphShadowNode` uses the manager to measure text content
54
- * and construct `ParagraphState` objects.
45
+ * `TextInputShadowNode` uses the manager to measure text content
46
+ * and construct `TextInputState` objects.
55
47
  */
56
- void setTextLayoutManager(SharedTextLayoutManager textLayoutManager);
57
-
58
- #pragma mark - LayoutableShadowNode
48
+ void setTextLayoutManager(
49
+ std::shared_ptr<const TextLayoutManager> textLayoutManager);
59
50
 
51
+ protected:
60
52
  Size measureContent(
61
53
  const LayoutContext& layoutContext,
62
54
  const LayoutConstraints& layoutConstraints) const override;
55
+
63
56
  void layout(LayoutContext layoutContext) override;
64
57
 
65
58
  Float baseline(const LayoutContext& layoutContext, Size size) const override;
66
59
 
67
- private:
68
- ContextContainer* contextContainer_{};
60
+ std::shared_ptr<const TextLayoutManager> textLayoutManager_;
69
61
 
70
- /**
71
- * Get the most up-to-date attributed string for measurement and State.
62
+ /*
63
+ * Determines the constraints to use while measure the underlying text
72
64
  */
73
- AttributedString getMostRecentAttributedString() const;
65
+ LayoutConstraints getTextConstraints(
66
+ const LayoutConstraints& layoutConstraints) const;
74
67
 
68
+ private:
75
69
  /*
76
70
  * Creates a `State` object (with `AttributedText` and
77
71
  * `TextLayoutManager`) if needed.
78
72
  */
79
73
  void updateStateIfNeeded();
80
74
 
81
- SharedTextLayoutManager textLayoutManager_;
82
-
83
75
  /*
84
- * Cached attributed string that represents the content of the subtree started
85
- * from the node.
76
+ * Returns a `AttributedString` which represents text content of the node.
86
77
  */
87
- mutable std::optional<AttributedString> cachedAttributedString_{};
78
+ AttributedString getAttributedString() const;
79
+
80
+ /**
81
+ * Get the most up-to-date attributed string for measurement and State.
82
+ */
83
+ AttributedString getMostRecentAttributedString() const;
84
+
85
+ AttributedString getPlaceholderAttributedString() const;
88
86
  };
89
87
 
90
88
  } // namespace facebook::react