react-native-tvos 0.83.1-0 → 0.84.0-0rc0

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 (563) hide show
  1. package/Libraries/Animated/AnimatedEvent.js +2 -2
  2. package/Libraries/Animated/animations/Animation.js +1 -3
  3. package/Libraries/Animated/createAnimatedComponent.js +8 -5
  4. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  5. package/Libraries/Animated/nodes/AnimatedInterpolation.js +40 -4
  6. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  7. package/Libraries/Animated/nodes/AnimatedObject.js +16 -11
  8. package/Libraries/Animated/nodes/AnimatedProps.js +43 -12
  9. package/Libraries/Animated/nodes/AnimatedStyle.js +12 -12
  10. package/Libraries/Animated/nodes/AnimatedValue.js +6 -3
  11. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  12. package/Libraries/AppDelegate/RCTReactNativeFactory.h +3 -0
  13. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +33 -31
  14. package/Libraries/AppDelegate/RCTRootViewFactory.h +10 -4
  15. package/Libraries/AppDelegate/RCTRootViewFactory.mm +21 -5
  16. package/Libraries/BatchedBridge/MessageQueue.js +24 -22
  17. package/Libraries/Blob/RCTBlobPlugins.mm +14 -14
  18. package/Libraries/Blob/URL.js +34 -3
  19. package/Libraries/Blob/URLSearchParams.js +1 -0
  20. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +9 -1
  21. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +6 -1
  22. package/Libraries/Components/Button.js +2 -5
  23. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
  24. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +4 -4
  25. package/Libraries/Components/Keyboard/Keyboard.js +2 -2
  26. package/Libraries/Components/Pressable/Pressable.js +8 -8
  27. package/Libraries/Components/TextInput/TextInput.flow.js +13 -13
  28. package/Libraries/Components/TextInput/TextInput.js +33 -34
  29. package/Libraries/Components/Touchable/PooledClass.js +2 -2
  30. package/Libraries/Components/Touchable/TouchableBounce.js +6 -6
  31. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  32. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +9 -9
  33. package/Libraries/Components/View/ViewPropTypes.js +16 -6
  34. package/Libraries/Core/Devtools/loadBundleFromServer.js +6 -3
  35. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  36. package/Libraries/Core/ExceptionsManager.js +3 -3
  37. package/Libraries/Core/RawEventEmitter.js +1 -1
  38. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  39. package/Libraries/Core/ReactNativeVersion.js +3 -3
  40. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  41. package/Libraries/Core/setUpErrorHandling.js +1 -1
  42. package/Libraries/EventEmitter/NativeEventEmitter.js +2 -2
  43. package/Libraries/Image/Image.android.js +2 -2
  44. package/Libraries/Image/Image.ios.js +2 -2
  45. package/Libraries/Image/ImageProps.js +1 -1
  46. package/Libraries/Image/ImageTypes.flow.js +2 -2
  47. package/Libraries/Image/RCTImagePlugins.h +1 -0
  48. package/Libraries/Image/RCTImagePlugins.mm +30 -17
  49. package/Libraries/Interaction/InteractionManager.js +3 -3
  50. package/Libraries/Interaction/PanResponder.js +1 -1
  51. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  52. package/Libraries/Linking/Linking.js +1 -1
  53. package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +10 -13
  54. package/Libraries/Lists/FlatList.js +2 -2
  55. package/Libraries/LogBox/Data/LogBoxData.js +31 -4
  56. package/Libraries/LogBox/Data/LogBoxLog.js +2 -2
  57. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  58. package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -5
  59. package/Libraries/LogBox/LogBox.js +7 -7
  60. package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +14 -14
  61. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +7 -0
  62. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -0
  63. package/Libraries/NativeComponent/BaseViewConfig.android.js +12 -0
  64. package/Libraries/NativeComponent/StaticViewConfigValidator.js +4 -4
  65. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
  66. package/Libraries/Network/RCTInspectorNetworkReporter.mm +26 -3
  67. package/Libraries/Network/RCTNetworkPlugins.mm +22 -16
  68. package/Libraries/Network/RCTNetworking.android.js +3 -3
  69. package/Libraries/Network/RCTNetworking.ios.js +2 -2
  70. package/Libraries/Network/RCTNetworking.js.flow +2 -2
  71. package/Libraries/Pressability/Pressability.js +9 -9
  72. package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +10 -13
  73. package/Libraries/ReactNative/AppRegistry.flow.js +1 -1
  74. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  75. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  76. package/Libraries/ReactNative/PaperUIManager.js +1 -1
  77. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  78. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +2 -2
  79. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +1 -1
  80. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  81. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  82. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
  83. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -3
  84. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  85. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  86. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +11 -4
  87. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +11 -4
  88. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +11 -4
  89. package/Libraries/Renderer/shims/ReactFabric.js +3 -1
  90. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  91. package/Libraries/Renderer/shims/ReactNative.js +2 -2
  92. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
  93. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  94. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  95. package/Libraries/Settings/RCTSettingsManager.mm +1 -1
  96. package/Libraries/Settings/RCTSettingsPlugins.mm +10 -13
  97. package/Libraries/Settings/Settings.ios.js +1 -1
  98. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  99. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  100. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +4 -2
  101. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  102. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +99 -4
  103. package/Libraries/StyleSheet/StyleSheetTypes.js +6 -8
  104. package/Libraries/StyleSheet/processFilter.js +1 -1
  105. package/Libraries/Text/Text.js +46 -6
  106. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +3 -2
  107. package/Libraries/Text/TextNativeComponent.js +1 -1
  108. package/Libraries/Text/TextProps.js +7 -7
  109. package/Libraries/TypeSafety/RCTTypedModuleConstants.h +36 -1
  110. package/Libraries/Types/CodegenTypes.js +1 -1
  111. package/Libraries/Types/CoreEventTypes.js +31 -0
  112. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  113. package/Libraries/Utilities/Appearance.js +2 -2
  114. package/Libraries/Utilities/DevLoadingView.js +8 -1
  115. package/Libraries/Utilities/DevSettings.js +3 -3
  116. package/Libraries/Utilities/HMRClient.js +4 -3
  117. package/Libraries/Utilities/RCTLog.js +3 -3
  118. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  119. package/Libraries/Utilities/SceneTracker.js +1 -1
  120. package/Libraries/Utilities/codegenNativeCommands.js +1 -1
  121. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +3 -3
  122. package/Libraries/Utilities/logError.js +1 -1
  123. package/Libraries/Utilities/stringifySafe.js +7 -7
  124. package/Libraries/Utilities/useRefEffect.js +1 -1
  125. package/Libraries/Vibration/RCTVibrationPlugins.mm +10 -13
  126. package/Libraries/WebSocket/WebSocketInterceptor.js +3 -3
  127. package/Libraries/promiseRejectionTrackingOptions.js +8 -8
  128. package/Libraries/vendor/core/ErrorUtils.js +10 -10
  129. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  130. package/README.md +56 -18
  131. package/React/Base/RCTAssert.m +2 -2
  132. package/React/Base/RCTBridge.h +0 -4
  133. package/React/Base/RCTBridge.mm +1 -12
  134. package/React/Base/RCTBundleManager.h +59 -7
  135. package/React/Base/RCTBundleManager.m +112 -1
  136. package/React/Base/RCTBundleURLProvider.h +24 -0
  137. package/React/Base/RCTBundleURLProvider.mm +49 -4
  138. package/React/Base/RCTConvert.mm +2 -0
  139. package/React/Base/RCTModuleData.mm +2 -2
  140. package/React/Base/RCTUtils.h +4 -0
  141. package/React/Base/RCTUtils.mm +60 -3
  142. package/React/Base/RCTVersion.m +3 -3
  143. package/React/CoreModules/CoreModulesPlugins.mm +97 -35
  144. package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +1 -1
  145. package/React/CoreModules/RCTAccessibilityManager.mm +18 -1
  146. package/React/CoreModules/RCTAppState.mm +1 -1
  147. package/React/CoreModules/RCTDevLoadingView.mm +116 -36
  148. package/React/CoreModules/RCTDevSettings.h +36 -1
  149. package/React/CoreModules/RCTDevSettings.mm +44 -8
  150. package/React/CoreModules/RCTExceptionsManager.mm +5 -2
  151. package/React/CoreModules/RCTPlatform.mm +3 -2
  152. package/React/CoreModules/RCTStatusBarManager.mm +1 -1
  153. package/React/CxxBridge/RCTCxxBridge.mm +1 -2
  154. package/React/CxxModule/RCTCxxMethod.mm +1 -1
  155. package/React/CxxModule/RCTCxxUtils.mm +2 -12
  156. package/React/DevSupport/RCTDevLoadingViewProtocol.h +4 -1
  157. package/React/DevSupport/RCTPackagerConnection.h +4 -2
  158. package/React/DevSupport/RCTPackagerConnection.mm +30 -33
  159. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +9 -2
  160. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +62 -17
  161. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +529 -494
  162. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.h +1 -0
  163. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +14 -0
  164. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +11 -0
  165. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +6 -0
  166. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +2 -0
  167. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +40 -4
  168. package/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +5 -7
  169. package/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm +5 -7
  170. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -1
  171. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -1
  172. package/React/Inspector/RCTCxxInspectorWebSocketAdapter.mm +6 -2
  173. package/React/Modules/RCTEventEmitter.m +1 -0
  174. package/React/Views/RCTModalHostView.h +2 -0
  175. package/React/Views/RCTTVView.m +2 -0
  176. package/ReactAndroid/api/ReactAndroid.api +14 -73
  177. package/ReactAndroid/build.gradle.kts +2 -0
  178. package/ReactAndroid/gradle.properties +1 -1
  179. package/ReactAndroid/hermes-engine/build.gradle.kts +1 -12
  180. package/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.kt +1 -4
  181. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +3 -0
  182. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +10 -13
  183. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +1 -119
  184. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.kt +0 -10
  185. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageHelper.kt +1 -1
  186. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +4 -29
  187. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +43 -2
  188. package/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.kt +53 -4
  189. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.kt +0 -18
  190. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +6 -96
  191. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +17 -2
  192. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt +2 -2
  193. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt +1 -33
  194. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Promise.kt +6 -6
  195. package/ReactAndroid/src/main/java/com/facebook/react/bridge/PromiseImpl.kt +6 -6
  196. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +1 -12
  197. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgelessDevSupportManager.kt +4 -5
  198. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ChangeBundleLocationDialog.kt +11 -10
  199. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +99 -9
  200. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.kt +58 -13
  201. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +10 -60
  202. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +7 -7
  203. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +1 -4
  204. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +17 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +144 -0
  206. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkHelper.kt +1 -1
  207. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/TracingState.kt +17 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/TracingStateListener.kt +15 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/{interfaces → inspector}/TracingStateProvider.kt +1 -1
  210. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevLoadingViewManager.kt +6 -1
  211. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +2 -2
  212. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/RedBoxHandler.kt +2 -2
  213. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorInspectorTargetBinding.kt +1 -1
  214. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +31 -6
  215. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +7 -6
  216. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorUpdateListener.kt +1 -1
  217. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +1 -1
  218. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +2 -1
  219. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +63 -45
  220. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +106 -76
  221. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +22 -16
  222. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +23 -17
  223. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +117 -84
  224. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -1
  225. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +0 -2
  226. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +22 -16
  227. package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +5 -43
  228. package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +0 -3
  229. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +36 -1
  230. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/FpsDebugFrameCallback.kt +3 -27
  231. package/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.kt +7 -2
  232. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +23 -0
  233. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
  234. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +15 -8
  235. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +0 -9
  236. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +46 -12
  237. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +3 -3
  238. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +11 -17
  239. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +52 -0
  240. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +92 -3
  241. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +62 -8
  242. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSKeyDispatcher.kt +65 -0
  243. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +19 -2
  244. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +1 -2
  245. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +5 -36
  246. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +9 -91
  247. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +1 -1
  248. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +47 -0
  249. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -2
  250. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +4 -23
  251. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +1 -7
  252. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +1 -11
  253. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -47
  254. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -16
  255. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutlineDrawable.kt +1 -1
  256. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +3 -36
  257. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyDownEvent.kt +23 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyEvent.kt +156 -0
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyUpEvent.kt +24 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +29 -4
  261. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +12 -9
  262. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +1 -1
  263. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +36 -3
  264. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +21 -11
  265. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +7 -0
  266. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewAccessibilityDelegate.kt +31 -15
  267. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +127 -32
  268. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +19 -21
  269. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +3 -11
  270. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/viewexperimental/ReactVirtualViewExperimental.kt +3 -12
  271. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocket.cpp +29 -2
  272. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +98 -3
  273. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +62 -26
  274. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +145 -103
  275. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +31 -22
  276. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +1 -3
  277. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +5 -23
  278. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +2 -7
  279. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapperBase.h +0 -24
  280. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  281. package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +2 -1
  282. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +0 -1
  283. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.cpp +1 -29
  284. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.h +1 -2
  285. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +0 -4
  286. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +145 -17
  287. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +193 -19
  288. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +2 -1
  289. package/ReactAndroid/src/main/jni/react/tracing/PerformanceTracerCxxInterop.cpp +1 -1
  290. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +62 -63
  291. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +5 -7
  292. package/ReactAndroid/src/main/jni/third-party/folly/CMakeLists.txt +1 -0
  293. package/ReactAndroid/src/main/res/devsupport/drawable/ic_perf_issue.xml +10 -0
  294. package/ReactAndroid/src/main/res/devsupport/layout/dev_loading_view.xml +41 -15
  295. package/ReactAndroid/src/main/res/devsupport/layout/fps_view.xml +1 -1
  296. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +1 -0
  297. package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +16 -0
  298. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h +2 -0
  299. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +38 -5
  300. package/ReactCommon/cxxreact/JSBigString.h +14 -5
  301. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +4 -5
  302. package/ReactCommon/cxxreact/ReactMarker.cpp +0 -1
  303. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  304. package/ReactCommon/devtoolsruntimesettings/DevToolsRuntimeSettings.cpp +1 -1
  305. package/ReactCommon/hermes/React-hermes.podspec +1 -0
  306. package/ReactCommon/jsi/jsi/jsi.cpp +6 -1
  307. package/ReactCommon/jsi/jsi/jsi.h +73 -0
  308. package/ReactCommon/jsi/jsi/test/testlib.cpp +2 -2
  309. package/ReactCommon/jsiexecutor/CMakeLists.txt +3 -1
  310. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +3 -0
  311. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +2 -43
  312. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +3 -8
  313. package/ReactCommon/jsinspector-modern/ConsoleTask.cpp +27 -0
  314. package/ReactCommon/jsinspector-modern/ConsoleTask.h +38 -0
  315. package/ReactCommon/jsinspector-modern/ConsoleTaskContext.cpp +46 -0
  316. package/ReactCommon/jsinspector-modern/ConsoleTaskContext.h +102 -0
  317. package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.cpp +55 -0
  318. package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.h +48 -0
  319. package/ReactCommon/jsinspector-modern/HostAgent.cpp +9 -10
  320. package/ReactCommon/jsinspector-modern/HostAgent.h +2 -2
  321. package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -6
  322. package/ReactCommon/jsinspector-modern/HostTarget.h +73 -16
  323. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +40 -8
  324. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.h +42 -5
  325. package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +54 -21
  326. package/ReactCommon/jsinspector-modern/InstanceAgent.cpp +2 -11
  327. package/ReactCommon/jsinspector-modern/InstanceTarget.h +2 -2
  328. package/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp +9 -1
  329. package/ReactCommon/jsinspector-modern/PerfMonitorV2.h +4 -1
  330. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +3 -2
  331. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +1 -1
  332. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +12 -0
  333. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -13
  334. package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +106 -1
  335. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +30 -18
  336. package/ReactCommon/jsinspector-modern/TracingAgent.h +5 -4
  337. package/ReactCommon/jsinspector-modern/tests/ConsoleCreateTaskTest.cpp +131 -0
  338. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
  339. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +20 -0
  340. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +25 -55
  341. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +1 -0
  342. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +116 -0
  343. package/ReactCommon/jsinspector-modern/tests/TracingTest.h +95 -0
  344. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +60 -0
  345. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +43 -0
  346. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +144 -0
  347. package/ReactCommon/jsinspector-modern/tracing/{TraceRecordingStateSerializer.h → HostTracingProfileSerializer.h} +16 -8
  348. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +67 -16
  349. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +21 -2
  350. package/ReactCommon/jsinspector-modern/tracing/TargetTracingAgent.h +5 -0
  351. package/ReactCommon/jsinspector-modern/tracing/TimeWindowedBuffer.h +158 -0
  352. package/ReactCommon/jsinspector-modern/tracing/TraceEvent.h +2 -1
  353. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +104 -0
  354. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +59 -0
  355. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +2 -1
  356. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +18 -7
  357. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +139 -0
  358. package/ReactCommon/jsinspector-modern/tracing/tests/TimeWindowedBufferTest.cpp +352 -0
  359. package/ReactCommon/jsitooling/React-jsitooling.podspec +4 -0
  360. package/ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.cpp +54 -0
  361. package/{ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h → ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.h} +4 -6
  362. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +43 -31
  363. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +55 -40
  364. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +234 -180
  365. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +24 -18
  366. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +43 -31
  367. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +91 -64
  368. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +5 -1
  369. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -4
  370. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +12 -9
  371. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +7 -2
  372. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +30 -10
  373. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +17 -6
  374. package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +0 -1
  375. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +1 -4
  376. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +0 -4
  377. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +43 -60
  378. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +11 -36
  379. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +53 -38
  380. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +22 -16
  381. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -0
  382. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +24 -3
  383. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +76 -13
  384. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +74 -64
  385. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +17 -13
  386. package/ReactCommon/react/networking/NetworkReporter.cpp +26 -22
  387. package/ReactCommon/react/networking/React-networking.podspec +0 -1
  388. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.cpp +4 -2
  389. package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
  390. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +10 -2
  391. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
  392. package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +104 -78
  393. package/ReactCommon/react/renderer/animated/AnimatedModule.h +10 -2
  394. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +174 -75
  395. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +19 -1
  396. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +68 -46
  397. package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +1 -0
  398. package/ReactCommon/react/renderer/animated/internal/AnimatedMountingOverrideDelegate.cpp +1 -1
  399. package/ReactCommon/react/renderer/animated/nodes/ColorAnimatedNode.cpp +0 -1
  400. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +103 -4
  401. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +9 -0
  402. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +5 -1
  403. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +9 -0
  404. package/ReactCommon/react/renderer/animated/nodes/RoundAnimatedNode.cpp +1 -1
  405. package/ReactCommon/react/renderer/animated/nodes/ValueAnimatedNode.cpp +1 -1
  406. package/ReactCommon/react/renderer/animated/tests/AnimatedNodeTests.cpp +67 -0
  407. package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +59 -0
  408. package/ReactCommon/react/renderer/animated/tests/AnimationTestsBase.h +2 -1
  409. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +307 -0
  410. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +323 -1
  411. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +133 -0
  412. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +100 -0
  413. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +246 -0
  414. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsSerializer.h +17 -0
  415. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +93 -94
  416. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +23 -5
  417. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp +75 -0
  418. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +32 -0
  419. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +2 -2
  420. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +3 -0
  421. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
  422. package/ReactCommon/react/renderer/components/image/ImageProps.h +2 -2
  423. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +9 -2
  424. package/ReactCommon/react/renderer/components/image/conversions.h +5 -0
  425. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +2 -1
  426. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +5 -1
  427. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +21 -1
  428. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +14 -0
  429. package/ReactCommon/react/renderer/core/DynamicEventPayload.cpp +10 -0
  430. package/ReactCommon/react/renderer/core/DynamicEventPayload.h +6 -1
  431. package/ReactCommon/react/renderer/core/DynamicPointerEvent.cpp +30 -0
  432. package/ReactCommon/react/renderer/core/DynamicPointerEvent.h +29 -0
  433. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +1 -1
  434. package/ReactCommon/react/renderer/core/EventEmitter.cpp +11 -14
  435. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +3 -3
  436. package/ReactCommon/react/renderer/core/Props.cpp +23 -8
  437. package/ReactCommon/react/renderer/core/Props.h +6 -4
  438. package/ReactCommon/react/renderer/core/ShadowNode.cpp +4 -10
  439. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +32 -0
  440. package/ReactCommon/react/renderer/css/CSSSyntaxParser.h +7 -0
  441. package/ReactCommon/react/renderer/debug/CMakeLists.txt +7 -0
  442. package/ReactCommon/react/renderer/debug/flags.h +3 -2
  443. package/ReactCommon/react/renderer/graphics/BlendMode.h +2 -0
  444. package/ReactCommon/react/renderer/graphics/Filter.h +2 -0
  445. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +3 -0
  446. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +23 -12
  447. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +8 -3
  448. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +16 -4
  449. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +9 -4
  450. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +8 -4
  451. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
  452. package/ReactCommon/react/renderer/imagemanager/primitives.h +15 -6
  453. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +0 -11
  454. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +0 -4
  455. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +0 -20
  456. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +3 -3
  457. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +2 -3
  458. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +6 -0
  459. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  460. package/ReactCommon/react/runtime/PlatformTimerRegistry.h +2 -0
  461. package/ReactCommon/react/runtime/ReactInstance.cpp +21 -14
  462. package/ReactCommon/react/runtime/ReactInstance.h +5 -1
  463. package/ReactCommon/react/runtime/TimerManager.cpp +11 -53
  464. package/ReactCommon/react/runtime/TimerManager.h +7 -12
  465. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +3 -2
  466. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +10 -6
  467. package/ReactCommon/yoga/yoga/algorithm/FlexDirection.h +6 -6
  468. package/ReactCommon/yoga/yoga/algorithm/SizingMode.h +4 -4
  469. package/ReactCommon/yoga/yoga/style/Style.h +8 -8
  470. package/ReactCommon/yoga/yoga/style/StyleLength.h +7 -0
  471. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -0
  472. package/flow/HermesInternalType.js +6 -6
  473. package/flow/bom.js.flow +35 -28
  474. package/flow/cssom.js.flow +3 -3
  475. package/flow/dom.js.flow +34 -33
  476. package/index.js +3 -0
  477. package/index.js.flow +8 -0
  478. package/jest/mock.js +2 -2
  479. package/jest/mockComponent.js +1 -1
  480. package/jest/setup.js +1 -1
  481. package/package.json +12 -12
  482. package/react-native.config.js +0 -17
  483. package/scripts/cocoapods/new_architecture.rb +7 -1
  484. package/scripts/cocoapods/spm.rb +28 -10
  485. package/scripts/cocoapods/utils.rb +4 -4
  486. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +7 -6
  487. package/scripts/ios-configure-glog.sh +6 -1
  488. package/scripts/react_native_pods.rb +8 -0
  489. package/sdks/.hermesv1version +1 -1
  490. package/sdks/.hermesversion +1 -1
  491. package/sdks/hermes-engine/hermes-engine.podspec +39 -31
  492. package/sdks/hermes-engine/hermes-utils.rb +7 -14
  493. package/sdks/hermes-engine/version.properties +2 -2
  494. package/src/private/animated/NativeAnimatedHelper.js +130 -125
  495. package/src/private/animated/NativeAnimatedValidation.js +7 -4
  496. package/src/private/animated/createAnimatedPropsHook.js +13 -5
  497. package/src/private/animated/createAnimatedPropsMemoHook.js +10 -10
  498. package/src/private/components/virtualview/VirtualView.js +16 -9
  499. package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
  500. package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
  501. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  502. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +6 -25
  503. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -27
  504. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +3 -2
  505. package/src/private/featureflags/ReactNativeFeatureFlags.js +63 -42
  506. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  507. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +12 -9
  508. package/src/private/renderer/errorhandling/ErrorHandlers.js +7 -4
  509. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  510. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +4 -0
  511. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -0
  512. package/src/private/webapis/dom/events/CustomEvent.js +3 -3
  513. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  514. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  515. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +29 -29
  516. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +1 -1
  517. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +2 -0
  518. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  519. package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -1
  520. package/src/private/webapis/geometry/DOMRectReadOnly.js +1 -1
  521. package/src/private/webapis/html/events/MessageEvent.js +3 -3
  522. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +3 -3
  523. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +53 -5
  524. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +2 -2
  525. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +4 -4
  526. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
  527. package/src/private/webapis/mutationobserver/MutationObserver.js +1 -1
  528. package/src/private/webapis/mutationobserver/MutationRecord.js +1 -1
  529. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -4
  530. package/src/private/webapis/performance/Performance.js +1 -1
  531. package/src/private/webapis/performance/UserTiming.js +1 -1
  532. package/src/private/webapis/performance/specs/NativePerformance.js +3 -3
  533. package/src/private/webapis/structuredClone/structuredClone.js +3 -3
  534. package/src/types/globals.d.ts +30 -1
  535. package/third-party-podspecs/RCT-Folly.podspec +1 -0
  536. package/React/CxxModule/RCTCxxModule.h +0 -29
  537. package/React/CxxModule/RCTCxxModule.mm +0 -87
  538. package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.kt +0 -146
  539. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.kt +0 -45
  540. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt +0 -25
  541. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.kt +0 -61
  542. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NotThreadSafeBridgeIdleDebugListener.kt +0 -36
  543. package/ReactAndroid/src/main/java/com/facebook/react/bridge/OnBatchCompleteListener.kt +0 -21
  544. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.kt +0 -54
  545. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.kt +0 -78
  546. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.kt +0 -105
  547. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/TracingState.kt +0 -19
  548. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DidJSUpdateUiDuringFrameDetector.kt +0 -157
  549. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeKind.kt +0 -32
  550. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/debug/NotThreadSafeViewHierarchyUpdateDebugListener.kt +0 -30
  551. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.kt +0 -87
  552. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationListener.kt +0 -23
  553. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.h +0 -37
  554. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +0 -20
  555. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.cpp +0 -175
  556. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.h +0 -75
  557. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingStateSerializer.cpp +0 -68
  558. package/ReactCommon/jsinspector-modern/tracing/TracingState.h +0 -24
  559. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +0 -212
  560. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +0 -40
  561. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +0 -628
  562. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +0 -66
  563. /package/ReactCommon/jsi/jsi/{hermes.h → hermes-interfaces.h} +0 -0
