react-native-tvos 0.85.3-0 → 0.86.0-0rc3

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 (675) hide show
  1. package/Libraries/Animated/AnimatedImplementation.js +6 -6
  2. package/Libraries/Animated/NativeAnimatedAllowlist.js +21 -0
  3. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  4. package/Libraries/Animated/components/AnimatedText.js +3 -3
  5. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  6. package/Libraries/Animated/nodes/AnimatedAddition.js +1 -1
  7. package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
  8. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +1 -1
  9. package/Libraries/Animated/nodes/AnimatedDivision.js +1 -1
  10. package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -24
  11. package/Libraries/Animated/nodes/AnimatedModulo.js +1 -1
  12. package/Libraries/Animated/nodes/AnimatedMultiplication.js +1 -1
  13. package/Libraries/Animated/nodes/AnimatedStyle.js +2 -2
  14. package/Libraries/Animated/nodes/AnimatedSubtraction.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedValue.js +2 -2
  17. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +4 -0
  18. package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -5
  19. package/Libraries/AppDelegate/RCTRootViewFactory.mm +2 -2
  20. package/Libraries/AppState/AppState.js +1 -1
  21. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  22. package/Libraries/Blob/RCTBlobCollector.h +1 -1
  23. package/Libraries/Blob/RCTBlobCollector.mm +14 -26
  24. package/Libraries/Blob/RCTBlobManager.mm +11 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +29 -23
  26. package/Libraries/Components/Keyboard/Keyboard.js +4 -2
  27. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  28. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -27
  29. package/Libraries/Components/Pressable/Pressable.d.ts +1 -0
  30. package/Libraries/Components/Pressable/Pressable.js +2 -2
  31. package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -8
  32. package/Libraries/Components/ScrollView/ScrollView.d.ts +1 -1
  33. package/Libraries/Components/ScrollView/ScrollView.js +4 -4
  34. package/Libraries/Components/ScrollView/ScrollViewCommands.js +2 -2
  35. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +2 -2
  36. package/Libraries/Components/Switch/Switch.js +1 -1
  37. package/Libraries/Components/TV/TVViewPropTypes.js +9 -0
  38. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +25 -1
  39. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +1 -1
  40. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +2 -2
  41. package/Libraries/Components/TextInput/TextInput.d.ts +24 -0
  42. package/Libraries/Components/TextInput/TextInput.flow.js +24 -0
  43. package/Libraries/Components/TextInput/TextInput.js +5 -5
  44. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +5 -5
  45. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +5 -5
  46. package/Libraries/Components/Touchable/PooledClass.js +4 -4
  47. package/Libraries/Components/Touchable/Touchable.js +1 -1
  48. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -10
  49. package/Libraries/Components/View/ReactNativeStyleAttributes.js +10 -2
  50. package/Libraries/Components/View/View.js +100 -91
  51. package/Libraries/Components/View/ViewPropTypes.js +3 -1
  52. package/Libraries/Core/Devtools/loadBundleFromServer.js +8 -0
  53. package/Libraries/Core/ExceptionsManager.js +2 -8
  54. package/Libraries/Core/InitializeCore.js +0 -13
  55. package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
  56. package/Libraries/Core/ReactNativeVersion.js +3 -3
  57. package/Libraries/Core/ReactNativeVersionCheck.js +1 -1
  58. package/Libraries/Core/Timers/JSTimers.js +2 -2
  59. package/Libraries/Core/Timers/immediateShim.js +1 -1
  60. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  61. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  62. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  63. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -5
  64. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -2
  65. package/Libraries/Image/Image.android.js +15 -35
  66. package/Libraries/Image/RCTImageLoader.mm +4 -2
  67. package/Libraries/Image/RelativeImageStub.js +2 -2
  68. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -12
  69. package/Libraries/Linking/Linking.js +1 -1
  70. package/Libraries/Lists/FlatList.js +1 -1
  71. package/Libraries/LogBox/LogBox.js +2 -2
  72. package/Libraries/LogBox/LogBoxInspectorContainer.js +24 -2
  73. package/Libraries/LogBox/LogBoxNotificationContainer.js +27 -4
  74. package/Libraries/LogBox/UI/LogBoxButton.js +47 -33
  75. package/Libraries/LogBox/UI/LogBoxInspector.js +61 -1
  76. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -0
  77. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +3 -1
  78. package/Libraries/LogBox/UI/LogBoxNotification.js +2 -0
  79. package/Libraries/Modal/Modal.js +12 -7
  80. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +0 -2
  81. package/Libraries/NativeComponent/BaseViewConfig.android.js +15 -0
  82. package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -0
  83. package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -2
  84. package/Libraries/NativeComponent/TVViewConfig.js +1 -0
  85. package/Libraries/NativeComponent/ViewConfigIgnore.js +4 -2
  86. package/Libraries/Network/RCTNetworking.android.js +1 -1
  87. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  88. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  89. package/Libraries/Network/RCTNetworking.mm +1 -2
  90. package/Libraries/Network/XMLHttpRequest.js +29 -12
  91. package/Libraries/Pressability/Pressability.js +2 -2
  92. package/Libraries/ReactNative/AppContainer-dev.js +2 -3
  93. package/Libraries/ReactNative/AppContainer-prod.js +1 -2
  94. package/Libraries/ReactNative/AppContainer.js +0 -1
  95. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  96. package/Libraries/ReactNative/AppRegistry.flow.js +1 -2
  97. package/Libraries/ReactNative/AppRegistryImpl.js +16 -16
  98. package/Libraries/ReactNative/DeprecatedPerformanceLoggerStub.js +83 -0
  99. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  100. package/Libraries/{Utilities → ReactNative}/IPerformanceLogger.d.ts +8 -5
  101. package/Libraries/{Utilities/IPerformanceLogger.js → ReactNative/IPerformanceLogger.flow.js} +12 -9
  102. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +14 -14
  103. package/Libraries/ReactNative/RendererImplementation.js +26 -143
  104. package/Libraries/ReactNative/RendererProxy.js +4 -15
  105. package/Libraries/ReactNative/renderApplication.js +33 -59
  106. package/Libraries/ReactNative/requireNativeComponent.js +3 -3
  107. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -0
  108. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -32
  109. package/Libraries/Settings/Settings.ios.js +1 -1
  110. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  111. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +3 -3
  112. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  113. package/Libraries/StyleSheet/StyleSheet.js.flow +2 -2
  114. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  115. package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
  116. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +6 -8
  117. package/Libraries/StyleSheet/StyleSheetTypes.js +11 -11
  118. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  119. package/Libraries/StyleSheet/private/_TransformStyle.js +1 -1
  120. package/Libraries/StyleSheet/processBackgroundImage.js +19 -9
  121. package/Libraries/StyleSheet/processBackgroundSize.js +7 -12
  122. package/Libraries/StyleSheet/processBoxShadow.js +9 -47
  123. package/Libraries/StyleSheet/processFilter.js +16 -8
  124. package/Libraries/StyleSheet/processTransformOrigin.js +10 -3
  125. package/Libraries/Text/Text.js +4 -4
  126. package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +16 -2
  127. package/Libraries/Text/TextNativeComponent.js +4 -4
  128. package/Libraries/TurboModule/RCTExport.js +1 -1
  129. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -3
  130. package/Libraries/Types/CodegenTypes.js +7 -4
  131. package/Libraries/Types/ReactDevToolsTypes.js +1 -1
  132. package/Libraries/Utilities/BackHandler.android.js +11 -3
  133. package/Libraries/Utilities/BackHandler.d.ts +11 -1
  134. package/Libraries/Utilities/BackHandler.ios.js +3 -1
  135. package/Libraries/Utilities/BackHandler.js.flow +6 -1
  136. package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
  137. package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
  138. package/Libraries/Utilities/binaryToBase64.js +1 -1
  139. package/Libraries/Utilities/codegenNativeCommands.js +2 -2
  140. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  141. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
  142. package/Libraries/Utilities/stringifySafe.js +1 -1
  143. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  144. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  145. package/Libraries/vendor/emitter/EventEmitter.js +27 -13
  146. package/README.md +13 -1
  147. package/React/Base/RCTBundleURLProvider.h +19 -1
  148. package/React/Base/RCTBundleURLProvider.mm +82 -0
  149. package/React/Base/RCTDefines.h +1 -1
  150. package/React/Base/RCTMultipartDataTask.h +1 -1
  151. package/React/Base/RCTMultipartDataTask.m +0 -3
  152. package/React/Base/RCTRootView.h +4 -0
  153. package/React/Base/RCTRootViewDelegate.h +5 -2
  154. package/React/Base/RCTVersion.m +3 -3
  155. package/React/Base/Surface/RCTSurface.h +3 -0
  156. package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
  157. package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
  158. package/React/Base/Surface/RCTSurfaceView.mm +2 -1
  159. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
  160. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
  161. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
  162. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
  163. package/React/CoreModules/RCTRedBox2AnsiParser.mm +1 -1
  164. package/React/CoreModules/RCTWebSocketModule.mm +45 -6
  165. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
  166. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
  167. package/React/DevSupport/RCTPackagerConnection.mm +13 -11
  168. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +108 -43
  169. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
  170. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
  171. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
  172. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +35 -15
  173. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
  174. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
  175. package/React/Fabric/RCTConversions.h +14 -0
  176. package/React/Fabric/RCTScheduler.mm +18 -0
  177. package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
  178. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
  179. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  180. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  181. package/React/Modules/RCTUIManager.mm +1 -1
  182. package/React/Profiler/RCTProfile.h +5 -0
  183. package/React/Profiler/RCTProfile.m +2 -1
  184. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  185. package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
  186. package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
  187. package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
  188. package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
  189. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
  190. package/React/Views/RCTLayout.m +4 -3
  191. package/React/Views/ScrollView/RCTScrollView.h +6 -2
  192. package/ReactAndroid/api/ReactAndroid.api +37 -27
  193. package/ReactAndroid/build.gradle.kts +28 -21
  194. package/ReactAndroid/gradle.properties +1 -1
  195. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
  197. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
  198. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
  199. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
  200. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
  201. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
  202. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
  203. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
  204. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
  205. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
  206. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
  210. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
  211. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
  213. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
  214. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
  215. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +9 -10
  216. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
  218. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
  219. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
  220. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
  221. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
  222. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
  223. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
  224. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
  225. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
  226. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
  227. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
  228. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
  229. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +41 -29
  230. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +71 -51
  231. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +15 -11
  232. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +16 -12
  233. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +79 -57
  234. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
  235. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
  236. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +15 -11
  237. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
  238. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
  239. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
  240. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +1 -1
  241. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
  242. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
  243. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
  244. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
  245. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
  246. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
  247. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
  248. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
  249. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
  250. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
  251. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
  252. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
  253. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
  254. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +18 -5
  255. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
  256. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
  257. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
  261. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
  262. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
  263. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
  264. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
  265. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
  266. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
  267. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
  268. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
  269. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
  270. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
  271. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
  272. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
  273. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
  274. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
  275. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
  276. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
  277. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
  278. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
  279. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
  280. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
  281. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
  282. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
  283. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
  284. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
  285. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
  286. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
  287. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +32 -24
  288. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
  289. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +33 -24
  290. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +60 -11
  291. package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
  292. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
  293. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
  294. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
  295. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
  296. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
  297. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
  298. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
  299. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
  300. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +85 -20
  301. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +46 -65
  302. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
  303. package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
  304. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
  305. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
  306. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
  307. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
  308. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
  309. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
  310. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
  311. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
  312. package/ReactAndroid/src/main/jni/CMakeLists.txt +10 -1
  313. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
  314. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
  315. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
  316. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
  317. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
  318. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
  319. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
  320. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
  321. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
  322. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
  323. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
  324. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
  325. package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
  326. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +97 -69
  327. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +21 -15
  328. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
  329. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
  330. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
  331. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
  332. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
  333. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
  334. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  335. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +10 -0
  336. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +7 -0
  337. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
  338. package/ReactCommon/React-Fabric.podspec +7 -0
  339. package/ReactCommon/React-FabricComponents.podspec +1 -1
  340. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  341. package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
  342. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
  343. package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
  344. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
  345. package/ReactCommon/jsi/jsi/decorator.h +93 -0
  346. package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
  347. package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
  348. package/ReactCommon/jsi/jsi/jsi.h +553 -224
  349. package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
  350. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
  351. package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
  352. package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
  353. package/ReactCommon/jsinspector-modern/HostAgent.cpp +10 -1
  354. package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
  355. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -2
  356. package/ReactCommon/jsinspector-modern/InspectorFlags.h +5 -2
  357. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
  358. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
  359. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
  360. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
  361. package/ReactCommon/logger/react_native_log.cpp +0 -1
  362. package/ReactCommon/react/bridging/Array.h +1 -1
  363. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +29 -21
  364. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +35 -25
  365. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +168 -132
  366. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +18 -14
  367. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +28 -20
  368. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +61 -43
  369. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
  370. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +9 -7
  371. package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
  372. package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
  373. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
  374. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
  375. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  376. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  377. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  378. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
  379. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +35 -25
  380. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +15 -11
  381. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
  382. package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
  383. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
  384. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
  385. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
  386. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
  387. package/ReactCommon/react/networking/NetworkReporter.h +0 -1
  388. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
  389. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
  390. package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
  391. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
  392. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
  393. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
  394. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
  395. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  396. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
  397. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
  398. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
  399. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
  400. package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
  401. package/ReactCommon/react/renderer/animations/utils.h +12 -1
  402. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
  403. package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
  404. package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
  405. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
  406. package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
  407. package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
  408. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
  409. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
  410. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
  411. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
  412. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +15 -0
  413. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +1 -0
  414. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
  415. package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
  416. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  417. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
  418. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
  419. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
  420. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
  421. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
  422. package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
  423. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +71 -5
  424. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +1 -0
  425. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
  426. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
  427. package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
  428. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  429. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
  430. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
  431. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
  432. package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
  433. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
  434. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
  435. package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
  436. package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
  437. package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
  438. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
  439. package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
  440. package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
  441. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
  442. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
  443. package/ReactCommon/react/renderer/core/Props.cpp +20 -0
  444. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  445. package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
  446. package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
  447. package/ReactCommon/react/renderer/core/conversions.h +4 -0
  448. package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
  449. package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
  450. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
  451. package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
  452. package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
  453. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
  454. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
  455. package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
  456. package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
  457. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
  458. package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
  459. package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
  460. package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
  461. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
  462. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
  463. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
  464. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
  465. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
  466. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
  467. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
  468. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
  469. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
  470. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
  471. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
  472. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
  473. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
  474. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
  475. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
  476. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
  477. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
  478. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
  479. package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
  480. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
  481. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
  482. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
  483. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
  484. package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
  485. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  486. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
  487. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
  488. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
  489. package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
  490. package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
  491. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
  492. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
  493. package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
  494. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +37 -0
  495. package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
  496. package/ReactCommon/react/timing/React-timing.podspec +2 -0
  497. package/ReactCommon/react/timing/primitives.h +33 -1
  498. package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
  499. package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
  500. package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
  501. package/ReactCommon/yoga/yoga/YGNode.h +1 -1
  502. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
  503. package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
  504. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
  505. package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
  506. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
  507. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
  508. package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
  509. package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
  510. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
  511. package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
  512. package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
  513. package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
  514. package/ReactCommon/yoga/yoga/event/event.h +1 -0
  515. package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
  516. package/ReactCommon/yoga/yoga/node/Node.h +4 -4
  517. package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
  518. package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
  519. package/ReactCommon/yoga/yoga/style/Style.h +261 -71
  520. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
  521. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  522. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
  523. package/cli.js +1 -1
  524. package/flow/HermesInternalType.js +1 -1
  525. package/flow/bom.js.flow +95 -3
  526. package/flow/dom.js.flow +89 -89
  527. package/gradle/libs.versions.toml +3 -1
  528. package/index.js +30 -3
  529. package/index.js.flow +23 -1
  530. package/package.json +11 -11
  531. package/react-native.config.js +3 -3
  532. package/scripts/cocoapods/rncore.rb +65 -11
  533. package/scripts/cocoapods/rndependencies.rb +65 -11
  534. package/scripts/cocoapods/utils.rb +52 -0
  535. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
  536. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
  537. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
  538. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
  539. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
  540. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
  541. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
  542. package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
  543. package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
  544. package/scripts/codegen/generate-specs-cli-executor.js +1 -1
  545. package/scripts/generate-codegen-artifacts.js +20 -2
  546. package/scripts/generate-provider-cli.js +1 -1
  547. package/scripts/react_native_pods.rb +25 -2
  548. package/scripts/react_native_pods_utils/script_phases.rb +9 -3
  549. package/scripts/replace-rncore-version.js +20 -0
  550. package/scripts/xcode/with-environment.sh +7 -1
  551. package/sdks/.hermesv1version +1 -1
  552. package/sdks/.hermesversion +1 -1
  553. package/sdks/hermes-engine/hermes-utils.rb +92 -5
  554. package/sdks/hermes-engine/version.properties +2 -2
  555. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  556. package/src/private/animated/createAnimatedPropsHook.js +2 -2
  557. package/src/private/components/virtualcollection/FlingConstants.js +21 -0
  558. package/src/private/components/virtualcollection/Virtual.js +62 -0
  559. package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
  560. package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
  561. package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
  562. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
  563. package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
  564. package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
  565. package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
  566. package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
  567. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
  568. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
  569. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
  570. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  571. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  572. package/src/private/featureflags/ReactNativeFeatureFlags.js +41 -37
  573. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  574. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -7
  575. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  576. package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
  577. package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
  578. package/src/private/renderer/events/ReactNativeResponder.js +687 -0
  579. package/src/private/renderer/events/ResponderEvent.js +40 -0
  580. package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
  581. package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
  582. package/src/private/setup/setUpDOM.js +20 -0
  583. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
  584. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
  585. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  586. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  587. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  588. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
  589. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
  590. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
  591. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
  592. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
  593. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
  594. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  595. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
  596. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
  597. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  598. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
  599. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  600. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
  601. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
  602. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
  603. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
  604. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
  605. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
  606. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  607. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
  608. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  609. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  610. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
  611. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  612. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
  613. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
  614. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  615. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  616. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
  617. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
  618. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  619. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
  620. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
  621. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
  622. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
  623. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
  624. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
  625. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  626. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  627. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
  628. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
  629. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
  630. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
  631. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
  632. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
  633. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
  634. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  635. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
  636. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
  637. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
  638. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
  639. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
  640. package/src/private/styles/composeStyles.js +1 -1
  641. package/src/private/types/HostComponent.js +1 -1
  642. package/src/private/utilities/toExtendedError.js +1 -1
  643. package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
  644. package/src/private/webapis/dom/events/Event.js +10 -1
  645. package/src/private/webapis/dom/events/EventTarget.js +60 -18
  646. package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
  647. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
  648. package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
  649. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
  650. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
  651. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
  652. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
  653. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  654. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
  655. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
  656. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
  657. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
  658. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
  659. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  660. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  661. package/src/private/webapis/webidl/PlatformObjects.js +4 -4
  662. package/types/public/ReactNativeTVTypes.d.ts +9 -0
  663. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
  664. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
  665. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
  666. package/Libraries/Renderer/shims/ReactNative.js +0 -27
  667. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
  668. package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
  669. package/Libraries/Utilities/createPerformanceLogger.js +0 -329
  670. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
  671. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
  672. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
  673. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
  674. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
  675. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
