@office-iss/react-native-win32 0.80.0 → 0.81.0-preview.1

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 (513) hide show
  1. package/.flowconfig +10 -4
  2. package/CHANGELOG.json +127 -13
  3. package/CHANGELOG.md +49 -8
  4. package/IntegrationTests/AccessibilityManagerTest.js +1 -1
  5. package/IntegrationTests/AppEventsTest.js +1 -1
  6. package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
  7. package/IntegrationTests/ImageCachePolicyTest.js +2 -2
  8. package/IntegrationTests/ImageSnapshotTest.js +1 -1
  9. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -1
  10. package/IntegrationTests/IntegrationTestsApp.js +2 -1
  11. package/IntegrationTests/LayoutEventsTest.js +1 -1
  12. package/IntegrationTests/LoggingTestModule.js +16 -20
  13. package/IntegrationTests/PromiseTest.js +1 -1
  14. package/IntegrationTests/SimpleSnapshotTest.js +1 -1
  15. package/IntegrationTests/SyncMethodTest.js +1 -1
  16. package/IntegrationTests/TimersTest.js +2 -1
  17. package/IntegrationTests/WebSocketTest.js +2 -1
  18. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  19. package/Libraries/Alert/Alert.js +3 -3
  20. package/Libraries/Alert/Alert.win32.js +1 -1
  21. package/Libraries/Alert/NativeAlertManager.js +1 -0
  22. package/Libraries/Alert/RCTAlertManager.android.js +19 -13
  23. package/Libraries/Alert/RCTAlertManager.ios.js +10 -12
  24. package/Libraries/Alert/RCTAlertManager.js +1 -3
  25. package/Libraries/Alert/RCTAlertManager.js.flow +5 -7
  26. package/Libraries/Animated/Animated.js +0 -1
  27. package/Libraries/Animated/Animated.js.flow +0 -1
  28. package/Libraries/Animated/AnimatedEvent.js +4 -3
  29. package/Libraries/Animated/AnimatedExports.js +0 -1
  30. package/Libraries/Animated/AnimatedExports.js.flow +5 -1
  31. package/Libraries/Animated/AnimatedImplementation.js +44 -44
  32. package/Libraries/Animated/AnimatedMock.js +2 -2
  33. package/Libraries/Animated/Easing.js +1 -1
  34. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  35. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  36. package/Libraries/Animated/SpringConfig.js +1 -1
  37. package/Libraries/Animated/animations/Animation.js +10 -2
  38. package/Libraries/Animated/components/AnimatedScrollView.js +58 -56
  39. package/Libraries/Animated/components/AnimatedText.js +2 -5
  40. package/Libraries/Animated/components/AnimatedView.js +2 -1
  41. package/Libraries/Animated/createAnimatedComponent.js +39 -37
  42. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  43. package/Libraries/Animated/nodes/AnimatedProps.js +31 -4
  44. package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
  45. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  46. package/Libraries/AppState/NativeAppState.js +1 -0
  47. package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
  48. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  49. package/Libraries/Blob/BlobManager.js +4 -0
  50. package/Libraries/Blob/NativeBlobModule.js +1 -0
  51. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  52. package/Libraries/Blob/URL.js +1 -1
  53. package/Libraries/Blob/URLSearchParams.js +5 -1
  54. package/Libraries/Blob/URLSearchParams.js.flow +2 -1
  55. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
  56. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +1 -2
  57. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
  58. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
  59. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
  60. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
  61. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +1 -1
  62. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -19
  63. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
  64. package/Libraries/Components/Button.js +10 -7
  65. package/Libraries/Components/Button.win32.js +10 -7
  66. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  67. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
  68. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -3
  69. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
  70. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
  71. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
  72. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
  73. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
  74. package/Libraries/Components/Keyboard/Keyboard.js +1 -1
  75. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
  76. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
  77. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  78. package/Libraries/Components/Pressable/Pressable.js +17 -8
  79. package/Libraries/Components/Pressable/Pressable.win32.js +17 -14
  80. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  81. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  82. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -3
  83. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -3
  84. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -1
  85. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  86. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -3
  87. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
  88. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
  89. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +3 -2
  90. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -3
  91. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  92. package/Libraries/Components/ScrollView/ScrollView.d.ts +33 -6
  93. package/Libraries/Components/ScrollView/ScrollView.js +25 -15
  94. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  95. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  96. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  97. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  98. package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
  99. package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
  100. package/Libraries/Components/Sound/SoundManager.js +1 -1
  101. package/Libraries/Components/StaticRenderer.js +1 -1
  102. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
  103. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
  104. package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
  105. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  106. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -3
  107. package/Libraries/Components/Switch/Switch.js +10 -3
  108. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -3
  109. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -24
  110. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -3
  111. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
  112. package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
  113. package/Libraries/Components/TextInput/TextInput.flow.js +13 -15
  114. package/Libraries/Components/TextInput/TextInput.flow.win32.js +12 -14
  115. package/Libraries/Components/TextInput/TextInput.js +42 -39
  116. package/Libraries/Components/TextInput/TextInput.win32.js +69 -38
  117. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  118. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  119. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
  120. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  121. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
  122. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  123. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
  124. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +1 -1
  125. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
  126. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  127. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  128. package/Libraries/Components/Touchable/Position.js +1 -1
  129. package/Libraries/Components/Touchable/Touchable.js +17 -3
  130. package/Libraries/Components/Touchable/Touchable.win32.js +17 -3
  131. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  132. package/Libraries/Components/Touchable/TouchableHighlight.js +14 -5
  133. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +5 -3
  134. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +5 -2
  135. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
  136. package/Libraries/Components/Touchable/TouchableOpacity.js +10 -5
  137. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
  138. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -3
  139. package/Libraries/Components/View/ReactNativeStyleAttributes.js +7 -16
  140. package/Libraries/Components/View/View.js +114 -29
  141. package/Libraries/Components/View/View.win32.js +17 -3
  142. package/Libraries/Components/View/ViewAccessibility.d.ts +1 -0
  143. package/Libraries/Components/View/ViewAccessibility.js +1 -8
  144. package/Libraries/Components/View/ViewAccessibility.win32.js +1 -8
  145. package/Libraries/Components/View/ViewPropTypes.d.ts +22 -2
  146. package/Libraries/Components/View/ViewPropTypes.js +9 -1
  147. package/Libraries/Components/View/ViewPropTypes.win32.js +9 -1
  148. package/Libraries/Core/Devtools/getDevServer.js +1 -1
  149. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  150. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +49 -7
  151. package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
  152. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
  153. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  154. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  155. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  156. package/Libraries/Core/ExceptionsManager.js +27 -16
  157. package/Libraries/Core/InitializeCore.js +2 -23
  158. package/Libraries/Core/NativeExceptionsManager.js +1 -0
  159. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  160. package/Libraries/Core/ReactNativeVersion.js +3 -2
  161. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  162. package/Libraries/Core/Timers/JSTimers.js +1 -1
  163. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  164. package/Libraries/Core/Timers/immediateShim.js +1 -1
  165. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  166. package/Libraries/Core/checkNativeVersion.js +1 -0
  167. package/Libraries/Core/setUpDeveloperTools.js +13 -11
  168. package/Libraries/Core/setUpReactDevTools.js +21 -4
  169. package/Libraries/Debugging/DebuggingOverlay.js +12 -14
  170. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -1
  171. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  172. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  173. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  174. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  175. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  176. package/Libraries/Image/AssetRegistry.js +4 -10
  177. package/Libraries/Image/Image.android.js +113 -107
  178. package/Libraries/Image/Image.ios.js +10 -2
  179. package/Libraries/Image/Image.win32.js +11 -3
  180. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  181. package/Libraries/Image/ImageInjection.js +1 -1
  182. package/Libraries/Image/ImageSource.d.ts +5 -0
  183. package/Libraries/Image/ImageViewNativeComponent.js +3 -3
  184. package/Libraries/Image/NativeImageEditor.js +1 -0
  185. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  186. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  187. package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
  188. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  189. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  190. package/Libraries/Image/RelativeImageStub.js +2 -1
  191. package/Libraries/Image/TextInlineImageNativeComponent.js +4 -4
  192. package/Libraries/Image/resolveAssetSource.js +1 -1
  193. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  194. package/Libraries/Interaction/InteractionManager.js +64 -54
  195. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  196. package/Libraries/Interaction/TaskQueue.js +8 -9
  197. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  198. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
  199. package/Libraries/Linking/Linking.js +1 -1
  200. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  201. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  202. package/Libraries/Lists/FlatList.d.ts +9 -5
  203. package/Libraries/Lists/FlatList.js +6 -7
  204. package/Libraries/Lists/SectionList.js +4 -4
  205. package/Libraries/Lists/SectionListModern.js +9 -3
  206. package/Libraries/Lists/VirtualizedList.js +3 -2
  207. package/Libraries/LogBox/Data/LogBoxData.js +7 -4
  208. package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
  209. package/Libraries/LogBox/LogBox.js +72 -99
  210. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  211. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  212. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +2 -1
  213. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  214. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +3 -2
  215. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  216. package/Libraries/Modal/Modal.d.ts +8 -2
  217. package/Libraries/Modal/Modal.js +24 -3
  218. package/Libraries/Modal/NativeModalManager.js +1 -0
  219. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -1
  220. package/Libraries/NativeComponent/BaseViewConfig.android.js +21 -18
  221. package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -17
  222. package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
  223. package/Libraries/NativeComponent/BaseViewConfig.win32.js +8 -17
  224. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
  225. package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
  226. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  227. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  228. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  229. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  230. package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
  231. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  232. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  233. package/Libraries/Network/FormData.js +1 -1
  234. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  235. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  236. package/Libraries/Network/RCTNetworking.android.js +2 -2
  237. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  238. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  239. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  240. package/Libraries/Network/XMLHttpRequest.js +3 -3
  241. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  242. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -3
  243. package/Libraries/Pressability/Pressability.js +1 -1
  244. package/Libraries/Pressability/Pressability.win32.js +1 -1
  245. package/Libraries/Promise.js +1 -1
  246. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  247. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
  248. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  249. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  250. package/Libraries/ReactNative/AppContainer.js +1 -1
  251. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  252. package/Libraries/ReactNative/AppRegistryImpl.js +2 -13
  253. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  254. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  255. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  256. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  257. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
  258. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  259. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
  260. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +81 -62
  261. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
  262. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  263. package/Libraries/ReactNative/RendererProxy.js +1 -1
  264. package/Libraries/ReactNative/RootTag.js +2 -2
  265. package/Libraries/ReactNative/renderApplication.js +1 -1
  266. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  267. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
  268. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +3 -3
  269. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
  270. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
  271. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
  272. package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -36
  273. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +261 -0
  274. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  275. package/Libraries/Settings/Settings.ios.js +1 -1
  276. package/Libraries/Settings/Settings.js +1 -1
  277. package/Libraries/Settings/SettingsFallback.js +1 -1
  278. package/Libraries/Share/NativeShareModule.js +1 -0
  279. package/Libraries/Share/Share.js +1 -1
  280. package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
  281. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  282. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  283. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
  284. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  285. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
  286. package/Libraries/StyleSheet/PointPropType.js +1 -1
  287. package/Libraries/StyleSheet/Rect.js +1 -1
  288. package/Libraries/StyleSheet/StyleSheet.js +1 -0
  289. package/Libraries/StyleSheet/StyleSheetTypes.js +0 -1
  290. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  291. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  292. package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
  293. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  294. package/Libraries/StyleSheet/processColor.js +1 -1
  295. package/Libraries/StyleSheet/processColorArray.js +1 -1
  296. package/Libraries/StyleSheet/processFilter.js +1 -2
  297. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  298. package/Libraries/StyleSheet/processTransform.js +1 -1
  299. package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
  300. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  301. package/Libraries/Text/Text.d.ts +7 -0
  302. package/Libraries/Text/Text.js +255 -246
  303. package/Libraries/Text/Text.win32.js +294 -285
  304. package/Libraries/Text/TextAncestor.js +3 -9
  305. package/Libraries/Text/TextAncestorContext.js +23 -0
  306. package/Libraries/Text/TextNativeComponent.js +4 -0
  307. package/Libraries/Text/TextNativeComponent.win32.js +4 -0
  308. package/Libraries/Text/TextProps.js +2 -5
  309. package/Libraries/Text/TextProps.win32.js +2 -7
  310. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  311. package/Libraries/Types/CodegenTypes.js +1 -1
  312. package/Libraries/Types/CodegenTypesNamespace.js +2 -1
  313. package/Libraries/Types/CoreEventTypes.d.ts +4 -0
  314. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  315. package/Libraries/Utilities/Appearance.js +1 -1
  316. package/Libraries/Utilities/BackHandler.js.flow +1 -1
  317. package/Libraries/Utilities/DevLoadingView.js +1 -1
  318. package/Libraries/Utilities/DeviceInfo.js +1 -1
  319. package/Libraries/Utilities/Dimensions.js +1 -1
  320. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  321. package/Libraries/Utilities/HMRClient.js +13 -3
  322. package/Libraries/Utilities/HMRClientProdShim.js +1 -1
  323. package/Libraries/Utilities/NativeAppearance.js +1 -0
  324. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  325. package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
  326. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  327. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  328. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  329. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  330. package/Libraries/Utilities/PixelRatio.js +1 -1
  331. package/Libraries/Utilities/Platform.android.js +2 -5
  332. package/Libraries/Utilities/Platform.ios.js +2 -5
  333. package/Libraries/Utilities/Platform.js +1 -1
  334. package/Libraries/Utilities/Platform.js.flow +2 -2
  335. package/Libraries/Utilities/Platform.win32.js +2 -5
  336. package/Libraries/Utilities/PlatformTypes.js +2 -2
  337. package/Libraries/Utilities/RCTLog.js +1 -1
  338. package/Libraries/Utilities/SceneTracker.js +1 -1
  339. package/Libraries/Utilities/binaryToBase64.js +1 -1
  340. package/Libraries/Utilities/codegenNativeCommands.js +5 -3
  341. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  342. package/Libraries/Utilities/createPerformanceLogger.js +27 -20
  343. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
  344. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  345. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  346. package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
  347. package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
  348. package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
  349. package/Libraries/Utilities/logError.js +1 -1
  350. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  351. package/Libraries/Utilities/stringifySafe.js +1 -1
  352. package/Libraries/Utilities/stringifyViewConfig.js +1 -1
  353. package/Libraries/Utilities/useColorScheme.js +1 -1
  354. package/Libraries/Utilities/useWindowDimensions.js +1 -1
  355. package/Libraries/Utilities/warnOnce.js +1 -1
  356. package/Libraries/Vibration/NativeVibration.js +1 -0
  357. package/Libraries/Vibration/Vibration.js +1 -2
  358. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  359. package/Libraries/WebSocket/WebSocket.js +1 -1
  360. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  361. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  362. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  363. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  364. package/index.js +22 -2
  365. package/index.win32.js +15 -2
  366. package/interface.js +1 -1
  367. package/jest/MockNativeMethods.js +9 -3
  368. package/jest/RefreshControlMock.js +32 -0
  369. package/jest/assetFileTransformer.js +1 -0
  370. package/jest/local-setup.js +4 -3
  371. package/jest/mock.js +39 -0
  372. package/jest/mockComponent.js +47 -17
  373. package/jest/mockNativeComponent.js +26 -15
  374. package/jest/mocks/AccessibilityInfo.js +62 -0
  375. package/jest/mocks/ActivityIndicator.js +23 -0
  376. package/jest/mocks/AppState.js +19 -0
  377. package/{flow/Stringish.js → jest/mocks/Clipboard.js} +6 -4
  378. package/jest/mocks/Image.js +23 -0
  379. package/jest/mocks/InitializeCore.js +9 -0
  380. package/jest/mocks/Linking.js +28 -0
  381. package/jest/mocks/Modal.js +33 -0
  382. package/jest/mocks/NativeComponentRegistry.js +30 -0
  383. package/jest/mocks/NativeModules.js +239 -0
  384. package/jest/mocks/RefreshControl.js +31 -0
  385. package/jest/mocks/RendererProxy.js +45 -0
  386. package/jest/mocks/ScrollView.js +58 -0
  387. package/jest/mocks/Text.js +27 -0
  388. package/jest/mocks/TextInput.js +32 -0
  389. package/jest/mocks/UIManager.js +60 -0
  390. package/jest/mocks/Vibration.js +16 -0
  391. package/jest/mocks/View.js +27 -0
  392. package/jest/mocks/ViewNativeComponent.js +23 -0
  393. package/jest/mocks/requireNativeComponent.js +22 -0
  394. package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
  395. package/jest/react-native-env.js +1 -0
  396. package/jest/renderer.js +1 -2
  397. package/jest/resolver.js +1 -0
  398. package/jest/setup.js +64 -445
  399. package/overrides.json +49 -42
  400. package/package.json +20 -20
  401. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  402. package/src/private/animated/NativeAnimatedHelper.win32.js +8 -1
  403. package/src/private/animated/createAnimatedPropsHook.js +14 -4
  404. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -3
  405. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  406. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  407. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  408. package/src/private/components/virtualview/VirtualView.js +145 -0
  409. package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
  410. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
  411. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
  412. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
  413. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  414. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
  415. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
  416. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
  417. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
  418. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
  419. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  420. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
  421. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
  422. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  423. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
  424. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  425. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  426. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  427. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.win32.js +8 -9
  428. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  429. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  430. package/src/private/featureflags/ReactNativeFeatureFlags.js +88 -8
  431. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
  432. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -3
  433. package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
  434. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  435. package/src/private/setup/setUpPerformanceObserver.js +7 -0
  436. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +8 -5
  437. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +4 -4
  438. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +4 -4
  439. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +4 -4
  440. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
  441. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
  442. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
  443. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +10 -7
  444. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
  445. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +15 -6
  446. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +9 -6
  447. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
  448. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +4 -4
  449. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
  450. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  451. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  452. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
  453. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
  454. package/src/private/styles/composeStyles.js +5 -12
  455. package/src/private/types/HostInstance.js +1 -1
  456. package/src/private/webapis/dom/events/Event.js +3 -0
  457. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  458. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
  459. package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
  460. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
  461. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  462. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
  463. package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
  464. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
  465. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  466. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  467. package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
  468. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  469. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
  470. package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
  471. package/src/private/webapis/errors/DOMException.js +166 -0
  472. package/src/private/webapis/geometry/DOMRect.js +5 -0
  473. package/src/private/webapis/geometry/DOMRectList.js +4 -1
  474. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  475. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
  476. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
  477. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  478. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +83 -18
  479. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
  480. package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
  481. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  482. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
  483. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
  484. package/src/private/webapis/performance/EventTiming.js +1 -1
  485. package/src/private/webapis/performance/LongTasks.js +1 -1
  486. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  487. package/src/private/webapis/performance/Performance.js +20 -9
  488. package/src/private/webapis/performance/PerformanceEntry.js +5 -1
  489. package/src/private/webapis/performance/PerformanceObserver.js +32 -28
  490. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  491. package/src/private/webapis/performance/ResourceTiming.js +108 -0
  492. package/src/private/webapis/performance/UserTiming.js +1 -1
  493. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +50 -33
  494. package/src/private/webapis/performance/internals/Utilities.js +1 -1
  495. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  496. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  497. package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
  498. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  499. package/src-win/Libraries/Components/View/ViewAccessibility.d.ts +1 -0
  500. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +22 -2
  501. package/src-win/Libraries/Text/Text.d.ts +7 -0
  502. package/types/modules/Devtools.d.ts +23 -9
  503. package/Libraries/BugReporting/BugReporting.js +0 -140
  504. package/Libraries/BugReporting/NativeBugReporting.js +0 -13
  505. package/Libraries/BugReporting/dumpReactTree.js +0 -151
  506. package/Libraries/BugReporting/getReactData.js +0 -187
  507. package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
  508. package/flow/HermesInternalType.js +0 -114
  509. package/flow/console.js +0 -49
  510. package/flow/global.js +0 -88
  511. package/jest/mockModal.js +0 -32
  512. package/jest/mockScrollView.js +0 -35
  513. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