@@ -0,0 +1,156 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.uimanager.events
9
+
10
+ import android.view.KeyEvent as AndroidKeyEvent
11
+ import com.facebook.react.bridge.Arguments
12
+ import com.facebook.react.bridge.WritableMap
13
+
14
+ internal abstract class KeyEvent(
15
+ surfaceId: Int,
16
+ viewTag: Int,
17
+ keyEvent: AndroidKeyEvent,
18
+ ) : Event<KeyEvent>(surfaceId, viewTag) {
19
+
20
+ // Extract all needed data from keyEvent immediately to avoid storing the AndroidKeyEvent itself
21
+ private val keyCode: Int = keyEvent.keyCode
22
+ private val unicodeChar: Int = keyEvent.unicodeChar
23
+ private val isAltPressed: Boolean = keyEvent.isAltPressed
24
+ private val isCtrlPressed: Boolean = keyEvent.isCtrlPressed
25
+ private val isMetaPressed: Boolean = keyEvent.isMetaPressed
26
+ private val isShiftPressed: Boolean = keyEvent.isShiftPressed
27
+
28
+ override fun canCoalesce(): Boolean = false
29
+
30
+ override fun getEventCategory(): Int = EventCategoryDef.DISCRETE
31
+
32
+ override fun getEventData(): WritableMap {
33
+ val eventData = Arguments.createMap()
34
+
35
+ eventData.putInt("target", viewTag)
36
+
37
+ // W3C KeyboardEvent properties
38
+ eventData.putString("key", getKeyString())
39
+ eventData.putString("code", getCodeString())
40
+
41
+ // Modifier keys
42
+ eventData.putBoolean("altKey", isAltPressed)
43
+ eventData.putBoolean("ctrlKey", isCtrlPressed)
44
+ eventData.putBoolean("metaKey", isMetaPressed)
45
+ eventData.putBoolean("shiftKey", isShiftPressed)
46
+
47
+ // Additional properties
48
+ eventData.putDouble("timestamp", timestampMs.toDouble())
49
+
50
+ return eventData
51
+ }
52
+
53
+ private fun getKeyString(): String {
54
+ return when {
55
+ unicodeChar != 0 && !Character.isISOControl(unicodeChar) -> unicodeChar.toChar().toString()
56
+ else -> KEY_NAME_MAP[keyCode] ?: UNIDENTIFIED
57
+ }
58
+ }
59
+
60
+ private fun getCodeString(): String {
61
+ return CODE_MAP[keyCode] ?: UNIDENTIFIED
62
+ }
63
+
64
+ internal companion object {
65
+ private const val UNIDENTIFIED = "Unidentified"
66
+
67
+ private val CODE_MAP: Map<Int, String> by
68
+ lazy(LazyThreadSafetyMode.PUBLICATION) {
69
+ mapOf(
70
+ // Letter keys
71
+ AndroidKeyEvent.KEYCODE_A to "KeyA",
72
+ AndroidKeyEvent.KEYCODE_B to "KeyB",
73
+ AndroidKeyEvent.KEYCODE_C to "KeyC",
74
+ AndroidKeyEvent.KEYCODE_D to "KeyD",
75
+ AndroidKeyEvent.KEYCODE_E to "KeyE",
76
+ AndroidKeyEvent.KEYCODE_F to "KeyF",
77
+ AndroidKeyEvent.KEYCODE_G to "KeyG",
78
+ AndroidKeyEvent.KEYCODE_H to "KeyH",
79
+ AndroidKeyEvent.KEYCODE_I to "KeyI",
80
+ AndroidKeyEvent.KEYCODE_J to "KeyJ",
81
+ AndroidKeyEvent.KEYCODE_K to "KeyK",
82
+ AndroidKeyEvent.KEYCODE_L to "KeyL",
83
+ AndroidKeyEvent.KEYCODE_M to "KeyM",
84
+ AndroidKeyEvent.KEYCODE_N to "KeyN",
85
+ AndroidKeyEvent.KEYCODE_O to "KeyO",
86
+ AndroidKeyEvent.KEYCODE_P to "KeyP",
87
+ AndroidKeyEvent.KEYCODE_Q to "KeyQ",
88
+ AndroidKeyEvent.KEYCODE_R to "KeyR",
89
+ AndroidKeyEvent.KEYCODE_S to "KeyS",
90
+ AndroidKeyEvent.KEYCODE_T to "KeyT",
91
+ AndroidKeyEvent.KEYCODE_U to "KeyU",
92
+ AndroidKeyEvent.KEYCODE_V to "KeyV",
93
+ AndroidKeyEvent.KEYCODE_W to "KeyW",
94
+ AndroidKeyEvent.KEYCODE_X to "KeyX",
95
+ AndroidKeyEvent.KEYCODE_Y to "KeyY",
96
+ AndroidKeyEvent.KEYCODE_Z to "KeyZ",
97
+ // Digit keys
98
+ AndroidKeyEvent.KEYCODE_0 to "Digit0",
99
+ AndroidKeyEvent.KEYCODE_1 to "Digit1",
100
+ AndroidKeyEvent.KEYCODE_2 to "Digit2",
101
+ AndroidKeyEvent.KEYCODE_3 to "Digit3",
102
+ AndroidKeyEvent.KEYCODE_4 to "Digit4",
103
+ AndroidKeyEvent.KEYCODE_5 to "Digit5",
104
+ AndroidKeyEvent.KEYCODE_6 to "Digit6",
105
+ AndroidKeyEvent.KEYCODE_7 to "Digit7",
106
+ AndroidKeyEvent.KEYCODE_8 to "Digit8",
107
+ AndroidKeyEvent.KEYCODE_9 to "Digit9",
108
+ // Special keys
109
+ AndroidKeyEvent.KEYCODE_ENTER to "Enter",
110
+ AndroidKeyEvent.KEYCODE_SPACE to "Space",
111
+ AndroidKeyEvent.KEYCODE_TAB to "Tab",
112
+ AndroidKeyEvent.KEYCODE_DEL to "Backspace",
113
+ AndroidKeyEvent.KEYCODE_ESCAPE to "Escape",
114
+ // Modifier keys
115
+ AndroidKeyEvent.KEYCODE_SHIFT_LEFT to "ShiftLeft",
116
+ AndroidKeyEvent.KEYCODE_SHIFT_RIGHT to "ShiftRight",
117
+ AndroidKeyEvent.KEYCODE_CTRL_LEFT to "ControlLeft",
118
+ AndroidKeyEvent.KEYCODE_CTRL_RIGHT to "ControlRight",
119
+ AndroidKeyEvent.KEYCODE_ALT_LEFT to "AltLeft",
120
+ AndroidKeyEvent.KEYCODE_ALT_RIGHT to "AltRight",
121
+ AndroidKeyEvent.KEYCODE_META_LEFT to "MetaLeft",
122
+ AndroidKeyEvent.KEYCODE_META_RIGHT to "MetaRight",
123
+ // Arrow keys
124
+ AndroidKeyEvent.KEYCODE_DPAD_UP to "ArrowUp",
125
+ AndroidKeyEvent.KEYCODE_DPAD_DOWN to "ArrowDown",
126
+ AndroidKeyEvent.KEYCODE_DPAD_LEFT to "ArrowLeft",
127
+ AndroidKeyEvent.KEYCODE_DPAD_RIGHT to "ArrowRight",
128
+ AndroidKeyEvent.KEYCODE_DPAD_CENTER to "Enter",
129
+ )
130
+ }
131
+
132
+ private val KEY_NAME_MAP: Map<Int, String> by
133
+ lazy(LazyThreadSafetyMode.PUBLICATION) {
134
+ mapOf(
135
+ AndroidKeyEvent.KEYCODE_ENTER to "Enter",
136
+ AndroidKeyEvent.KEYCODE_DPAD_CENTER to "Enter",
137
+ AndroidKeyEvent.KEYCODE_SPACE to " ",
138
+ AndroidKeyEvent.KEYCODE_TAB to "Tab",
139
+ AndroidKeyEvent.KEYCODE_DEL to "Backspace",
140
+ AndroidKeyEvent.KEYCODE_ESCAPE to "Escape",
141
+ AndroidKeyEvent.KEYCODE_SHIFT_LEFT to "Shift",
142
+ AndroidKeyEvent.KEYCODE_SHIFT_RIGHT to "Shift",
143
+ AndroidKeyEvent.KEYCODE_CTRL_LEFT to "Control",
144
+ AndroidKeyEvent.KEYCODE_CTRL_RIGHT to "Control",
145
+ AndroidKeyEvent.KEYCODE_ALT_LEFT to "Alt",
146
+ AndroidKeyEvent.KEYCODE_ALT_RIGHT to "Alt",
147
+ AndroidKeyEvent.KEYCODE_META_LEFT to "Meta",
148
+ AndroidKeyEvent.KEYCODE_META_RIGHT to "Meta",
149
+ AndroidKeyEvent.KEYCODE_DPAD_UP to "ArrowUp",
150
+ AndroidKeyEvent.KEYCODE_DPAD_DOWN to "ArrowDown",
151
+ AndroidKeyEvent.KEYCODE_DPAD_LEFT to "ArrowLeft",
152
+ AndroidKeyEvent.KEYCODE_DPAD_RIGHT to "ArrowRight",
153
+ )
154
+ }
155
+ }
156
+ }
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.uimanager.events
9
+
10
+ import android.view.KeyEvent as AndroidKeyEvent
11
+
12
+ /** An event representing a key release (keyup). Corresponds to W3C KeyboardEvent specification. */
13
+ internal class KeyUpEvent(
14
+ surfaceId: Int,
15
+ viewTag: Int,
16
+ keyEvent: AndroidKeyEvent,
17
+ ) : KeyEvent(surfaceId, viewTag, keyEvent) {
18
+
19
+ override fun getEventName(): String = EVENT_NAME
20
+
21
+ companion object {
22
+ private const val EVENT_NAME: String = "topKeyUp"
23
+ }
24
+ }
@@ -29,7 +29,8 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
29
29
  private lateinit var _eventName: String
