react-native-tvos 0.85.3-0 → 0.86.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 (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 +2 -2
  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 +2 -2
  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 +2 -2
  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 +4 -4
  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
@@ -0,0 +1,520 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #include "ViewTransitionModule.h"
9
+
10
+ #include <glog/logging.h>
11
+ #include <react/renderer/components/root/RootShadowNode.h>
12
+ #include <react/renderer/core/LayoutableShadowNode.h>
13
+ #include <react/renderer/core/RawProps.h>
14
+ #include <react/renderer/mounting/MountingTransaction.h>
15
+ #include <react/renderer/mounting/ShadowTree.h>
16
+ #include <react/renderer/uimanager/UIManager.h>
17
+
18
+ namespace facebook::react {
19
+
20
+ ViewTransitionModule::~ViewTransitionModule() {
21
+ if (uiManager_ != nullptr) {
22
+ if (uiManager_->getViewTransitionDelegate() == this) {
23
+ uiManager_->setViewTransitionDelegate(nullptr);
24
+ }
25
+ uiManager_->unregisterCommitHook(*this);
26
+ uiManager_ = nullptr;
27
+ }
28
+ }
29
+
30
+ void ViewTransitionModule::initialize(
31
+ UIManager* uiManager,
32
+ std::weak_ptr<ViewTransitionModule> weakThis) {
33
+ if (uiManager_ != nullptr) {
34
+ uiManager_->unregisterCommitHook(*this);
35
+ }
36
+ uiManager_ = uiManager;
37
+ if (uiManager_ != nullptr) {
38
+ uiManager_->registerCommitHook(*this);
39
+
40
+ // Register as MountingOverrideDelegate on existing surfaces
41
+ uiManager_->getShadowTreeRegistry().enumerate(
42
+ [weakThis](const ShadowTree& shadowTree, bool& /*stop*/) {
43
+ shadowTree.getMountingCoordinator()->setMountingOverrideDelegate(
44
+ weakThis);
45
+ });
46
+
47
+ // Register on surfaces started in the future
48
+ uiManager_->setOnSurfaceStartCallback(
49
+ [weakThis](const ShadowTree& shadowTree) {
50
+ shadowTree.getMountingCoordinator()->setMountingOverrideDelegate(
51
+ weakThis);
52
+ });
53
+
54
+ uiManager_->setViewTransitionDelegate(this);
55
+ }
56
+ }
57
+
58
+ void ViewTransitionModule::applyViewTransitionName(
59
+ const ShadowNode& shadowNode,
60
+ const std::string& name,
61
+ const std::string& /*className*/) {
62
+ auto tag = shadowNode.getTag();
63
+ auto surfaceId = shadowNode.getSurfaceId();
64
+
65
+ auto layoutMetrics = captureLayoutMetricsFromRoot(shadowNode);
66
+ if (layoutMetrics == EmptyLayoutMetrics) {
67
+ return;
68
+ }
69
+
70
+ // Convert LayoutMetrics to AnimationKeyFrameViewLayoutMetrics
71
+ AnimationKeyFrameViewLayoutMetrics keyframeMetrics{
72
+ .originFromRoot = layoutMetrics.frame.origin,
73
+ .size = layoutMetrics.frame.size,
74
+ .pointScaleFactor = layoutMetrics.pointScaleFactor};
75
+
76
+ nameRegistry_[tag].insert(name);
77
+
78
+ // If applyViewTransitionName is called after transition started, this is the
79
+ // "new" state (end snapshot). Otherwise, this is the "old" state (start
80
+ // snapshot)
81
+ if (!transitionStarted_) {
82
+ AnimationKeyFrameView oldView{
83
+ .layoutMetrics = keyframeMetrics, .tag = tag, .surfaceId = surfaceId};
84
+ oldLayout_[name] = oldView;
85
+
86
+ // Request the platform to capture a bitmap snapshot of the old view
87
+ // while it's still mounted. The platform stores the bitmap keyed by tag.
88
+ if (uiManager_ != nullptr) {
89
+ auto* delegate = uiManager_->getDelegate();
90
+ if (delegate != nullptr) {
91
+ delegate->uiManagerDidCaptureViewSnapshot(tag, surfaceId);
92
+ }
93
+ }
94
+
95
+ if (auto it = oldPseudoElementNodesRepository_.find(name);
96
+ it != oldPseudoElementNodesRepository_.end()) {
97
+ // Find the pseudo element created from this specific source tag
98
+ auto& pseudoElementsBySourceTag = it->second;
99
+ auto innerIt = pseudoElementsBySourceTag.find(tag);
100
+
101
+ if (innerIt != pseudoElementsBySourceTag.end()) {
102
+ // Only clone the pseudo-element if the layout metrics changed
103
+ // since it was last created/refreshed (e.g. due to scrolling or
104
+ // React updates).
105
+ auto& cachedMetrics = innerIt->second.lastAppliedLayoutMetrics;
106
+ if (cachedMetrics.originFromRoot.x !=
107
+ keyframeMetrics.originFromRoot.x ||
108
+ cachedMetrics.originFromRoot.y !=
109
+ keyframeMetrics.originFromRoot.y ||
110
+ cachedMetrics.size.width != keyframeMetrics.size.width ||
111
+ cachedMetrics.size.height != keyframeMetrics.size.height) {
112
+ auto updatedRawProps = RawProps(
113
+ folly::dynamic::object("left", keyframeMetrics.originFromRoot.x)(
114
+ "top", keyframeMetrics.originFromRoot.y)(
115
+ "width", keyframeMetrics.size.width)(
116
+ "height", keyframeMetrics.size.height)(
117
+ "pointerEvents", "none")("opacity", 0)("collapsable", false)(
118
+ "position", "absolute"));
119
+
120
+ auto updatedNode = uiManager_->cloneNode(
121
+ *innerIt->second.node,
122
+ nullptr /* children */,
123
+ std::move(updatedRawProps));
124
+ if (updatedNode != nullptr) {
125
+ innerIt->second.node = updatedNode;
126
+ cachedMetrics = keyframeMetrics;
127
+ }
128
+ }
129
+ oldPseudoElementNodes_[name] = innerIt->second.node;
130
+ } else {
131
+ LOG(WARNING)
132
+ << "applyViewTransitionName: old pseudo element shadow node doesn't exist for source tag "
133
+ << tag << " with name " << name;
134
+ }
135
+ } else {
136
+ LOG(WARNING)
137
+ << "applyViewTransitionName: old pseudo element shadow node doesn't exist for name "
138
+ << name;
139
+ }
140
+
141
+ } else {
142
+ AnimationKeyFrameView newView{
143
+ .layoutMetrics = keyframeMetrics, .tag = tag, .surfaceId = surfaceId};
144
+ newLayout_[name] = newView;
145
+ }
146
+ }
147
+
148
+ void ViewTransitionModule::createViewTransitionInstance(
149
+ const std::string& name,
150
+ Tag pseudoElementTag) {
151
+ if (uiManager_ == nullptr) {
152
+ return;
153
+ }
154
+
155
+ // if createViewTransitionInstance is called before transition started, it
156
+ // creates the old pseudo elements for exiting nodes that potentially
157
+ // participate in current transition that's about to happen; if called after
158
+ // transition started, it creates old pseudo elements for entering nodes, and
159
+ // will be used in next transition when these node are exiting
160
+ bool forNextTransition = false;
161
+ AnimationKeyFrameView view = {};
162
+ auto it = oldLayout_.find(name);
163
+ if (it == oldLayout_.end()) {
164
+ forNextTransition = true;
165
+ if (auto newIt = newLayout_.find(name); newIt != newLayout_.end()) {
166
+ view = newIt->second;
167
+ }
168
+ } else {
169
+ view = it->second;
170
+ }
171
+
172
+ // Build props: absolute position matching old element, non-interactive
173
+ if (pseudoElementTag > 0 && view.tag > 0) {
174
+ // Create a base node with layout props via createNode
175
+ // TODO: T262559684 created dedicated shadow node type for old pseudo
176
+ // element
177
+ auto rawProps = RawProps(
178
+ folly::dynamic::object("position", "absolute")(
179
+ "left", view.layoutMetrics.originFromRoot.x)(
180
+ "top", view.layoutMetrics.originFromRoot.y)(
181
+ "width", view.layoutMetrics.size.width)(
182
+ "height", view.layoutMetrics.size.height)("pointerEvents", "none")(
183
+ "opacity", 0)("collapsable", false));
184
+
185
+ auto baseNode = uiManager_->createNode(
186
+ pseudoElementTag,
187
+ "View",
188
+ view.surfaceId,
189
+ std::move(rawProps),
190
+ nullptr /* instanceHandle */);
191
+
192
+ if (baseNode == nullptr) {
193
+ return;
194
+ }
195
+
196
+ // Clone the shadow node — bitmap will be set by platform
197
+ auto pseudoElementNode = baseNode->clone({});
198
+
199
+ if (pseudoElementNode != nullptr) {
200
+ if (!forNextTransition) {
201
+ oldPseudoElementNodes_[name] = pseudoElementNode;
202
+ }
203
+ oldPseudoElementNodesRepository_[name][view.tag] = InactivePseudoElement{
204
+ .node = pseudoElementNode,
205
+ .sourceTag = view.tag,
206
+ .lastAppliedLayoutMetrics = view.layoutMetrics};
207
+ }
208
+ }
209
+ }
210
+
211
+ RootShadowNode::Unshared ViewTransitionModule::shadowTreeWillCommit(
212
+ const ShadowTree& shadowTree,
213
+ const RootShadowNode::Shared& /*oldRootShadowNode*/,
214
+ const RootShadowNode::Unshared& newRootShadowNode,
215
+ const ShadowTreeCommitOptions& /*commitOptions*/) noexcept {
216
+ if (oldPseudoElementNodes_.empty()) {
217
+ return newRootShadowNode;
218
+ }
219
+
220
+ auto surfaceId = shadowTree.getSurfaceId();
221
+
222
+ // Collect pseudo-element nodes for this surface, skipping any that are
223
+ // already present in the children list (from a previous commit hook run).
224
+ const auto& existingChildren = newRootShadowNode->getChildren();
225
+ std::unordered_set<Tag> existingTags;
226
+ existingTags.reserve(existingChildren.size());
227
+ for (const auto& child : existingChildren) {
228
+ existingTags.insert(child->getTag());
229
+ }
230
+
231
+ auto newChildren =
232
+ std::make_shared<std::vector<std::shared_ptr<const ShadowNode>>>(
233
+ existingChildren);
234
+ bool appended = false;
235
+ for (const auto& [name, node] : oldPseudoElementNodes_) {
236
+ if (node->getSurfaceId() == surfaceId &&
237
+ existingTags.find(node->getTag()) == existingTags.end()) {
238
+ newChildren->push_back(node);
239
+ appended = true;
240
+ }
241
+ }
242
+
243
+ if (!appended) {
244
+ return newRootShadowNode;
245
+ }
246
+
247
+ return std::make_shared<RootShadowNode>(
248
+ *newRootShadowNode,
249
+ ShadowNodeFragment{
250
+ .props = ShadowNodeFragment::propsPlaceholder(),
251
+ .children = newChildren,
252
+ });
253
+ }
254
+
255
+ bool ViewTransitionModule::shouldOverridePullTransaction() const {
256
+ return !oldPseudoElementNodesRepository_.empty();
257
+ }
258
+
259
+ std::optional<MountingTransaction> ViewTransitionModule::pullTransaction(
260
+ SurfaceId surfaceId,
261
+ MountingTransaction::Number number,
262
+ const TransactionTelemetry& telemetry,
263
+ ShadowViewMutationList mutations) const {
264
+ for (const auto& mutation : mutations) {
265
+ if (mutation.type == ShadowViewMutation::Delete) {
266
+ auto tag = mutation.oldChildShadowView.tag;
267
+ for (auto it = oldPseudoElementNodesRepository_.begin();
268
+ it != oldPseudoElementNodesRepository_.end();) {
269
+ auto& pseudoElementsBySourceTag = it->second;
270
+ if (auto innerIt = pseudoElementsBySourceTag.find(tag);
271
+ innerIt != pseudoElementsBySourceTag.end()) {
272
+ pseudoElementsBySourceTag.erase(innerIt);
273
+ }
274
+ if (pseudoElementsBySourceTag.empty()) {
275
+ it = oldPseudoElementNodesRepository_.erase(it);
276
+ } else {
277
+ ++it;
278
+ }
279
+ }
280
+ }
281
+ }
282
+ return MountingTransaction{
283
+ surfaceId, number, std::move(mutations), telemetry};
284
+ }
285
+
286
+ std::shared_ptr<const ShadowNode>
287
+ ViewTransitionModule::findPseudoElementShadowNodeByTag(Tag tag) const {
288
+ if (uiManager_ == nullptr) {
289
+ return nullptr;
290
+ }
291
+
292
+ auto shadowNode = std::shared_ptr<const ShadowNode>{};
293
+
294
+ uiManager_->getShadowTreeRegistry().enumerate(
295
+ [&](const ShadowTree& shadowTree, bool& stop) {
296
+ const auto rootShadowNode =
297
+ shadowTree.getCurrentRevision().rootShadowNode;
298
+
299
+ if (rootShadowNode != nullptr) {
300
+ const auto& children = rootShadowNode->getChildren();
301
+ // Pseudo element nodes are appended after the first child (the main
302
+ // React tree), so iterate from index 1 onwards.
303
+ for (size_t i = 1; i < children.size(); ++i) {
304
+ if (children[i]->getTag() == tag) {
305
+ shadowNode = children[i];
306
+ stop = true;
307
+ return;
308
+ }
309
+ }
310
+ }
311
+ });
312
+
313
+ return shadowNode;
314
+ }
315
+
316
+ void ViewTransitionModule::cancelViewTransitionName(
317
+ const ShadowNode& shadowNode,
318
+ const std::string& name) {
319
+ oldLayout_.erase(name);
320
+ newLayout_.erase(name);
321
+ cancelledNameRegistry_[shadowNode.getTag()].insert(name);
322
+ }
323
+
324
+ void ViewTransitionModule::restoreViewTransitionName(
325
+ const ShadowNode& shadowNode) {
326
+ nameRegistry_[shadowNode.getTag()].merge(
327
+ cancelledNameRegistry_[shadowNode.getTag()]);
328
+ cancelledNameRegistry_.erase(shadowNode.getTag());
329
+ }
330
+
331
+ void ViewTransitionModule::applySnapshotsOnPseudoElementShadowNodes() {
332
+ if (oldPseudoElementNodes_.empty() || uiManager_ == nullptr) {
333
+ return;
334
+ }
335
+
336
+ // Set view snapshots — the pseudo-element nodes themselves will be committed
337
+ // through the normal completeRoot flow via getPseudoElementNodes().
338
+ auto* delegate = uiManager_->getDelegate();
339
+ if (delegate != nullptr) {
340
+ for (const auto& [name, node] : oldPseudoElementNodes_) {
341
+ auto layoutIt = oldLayout_.find(name);
342
+ if (layoutIt != oldLayout_.end()) {
343
+ delegate->uiManagerDidSetViewSnapshot(
344
+ layoutIt->second.tag, node->getTag(), node->getSurfaceId());
345
+ }
346
+ }
347
+ }
348
+ }
349
+
350
+ LayoutMetrics ViewTransitionModule::captureLayoutMetricsFromRoot(
351
+ const ShadowNode& shadowNode) {
352
+ if (uiManager_ == nullptr) {
353
+ return EmptyLayoutMetrics;
354
+ }
355
+
356
+ // Get the current revision (root node) for this surface
357
+ auto currentRevision =
358
+ uiManager_->getShadowTreeRevisionProvider()->getCurrentRevision(
359
+ shadowNode.getSurfaceId());
360
+
361
+ if (currentRevision == nullptr) {
362
+ return EmptyLayoutMetrics;
363
+ }
364
+
365
+ // Cast root to LayoutableShadowNode
366
+ auto layoutableRoot =
367
+ dynamic_cast<const LayoutableShadowNode*>(currentRevision.get());
368
+ if (layoutableRoot == nullptr) {
369
+ return EmptyLayoutMetrics;
370
+ }
371
+
372
+ return LayoutableShadowNode::computeLayoutMetricsFromRoot(
373
+ shadowNode.getFamily(), *layoutableRoot, {});
374
+ }
375
+
376
+ void ViewTransitionModule::startViewTransition(
377
+ std::function<void()> mutationCallback,
378
+ std::function<void()> onReadyCallback,
379
+ std::function<void()> onCompleteCallback) {
380
+ // If the reconciler signalled suspension and a transition is still active,
381
+ // queue this transition to run after the current one finishes.
382
+ // Only queue if the previous transition is still running; if it already
383
+ // finished, the flag is stale and we should run normally.
384
+ if (suspendNextTransition_ && transitionStarted_) {
385
+ suspendNextTransition_ = false;
386
+ pendingTransitions_.push(
387
+ PendingTransition{
388
+ std::move(mutationCallback),
389
+ std::move(onReadyCallback),
390
+ std::move(onCompleteCallback)});
391
+ return;
392
+ }
393
+ suspendNextTransition_ = false;
394
+
395
+ // Mark transition as started
396
+ transitionStarted_ = true;
397
+ pendingAnimationIds_.clear();
398
+ onCompleteCallback_ = onCompleteCallback;
399
+
400
+ // Call mutation callback (including commitRoot, measureInstance,
401
+ // applyViewTransitionName, createViewTransitionInstance for old & new)
402
+ if (mutationCallback) {
403
+ mutationCallback();
404
+ }
405
+
406
+ applySnapshotsOnPseudoElementShadowNodes();
407
+
408
+ transitionReadyFinished_ = false;
409
+ // onReadyCallback starts the animations. Any animation registered via
410
+ // waitForTransitionAnimation during this callback is part of this transition.
411
+ if (onReadyCallback) {
412
+ onReadyCallback();
413
+ }
414
+ }
415
+
416
+ void ViewTransitionModule::waitForTransitionAnimation(int animationId) {
417
+ if (!transitionReadyFinished_) {
418
+ pendingAnimationIds_.insert(animationId);
419
+ }
420
+ }
421
+
422
+ void ViewTransitionModule::transitionAnimationFinished(int animationId) {
423
+ pendingAnimationIds_.erase(animationId);
424
+ if (transitionReadyFinished_ && pendingAnimationIds_.empty() &&
425
+ onCompleteCallback_) {
426
+ auto callback = std::move(onCompleteCallback_);
427
+ onCompleteCallback_ = nullptr;
428
+ callback();
429
+ }
430
+ }
431
+
432
+ void ViewTransitionModule::startViewTransitionReadyFinished() {
433
+ transitionReadyFinished_ = true;
434
+
435
+ if (pendingAnimationIds_.empty() && onCompleteCallback_) {
436
+ auto callback = std::move(onCompleteCallback_);
437
+ onCompleteCallback_ = nullptr;
438
+ callback();
439
+ }
440
+ }
441
+
442
+ void ViewTransitionModule::suspendOnActiveViewTransition() {
443
+ // Signal that the next transition should be suspended until the current
444
+ // one finishes. The actual queueing happens in startViewTransition.
445
+ if (transitionStarted_) {
446
+ // if there's no active transition, suspendOnActiveViewTransition is no-op
447
+ suspendNextTransition_ = true;
448
+ }
449
+ }
450
+
451
+ void ViewTransitionModule::startViewTransitionEnd() {
452
+ for (const auto& [tag, names] : nameRegistry_) {
453
+ for (const auto& name : names) {
454
+ oldLayout_.erase(name);
455
+ newLayout_.erase(name);
456
+ }
457
+ }
458
+ nameRegistry_.clear();
459
+ oldPseudoElementNodes_.clear();
460
+
461
+ // Clear any pending bitmap snapshots that were captured but never consumed.
462
+ if (uiManager_ != nullptr) {
463
+ auto* delegate = uiManager_->getDelegate();
464
+ if (delegate != nullptr) {
465
+ delegate->uiManagerDidClearPendingSnapshots();
466
+ }
467
+ }
468
+
469
+ transitionStarted_ = false;
470
+
471
+ if (!pendingTransitions_.empty()) {
472
+ auto pendingTransition = pendingTransitions_.front();
473
+ pendingTransitions_.pop();
474
+ startViewTransition(
475
+ std::move(pendingTransition.mutationCallback),
476
+ std::move(pendingTransition.onReadyCallback),
477
+ std::move(pendingTransition.onCompleteCallback));
478
+ // when this transition finishes, it'll call startViewTransitionEnd
479
+ // during its complete callback and pendingTransitions_ will be processed
480
+ // again
481
+ }
482
+ }
483
+
484
+ std::optional<UIManagerViewTransitionDelegate::ViewTransitionInstance>
485
+ ViewTransitionModule::getViewTransitionInstance(
486
+ const std::string& name,
487
+ const std::string& pseudo) {
488
+ // Look up layout based on pseudo type ("old" or "new")
489
+ if (pseudo == "new") {
490
+ auto it = newLayout_.find(name);
491
+ if (it != newLayout_.end()) {
492
+ const auto& view = it->second;
493
+ return ViewTransitionInstance{
494
+ .x = view.layoutMetrics.originFromRoot.x,
495
+ .y = view.layoutMetrics.originFromRoot.y,
496
+ .width = view.layoutMetrics.size.width,
497
+ .height = view.layoutMetrics.size.height,
498
+ .nativeTag = view.tag};
499
+ }
500
+ } else if (pseudo == "old") {
501
+ auto it = oldLayout_.find(name);
502
+ if (it != oldLayout_.end()) {
503
+ const auto& view = it->second;
504
+ auto pseudoElementIt = oldPseudoElementNodes_.find(name);
505
+ auto nativeTag = pseudoElementIt != oldPseudoElementNodes_.end()
506
+ ? pseudoElementIt->second->getTag()
507
+ : -1;
508
+ return ViewTransitionInstance{
509
+ .x = view.layoutMetrics.originFromRoot.x,
510
+ .y = view.layoutMetrics.originFromRoot.y,
511
+ .width = view.layoutMetrics.size.width,
512
+ .height = view.layoutMetrics.size.height,
513
+ .nativeTag = nativeTag};
514
+ }
515
+ }
516
+
517
+ return std::nullopt;
518
+ }
519
+
520
+ } // namespace facebook::react
@@ -0,0 +1,161 @@
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
+ #pragma once
9
+
10
+ #include <queue>
11
+ #include <unordered_set>
12
+
13
+ #include <react/renderer/core/LayoutMetrics.h>
14
+ #include <react/renderer/core/ShadowNode.h>
15
+ #include <react/renderer/mounting/MountingOverrideDelegate.h>
16
+ #include <react/renderer/mounting/ShadowViewMutation.h>
17
+ #include <react/renderer/uimanager/UIManagerCommitHook.h>
18
+ #include <react/renderer/uimanager/UIManagerViewTransitionDelegate.h>
19
+
20
+ namespace facebook::react {
21
+
22
+ class ShadowTree;
23
+ class UIManager;
24
+
25
+ class ViewTransitionModule : public UIManagerViewTransitionDelegate,
26
+ public UIManagerCommitHook,
27
+ public MountingOverrideDelegate {
28
+ public:
29
+ ~ViewTransitionModule() override;
30
+
31
+ void initialize(UIManager *uiManager, std::weak_ptr<ViewTransitionModule> weakThis);
32
+
33
+ #pragma mark - UIManagerViewTransitionDelegate
34
+
35
+ // will be called when a view will transition. if a view already has a view-transition-name, it may not be called
36
+ // again until it's removed
37
+ void applyViewTransitionName(const ShadowNode &shadowNode, const std::string &name, const std::string &className)
38
+ override;
39
+
40
+ // creates a pseudo-element shadow node for a given transition name using the
41
+ // captured old layout metrics
42
+ void createViewTransitionInstance(const std::string &name, Tag pseudoElementTag) override;
43
+
44
+ // if a viewTransitionName is cancelled, the element doesn't have view-transition-name and browser won't be taking
45
+ // snapshot
46
+ void cancelViewTransitionName(const ShadowNode &shadowNode, const std::string &name) override;
47
+
48
+ // restore cancellation
49
+ void restoreViewTransitionName(const ShadowNode &shadowNode) override;
50
+
51
+ void startViewTransition(
52
+ std::function<void()> mutationCallback,
53
+ std::function<void()> onReadyCallback,
54
+ std::function<void()> onCompleteCallback) override;
55
+
56
+ void startViewTransitionReadyFinished() override;
57
+
58
+ void startViewTransitionEnd() override;
59
+
60
+ std::optional<ViewTransitionInstance> getViewTransitionInstance(const std::string &name, const std::string &pseudo)
61
+ override;
62
+
63
+ #pragma mark - UIManagerCommitHook
64
+
65
+ void commitHookWasRegistered(const UIManager & /*uiManager*/) noexcept override {}
66
+ void commitHookWasUnregistered(const UIManager & /*uiManager*/) noexcept override {}
67
+ RootShadowNode::Unshared shadowTreeWillCommit(
68
+ const ShadowTree &shadowTree,
69
+ const RootShadowNode::Shared &oldRootShadowNode,
70
+ const RootShadowNode::Unshared &newRootShadowNode,
71
+ const ShadowTreeCommitOptions &commitOptions) noexcept override;
72
+
73
+ #pragma mark - MountingOverrideDelegate
74
+
75
+ bool shouldOverridePullTransaction() const override;
76
+ std::optional<MountingTransaction> pullTransaction(
77
+ SurfaceId surfaceId,
78
+ MountingTransaction::Number number,
79
+ const TransactionTelemetry &telemetry,
80
+ ShadowViewMutationList mutations) const override;
81
+
82
+ std::shared_ptr<const ShadowNode> findPseudoElementShadowNodeByTag(Tag tag) const override;
83
+
84
+ void suspendOnActiveViewTransition() override;
85
+
86
+ void waitForTransitionAnimation(int animationId) override;
87
+
88
+ void transitionAnimationFinished(int animationId) override;
89
+
90
+ // Animation state structure for storing minimal view data
91
+ struct AnimationKeyFrameViewLayoutMetrics {
92
+ Point originFromRoot;
93
+ Size size;
94
+ Float pointScaleFactor{};
95
+ };
96
+
97
+ struct AnimationKeyFrameView {
98
+ AnimationKeyFrameViewLayoutMetrics layoutMetrics;
99
+ Tag tag{0};
100
+ SurfaceId surfaceId{0};
101
+ };
102
+
103
+ private:
104
+ // registry of layout of old/new views
105
+ std::unordered_map<std::string, AnimationKeyFrameView> oldLayout_{};
106
+ std::unordered_map<std::string, AnimationKeyFrameView> newLayout_{};
107
+ // tag -> names registry, populated during applyViewTransitionName
108
+ // Note that tag and name are not 1:1 mapping
109
+ // - In some nested composition 2 names are mappped to the same tag
110
+ // - tags of old and new views are mapped to the same name(s)
111
+ std::unordered_map<Tag, std::unordered_set<std::string>> nameRegistry_{};
112
+
113
+ // used for cancel/restore viewTransitionName
114
+ std::unordered_map<Tag, std::unordered_set<std::string>> cancelledNameRegistry_{};
115
+
116
+ // pseudo-element nodes keyed by transition name, appended to root children via UIManagerCommitHook
117
+ // TODO: T262559264 pseudo elements should be cleaned up as soon as transition animation ends
118
+ std::unordered_map<std::string, std::shared_ptr<const ShadowNode>> oldPseudoElementNodes_{};
119
+
120
+ struct InactivePseudoElement {
121
+ std::shared_ptr<const ShadowNode> node;
122
+ // tag of the original view this was created from
123
+ Tag sourceTag{0};
124
+ // Layout metrics last applied to the pseudo-element node's props.
125
+ AnimationKeyFrameViewLayoutMetrics lastAppliedLayoutMetrics{};
126
+ };
127
+ // pseudo-element nodes created for entering nodes, to be copied into
128
+ // oldPseudoElementNodes_ during the next applyViewTransitionName call.
129
+ // Mutable because pullTransaction (const) needs to erase unmounted entries.
130
+ mutable std::unordered_map<std::string, std::unordered_map<Tag /* sourceTag */, InactivePseudoElement>>
131
+ oldPseudoElementNodesRepository_{};
132
+
133
+ LayoutMetrics captureLayoutMetricsFromRoot(const ShadowNode &shadowNode);
134
+
135
+ void applySnapshotsOnPseudoElementShadowNodes();
136
+
137
+ UIManager *uiManager_{nullptr};
138
+
139
+ bool transitionStarted_{false};
140
+
141
+ bool transitionReadyFinished_{false};
142
+
143
+ // When suspendNextTransition_ is true and a transition is active, the next
144
+ // startViewTransition calls are queued instead of running immediately.
145
+ bool suspendNextTransition_{false};
146
+
147
+ struct PendingTransition {
148
+ std::function<void()> mutationCallback;
149
+ std::function<void()> onReadyCallback;
150
+ std::function<void()> onCompleteCallback;
151
+ };
152
+ std::queue<PendingTransition> pendingTransitions_{};
153
+
154
+ // Tracks animation IDs that must complete before onCompleteCallback_ fires.
155
+ // Animations are registered via waitForTransitionAnimation (called from JS
156
+ // after connectAnimatedNodeToView) and removed via transitionAnimationFinished.
157
+ std::unordered_set<int> pendingAnimationIds_{};
158
+ std::function<void()> onCompleteCallback_{nullptr};
159
+ };
160
+
161
+ } // namespace facebook::react
@@ -132,7 +132,9 @@ TimerHandle TimerManager::createRecurringTimer(
132
132
  return timerID;
133
133
  }
134
134
 
135
- void TimerManager::deleteTimer(jsi::Runtime& runtime, TimerHandle timerHandle) {
135
+ void TimerManager::deleteTimer(
136
+ jsi::Runtime& /* runtime */,
137
+ TimerHandle timerHandle) {
136
138
  if (timerHandle < 0) {
137
139
  /**
138
140
  * Do nothing for negative values to match web spec.
@@ -150,7 +152,7 @@ void TimerManager::deleteTimer(jsi::Runtime& runtime, TimerHandle timerHandle) {
150
152
  }
151
153
 
152
154
  void TimerManager::deleteRecurringTimer(
153
- jsi::Runtime& runtime,
155
+ jsi::Runtime& /* runtime */,
154
156
  TimerHandle timerHandle) {
155
157
  if (timerHandle < 0) {
156
158
  /**