@@ -0,0 +1,166 @@
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
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ /**
12
+ * This module implements the `DOMException` interface from WebIDL.
13
+ * See https://webidl.spec.whatwg.org/#idl-DOMException.
14
+ */
15
+
16
+ // flowlint unsafe-getters-setters:off
17
+
18
+ import {setPlatformObject} from '../webidl/PlatformObjects';
19
+
20
+ const ERROR_NAME_TO_ERROR_CODE_MAP: {[string]: number} = {
21
+ IndexSizeError: 1,
22
+ HierarchyRequestError: 3,
23
+ WrongDocumentError: 4,
24
+ InvalidCharacterError: 5,
25
+ NoModificationAllowedError: 7,
26
+ NotFoundError: 8,
27
+ NotSupportedError: 9,
28
+ InUseAttributeError: 10,
29
+ InvalidStateError: 11,
30
+ SyntaxError: 12,
31
+ InvalidModificationError: 13,
32
+ NamespaceError: 14,
33
+ InvalidAccessError: 15,
34
+ TypeMismatchError: 17,
35
+ SecurityError: 18,
36
+ NetworkError: 19,
37
+ AbortError: 20,
38
+ URLMismatchError: 21,
39
+ QuotaExceededError: 22,
40
+ TimeoutError: 23,
41
+ InvalidNodeTypeError: 24,
42
+ DataCloneError: 25,
43
+ };
44
+
45
+ const ERROR_CODES: {[string]: number} = {
46
+ INDEX_SIZE_ERR: 1,
47
+ DOMSTRING_SIZE_ERR: 2,
48
+ HIERARCHY_REQUEST_ERR: 3,
49
+ WRONG_DOCUMENT_ERR: 4,
50
+ INVALID_CHARACTER_ERR: 5,
51
+ NO_DATA_ALLOWED_ERR: 6,
52
+ NO_MODIFICATION_ALLOWED_ERR: 7,
53
+ NOT_FOUND_ERR: 8,
54
+ NOT_SUPPORTED_ERR: 9,
55
+ INUSE_ATTRIBUTE_ERR: 10,
56
+ INVALID_STATE_ERR: 11,
57
+ SYNTAX_ERR: 12,
58
+ INVALID_MODIFICATION_ERR: 13,
59
+ NAMESPACE_ERR: 14,
60
+ INVALID_ACCESS_ERR: 15,
61
+ VALIDATION_ERR: 16,
62
+ TYPE_MISMATCH_ERR: 17,
63
+ SECURITY_ERR: 18,
64
+ NETWORK_ERR: 19,
65
+ ABORT_ERR: 20,
66
+ URL_MISMATCH_ERR: 21,
67
+ QUOTA_EXCEEDED_ERR: 22,
68
+ TIMEOUT_ERR: 23,
69
+ INVALID_NODE_TYPE_ERR: 24,
70
+ DATA_CLONE_ERR: 25,
71
+ };
72
+
73
+ /* eslint-disable @react-native/monorepo/require-extends-error */
74
+ // $FlowExpectedError[incompatible-variance] name is writable in Error but not in DOMException, but this is how it works on Web.
75
+ export default class DOMException extends Error {
76
+ static +INDEX_SIZE_ERR: 1;
77
+ static +DOMSTRING_SIZE_ERR: 2;
78
+ static +HIERARCHY_REQUEST_ERR: 3;
79
+ static +WRONG_DOCUMENT_ERR: 4;
80
+ static +INVALID_CHARACTER_ERR: 5;
81
+ static +NO_DATA_ALLOWED_ERR: 6;
82
+ static +NO_MODIFICATION_ALLOWED_ERR: 7;
83
+ static +NOT_FOUND_ERR: 8;
84
+ static +NOT_SUPPORTED_ERR: 9;
85
+ static +INUSE_ATTRIBUTE_ERR: 10;
86
+ static +INVALID_STATE_ERR: 11;
87
+ static +SYNTAX_ERR: 12;
88
+ static +INVALID_MODIFICATION_ERR: 13;
89
+ static +NAMESPACE_ERR: 14;
90
+ static +INVALID_ACCESS_ERR: 15;
91
+ static +VALIDATION_ERR: 16;
92
+ static +TYPE_MISMATCH_ERR: 17;
93
+ static +SECURITY_ERR: 18;
94
+ static +NETWORK_ERR: 19;
95
+ static +ABORT_ERR: 20;
96
+ static +URL_MISMATCH_ERR: 21;
97
+ static +QUOTA_EXCEEDED_ERR: 22;
98
+ static +TIMEOUT_ERR: 23;
99
+ static +INVALID_NODE_TYPE_ERR: 24;
100
+ static +DATA_CLONE_ERR: 25;
101
+
102
+ +INDEX_SIZE_ERR: 1;
103
+ +DOMSTRING_SIZE_ERR: 2;
104
+ +HIERARCHY_REQUEST_ERR: 3;
105
+ +WRONG_DOCUMENT_ERR: 4;
106
+ +INVALID_CHARACTER_ERR: 5;
107
+ +NO_DATA_ALLOWED_ERR: 6;
108
+ +NO_MODIFICATION_ALLOWED_ERR: 7;
109
+ +NOT_FOUND_ERR: 8;
110
+ +NOT_SUPPORTED_ERR: 9;
111
+ +INUSE_ATTRIBUTE_ERR: 10;
112
+ +INVALID_STATE_ERR: 11;
113
+ +SYNTAX_ERR: 12;
114
+ +INVALID_MODIFICATION_ERR: 13;
115
+ +NAMESPACE_ERR: 14;
116
+ +INVALID_ACCESS_ERR: 15;
117
+ +VALIDATION_ERR: 16;
118
+ +TYPE_MISMATCH_ERR: 17;
119
+ +SECURITY_ERR: 18;
120
+ +NETWORK_ERR: 19;
121
+ +ABORT_ERR: 20;
122
+ +URL_MISMATCH_ERR: 21;
123
+ +QUOTA_EXCEEDED_ERR: 22;
124
+ +TIMEOUT_ERR: 23;
125
+ +INVALID_NODE_TYPE_ERR: 24;
126
+ +DATA_CLONE_ERR: 25;
127
+
128
+ #name: string;
129
+ #code: number;
130
+
131
+ constructor(message?: string, name?: string) {
132
+ super(message);
133
+
134
+ if (typeof name === 'undefined') {
135
+ this.#name = 'Error';
136
+ this.#code = 0;
137
+ } else {
138
+ this.#name = String(name);
139
+ this.#code = ERROR_NAME_TO_ERROR_CODE_MAP[this.name] ?? 0;
140
+ }
141
+ }
142
+
143
+ get name(): string {
144
+ return this.#name;
145
+ }
146
+
147
+ get code(): number {
148
+ return this.#code;
149
+ }
150
+ }
151
+
152
+ for (const code in ERROR_CODES) {
153
+ Object.defineProperty(DOMException, code, {
154
+ enumerable: true,
155
+ value: ERROR_CODES[code],
156
+ });
157
+
158
+ Object.defineProperty(DOMException.prototype, code, {
159
+ enumerable: true,
160
+ value: ERROR_CODES[code],
161
+ });
162
+ }
163
+
164
+ setPlatformObject(DOMException, {
165
+ clone: exception => new DOMException(exception.message, exception.name),
166
+ });
@@ -14,6 +14,7 @@
14
14
  * licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