30
30
  private var coalescingKey = UNSET_COALESCING_KEY
31
31
  private var pointersEventData: List<WritableMap>? = null
32
- private lateinit var eventState: PointerEventState
32
+ private var eventState: PointerEventState? = null
33
+ private var activeHitPathViewIds: List<Int>? = null
33
34
 
34
35
  private fun init(
35
36
  eventName: String,
@@ -37,12 +38,14 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
37
38
  eventState: PointerEventState,
38
39
  motionEventToCopy: MotionEvent,
39
40
  coalescingKey: Short,
41
+ activeHitPathViewIds: List<Int>?,
40
42
  ) {
41
43
  super.init(eventState.getSurfaceId(), targetTag, motionEventToCopy.eventTime)
42
44
  this._eventName = eventName
43
45
  this.motionEvent = MotionEvent.obtain(motionEventToCopy)
44
46
  this.coalescingKey = coalescingKey
45
47
  this.eventState = eventState
48
+ this.activeHitPathViewIds = activeHitPathViewIds
46
49
  }
47
50
 
48
51
  override fun getEventName(): String = _eventName
@@ -84,7 +87,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
84
87
  return@EventAnimationDriverMatchSpec false
85
88
  }
86
89
  if (isBubblingEvent(eventName)) {
87
- for (viewTarget in eventState.hitPathForActivePointer) {
90
+ for (viewTarget in checkNotNull(eventState).hitPathForActivePointer) {
88
91
  if (viewTarget.getViewId() == viewTag) {
89
92
  return@EventAnimationDriverMatchSpec true
90
93
  }
@@ -97,10 +100,10 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
97
100
  }
98
101
 
99
102
  override fun onDispose() {
103
+ eventState = null
100
104
  pointersEventData = null
101
- val motionEvent = motionEvent
102
- this.motionEvent = null
103
105
  motionEvent?.recycle()
106
+ motionEvent = null
104
107
 
105
108
  // Either `this` is in the event pool, or motionEvent
106
109
  // is null. It is in theory not possible for a PointerEvent to
@@ -137,6 +140,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
137
140
  val pointerEvent = Arguments.createMap()
138
141
  val motionEvent = checkNotNull(motionEvent)
139
142
  val pointerId = motionEvent.getPointerId(index)
143
+ val eventState = checkNotNull(eventState)
140
144
 
141
145
  // https://www.w3.org/TR/pointerevents/#pointerevent-interface
142
146
  pointerEvent.putDouble("pointerId", pointerId.toDouble())
@@ -212,6 +216,13 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
212
216
  pointerEvent.putDouble("pressure", pressure)
213
217
  pointerEvent.putDouble("tangentialPressure", 0.0)
214
218
 
219
+ if (activeHitPathViewIds != null) {
220
+ pointerEvent.putArray(
221
+ "hitPathForEventListener",
222
+ Arguments.makeNativeArray(activeHitPathViewIds),
223
+ )
224
+ }
225
+
215
226
  addModifierKeyData(pointerEvent, motionEvent.metaState)
216
227
 
217
228
  return pointerEvent
@@ -295,6 +306,9 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
295
306
 
296
307
  val hitPathForActivePointer: List<ViewTarget>
297
308
  get() = checkNotNull(hitPathByPointerId[activePointerId])
309
+
310
+ val hitPathViewIdsForActivePointer: List<Int>
311
+ get() = checkNotNull(hitPathByPointerId[activePointerId]).map { it.getViewId() }
298
312
  }
299
313
 
300
314
  companion object {
@@ -309,6 +323,15 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
309
323
  targetTag: Int,
310
324
  eventState: PointerEventState,
311
325
  motionEventToCopy: MotionEvent?,
326
+ ): PointerEvent = obtain(eventName, targetTag, eventState, motionEventToCopy, null)
327
+
328
+ @JvmStatic
329
+ fun obtain(
330
+ eventName: String,
331
+ targetTag: Int,
332
+ eventState: PointerEventState,
333
+ motionEventToCopy: MotionEvent?,
334
+ activeHitPathViewIds: List<Int>?,
312
335
  ): PointerEvent {
313
336
  var event = EVENTS_POOL.acquire()
314
337
  if (event == null) {
@@ -320,6 +343,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
320
343
  eventState,
321
344
  Assertions.assertNotNull(motionEventToCopy),
322
345
  0.toShort(),
346
+ activeHitPathViewIds,
323
347
  )
324
348
  return event
325
349
  }
@@ -342,6 +366,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
342
366
  eventState,
343
367
  Assertions.assertNotNull(motionEventToCopy),
344
368
  coalescingKey,
369
+ null,
345
370
  )
346
371
  return event
347
372
  }
