react-native-tvos 0.86.0-2 → 0.87.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 (1076) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +19 -24
  2. package/Libraries/Alert/Alert.js +38 -1
  3. package/Libraries/Animated/AnimatedExports.js +22 -0
  4. package/Libraries/Animated/AnimatedExports.js.flow +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +120 -3
  6. package/Libraries/Animated/Easing.js +4 -3
  7. package/Libraries/Animated/NativeAnimatedAllowlist.js +37 -0
  8. package/Libraries/Animated/animations/Animation.js +14 -5
  9. package/Libraries/Animated/animations/DecayAnimation.js +1 -0
  10. package/Libraries/Animated/animations/SpringAnimation.js +1 -0
  11. package/Libraries/Animated/animations/TimingAnimation.js +9 -0
  12. package/Libraries/Animated/createAnimatedComponent.js +3 -3
  13. package/Libraries/Animated/nodes/AnimatedColor.js +8 -8
  14. package/Libraries/Animated/nodes/AnimatedInterpolation.js +106 -0
  15. package/Libraries/Animated/nodes/AnimatedProps.js +27 -3
  16. package/Libraries/Animated/nodes/AnimatedValue.js +8 -0
  17. package/Libraries/Animated/nodes/AnimatedValueXY.js +2 -2
  18. package/Libraries/AppDelegate/RCTAppDelegate.h +5 -9
  19. package/Libraries/AppDelegate/RCTAppDelegate.mm +0 -20
  20. package/Libraries/AppDelegate/RCTAppSetupUtils.h +0 -18
  21. package/Libraries/AppDelegate/RCTAppSetupUtils.mm +0 -78
  22. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +18 -17
  23. package/Libraries/AppDelegate/RCTReactNativeFactory.h +5 -41
  24. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +0 -82
  25. package/Libraries/AppDelegate/RCTRootViewFactory.h +4 -1
  26. package/Libraries/AppDelegate/RCTRootViewFactory.mm +3 -98
  27. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +1 -0
  28. package/Libraries/AppState/AppState.d.ts +4 -1
  29. package/Libraries/AppState/AppState.js +32 -17
  30. package/Libraries/BatchedBridge/MessageQueue.js +42 -51
  31. package/Libraries/BatchedBridge/NativeModules.js +7 -0
  32. package/Libraries/Blob/Blob.js +7 -1
  33. package/Libraries/Blob/FileReader.js +6 -0
  34. package/Libraries/Blob/URLSearchParams.js.flow +1 -1
  35. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +20 -9
  36. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -43
  37. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +59 -49
  38. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -2
  39. package/Libraries/Components/Button.js +96 -182
  40. package/Libraries/Components/Clipboard/Clipboard.js +5 -0
  41. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -2
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +8 -69
  43. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +10 -1
  44. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +2 -0
  45. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +26 -31
  46. package/Libraries/Components/Keyboard/Keyboard.js +23 -60
  47. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +15 -7
  48. package/Libraries/Components/Pressable/Pressable.js +39 -17
  49. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +5 -6
  50. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +4 -4
  51. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
  52. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +17 -0
  53. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  54. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -2
  55. package/Libraries/Components/RefreshControl/RefreshControl.js +40 -50
  56. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -2
  57. package/Libraries/Components/SafeAreaView/SafeAreaView.js +8 -8
  58. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  59. package/Libraries/Components/ScrollView/ScrollView.d.ts +55 -43
  60. package/Libraries/Components/ScrollView/ScrollView.js +202 -115
  61. package/Libraries/Components/ScrollView/ScrollViewCommands.js +4 -4
  62. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  63. package/Libraries/Components/StatusBar/StatusBar.d.ts +7 -54
  64. package/Libraries/Components/StatusBar/StatusBar.js +85 -161
  65. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -2
  66. package/Libraries/Components/Switch/Switch.js +76 -75
  67. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -2
  68. package/Libraries/Components/TV/TVEventHandler.js +16 -1
  69. package/Libraries/Components/TextInput/InputAccessoryView.js +13 -61
  70. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -2
  71. package/Libraries/Components/TextInput/TextInput.d.ts +9 -2
  72. package/Libraries/Components/TextInput/TextInput.flow.js +19 -2
  73. package/Libraries/Components/TextInput/TextInput.js +116 -111
  74. package/Libraries/Components/TextInput/TextInputNativeCommands.js +3 -3
  75. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +25 -19
  76. package/Libraries/Components/Touchable/Touchable.js +94 -95
  77. package/Libraries/Components/Touchable/TouchableHighlight.js +46 -114
  78. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +13 -25
  79. package/Libraries/Components/Touchable/TouchableOpacity.js +14 -84
  80. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +4 -3
  81. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -2
  82. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -0
  83. package/Libraries/Components/View/View.js +85 -64
  84. package/Libraries/Components/View/ViewAccessibility.d.ts +11 -1
  85. package/Libraries/Components/View/ViewAccessibility.js +16 -5
  86. package/Libraries/Components/View/ViewNativeComponent.js +6 -8
  87. package/Libraries/Components/View/ViewPropTypes.js +55 -9
  88. package/Libraries/Core/InitializeCore.js +9 -1
  89. package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
  90. package/Libraries/Core/ReactNativeVersion.js +2 -2
  91. package/Libraries/Core/Timers/JSTimers.js +53 -52
  92. package/Libraries/Core/setUpGlobals.js +9 -4
  93. package/Libraries/Core/setUpNavigator.js +6 -1
  94. package/Libraries/Core/setUpReactDevTools.js +0 -118
  95. package/Libraries/Core/setUpXHR.js +6 -2
  96. package/Libraries/Debugging/DebuggingOverlay.js +2 -2
  97. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -2
  98. package/Libraries/EventEmitter/NativeEventEmitter.js +29 -0
  99. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +7 -7
  100. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +3 -0
  101. package/Libraries/Image/AssetSourceResolver.js +18 -27
  102. package/Libraries/Image/Image.android.js +13 -2
  103. package/Libraries/Image/Image.ios.js +3 -1
  104. package/Libraries/Image/ImageBackground.js +30 -18
  105. package/Libraries/Image/ImageProps.js +116 -117
  106. package/Libraries/Image/ImageSource.d.ts +1 -1
  107. package/Libraries/Image/ImageSource.js +9 -9
  108. package/Libraries/Image/ImageSourceUtils.js +10 -7
  109. package/Libraries/Image/ImageTypes.flow.js +2 -0
  110. package/Libraries/Image/ImageViewNativeComponent.js +1 -1
  111. package/Libraries/Image/RCTImageLoader.mm +60 -63
  112. package/Libraries/Image/RCTImageStoreManager.h +0 -2
  113. package/Libraries/Image/RelativeImageStub.js +1 -1
  114. package/Libraries/Image/resolveAssetSource.js +1 -1
  115. package/Libraries/Interaction/PanResponder.js +102 -97
  116. package/Libraries/LayoutAnimation/LayoutAnimation.js +22 -6
  117. package/Libraries/Linking/Linking.js +24 -23
  118. package/Libraries/Lists/FlatList.d.ts +6 -17
  119. package/Libraries/Lists/FlatList.js +7 -8
  120. package/Libraries/Lists/SectionList.js +7 -0
  121. package/Libraries/Lists/VirtualizedList.js +3 -0
  122. package/Libraries/Lists/VirtualizedSectionList.js +4 -0
  123. package/Libraries/LogBox/LogBox.js +3 -3
  124. package/Libraries/LogBox/UI/AnsiHighlight.js +2 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +2 -2
  126. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +4 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +3 -1
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +8 -2
  129. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +9 -2
  130. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +17 -4
  131. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +3 -1
  132. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -1
  133. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -0
  134. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +4 -2
  135. package/Libraries/LogBox/UI/LogBoxMessage.js +18 -5
  136. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +4 -1
  137. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +1 -0
  138. package/Libraries/LogBox/UI/LogBoxStyle.js +0 -4
  139. package/Libraries/Modal/Modal.d.ts +5 -4
  140. package/Libraries/Modal/Modal.js +71 -37
  141. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -2
  142. package/Libraries/NativeComponent/BaseViewConfig.android.js +17 -0
  143. package/Libraries/NativeComponent/ViewConfig.js +3 -3
  144. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
  145. package/Libraries/Network/RCTHTTPRequestHandler.h +1 -1
  146. package/Libraries/Performance/Systrace.js +36 -0
  147. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +4 -2
  148. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +29 -17
  149. package/Libraries/Pressability/Pressability.js +1 -1
  150. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +4 -0
  151. package/Libraries/ReactNative/AppContainer-dev.js +3 -1
  152. package/Libraries/ReactNative/AppRegistry.flow.js +1 -0
  153. package/Libraries/ReactNative/AppRegistry.js +15 -11
  154. package/Libraries/ReactNative/AppRegistryImpl.js +57 -11
  155. package/Libraries/ReactNative/DisplayMode.js +1 -1
  156. package/Libraries/ReactNative/FabricUIManager.js +29 -26
  157. package/Libraries/ReactNative/I18nManager.js +20 -0
  158. package/Libraries/ReactNative/UIManager.js +53 -0
  159. package/Libraries/ReactNative/renderApplication.js +1 -1
  160. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -126
  161. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +5 -41
  162. package/Libraries/Renderer/shims/ReactNativeTypes.js +36 -36
  163. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +4 -4
  164. package/Libraries/Settings/Settings.ios.js +22 -0
  165. package/Libraries/Share/Share.js +25 -28
  166. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +6 -0
  167. package/Libraries/StyleSheet/StyleSheet.js +42 -2
  168. package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
  169. package/Libraries/StyleSheet/StyleSheetExports.js +7 -5
  170. package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
  171. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +24 -3
  172. package/Libraries/StyleSheet/StyleSheetTypes.js +34 -6
  173. package/Libraries/StyleSheet/flattenStyle.js +28 -13
  174. package/Libraries/StyleSheet/private/_TransformStyle.js +16 -14
  175. package/Libraries/Text/Text.js +12 -9
  176. package/Libraries/Text/TextEffectNativeComponent.js +31 -0
  177. package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +0 -1
  178. package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +0 -1
  179. package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +0 -1
  180. package/Libraries/Text/TextProps.js +59 -93
  181. package/Libraries/Text/requireNativeTextEffect.js +28 -0
  182. package/Libraries/TurboModule/RCTExport.js +1 -1
  183. package/Libraries/Types/CoreEventTypes.d.ts +8 -0
  184. package/Libraries/Types/CoreEventTypes.js +32 -29
  185. package/Libraries/Types/UIManagerJSInterface.js +2 -2
  186. package/Libraries/Utilities/Appearance.d.ts +32 -17
  187. package/Libraries/Utilities/Appearance.js +35 -18
  188. package/Libraries/Utilities/BackHandler.android.js +13 -33
  189. package/Libraries/Utilities/BackHandler.js.flow +18 -2
  190. package/Libraries/Utilities/DevSettings.js +8 -1
  191. package/Libraries/Utilities/Dimensions.js +18 -12
  192. package/Libraries/Utilities/PixelRatio.js +5 -2
  193. package/Libraries/Utilities/Platform.js.flow +4 -0
  194. package/Libraries/Utilities/PlatformTypes.js +77 -0
  195. package/Libraries/Utilities/differ/deepDiffer.js +5 -2
  196. package/Libraries/Utilities/useColorScheme.js +11 -1
  197. package/Libraries/Utilities/useWindowDimensions.js +6 -0
  198. package/Libraries/Vibration/Vibration.js +14 -11
  199. package/Libraries/vendor/emitter/EventEmitter.js +3 -3
  200. package/React/Base/RCTBridge+Private.h +0 -22
  201. package/React/Base/RCTBridge.h +10 -8
  202. package/React/Base/RCTBridge.mm +5 -447
  203. package/React/Base/RCTBridgeDelegate.h +1 -56
  204. package/React/Base/RCTBridgeModule.h +0 -9
  205. package/React/Base/RCTBridgeProxy.h +8 -0
  206. package/React/Base/RCTBridgeProxy.mm +3 -20
  207. package/React/Base/RCTBundleManager.h +0 -3
  208. package/React/Base/RCTBundleManager.m +0 -31
  209. package/React/Base/RCTBundleURLProvider.mm +4 -4
  210. package/React/Base/RCTCallableJSModules.m +0 -18
  211. package/React/Base/RCTConstants.h +1 -0
  212. package/React/Base/RCTConstants.m +1 -0
  213. package/React/Base/RCTConvert.mm +3 -0
  214. package/React/Base/RCTDisplayLink.h +3 -1
  215. package/React/Base/RCTJavaScriptExecutor.h +0 -69
  216. package/React/Base/RCTModuleData.mm +2 -483
  217. package/React/Base/RCTModuleRegistry.m +0 -25
  218. package/React/Base/RCTRootView.h +0 -11
  219. package/React/Base/RCTRootView.m +3 -461
  220. package/React/Base/RCTUtils.h +0 -3
  221. package/React/Base/RCTUtils.mm +17 -27
  222. package/React/Base/RCTVersion.m +2 -2
  223. package/React/Base/RCTViewRegistry.m +1 -29
  224. package/React/Base/Surface/RCTSurface.mm +1 -582
  225. package/React/Base/Surface/RCTSurfaceRootShadowView.m +0 -89
  226. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +0 -1
  227. package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +0 -2
  228. package/React/CoreModules/RCTAlertController.mm +1 -0
  229. package/React/CoreModules/RCTAlertManager.mm +0 -5
  230. package/React/CoreModules/RCTLogBox.mm +0 -11
  231. package/React/CoreModules/RCTLogBoxView.h +0 -3
  232. package/React/CoreModules/RCTLogBoxView.mm +0 -31
  233. package/React/CoreModules/RCTPerfMonitor.mm +0 -2
  234. package/React/CoreModules/RCTStatusBarManager.mm +0 -11
  235. package/React/CxxModule/RCTCxxUtils.h +0 -8
  236. package/React/CxxModule/RCTCxxUtils.mm +0 -17
  237. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +179 -7
  238. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +100 -2
  239. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +373 -119
  240. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.cpp +1 -1
  241. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ComponentDescriptors.h +1 -1
  242. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.cpp +71 -71
  243. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.h +96 -96
  244. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.cpp +357 -363
  245. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +211 -212
  246. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/RCTComponentViewHelpers.h +107 -107
  247. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.cpp +1 -1
  248. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/ShadowNodes.h +11 -11
  249. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/States.h +2 -2
  250. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.h +4 -0
  251. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +4 -0
  252. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.h +4 -0
  253. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +5 -0
  254. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -1
  255. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +14 -0
  256. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +12 -3
  257. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm +12 -26
  258. package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +39 -4
  259. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +18 -22
  260. package/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +0 -18
  261. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +9 -5
  262. package/React/Fabric/RCTSurfacePresenter.mm +86 -5
  263. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +2 -0
  264. package/React/I18n/RCTLocalizedString.mm +38 -2
  265. package/React/Modules/RCTEventEmitter.m +30 -10
  266. package/React/Modules/RCTI18nUtil.m +3 -1
  267. package/React/Modules/RCTUIManager.mm +0 -1501
  268. package/React/React-RCTFBReactNativeSpec.podspec +1 -1
  269. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +27 -0
  270. package/React/Views/RCTModalHostViewController.h +0 -18
  271. package/React/Views/RCTModalHostViewManager.h +0 -24
  272. package/React/Views/RCTShadowView.h +0 -2
  273. package/React/Views/RCTShadowView.m +0 -723
  274. package/React/Views/RCTView.h +0 -19
  275. package/React/Views/RCTViewManager.m +0 -53
  276. package/React/Views/ScrollView/RCTScrollView.h +0 -92
  277. package/React/Views/ScrollView/RCTScrollableProtocol.h +0 -4
  278. package/React-Core-prebuilt.podspec +45 -17
  279. package/React-Core.podspec +9 -2
  280. package/ReactAndroid/api/ReactAndroid.api +128 -142
  281. package/ReactAndroid/build.gradle.kts +26 -21
  282. package/ReactAndroid/external-artifacts/build.gradle.kts +49 -0
  283. package/ReactAndroid/gradle.properties +1 -1
  284. package/ReactAndroid/hermes-engine/build.gradle.kts +19 -20
  285. package/ReactAndroid/src/debug/AndroidManifest.xml +6 -0
  286. package/ReactAndroid/src/debugOptimized/AndroidManifest.xml +22 -0
  287. package/ReactAndroid/src/main/java/com/facebook/react/BaseReactPackage.kt +3 -7
  288. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +4 -2
  289. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +4 -6
  290. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +5 -7
  291. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.kt +212 -0
  292. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +0 -16
  293. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +6 -1
  294. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.kt +1 -0
  295. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.kt +287 -0
  296. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.kt +16 -0
  297. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +15 -2
  298. package/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt +1 -3
  299. package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt +4 -0
  300. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/MapBuffer.kt +50 -2
  301. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.kt +63 -22
  302. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/WritableMapBuffer.kt +33 -0
  303. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt +4 -12
  304. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactActivityDelegate.kt +14 -10
  305. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +6 -6
  306. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BundleDownloader.kt +50 -47
  307. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.kt +0 -4
  308. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +10 -10
  309. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LocalNetworkPermissionUtil.kt +49 -0
  310. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/MultipartStreamReader.kt +101 -26
  311. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +40 -38
  312. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +1 -10
  313. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerProviderImpl.kt +0 -3
  314. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +15 -11
  315. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +4 -4
  316. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +7 -13
  317. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +195 -194
  318. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt +12 -8
  319. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +30 -66
  320. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +51 -111
  321. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +11 -23
  322. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +12 -24
  323. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +57 -123
  324. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +7 -5
  325. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -5
  326. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +11 -23
  327. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlags.kt +0 -24
  328. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +0 -4
  329. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +1 -0
  330. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.kt +3 -0
  331. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +50 -0
  332. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +53 -3
  333. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +2 -77
  334. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  335. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +2 -2
  336. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +1 -1
  337. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt +9 -4
  338. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +4 -19
  339. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +1 -5
  340. package/ReactAndroid/src/main/java/com/facebook/react/touch/ReactInterceptingViewGroup.kt +4 -4
  341. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +46 -9
  342. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +1 -49
  343. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/HasChildPressedStateDelay.kt +29 -0
  344. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.kt +796 -0
  345. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +2 -4
  346. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.kt +27 -27
  347. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.kt +184 -0
  348. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.kt +486 -0
  349. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +8 -8
  350. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ShadowNodeRegistry.kt +2 -2
  351. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/SkewMatrixHelper.kt +200 -0
  352. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +3 -0
  353. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +6 -1
  354. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +2 -2
  355. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIBlock.kt +7 -1
  356. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.kt +645 -0
  357. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.kt +2 -3
  358. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.kt +142 -0
  359. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupManager.kt +0 -10
  360. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +3 -3
  361. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt +527 -0
  362. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +3 -1
  363. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +6 -6
  364. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ColorStop.kt +6 -0
  365. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +7 -0
  366. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayout.kt +8 -1
  367. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +0 -3
  368. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +2 -0
  369. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ReactProgressBarViewManager.kt +4 -4
  370. package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaView.kt +2 -0
  371. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.kt +1729 -0
  372. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +15 -15
  373. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.kt +1297 -0
  374. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollViewManager.kt +13 -13
  375. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.kt +1392 -0
  376. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +14 -14
  377. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainer.kt +19 -33
  378. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateClassic.kt +8 -6
  379. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +4 -4
  380. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/generate-nested-scroll-view.js +13 -20
  381. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt +7 -1
  382. package/ReactAndroid/src/main/java/com/facebook/react/views/text/MutableSpannableLayout.kt +107 -0
  383. package/ReactAndroid/src/main/java/com/facebook/react/views/text/PreparedLayoutTextView.kt +122 -10
  384. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +91 -1
  385. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +3 -0
  386. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt +41 -0
  387. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt +48 -2
  388. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextDecorationStyle.kt +200 -0
  389. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextEffectRegistry.kt +45 -0
  390. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextEffectSpanFactory.kt +17 -0
  391. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +361 -15
  392. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/AnimatedEffectSpan.kt +37 -0
  393. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/{DrawCommandSpan.kt → CanvasEffectSpan.kt} +3 -4
  394. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +23 -3
  395. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactStrikethroughSpan.kt +30 -3
  396. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactUnderlineSpan.kt +25 -3
  397. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.kt +1 -1
  398. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/StatefulSpan.kt +21 -0
  399. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TextEffectSpan.kt +19 -0
  400. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/TouchableSpan.kt +29 -0
  401. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +81 -9
  402. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +4 -0
  403. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +7 -21
  404. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +9 -1
  405. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +2 -0
  406. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/VirtualViewRenderState.kt +1 -1
  407. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +7 -8
  408. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.kt +45 -0
  409. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaBoxSizing.kt +27 -0
  410. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfig.kt +15 -0
  411. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIBase.kt +6 -0
  412. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDimension.kt +27 -0
  413. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.kt +31 -0
  414. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaEdge.kt +41 -0
  415. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.kt +37 -0
  416. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.kt +27 -0
  417. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaFlexDirection.kt +31 -0
  418. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.kt +33 -0
  419. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.kt +29 -0
  420. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.kt +43 -0
  421. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaLogLevel.kt +39 -0
  422. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaMeasureMode.kt +29 -0
  423. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.kt +16 -0
  424. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.kt +12 -2
  425. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.kt +762 -0
  426. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +4 -4
  427. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.kt +27 -0
  428. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaOverflow.kt +29 -0
  429. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.kt +29 -0
  430. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.kt +24 -2
  431. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.kt +37 -0
  432. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaWrap.kt +29 -0
  433. package/ReactAndroid/src/main/jni/CMakeLists.txt +1 -2
  434. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +94 -0
  435. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionDelegateImpl.cpp +3 -0
  436. package/ReactAndroid/src/main/jni/react/fabric/AndroidAnimationChoreographer.h +10 -10
  437. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +3 -0
  438. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +12 -15
  439. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +1 -3
  440. package/ReactAndroid/src/main/jni/react/fabric/test/FabricMountingManagerTest.cpp +159 -0
  441. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +69 -153
  442. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +15 -33
  443. package/ReactAndroid/src/main/jni/react/jni/JReactMarker.cpp +10 -24
  444. package/ReactAndroid/src/main/jni/react/jni/JReactMarker.h +0 -2
  445. package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JWritableMapBuffer.cpp +13 -0
  446. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +4 -1
  447. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +8 -0
  448. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +4 -0
  449. package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +5 -0
  450. package/ReactAndroid/src/main/res/views/uimanager/values-zu/strings.xml +3 -0
  451. package/ReactApple/RCTAnimatedModuleProvider/React-RCTAnimatedModuleProvider.podspec +63 -0
  452. package/ReactCommon/React-Fabric.podspec +2 -0
  453. package/ReactCommon/ReactCommon.podspec +2 -12
  454. package/ReactCommon/cmake-utils/react-native-flags.cmake +1 -3
  455. package/ReactCommon/cxxreact/CMakeLists.txt +1 -0
  456. package/ReactCommon/cxxreact/ErrorUtils.h +2 -32
  457. package/ReactCommon/cxxreact/Instance.cpp +1 -26
  458. package/ReactCommon/cxxreact/Instance.h +0 -2
  459. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +3 -2
  460. package/ReactCommon/cxxreact/RAMBundleRegistry.cpp +0 -12
  461. package/ReactCommon/cxxreact/RAMBundleRegistry.h +0 -5
  462. package/ReactCommon/cxxreact/React-cxxreact.podspec +2 -1
  463. package/ReactCommon/cxxreact/ReactMarker.cpp +4 -30
  464. package/ReactCommon/cxxreact/ReactMarker.h +38 -21
  465. package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
  466. package/ReactCommon/cxxreact/TraceSection.h +1 -1
  467. package/ReactCommon/cxxreact/tests/methodcall.cpp +4 -0
  468. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +6 -79
  469. package/ReactCommon/jserrorhandler/ErrorUtils.cpp +42 -0
  470. package/{React/CxxLogUtils/RCTDefaultCxxLogFunction.h → ReactCommon/jserrorhandler/ErrorUtils.h} +2 -2
  471. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -1
  472. package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +2 -3
  473. package/ReactCommon/jsi/jsi/hermes-interfaces.h +53 -0
  474. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +2 -1
  475. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +3 -14
  476. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +4 -13
  477. package/ReactCommon/jsinspector-modern/HostAgent.cpp +54 -0
  478. package/ReactCommon/jsinspector-modern/HostTarget.h +0 -7
  479. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +10 -7
  480. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +4 -1
  481. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +7 -0
  482. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +20 -0
  483. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -0
  484. package/ReactCommon/jsinspector-modern/SessionState.h +31 -0
  485. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
  486. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +14 -1
  487. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +11 -0
  488. package/ReactCommon/react/bridging/ArrayBuffer.h +180 -0
  489. package/ReactCommon/react/bridging/Bridging.h +1 -0
  490. package/ReactCommon/react/bridging/Convert.h +12 -0
  491. package/ReactCommon/react/bridging/React-bridging.podspec +44 -0
  492. package/ReactCommon/react/bridging/tests/BridgingTest.cpp +185 -11
  493. package/ReactCommon/react/bridging/tests/ClassTest.cpp +22 -0
  494. package/ReactCommon/react/cxxstableapi/CMakeLists.txt +18 -0
  495. package/ReactCommon/react/cxxstableapi/FrameworksGuard.h +35 -0
  496. package/ReactCommon/react/cxxstableapi/PrivateGuard.h +34 -0
  497. package/ReactCommon/react/cxxstableapi/React-cxxstableapi.podspec +34 -0
  498. package/ReactCommon/react/cxxstableapi/UmbrellaGuard.h +53 -0
  499. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +21 -45
  500. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +26 -56
  501. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +134 -242
  502. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +14 -26
  503. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +20 -44
  504. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +43 -97
  505. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +10 -6
  506. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -7
  507. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -8
  508. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +7 -13
  509. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +1 -0
  510. package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +49 -0
  511. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.cpp +4 -0
  512. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h +4 -0
  513. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +1 -1
  514. package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
  515. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +4 -0
  516. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +4 -0
  517. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +60 -3
  518. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.h +0 -9
  519. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +37 -139
  520. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleWithJSIBindings.h +0 -3
  521. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +6 -0
  522. package/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +10 -4
  523. package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +1 -0
  524. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +25 -55
  525. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +11 -23
  526. package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -0
  527. package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +1 -0
  528. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +4 -0
  529. package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +1 -0
  530. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.h +1 -1
  531. package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +1 -0
  532. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +95 -63
  533. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +20 -1
  534. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +7 -10
  535. package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +20 -1
  536. package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.h +1 -0
  537. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +67 -6
  538. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +12 -0
  539. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +25 -13
  540. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +7 -0
  541. package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +48 -0
  542. package/ReactCommon/react/renderer/animated/tests/DecayAnimationDriverTest.cpp +245 -0
  543. package/ReactCommon/react/renderer/animated/tests/ManagedPropsMountingOverrideTests.cpp +204 -0
  544. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -1
  545. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  546. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +17 -0
  547. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +0 -2
  548. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +6 -2
  549. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +25 -1
  550. package/ReactCommon/react/renderer/attributedstring/conversions.h +29 -1
  551. package/ReactCommon/react/renderer/attributedstring/primitives.h +4 -2
  552. package/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp +73 -0
  553. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +6 -0
  554. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +79 -126
  555. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.cpp +4 -0
  556. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h +4 -0
  557. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.h +4 -0
  558. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +5 -0
  559. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +4 -0
  560. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.cpp +5 -0
  561. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.h +4 -0
  562. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.cpp +4 -0
  563. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h +4 -0
  564. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h +4 -0
  565. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +4 -0
  566. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +5 -0
  567. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +4 -0
  568. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/platform/ios/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +5 -0
  569. package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.cpp +253 -379
  570. package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp +36 -55
  571. package/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp +17 -27
  572. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +8 -10
  573. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +19 -0
  574. package/ReactCommon/react/renderer/components/text/TextEffectComponentDescriptor.h +17 -0
  575. package/ReactCommon/react/renderer/components/text/TextEffectProps.cpp +59 -0
  576. package/ReactCommon/react/renderer/components/text/TextEffectProps.h +30 -0
  577. package/{Libraries/Text/VirtualText/RCTVirtualTextView.mm → ReactCommon/react/renderer/components/text/TextEffectShadowNode.cpp} +4 -6
  578. package/ReactCommon/react/renderer/components/text/TextEffectShadowNode.h +26 -0
  579. package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/HostPlatformParagraphProps.cpp +18 -28
  580. package/ReactCommon/react/renderer/components/text/tests/BaseTextShadowNodeTest.cpp +15 -0
  581. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +42 -50
  582. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +168 -754
  583. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +0 -9
  584. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +262 -326
  585. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +0 -6
  586. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +2 -12
  587. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +73 -27
  588. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +7 -9
  589. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -11
  590. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +94 -180
  591. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +2 -2
  592. package/ReactCommon/react/renderer/components/view/primitives.h +5 -0
  593. package/ReactCommon/react/renderer/components/view/propsConversions.h +74 -42
  594. package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +5 -5
  595. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +353 -6
  596. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +41 -16
  597. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +19 -0
  598. package/ReactCommon/react/renderer/core/EventEmitter.cpp +20 -4
  599. package/ReactCommon/react/renderer/core/LayoutMetrics.h +3 -0
  600. package/ReactCommon/react/renderer/core/Props.cpp +8 -39
  601. package/ReactCommon/react/renderer/core/Props.h +63 -13
  602. package/ReactCommon/react/renderer/core/RawProps.cpp +20 -3
  603. package/ReactCommon/react/renderer/core/RawProps.h +44 -0
  604. package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +11 -27
  605. package/ReactCommon/react/renderer/core/RawPropsKeyMap.h +3 -3
  606. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +4 -6
  607. package/ReactCommon/react/renderer/core/RawPropsParser.h +3 -3
  608. package/ReactCommon/react/renderer/core/ShadowNode.cpp +27 -19
  609. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +2 -0
  610. package/ReactCommon/react/renderer/core/StateData.h +4 -4
  611. package/ReactCommon/react/renderer/core/propsConversions.h +3 -7
  612. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +8 -0
  613. package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +7 -7
  614. package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +19 -19
  615. package/ReactCommon/react/renderer/core/tests/PropsConceptsTest.cpp +135 -0
  616. package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +43 -53
  617. package/ReactCommon/react/renderer/element/tests/ElementTest.cpp +3 -3
  618. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +17 -0
  619. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
  620. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +123 -33
  621. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +26 -14
  622. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +96 -53
  623. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +4 -0
  624. package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +96 -1
  625. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +29 -318
  626. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +105 -33
  627. package/ReactCommon/react/renderer/mounting/ShadowTree.h +2 -0
  628. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +11 -3
  629. package/ReactCommon/react/renderer/mounting/tests/OrderIndexTest.cpp +1 -1
  630. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +15 -250
  631. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeReactBranchingTest.cpp +141 -0
  632. package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +1 -1
  633. package/ReactCommon/react/renderer/runtimescheduler/CMakeLists.txt +1 -0
  634. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -0
  635. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +22 -2
  636. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +13 -2
  637. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +13 -0
  638. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +9 -0
  639. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +43 -5
  640. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +17 -1
  641. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -0
  642. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +113 -8
  643. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +14 -6
  644. package/ReactCommon/react/renderer/scheduler/Scheduler.h +3 -2
  645. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +1 -85
  646. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +0 -6
  647. package/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp +671 -0
  648. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +22 -5
  649. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +4 -2
  650. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +11 -0
  651. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +65 -26
  652. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +193 -1
  653. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextPrimitivesConversions.h +14 -2
  654. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +2 -1
  655. package/ReactCommon/react/renderer/textlayoutmanager/tests/TextLayoutManagerTest.cpp +86 -5
  656. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +89 -94
  657. package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -2
  658. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +1 -1
  659. package/ReactCommon/react/renderer/uimanager/tests/FabricUIManagerTest.cpp +144 -3
  660. package/ReactCommon/react/renderer/uimanager/tests/FindShadowNodeByTagTest.cpp +1 -52
  661. package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +4 -4
  662. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +88 -39
  663. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +12 -2
  664. package/ReactCommon/react/runtime/PlatformTimerRegistry.h +10 -0
  665. package/ReactCommon/react/runtime/ReactInstance.cpp +79 -64
  666. package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +0 -89
  667. package/ReactCommon/react/runtime/iostests/MainQueueCoordinatorTests.mm +99 -0
  668. package/ReactCommon/react/runtime/iostests/RCTInstanceTests.mm +244 -0
  669. package/ReactCommon/react/runtime/platform/ios/ReactCommon/ObjCTimerRegistry.h +1 -1
  670. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +47 -30
  671. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJscInstance.mm +3 -2
  672. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTPerformanceLoggerUtils.mm +3 -2
  673. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +27 -3
  674. package/ReactCommon/react/runtime/tests/cxx/RuntimeExecutorShutdownTest.cpp +155 -0
  675. package/ReactCommon/react/utils/Telemetry.h +0 -13
  676. package/ReactCommon/react/utils/tests/Base64Tests.cpp +36 -0
  677. package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp +0 -1
  678. package/ReactCommon/runtimeexecutor/platform/ios/ReactCommon/RuntimeExecutorSyncUIThreadUtils.mm +21 -38
  679. package/ReactCommon/yoga/Yoga.podspec +1 -1
  680. package/ReactCommon/yoga/yoga/YGEnums.cpp +2 -0
  681. package/ReactCommon/yoga/yoga/YGEnums.h +1 -0
  682. package/ReactCommon/yoga/yoga/YGNode.cpp +27 -0
  683. package/ReactCommon/yoga/yoga/YGNode.h +69 -0
  684. package/ReactCommon/yoga/yoga/YGNodeLayout.h +0 -2
  685. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +2 -1
  686. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +294 -17
  687. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +1 -1
  688. package/ReactCommon/yoga/yoga/config/Config.h +1 -1
  689. package/ReactCommon/yoga/yoga/enums/Errata.h +1 -0
  690. package/ReactCommon/yoga/yoga/node/LayoutResults.h +8 -0
  691. package/ReactCommon/yoga/yoga/node/Node.cpp +32 -0
  692. package/ReactCommon/yoga/yoga/node/Node.h +33 -0
  693. package/cli.js +3 -182
  694. package/flow/bom.js.flow +42 -42
  695. package/flow/cssom.js.flow +21 -21
  696. package/flow/dom.js.flow +128 -128
  697. package/flow/global.js +6 -0
  698. package/gradle/libs.versions.toml +7 -5
  699. package/index.js +53 -86
  700. package/index.js.flow +53 -23
  701. package/package.json +41 -52
  702. package/react-native.config.js +82 -1
  703. package/scripts/cocoapods/fabric.rb +1 -1
  704. package/scripts/cocoapods/jsengine.rb +1 -1
  705. package/scripts/cocoapods/new_architecture.rb +1 -1
  706. package/scripts/cocoapods/rncore.rb +36 -78
  707. package/scripts/cocoapods/rncore_facades.rb +232 -0
  708. package/scripts/cocoapods/rndependencies.rb +64 -3
  709. package/scripts/cocoapods/rndeps_facades.rb +193 -0
  710. package/scripts/cocoapods/spm.rb +78 -11
  711. package/scripts/cocoapods/utils.rb +5 -7
  712. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +0 -1
  713. package/scripts/codegen/templates/Package.swift.spm-template +97 -0
  714. package/scripts/codegen/templates/ReactCodegen.podspec.template +1 -1
  715. package/scripts/hermes/hermes-utils.js +27 -58
  716. package/scripts/react-native-xcode.sh +20 -0
  717. package/scripts/react_native_pods.rb +71 -21
  718. package/scripts/react_native_pods_utils/script_phases.sh +4 -3
  719. package/scripts/replace-rncore-version.js +57 -86
  720. package/scripts/setup-apple-spm.js +1267 -0
  721. package/scripts/spm/__doc__/rfc-spm-xcframework.md +707 -0
  722. package/scripts/spm/__doc__/spm-autolinking-plugins.md +244 -0
  723. package/scripts/spm/__doc__/spm-header-paths-contract.md +97 -0
  724. package/scripts/spm/__doc__/spm-plugins-assessment.md +128 -0
  725. package/scripts/spm/__doc__/spm-scripts.md +486 -0
  726. package/scripts/spm/autolinking-plugins.js +331 -0
  727. package/scripts/spm/download-spm-artifacts.js +1409 -0
  728. package/scripts/spm/expand-spm-dependencies.js +216 -0
  729. package/scripts/spm/flavored-frameworks.js +1008 -0
  730. package/scripts/spm/generate-spm-autolinking-config.js +221 -0
  731. package/scripts/spm/generate-spm-autolinking.js +1888 -0
  732. package/scripts/spm/generate-spm-package.js +302 -0
  733. package/scripts/spm/generate-spm-xcodeproj.js +2266 -0
  734. package/scripts/spm/read-podspec.js +695 -0
  735. package/scripts/spm/scaffold-package-swift.js +1206 -0
  736. package/scripts/spm/spm-pbxproj.js +654 -0
  737. package/scripts/spm/spm-types.js +520 -0
  738. package/scripts/spm/spm-utils.js +645 -0
  739. package/scripts/spm/sync-spm-autolinking.js +160 -0
  740. package/sdks/.hermesv1version +1 -1
  741. package/sdks/hermes-engine/hermes-engine.podspec +9 -39
  742. package/sdks/hermes-engine/hermes-utils.rb +20 -74
  743. package/sdks/hermes-engine/utils/replace_hermes_version.js +18 -4
  744. package/sdks/hermes-engine/version.properties +1 -2
  745. package/settings.gradle.kts +0 -43
  746. package/src/asset-registry.js +29 -0
  747. package/src/private/animated/NativeAnimatedHelper.js +45 -21
  748. package/src/private/assets/AssetRegistry.js +52 -0
  749. package/src/private/{specs_DEPRECATED/components → components/activityindicator/specs}/ActivityIndicatorViewNativeComponent.js +5 -5
  750. package/src/private/{specs_DEPRECATED/components → components/debuggingoverlay/specs}/DebuggingOverlayNativeComponent.js +8 -8
  751. package/src/private/{specs_DEPRECATED/components → components/drawerlayoutandroid/specs}/AndroidDrawerLayoutNativeComponent.js +8 -8
  752. package/src/private/{specs_DEPRECATED/components → components/inputaccessoryview/specs}/RCTInputAccessoryViewNativeComponent.js +4 -4
  753. package/src/private/{specs_DEPRECATED/components → components/modal/specs}/RCTModalHostViewNativeComponent.js +4 -9
  754. package/src/private/{specs_DEPRECATED/components → components/progressbarandroid/specs}/ProgressBarAndroidNativeComponent.js +5 -5
  755. package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/AndroidSwipeRefreshLayoutNativeComponent.js +7 -7
  756. package/src/private/{specs_DEPRECATED/components → components/refreshcontrol/specs}/PullToRefreshViewNativeComponent.js +7 -7
  757. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +2 -2
  758. package/src/private/{specs_DEPRECATED/components → components/safeareaview/specs}/RCTSafeAreaViewNativeComponent.js +3 -3
  759. package/src/private/components/scrollview/HScrollViewNativeComponents.js +1 -1
  760. package/src/private/{specs_DEPRECATED/components → components/scrollview/specs}/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
  761. package/src/private/{specs_DEPRECATED/components → components/switch/specs}/AndroidSwitchNativeComponent.js +7 -7
  762. package/src/private/{specs_DEPRECATED/components → components/switch/specs}/SwitchNativeComponent.js +10 -7
  763. package/src/private/{specs_DEPRECATED/components → components/unimplementedview/specs}/UnimplementedNativeViewNativeComponent.js +4 -4
  764. package/src/private/components/virtualcollection/Virtual.js +5 -5
  765. package/src/private/components/virtualcollection/VirtualCollectionView.js +2 -6
  766. package/src/private/components/virtualcollection/column/VirtualColumn.js +1 -1
  767. package/src/private/components/virtualcollection/row/VirtualRow.js +1 -1
  768. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +3 -1
  769. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +4 -4
  770. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +4 -2
  771. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  772. package/src/private/featureflags/ReactNativeFeatureFlags.js +46 -70
  773. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +88 -94
  774. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  775. package/src/private/renderer/events/ReactNativeResponder.js +49 -4
  776. package/src/private/renderer/events/ResponderTouchHistoryStore.js +11 -2
  777. package/src/private/renderer/events/dispatchNativeEvent.js +71 -36
  778. package/src/private/setup/setUpDOM.js +19 -9
  779. package/src/private/setup/setUpIntersectionObserver.js +7 -0
  780. package/src/private/setup/setUpMutationObserver.js +3 -1
  781. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +9 -9
  782. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +24 -24
  783. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +28 -28
  784. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  785. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +45 -25
  786. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +44 -24
  787. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +4 -4
  788. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +8 -6
  789. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +7 -7
  790. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +3 -3
  791. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +2 -2
  792. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +11 -11
  793. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  794. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +4 -4
  795. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +7 -7
  796. package/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js +4 -4
  797. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  798. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +4 -4
  799. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +2 -2
  800. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  801. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +13 -13
  802. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +9 -6
  803. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +6 -6
  804. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  805. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +8 -5
  806. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +5 -5
  807. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  808. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +2 -2
  809. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +6 -6
  810. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +2 -2
  811. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +2 -2
  812. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +5 -5
  813. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +6 -6
  814. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +6 -4
  815. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  816. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +1 -1
  817. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +35 -31
  818. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +2 -2
  819. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +24 -24
  820. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +2 -2
  821. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +3 -3
  822. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +2 -2
  823. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  824. package/src/private/specs_DEPRECATED/modules/NativeSourceCode.js +1 -1
  825. package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid.js +5 -17
  826. package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS.js +10 -15
  827. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +3 -3
  828. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +4 -4
  829. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +35 -22
  830. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +4 -4
  831. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +7 -7
  832. package/src/private/types/HostInstance.js +38 -80
  833. package/src/private/viewtransition/specs/NativeViewTransition.js +6 -4
  834. package/src/private/webapis/dom/abort-api/AbortController.js +92 -0
  835. package/src/private/webapis/dom/abort-api/AbortSignal.js +243 -0
  836. package/src/private/webapis/dom/events/CustomEvent.js +1 -1
  837. package/src/private/webapis/dom/events/Event.js +12 -12
  838. package/src/private/webapis/dom/events/EventTarget.js +146 -37
  839. package/src/private/webapis/dom/events/internals/EventInternals.js +36 -0
  840. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +38 -3
  841. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +11 -0
  842. package/src/private/webapis/dom/nodes/ReactNativeElement.js +105 -4
  843. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +11 -0
  844. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +9 -0
  845. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +34 -7
  846. package/src/private/webapis/dom/nodes/ReadOnlyText.js +33 -0
  847. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +46 -42
  848. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +12 -0
  849. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +4 -2
  850. package/src/private/webapis/dom/oldstylecollections/NodeList.js +10 -0
  851. package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -3
  852. package/src/private/webapis/errors/DOMException.js +50 -50
  853. package/src/private/webapis/geometry/DOMRectList.js +12 -0
  854. package/src/private/webapis/geometry/DOMRectList.js.flow +3 -1
  855. package/src/private/webapis/html/events/MessageEvent.js +3 -3
  856. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  857. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +13 -0
  858. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +3 -7
  859. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +5 -5
  860. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
  861. package/src/private/webapis/mutationobserver/MutationObserver.js +7 -7
  862. package/src/private/webapis/mutationobserver/MutationRecord.js +12 -0
  863. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +5 -7
  864. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +5 -5
  865. package/src/private/webapis/performance/EventTiming.js +3 -3
  866. package/src/private/webapis/performance/PerformanceEntry.js +3 -3
  867. package/src/private/webapis/performance/PerformanceObserver.js +4 -4
  868. package/src/private/webapis/performance/ResourceTiming.js +13 -13
  869. package/src/private/webapis/performance/UserTiming.js +3 -3
  870. package/src/private/webapis/performance/internals/Utilities.js +1 -1
  871. package/src/private/webapis/performance/specs/NativePerformance.js +26 -20
  872. package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
  873. package/src/private/webapis/websockets/events/CloseEvent.js +3 -3
  874. package/src/private/webapis/xhr/events/ProgressEvent.js +3 -3
  875. package/src/react-private-interface.js +145 -0
  876. package/src/react-private-interface.js.flow +48 -0
  877. package/src/setup-env.js +22 -0
  878. package/src/types/globals.d.ts +33 -1
  879. package/src/unstable-internals-do-not-use.d.ts +214 -0
  880. package/src/unstable-internals-do-not-use.js +76 -0
  881. package/third-party-podspecs/ReactNativeDependencies.podspec +2 -2
  882. package/types/index.d.ts +0 -1
  883. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -4
  884. package/types/public/ReactNativeTypes.d.ts +4 -2
  885. package/Libraries/AppDelegate/RCTArchConfiguratorProtocol.h +0 -38
  886. package/Libraries/Image/AssetRegistry.js +0 -14
  887. package/Libraries/Image/RCTImageShadowView.h +0 -17
  888. package/Libraries/Image/RCTImageShadowView.mm +0 -28
  889. package/Libraries/Image/RCTImageView.h +0 -32
  890. package/Libraries/Image/RCTImageView.mm +0 -507
  891. package/Libraries/Image/RCTImageViewManager.h +0 -17
  892. package/Libraries/Image/RCTImageViewManager.mm +0 -115
  893. package/Libraries/Interaction/InteractionManager.d.ts +0 -87
  894. package/Libraries/Interaction/InteractionManager.js +0 -189
  895. package/Libraries/Text/BaseText/RCTBaseTextShadowView.h +0 -35
  896. package/Libraries/Text/BaseText/RCTBaseTextShadowView.mm +0 -162
  897. package/Libraries/Text/BaseText/RCTBaseTextViewManager.h +0 -21
  898. package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +0 -64
  899. package/Libraries/Text/RCTTextAttributes.h +0 -107
  900. package/Libraries/Text/RCTTextAttributes.mm +0 -358
  901. package/Libraries/Text/RawText/RCTRawTextShadowView.h +0 -23
  902. package/Libraries/Text/RawText/RCTRawTextShadowView.mm +0 -38
  903. package/Libraries/Text/RawText/RCTRawTextViewManager.h +0 -21
  904. package/Libraries/Text/RawText/RCTRawTextViewManager.mm +0 -32
  905. package/Libraries/Text/Text/RCTTextShadowView.h +0 -33
  906. package/Libraries/Text/Text/RCTTextShadowView.mm +0 -469
  907. package/Libraries/Text/Text/RCTTextView.h +0 -34
  908. package/Libraries/Text/Text/RCTTextView.mm +0 -308
  909. package/Libraries/Text/Text/RCTTextViewManager.h +0 -19
  910. package/Libraries/Text/Text/RCTTextViewManager.mm +0 -97
  911. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.h +0 -21
  912. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +0 -67
  913. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.h +0 -21
  914. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.mm +0 -30
  915. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.h +0 -30
  916. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm +0 -367
  917. package/Libraries/Text/TextInput/RCTBaseTextInputView.h +0 -68
  918. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -858
  919. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.h +0 -17
  920. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +0 -181
  921. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.h +0 -17
  922. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.mm +0 -24
  923. package/Libraries/Text/TextInput/RCTInputAccessoryView.h +0 -22
  924. package/Libraries/Text/TextInput/RCTInputAccessoryView.mm +0 -82
  925. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.h +0 -17
  926. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.mm +0 -78
  927. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.h +0 -17
  928. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.mm +0 -33
  929. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.h +0 -21
  930. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.mm +0 -43
  931. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.h +0 -21
  932. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm +0 -35
  933. package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.h +0 -17
  934. package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.mm +0 -42
  935. package/Libraries/Text/VirtualText/RCTVirtualTextView.h +0 -28
  936. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.h +0 -17
  937. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +0 -30
  938. package/Libraries/Utilities/SceneTracker.js +0 -42
  939. package/Libraries/Wrapper/Example/RCTWrapperExampleView.h +0 -21
  940. package/Libraries/Wrapper/Example/RCTWrapperExampleView.m +0 -57
  941. package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.h +0 -21
  942. package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.m +0 -27
  943. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.h +0 -25
  944. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.m +0 -50
  945. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.h +0 -23
  946. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.m +0 -35
  947. package/Libraries/Wrapper/RCTWrapper.h +0 -73
  948. package/Libraries/Wrapper/RCTWrapperShadowView.h +0 -27
  949. package/Libraries/Wrapper/RCTWrapperShadowView.m +0 -138
  950. package/Libraries/Wrapper/RCTWrapperView.h +0 -42
  951. package/Libraries/Wrapper/RCTWrapperView.m +0 -99
  952. package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.h +0 -30
  953. package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.m +0 -137
  954. package/Libraries/Wrapper/RCTWrapperViewManager.h +0 -25
  955. package/Libraries/Wrapper/RCTWrapperViewManager.m +0 -31
  956. package/React/Base/RCTRootContentView.h +0 -43
  957. package/React/Base/RCTRootContentView.m +0 -111
  958. package/React/Base/RCTRootViewInternal.h +0 -40
  959. package/React/CxxBridge/RCTCxxBridge.mm +0 -1572
  960. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.h +0 -25
  961. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.mm +0 -34
  962. package/React/CxxBridge/RCTObjcExecutor.h +0 -34
  963. package/React/CxxBridge/RCTObjcExecutor.mm +0 -150
  964. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -34
  965. package/React/CxxModule/DispatchMessageQueueThread.h +0 -50
  966. package/React/CxxModule/RCTCxxMethod.h +0 -17
  967. package/React/CxxModule/RCTCxxMethod.mm +0 -147
  968. package/React/CxxModule/RCTNativeModule.h +0 -34
  969. package/React/CxxModule/RCTNativeModule.mm +0 -241
  970. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +0 -205
  971. package/React/Tests/Text/RCTTextAttributesTest.mm +0 -49
  972. package/React/Views/RCTActivityIndicatorView.h +0 -16
  973. package/React/Views/RCTActivityIndicatorView.m +0 -26
  974. package/React/Views/RCTActivityIndicatorViewManager.h +0 -23
  975. package/React/Views/RCTActivityIndicatorViewManager.m +0 -65
  976. package/React/Views/RCTDebuggingOverlayManager.h +0 -17
  977. package/React/Views/RCTDebuggingOverlayManager.m +0 -68
  978. package/React/Views/RCTModalHostView.h +0 -72
  979. package/React/Views/RCTModalHostView.m +0 -302
  980. package/React/Views/RCTModalHostViewController.m +0 -107
  981. package/React/Views/RCTModalHostViewManager.m +0 -131
  982. package/React/Views/RCTModalManager.h +0 -22
  983. package/React/Views/RCTModalManager.m +0 -46
  984. package/React/Views/RCTRootShadowView.h +0 -35
  985. package/React/Views/RCTRootShadowView.m +0 -53
  986. package/React/Views/RCTShadowView+Internal.h +0 -18
  987. package/React/Views/RCTShadowView+Internal.m +0 -23
  988. package/React/Views/RCTSwitch.h +0 -24
  989. package/React/Views/RCTSwitch.m +0 -26
  990. package/React/Views/RCTSwitchManager.h +0 -19
  991. package/React/Views/RCTSwitchManager.m +0 -72
  992. package/React/Views/RCTTVView.h +0 -105
  993. package/React/Views/RCTTVView.m +0 -602
  994. package/React/Views/RefreshControl/RCTRefreshControl.h +0 -26
  995. package/React/Views/RefreshControl/RCTRefreshControl.m +0 -232
  996. package/React/Views/RefreshControl/RCTRefreshControlManager.h +0 -19
  997. package/React/Views/RefreshControl/RCTRefreshControlManager.m +0 -49
  998. package/React/Views/SafeAreaView/RCTSafeAreaShadowView.h +0 -21
  999. package/React/Views/SafeAreaView/RCTSafeAreaShadowView.m +0 -57
  1000. package/React/Views/SafeAreaView/RCTSafeAreaView.h +0 -27
  1001. package/React/Views/SafeAreaView/RCTSafeAreaView.m +0 -79
  1002. package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.h +0 -25
  1003. package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.m +0 -25
  1004. package/React/Views/SafeAreaView/RCTSafeAreaViewManager.h +0 -21
  1005. package/React/Views/SafeAreaView/RCTSafeAreaViewManager.m +0 -32
  1006. package/React/Views/ScrollView/RCTScrollContentShadowView.h +0 -19
  1007. package/React/Views/ScrollView/RCTScrollContentShadowView.m +0 -35
  1008. package/React/Views/ScrollView/RCTScrollContentView.h +0 -19
  1009. package/React/Views/ScrollView/RCTScrollContentView.m +0 -36
  1010. package/React/Views/ScrollView/RCTScrollContentViewManager.h +0 -17
  1011. package/React/Views/ScrollView/RCTScrollContentViewManager.m +0 -31
  1012. package/React/Views/ScrollView/RCTScrollView.m +0 -1508
  1013. package/React/Views/ScrollView/RCTScrollViewManager.h +0 -25
  1014. package/React/Views/ScrollView/RCTScrollViewManager.m +0 -208
  1015. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +0 -251
  1016. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java +0 -315
  1017. package/ReactAndroid/src/main/java/com/facebook/react/common/ClearableSynchronizedPool.kt +0 -51
  1018. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +0 -89
  1019. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +0 -736
  1020. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +0 -221
  1021. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -399
  1022. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactZIndexedViewGroup.kt +0 -35
  1023. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +0 -346
  1024. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +0 -666
  1025. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -147
  1026. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewGroupDrawingOrderHelper.kt +0 -113
  1027. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +0 -614
  1028. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +0 -1949
  1029. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +0 -1646
  1030. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +0 -1744
  1031. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +0 -51
  1032. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaBoxSizing.java +0 -33
  1033. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDimension.java +0 -33
  1034. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +0 -37
  1035. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaEdge.java +0 -47
  1036. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.java +0 -41
  1037. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +0 -33
  1038. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaFlexDirection.java +0 -37
  1039. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +0 -39
  1040. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGutter.java +0 -35
  1041. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +0 -49
  1042. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaLogLevel.java +0 -45
  1043. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaMeasureMode.java +0 -35
  1044. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +0 -928
  1045. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeType.java +0 -33
  1046. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaOverflow.java +0 -35
  1047. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java +0 -35
  1048. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaUnit.java +0 -43
  1049. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaWrap.java +0 -35
  1050. package/ReactAndroid/src/main/jni/react/fabric/JAnimationBackendChoreographer.cpp +0 -23
  1051. package/ReactAndroid/src/main/jni/react/fabric/JAnimationBackendChoreographer.h +0 -37
  1052. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +0 -135
  1053. package/ReactCommon/cxxreact/JSIndexedRAMBundle.h +0 -72
  1054. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +0 -143
  1055. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +0 -55
  1056. package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +0 -78
  1057. package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +0 -39
  1058. package/ReactCommon/hermes/inspector-modern/chrome/tests/ConnectionDemuxTests.cpp +0 -148
  1059. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +0 -168
  1060. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +0 -416
  1061. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.h +0 -31
  1062. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +0 -134
  1063. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +0 -290
  1064. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +0 -62
  1065. package/ReactCommon/react/renderer/core/RawPropsKey.h +0 -39
  1066. package/ReactCommon/react/renderer/mounting/internal/DiffMap.h +0 -170
  1067. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +0 -95
  1068. package/ReactCommon/react/renderer/mounting/internal/TinyMap.h +0 -147
  1069. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +0 -154
  1070. package/interface.js +0 -21
  1071. package/jest-preset.js +0 -26
  1072. package/rn-get-polyfills.js +0 -13
  1073. package/sdks/.hermesversion +0 -1
  1074. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +0 -13
  1075. package/types/tsconfig.json +0 -15
  1076. /package/ReactCommon/{cxxreact → react/utils}/MoveWrapper.h +0 -0