15
15
  */
16
16
 
17
+ import {setPlatformObject} from '../webidl/PlatformObjects';
17
18
  import DOMRectReadOnly, {type DOMRectInit} from './DOMRectReadOnly';
18
19
 
19
20
  // flowlint unsafe-getters-setters:off
@@ -80,3 +81,7 @@ export default class DOMRect extends DOMRectReadOnly {
80
81
  return new DOMRect(rect.x, rect.y, rect.width, rect.height);
81
82
  }
82
83
  }
84
+
85
+ setPlatformObject(DOMRect, {
86
+ clone: rect => new DOMRect(rect.x, rect.y, rect.width, rect.height),
87
+ });
@@ -4,8 +4,8 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @format
8
7
  * @flow strict
8
+ * @format
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
@@ -14,6 +14,7 @@ import type {ArrayLike} from '../utils/ArrayLikeUtils';
14
14
  import type DOMRectReadOnly from './DOMRectReadOnly';
15
15
 
16
16
  import {createValueIterator} from '../utils/ArrayLikeUtils';
17
+ import {setPlatformObject} from '../webidl/PlatformObjects';
17
18
 
18
19
  // IMPORTANT: The Flow type definition for this module is defined in `DOMRectList.js.flow`
19
20
  // because Flow only supports indexers in classes in declaration files.