@@ -101,6 +101,7 @@ public class ReactScrollView extends ScrollView
101
101
  private final VelocityHelper mVelocityHelper = new VelocityHelper();
102
102
  private final Rect mTempRect = new Rect();
103
103
  private final ValueAnimator DEFAULT_FLING_ANIMATOR = ObjectAnimator.ofInt(this, "scrollY", 0, 0);
104
+ private final @Nullable FpsListener mFpsListener;
104
105
 
105
106
  private Rect mOverflowInset;
106
107
  private @Nullable VirtualViewContainerState mVirtualViewContainerState;
@@ -113,7 +114,6 @@ public class ReactScrollView extends ScrollView
113
114
  private boolean mRemoveClippedSubviews;
114
115
  private boolean mScrollEnabled;
115
116
  private boolean mSendMomentumEvents;
116
- private @Nullable FpsListener mFpsListener;
117
117
  private @Nullable String mScrollPerfTag;
118
118
  private @Nullable Drawable mEndBackground;
119
119
  private int mEndFillColor;
@@ -298,6 +298,7 @@ public class ReactScrollView extends ScrollView
298
298
  mScrollEnabled = scrollEnabled;
299
299
  }
300
300
 
301
+ @Override
301
302
  public boolean getScrollEnabled() {
302
303
  return mScrollEnabled;
303
304
  }
