@office-iss/react-native-win32 0.0.0-canary.296 → 0.0.0-canary.298

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 (421) hide show
  1. package/.flowconfig +6 -2
  2. package/CHANGELOG.json +49 -1
  3. package/CHANGELOG.md +23 -4
  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 +1 -1
  11. package/IntegrationTests/LayoutEventsTest.js +1 -1
  12. package/IntegrationTests/PromiseTest.js +1 -1
  13. package/IntegrationTests/SimpleSnapshotTest.js +1 -1
  14. package/IntegrationTests/SyncMethodTest.js +1 -1
  15. package/IntegrationTests/TimersTest.js +1 -1
  16. package/IntegrationTests/WebSocketTest.js +1 -1
  17. package/Libraries/Alert/Alert.js +1 -1
  18. package/Libraries/Alert/Alert.win32.js +1 -1
  19. package/Libraries/Alert/RCTAlertManager.ios.js +1 -1
  20. package/Libraries/Alert/RCTAlertManager.js.flow +1 -1
  21. package/Libraries/Animated/Animated.js +0 -1
  22. package/Libraries/Animated/Animated.js.flow +0 -1
  23. package/Libraries/Animated/AnimatedExports.js +2 -3
  24. package/Libraries/Animated/AnimatedExports.js.flow +1 -2
  25. package/Libraries/Animated/Easing.js +1 -1
  26. package/Libraries/Animated/SpringConfig.js +1 -1
  27. package/Libraries/Animated/animations/Animation.js +5 -2
  28. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  29. package/Libraries/Animated/components/AnimatedScrollView.js +53 -52
  30. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  31. package/Libraries/Animated/createAnimatedComponent.js +37 -33
  32. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  33. package/Libraries/Animated/nodes/AnimatedProps.js +37 -5
  34. package/Libraries/Animated/nodes/AnimatedStyle.js +35 -34
  35. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  36. package/Libraries/AppState/AppState.js +6 -1
  37. package/Libraries/BatchedBridge/BatchedBridge.js +1 -1
  38. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  39. package/Libraries/Blob/BlobManager.js +4 -0
  40. package/Libraries/Blob/URL.js +1 -1
  41. package/Libraries/Blob/URLSearchParams.js +5 -1
  42. package/Libraries/Blob/URLSearchParams.js.flow +2 -1
  43. package/Libraries/BugReporting/BugReporting.js +1 -1
  44. package/Libraries/BugReporting/dumpReactTree.js +1 -1
  45. package/Libraries/BugReporting/getReactData.js +1 -1
  46. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +1 -1
  47. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +1 -1
  48. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +1 -1
  49. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +1 -1
  50. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +20 -19
  51. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +1 -1
  52. package/Libraries/Components/Button.js +3 -3
  53. package/Libraries/Components/Button.win32.js +3 -3
  54. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  55. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +1 -1
  56. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -4
  57. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +1 -1
  58. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +1 -1
  59. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +1 -1
  60. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +1 -1
  61. package/Libraries/Components/Keyboard/Keyboard.js +1 -1
  62. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +3 -2
  63. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  64. package/Libraries/Components/Pressable/Pressable.js +9 -6
  65. package/Libraries/Components/Pressable/Pressable.win32.js +9 -6
  66. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  67. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +14 -2
  68. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +1 -1
  69. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  70. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +1 -1
  71. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +1 -1
  72. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  73. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -1
  74. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  75. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  76. package/Libraries/Components/ScrollView/ScrollView.d.ts +23 -5
  77. package/Libraries/Components/ScrollView/ScrollView.js +22 -14
  78. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  79. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  80. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  81. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  82. package/Libraries/Components/ScrollView/processDecelerationRate.js +1 -1
  83. package/Libraries/Components/Sound/SoundManager.js +1 -1
  84. package/Libraries/Components/StaticRenderer.js +1 -1
  85. package/Libraries/Components/StatusBar/StatusBar.js +1 -1
  86. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +1 -1
  87. package/Libraries/Components/Switch/Switch.js +8 -2
  88. package/Libraries/Components/Switch/SwitchNativeComponent.js +1 -1
  89. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -17
  90. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -1
  91. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -1
  92. package/Libraries/Components/TextInput/TextInput.d.ts +9 -3
  93. package/Libraries/Components/TextInput/TextInput.flow.js +12 -14
  94. package/Libraries/Components/TextInput/TextInput.flow.win32.js +12 -14
  95. package/Libraries/Components/TextInput/TextInput.js +40 -35
  96. package/Libraries/Components/TextInput/TextInput.win32.js +41 -35
  97. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  98. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  99. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  100. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +1 -1
  101. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  102. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +1 -1
  103. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +1 -1
  104. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +1 -1
  105. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  106. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  107. package/Libraries/Components/Touchable/Position.js +1 -1
  108. package/Libraries/Components/Touchable/Touchable.js +10 -0
  109. package/Libraries/Components/Touchable/Touchable.win32.js +10 -0
  110. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  111. package/Libraries/Components/Touchable/TouchableHighlight.js +9 -4
  112. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  113. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +2 -0
  114. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -3
  115. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +3 -3
  116. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -1
  117. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
  118. package/Libraries/Components/View/View.js +112 -26
  119. package/Libraries/Components/View/View.win32.js +1 -1
  120. package/Libraries/Components/View/ViewAccessibility.js +1 -1
  121. package/Libraries/Components/View/ViewAccessibility.win32.js +1 -1
  122. package/Libraries/Components/View/ViewPropTypes.d.ts +18 -2
  123. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  124. package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
  125. package/Libraries/Core/Devtools/getDevServer.js +1 -1
  126. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  127. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +49 -7
  128. package/Libraries/Core/Devtools/openFileInEditor.js +1 -1
  129. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -1
  130. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  131. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  132. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  133. package/Libraries/Core/ExceptionsManager.js +1 -1
  134. package/Libraries/Core/InitializeCore.js +2 -23
  135. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  136. package/Libraries/Core/ReactNativeVersion.js +3 -2
  137. package/Libraries/Core/Timers/JSTimers.js +1 -1
  138. package/Libraries/Core/Timers/immediateShim.js +1 -1
  139. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  140. package/Libraries/Core/setUpDeveloperTools.js +13 -11
  141. package/Libraries/Debugging/DebuggingOverlay.js +12 -14
  142. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +1 -1
  143. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  144. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  145. package/Libraries/EventEmitter/NativeEventEmitter.js +1 -1
  146. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  147. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  148. package/Libraries/Image/AssetRegistry.js +4 -10
  149. package/Libraries/Image/AssetSourceResolver.js +17 -4
  150. package/Libraries/Image/Image.android.js +112 -106
  151. package/Libraries/Image/Image.ios.js +10 -2
  152. package/Libraries/Image/Image.win32.js +11 -3
  153. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  154. package/Libraries/Image/ImageInjection.js +1 -1
  155. package/Libraries/Image/RelativeImageStub.js +2 -1
  156. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  157. package/Libraries/Image/resolveAssetSource.js +1 -1
  158. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  159. package/Libraries/Interaction/InteractionManager.js +62 -53
  160. package/Libraries/Interaction/TaskQueue.js +8 -9
  161. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  162. package/Libraries/Linking/Linking.js +1 -1
  163. package/Libraries/Lists/FlatList.d.ts +9 -5
  164. package/Libraries/Lists/FlatList.js +1 -1
  165. package/Libraries/Lists/SectionListModern.js +9 -3
  166. package/Libraries/LogBox/Data/parseLogBoxLog.js +2 -0
  167. package/Libraries/LogBox/LogBox.js +2 -0
  168. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  169. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  170. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +2 -1
  171. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  172. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +3 -2
  173. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  174. package/Libraries/Modal/Modal.js +5 -1
  175. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +1 -1
  176. package/Libraries/NativeComponent/BaseViewConfig.android.js +17 -5
  177. package/Libraries/NativeComponent/BaseViewConfig.ios.js +4 -4
  178. package/Libraries/NativeComponent/BaseViewConfig.js.flow +1 -1
  179. package/Libraries/NativeComponent/BaseViewConfig.win32.js +4 -4
  180. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -1
  181. package/Libraries/NativeComponent/ViewConfigIgnore.js +3 -3
  182. package/Libraries/Network/FormData.js +1 -1
  183. package/Libraries/Network/RCTNetworking.android.js +2 -2
  184. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  185. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  186. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  187. package/Libraries/Network/XMLHttpRequest.js +3 -3
  188. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +1 -1
  189. package/Libraries/Pressability/Pressability.js +1 -1
  190. package/Libraries/Pressability/Pressability.win32.js +1 -1
  191. package/Libraries/Promise.js +1 -1
  192. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +3 -2
  193. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  194. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  195. package/Libraries/ReactNative/AppContainer.js +1 -1
  196. package/Libraries/ReactNative/AppRegistryImpl.js +2 -3
  197. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
  198. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  199. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +1 -1
  200. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +1 -1
  201. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -1
  202. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  203. package/Libraries/ReactNative/RendererProxy.js +1 -1
  204. package/Libraries/ReactNative/RootTag.js +2 -2
  205. package/Libraries/ReactNative/renderApplication.js +1 -1
  206. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  207. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -1
  208. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +1 -1
  209. package/Libraries/Renderer/shims/ReactNativeTypes.js +21 -25
  210. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +270 -0
  211. package/Libraries/Settings/Settings.ios.js +1 -1
  212. package/Libraries/Settings/Settings.js +1 -1
  213. package/Libraries/Settings/SettingsFallback.js +1 -1
  214. package/Libraries/Share/Share.js +1 -1
  215. package/Libraries/StyleSheet/EdgeInsetsPropType.js +1 -1
  216. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  217. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  218. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +1 -1
  219. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  220. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +1 -1
  221. package/Libraries/StyleSheet/PointPropType.js +1 -1
  222. package/Libraries/StyleSheet/Rect.js +1 -1
  223. package/Libraries/StyleSheet/StyleSheetExports.js.flow +3 -1
  224. package/Libraries/StyleSheet/StyleSheetTypes.js +4 -3
  225. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  226. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  227. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  228. package/Libraries/StyleSheet/processBackgroundImage.js +1 -1
  229. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  230. package/Libraries/StyleSheet/processColor.js +1 -1
  231. package/Libraries/StyleSheet/processColorArray.js +1 -1
  232. package/Libraries/StyleSheet/processFilter.js +1 -2
  233. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  234. package/Libraries/StyleSheet/processTransform.js +1 -1
  235. package/Libraries/StyleSheet/processTransformOrigin.js +1 -1
  236. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  237. package/Libraries/Text/Text.d.ts +7 -0
  238. package/Libraries/Text/Text.js +256 -245
  239. package/Libraries/Text/Text.win32.js +294 -285
  240. package/Libraries/Text/TextAncestor.js +3 -2
  241. package/Libraries/Text/TextNativeComponent.js +4 -0
  242. package/Libraries/Text/TextNativeComponent.win32.js +4 -0
  243. package/Libraries/Text/TextProps.js +2 -34
  244. package/Libraries/Text/TextProps.win32.js +2 -33
  245. package/Libraries/Types/CodegenTypes.js +1 -1
  246. package/Libraries/Types/CodegenTypesNamespace.js +1 -1
  247. package/Libraries/Types/CoreEventTypes.d.ts +4 -0
  248. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  249. package/Libraries/Utilities/Appearance.js +1 -1
  250. package/Libraries/Utilities/BackHandler.js.flow +1 -1
  251. package/Libraries/Utilities/DevLoadingView.js +1 -1
  252. package/Libraries/Utilities/DeviceInfo.js +1 -1
  253. package/Libraries/Utilities/Dimensions.js +1 -1
  254. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  255. package/Libraries/Utilities/HMRClient.js +1 -1
  256. package/Libraries/Utilities/HMRClientProdShim.js +1 -1
  257. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  258. package/Libraries/Utilities/PixelRatio.js +1 -1
  259. package/Libraries/Utilities/Platform.android.js +1 -1
  260. package/Libraries/Utilities/Platform.ios.js +1 -1
  261. package/Libraries/Utilities/Platform.js +1 -1
  262. package/Libraries/Utilities/Platform.win32.js +1 -1
  263. package/Libraries/Utilities/PlatformTypes.js +1 -1
  264. package/Libraries/Utilities/RCTLog.js +1 -1
  265. package/Libraries/Utilities/SceneTracker.js +1 -1
  266. package/Libraries/Utilities/binaryToBase64.js +1 -1
  267. package/Libraries/Utilities/codegenNativeCommands.js +1 -1
  268. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  269. package/Libraries/Utilities/createPerformanceLogger.js +27 -20
  270. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
  271. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  272. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  273. package/Libraries/Utilities/differ/insetsDiffer.js +1 -1
  274. package/Libraries/Utilities/differ/matricesDiffer.js +1 -1
  275. package/Libraries/Utilities/differ/pointsDiffer.js +1 -1
  276. package/Libraries/Utilities/logError.js +1 -1
  277. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  278. package/Libraries/Utilities/stringifySafe.js +1 -1
  279. package/Libraries/Utilities/stringifyViewConfig.js +1 -1
  280. package/Libraries/Utilities/useColorScheme.js +1 -1
  281. package/Libraries/Utilities/useWindowDimensions.js +1 -1
  282. package/Libraries/Utilities/warnOnce.js +1 -1
  283. package/Libraries/Vibration/Vibration.js +1 -2
  284. package/Libraries/WebSocket/WebSocket.js +1 -1
  285. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  286. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  287. package/Libraries/vendor/core/ErrorUtils.js +29 -5
  288. package/index.js +1 -2
  289. package/index.win32.js +3 -1
  290. package/interface.js +1 -1
  291. package/jest/MockNativeMethods.js +9 -3
  292. package/jest/RefreshControlMock.js +32 -0
  293. package/jest/assetFileTransformer.js +1 -0
  294. package/jest/local-setup.js +4 -3
  295. package/jest/mock.js +39 -0
  296. package/jest/mockComponent.js +47 -17
  297. package/jest/mockNativeComponent.js +26 -15
  298. package/jest/mocks/AccessibilityInfo.js +62 -0
  299. package/jest/mocks/ActivityIndicator.js +23 -0
  300. package/jest/mocks/AppState.js +19 -0
  301. package/{flow/Stringish.js → jest/mocks/Clipboard.js} +6 -4
  302. package/jest/mocks/Image.js +23 -0
  303. package/jest/mocks/InitializeCore.js +9 -0
  304. package/jest/mocks/Linking.js +28 -0
  305. package/jest/mocks/Modal.js +33 -0
  306. package/jest/mocks/NativeComponentRegistry.js +30 -0
  307. package/jest/mocks/NativeModules.js +239 -0
  308. package/jest/mocks/RefreshControl.js +31 -0
  309. package/jest/mocks/RendererProxy.js +45 -0
  310. package/jest/mocks/ScrollView.js +58 -0
  311. package/jest/mocks/Text.js +27 -0
  312. package/jest/mocks/TextInput.js +32 -0
  313. package/jest/mocks/UIManager.js +60 -0
  314. package/jest/mocks/Vibration.js +16 -0
  315. package/jest/mocks/View.js +27 -0
  316. package/jest/mocks/ViewNativeComponent.js +23 -0
  317. package/jest/mocks/requireNativeComponent.js +22 -0
  318. package/{Libraries/Utilities/infoLog.js → jest/mocks/useColorScheme.js} +7 -9
  319. package/jest/react-native-env.js +1 -0
  320. package/jest/renderer.js +1 -2
  321. package/jest/resolver.js +32 -0
  322. package/jest/setup.js +63 -445
  323. package/overrides.json +45 -38
  324. package/package.json +14 -14
  325. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  326. package/src/private/animated/NativeAnimatedHelper.win32.js +8 -1
  327. package/src/private/animated/createAnimatedPropsHook.js +11 -4
  328. package/src/private/animated/createAnimatedPropsMemoHook.js +0 -1
  329. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  330. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  331. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  332. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +1 -1
  333. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +1 -1
  334. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +1 -1
  335. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  336. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +1 -1
  337. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +1 -1
  338. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -1
  339. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +1 -1
  340. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +1 -1
  341. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  342. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +1 -1
  343. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +1 -1
  344. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  345. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +1 -1
  346. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  347. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  348. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  349. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.win32.js +8 -9
  350. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  351. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  352. package/src/private/featureflags/ReactNativeFeatureFlags.js +65 -5
  353. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -0
  354. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +10 -2
  355. package/src/private/renderer/errorhandling/ErrorHandlers.js +1 -1
  356. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  357. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
  358. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +1 -1
  359. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  360. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +1 -1
  361. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
  362. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +1 -1
  363. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
  364. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
  365. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +1 -1
  366. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  367. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  368. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +1 -1
  369. package/src/private/styles/composeStyles.js +12 -5
  370. package/src/private/types/HostInstance.js +1 -1
  371. package/src/private/webapis/dom/events/Event.js +3 -0
  372. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  373. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +1 -1
  374. package/src/private/webapis/dom/nodes/ReactNativeElement.js +7 -24
  375. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +1 -1
  376. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  377. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +4 -2
  378. package/src/private/webapis/dom/nodes/ReadOnlyText.js +1 -1
  379. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +1 -1
  380. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  381. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  382. package/src/private/webapis/dom/nodes/internals/Traversal.js +1 -1
  383. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  384. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -1
  385. package/src/private/webapis/dom/oldstylecollections/NodeList.js +4 -1
  386. package/src/private/webapis/errors/DOMException.js +166 -0
  387. package/src/private/webapis/geometry/DOMRect.js +5 -0
  388. package/src/private/webapis/geometry/DOMRectList.js +4 -1
  389. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  390. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +3 -0
  391. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  392. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +70 -18
  393. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +11 -0
  394. package/src/private/webapis/mutationobserver/MutationObserver.js +13 -38
  395. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  396. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +7 -29
  397. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +1 -4
  398. package/src/private/webapis/performance/EventTiming.js +1 -1
  399. package/src/private/webapis/performance/LongTasks.js +1 -1
  400. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  401. package/src/private/webapis/performance/Performance.js +20 -9
  402. package/src/private/webapis/performance/PerformanceEntry.js +5 -1
  403. package/src/private/webapis/performance/PerformanceObserver.js +1 -1
  404. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  405. package/src/private/webapis/performance/UserTiming.js +1 -1
  406. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -1
  407. package/src/private/webapis/performance/internals/Utilities.js +1 -1
  408. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  409. package/src/private/webapis/utils/ArrayLikeUtils.js +1 -1
  410. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  411. package/src/types/globals.d.ts +42 -0
  412. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +18 -2
  413. package/src-win/Libraries/Text/Text.d.ts +7 -0
  414. package/types/index.d.ts +1 -1
  415. package/types/modules/Devtools.d.ts +23 -9
  416. package/Libraries/Interaction/JSEventLoopWatchdog.js +0 -88
  417. package/flow/HermesInternalType.js +0 -114
  418. package/flow/console.js +0 -49
  419. package/flow/global.js +0 -88
  420. package/jest/mockModal.js +0 -32
  421. package/jest/mockScrollView.js +0 -35