@@ -63,6 +64,8 @@ export default class DOMRectList implements Iterable<DOMRectReadOnly> {
63
64
  }
64
65
  }
65
66
 
67
+ setPlatformObject(DOMRectList);
68
+
66
69
  /**
67
70
  * This is an internal method to create instances of `DOMRectList`,
68
71
  * which avoids leaking its constructor to end users.
@@ -14,6 +14,8 @@
14
14
  * licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
15
15
  */
16
16
 
17
+ import {setPlatformObject} from '../webidl/PlatformObjects';
18
+
17
19
  // flowlint sketchy-null:off, unsafe-getters-setters:off
18
20
 
19
21
  export interface DOMRectInit {
@@ -186,3 +188,7 @@ export default class DOMRectReadOnly {
186
188
  this.#height = castToNumber(height);
187
189
  }
188
190
  }
191
+
192
+ setPlatformObject(DOMRectReadOnly, {
193
+ clone: rect => new DOMRectReadOnly(rect.x, rect.y, rect.width, rect.height),
194
+ });
@@ -12,6 +12,8 @@ import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
12
12
 
13
13
  import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
14
14
 
15
+ export opaque type IdleCallbackID = mixed;
16
+
15
17
  export type RequestIdleCallbackOptions = {
16
18
  timeout?: number,
17
19
  };
