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