@@ -372,15 +372,18 @@ public class ReactImageView(
372
372
  public override fun hasOverlappingRendering(): Boolean = false
373
373
 
374
374
  public override fun onDraw(canvas: Canvas) {
375
- BackgroundStyleApplicator.clipToPaddingBox(this, canvas)
376
- try {
377
- super.onDraw(canvas)
378
- } catch (e: RuntimeException) {
379
- // Only provide updates if downloadListener is set (shouldNotify is true)
380
- if (downloadListener != null) {
381
- val eventDispatcher =
382
- UIManagerHelper.getEventDispatcherForReactTag(context as ReactContext, id)
383
- eventDispatcher?.dispatchEvent(createErrorEvent(UIManagerHelper.getSurfaceId(this), id, e))
375
+ BackgroundStyleApplicator.clipToPaddingBoxWithAntiAliasing(this, canvas) {
376
+ try {
377
+ super.onDraw(canvas)
378
+ } catch (e: RuntimeException) {
379
+ // Only provide updates if downloadListener is set (shouldNotify is true)
380
+ if (downloadListener != null) {
381
+ val eventDispatcher =
382
+ UIManagerHelper.getEventDispatcherForReactTag(context as ReactContext, id)
383
+ eventDispatcher?.dispatchEvent(
384
+ createErrorEvent(UIManagerHelper.getSurfaceId(this), id, e)
385
+ )
386
+ }
384
387
  }
385
388
  }
386
389
  }
@@ -646,7 +646,7 @@ public class ReactModalHostView(context: ThemedReactContext) :
646
646
 
647
647
  override fun onInterceptHoverEvent(event: MotionEvent): Boolean {
648
648
  eventDispatcher?.let { jSPointerDispatcher?.handleMotionEvent(event, it, true) }
649
- return super.onHoverEvent(event)
649
+ return super.onInterceptHoverEvent(event)
650
650
  }
651
651
 
652
652
  override fun onHoverEvent(event: MotionEvent): Boolean {
@@ -28,6 +28,7 @@ import android.view.KeyEvent;
28
28
  import android.view.MotionEvent;
29
29
  import android.view.View;
30
30
  import android.view.ViewGroup;
31
+ import android.view.ViewParent;
31
32
  import android.view.accessibility.AccessibilityNodeInfo;
32
33
  import android.widget.HorizontalScrollView;
33
34
  import android.widget.OverScroller;
@@ -134,6 +135,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
134
135
  private @Nullable MaintainVisibleScrollPositionHelper mMaintainVisibleContentPositionHelper;
135
136
  private int mFadingEdgeLengthStart = 0;
136
137
  private int mFadingEdgeLengthEnd = 0;
138
+ private boolean mEmittedOverScrollSinceScrollBegin = false;
137
139
 
138
140
  public ReactHorizontalScrollView(Context context) {
139
141
  this(context, null);
@@ -298,6 +300,10 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
298
300
 
299
301
  @Override
300
302
  public void setRemoveClippedSubviews(boolean removeClippedSubviews) {
303
+ if (ReactNativeFeatureFlags.disableSubviewClippingAndroid()) {
304
+ return;
305
+ }
306
+
301
307
  if (removeClippedSubviews && mClippingRect == null) {
302
308
  mClippingRect = new Rect();
303
309
  }
@@ -733,6 +739,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
733
739
  }
734
740
  ReactScrollViewHelper.emitScrollBeginDragEvent(this);
735
741
  mDragging = true;
742
+ mEmittedOverScrollSinceScrollBegin = false;
736
743
  enableFpsListener();
737
744
  getFlingAnimator().cancel();
738
745
  }
@@ -748,6 +755,20 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
748
755
  return handled;
749
756
  }
750
757
 
758
+ private boolean isDescendantOf(View parent, View view) {
759
+ if (view == null || parent == null) {
760
+ return false;
761
+ }
762
+ ViewParent p = view.getParent();
763
+ while (p != null && p.getParent() != null) {
764
+ if (p == parent) {
765
+ return true;
766
+ }
767
+ p = p.getParent();
768
+ }
769
+ return false;
770
+ }
771
+
751
772
  @Override
752
773
  public boolean arrowScroll(int direction) {
753
774
  boolean handled = false;
@@ -759,7 +780,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
759
780
  View currentFocused = findFocus();
760
781
  View nextFocused = FocusFinder.getInstance().findNextFocus(this, currentFocused, direction);
761
782
  View rootChild = getContentView();
762
- if (rootChild != null && nextFocused != null && nextFocused.getParent() == rootChild) {
783
+ if (isDescendantOf(rootChild, nextFocused)) {
763
784
  if (!isScrolledInView(nextFocused) && !isMostlyScrolledInView(nextFocused)) {
764
785
  smoothScrollToNextPage(direction);
765
786
  }
@@ -842,8 +863,13 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
842
863
  @Override
843
864
  public void run() {
844
865
  mPostTouchRunnable = null;
845
- // Trigger snap alignment now that scrolling has stopped
846
- handlePostTouchScrolling(0, 0);
866
+ // +1/-1 velocity if scrolling right or left. This is to ensure that the
867
+ // next/previous page is picked rather than sliding backwards to the current page
868
+ int velocityX = (int) Math.signum(hScroll);
869
+ if (mDisableIntervalMomentum) {
870
+ velocityX = 0;
871
+ }
872
+ flingAndSnap(velocityX);
847
873
  }
848
874
  };
849
875
  postOnAnimationDelayed(mPostTouchRunnable, ReactScrollViewHelper.MOMENTUM_DELAY);
@@ -1060,6 +1086,13 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
1060
1086
  // END FB SCROLLVIEW CHANGE
1061
1087
  }
1062
1088
 
1089
+ if (ReactNativeFeatureFlags.shouldTriggerResponderTransferOnScrollAndroid()
1090
+ && clampedX
1091
+ && mEmittedOverScrollSinceScrollBegin == false) {
1092
+ ReactScrollViewHelper.emitScrollEvent(this, 0f, 0f);
1093
+ mEmittedOverScrollSinceScrollBegin = true;
1094
+ }
1095
+
1063
1096
  super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
1064
1097
  }
1065
1098
 
@@ -132,6 +132,7 @@ public class ReactScrollView extends ScrollView
132
132
  private @Nullable MaintainVisibleScrollPositionHelper mMaintainVisibleContentPositionHelper;
133
133
  private int mFadingEdgeLengthStart;
134
134
  private int mFadingEdgeLengthEnd;
135
+ private boolean mEmittedOverScrollSinceScrollBegin;
135
136
 
136
137
  public ReactScrollView(Context context) {
137
138
  this(context, null);
@@ -194,6 +195,7 @@ public class ReactScrollView extends ScrollView
194
195
  mMaintainVisibleContentPositionHelper = null;
195
196
  mFadingEdgeLengthStart = 0;
196
197
  mFadingEdgeLengthEnd = 0;
198
+ mEmittedOverScrollSinceScrollBegin = false;
197
199
  }
198
200
 
199
201
  /* package */ void recycleView() {
@@ -629,6 +631,7 @@ public class ReactScrollView extends ScrollView
629
631
  }
630
632
  ReactScrollViewHelper.emitScrollBeginDragEvent(this);
631
633
  mDragging = true;
634
+ mEmittedOverScrollSinceScrollBegin = false;
632
635
  enableFpsListener();
633
636
  getFlingAnimator().cancel();
634
637
  }
@@ -696,8 +699,13 @@ public class ReactScrollView extends ScrollView
696
699
  @Override
697
700
  public void run() {
698
701
  mPostTouchRunnable = null;
699
- // Trigger snap alignment now that scrolling has stopped
700
- handlePostTouchScrolling(0, 0);
702
+ // +1/-1 velocity if scrolling down or up. This is to ensure that the
703
+ // next/previous page is picked rather than sliding backwards to the current page
704
+ int velocityY = (int) -Math.signum(vScroll);
705
+ if (mDisableIntervalMomentum) {
706
+ velocityY = 0;
707
+ }
708
+ flingAndSnap(velocityY);
701
709
  }
702
710
  };
703
711
  postOnAnimationDelayed(mPostTouchRunnable, ReactScrollViewHelper.MOMENTUM_DELAY);
@@ -722,6 +730,10 @@ public class ReactScrollView extends ScrollView
722
730
 
723
731
  @Override
724
732
  public void setRemoveClippedSubviews(boolean removeClippedSubviews) {
733
+ if (ReactNativeFeatureFlags.disableSubviewClippingAndroid()) {
734
+ return;
735
+ }
736
+
725
737
  if (removeClippedSubviews && mClippingRect == null) {
726
738
  mClippingRect = new Rect();
727
739
  }
@@ -776,8 +788,6 @@ public class ReactScrollView extends ScrollView
776
788
  if (mPagingEnabled) {
777
789
  flingAndSnap(correctedVelocityY);
778
790
  } else if (mScroller != null) {
779
- // FB SCROLLVIEW CHANGE
780
-
781
791
  // We provide our own version of fling that uses a different call to the standard OverScroller
782
792
  // which takes into account the possibility of adding new content while the ScrollView is
783
793
  // animating. Because we give essentially no max Y for the fling, the fling will continue as
@@ -802,8 +812,6 @@ public class ReactScrollView extends ScrollView
802
812
  );
803
813
 
804
814
  ViewCompat.postInvalidateOnAnimation(this);
805
-
806
- // END FB SCROLLVIEW CHANGE
807
815
  } else {
808
816
  super.fling(correctedVelocityY);
809
817
  }
@@ -1262,11 +1270,8 @@ public class ReactScrollView extends ScrollView
1262
1270
  @Override
1263
1271
  protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
1264
1272
  if (mScroller != null && mContentView != null) {
1265
- // FB SCROLLVIEW CHANGE
1266
-
1267
1273
  // This is part two of the reimplementation of fling to fix the bounce-back bug. See #fling()
1268
- // for
1269
- // more information.
1274
+ // for more information.
1270
1275
 
1271
1276
  if (!mScroller.isFinished() && mScroller.getCurrY() != mScroller.getFinalY()) {
1272
1277
  int scrollRange = getMaxScrollY();
@@ -1275,8 +1280,13 @@ public class ReactScrollView extends ScrollView
1275
1280
  scrollY = scrollRange;
1276
1281
  }
1277
1282
  }
1283
+ }
1278
1284
 