@@ -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.
@@ -153,20 +178,32 @@ export function observe({
153
178
  // access it even after the instance handle has been unmounted.
154
179
  setTargetForInstanceHandle(instanceHandle, target);
155
180
 
156
- // Same for the mapping between the target and its shadow node.
157
- targetToShadowNodeMap.set(target, targetNativeNodeReference);
181
+ if (modernNativeIntersectionObserver == null) {
182
+ // Same for the mapping between the target and its shadow node.
183
+ targetToShadowNodeMap.set(target, targetNativeNodeReference);
184
+ }
158
185
 
159
186
  if (!isConnected) {
160
187
  NativeIntersectionObserver.connect(notifyIntersectionObservers);
161
188
  isConnected = true;
162
189
  }
163
190
 
164
- NativeIntersectionObserver.observe({
165
- intersectionObserverId,
166
- targetShadowNode: targetNativeNodeReference,
167
- thresholds: registeredObserver.observer.thresholds,
168
- rootThresholds: registeredObserver.observer.rnRootThresholds,
169
- });
191
+ if (modernNativeIntersectionObserver == null) {
192
+ NativeIntersectionObserver.observe({
193
+ intersectionObserverId,
194
+ targetShadowNode: targetNativeNodeReference,
195
+ thresholds: registeredObserver.observer.thresholds,
196
+ rootThresholds: registeredObserver.observer.rnRootThresholds,
197
+ });
198
+ } else {
199
+ const token = modernNativeIntersectionObserver.observe({
200
+ intersectionObserverId,
201
+ targetShadowNode: targetNativeNodeReference,
202
+ thresholds: registeredObserver.observer.thresholds,
203
+ rootThresholds: registeredObserver.observer.rnRootThresholds,
204
+ });
205
+ targetToTokenMap.set(target, token);
206
+ }
170
207
 
171
208
  return true;
172
209
  }
@@ -190,18 +227,33 @@ export function unobserve(
190
227
  return;
191
228
  }
192
229
 
193
- const targetNativeNodeReference = targetToShadowNodeMap.get(target);
194
- if (targetNativeNodeReference == null) {
195
- console.error(
196
- 'IntersectionObserverManager: could not find registration data for target',
230
+ if (modernNativeIntersectionObserver == null) {
231
+ const targetNativeNodeReference = targetToShadowNodeMap.get(target);
232
+ if (targetNativeNodeReference == null) {
233
+ console.error(
234
+ 'IntersectionObserverManager: could not find registration data for target',
235
+ );
236
+ return;
237
+ }
238
+
239
+ NativeIntersectionObserver.unobserve(
240
+ intersectionObserverId,
241
+ targetNativeNodeReference,
197
242
  );
198
- return;
199
- }
243
+ } else {
244
+ const targetToken = targetToTokenMap.get(target);
245
+ if (targetToken == null) {
246
+ console.error(
247
+ 'IntersectionObserverManager: could not find registration data for target',
248
+ );
249
+ return;
250
+ }
200
251
 
201
- NativeIntersectionObserver.unobserve(
202
- intersectionObserverId,
203
- targetNativeNodeReference,
204
- );
252
+ modernNativeIntersectionObserver.unobserve(
253
+ intersectionObserverId,
254
+ targetToken,
255
+ );
256
+ }
205
257
  }
206
258
 
207
259
  /**
@@ -30,9 +30,20 @@ export type NativeIntersectionObserverObserveOptions = {
30
30
  rootThresholds?: ?$ReadOnlyArray<number>,
31
31
  };
32
32
 
33
+ export type NativeIntersectionObserverToken = mixed;
34
+
33
35
  export interface Spec extends TurboModule {
36
+ // TODO(T223605846): Remove legacy observe method
34
37
  +observe: (options: NativeIntersectionObserverObserveOptions) => void;
38
+ // TODO(T223605846): Remove legacy unobserve method
35
39
  +unobserve: (intersectionObserverId: number, targetShadowNode: mixed) => void;
40
+ +observeV2?: (
41
+ options: NativeIntersectionObserverObserveOptions,
42
+ ) => NativeIntersectionObserverToken;
43
+ +unobserveV2?: (
44
+ intersectionObserverId: number,
45
+ token: NativeIntersectionObserverToken,
46
+ ) => void;
36
47
  +connect: (notifyIntersectionObserversCallback: () => void) => void;
37
48
  +disconnect: () => void;
38
49
  +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 {
@@ -41,13 +41,6 @@ const registeredMutationObservers: Map<
41
41
  $ReadOnly<{observer: MutationObserver, callback: MutationObserverCallback}>,
42
42
  > = new Map();
43
43
 
44
- // The mapping between ReactNativeElement and their corresponding shadow node
45
- // needs to be kept here because React removes the link when unmounting.
46
- const targetToShadowNodeMap: WeakMap<
47
- ReactNativeElement,
48
- ReturnType<typeof getNativeNodeReference>,
49
- > = new WeakMap();
50
-
51
44
  /**
52
45
  * Registers the given mutation observer and returns a unique ID for it,
53
46
  * which is required to start observing targets.
@@ -90,10 +83,10 @@ export function observe({
90
83
  mutationObserverId: MutationObserverId,
91
84
  target: ReactNativeElement,
92
85
  subtree: boolean,
93
- }): boolean {
86
+ }): void {
94
87
  if (NativeMutationObserver == null) {
95
88
  warnNoNativeMutationObserver();
96
- return false;
89
+ return;
97
90
  }
98
91
 
99
92
  const registeredObserver =
@@ -102,17 +95,15 @@ export function observe({
102
95
  console.error(
103
96
  `MutationObserverManager: could not start observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
104
97
  );
105
- return false;
98
+ return;
106
99
  }
107
100
 
108
101
  const targetShadowNode = getNativeNodeReference(target);
109
102
  if (targetShadowNode == null) {
110
103
  // The target is disconnected. We can't observe it anymore.
111
- return false;
104
+ return;
112
105
  }
113
106
 
114
- targetToShadowNodeMap.set(target, targetShadowNode);
115
-
116
107
  if (!isConnected) {
117
108
  NativeMutationObserver.connect(
118
109
  notifyMutationObservers,
@@ -131,14 +122,9 @@ export function observe({
131
122
  targetShadowNode,
132
123
  subtree,
133
124
  });
134
-
135
- return true;
136
125
  }
137
126
 
138
- export function unobserve(
139
- mutationObserverId: number,
140
- target: ReactNativeElement,
141
- ): void {
127
+ export function unobserveAll(mutationObserverId: number): void {
142
128
  if (NativeMutationObserver == null) {
143
129
  warnNoNativeMutationObserver();
144
130
  return;
@@ -148,20 +134,12 @@ export function unobserve(
148
134
  registeredMutationObservers.get(mutationObserverId);
149
135
  if (registeredObserver == null) {
150
136
  console.error(
151
- `MutationObserverManager: could not stop observing target because MutationObserver with ID ${mutationObserverId} was not registered.`,
152
- );
153
- return;
154
- }
155
-
156
- const targetShadowNode = targetToShadowNodeMap.get(target);
157
- if (targetShadowNode == null) {
158
- console.error(
159
- 'MutationObserverManager: could not find registration data for target',
137
+ `MutationObserverManager: could not disconnect MutationObserver with ID ${mutationObserverId} because it was not registered.`,
160
138
  );
161
139
  return;
162
140
  }
163
141
 
164
- NativeMutationObserver.unobserve(mutationObserverId, targetShadowNode);
142
+ NativeMutationObserver.unobserveAll(mutationObserverId);
165
143
  }
166
144
 
167
145
  /**
@@ -36,10 +36,7 @@ export type NativeMutationObserverObserveOptions = {
36
36
 
37
37
  export interface Spec extends TurboModule {
38
38
  +observe: (options: NativeMutationObserverObserveOptions) => void;
39
- +unobserve: (
40
- mutationObserverId: number,
41
- targetShadowNode: ShadowNode,
42
- ) => void;
39
+ +unobserveAll: (mutationObserverId: number) => void;
43
40
  +connect: (
44
41
  notifyMutationObservers: () => void,
45
42
  // We need this to retain the public instance before React removes the
@@ -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
@@ -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
@@ -6,11 +6,12 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  // flowlint unsafe-getters-setters:off
13
12
 
13
+ import {setPlatformObject} from '../webidl/PlatformObjects';
14
+
14
15
  type MemoryInfoLike = {
15
16
  jsHeapSizeLimit: ?number,
16
17
  totalJSHeapSize: ?number,
@@ -52,3 +53,5 @@ export default class MemoryInfo {
52
53
  return this.#usedJSHeapSize;
53
54
  }
54
55
  }
56
+
57
+ setPlatformObject(MemoryInfo);
@@ -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
@@ -17,6 +17,8 @@ import type {
17
17
  } from './PerformanceEntry';
18
18
  import type {DetailType, PerformanceMarkOptions} from './UserTiming';
19
19
 
20
+ import DOMException from '../errors/DOMException';
21
+ import {setPlatformObject} from '../webidl/PlatformObjects';
20
22
  import {EventCounts} from './EventTiming';
21
23
  import {
22
24
  performanceEntryTypeToRaw,
@@ -191,15 +193,22 @@ export default class Performance {
191
193
  let computedDuration = duration;
192
194
 
193
195
  if (NativePerformance?.measureWithResult) {
194
- [computedStartTime, computedDuration] =
195
- NativePerformance.measureWithResult(
196
- measureName,
197
- startTime,
198
- endTime,
199
- duration,
200
- startMarkName,
201
- endMarkName,
196
+ try {
197
+ [computedStartTime, computedDuration] =
198
+ NativePerformance.measureWithResult(
199
+ measureName,
200
+ startTime,
201
+ endTime,
202
+ duration,
203
+ startMarkName,
204
+ endMarkName,
205
+ );
206
+ } catch (error) {
207
+ throw new DOMException(
208
+ "Failed to execute 'measure' on 'Performance': " + error.message,
209
+ 'SyntaxError',
202
210
  );
211
+ }
203
212
  } else {
204
213
  warnNoNativePerformance();
205
214
  }
@@ -283,3 +292,5 @@ export default class Performance {
283
292
  ).map(rawToPerformanceEntry);
284
293
  }
285
294
  }
295
+
296
+ setPlatformObject(Performance);
@@ -4,12 +4,14 @@
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
12
12
 
13
+ import {setPlatformObject} from '../webidl/PlatformObjects';
14
+
13
15
  export type DOMHighResTimeStamp = number;
14
16
  export type PerformanceEntryType =
15
17
  | 'mark'
@@ -70,4 +72,6 @@ export class PerformanceEntry {
70
72
  }
71
73
  }
72
74
 
75
+ setPlatformObject(PerformanceEntry);
76
+
73
77
  export type PerformanceEntryList = $ReadOnlyArray<PerformanceEntry>;
@@ -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
  import type {
@@ -6,11 +6,12 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  // flowlint unsafe-getters-setters:off
13
12
 
13
+ import {setPlatformObject} from '../webidl/PlatformObjects';
14
+
14
15
  type ReactNativeStartupTimingLike = {
15
16
  startTime: ?number,
16
17
  endTime: ?number,
@@ -89,3 +90,5 @@ export default class ReactNativeStartupTiming {
89
90
  return this.#executeJavaScriptBundleEntryPointEnd;
90
91
  }
91
92
  }
93
+
94
+ setPlatformObject(ReactNativeStartupTiming);
@@ -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
@@ -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
  import type {PerformanceEntryType} from '../PerformanceEntry';
@@ -77,6 +77,8 @@ export function rawToPerformanceEntryType(
77
77
  return 'event';
78
78
  case RawPerformanceEntryTypeValues.LONGTASK:
79
79
  return 'longtask';
80
+ case RawPerformanceEntryTypeValues.RESOURCE:
81
+ return 'resource';
80
82
  default:
81
83
  throw new TypeError(
82
84
  `rawToPerformanceEntryType: unexpected performance entry type received: ${type}`,
@@ -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
  import warnOnce from '../../../../../Libraries/Utilities/warnOnce';