@@ -0,0 +1,1392 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.views.scroll
9
+
10
+ import android.animation.ObjectAnimator
11
+ import android.animation.ValueAnimator
12
+ import android.content.Context
13
+ import android.graphics.Canvas
14
+ import android.graphics.Color
15
+ import android.graphics.Rect
16
+ import android.graphics.drawable.ColorDrawable
17
+ import android.graphics.drawable.Drawable
18
+ import android.os.Build
19
+ import android.view.FocusFinder
20
+ import android.view.KeyEvent
21
+ import android.view.MotionEvent
22
+ import android.view.View
23
+ import android.view.ViewGroup
24
+ import android.view.accessibility.AccessibilityNodeInfo
25
+ import android.widget.OverScroller
26
+ import android.widget.ScrollView
27
+ import androidx.core.view.ViewCompat
28
+ import com.facebook.common.logging.FLog
29
+ import com.facebook.react.R
30
+ import com.facebook.react.bridge.ReadableMap
31
+ import com.facebook.react.common.ReactConstants
32
+ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
33
+ import com.facebook.react.uimanager.BackgroundStyleApplicator
34
+ import com.facebook.react.uimanager.HasChildPressedStateDelay
35
+ import com.facebook.react.uimanager.LengthPercentage
36
+ import com.facebook.react.uimanager.LengthPercentageType
37
+ import com.facebook.react.uimanager.MeasureSpecAssertions
38
+ import com.facebook.react.uimanager.PixelUtil
39
+ import com.facebook.react.uimanager.PointerEvents
40
+ import com.facebook.react.uimanager.ReactClippingViewGroup
41
+ import com.facebook.react.uimanager.ReactClippingViewGroupHelper
42
+ import com.facebook.react.uimanager.ReactOverflowViewWithInset
43
+ import com.facebook.react.uimanager.StateWrapper
44
+ import com.facebook.react.uimanager.events.NativeGestureUtil
45
+ import com.facebook.react.uimanager.style.BorderRadiusProp
46
+ import com.facebook.react.uimanager.style.BorderStyle
47
+ import com.facebook.react.uimanager.style.LogicalEdge
48
+ import com.facebook.react.uimanager.style.Overflow
49
+ import com.facebook.react.views.common.UiModeUtils
50
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.HasFlingAnimator
51
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.HasScrollEventThrottle
52
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.HasScrollState
53
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.HasSmoothScroll
54
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.HasStateWrapper
55
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.ReactScrollViewScrollState
56
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.SNAP_ALIGNMENT_CENTER
57
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.SNAP_ALIGNMENT_DISABLED
58
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.SNAP_ALIGNMENT_END
59
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.SNAP_ALIGNMENT_ITEM
60
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.SNAP_ALIGNMENT_START
61
+ import com.facebook.react.views.scroll.ReactScrollViewHelper.findNextFocusableView
62
+ import com.facebook.systrace.Systrace
63
+ import kotlin.math.abs
64
+ import kotlin.math.ceil
65
+ import kotlin.math.floor
66
+ import kotlin.math.max
67
+ import kotlin.math.min
68
+ import kotlin.math.round
69
+ import kotlin.math.sign
70
+
71
+ /**
72
+ * A simple subclass of ScrollView that doesn't dispatch measure and layout to its children and has
73
+ * a scroll listener to send scroll events to JS.
74
+ *
75
+ * ReactScrollView only supports vertical scrolling. For horizontal scrolling, use
76
+ * [ReactHorizontalScrollView].
77
+ */
78
+ public open class ReactScrollView
79
+ @JvmOverloads
80
+ constructor(context: Context, private val fpsListener: FpsListener? = null) :
81
+ ScrollView(context),
82
+ ReactClippingViewGroup,
83
+ ViewGroup.OnHierarchyChangeListener,
84
+ View.OnLayoutChangeListener,
85
+ ReactAccessibleScrollView,
86
+ ReactOverflowViewWithInset,
87
+ HasScrollState,
88
+ HasStateWrapper,
89
+ HasFlingAnimator,
90
+ HasScrollEventThrottle,
91
+ HasSmoothScroll,
92
+ VirtualViewContainer,
93
+ HasChildPressedStateDelay {
94
+
95
+ private companion object {
96
+ private var scrollerField: java.lang.reflect.Field? = null
97
+ private var triedToGetScrollerField = false
98
+
99
+ private const val UNSET_CONTENT_OFFSET = -1
100
+ }
101
+
102
+ // Public / interface property overrides
103
+ override var scrollEnabled: Boolean = true
104
+ override var stateWrapper: StateWrapper? = null
105
+ override var scrollEventThrottle: Int = 0
106
+ override var lastScrollDispatchTime: Long = 0L
107
+ override var hasChildPressedStateDelay: Boolean? = null
108
+
109
+ public open var pointerEvents: PointerEvents = PointerEvents.AUTO
110
+
111
+ public open var fadingEdgeLengthStart: Int = 0
112
+ set(value) {
113
+ field = value
114
+ invalidate()
115
+ }
116
+
117
+ public open var fadingEdgeLengthEnd: Int = 0
118
+ set(value) {
119
+ field = value
120
+ invalidate()
121
+ }
122
+
123
+ override val virtualViewContainerState: VirtualViewContainerState
124
+ get() =
125
+ _virtualViewContainerState
126
+ ?: VirtualViewContainerState.create(this).also { _virtualViewContainerState = it }
127
+
128
+ override val overflowInset: Rect
129
+ get() = _overflowInset
130
+
131
+ override val overflow: String?
132
+ get() =
133
+ when (_overflow) {
134
+ Overflow.HIDDEN -> "hidden"
135
+ Overflow.SCROLL -> "scroll"
136
+ Overflow.VISIBLE -> "visible"
137
+ }
138
+
139
+ override var removeClippedSubviews: Boolean
140
+ get() = _removeClippedSubviews
141
+ set(value) {
142
+ if (ReactNativeFeatureFlags.disableSubviewClippingAndroid()) return
143
+ if (value && clippingRect == null) clippingRect = Rect()
144
+ _removeClippedSubviews = value
145
+ updateClippingRect()
146
+ }
147
+
148
+ override var reactScrollViewScrollState: ReactScrollViewScrollState
149
+ get() = _reactScrollViewScrollState
150
+ set(value) {
151
+ _reactScrollViewScrollState = value
152
+ if (
153
+ ReactNativeFeatureFlags.enableViewCulling() ||
154
+ ReactNativeFeatureFlags.useTraitHiddenOnAndroid()
155
+ ) {
156
+ setScrollAwayPaddingEnabledUnstable(
157
+ value.scrollAwayPaddingTop,
158
+ value.scrollAwayPaddingBottom,
159
+ false,
160
+ )
161
+ val scrollPosition = value.lastStateUpdateScroll
162
+ scrollTo(scrollPosition.x, scrollPosition.y)
163
+ }
164
+ }
165
+
166
+ // Private state
167
+ private val onScrollDispatchHelper = OnScrollDispatchHelper()
168
+ private val scroller: OverScroller? = getOverScrollerFromParent()
169
+ private val velocityHelper = VelocityHelper()
170
+ private val tempRect = Rect()
171
+ private val defaultFlingAnimator: ValueAnimator = ObjectAnimator.ofInt(this, "scrollY", 0, 0)
172
+
173
+ private var _overflowInset = Rect()
174
+ private var _virtualViewContainerState: VirtualViewContainerState? = null
175
+ private var _removeClippedSubviews = false
176
+ private var _reactScrollViewScrollState = ReactScrollViewScrollState()
177
+
178
+ private var activelyScrolling = false
179
+ private var clippingRect: Rect? = null
180
+ private var _overflow: Overflow =
181
+ if (ReactNativeFeatureFlags.enablePropsUpdateReconciliationAndroid()) {
182
+ Overflow.VISIBLE
183
+ } else {
184
+ Overflow.SCROLL
185
+ }
186
+ private var dragging = false
187
+ private var pagingEnabled = false
188
+ private var postTouchRunnable: Runnable? = null
189
+ private var sendMomentumEvents = false
190
+ private var scrollPerfTag: String? = null
191
+ private var endBackground: Drawable? = null
192
+ private var endFillColor = Color.TRANSPARENT
193
+ private var disableIntervalMomentum = false
194
+ internal var snapInterval = 0
195
+ internal var snapOffsets: List<Int>? = null
196
+ internal var snapToStart = true
197
+ internal var snapToEnd = true
198
+ internal var snapToAlignment = SNAP_ALIGNMENT_DISABLED
199
+ private var contentView: View? = null
200
+ private var currentContentOffset: ReadableMap? = null
201
+ private var pendingContentOffsetX = UNSET_CONTENT_OFFSET
202
+ private var pendingContentOffsetY = UNSET_CONTENT_OFFSET
203
+ private var maintainVisibleContentPositionHelper:
204
+ MaintainVisibleScrollPositionHelper<ReactScrollView>? =
205
+ null
206
+ private var emittedOverScrollSinceScrollBegin = false
207
+ private var scrollsChildToFocus = true
208
+ internal var snapToItemPadding: Int = 0
209
+ internal var scrollAnimationEnabled: Boolean = true
210
+ private var blockScrollDelta: Boolean = false
211
+
212
+ init {
213
+ setOnHierarchyChangeListener(this)
214
+ setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY)
215
+ setClipChildren(false)
216
+ ViewCompat.setAccessibilityDelegate(this, ReactScrollViewAccessibilityDelegate())
217
+ initView()
218
+ }
219
+
220
+ /**
221
+ * Set all default values here as opposed to in the constructor or field defaults. It is important
222
+ * that these properties are set during the constructor, but also on-demand whenever an existing
223
+ * ReactScrollView is recycled.
224
+ */
225
+ private fun initView() {
226
+ _overflowInset = Rect()
227
+ _virtualViewContainerState = null
228
+ activelyScrolling = false
229
+ clippingRect = null
230
+ _overflow =
231
+ if (ReactNativeFeatureFlags.enablePropsUpdateReconciliationAndroid()) {
232
+ Overflow.VISIBLE
233
+ } else {
234
+ Overflow.SCROLL
235
+ }
236
+ dragging = false
237
+ pagingEnabled = false
238
+ postTouchRunnable = null
239
+ _removeClippedSubviews = false
240
+ scrollEnabled = true
241
+ sendMomentumEvents = false
242
+ scrollPerfTag = null
243
+ endBackground = null
244
+ endFillColor = Color.TRANSPARENT
245
+ disableIntervalMomentum = false
246
+ snapInterval = 0
247
+ snapOffsets = null
248
+ snapToStart = true
249
+ snapToEnd = true
250
+ snapToAlignment = SNAP_ALIGNMENT_DISABLED
251
+ contentView = null
252
+ currentContentOffset = null
253
+ pendingContentOffsetX = UNSET_CONTENT_OFFSET
254
+ pendingContentOffsetY = UNSET_CONTENT_OFFSET
255
+ stateWrapper = null
256
+ _reactScrollViewScrollState = ReactScrollViewScrollState()
257
+ pointerEvents = PointerEvents.AUTO
258
+ lastScrollDispatchTime = 0
259
+ scrollEventThrottle = 0
260
+ maintainVisibleContentPositionHelper = null
261
+ fadingEdgeLengthStart = 0
262
+ fadingEdgeLengthEnd = 0
263
+ emittedOverScrollSinceScrollBegin = false
264
+ scrollsChildToFocus = true
265
+ snapToItemPadding = 0
266
+ scrollAnimationEnabled = true
267
+ blockScrollDelta = false
268
+ }
269
+
270
+ internal fun recycleView() {
271
+ initView()
272
+ if (parent != null) {
273
+ (parent as ViewGroup).removeView(this)
274
+ }
275
+ updateView()
276
+ }
277
+
278
+ private fun updateView() {}
279
+
280
+ override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo) {
281
+ super.onInitializeAccessibilityNodeInfo(info)
282
+ val testId = getTag(R.id.react_test_id) as? String
283
+ if (testId != null) {
284
+ info.viewIdResourceName = testId
285
+ }
286
+ }
287
+
288
+ protected open fun getOverScrollerFromParent(): OverScroller? {
289
+ if (!triedToGetScrollerField) {
290
+ triedToGetScrollerField = true
291
+ try {
292
+ scrollerField = ScrollView::class.java.getDeclaredField("mScroller")
293
+ scrollerField?.isAccessible = true
294
+ } catch (e: NoSuchFieldException) {
295
+ FLog.w(
296
+ ReactConstants.TAG,
297
+ "Failed to get mScroller field for ScrollView! " +
298
+ "This app will exhibit the bounce-back scrolling bug :(",
299
+ )
300
+ }
301
+ }
302
+
303
+ val cachedScrollerField = scrollerField ?: return null
304
+ return try {
305
+ val scrollerValue = cachedScrollerField.get(this)
306
+ if (scrollerValue is OverScroller) {
307
+ scrollerValue
308
+ } else {
309
+ FLog.w(
310
+ ReactConstants.TAG,
311
+ "Failed to cast mScroller field in ScrollView (probably due to OEM changes to AOSP)! " +
312
+ "This app will exhibit the bounce-back scrolling bug :(",
313
+ )
314
+ null
315
+ }
316
+ } catch (e: IllegalAccessException) {
317
+ throw RuntimeException("Failed to get mScroller from ScrollView!", e)
318
+ }
319
+ }
320
+
321
+ public open fun setDisableIntervalMomentum(disableIntervalMomentum: Boolean) {
322
+ this.disableIntervalMomentum = disableIntervalMomentum
323
+ }
324
+
325
+ public open fun setSendMomentumEvents(sendMomentumEvents: Boolean) {
326
+ this.sendMomentumEvents = sendMomentumEvents
327
+ }
328
+
329
+ public open fun setScrollPerfTag(scrollPerfTag: String?) {
330
+ this.scrollPerfTag = scrollPerfTag
331
+ }
332
+
333
+ public open fun setPagingEnabled(pagingEnabled: Boolean) {
334
+ this.pagingEnabled = pagingEnabled
335
+ }
336
+
337
+ public open fun setScrollsChildToFocus(scrollsChildToFocus: Boolean) {
338
+ this.scrollsChildToFocus = scrollsChildToFocus
339
+ }
340
+
341
+ public open fun setDecelerationRate(decelerationRate: Float) {
342
+ reactScrollViewScrollState.decelerationRate = decelerationRate
343
+ scroller?.setFriction(1.0f - decelerationRate)
344
+ }
345
+
346
+ public open fun abortAnimation() {
347
+ if (scroller != null && !scroller.isFinished) {
348
+ scroller.abortAnimation()
349
+ }
350
+ }
351
+
352
+ public open fun flashScrollIndicators() {
353
+ awakenScrollBars()
354
+ }
355
+
356
+ override fun getTopFadingEdgeStrength(): Float {
357
+ val max = max(fadingEdgeLengthStart.toFloat(), fadingEdgeLengthEnd.toFloat())
358
+ return fadingEdgeLengthStart / max
359
+ }
360
+
361
+ override fun getBottomFadingEdgeStrength(): Float {
362
+ val max = max(fadingEdgeLengthStart.toFloat(), fadingEdgeLengthEnd.toFloat())
363
+ return fadingEdgeLengthEnd / max
364
+ }
365
+
366
+ public open fun setOverflow(overflow: String?) {
367
+ _overflow =
368
+ if (overflow == null) {
369
+ Overflow.SCROLL
370
+ } else {
371
+ Overflow.fromString(overflow)
372
+ ?: if (ReactNativeFeatureFlags.enablePropsUpdateReconciliationAndroid())
373
+ Overflow.VISIBLE
374
+ else Overflow.SCROLL
375
+ }
376
+ invalidate()
377
+ }
378
+
379
+ internal open fun setMaintainVisibleContentPosition(
380
+ config: MaintainVisibleScrollPositionHelper.Config?
381
+ ) {
382
+ if (config != null && maintainVisibleContentPositionHelper == null) {
383
+ maintainVisibleContentPositionHelper =
384
+ MaintainVisibleScrollPositionHelper(this, false).also { it.start() }
385
+ } else if (config == null && maintainVisibleContentPositionHelper != null) {
386
+ maintainVisibleContentPositionHelper?.stop()
387
+ maintainVisibleContentPositionHelper = null
388
+ }
389
+ maintainVisibleContentPositionHelper?.let { it.config = config }
390
+ }
391
+
392
+ override fun setOverflowInset(left: Int, top: Int, right: Int, bottom: Int) {
393
+ _overflowInset.set(left, top, right, bottom)
394
+ }
395
+
396
+ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
397
+ MeasureSpecAssertions.assertExplicitMeasureSpec(widthMeasureSpec, heightMeasureSpec)
398
+ setMeasuredDimension(
399
+ MeasureSpec.getSize(widthMeasureSpec),
400
+ MeasureSpec.getSize(heightMeasureSpec),
401
+ )
402
+ }
403
+
404
+ override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
405
+ if (isContentReady()) {
406
+ val scrollToX =
407
+ if (pendingContentOffsetX != UNSET_CONTENT_OFFSET) pendingContentOffsetX else scrollX
408
+ val scrollToY =
409
+ if (pendingContentOffsetY != UNSET_CONTENT_OFFSET) pendingContentOffsetY else scrollY
410
+ scrollTo(scrollToX, scrollToY)
411
+ }
412
+
413
+ ReactScrollViewHelper.emitLayoutEvent(this)
414
+ _virtualViewContainerState?.updateState()
415
+ }
416
+
417
+ override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
418
+ super.onSizeChanged(w, h, oldw, oldh)
419
+ if (_removeClippedSubviews) {
420
+ updateClippingRect()
421
+ }
422
+ _virtualViewContainerState?.updateState()
423
+ }
424
+
425
+ override fun onAttachedToWindow() {
426
+ super.onAttachedToWindow()
427
+ if (_removeClippedSubviews) {
428
+ updateClippingRect()
429
+ }
430
+ maintainVisibleContentPositionHelper?.start()
431
+ }
432
+
433
+ override fun onDetachedFromWindow() {
434
+ super.onDetachedFromWindow()
435
+ maintainVisibleContentPositionHelper?.stop()
436
+ }
437
+
438
+ override fun focusSearch(focused: View, direction: Int): View? {
439
+ val nextFocus = super.focusSearch(focused, direction)
440
+
441
+ if (ReactNativeFeatureFlags.enableCustomFocusSearchOnClippedElementsAndroid()) {
442
+ if (nextFocus != null && findViewById<View>(nextFocus.id) != null) {
443
+ return nextFocus
444
+ }
445
+ val nextFocusableView = findNextFocusableView(this, focused, direction)
446
+ if (nextFocusableView != null) {
447
+ return nextFocusableView
448
+ }
449
+ }
450
+
451
+ return nextFocus
452
+ }
453
+
454
+ /**
455
+ * Attempts to scroll-snap to the focused child based on snapToAlignment/scrollSnapAlign or
456
+ * scrollSnapOffset. Returns true if snap scrolling was performed, false otherwise.
457
+ */
458
+ private fun tryScrollSnapToChild(focused: View): Boolean {
459
+ if (snapToAlignment != SNAP_ALIGNMENT_ITEM) {
460
+ return false
461
+ }
462
+
463
+ val result = ReactScrollViewHelper.findScrollSnap(focused, this) ?: return false
464
+ val snapTarget = result.first
465
+ val alignment = result.second
466
+ val snapOffset = result.third
467
+
468
+ val rect = Rect()
469
+ snapTarget.getDrawingRect(rect)
470
+ offsetDescendantRectToMyCoords(snapTarget, rect)
471
+
472
+ val maxScrollY = getMaxScrollY()
473
+
474
+ if (snapOffset != null) {
475
+ val targetOffset =
476
+ ReactScrollViewHelper.computeScrollSnapTargetForOffset(
477
+ rect.top, snapOffset, snapInterval, maxScrollY)
478
+ reactSmoothScrollTo(scrollX, targetOffset)
479
+ return true
480
+ }
481
+
482
+ val viewportHeight = height - paddingTop - paddingBottom
483
+
484
+ val targetOffset =
485
+ ReactScrollViewHelper.computeScrollSnapOffset(
486
+ rect.top,
487
+ rect.bottom,
488
+ viewportHeight,
489
+ alignment ?: return false,
490
+ snapInterval,
491
+ snapToItemPadding,
492
+ maxScrollY,
493
+ ) ?: return false
494
+
495
+ reactSmoothScrollTo(scrollX, targetOffset)
496
+ return true
497
+ }
498
+
499
+ override fun arrowScroll(direction: Int): Boolean {
500
+ if (snapToAlignment == SNAP_ALIGNMENT_ITEM) {
501
+ // When snapToAlignment is "item", find the next focusable and request focus directly.
502
+ // This avoids super.arrowScroll() which starts its own scroll animation that conflicts
503
+ // with tryScrollSnapToChild's snap scrolling — requestChildFocus → tryScrollSnapToChild
504
+ // handles scrolling.
505
+ val currentFocused = findFocus()
506
+ val nextFocused = FocusFinder.getInstance().findNextFocus(this, currentFocused, direction)
507
+ if (nextFocused != null && nextFocused !== currentFocused && nextFocused !== this) {
508
+ nextFocused.requestFocus(direction)
509
+ return true
510
+ }
511
+ return false
512
+ }
513
+ return super.arrowScroll(direction)
514
+ }
515
+
516
+ /**
517
+ * Since ReactScrollView handles layout changes on JS side, it does not call super.onLayout due to
518
+ * which mIsLayoutDirty flag in ScrollView remains true and prevents scrolling to child when
519
+ * requestChildFocus is called. Overriding this method and scrolling to child without checking any
520
+ * layout dirty flag. This will fix focus navigation issue for KeyEvents which are not handled by
521
+ * ScrollView, for example: KEYCODE_TAB.
522
+ */
523
+ override fun requestChildFocus(child: View, focused: View?) {
524
+ if (focused != null && scrollsChildToFocus) {
525
+ if (!tryScrollSnapToChild(focused)) {
526
+ scrollToChild(focused)
527
+ }
528
+ }
529
+ requestChildFocusWithoutScroll(child, focused)
530
+ }
531
+
532
+ /**
533
+ * In rare cases where an app overrides the built-in ReactScrollView by overriding it, and also
534
+ * needs to customize scroll into view on focus behaviors, this protected method can be used to
535
+ * unblocks such customization.
536
+ */
537
+ protected open fun requestChildFocusWithoutScroll(child: View, focused: View?) {
538
+ blockScrollDelta = true
539
+ super.requestChildFocus(child, focused)
540
+ blockScrollDelta = false
541
+ }
542
+
543
+ override fun requestChildRectangleOnScreen(
544
+ child: View,
545
+ rectangle: Rect,
546
+ immediate: Boolean,
547
+ ): Boolean {
548
+ if (!scrollsChildToFocus) return false
549
+ return super.requestChildRectangleOnScreen(child, rectangle, immediate)
550
+ }
551
+
552
+ override fun computeScroll() {
553
+ val s = scroller
554
+ if (UiModeUtils.isTVDevice(context) &&
555
+ !scrollAnimationEnabled &&
556
+ s != null &&
557
+ !s.isFinished) {
558
+ // Jump instantly to the target position instead of animating.
559
+ scrollTo(s.finalX, s.finalY)
560
+ s.forceFinished(true)
561
+ return
562
+ }
563
+ super.computeScroll()
564
+ }
565
+
566
+ override fun computeScrollDeltaToGetChildRectOnScreen(rect: Rect): Int {
567
+ if (!scrollEnabled || blockScrollDelta) {
568
+ return 0
569
+ }
570
+ return super.computeScrollDeltaToGetChildRectOnScreen(rect)
571
+ }
572
+
573
+ private fun getScrollDelta(descendent: View): Int {
574
+ descendent.getDrawingRect(tempRect)
575
+ offsetDescendantRectToMyCoords(descendent, tempRect)
576
+ return computeScrollDeltaToGetChildRectOnScreen(tempRect)
577
+ }
578
+
579
+ override fun isPartiallyScrolledInView(view: View): Boolean {
580
+ val scrollDelta = getScrollDelta(view)
581
+ view.getDrawingRect(tempRect)
582
+ return scrollDelta != 0 && abs(scrollDelta) < tempRect.width()
583
+ }
584
+
585
+ private fun scrollToChild(child: View) {
586
+ var parent: View? = child
587
+ var scrollViewAncestor: View? = null
588
+ while (parent != null && parent !== this) {
589
+ if (parent is ReactScrollView) {
590
+ scrollViewAncestor = parent
591
+ }
592
+ parent = parent.parent as? View
593
+ }
594
+
595
+ val scrollIntoViewTarget = scrollViewAncestor ?: child
596
+ val tempRect = Rect()
597
+ scrollIntoViewTarget.getDrawingRect(tempRect)
598
+ offsetDescendantRectToMyCoords(scrollIntoViewTarget, tempRect)
599
+ val scrollDelta = computeScrollDeltaToGetChildRectOnScreen(tempRect)
600
+ if (scrollDelta != 0) {
601
+ scrollBy(0, scrollDelta)
602
+ }
603
+ }
604
+
605
+ override fun onScrollChanged(x: Int, y: Int, oldX: Int, oldY: Int) {
606
+ Systrace.beginSection(Systrace.TRACE_TAG_REACT, "ReactScrollView.onScrollChanged")
607
+ try {
608
+ super.onScrollChanged(x, y, oldX, oldY)
609
+ activelyScrolling = true
610
+ if (onScrollDispatchHelper.onScrollChanged(x, y)) {
611
+ if (_removeClippedSubviews) {
612
+ updateClippingRect()
613
+ }
614
+ ReactScrollViewHelper.updateStateOnScrollChanged(
615
+ this,
616
+ onScrollDispatchHelper.xFlingVelocity,
617
+ onScrollDispatchHelper.yFlingVelocity,
618
+ )
619
+ _virtualViewContainerState?.updateState()
620
+ }
621
+ } finally {
622
+ Systrace.endSection(Systrace.TRACE_TAG_REACT)
623
+ }
624
+ }
625
+
626
+ override fun shouldDelayChildPressedState(): Boolean =
627
+ hasChildPressedStateDelay ?: super.shouldDelayChildPressedState()
628
+
629
+ override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
630
+ if (!scrollEnabled) return false
631
+ if (!PointerEvents.canChildrenBeTouchTarget(pointerEvents)) return true
632
+
633
+ try {
634
+ if (super.onInterceptTouchEvent(ev)) {
635
+ handleInterceptedTouchEvent(ev)
636
+ return true
637
+ }
638
+ } catch (e: IllegalArgumentException) {
639
+ FLog.w(ReactConstants.TAG, "Error intercepting touch event.", e)
640
+ }
641
+
642
+ return false
643
+ }
644
+
645
+ protected open fun handleInterceptedTouchEvent(ev: MotionEvent) {
646
+ if (!ReactNativeFeatureFlags.shouldTriggerResponderTransferOnScrollAndroid()) {
647
+ NativeGestureUtil.notifyNativeGestureStarted(this, ev)
648
+ }
649
+ ReactScrollViewHelper.emitScrollBeginDragEvent(this)
650
+ dragging = true
651
+ emittedOverScrollSinceScrollBegin = false
652
+ enableFpsListener()
653
+ getFlingAnimator().cancel()
654
+ }
655
+
656
+ override fun onTouchEvent(ev: MotionEvent): Boolean {
657
+ if (!scrollEnabled) return false
658
+ if (!PointerEvents.canBeTouchTarget(pointerEvents)) return false
659
+
660
+ velocityHelper.calculateVelocity(ev)
661
+ val action = ev.actionMasked
662
+ if (action == MotionEvent.ACTION_UP && dragging) {
663
+ ReactScrollViewHelper.updateFabricScrollState(this)
664
+ val velocityX = velocityHelper.xVelocity
665
+ val velocityY = velocityHelper.yVelocity
666
+ ReactScrollViewHelper.emitScrollEndDragEvent(this, velocityX, velocityY)
667
+ if (!ReactNativeFeatureFlags.shouldTriggerResponderTransferOnScrollAndroid()) {
668
+ NativeGestureUtil.notifyNativeGestureEnded(this, ev)
669
+ }
670
+ dragging = false
671
+ handlePostTouchScrolling(Math.round(velocityX), Math.round(velocityY))
672
+ }
673
+
674
+ if (action == MotionEvent.ACTION_DOWN) {
675
+ cancelPostTouchScrolling()
676
+ }
677
+
678
+ return try {
679
+ super.onTouchEvent(ev)
680
+ } catch (e: IllegalArgumentException) {
681
+ FLog.w(ReactConstants.TAG, "Error handling touch event.", e)
682
+ false
683
+ }
684
+ }
685
+
686
+ override fun dispatchGenericMotionEvent(ev: MotionEvent): Boolean {
687
+ if (!scrollEnabled) return false
688
+ if (!PointerEvents.canChildrenBeTouchTarget(pointerEvents)) return false
689
+
690
+ if (ev.actionMasked == MotionEvent.ACTION_SCROLL) {
691
+ val vScroll = ev.getAxisValue(MotionEvent.AXIS_VSCROLL)
692
+ if (vScroll != 0f) {
693
+ enableFpsListener()
694
+ val result = super.dispatchGenericMotionEvent(ev)
695
+ if (
696
+ result &&
697
+ (pagingEnabled ||
698
+ snapInterval != 0 ||
699
+ snapOffsets != null ||
700
+ (snapToAlignment != SNAP_ALIGNMENT_DISABLED &&
701
+ snapToAlignment != SNAP_ALIGNMENT_ITEM))
702
+ ) {
703
+ if (postTouchRunnable != null) {
704
+ removeCallbacks(postTouchRunnable)
705
+ postTouchRunnable = null
706
+ }
707
+ postTouchRunnable = Runnable {
708
+ postTouchRunnable = null
709
+ var velocityY = (-vScroll.sign).toInt()
710
+ if (disableIntervalMomentum) {
711
+ velocityY = 0
712
+ }
713
+ flingAndSnap(velocityY)
714
+ handlePostTouchScrolling(0, velocityY)
715
+ }
716
+ postOnAnimationDelayed(postTouchRunnable, ReactScrollViewHelper.MOMENTUM_DELAY)
717
+ } else {
718
+ handlePostTouchScrolling(0, 0)
719
+ }
720
+ return result
721
+ }
722
+ }
723
+
724
+ return super.dispatchGenericMotionEvent(ev)
725
+ }
726
+
727
+ override fun executeKeyEvent(event: KeyEvent): Boolean {
728
+ val eventKeyCode = event.keyCode
729
+ if (
730
+ !scrollEnabled &&
731
+ (eventKeyCode == KeyEvent.KEYCODE_DPAD_UP || eventKeyCode == KeyEvent.KEYCODE_DPAD_DOWN)
732
+ ) {
733
+ return false
734
+ }
735
+ return super.executeKeyEvent(event)
736
+ }
737
+
738
+ override fun updateClippingRect() {
739
+ updateClippingRect(null)
740
+ }
741
+
742
+ override fun updateClippingRect(excludedViews: Set<Int>?) {
743
+ if (!_removeClippedSubviews) return
744
+
745
+ Systrace.beginSection(Systrace.TRACE_TAG_REACT, "ReactScrollView.updateClippingRect")
746
+ try {
747
+ val rect = checkNotNull(clippingRect)
748
+ ReactClippingViewGroupHelper.calculateClippingRect(this, rect)
749
+ val cv = getContentView()
750
+ if (cv is ReactClippingViewGroup) {
751
+ cv.updateClippingRect(excludedViews)
752
+ }
753
+ } finally {
754
+ Systrace.endSection(Systrace.TRACE_TAG_REACT)
755
+ }
756
+ }
757
+
758
+ override fun getClippingRect(outClippingRect: Rect) {
759
+ outClippingRect.set(checkNotNull(clippingRect))
760
+ }
761
+
762
+ override fun getChildVisibleRect(child: View, r: Rect, offset: android.graphics.Point?): Boolean {
763
+ return super.getChildVisibleRect(child, r, offset)
764
+ }
765
+
766
+ override fun fling(velocityY: Int) {
767
+ val correctedVelocityY = correctFlingVelocityY(velocityY)
768
+
769
+ if (pagingEnabled) {
770
+ flingAndSnap(correctedVelocityY)
771
+ } else if (scroller != null) {
772
+ val scrollWindowHeight = height - paddingBottom - paddingTop
773
+ scroller.fling(
774
+ scrollX, // startX
775
+ scrollY, // startY
776
+ 0, // velocityX
777
+ correctedVelocityY, // velocityY
778
+ 0, // minX
779
+ 0, // maxX
780
+ 0, // minY
781
+ Int.MAX_VALUE, // maxY
782
+ 0, // overX
783
+ scrollWindowHeight / 2, // overY
784
+ )
785
+ postInvalidateOnAnimation()
786
+ } else {
787
+ super.fling(correctedVelocityY)
788
+ }
789
+ handlePostTouchScrolling(0, correctedVelocityY)
790
+ }
791
+
792
+ private fun correctFlingVelocityY(velocityY: Int): Int {
793
+ if (Build.VERSION.SDK_INT != Build.VERSION_CODES.P) return velocityY
794
+ var signum = onScrollDispatchHelper.yFlingVelocity.sign
795
+ if (signum == 0f) {
796
+ signum = velocityY.toFloat().sign
797
+ }
798
+ return (abs(velocityY) * signum).toInt()
799
+ }
800
+
801
+ private fun enableFpsListener() {
802
+ if (isScrollPerfLoggingEnabled()) {
803
+ val listener = checkNotNull(fpsListener)
804
+ val perfTag = checkNotNull(scrollPerfTag)
805
+ listener.enable(perfTag)
806
+ }
807
+ }
808
+
809
+ private fun disableFpsListener() {
810
+ if (isScrollPerfLoggingEnabled()) {
811
+ val listener = checkNotNull(fpsListener)
812
+ val perfTag = checkNotNull(scrollPerfTag)
813
+ listener.disable(perfTag)
814
+ }
815
+ }
816
+
817
+ private fun isScrollPerfLoggingEnabled(): Boolean {
818
+ return fpsListener != null && !scrollPerfTag.isNullOrEmpty()
819
+ }
820
+
821
+ private fun getMaxScrollY(): Int {
822
+ val contentHeight = contentView?.height ?: 0
823
+ val viewportHeight = height - paddingBottom - paddingTop
824
+ return max(0, contentHeight - viewportHeight)
825
+ }
826
+
827
+ override fun draw(canvas: Canvas) {
828
+ if (endFillColor != Color.TRANSPARENT) {
829
+ val cv = getContentView()
830
+ val bg = endBackground
831
+ if (bg != null && cv != null && cv.bottom < height) {
832
+ bg.setBounds(0, cv.bottom, width, height)
833
+ bg.draw(canvas)
834
+ }
835
+ }
836
+ super.draw(canvas)
837
+ }
838
+
839
+ public override fun onDraw(canvas: Canvas) {
840
+ if (_overflow != Overflow.VISIBLE) {
841
+ BackgroundStyleApplicator.clipToPaddingBox(this, canvas)
842
+ }
843
+ super.onDraw(canvas)
844
+ }
845
+
846
+ /**
847
+ * This handles any sort of scrolling that may occur after a touch is finished. This may be
848
+ * momentum scrolling (fling) or because you have pagingEnabled on the scroll view. Because we
849
+ * don't get any events from Android about this lifecycle, we do all our detection by creating a
850
+ * runnable that checks if we scrolled in the last frame and if so assumes we are still scrolling.
851
+ */
852
+ private fun handlePostTouchScrolling(velocityX: Int, velocityY: Int) {
853
+ if (postTouchRunnable != null) return
854
+
855
+ if (sendMomentumEvents) {
856
+ enableFpsListener()
857
+ ReactScrollViewHelper.emitScrollMomentumBeginEvent(this, velocityX, velocityY)
858
+ }
859
+
860
+ activelyScrolling = false
861
+ postTouchRunnable =
862
+ object : Runnable {
863
+ private var snappingToPage = false
864
+ private var stableFrames = 0
865
+
866
+ override fun run() {
867
+ if (activelyScrolling) {
868
+ activelyScrolling = false
869
+ stableFrames = 0
870
+ this@ReactScrollView.postOnAnimationDelayed(
871
+ this,
872
+ ReactScrollViewHelper.MOMENTUM_DELAY,
873
+ )
874
+ } else {
875
+ ReactScrollViewHelper.updateFabricScrollState(this@ReactScrollView)
876
+ stableFrames++
877
+
878
+ if (stableFrames >= 3) {
879
+ postTouchRunnable = null
880
+ if (sendMomentumEvents) {
881
+ ReactScrollViewHelper.emitScrollMomentumEndEvent(this@ReactScrollView)
882
+ }
883
+ // Kotlin name is notifyUserDrivenScrollEnded; the _internal suffix is
884
+ // only a @JvmName alias for Java callers.
885
+ ReactScrollViewHelper.notifyUserDrivenScrollEnded(this@ReactScrollView)
886
+ disableFpsListener()
887
+ } else {
888
+ if (pagingEnabled && !snappingToPage) {
889
+ snappingToPage = true
890
+ flingAndSnap(0)
891
+ }
892
+ this@ReactScrollView.postOnAnimationDelayed(
893
+ this,
894
+ ReactScrollViewHelper.MOMENTUM_DELAY,
895
+ )
896
+ }
897
+ }
898
+ }
899
+ }
900
+ postOnAnimationDelayed(postTouchRunnable, ReactScrollViewHelper.MOMENTUM_DELAY)
901
+ }
902
+
903
+ private fun cancelPostTouchScrolling() {
904
+ if (postTouchRunnable != null) {
905
+ removeCallbacks(postTouchRunnable)
906
+ postTouchRunnable = null
907
+ getFlingAnimator().cancel()
908
+ }
909
+ }
910
+
911
+ // Predict where a fling would end up so we can scroll to the nearest snap offset.
912
+ // TODO(T106335409): Existing prediction still uses overscroller. Consider changing this to
913
+ // use fling animator instead.
914
+ private fun predictFinalScrollPosition(velocityY: Int): Int {
915
+ return if (getFlingAnimator() === defaultFlingAnimator) {
916
+ ReactScrollViewHelper.predictFinalScrollPosition(this, 0, velocityY, 0, getMaxScrollY()).y
917
+ } else {
918
+ ReactScrollViewHelper.getNextFlingStartValue(
919
+ this,
920
+ scrollY,
921
+ reactScrollViewScrollState.finalAnimatedPositionScroll.y,
922
+ velocityY,
923
+ ) + getFlingExtrapolatedDistance(velocityY)
924
+ }
925
+ }
926
+
927
+ private fun getContentView(): View? = getChildAt(0)
928
+
929
+ /**
930
+ * This will smooth scroll us to the nearest snap offset point. It currently just looks at where
931
+ * the content is and slides to the nearest point. It is intended to be run after we are done
932
+ * scrolling, and handling any momentum scrolling.
933
+ */
934
+ private fun smoothScrollAndSnap(velocity: Int) {
935
+ val interval = getSnapInterval().toDouble()
936
+ val currentOffset =
937
+ ReactScrollViewHelper.getNextFlingStartValue(
938
+ this,
939
+ scrollY,
940
+ reactScrollViewScrollState.finalAnimatedPositionScroll.y,
941
+ velocity,
942
+ )
943
+ .toDouble()
944
+ val targetOffset = predictFinalScrollPosition(velocity).toDouble()
945
+
946
+ var previousPage = floor(currentOffset / interval).toInt()
947
+ var nextPage = ceil(currentOffset / interval).toInt()
948
+ var currentPage = round(currentOffset / interval).toInt()
949
+ val targetPage = round(targetOffset / interval).toInt()
950
+
951
+ if (velocity > 0 && nextPage == previousPage) {
952
+ nextPage++
953
+ } else if (velocity < 0 && previousPage == nextPage) {
954
+ previousPage--
955
+ }
956
+
957
+ if (velocity > 0 && currentPage < nextPage && targetPage > previousPage) {
958
+ currentPage = nextPage
959
+ } else if (velocity < 0 && currentPage > previousPage && targetPage < nextPage) {
960
+ currentPage = previousPage
961
+ }
962
+
963
+ val finalTargetOffset = currentPage * interval
964
+ if (finalTargetOffset != currentOffset) {
965
+ activelyScrolling = true
966
+ reactSmoothScrollTo(scrollX, finalTargetOffset.toInt())
967
+ }
968
+ }
969
+
970
+ private fun flingAndSnap(velocityY: Int) {
971
+ if (childCount <= 0) return
972
+
973
+ if (snapInterval == 0 &&
974
+ snapOffsets == null &&
975
+ (snapToAlignment == SNAP_ALIGNMENT_DISABLED || snapToAlignment == SNAP_ALIGNMENT_ITEM)) {
976
+ smoothScrollAndSnap(velocityY)
977
+ return
978
+ }
979
+
980
+ @Suppress("NAME_SHADOWING") var velocityY = velocityY
981
+ val hasCustomizedFlingAnimator = getFlingAnimator() !== defaultFlingAnimator
982
+ val maximumOffset = getMaxScrollY()
983
+ var targetOffset = predictFinalScrollPosition(velocityY)
984
+ if (disableIntervalMomentum) {
985
+ targetOffset = scrollY
986
+ }
987
+
988
+ var smallerOffset = 0
989
+ var largerOffset = maximumOffset
990
+ var firstOffset = 0
991
+ var lastOffset = maximumOffset
992
+ val viewportHeight = height - paddingBottom - paddingTop
993
+
994
+ val currentSnapOffsets = snapOffsets
995
+ if (currentSnapOffsets != null) {
996
+ firstOffset = currentSnapOffsets[0]
997
+ lastOffset = currentSnapOffsets[currentSnapOffsets.size - 1]
998
+
999
+ for (i in currentSnapOffsets.indices) {
1000
+ val offset = currentSnapOffsets[i]
1001
+ if (offset <= targetOffset) {
1002
+ if (targetOffset - offset < targetOffset - smallerOffset) {
1003
+ smallerOffset = offset
1004
+ }
1005
+ }
1006
+ if (offset >= targetOffset) {
1007
+ if (offset - targetOffset < largerOffset - targetOffset) {
1008
+ largerOffset = offset
1009
+ }
1010
+ }
1011
+ }
1012
+ } else if (snapToAlignment != SNAP_ALIGNMENT_DISABLED && snapToAlignment != SNAP_ALIGNMENT_ITEM) {
1013
+ if (snapInterval > 0) {
1014
+ val ratio = targetOffset.toDouble() / snapInterval
1015
+ smallerOffset =
1016
+ max(
1017
+ getItemStartOffset(
1018
+ snapToAlignment,
1019
+ (floor(ratio) * snapInterval).toInt(),
1020
+ snapInterval,
1021
+ viewportHeight,
1022
+ ),
1023
+ 0,
1024
+ )
1025
+ largerOffset =
1026
+ min(
1027
+ getItemStartOffset(
1028
+ snapToAlignment,
1029
+ (ceil(ratio) * snapInterval).toInt(),
1030
+ snapInterval,
1031
+ viewportHeight,
1032
+ ),
1033
+ maximumOffset,
1034
+ )
1035
+ } else {
1036
+ val cv = getContentView() as ViewGroup
1037
+ var smallerChildOffset = largerOffset
1038
+ var largerChildOffset = smallerOffset
1039
+ for (i in 0 until cv.childCount) {
1040
+ val item = cv.getChildAt(i)
1041
+ val itemStartOffset =
1042
+ when (snapToAlignment) {
1043
+ SNAP_ALIGNMENT_CENTER -> item.top - (viewportHeight - item.height) / 2
1044
+ SNAP_ALIGNMENT_START -> item.top
1045
+ SNAP_ALIGNMENT_END -> item.top - (viewportHeight - item.height)
1046
+ else ->
1047
+ throw IllegalStateException("Invalid SnapToAlignment value: $snapToAlignment")
1048
+ }
1049
+ if (itemStartOffset <= targetOffset) {
1050
+ if (targetOffset - itemStartOffset < targetOffset - smallerOffset) {
1051
+ smallerOffset = itemStartOffset
1052
+ }
1053
+ }
1054
+ if (itemStartOffset >= targetOffset) {
1055
+ if (itemStartOffset - targetOffset < largerOffset - targetOffset) {
1056
+ largerOffset = itemStartOffset
1057
+ }
1058
+ }
1059
+ smallerChildOffset = min(smallerChildOffset, itemStartOffset)
1060
+ largerChildOffset = max(largerChildOffset, itemStartOffset)
1061
+ }
1062
+ smallerOffset = max(smallerOffset, smallerChildOffset)
1063
+ largerOffset = min(largerOffset, largerChildOffset)
1064
+ }
1065
+ } else {
1066
+ val interval = getSnapInterval().toDouble()
1067
+ val ratio = targetOffset.toDouble() / interval
1068
+ smallerOffset = (floor(ratio) * interval).toInt()
1069
+ largerOffset = min((ceil(ratio) * interval).toInt(), maximumOffset)
1070
+ }
1071
+
1072
+ val nearestOffset =
1073
+ if (abs(targetOffset - smallerOffset) < abs(largerOffset - targetOffset)) smallerOffset
1074
+ else largerOffset
1075
+
1076
+ if (!snapToEnd && targetOffset >= lastOffset) {
1077
+ if (scrollY >= lastOffset) {
1078
+ // free scrolling
1079
+ } else {
1080
+ targetOffset = lastOffset
1081
+ }
1082
+ } else if (!snapToStart && targetOffset <= firstOffset) {
1083
+ if (scrollY <= firstOffset) {
1084
+ // free scrolling
1085
+ } else {
1086
+ targetOffset = firstOffset
1087
+ }
1088
+ } else if (velocityY > 0) {
1089
+ if (!hasCustomizedFlingAnimator) {
1090
+ velocityY += ((largerOffset - targetOffset) * 10.0).toInt()
1091
+ }
1092
+ targetOffset = largerOffset
1093
+ } else if (velocityY < 0) {
1094
+ if (!hasCustomizedFlingAnimator) {
1095
+ velocityY -= ((targetOffset - smallerOffset) * 10.0).toInt()
1096
+ }
1097
+ targetOffset = smallerOffset
1098
+ } else {
1099
+ targetOffset = nearestOffset
1100
+ }
1101
+
1102
+ targetOffset = min(max(0, targetOffset), maximumOffset)
1103
+
1104
+ if (hasCustomizedFlingAnimator || scroller == null) {
1105
+ reactSmoothScrollTo(scrollX, targetOffset)
1106
+ } else {
1107
+ activelyScrolling = true
1108
+ scroller.fling(
1109
+ scrollX, // startX
1110
+ scrollY, // startY
1111
+ 0, // velocityX
1112
+ if (velocityY != 0) velocityY else targetOffset - scrollY, // velocityY
1113
+ 0, // minX
1114
+ 0, // maxX
1115
+ targetOffset, // minY
1116
+ targetOffset, // maxY
1117
+ 0, // overX
1118
+ if (targetOffset == 0 || targetOffset == maximumOffset) viewportHeight / 2
1119
+ else 0, // overY
1120
+ )
1121
+ postInvalidateOnAnimation()
1122
+ }
1123
+ }
1124
+
1125
+ private fun getItemStartOffset(
1126
+ snapToAlignment: Int,
1127
+ itemStartPosition: Int,
1128
+ itemHeight: Int,
1129
+ viewPortHeight: Int,
1130
+ ): Int =
1131
+ when (snapToAlignment) {
1132
+ SNAP_ALIGNMENT_CENTER -> itemStartPosition - (viewPortHeight - itemHeight) / 2
1133
+ SNAP_ALIGNMENT_START -> itemStartPosition
1134
+ SNAP_ALIGNMENT_END -> itemStartPosition - (viewPortHeight - itemHeight)
1135
+ else -> throw IllegalStateException("Invalid SnapToAlignment value: $snapToAlignment")
1136
+ }
1137
+
1138
+ private fun getSnapInterval(): Int = if (snapInterval != 0) snapInterval else height
1139
+
1140
+ public open fun setEndFillColor(color: Int) {
1141
+ if (color != endFillColor) {
1142
+ endFillColor = color
1143
+ endBackground = ColorDrawable(endFillColor)
1144
+ }
1145
+ }
1146
+
1147
+ override fun onOverScrolled(scrollX: Int, scrollY: Int, clampedX: Boolean, clampedY: Boolean) {
1148
+ @Suppress("NAME_SHADOWING") var scrollY = scrollY
1149
+ if (scroller != null && contentView != null) {
1150
+ if (!scroller.isFinished && scroller.currY != scroller.finalY) {
1151
+ val scrollRange = getMaxScrollY()
1152
+ if (scrollY >= scrollRange) {
1153
+ scroller.abortAnimation()
1154
+ scrollY = scrollRange
1155
+ }
1156
+ }
1157
+ }
1158
+
1159
+ if (
1160
+ ReactNativeFeatureFlags.shouldTriggerResponderTransferOnScrollAndroid() &&
1161
+ clampedY &&
1162
+ !emittedOverScrollSinceScrollBegin
1163
+ ) {
1164
+ ReactScrollViewHelper.emitScrollEvent(this, 0f, 0f)
1165
+ emittedOverScrollSinceScrollBegin = true
1166
+ }
1167
+
1168
+ super.onOverScrolled(scrollX, scrollY, clampedX, clampedY)
1169
+ }
1170
+
1171
+ override fun onChildViewAdded(parent: View, child: View) {
1172
+ contentView = child
1173
+ child.addOnLayoutChangeListener(this)
1174
+ }
1175
+
1176
+ override fun onChildViewRemoved(parent: View, child: View) {
1177
+ contentView?.removeOnLayoutChangeListener(this)
1178
+ contentView = null
1179
+ }
1180
+
1181
+ public open fun setContentOffset(value: ReadableMap?) {
1182
+ if (currentContentOffset == null || currentContentOffset != value) {
1183
+ currentContentOffset = value
1184
+ if (value != null) {
1185
+ val x = if (value.hasKey("x")) value.getDouble("x") else 0.0
1186
+ val y = if (value.hasKey("y")) value.getDouble("y") else 0.0
1187
+ scrollTo(PixelUtil.toPixelFromDIP(x).toInt(), PixelUtil.toPixelFromDIP(y).toInt())
1188
+ } else {
1189
+ scrollTo(0, 0)
1190
+ }
1191
+ }
1192
+ }
1193
+
1194
+ /**
1195
+ * Calls `smoothScrollTo` and updates state.
1196
+ *
1197
+ * `smoothScrollTo` changes `contentOffset` and we need to keep `contentOffset` in sync between
1198
+ * scroll view and state. Calling raw `smoothScrollTo` doesn't update state.
1199
+ */
1200
+ override fun reactSmoothScrollTo(x: Int, y: Int) {
1201
+ if (scrollAnimationEnabled || !UiModeUtils.isTVDevice(context)) {
1202
+ ReactScrollViewHelper.smoothScrollTo(this, x, y)
1203
+ } else {
1204
+ scrollTo(x, y)
1205
+ }
1206
+ setPendingContentOffsets(x, y)
1207
+ }
1208
+
1209
+ /**
1210
+ * Calls `super.scrollTo` and updates state.
1211
+ *
1212
+ * `super.scrollTo` changes `contentOffset` and we need to keep `contentOffset` in sync between
1213
+ * scroll view and state.
1214
+ *
1215
+ * Note that while we can override scrollTo, we *cannot* override `smoothScrollTo` because it is
1216
+ * final. See `reactSmoothScrollTo`.
1217
+ */
1218
+ override fun scrollTo(x: Int, y: Int) {
1219
+ super.scrollTo(x, y)
1220
+ ReactScrollViewHelper.updateFabricScrollState(this)
1221
+ setPendingContentOffsets(x, y)
1222
+ }
1223
+
1224
+ /**
1225
+ * If we are in the middle of a fling animation from the user removing their finger (OverScroller
1226
+ * is in `FLING_MODE`), recreate the existing fling animation since it was calculated against
1227
+ * outdated scroll offsets.
1228
+ */
1229
+ private fun recreateFlingAnimation(scrollY: Int) {
1230
+ if (getFlingAnimator().isRunning) {
1231
+ getFlingAnimator().cancel()
1232
+ }
1233
+
1234
+ if (scroller != null && !scroller.isFinished) {
1235
+ val scrollerYBeforeTick = scroller.currY
1236
+ val hasMoreTicks = scroller.computeScrollOffset()
1237
+ scroller.forceFinished(true)
1238
+
1239
+ if (hasMoreTicks) {
1240
+ val direction = (scroller.finalY - scroller.startY).toFloat().sign
1241
+ val flingVelocityY = scroller.currVelocity * direction
1242
+ scroller.fling(scrollX, scrollY, 0, flingVelocityY.toInt(), 0, 0, 0, Int.MAX_VALUE)
1243
+ } else {
1244
+ scrollTo(scrollX, scrollY + (scroller.currY - scrollerYBeforeTick))
1245
+ }
1246
+ }
1247
+ }
1248
+
1249
+ override fun scrollToPreservingMomentum(x: Int, y: Int) {
1250
+ scrollTo(x, y)
1251
+ recreateFlingAnimation(y)
1252
+ }
1253
+
1254
+ private fun isContentReady(): Boolean {
1255
+ val child = getContentView()
1256
+ return child != null && child.width != 0 && child.height != 0
1257
+ }
1258
+
1259
+ private fun setPendingContentOffsets(x: Int, y: Int) {
1260
+ if (isContentReady()) {
1261
+ pendingContentOffsetX = UNSET_CONTENT_OFFSET
1262
+ pendingContentOffsetY = UNSET_CONTENT_OFFSET
1263
+ } else {
1264
+ pendingContentOffsetX = x
1265
+ pendingContentOffsetY = y
1266
+ }
1267
+ }
1268
+
1269
+ override fun onLayoutChange(
1270
+ v: View,
1271
+ left: Int,
1272
+ top: Int,
1273
+ right: Int,
1274
+ bottom: Int,
1275
+ oldLeft: Int,
1276
+ oldTop: Int,
1277
+ oldRight: Int,
1278
+ oldBottom: Int,
1279
+ ) {
1280
+ if (contentView == null) return
1281
+
1282
+ if (isShown && isContentReady()) {
1283
+ val currentScrollY = scrollY
1284
+ val maxScrollY = getMaxScrollY()
1285
+ if (currentScrollY > maxScrollY) {
1286
+ scrollTo(scrollX, maxScrollY)
1287
+ }
1288
+ }
1289
+
1290
+ ReactScrollViewHelper.emitLayoutChangeEvent(this)
1291
+ }
1292
+
1293
+ override fun setBackgroundColor(color: Int) {
1294
+ BackgroundStyleApplicator.setBackgroundColor(this, color)
1295
+ }
1296
+
1297
+ public open fun setBorderWidth(position: Int, width: Float) {
1298
+ BackgroundStyleApplicator.setBorderWidth(
1299
+ this,
1300
+ LogicalEdge.entries[position],
1301
+ PixelUtil.toDIPFromPixel(width),
1302
+ )
1303
+ }
1304
+
1305
+ public open fun setBorderColor(position: Int, color: Int?) {
1306
+ BackgroundStyleApplicator.setBorderColor(this, LogicalEdge.entries[position], color)
1307
+ }
1308
+
1309
+ public open fun setBorderRadius(borderRadius: Float) {
1310
+ setBorderRadius(borderRadius, BorderRadiusProp.BORDER_RADIUS.ordinal)
1311
+ }
1312
+
1313
+ public open fun setBorderRadius(borderRadius: Float, position: Int) {
1314
+ val radius =
1315
+ if (borderRadius.isNaN()) null
1316
+ else LengthPercentage(PixelUtil.toDIPFromPixel(borderRadius), LengthPercentageType.POINT)
1317
+ BackgroundStyleApplicator.setBorderRadius(this, BorderRadiusProp.entries[position], radius)
1318
+ }
1319
+
1320
+ public open fun setBorderStyle(style: String?) {
1321
+ BackgroundStyleApplicator.setBorderStyle(
1322
+ this,
1323
+ if (style == null) null else BorderStyle.fromString(style),
1324
+ )
1325
+ }
1326
+
1327
+ /**
1328
+ * ScrollAway: This enables a natively-controlled navbar that optionally obscures the top content
1329
+ * of the ScrollView. Whether or not the navbar is obscuring the React Native surface is
1330
+ * determined outside of React Native.
1331
+ *
1332
+ * Note: all ScrollViews and HorizontalScrollViews in React have exactly one child: the "content"
1333
+ * View (see ScrollView.js). That View is non-collapsable so it will never be View-flattened away.
1334
+ * However, it is possible to pass custom styles into that View.
1335
+ *
1336
+ * If you are using this feature it is assumed that you have full control over this ScrollView and
1337
+ * that you are **not** overriding the ScrollView content view to pass in a `translateY` style.
1338
+ * `translateY` must never be set from ReactJS while using this feature!
1339
+ */
1340
+ public open fun setScrollAwayPaddingEnabledUnstable(topPadding: Int, bottomPadding: Int) {
1341
+ setScrollAwayPaddingEnabledUnstable(topPadding, bottomPadding, true)
1342
+ }
1343
+
1344
+ public open fun setScrollAwayPaddingEnabledUnstable(
1345
+ topPadding: Int,
1346
+ bottomPadding: Int,
1347
+ updateState: Boolean,
1348
+ ) {
1349
+ val count = childCount
1350
+ check(count <= 1) {
1351
+ "React Native ScrollView should not have more than one child, it should have exactly 1" +
1352
+ " child; a content View"
1353
+ }
1354
+
1355
+ if (count > 0) {
1356
+ for (i in 0 until count) {
1357
+ val childView = getChildAt(i)
1358
+ childView.translationY = topPadding.toFloat()
1359
+ }
1360
+ setPadding(0, 0, 0, topPadding + bottomPadding)
1361
+ }
1362
+
1363
+ if (updateState) {
1364
+ updateScrollAwayState(topPadding, bottomPadding)
1365
+ }
1366
+ removeClippedSubviews = _removeClippedSubviews
1367
+ }
1368
+
1369
+ private fun updateScrollAwayState(scrollAwayPaddingTop: Int, scrollAwayPaddingBottom: Int) {
1370
+ _reactScrollViewScrollState.scrollAwayPaddingTop = scrollAwayPaddingTop
1371
+ _reactScrollViewScrollState.scrollAwayPaddingBottom = scrollAwayPaddingBottom
1372
+ ReactScrollViewHelper.forceUpdateState(this)
1373
+ }
1374
+
1375
+ override fun startFlingAnimator(start: Int, end: Int) {
1376
+ defaultFlingAnimator.cancel()
1377
+ val duration = ReactScrollViewHelper.getDefaultScrollAnimationDuration(context)
1378
+ defaultFlingAnimator.setDuration(duration.toLong()).setIntValues(start, end)
1379
+ defaultFlingAnimator.start()
1380
+
1381
+ if (sendMomentumEvents) {
1382
+ val yVelocity = if (duration > 0) (end - start) / duration else 0
1383
+ ReactScrollViewHelper.emitScrollMomentumBeginEvent(this, 0, yVelocity)
1384
+ ReactScrollViewHelper.dispatchMomentumEndOnAnimationEnd(this)
1385
+ }
1386
+ }
1387
+
1388
+ override fun getFlingAnimator(): ValueAnimator = defaultFlingAnimator
1389
+
1390
+ override fun getFlingExtrapolatedDistance(velocity: Int): Int =
1391
+ ReactScrollViewHelper.predictFinalScrollPosition(this, 0, velocity, 0, getMaxScrollY()).y
1392
+ }