@@ -519,29 +520,39 @@ public class ReactScrollView extends ScrollView
519
520
  }
520
521
 
521
522
  /**
522
- * Attempts to scroll-snap to the focused child based on snapToAlignment/scrollSnapAlign.
523
- * Returns true if snap scrolling was performed, false otherwise.
523
+ * Attempts to scroll-snap to the focused child based on snapToAlignment/scrollSnapAlign
524
+ * or scrollSnapOffset. Returns true if snap scrolling was performed, false otherwise.
524
525
  */
525
526
  private boolean tryScrollSnapToChild(View focused) {
526
527
  if (mSnapToAlignment != SNAP_ALIGNMENT_ITEM) {
527
528
  return false;
528
529
  }
529
530
 
530
- kotlin.Pair<View, String> result = ReactScrollViewHelper.findScrollSnapAlign(focused, this);
531
+ kotlin.Triple<View, String, Integer> result =
532
+ ReactScrollViewHelper.findScrollSnap(focused, this);
531
533
  if (result == null) {
532
534
  return false;
533
535
  }
534
536
 
535
537
  View snapTarget = result.getFirst();
536
538
  String alignment = result.getSecond();
539
+ Integer snapOffset = result.getThird();
537
540
 
538
541
  Rect rect = new Rect();
539
542
  snapTarget.getDrawingRect(rect);
540
543
  offsetDescendantRectToMyCoords(snapTarget, rect);
541
544
 
542
- int viewportHeight = getHeight() - getPaddingTop() - getPaddingBottom();
543
545
  int maxScrollY = getMaxScrollY();
544
546
 
547
+ if (snapOffset != null) {
548
+ int targetOffset = ReactScrollViewHelper.computeScrollSnapTargetForOffset(
549
+ rect.top, snapOffset, mSnapInterval, maxScrollY);
550
+ reactSmoothScrollTo(getScrollX(), targetOffset);
551
+ return true;
552
+ }
553
+
554
+ int viewportHeight = getHeight() - getPaddingTop() - getPaddingBottom();
555
+
545
556
  Integer targetOffset = ReactScrollViewHelper.computeScrollSnapOffset(
546
557
  rect.top, rect.bottom, viewportHeight, alignment, mSnapInterval, mSnapToItemPadding, maxScrollY);
547
558
  if (targetOffset == null) {
@@ -783,6 +794,7 @@ public class ReactScrollView extends ScrollView
783
794
  float vScroll = ev.getAxisValue(MotionEvent.AXIS_VSCROLL);
784
795
  if (vScroll != 0) {
785
796
  // Perform the scroll
797
+ enableFpsListener();
786
798
  boolean result = super.dispatchGenericMotionEvent(ev);
787
799
  // Schedule snap alignment to run after scrolling stops
788
800
  if (result
@@ -793,6 +805,7 @@ public class ReactScrollView extends ScrollView
793
805
  // Cancel any pending post-touch runnable and reschedule
794
806
  if (mPostTouchRunnable != null) {
795
807
  removeCallbacks(mPostTouchRunnable);
808
+ mPostTouchRunnable = null;
796
809
  }
797
810
  mPostTouchRunnable =
798
811
  new Runnable() {
@@ -806,9 +819,12 @@ public class ReactScrollView extends ScrollView
806
819
  velocityY = 0;
807
820
  }
808
821
  flingAndSnap(velocityY);
822
+ handlePostTouchScrolling(0, velocityY);
809
823
  }
810
824
  };
811
825
  postOnAnimationDelayed(mPostTouchRunnable, ReactScrollViewHelper.MOMENTUM_DELAY);
826
+ } else {
827
+ handlePostTouchScrolling(0, 0);
812
828
  }
813
829
  return result;
814
830
  }