1279
- // END FB SCROLLVIEW CHANGE
1285
+ if (ReactNativeFeatureFlags.shouldTriggerResponderTransferOnScrollAndroid()
1286
+ && clampedY
1287
+ && mEmittedOverScrollSinceScrollBegin == false) {
1288
+ ReactScrollViewHelper.emitScrollEvent(this, 0f, 0f);
1289
+ mEmittedOverScrollSinceScrollBegin = true;
1280
1290
  }
1281
1291
 
1282
1292
  super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
@@ -49,6 +49,13 @@ internal class VirtualViewContainerStateExperimental(scrollView: ViewGroup) :
49
49
  }
50
50
  }
51
51
 
52
+ override fun remove(virtualView: VirtualView) {
53
+ super.remove(virtualView)
54
+ HPV.remove(virtualView.virtualViewID)
55
+ P.remove(virtualView.virtualViewID)
56
+ V.remove(virtualView.virtualViewID)
57
+ }
58
+
52
59
  /**
53
60
  * Perform mode update check on a single VirtualView. Does not check other VirtualViews in the
54
61
  * collection. Use carefully
@@ -219,6 +219,7 @@ internal class ReactTextViewAccessibilityDelegate(
219
219
  node.contentDescription = accessibleTextSpan.description
220
220
  node.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK)
221
221
  node.setBoundsInParent(bounds)
222
+ node.setClickable(true)
222
223
  node.roleDescription = hostView.resources.getString(R.string.link_description)
223
224
  node.className = AccessibilityRole.getValue(AccessibilityRole.BUTTON)
224
225
  }
@@ -290,22 +291,26 @@ internal class ReactTextViewAccessibilityDelegate(
290
291
  init {
291
292
  val accessibleLinks = mutableListOf<AccessibleLink>()
292
293
  val spans = text.getSpans(0, text.length, ClickableSpan::class.java)
293
- spans.sortBy { text.getSpanStart(it) }
294
- for (i in spans.indices) {
295
- val span = spans[i]
296
- val start = text.getSpanStart(span)
297
- val end = text.getSpanEnd(span)
298
- // zero length spans, and out of range spans should not be included.
299
- if (start == end || start < 0 || end < 0 || start > text.length || end > text.length) {
300
- continue
301
- }
302
294
 
303
- val link = AccessibleLink()
304
- link.description = text.subSequence(start, end).toString()
305
- link.start = start
306
- link.end = end
307
- link.id = i
308
- accessibleLinks.add(link)
295
+ // Do not generate virtual views if whole text is a single link
296
+ if (!isWholeTextSingleLink(text, spans)) {
297
+ spans.sortBy { text.getSpanStart(it) }
298
+ for (i in spans.indices) {
299
+ val span = spans[i]
300
+ val start = text.getSpanStart(span)
301
+ val end = text.getSpanEnd(span)
302
+ // zero length spans, and out of range spans should not be included.
303
+ if (start == end || start < 0 || end < 0 || start > text.length || end > text.length) {
304
+ continue
305
+ }
306
+
307
+ val link = AccessibleLink()
308
+ link.description = text.subSequence(start, end).toString()
309
+ link.start = start
310
+ link.end = end
311
+ link.id = i
312
+ accessibleLinks.add(link)
313
+ }
309
314
  }
310
315
  links = accessibleLinks
311
316
  }
@@ -342,3 +347,14 @@ internal class ReactTextViewAccessibilityDelegate(
342
347
  }
343
348
  }
344
349
  }
350
+
351
+ private fun isWholeTextSingleLink(text: Spanned, spans: Array<ClickableSpan>): Boolean {
352
+ if (spans.size != 1) {
353
+ return false
354
+ }
355
+
356
+ val span = spans[0]
357
+ val start = text.getSpanStart(span)
358
+ val end = text.getSpanEnd(span)
359
+ return start == 0 && end == text.length
360
+ }