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,111 @@
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
+ package com.facebook.react.views.view
9
+
10
+ import android.annotation.SuppressLint
11
+ import android.content.Context
12
+ import android.content.res.ColorStateList
13
+ import android.graphics.Color
14
+ import android.graphics.drawable.ColorDrawable
15
+ import android.graphics.drawable.Drawable
16
+ import android.graphics.drawable.RippleDrawable
17
+ import android.util.TypedValue
18
+ import com.facebook.react.bridge.JSApplicationIllegalArgumentException
19
+ import com.facebook.react.bridge.ReadableMap
20
+ import com.facebook.react.uimanager.PixelUtil
21
+ import com.facebook.react.uimanager.ViewProps
22
+
23
+ /**
24
+ * Utility class that helps with converting android drawable description used in JS to an actual
25
+ * instance of [Drawable].
26
+ */
27
+ public object ReactDrawableHelper {
28
+
29
+ private val resolveOutValue = TypedValue()
30
+
31
+ @JvmStatic
32
+ public fun createDrawableFromJSDescription(
33
+ context: Context,
34
+ drawableDescriptionDict: ReadableMap
35
+ ): Drawable? {
36
+ val type = drawableDescriptionDict.getString("type")
37
+ if ("ThemeAttrAndroid" == type) {
38
+ val attr =
39
+ drawableDescriptionDict.getString("attribute")
40
+ ?: throw JSApplicationIllegalArgumentException(
41
+ "JS description missing 'attribute' field")
42
+ val attrId = getAttrId(context, attr)
43
+ if (!context.theme.resolveAttribute(attrId, resolveOutValue, true)) {
44
+ throw JSApplicationIllegalArgumentException(
45
+ "Attribute $attr with id $attrId couldn't be resolved into a drawable")
46
+ }
47
+ val drawable = getDefaultThemeDrawable(context)
48
+ return setRadius(drawableDescriptionDict, drawable)
49
+ } else if ("RippleAndroid" == type) {
50
+ val rd = getRippleDrawable(context, drawableDescriptionDict)
51
+ return setRadius(drawableDescriptionDict, rd)
52
+ } else {
53
+ throw JSApplicationIllegalArgumentException("Invalid type for android drawable: $type")
54
+ }
55
+ }
56
+
57
+ @SuppressLint("DiscouragedApi", "InternalInsetResource")
58
+ private fun getAttrId(context: Context, attr: String): Int =
59
+ if ("selectableItemBackground" == attr) {
60
+ android.R.attr.selectableItemBackground
61
+ } else if ("selectableItemBackgroundBorderless" == attr) {
62
+ android.R.attr.selectableItemBackgroundBorderless
63
+ } else {
64
+ context.resources.getIdentifier(attr, "attr", "android")
65
+ }
66
+
67
+ private fun getDefaultThemeDrawable(context: Context): Drawable? =
68
+ context.resources.getDrawable(resolveOutValue.resourceId, context.theme)
69
+
70
+ private fun getRippleDrawable(
71
+ context: Context,
72
+ drawableDescriptionDict: ReadableMap
73
+ ): RippleDrawable {
74
+ val color = getColor(context, drawableDescriptionDict)
75
+ val mask = getMask(drawableDescriptionDict)
76
+ val colorStateList = ColorStateList(arrayOf(intArrayOf()), intArrayOf(color))
77
+
78
+ return RippleDrawable(colorStateList, null, mask)
79
+ }
80
+
81
+ private fun setRadius(drawableDescriptionDict: ReadableMap, drawable: Drawable?): Drawable? {
82
+ if (drawableDescriptionDict.hasKey("rippleRadius") && drawable is RippleDrawable) {
83
+ val rippleRadius = drawableDescriptionDict.getDouble("rippleRadius")
84
+ drawable.radius = PixelUtil.toPixelFromDIP(rippleRadius).toInt()
85
+ }
86
+ return drawable
87
+ }
88
+
89
+ private fun getColor(context: Context, drawableDescriptionDict: ReadableMap): Int =
90
+ if (drawableDescriptionDict.hasKey(ViewProps.COLOR) &&
91
+ !drawableDescriptionDict.isNull(ViewProps.COLOR)) {
92
+ drawableDescriptionDict.getInt(ViewProps.COLOR)
93
+ } else {
94
+ if (context.theme.resolveAttribute(
95
+ android.R.attr.colorControlHighlight, resolveOutValue, true)) {
96
+ context.resources.getColor(resolveOutValue.resourceId, context.theme)
97
+ } else {
98
+ throw JSApplicationIllegalArgumentException(
99
+ "Attribute colorControlHighlight couldn't be resolved into a drawable")
100
+ }
101
+ }
102
+
103
+ private fun getMask(drawableDescriptionDict: ReadableMap): Drawable? {
104
+ if (!drawableDescriptionDict.hasKey("borderless") ||
105
+ drawableDescriptionDict.isNull("borderless") ||
106
+ !drawableDescriptionDict.getBoolean("borderless")) {
107
+ return ColorDrawable(Color.WHITE)
108
+ }
109
+ return null
110
+ }
111
+ }
@@ -110,6 +110,7 @@ public class ReactViewGroup extends ViewGroup
110
110
  private boolean trapFocusDown = false;