@@ -871,14 +887,6 @@ public class ReactScrollView extends ScrollView
871
887
  }
872
888
  }
873
889
 
874
- @Override
875
- public boolean getClipToPadding() {
876
- if (ReactNativeFeatureFlags.syncAndroidClipToPaddingWithOverflow()) {
877
- return mOverflow != Overflow.VISIBLE;
878
- }
879
- return super.getClipToPadding();
880
- }
881
-
882
890
  @Override
883
891
  public void getClippingRect(Rect outClippingRect) {
884
892
  outClippingRect.set(Assertions.assertNotNull(mClippingRect));
@@ -972,6 +980,7 @@ public class ReactScrollView extends ScrollView
972
980
  }
973
981
 
974
982
  @Nullable
983
+ @Override
975
984
  public StateWrapper getStateWrapper() {
976
985
  return mStateWrapper;
977
986
  }
@@ -1437,6 +1446,7 @@ public class ReactScrollView extends ScrollView
1437
1446
  * <p>`smoothScrollTo` changes `contentOffset` and we need to keep `contentOffset` in sync between
1438
1447
  * scroll view and state. Calling raw `smoothScrollTo` doesn't update state.
1439
1448
  */
1449
+ @Override
1440
1450
  public void reactSmoothScrollTo(int x, int y) {
1441
1451
  if (mScrollAnimationEnabled || !UiModeUtils.isTVDevice(getContext())) {
1442
1452
  ReactScrollViewHelper.smoothScrollTo(this, x, y);
@@ -1551,10 +1561,6 @@ public class ReactScrollView extends ScrollView
1551
1561
  return;
1552
1562
  }
1553
1563
 
1554
- if (mMaintainVisibleContentPositionHelper != null) {
1555
- mMaintainVisibleContentPositionHelper.updateScrollPosition();
1556
- }
1557
-
1558
1564
  if (isShown() && isContentReady()) {
1559
1565
  int currentScrollY = getScrollY();
1560
1566
  int maxScrollY = getMaxScrollY();
@@ -1612,11 +1618,12 @@ public class ReactScrollView extends ScrollView
1612
1618
  * and that you are **not** overriding the ScrollView content view to pass in a `translateY`
1613
1619
  * style. `translateY` must never be set from ReactJS while using this feature!
1614
1620
  */
1615
- public void setScrollAwayTopPaddingEnabledUnstable(int topPadding) {
1616
- setScrollAwayTopPaddingEnabledUnstable(topPadding, true);
1621
+ public void setScrollAwayPaddingEnabledUnstable(int topPadding, int bottomPadding) {
1622
+ setScrollAwayPaddingEnabledUnstable(topPadding, bottomPadding, true);
1617
1623
  }
1618
1624
 
1619
- public void setScrollAwayTopPaddingEnabledUnstable(int topPadding, boolean updateState) {
1625
+ public void setScrollAwayPaddingEnabledUnstable(
1626
+ int topPadding, int bottomPadding, boolean updateState) {
1620
1627
  int count = getChildCount();
1621
1628
 
1622
1629
  Assertions.assertCondition(
@@ -1633,17 +1640,18 @@ public class ReactScrollView extends ScrollView
1633
1640
  // Add the topPadding value as the bottom padding for the ScrollView.
1634
1641
  // Otherwise, we'll push down the contents of the scroll view down too
1635
1642
  // far off screen.
1636
- setPadding(0, 0, 0, topPadding);
1643
+ setPadding(0, 0, 0, topPadding + bottomPadding);
1637
1644
  }
1638
1645
 
1639
1646
  if (updateState) {
1640
- updateScrollAwayState(topPadding);
1647
+ updateScrollAwayState(topPadding, bottomPadding);
1641
1648
  }
1642
1649
  setRemoveClippedSubviews(mRemoveClippedSubviews);
1643
1650
  }
1644
1651
 
1645
- private void updateScrollAwayState(int scrollAwayPaddingTop) {
1652
+ private void updateScrollAwayState(int scrollAwayPaddingTop, int scrollAwayPaddingBottom) {
1646
1653
  getReactScrollViewScrollState().setScrollAwayPaddingTop(scrollAwayPaddingTop);
1654
+ getReactScrollViewScrollState().setScrollAwayPaddingBottom(scrollAwayPaddingBottom);
1647
1655
  ReactScrollViewHelper.forceUpdateState(this);
1648
1656
  }
1649
1657
 
@@ -1652,7 +1660,8 @@ public class ReactScrollView extends ScrollView
1652
1660
  mReactScrollViewScrollState = scrollState;
1653
1661
  if (ReactNativeFeatureFlags.enableViewCulling()
1654
1662
  || ReactNativeFeatureFlags.useTraitHiddenOnAndroid()) {
1655
- setScrollAwayTopPaddingEnabledUnstable(scrollState.getScrollAwayPaddingTop(), false);
1663
+ setScrollAwayPaddingEnabledUnstable(
1664
+ scrollState.getScrollAwayPaddingTop(), scrollState.getScrollAwayPaddingBottom(), false);
1656
1665
 
1657
1666
  Point scrollPosition = scrollState.getLastStateUpdateScroll();
1658
1667
  scrollTo(scrollPosition.x, scrollPosition.y);
@@ -31,7 +31,6 @@ import com.facebook.react.uimanager.ReactClippingViewGroup
31
31
  import com.facebook.react.uimanager.StateWrapper
32
32
  import com.facebook.react.uimanager.UIManagerHelper
33
33
  import com.facebook.react.uimanager.common.UIManagerType
34
- import com.facebook.react.uimanager.common.ViewUtil
35
34
  import com.facebook.react.views.view.ReactViewGroup
36
35
  import java.lang.ref.WeakReference
37
36
  import java.util.concurrent.CopyOnWriteArrayList
@@ -46,6 +45,7 @@ public object ReactScrollViewHelper {
46
45
  private const val CONTENT_OFFSET_LEFT = "contentOffsetLeft"
47
46
  private const val CONTENT_OFFSET_TOP = "contentOffsetTop"
48
47
  private const val SCROLL_AWAY_PADDING_TOP = "scrollAwayPaddingTop"
48
+ private const val SCROLL_AWAY_PADDING_BOTTOM = "scrollAwayPaddingBottom"
49
49
 
50
50
  public const val MOMENTUM_DELAY: Long = 20
51
51
  public const val OVER_SCROLL_ALWAYS: String = "always"
@@ -351,9 +351,6 @@ public object ReactScrollViewHelper {
351
351
  scrollY,
352
352
  )
353
353
  }
354
- if (ViewUtil.getUIManagerType(scrollView.id) == UIManagerType.LEGACY) {
355
- return
356
- }
357
354
  // NOTE: if the state wrapper is null, we shouldn't even update
358
355
  // the scroll state because there is a chance of going out of sync!
359
356
  if (scrollView.stateWrapper == null) {
@@ -377,6 +374,7 @@ public object ReactScrollViewHelper {
377
374
  where T : HasScrollState?, T : HasStateWrapper?, T : ViewGroup {
378
375
  val scrollState = scrollView.reactScrollViewScrollState
379
376
  val scrollAwayPaddingTop = scrollState.scrollAwayPaddingTop
377
+ val scrollAwayPaddingBottom = scrollState.scrollAwayPaddingBottom
380
378
  val scrollPos = scrollState.lastStateUpdateScroll
381
379
  val scrollX = scrollPos.x
382
380
  val scrollY = scrollPos.y
@@ -398,6 +396,10 @@ public object ReactScrollViewHelper {
398
396
  SCROLL_AWAY_PADDING_TOP,
399
397
  toDIPFromPixel(scrollAwayPaddingTop.toFloat()).toDouble(),
400
398
  )
399
+ newStateData.putDouble(
400
+ SCROLL_AWAY_PADDING_BOTTOM,
401
+ toDIPFromPixel(scrollAwayPaddingBottom.toFloat()).toDouble(),
402
+ )
401
403
  stateWrapper.updateState(newStateData)
402
404
  }
403
405
  }
@@ -418,9 +420,14 @@ public object ReactScrollViewHelper {
418
420
  val scrollX = toPixelFromDIP(stateData.getDouble(CONTENT_OFFSET_LEFT)).toInt()
419
421
  val scrollY = toPixelFromDIP(stateData.getDouble(CONTENT_OFFSET_TOP)).toInt()
420
422
  val scrollAwayPaddingTop = toPixelFromDIP(stateData.getDouble(SCROLL_AWAY_PADDING_TOP)).toInt()
423
+ val scrollAwayPaddingBottom =
424
+ toPixelFromDIP(stateData.getDouble(SCROLL_AWAY_PADDING_BOTTOM)).toInt()
421
425
 
422
426
  val scrollState =
423
- scrollView.reactScrollViewScrollState.copy(scrollAwayPaddingTop = scrollAwayPaddingTop)
427
+ scrollView.reactScrollViewScrollState.copy(
428
+ scrollAwayPaddingTop = scrollAwayPaddingTop,
429
+ scrollAwayPaddingBottom = scrollAwayPaddingBottom,
430
+ )
424
431
  scrollState.setLastStateUpdateScroll(scrollX, scrollY)
425
432
  scrollView.reactScrollViewScrollState = scrollState
426
433
  }
@@ -569,27 +576,67 @@ public object ReactScrollViewHelper {
569
576
 
570
577
  /**
571
578
  * Walks up the view hierarchy from the focused view to find a ReactViewGroup with
572
- * scrollSnapAlign set. Returns a Pair of (snapTarget, alignment) or null if not found.
579
+ * either scrollSnapAlign or scrollSnapOffset set. Returns a Triple of (snapTarget,
580
+ * alignment, offsetPx) or null if neither marker was found. Exactly one of
581
+ * alignment/offsetPx is non-null on return.
582
+ *
583
+ * Walk is inner→outer, latest marker wins. On a single view declaring both,
584
+ * scrollSnapOffset wins as the more specific config.
573
585
  *
574
586
  * Shared by [ReactScrollView] and [ReactHorizontalScrollView].
575
587
  */
576
588
  @JvmStatic
577
- public fun findScrollSnapAlign(focused: View, scrollView: ViewGroup): Pair<View, String>? {
589
+ public fun findScrollSnap(focused: View, scrollView: ViewGroup): Triple<View, String?, Int?>? {
578
590
  var view: View? = focused
579
591
  var snapTarget: View? = null
580
592
  var alignment: String? = null
593
+ var offset: Int? = null
581
594
  while (view != null && view !== scrollView) {
582
595
  if (view is ReactViewGroup) {
583
- val snap = view.scrollSnapAlign
584
- if (snap != null) {
585
- alignment = snap
596
+ val o = view.scrollSnapOffset
597
+ val a = view.scrollSnapAlign
598
+ if (o != null) {
599
+ offset = o
600
+ alignment = null
601
+ snapTarget = view
602
+ } else if (a != null) {
603
+ alignment = a
604
+ offset = null
586
605
  snapTarget = view
587
606
  }
588
607
  }
589
608
  val parent = view.parent
590
609
  view = if (parent is View) parent else null
591
610
  }
592
- return if (alignment != null && snapTarget != null) Pair(snapTarget, alignment) else null
611
+ return if (snapTarget != null && (alignment != null || offset != null))
612
+ Triple(snapTarget, alignment, offset) else null
613
+ }
614
+
615
+ /**
616
+ * Computes the target scroll offset for the per-item scrollSnapOffset path:
617
+ * land the snap target's leading edge at `snapOffset` pixels from the viewport origin.
618
+ *
619
+ * Returns the clamped target offset.
620
+ *
621
+ * Shared by [ReactScrollView] and [ReactHorizontalScrollView].
622
+ *
623
+ * @param focusedStart the start coordinate of the snap target in scroll view coordinates
624
+ * @param snapOffset the per-item pixel offset from the viewport origin
625
+ * @param snapInterval the snap interval (0 if not set)
626
+ * @param maxScrollOffset the maximum scroll offset for clamping
627
+ */
628
+ @JvmStatic
629
+ public fun computeScrollSnapTargetForOffset(
630
+ focusedStart: Int,
631
+ snapOffset: Int,
632
+ snapInterval: Int,
633
+ maxScrollOffset: Int,
634
+ ): Int {
635
+ var targetOffset = focusedStart - snapOffset
636
+ if (snapInterval > 0) {
637
+ targetOffset = (Math.floor(targetOffset.toDouble() / snapInterval) * snapInterval).toInt()
638
+ }
639
+ return Math.max(0, Math.min(targetOffset, maxScrollOffset))
593
640
  }
594
641
 
595
642
  /**
@@ -691,6 +738,8 @@ public object ReactScrollViewHelper {
691
738
  val finalAnimatedPositionScroll: Point = Point(),
692
739
  /** Get the padding on the top for nav bar */
693
740
  var scrollAwayPaddingTop: Int = 0,
741
+ /** Get the padding on the bottom for tab bar */
742
+ var scrollAwayPaddingBottom: Int = 0,
694
743
  /** Get the Fabric state of last scroll position */
695
744
  val lastStateUpdateScroll: Point = Point(-1, -1),
696
745
  /** Get true if the previous animation was canceled */
@@ -7,10 +7,10 @@
7
7
 
8
8
  package com.facebook.react.views.text
9
9
 
10
- import android.content.Context
11
10
  import android.graphics.Rect
12
11
  import android.text.Layout
13
12
  import android.text.TextPaint
13
+ import android.util.DisplayMetrics
14
14
  import com.facebook.react.bridge.Arguments
15
15
  import com.facebook.react.bridge.WritableArray
16
16
  import com.facebook.react.bridge.buildReadableMap
@@ -22,8 +22,7 @@ internal object FontMetricsUtil {
22
22
  private const val AMPLIFICATION_FACTOR = 100f
23
23
 
24
24
  @JvmStatic
25
- fun getFontMetrics(text: CharSequence, layout: Layout, context: Context): WritableArray {
26
- val dm = context.resources.displayMetrics
25
+ fun getFontMetrics(text: CharSequence, layout: Layout, dm: DisplayMetrics): WritableArray {
27
26
  val lines = Arguments.createArray()
28
27
 
29
28
  // To calculate xHeight and capHeight we have to render an "x" and "T" and manually measure
@@ -26,37 +26,29 @@ import android.view.View;
26
26
  import android.view.ViewGroup;
27
27
  import androidx.annotation.Nullable;
28
28
  import androidx.appcompat.widget.AppCompatTextView;
29
- import androidx.appcompat.widget.TintContextWrapper;
30
29
  import androidx.core.view.AccessibilityDelegateCompat;
31
30
  import androidx.core.view.ViewCompat;
32
31
  import androidx.customview.widget.ExploreByTouchHelper;
33
32
  import com.facebook.react.views.common.UiModeUtils;
34
33
  import com.facebook.common.logging.FLog;
35
- import com.facebook.infer.annotation.Assertions;
36
34
  import com.facebook.infer.annotation.Nullsafe;
37
35
  import com.facebook.react.bridge.Arguments;
38
- import com.facebook.react.bridge.ReactContext;
39
36
  import com.facebook.react.bridge.WritableMap;
40
37
  import com.facebook.react.common.ReactConstants;
41
38
  import com.facebook.react.common.annotations.UnstableReactNativeAPI;
42
- import com.facebook.react.common.build.ReactBuildConfig;
43
39
  import com.facebook.react.internal.SystraceSection;
44
40
  import com.facebook.react.uimanager.BackgroundStyleApplicator;
45
41
  import com.facebook.react.uimanager.LengthPercentage;
46
42
  import com.facebook.react.uimanager.LengthPercentageType;
47
43
  import com.facebook.react.uimanager.PixelUtil;
48
44
  import com.facebook.react.uimanager.ReactCompoundView;
49
- import com.facebook.react.uimanager.UIManagerModule;
50
45
  import com.facebook.react.uimanager.ViewDefaults;
51
- import com.facebook.react.uimanager.common.UIManagerType;
52
- import com.facebook.react.uimanager.common.ViewUtil;
53
46
  import com.facebook.react.uimanager.style.BorderRadiusProp;
54
47
  import com.facebook.react.uimanager.style.BorderStyle;
55
48
  import com.facebook.react.uimanager.style.LogicalEdge;
56
49
  import com.facebook.react.uimanager.style.Overflow;
57
50
  import com.facebook.react.views.text.internal.span.ReactFragmentIndexSpan;
58
51
  import com.facebook.react.views.text.internal.span.ReactTagSpan;
59
- import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan;
60
52
  import com.facebook.yoga.YogaMeasureMode;
61
53
 
62
54
  @Nullsafe(Nullsafe.Mode.LOCAL)
@@ -206,164 +198,14 @@ public class ReactTextView extends AppCompatTextView implements ReactCompoundVie
206
198
  return json;
207
199
  }
208
200
 
209
- private ReactContext getReactContext() {
210
- Context context = getContext();
211
- return (context instanceof TintContextWrapper)
212
- ? (ReactContext) ((TintContextWrapper) context).getBaseContext()
213
- : (ReactContext) context;
214
- }
215
-
216
201
  @Override
217
202
  protected void onLayout(
218
203
  boolean changed, int textViewLeft, int textViewTop, int textViewRight, int textViewBottom) {
219
204
  // TODO T62882314: Delete this method when Fabric is fully released in OSS
220
- int reactTag = getId();
221
- if (!(getText() instanceof Spanned)
222
- || ViewUtil.getUIManagerType(reactTag) == UIManagerType.FABRIC
223
- || ReactBuildConfig.UNSTABLE_ENABLE_MINIFY_LEGACY_ARCHITECTURE) {
224
- /**
225
- * In general, {@link #setText} is called via {@link ReactTextViewManager#updateExtraData}
226
- * before we are laid out. This ordering is a requirement because we utilize the data from
227
- * setText in onLayout.
228
- *
229
- * <p>However, it's possible for us to get an extra layout before we've received our setText
230
- * call. If this happens before the initial setText call, then getText() will have its default
231
- * value which isn't a Spanned and we need to bail out. That's fine because we'll get a
232
- * setText followed by a layout later.
233
- *
234
- * <p>The cause for the extra early layout is that an ancestor gets transitioned from a
235
- * layout-only node to a non layout-only node.
236
- */
237
- return;
238
- }
239
-
240
- ReactContext reactContext = getReactContext();
241
- UIManagerModule uiManager =
242
- Assertions.assertNotNull(reactContext.getNativeModule(UIManagerModule.class));
243
-
244
- Spanned text = (Spanned) getText();
245
- Layout layout = getLayout();
246
- if (layout == null) {
247
- // Text layout is calculated during pre-draw phase, so in some cases it can be empty during
248
- // layout phase, which usually happens before drawing.
249
- // The text layout is created by private {@link assumeLayout} method, which we can try to
250
- // invoke directly through reflection or indirectly through some methods that compute it
251
- // (e.g. {@link getExtendedPaddingTop}).
252
- // It is safer, however, to just early return here, as next measure/layout passes are way more
253
- // likely to have the text layout computed.
254
- return;
255
- }
256
-
257
- TextInlineViewPlaceholderSpan[] placeholders =
258
- text.getSpans(0, text.length(), TextInlineViewPlaceholderSpan.class);
259
- int textViewWidth = textViewRight - textViewLeft;
260
- int textViewHeight = textViewBottom - textViewTop;
261
-
262
- for (TextInlineViewPlaceholderSpan placeholder : placeholders) {
263
- View child = uiManager.resolveView(placeholder.getReactTag());
264
-
265
- if (child == null) {
266
- continue;
267
- }
268
-
269
- int start = text.getSpanStart(placeholder);
270
- int line = layout.getLineForOffset(start);
271
- boolean isLineTruncated = layout.getEllipsisCount(line) > 0;
272
-
273
- if ( // This truncation check works well on recent versions of Android (tested on 5.1.1 and
274
- // 6.0.1) but not on Android 4.4.4. The reason is that getEllipsisCount is buggy on
275
- // Android 4.4.4. Specifically, it incorrectly returns 0 if an inline view is the first
276
- // thing to be truncated.
277
- (isLineTruncated && start >= layout.getLineStart(line) + layout.getEllipsisStart(line))
278
- ||
279
-
280
- // This truncation check works well on Android 4.4.4 but not on others (e.g. 6.0.1).
281
- // On Android 4.4.4, getLineEnd returns the first truncated character whereas on 6.0.1,
282
- // it appears to return the position after the last character on the line even if that
283
- // character is truncated.
284
- line >= mNumberOfLines
285
- || start >= layout.getLineEnd(line)) {
286
- // On some versions of Android (e.g. 4.4.4, 5.1.1), getPrimaryHorizontal can infinite
287
- // loop when called on a character that appears after the ellipsis. Avoid this bug by
288
- // special casing the character truncation case.
289
- child.setVisibility(View.GONE);
290
- } else {
291
- int width = placeholder.getWidth();
292
- int height = placeholder.getHeight();
293
-
294
- // Calculate if the direction of the placeholder character is Right-To-Left.
295
- boolean isRtlChar = layout.isRtlCharAt(start);
296
-
297
- boolean isRtlParagraph = layout.getParagraphDirection(line) == Layout.DIR_RIGHT_TO_LEFT;
298
-
299
- int placeholderHorizontalPosition;
300
- // There's a bug on Samsung devices where calling getPrimaryHorizontal on
301
- // the last offset in the layout will result in an endless loop. Work around
302
- // this bug by avoiding getPrimaryHorizontal in that case.
303
- if (start == text.length() - 1) {
304
- boolean endsWithNewLine =
305
- text.length() > 0 && text.charAt(layout.getLineEnd(line) - 1) == '\n';
306
- float lineWidth = endsWithNewLine ? layout.getLineMax(line) : layout.getLineWidth(line);
307
- placeholderHorizontalPosition =
308
- isRtlParagraph
309
- // Equivalent to `layout.getLineLeft(line)` but `getLineLeft` returns incorrect
310
- // values when the paragraph is RTL and `setSingleLine(true)`.
311
- ? textViewWidth - (int) lineWidth
312
- : (int) layout.getLineRight(line) - width;
313
- } else {
314
- // The direction of the paragraph may not be exactly the direction the string is heading
315
- // in at the
316
- // position of the placeholder. So, if the direction of the character is the same as the
317
- // paragraph
318
- // use primary, secondary otherwise.
319
- boolean characterAndParagraphDirectionMatch = isRtlParagraph == isRtlChar;
320
-
321
- placeholderHorizontalPosition =
322
- characterAndParagraphDirectionMatch
323
- ? (int) layout.getPrimaryHorizontal(start)
324
- : (int) layout.getSecondaryHorizontal(start);
325
-
326
- if (isRtlParagraph) {
327
- // Adjust `placeholderHorizontalPosition` to work around an Android bug.
328
- // The bug is when the paragraph is RTL and `setSingleLine(true)`, some layout
329
- // methods such as `getPrimaryHorizontal`, `getSecondaryHorizontal`, and
330
- // `getLineRight` return incorrect values. Their return values seem to be off
331
- // by the same number of pixels so subtracting these values cancels out the error.
332
- //
333
- // The result is equivalent to bugless versions of
334
- // `getPrimaryHorizontal`/`getSecondaryHorizontal`.
335
- placeholderHorizontalPosition =
336
- textViewWidth - ((int) layout.getLineRight(line) - placeholderHorizontalPosition);
337
- }
338
-
339
- if (isRtlChar) {
340
- placeholderHorizontalPosition -= width;
341
- }
342
- }
343
-
344
- int leftRelativeToTextView =
345
- isRtlChar
346
- ? placeholderHorizontalPosition + getTotalPaddingRight()
347
- : placeholderHorizontalPosition + getTotalPaddingLeft();
348
-
349
- int left = textViewLeft + leftRelativeToTextView;
350
-
351
- // Vertically align the inline view to the baseline of the line of text.
352
- int topRelativeToTextView = getTotalPaddingTop() + layout.getLineBaseline(line) - height;
353
- int top = textViewTop + topRelativeToTextView;
354
-
355
- boolean isFullyClipped =
356
- textViewWidth <= leftRelativeToTextView || textViewHeight <= topRelativeToTextView;
357
- int layoutVisibility = isFullyClipped ? View.GONE : View.VISIBLE;
358
- int layoutLeft = left;
359
- int layoutTop = top;
360
- int layoutRight = left + width;
361
- int layoutBottom = top + height;
362
-
363
- child.setVisibility(layoutVisibility);
364
- child.layout(layoutLeft, layoutTop, layoutRight, layoutBottom);
365
- }
366
- }
205
+ // In Fabric, setText is called via ReactTextViewManager#updateExtraData
206
+ // before we are laid out. This ordering is a requirement because we utilize the data from
207
+ // setText in onLayout. The early return here is safe because the text layout is handled
208
+ // correctly in Fabric.
367
209
  }
368
210
 
369
211
  @Override
@@ -604,6 +446,7 @@ public class ReactTextView extends AppCompatTextView implements ReactCompoundVie
604
446
  mShouldAdjustSpannableFontSize = true;
605
447
  }
606
448
 
449
+ @Override
607
450
  public void setLetterSpacing(float letterSpacing) {
608
451
  if (Float.isNaN(letterSpacing)) {
609
452
  return;
@@ -157,7 +157,7 @@ public constructor(
157
157
  state.getMapBuffer(TX_STATE_KEY_PARAGRAPH_ATTRIBUTES.toInt())
158
158
  val spanned: Spannable =
159
159
  TextLayoutManager.getOrCreateSpannableForText(
160
- view.context,
160
+ view.context.assets,
161
161
  attributedString,
162
162
  reactTextViewManagerCallback,
163
163
  )