@@ -25,8 +27,8 @@ export interface Spec extends TurboModule {
25
27
  +requestIdleCallback: (
26
28
  callback: (idleDeadline: IdleDeadline) => mixed,
27
29
  options?: RequestIdleCallbackOptions,
28
- ) => mixed;
29
- +cancelIdleCallback: (handle: mixed) => void;
30
+ ) => IdleCallbackID;
31
+ +cancelIdleCallback: (handle: IdleCallbackID) => void;
30
32
  }
31
33
 
32
34
  export default (TurboModuleRegistry.getEnforcing<Spec>(
@@ -14,6 +14,7 @@ import type {IntersectionObserverId} from './internals/IntersectionObserverManag
14
14
  import type IntersectionObserverEntry from './IntersectionObserverEntry';
15
15
 
16
16
  import ReactNativeElement from '../dom/nodes/ReactNativeElement';
17
+ import {setPlatformObject} from '../webidl/PlatformObjects';
17
18
  import * as IntersectionObserverManager from './internals/IntersectionObserverManager';
18
19
 
19
20
  export type IntersectionObserverCallback = (
@@ -22,7 +23,7 @@ export type IntersectionObserverCallback = (
22
23
  ) => mixed;
23
24
 
24
25
  export interface IntersectionObserverInit {
25
- // root?: ReactNativeElement, // This option exists on the Web but it's not currently supported in React Native.
26
+ root?: ?ReactNativeElement;
26
27
  // rootMargin?: string, // This option exists on the Web but it's not currently supported in React Native.
27
28
  threshold?: number | $ReadOnlyArray<number>;
28
29
 
@@ -66,6 +67,7 @@ export default class IntersectionObserver {
66
67
  _observationTargets: Set<ReactNativeElement> = new Set();
67
68
  _intersectionObserverId: ?IntersectionObserverId;
68
69
  _rootThresholds: $ReadOnlyArray<number> | null;
70
+ _root: ReactNativeElement | null;
69
71
 
70
72
  constructor(
71
73
  callback: IntersectionObserverCallback,
@@ -84,16 +86,18 @@ export default class IntersectionObserver {
84
86
  }
85
87
 
86
88
  // $FlowExpectedError[prop-missing] it's not typed in React Native but exists on Web.
87
- if (options?.root != null) {
89
+ if (options?.rootMargin != null) {
88
90
  throw new TypeError(
89
- "Failed to construct 'IntersectionObserver': root is not supported",
91
+ "Failed to construct 'IntersectionObserver': rootMargin is not supported",
90
92
  );
91
93
  }
92
94
 
93
- // $FlowExpectedError[prop-missing] it's not typed in React Native but exists on Web.
94
- if (options?.rootMargin != null) {
95
+ if (
96
+ options?.root != null &&
97
+ !(options?.root instanceof ReactNativeElement)
98
+ ) {
95
99
  throw new TypeError(
96
- "Failed to construct 'IntersectionObserver': rootMargin is not supported",
100
+ "Failed to construct 'IntersectionObserver': Failed to read the 'root' property from 'IntersectionObserverInit': The provided value is not of type '(null or ReactNativeElement)",
97
101
  );
98
102
  }
99
103
 
@@ -104,6 +108,7 @@ export default class IntersectionObserver {
104
108
  options?.threshold,
105
109
  this._rootThresholds != null, // only provide default if no rootThreshold
106
110
  );
111
+ this._root = options?.root ?? null;
107
112
  }
108
113
 
109
114
  /**
@@ -115,7 +120,7 @@ export default class IntersectionObserver {
115
120
  * NOTE: This cannot currently be configured and `root` is always `null`.
116
121
  */
117
122
  get root(): ReactNativeElement | null {
118
- return null;
123
+ return this._root;
119
124
  }
120
125
 
121
126
  /**
@@ -182,6 +187,7 @@ export default class IntersectionObserver {
182
187
 
183
188
  const didStartObserving = IntersectionObserverManager.observe({
184
189
  intersectionObserverId: this._getOrCreateIntersectionObserverId(),
190
+ root: this._root,
185
191
  target,
186
192
  });
187
193
 
@@ -250,6 +256,8 @@ export default class IntersectionObserver {
250
256
  }
251
257
  }
252
258
 
259
+ setPlatformObject(IntersectionObserver);
260
+
253
261
  /**
254
262
  * Converts the user defined `threshold` value into an array of sorted valid
255
263
  * threshold options for `IntersectionObserver` (double ∈ [0, 1]).
@@ -14,6 +14,7 @@ import type ReactNativeElement from '../dom/nodes/ReactNativeElement';
14
14
  import type {NativeIntersectionObserverEntry} from './specs/NativeIntersectionObserver';
15
15
 
16
16
  import DOMRectReadOnly from '../geometry/DOMRectReadOnly';
17
+ import {setPlatformObject} from '../webidl/PlatformObjects';
17
18
 
18
19
  /**
19
20
  * The [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)
@@ -159,6 +160,8 @@ export default class IntersectionObserverEntry {
159
160
  }
160
161
  }
161
162
 
163
+ setPlatformObject(IntersectionObserverEntry);
164
+
162
165
  export function createIntersectionObserverEntry(
163
166
  entry: NativeIntersectionObserverEntry,
164
167
  target: ReactNativeElement,
@@ -23,9 +23,11 @@ import type IntersectionObserver, {
23
23
  IntersectionObserverCallback,
24
24
  } from '../IntersectionObserver';
25
25
  import type IntersectionObserverEntry from '../IntersectionObserverEntry';
26
+ import type {NativeIntersectionObserverToken} from '../specs/NativeIntersectionObserver';
26
27
 
27
28
  import * as Systrace from '../../../../../Libraries/Performance/Systrace';
28
29
  import warnOnce from '../../../../../Libraries/Utilities/warnOnce';
30
+ import * as ReactNativeFeatureFlags from '../../../featureflags/ReactNativeFeatureFlags';
29
31
  import {
30
32
  getInstanceHandle,
31
33
  getNativeNodeReference,
@@ -74,6 +76,29 @@ const targetToShadowNodeMap: WeakMap<
74
76
  ReturnType<typeof getNativeNodeReference>,
75
77
  > = new WeakMap();
76
78
 
79
+ const targetToTokenMap: WeakMap<
80
+ ReactNativeElement,
81
+ NativeIntersectionObserverToken,
82
+ > = new WeakMap();
83
+
84
+ let modernNativeIntersectionObserver =
85
+ NativeIntersectionObserver == null
86
+ ? null
87
+ : NativeIntersectionObserver.observeV2 == null ||
88
+ NativeIntersectionObserver.unobserveV2 == null
89
+ ? null
90
+ : {
91
+ observe: NativeIntersectionObserver.observeV2,
92
+ unobserve: NativeIntersectionObserver.unobserveV2,
93
+ };
94
+
95
+ if (
96
+ modernNativeIntersectionObserver &&
97
+ !ReactNativeFeatureFlags.utilizeTokensInIntersectionObserver()
98
+ ) {
99
+ modernNativeIntersectionObserver = null;
100
+ }
101
+
77
102
  /**
78
103
  * Registers the given intersection observer and returns a unique ID for it,
79
104
  * which is required to start observing targets.
@@ -115,9 +140,11 @@ export function unregisterObserver(
115
140
  */
116
141
  export function observe({
117
142
  intersectionObserverId,
143
+ root,
118
144
  target,
119
145
  }: {
120
146
  intersectionObserverId: IntersectionObserverId,
147
+ root: ?ReactNativeElement,
121
148
  target: ReactNativeElement,
122
149
  }): boolean {
123
150
  if (NativeIntersectionObserver == null) {
@@ -149,24 +176,47 @@ export function observe({
149
176
  return false;
150
177
  }
151
178
 
179
+ const rootNativeNodeReference =
180
+ root != null ? getNativeNodeReference(root) : null;
181
+ if (root != null && rootNativeNodeReference == null) {
182
+ console.error(
183
+ 'IntersectionObserverManager: could not find shadow node for observation root',
184
+ );
185
+ return false;
186
+ }
187
+
152
188
  // Store the mapping between the instance handle and the target so we can
153
189
  // access it even after the instance handle has been unmounted.
154
190
  setTargetForInstanceHandle(instanceHandle, target);
155
191
 
156
- // Same for the mapping between the target and its shadow node.
157
- targetToShadowNodeMap.set(target, targetNativeNodeReference);
192
+ if (modernNativeIntersectionObserver == null) {
193
+ // Same for the mapping between the target and its shadow node.
194
+ targetToShadowNodeMap.set(target, targetNativeNodeReference);
195
+ }
158
196
 
159
197
  if (!isConnected) {
160
198
  NativeIntersectionObserver.connect(notifyIntersectionObservers);
161
199
  isConnected = true;
162
200
  }
163
201
 
164
- NativeIntersectionObserver.observe({
165
- intersectionObserverId,
166
- targetShadowNode: targetNativeNodeReference,
167
- thresholds: registeredObserver.observer.thresholds,
168
- rootThresholds: registeredObserver.observer.rnRootThresholds,
169
- });
202
+ if (modernNativeIntersectionObserver == null) {
203
+ NativeIntersectionObserver.observe({
204
+ intersectionObserverId,
205
+ rootShadowNode: rootNativeNodeReference,
206
+ targetShadowNode: targetNativeNodeReference,
207
+ thresholds: registeredObserver.observer.thresholds,
208
+ rootThresholds: registeredObserver.observer.rnRootThresholds,
209
+ });
210
+ } else {
211
+ const token = modernNativeIntersectionObserver.observe({
212
+ intersectionObserverId,
213
+ rootShadowNode: rootNativeNodeReference,
214
+ targetShadowNode: targetNativeNodeReference,
215
+ thresholds: registeredObserver.observer.thresholds,
216
+ rootThresholds: registeredObserver.observer.rnRootThresholds,
217
+ });
218
+ targetToTokenMap.set(target, token);
219
+ }
170
220
 
171
221
  return true;
172
222
  }
@@ -190,18 +240,33 @@ export function unobserve(
190
240
  return;
191
241
  }
192
242
 
193
- const targetNativeNodeReference = targetToShadowNodeMap.get(target);
194
- if (targetNativeNodeReference == null) {
195
- console.error(
196
- 'IntersectionObserverManager: could not find registration data for target',
243
+ if (modernNativeIntersectionObserver == null) {
244
+ const targetNativeNodeReference = targetToShadowNodeMap.get(target);
245
+ if (targetNativeNodeReference == null) {
246
+ console.error(
247
+ 'IntersectionObserverManager: could not find registration data for target',
248
+ );
249
+ return;
250
+ }
251
+
252
+ NativeIntersectionObserver.unobserve(
253
+ intersectionObserverId,
254
+ targetNativeNodeReference,
197
255
  );
198
- return;
199
- }
256
+ } else {
257
+ const targetToken = targetToTokenMap.get(target);
258
+ if (targetToken == null) {
259
+ console.error(
260
+ 'IntersectionObserverManager: could not find registration data for target',
261
+ );
262
+ return;
263
+ }
200
264
 
201
- NativeIntersectionObserver.unobserve(
202
- intersectionObserverId,
203
- targetNativeNodeReference,
204
- );
265
+ modernNativeIntersectionObserver.unobserve(
266
+ intersectionObserverId,
267
+ targetToken,
268
+ );
269
+ }
205
270
  }
206
271
 
207
272
  /**
@@ -25,14 +25,26 @@ export type NativeIntersectionObserverEntry = {
25
25
 
26
26
  export type NativeIntersectionObserverObserveOptions = {
27
27
  intersectionObserverId: number,
28
+ rootShadowNode?: ?mixed,
28
29
  targetShadowNode: mixed,
29
30
  thresholds: $ReadOnlyArray<number>,
30
31
  rootThresholds?: ?$ReadOnlyArray<number>,
31
32
  };
32
33
 
34
+ export opaque type NativeIntersectionObserverToken = mixed;
35
+
33
36
  export interface Spec extends TurboModule {
37
+ // TODO(T223605846): Remove legacy observe method
34
38
  +observe: (options: NativeIntersectionObserverObserveOptions) => void;
39
+ // TODO(T223605846): Remove legacy unobserve method
35
40
  +unobserve: (intersectionObserverId: number, targetShadowNode: mixed) => void;
41
+ +observeV2?: (
42
+ options: NativeIntersectionObserverObserveOptions,
43
+ ) => NativeIntersectionObserverToken;
44
+ +unobserveV2?: (
45
+ intersectionObserverId: number,
46
+ token: NativeIntersectionObserverToken,
47
+ ) => void;
36
48
  +connect: (notifyIntersectionObserversCallback: () => void) => void;
37
49
  +disconnect: () => void;
38
50
  +takeRecords: () => $ReadOnlyArray<NativeIntersectionObserverEntry>;
@@ -14,6 +14,7 @@ import type {MutationObserverId} from './internals/MutationObserverManager';
14
14
  import type MutationRecord from './MutationRecord';
15
15
 
16
16
  import ReactNativeElement from '../dom/nodes/ReactNativeElement';
17
+ import {setPlatformObject} from '../webidl/PlatformObjects';
17
18
  import * as MutationObserverManager from './internals/MutationObserverManager';
18
19
 
19
20
  export type MutationObserverCallback = (
@@ -42,6 +43,7 @@ export interface MutationObserverInit {
42
43
  */
43
44
  export default class MutationObserver {
44
45
  _callback: MutationObserverCallback;
46
+ // TODO: delete in the next version.
45
47
  _observationTargets: Set<ReactNativeElement> = new Set();
46
48
  _mutationObserverId: ?MutationObserverId;
47
49
 
@@ -115,46 +117,11 @@ export default class MutationObserver {
115
117
 
116
118
  const mutationObserverId = this._getOrCreateMutationObserverId();
117
119
 
118
- // As per the spec, if the target is already being observed, we "reset"
119
- // the observation and only use the last options used.
120
- if (this._observationTargets.has(target)) {
121
- MutationObserverManager.unobserve(mutationObserverId, target);
122
- }
123
-
124
- const didStartObserving = MutationObserverManager.observe({
120
+ MutationObserverManager.observe({
125
121
  mutationObserverId,
126
122
  target,
127
123
  subtree: Boolean(options?.subtree),
128
124
  });
129
-
130
- if (didStartObserving) {
131
- this._observationTargets.add(target);
132
- }
133
- }
134
-
135
- _unobserve(target: ReactNativeElement): void {
136
- if (!(target instanceof ReactNativeElement)) {
137
- throw new TypeError(
138
- "Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'ReactNativeElement'.",
139
- );
140
- }
141
-
142
- if (!this._observationTargets.has(target)) {
143
- return;
144
- }
145
-
146
- const mutationObserverId = this._mutationObserverId;
147
- if (mutationObserverId == null) {
148
- return;
149
- }
150
-
151
- MutationObserverManager.unobserve(mutationObserverId, target);
152
- this._observationTargets.delete(target);
153
-
154
- if (this._observationTargets.size === 0) {
155
- MutationObserverManager.unregisterObserver(mutationObserverId);
156
- this._mutationObserverId = null;
157
- }
158
125
  }
159
126
 
160
127
  /**
@@ -162,9 +129,15 @@ export default class MutationObserver {
162
129
  * The observer can be reused by calling its `observe()` method again.
163
130
  */
164
131
  disconnect(): void {
165
- for (const target of this._observationTargets.keys()) {
166
- this._unobserve(target);
132
+ const mutationObserverId = this._mutationObserverId;
133
+ if (mutationObserverId == null) {
134
+ return;
167
135
  }
136
+
137
+ MutationObserverManager.unobserveAll(mutationObserverId);
138
+
139
+ MutationObserverManager.unregisterObserver(mutationObserverId);
140
+ this._mutationObserverId = null;
168
141
  }
169
142
 
170
143
  _getOrCreateMutationObserverId(): MutationObserverId {
@@ -184,3 +157,5 @@ export default class MutationObserver {
184
157
  return this._mutationObserverId;
185
158
  }
186
159
  }
160
+
161
+ setPlatformObject(MutationObserver);
@@ -15,6 +15,7 @@ import type ReadOnlyNode from '../dom/nodes/ReadOnlyNode';
15
15
  import type {NativeMutationRecord} from './specs/NativeMutationObserver';
16
16
 
17
17
  import NodeList, {createNodeList} from '../dom/oldstylecollections/NodeList';
18
+ import {setPlatformObject} from '../webidl/PlatformObjects';
18
19
 
19
20
  export type MutationType = 'attributes' | 'characterData' | 'childList';
20
21
 
@@ -75,6 +76,8 @@ export default class MutationRecord {
75
76
  }
76
77
  }
77
78
 
79
+ setPlatformObject(MutationRecord);
80
+
78
81
  export function createMutationRecord(
79
82
  entry: NativeMutationRecord,
80
83
  ): MutationRecord {