111
111
  private boolean trapFocusLeft = false;
112
112
  private boolean trapFocusRight = false;
113
+ public boolean hasTVPreferredFocus = false;
113
114
 
114
115
 
115
116
  /**
@@ -160,6 +161,7 @@ public class ReactViewGroup extends ViewGroup
160
161
  // {@link ViewGroup#getChildCount} so those methods may return views that are not attached.
161
162
  // This is risky but allows us to perform a correct cleanup in {@link NativeViewHierarchyManager}.
162
163
  private boolean mRemoveClippedSubviews;
164
+ private volatile boolean mInSubviewClippingLoop;
163
165
  private @Nullable View[] mAllChildren;
164
166
  private int mAllChildrenCount;
165
167
  private @Nullable Rect mClippingRect;
@@ -171,7 +173,7 @@ public class ReactViewGroup extends ViewGroup
171
173
  private boolean mNeedsOffscreenAlphaCompositing;
172
174
  private @Nullable ViewGroupDrawingOrderHelper mDrawingOrderHelper;
173
175
  private float mBackfaceOpacity;
174
- private String mBackfaceVisibility;
176
+ private boolean mBackfaceVisible;
175
177
  private @Nullable Set<Integer> mChildrenRemovedWhileTransitioning;
176
178
 
177
179
  /**
@@ -194,6 +196,7 @@ public class ReactViewGroup extends ViewGroup
194
196
  setClipChildren(false);
195
197
 
196
198
  mRemoveClippedSubviews = false;
199
+ mInSubviewClippingLoop = false;
197
200
  mAllChildren = null;
198
201
  mAllChildrenCount = 0;
199
202
  mClippingRect = null;
@@ -205,7 +208,7 @@ public class ReactViewGroup extends ViewGroup
205
208
  mNeedsOffscreenAlphaCompositing = false;
206
209
  mDrawingOrderHelper = null;
207
210
  mBackfaceOpacity = 1.f;
208
- mBackfaceVisibility = "visible";
211
+ mBackfaceVisible = true;
209
212
  mChildrenRemovedWhileTransitioning = null;
210
213
  }
211
214
 
@@ -403,6 +406,7 @@ public class ReactViewGroup extends ViewGroup
403
406
  View child = getChildAt(i);
404
407
  mAllChildren[i] = child;
405
408
  child.addOnLayoutChangeListener(mChildrenLayoutChangeListener);
409
+ setViewClipped(child, false);
406
410
  }
407
411
  updateClippingRect();
408
412
  } else {
@@ -467,11 +471,19 @@ public class ReactViewGroup extends ViewGroup
467
471
 
468
472
  private void updateClippingToRect(Rect clippingRect) {
469
473
  Assertions.assertNotNull(mAllChildren);
474
+ mInSubviewClippingLoop = true;
470
475
  int clippedSoFar = 0;
471
476
  for (int i = 0; i < mAllChildrenCount; i++) {
472
477
  try {
473
478
  updateSubviewClipStatus(clippingRect, i, clippedSoFar);
474
479
  } catch (IndexOutOfBoundsException e) {
480
+ int realClippedSoFar = 0;
481
+ Set<View> uniqueViews = new HashSet<>();
482
+ for (int j = 0; j < i; j++) {
483
+ realClippedSoFar += isViewClipped(mAllChildren[j], null) ? 1 : 0;
484
+ uniqueViews.add(mAllChildren[j]);
485
+ }
486
+
475
487
  throw new IllegalStateException(
476
488
  "Invalid clipping state. i="
477
489
  + i
@@ -482,13 +494,18 @@ public class ReactViewGroup extends ViewGroup
482
494
  + " allChildrenCount="
483
495
  + mAllChildrenCount
484
496
  + " recycleCount="
485
- + mRecycleCount,
497
+ + mRecycleCount
498
+ + " realClippedSoFar="
499
+ + realClippedSoFar
500
+ + " uniqueViewsCount="
501
+ + uniqueViews.size(),
486
502
  e);
487
503
  }
488
- if (isViewClipped(mAllChildren[i])) {
504
+ if (isViewClipped(mAllChildren[i], i)) {
489
505
  clippedSoFar++;
490
506
  }
491
507
  }
508
+ mInSubviewClippingLoop = false;
492
509
  }
493
510
 
494
511
  private void updateSubviewClipStatus(Rect clippingRect, int idx, int clippedSoFar) {
@@ -507,14 +524,18 @@ public class ReactViewGroup extends ViewGroup
507
524
  // it won't be size and located properly.
508
525
  Animation animation = child.getAnimation();
509
526
  boolean isAnimating = animation != null && !animation.hasEnded();
510
- if (!intersects && !isViewClipped(child) && !isAnimating) {
527
+ if (!intersects && !isViewClipped(child, idx) && !isAnimating) {
528
+ setViewClipped(child, true);
511
529
  recoverFocus(child);
512
530
  // We can try saving on invalidate call here as the view that we remove is out of visible area
513
531
  // therefore invalidation is not necessary.
514
532
  removeViewInLayout(child);
515
533
  needUpdateClippingRecursive = true;
516
- } else if (intersects && isViewClipped(child)) {
517
- addViewInLayout(child, idx - clippedSoFar, sDefaultLayoutParam, true);
534
+ } else if (intersects && isViewClipped(child, idx)) {
535
+ int adjustedIdx = idx - clippedSoFar;
536
+ Assertions.assertCondition(adjustedIdx >= 0);
537
+ setViewClipped(child, false);
538
+ addViewInLayout(child, adjustedIdx, sDefaultLayoutParam, true);
518
539
  invalidate();
519
540
  needUpdateClippingRecursive = true;
520
541
  } else if (intersects) {
@@ -545,19 +566,21 @@ public class ReactViewGroup extends ViewGroup
545
566
  subview.getLeft(), subview.getTop(), subview.getRight(), subview.getBottom());
546
567
 
547
568
  // If it was intersecting before, should be attached to the parent
548
- boolean oldIntersects = !isViewClipped(subview);
569
+ boolean oldIntersects = !isViewClipped(subview, null);
549
570
 
550
571
  if (intersects != oldIntersects) {
572
+ mInSubviewClippingLoop = true;
551
573
  int clippedSoFar = 0;
552
574
  for (int i = 0; i < mAllChildrenCount; i++) {
553
575
  if (mAllChildren[i] == subview) {
554
576
  updateSubviewClipStatus(mClippingRect, i, clippedSoFar);
555
577
  break;
556
578
  }
557
- if (isViewClipped(mAllChildren[i])) {
579
+ if (isViewClipped(mAllChildren[i], i)) {
558
580
  clippedSoFar++;
559
581
  }
560
582
  }
583
+ mInSubviewClippingLoop = false;
561
584
  }
562
585
  }
563
586
 
@@ -672,7 +695,7 @@ public class ReactViewGroup extends ViewGroup
672
695
  @Override
673
696
  public void onViewAdded(View child) {
674
697
  UiThreadUtil.assertOnUiThread();
675
-
698
+ checkViewClippingTag(child, Boolean.FALSE);
676
699
  if (!customDrawOrderDisabled()) {
677
700
  getDrawingOrderHelper().handleAddView(child);
678
701
  setChildrenDrawingOrderEnabled(getDrawingOrderHelper().shouldEnableCustomDrawingOrder());
@@ -685,7 +708,7 @@ public class ReactViewGroup extends ViewGroup
685
708
  @Override
686
709
  public void onViewRemoved(View child) {
687
710
  UiThreadUtil.assertOnUiThread();
688
-
711
+ checkViewClippingTag(child, Boolean.TRUE);
689
712
  if (!customDrawOrderDisabled()) {
690
713
  if (indexOfChild(child) == -1) {
691
714
  return;
@@ -704,6 +727,21 @@ public class ReactViewGroup extends ViewGroup
704
727
  super.onViewRemoved(child);
705
728
  }
706
729
 
730
+ private void checkViewClippingTag(View child, Boolean expectedTag) {
731
+ if (mInSubviewClippingLoop) {
732
+ Object tag = child.getTag(R.id.view_clipped);
733
+ if (!expectedTag.equals(tag)) {
734
+ ReactSoftExceptionLogger.logSoftException(
735
+ ReactSoftExceptionLogger.Categories.RVG_ON_VIEW_REMOVED,
736
+ new ReactNoCrashSoftException(
737
+ "View clipping tag mismatch: tag=" + tag + " expected=" + expectedTag));
738
+ }
739
+ }
740
+ if (mRemoveClippedSubviews) {
741
+ child.setTag(R.id.view_clipped, expectedTag);
742
+ }
743
+ }
744
+
707
745
  @Override
708
746
  protected int getChildDrawingOrder(int childCount, int index) {
709
747
  UiThreadUtil.assertOnUiThread();
@@ -775,19 +813,22 @@ public class ReactViewGroup extends ViewGroup
775
813
  /*package*/ void addViewWithSubviewClippingEnabled(
776
814
  final View child, int index, ViewGroup.LayoutParams params) {
777
815
  Assertions.assertCondition(mRemoveClippedSubviews);
816
+ setViewClipped(child, true); // the view has not been added, so it is "clipped"
778
817
  addInArray(child, index);
779
818
 
780
819
  // we add view as "clipped" and then run {@link #updateSubviewClipStatus} to conditionally
781
820
  // attach it
782
821
  Rect clippingRect = Assertions.assertNotNull(mClippingRect);
783
822
  View[] childArray = Assertions.assertNotNull(mAllChildren);
823
+ mInSubviewClippingLoop = true;
784
824
  int clippedSoFar = 0;
785
825
  for (int i = 0; i < index; i++) {
786
- if (isViewClipped(childArray[i])) {
826
+ if (isViewClipped(childArray[i], i)) {
787
827
  clippedSoFar++;
788
828
  }
789
829
  }
790
830
  updateSubviewClipStatus(clippingRect, index, clippedSoFar);
831
+ mInSubviewClippingLoop = false;
791
832
  child.addOnLayoutChangeListener(mChildrenLayoutChangeListener);
792
833
 
793
834
  if (child instanceof ReactClippingProhibitedView) {
@@ -822,10 +863,10 @@ public class ReactViewGroup extends ViewGroup
822
863
  View[] childArray = Assertions.assertNotNull(mAllChildren);
823
864
  view.removeOnLayoutChangeListener(mChildrenLayoutChangeListener);
824
865
  int index = indexOfChildInAllChildren(view);
825
- if (!isViewClipped(childArray[index])) {
866
+ if (!isViewClipped(childArray[index], index)) {
826
867
  int clippedSoFar = 0;
827
868
  for (int i = 0; i < index; i++) {
828
- if (isViewClipped(childArray[i])) {
869
+ if (isViewClipped(childArray[i], i)) {
829
870
  clippedSoFar++;
830
871
  }
831
872
  }
@@ -847,9 +888,40 @@ public class ReactViewGroup extends ViewGroup
847
888
 
848
889
  /**
849
890
  * @return {@code true} if the view has been removed from the ViewGroup.
891
+ * @param index For logging - index of the view in {@code mAllChildren}, or {@code null} to skip
892
+ * logging.
850
893
  */
851
- private boolean isViewClipped(View view) {
852
- return view.getParent() == null;
894
+ private boolean isViewClipped(View view, @Nullable Integer index) {
895
+ Object tag = view.getTag(R.id.view_clipped);
896
+ if (tag != null) {
897
+ return (boolean) tag;
898
+ }
899
+ ViewParent parent = view.getParent();
900
+ boolean transitioning = isChildRemovedWhileTransitioning(view);
901
+ if (index != null) {
902
+ ReactSoftExceptionLogger.logSoftException(
903
+ ReactSoftExceptionLogger.Categories.RVG_IS_VIEW_CLIPPED,
904
+ new ReactNoCrashSoftException(
905
+ "View missing clipping tag: index="
906
+ + index
907
+ + " parentNull="
908
+ + (parent == null)
909
+ + " parentThis="
910
+ + (parent == this)
911
+ + " transitioning="
912
+ + transitioning));
913
+ }
914
+ // fallback - should be transitioning or have no parent if the view was removed
915
+ if (parent == null || transitioning) {
916
+ return true;
917
+ } else {
918
+ Assertions.assertCondition(parent == this);
919
+ return false;
920
+ }
921
+ }
922
+
923
+ private static void setViewClipped(View view, boolean clipped) {
924
+ view.setTag(R.id.view_clipped, clipped);
853
925
  }
854
926
 
855
927
  private int indexOfChildInAllChildren(View child) {
@@ -1006,6 +1078,7 @@ public class ReactViewGroup extends ViewGroup
1006
1078
 
1007
1079
  BlendMode mixBlendMode = null;
1008
1080
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
1081
+ && ViewUtil.getUIManagerType(this) == UIManagerType.FABRIC
1009
1082
  && BlendModeHelper.needsIsolatedLayer(this)) {
1010
1083
  mixBlendMode = (BlendMode) child.getTag(R.id.mix_blend_mode);
1011
1084
  if (mixBlendMode != null) {
@@ -1039,14 +1112,12 @@ public class ReactViewGroup extends ViewGroup
1039
1112
  }
1040
1113
 
1041
1114
  public void setBackfaceVisibility(String backfaceVisibility) {
1042
- mBackfaceVisibility = backfaceVisibility;
1115
+ mBackfaceVisible = "visible".equals(backfaceVisibility);
1043
1116
  setBackfaceVisibilityDependantOpacity();
1044
1117
  }
1045
1118
 
1046
1119
  public void setBackfaceVisibilityDependantOpacity() {
1047
- boolean isBackfaceVisible = mBackfaceVisibility.equals("visible");
1048
-
1049
- if (isBackfaceVisible) {
1120
+ if (mBackfaceVisible) {
1050
1121
  setAlpha(mBackfaceOpacity);
1051
1122
  return;
1052
1123
  }
@@ -82,6 +82,7 @@ public open class ReactViewManager : ReactClippingViewManager<ReactViewGroup>()
82
82
  return view
83
83
  }
84
84
 
85
+
85
86
  @ReactProp(name = "accessible")
86
87
  public open fun setAccessible(view: ReactViewGroup, accessible: Boolean) {
87
88
  view.isFocusable = accessible
@@ -109,6 +110,17 @@ public open class ReactViewManager : ReactClippingViewManager<ReactViewGroup>()
109
110
 
110
111
  @ReactProp(name = "hasTVPreferredFocus")
111
112
  public open fun setTVPreferredFocus(view: ReactViewGroup, hasTVPreferredFocus: Boolean) {
113
+ /*
114
+ * React prop functions like this one gets called repeatedly on the New Architecture
115
+ * no matter the prop has changed or not. Contrary to others, `hasTVPreferredFocus` has
116
+ * a side effect, calling `requestFocus` function on the view which disrupts the user flow
117
+ * and should only called once when the property changes to `true.
118
+ * We keep a special state in the View class and run a comparison here to mitigate
119
+ * that problem.
120
+ */
121
+ if (view.hasTVPreferredFocus == hasTVPreferredFocus) return;
122
+ view.hasTVPreferredFocus = hasTVPreferredFocus;
123
+
112
124
  if (hasTVPreferredFocus) {
113
125
  view.isFocusable = true
114
126
  view.isFocusableInTouchMode = true
@@ -259,7 +271,7 @@ public open class ReactViewManager : ReactClippingViewManager<ReactViewGroup>()
259
271
 
260
272
  @ReactProp(name = ViewProps.POINTER_EVENTS)
261
273
  public open fun setPointerEvents(view: ReactViewGroup, pointerEventsStr: String?) {
262
- view.pointerEvents = PointerEvents.parsePointerEvents(pointerEventsStr)
274
+ view.setPointerEvents(PointerEvents.parsePointerEvents(pointerEventsStr))
263
275
  }
264
276
 
265
277
  @ReactProp(name = "nativeBackgroundAndroid")
@@ -355,7 +367,7 @@ public open class ReactViewManager : ReactClippingViewManager<ReactViewGroup>()
355
367
 
356
368
  @ReactProp(name = ViewProps.OVERFLOW)
357
369
  public open fun setOverflow(view: ReactViewGroup, overflow: String?) {
358
- view.overflow = overflow
370
+ view.setOverflow(overflow)
359
371
  }
360
372
 
361
373
  @ReactProp(name = "backfaceVisibility")
@@ -74,6 +74,9 @@ public class YogaNative {
74
74
  static native void jni_YGNodeStyleSetFlexBasisJNI(long nativePointer, float flexBasis);
75
75
  static native void jni_YGNodeStyleSetFlexBasisPercentJNI(long nativePointer, float percent);
76
76
  static native void jni_YGNodeStyleSetFlexBasisAutoJNI(long nativePointer);
77
+ static native void jni_YGNodeStyleSetFlexBasisMaxContentJNI(long nativePointer);
78
+ static native void jni_YGNodeStyleSetFlexBasisFitContentJNI(long nativePointer);
79
+ static native void jni_YGNodeStyleSetFlexBasisStretchJNI(long nativePointer);
77
80
  static native long jni_YGNodeStyleGetMarginJNI(long nativePointer, int edge);
78
81
  static native void jni_YGNodeStyleSetMarginJNI(long nativePointer, int edge, float margin);
79
82
  static native void jni_YGNodeStyleSetMarginPercentJNI(long nativePointer, int edge, float percent);
@@ -91,25 +94,43 @@ public class YogaNative {
91
94
  static native void jni_YGNodeStyleSetWidthJNI(long nativePointer, float width);
92
95
  static native void jni_YGNodeStyleSetWidthPercentJNI(long nativePointer, float percent);
93
96
  static native void jni_YGNodeStyleSetWidthAutoJNI(long nativePointer);
97
+ static native void jni_YGNodeStyleSetWidthMaxContentJNI(long nativePointer);
98
+ static native void jni_YGNodeStyleSetWidthFitContentJNI(long nativePointer);
99
+ static native void jni_YGNodeStyleSetWidthStretchJNI(long nativePointer);
94
100
  static native long jni_YGNodeStyleGetHeightJNI(long nativePointer);
95
101
  static native void jni_YGNodeStyleSetHeightJNI(long nativePointer, float height);
96
102
  static native void jni_YGNodeStyleSetHeightPercentJNI(long nativePointer, float percent);
97
103
  static native void jni_YGNodeStyleSetHeightAutoJNI(long nativePointer);
104
+ static native void jni_YGNodeStyleSetHeightMaxContentJNI(long nativePointer);
105
+ static native void jni_YGNodeStyleSetHeightFitContentJNI(long nativePointer);
106
+ static native void jni_YGNodeStyleSetHeightStretchJNI(long nativePointer);
98
107
  static native long jni_YGNodeStyleGetMinWidthJNI(long nativePointer);
99
108
  static native void jni_YGNodeStyleSetMinWidthJNI(long nativePointer, float minWidth);
100
109
  static native void jni_YGNodeStyleSetMinWidthPercentJNI(long nativePointer, float percent);
110
+ static native void jni_YGNodeStyleSetMinWidthMaxContentJNI(long nativePointer);
111
+ static native void jni_YGNodeStyleSetMinWidthFitContentJNI(long nativePointer);
112
+ static native void jni_YGNodeStyleSetMinWidthStretchJNI(long nativePointer);
101
113
  static native long jni_YGNodeStyleGetMinHeightJNI(long nativePointer);
102
114
  static native void jni_YGNodeStyleSetMinHeightJNI(long nativePointer, float minHeight);
103
115
  static native void jni_YGNodeStyleSetMinHeightPercentJNI(long nativePointer, float percent);
116
+ static native void jni_YGNodeStyleSetMinHeightMaxContentJNI(long nativePointer);
117
+ static native void jni_YGNodeStyleSetMinHeightFitContentJNI(long nativePointer);
118
+ static native void jni_YGNodeStyleSetMinHeightStretchJNI(long nativePointer);
104
119
  static native long jni_YGNodeStyleGetMaxWidthJNI(long nativePointer);
105
120
  static native void jni_YGNodeStyleSetMaxWidthJNI(long nativePointer, float maxWidth);
106
121
  static native void jni_YGNodeStyleSetMaxWidthPercentJNI(long nativePointer, float percent);
122
+ static native void jni_YGNodeStyleSetMaxWidthMaxContentJNI(long nativePointer);
123
+ static native void jni_YGNodeStyleSetMaxWidthFitContentJNI(long nativePointer);
124
+ static native void jni_YGNodeStyleSetMaxWidthStretchJNI(long nativePointer);
107
125
  static native long jni_YGNodeStyleGetMaxHeightJNI(long nativePointer);
108
126
  static native void jni_YGNodeStyleSetMaxHeightJNI(long nativePointer, float maxheight);
109
127
  static native void jni_YGNodeStyleSetMaxHeightPercentJNI(long nativePointer, float percent);
128
+ static native void jni_YGNodeStyleSetMaxHeightMaxContentJNI(long nativePointer);
129
+ static native void jni_YGNodeStyleSetMaxHeightFitContentJNI(long nativePointer);
130
+ static native void jni_YGNodeStyleSetMaxHeightStretchJNI(long nativePointer);
110
131
  static native float jni_YGNodeStyleGetAspectRatioJNI(long nativePointer);
111
132
  static native void jni_YGNodeStyleSetAspectRatioJNI(long nativePointer, float aspectRatio);
112
- static native float jni_YGNodeStyleGetGapJNI(long nativePointer, int gutter);
133
+ static native long jni_YGNodeStyleGetGapJNI(long nativePointer, int gutter);
113
134
  static native void jni_YGNodeStyleSetGapJNI(long nativePointer, int gutter, float gapLength);
114
135
  static native void jni_YGNodeStyleSetGapPercentJNI(long nativePointer, int gutter, float gapLength);
115
136
  static native void jni_YGNodeSetHasMeasureFuncJNI(long nativePointer, boolean hasMeasureFunc);
@@ -124,6 +124,12 @@ public abstract class YogaNode implements YogaProps {
124
124
 
125
125
  public abstract void setFlexBasisAuto();
126
126
 
127
+ public abstract void setFlexBasisMaxContent();
128
+
129
+ public abstract void setFlexBasisFitContent();
130
+
131
+ public abstract void setFlexBasisStretch();
132
+
127
133
  public abstract YogaValue getMargin(YogaEdge edge);
128
134
 
129
135
  public abstract void setMargin(YogaEdge edge, float margin);
@@ -158,6 +164,12 @@ public abstract class YogaNode implements YogaProps {
158
164
 
159
165
  public abstract void setWidthAuto();
160
166
 
167
+ public abstract void setWidthMaxContent();
168
+
169
+ public abstract void setWidthFitContent();
170
+
171
+ public abstract void setWidthStretch();
172
+
161
173
  public abstract YogaValue getHeight();
162
174
 
163
175
  public abstract void setHeight(float height);
@@ -166,35 +178,65 @@ public abstract class YogaNode implements YogaProps {
166
178
 
167
179
  public abstract void setHeightAuto();
168
180
 
181
+ public abstract void setHeightMaxContent();
182
+
183
+ public abstract void setHeightFitContent();
184
+
185
+ public abstract void setHeightStretch();
186
+
169
187
  public abstract YogaValue getMinWidth();
170
188
 
171
189
  public abstract void setMinWidth(float minWidth);
172
190
 
173
191
  public abstract void setMinWidthPercent(float percent);
174
192
 
193
+ public abstract void setMinWidthMaxContent();
194
+
195
+ public abstract void setMinWidthFitContent();
196
+
197
+ public abstract void setMinWidthStretch();
198
+
175
199
  public abstract YogaValue getMinHeight();
176
200
 
177
201
  public abstract void setMinHeight(float minHeight);
178
202
 
179
203
  public abstract void setMinHeightPercent(float percent);
180
204
 
205
+ public abstract void setMinHeightMaxContent();
206
+
207
+ public abstract void setMinHeightFitContent();
208
+
209
+ public abstract void setMinHeightStretch();
210
+
181
211
  public abstract YogaValue getMaxWidth();
182
212
 
183
213
  public abstract void setMaxWidth(float maxWidth);
184
214
 
185
215
  public abstract void setMaxWidthPercent(float percent);
186
216
 
217
+ public abstract void setMaxWidthMaxContent();
218
+
219
+ public abstract void setMaxWidthFitContent();
220
+
221
+ public abstract void setMaxWidthStretch();
222
+
187
223
  public abstract YogaValue getMaxHeight();
188
224
 
189
225
  public abstract void setMaxHeight(float maxheight);
190
226
 
191
227
  public abstract void setMaxHeightPercent(float percent);
192
228
 
229
+ public abstract void setMaxHeightMaxContent();
230
+
231
+ public abstract void setMaxHeightFitContent();
232
+
233
+ public abstract void setMaxHeightStretch();
234
+
193
235
  public abstract float getAspectRatio();
194
236
 
195
237
  public abstract void setAspectRatio(float aspectRatio);
196
238
 
197
- public abstract float getGap(YogaGutter gutter);
239
+ public abstract YogaValue getGap(YogaGutter gutter);
198
240
 
199
241
  public abstract void setGap(YogaGutter gutter, float gapLength);
200
242