@office-iss/react-native-win32 0.84.0-preview.2 → 0.85.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 (310) hide show
  1. package/.eslintignore +1 -0
  2. package/.flowconfig +1 -5
  3. package/CHANGELOG.json +79 -13
  4. package/CHANGELOG.md +14 -8
  5. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -1
  6. package/IntegrationTests/LayoutEventsTest.js +1 -1
  7. package/IntegrationTests/TimersTest.js +1 -1
  8. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
  9. package/Libraries/Animated/Animated.d.ts +8 -1
  10. package/Libraries/Animated/AnimatedEvent.js +4 -4
  11. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  12. package/Libraries/Animated/animations/Animation.js +3 -3
  13. package/Libraries/Animated/animations/DecayAnimation.js +4 -4
  14. package/Libraries/Animated/animations/SpringAnimation.js +5 -5
  15. package/Libraries/Animated/animations/TimingAnimation.js +5 -5
  16. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  17. package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
  19. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  20. package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
  22. package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
  24. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  26. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  27. package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
  28. package/Libraries/Animated/useAnimatedColor.js +25 -0
  29. package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
  30. package/Libraries/Animated/useAnimatedValueXY.js +26 -0
  31. package/Libraries/AppState/AppState.js +1 -1
  32. package/Libraries/BatchedBridge/MessageQueue.js +3 -3
  33. package/Libraries/BatchedBridge/NativeModules.js +12 -10
  34. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -26
  35. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +34 -30
  36. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
  37. package/Libraries/Components/Button.js +2 -2
  38. package/Libraries/Components/Button.win32.js +2 -2
  39. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
  40. package/Libraries/Components/EnterString.win32.js +2 -2
  41. package/Libraries/Components/EnterString.win32.js.map +1 -1
  42. package/Libraries/Components/Keyboard/Keyboard.js +6 -6
  43. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  44. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
  45. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
  46. package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
  47. package/Libraries/Components/Pressable/Pressable.js +3 -3
  48. package/Libraries/Components/Pressable/Pressable.win32.js +3 -3
  49. package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
  50. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  51. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
  52. package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
  53. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
  54. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
  55. package/Libraries/Components/ScrollView/ScrollView.js +19 -9
  56. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
  57. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
  58. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  59. package/Libraries/Components/StaticRenderer.js +1 -1
  60. package/Libraries/Components/StatusBar/StatusBar.js +8 -8
  61. package/Libraries/Components/Switch/Switch.js +3 -3
  62. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
  63. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  64. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
  65. package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
  66. package/Libraries/Components/TextInput/TextInput.flow.win32.js +23 -22
  67. package/Libraries/Components/TextInput/TextInput.js +8 -4
  68. package/Libraries/Components/TextInput/TextInput.win32.js +3 -4
  69. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  70. package/Libraries/Components/Touchable/Touchable.js +2 -2
  71. package/Libraries/Components/Touchable/Touchable.win32.js +2 -2
  72. package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
  73. package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
  74. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
  75. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +7 -7
  76. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
  77. package/Libraries/Components/Touchable/TouchableWin32.js +1 -1
  78. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  79. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
  80. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  81. package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
  82. package/Libraries/Components/View/ViewAccessibility.js +7 -7
  83. package/Libraries/Components/View/ViewAccessibility.win32.js +7 -7
  84. package/Libraries/Components/View/ViewPropTypes.js +14 -14
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +16 -16
  86. package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
  87. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  88. package/Libraries/Core/ExceptionsManager.js +2 -2
  89. package/Libraries/Core/ExtendedError.js +3 -3
  90. package/Libraries/Core/RawEventEmitter.js +1 -1
  91. package/Libraries/Core/ReactNativeVersion.js +2 -2
  92. package/Libraries/Core/Timers/JSTimers.js +3 -2
  93. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  94. package/Libraries/Core/setUpErrorHandling.js +4 -2
  95. package/Libraries/Core/setUpReactDevTools.js +23 -6
  96. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  97. package/Libraries/Debugging/DebuggingOverlay.js +2 -2
  98. package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
  99. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
  100. package/Libraries/Image/AssetSourceResolver.js +1 -1
  101. package/Libraries/Image/Image.android.js +172 -306
  102. package/Libraries/Image/ImageProps.js +9 -11
  103. package/Libraries/Image/ImageSource.js +2 -2
  104. package/Libraries/Image/ImageSourceUtils.js +8 -4
  105. package/Libraries/Image/ImageTypes.flow.js +2 -2
  106. package/Libraries/Image/ImageViewNativeComponent.js +7 -16
  107. package/Libraries/Image/nativeImageSource.js +1 -1
  108. package/Libraries/Interaction/InteractionManager.js +5 -4
  109. package/Libraries/Interaction/PanResponder.js +1 -1
  110. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  111. package/Libraries/Linking/Linking.js +1 -1
  112. package/Libraries/Lists/FlatList.js +3 -3
  113. package/Libraries/Lists/SectionList.js +1 -1
  114. package/Libraries/Lists/SectionListModern.js +2 -2
  115. package/Libraries/LogBox/Data/LogBoxData.js +38 -24
  116. package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
  117. package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
  118. package/Libraries/LogBox/LogBox.js +42 -19
  119. package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
  120. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  121. package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
  122. package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +6 -9
  125. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +1 -1
  129. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
  131. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
  132. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +15 -16
  133. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
  134. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
  135. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +11 -13
  136. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
  137. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +3 -5
  138. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
  139. package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
  140. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  141. package/Libraries/Modal/Modal.js +3 -3
  142. package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
  143. package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
  144. package/Libraries/NativeComponent/BaseViewConfig.win32.js +16 -16
  145. package/Libraries/Network/RCTNetworking.android.js +1 -1
  146. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  147. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  148. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  149. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
  150. package/Libraries/Network/XMLHttpRequest.js +1 -1
  151. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  152. package/Libraries/Pressability/Pressability.js +5 -5
  153. package/Libraries/Pressability/Pressability.win32.js +5 -5
  154. package/Libraries/Pressability/PressabilityDebug.js +1 -1
  155. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  156. package/Libraries/Pressability/usePressability.js +3 -14
  157. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
  158. package/Libraries/ReactNative/AppContainer-dev.js +18 -1
  159. package/Libraries/ReactNative/AppContainer.js +1 -1
  160. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  161. package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
  162. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  163. package/Libraries/ReactNative/RendererImplementation.js +4 -4
  164. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  165. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +3 -2
  166. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -2
  167. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -2
  168. package/Libraries/Renderer/shims/ReactFabric.js +1 -3
  169. package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
  170. package/Libraries/Renderer/shims/ReactNative.js +3 -2
  171. package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
  172. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +1 -3
  173. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
  174. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
  175. package/Libraries/StyleSheet/PointPropType.js +1 -1
  176. package/Libraries/StyleSheet/Rect.js +1 -1
  177. package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
  178. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  179. package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
  180. package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
  181. package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
  182. package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
  183. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
  184. package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
  185. package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
  186. package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
  187. package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
  188. package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
  189. package/Libraries/StyleSheet/processBoxShadow.js +44 -4
  190. package/Libraries/StyleSheet/processColorArray.js +2 -2
  191. package/Libraries/StyleSheet/processFilter.js +2 -2
  192. package/Libraries/Text/Text.js +295 -627
  193. package/Libraries/Text/Text.win32.js +360 -744
  194. package/Libraries/Text/TextNativeComponent.js +14 -7
  195. package/Libraries/Text/TextNativeComponent.win32.js +14 -7
  196. package/Libraries/Text/TextProps.js +4 -4
  197. package/Libraries/Text/TextProps.win32.js +4 -4
  198. package/Libraries/Types/CodegenTypes.js +1 -1
  199. package/Libraries/Types/CoreEventTypes.js +21 -21
  200. package/Libraries/Types/CoreEventTypes.win32.js +22 -21
  201. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  202. package/Libraries/Utilities/Appearance.js +6 -1
  203. package/Libraries/Utilities/Dimensions.js +1 -1
  204. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  205. package/Libraries/Utilities/HMRClient.js +32 -5
  206. package/Libraries/Utilities/IPerformanceLogger.js +4 -4
  207. package/Libraries/Utilities/codegenNativeCommands.js +4 -4
  208. package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
  209. package/Libraries/Utilities/codegenNativeComponent.js +2 -2
  210. package/Libraries/Utilities/logError.js +1 -1
  211. package/Libraries/Utilities/stringifySafe.js +3 -3
  212. package/Libraries/Utilities/useMergeRefs.js +2 -2
  213. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  214. package/Libraries/vendor/emitter/EventEmitter.js +16 -20
  215. package/flow/bom.js.flow +18 -17
  216. package/flow/dom.js.flow +12 -5
  217. package/flow/global.js +1 -1
  218. package/index.js +9 -0
  219. package/index.win32.js +9 -0
  220. package/index.win32.js.flow +8 -1
  221. package/jest/RefreshControlMock.js +2 -2
  222. package/jest/assetFileTransformer.js +8 -3
  223. package/jest/mockComponent.js +3 -4
  224. package/jest/mockNativeComponent.js +1 -1
  225. package/jest/mocks/ActivityIndicator.js +2 -2
  226. package/jest/mocks/Image.js +2 -2
  227. package/jest/mocks/Modal.js +2 -2
  228. package/jest/mocks/RefreshControl.js +3 -3
  229. package/jest/mocks/RendererProxy.js +2 -2
  230. package/jest/mocks/ScrollView.js +5 -5
  231. package/jest/mocks/Text.js +2 -2
  232. package/jest/mocks/TextInput.js +2 -2
  233. package/jest/mocks/View.js +2 -2
  234. package/jest/mocks/ViewNativeComponent.js +1 -1
  235. package/jest/mocks/requireNativeComponent.js +1 -1
  236. package/jest/mocks/useColorScheme.js +1 -1
  237. package/jest/setup.js +68 -31
  238. package/overrides.json +30 -36
  239. package/package.json +20 -17
  240. package/src/private/animated/NativeAnimatedHelper.js +2 -2
  241. package/src/private/animated/NativeAnimatedHelper.win32.js +2 -2
  242. package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
  243. package/src/private/components/virtualview/VirtualView.js +14 -21
  244. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
  245. package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
  246. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
  247. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
  248. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
  249. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  250. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
  251. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
  252. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
  253. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
  254. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  255. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  256. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
  257. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
  258. package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
  259. package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
  260. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -79
  261. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
  262. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -12
  263. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  264. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
  265. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  266. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  267. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  268. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  269. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
  270. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
  271. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
  272. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
  273. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +3 -3
  274. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
  275. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  276. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
  277. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  278. package/src/private/styles/composeStyles.js +1 -1
  279. package/src/private/utilities/toError.js +27 -0
  280. package/src/private/utilities/toExtendedError.js +30 -0
  281. package/src/private/webapis/dom/events/Event.js +1 -1
  282. package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
  283. package/src/private/webapis/dom/events/EventTarget.js +3 -3
  284. package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
  285. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  286. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
  287. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
  288. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  289. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  290. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  291. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
  292. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
  293. package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
  294. package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
  295. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
  296. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
  297. package/src/private/webapis/performance/LongTasks.js +3 -3
  298. package/src/private/webapis/performance/Performance.js +4 -4
  299. package/src/private/webapis/performance/PerformanceEntry.js +1 -1
  300. package/src/private/webapis/performance/PerformanceObserver.js +2 -2
  301. package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
  302. package/src/private/webapis/structuredClone/structuredClone.js +2 -2
  303. package/src/types/globals.d.ts +4 -4
  304. package/src-win/Libraries/Components/EnterString.win32.tsx +2 -2
  305. package/src-win/Libraries/Components/Touchable/TouchableWin32.tsx +14 -14
  306. package/src-win/index.win32.js.flow +8 -1
  307. package/types/index.d.ts +2 -0
  308. package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
  309. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +0 -94
  310. package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
@@ -13,11 +13,12 @@ import type {ProcessedColorValue} from '../StyleSheet/processColor';
13
13
  import type {GestureResponderEvent} from '../Types/CoreEventTypes';
14
14
  import type {TextProps} from './TextProps';
15
15
 
16
+ import {enablePreparedTextLayout} from '../../src/private/featureflags/ReactNativeFeatureFlags';
16
17
  import {createViewConfig} from '../NativeComponent/ViewConfig';
17
18
  import UIManager from '../ReactNative/UIManager';
18
19
  import createReactNativeComponentClass from '../Renderer/shims/createReactNativeComponentClass';
19
20
 
20
- export type NativeTextProps = $ReadOnly<{
21
+ export type NativeTextProps = Readonly<{
21
22
  ...TextProps,
22
23
  isHighlighted?: ?boolean,
23
24
  selectionColor?: ?ProcessedColorValue,
@@ -54,7 +55,7 @@ const textViewConfig = {
54
55
  },
55
56
  },
56
57
  uiViewClassName: 'RCTText',
57
- };
58
+ } as const;
58
59
 
59
60
  const virtualTextViewConfig = {
60
61
  validAttributes: {
@@ -63,7 +64,7 @@ const virtualTextViewConfig = {
63
64
  maxFontSizeMultiplier: true,
64
65
  },
65
66
  uiViewClassName: 'RCTVirtualText',
66
- };
67
+ } as const;
67
68
 
68
69
  /**
69
70
  * `NativeText` is an internal React Native host component, and is exported to
@@ -77,8 +78,6 @@ const virtualTextViewConfig = {
77
78
  // and <View> wrappers so that we no longer have any reason to export these APIs.
78
79
  export const NativeText: HostComponent<NativeTextProps> =
79
80
  (createReactNativeComponentClass('RCTText', () =>
80
- /* $FlowFixMe[incompatible-type] Natural Inference rollout. See
81
- * https://fburl.com/workplace/6291gfvu */
82
81
  createViewConfig(textViewConfig),
83
82
  ): any);
84
83
 
@@ -86,7 +85,15 @@ export const NativeVirtualText: HostComponent<NativeTextProps> =
86
85
  !global.RN$Bridgeless && !UIManager.hasViewManagerConfig('RCTVirtualText')
87
86
  ? NativeText
88
87
  : (createReactNativeComponentClass('RCTVirtualText', () =>
89
- /* $FlowFixMe[incompatible-type] Natural Inference rollout. See
90
- * https://fburl.com/workplace/6291gfvu */
91
88
  createViewConfig(virtualTextViewConfig),
92
89
  ): any);
90
+
91
+ export const NativeSelectableText: HostComponent<NativeTextProps> =
92
+ enablePreparedTextLayout()
93
+ ? (createReactNativeComponentClass('RCTSelectableText', () =>
94
+ createViewConfig({
95
+ ...textViewConfig,
96
+ uiViewClassName: 'RCTSelectableText',
97
+ }),
98
+ ): any)
99
+ : NativeText;
@@ -13,11 +13,12 @@ import type {ProcessedColorValue} from '../StyleSheet/processColor';
13
13
  import type {GestureResponderEvent} from '../Types/CoreEventTypes';
14
14
  import type {TextProps} from './TextProps';
15
15
 
16
+ import {enablePreparedTextLayout} from '../../src/private/featureflags/ReactNativeFeatureFlags';
16
17
  import {createViewConfig} from '../NativeComponent/ViewConfig';
17
18
  import UIManager from '../ReactNative/UIManager';
18
19
  import createReactNativeComponentClass from '../Renderer/shims/createReactNativeComponentClass';
19
20
 
20
- export type NativeTextProps = $ReadOnly<{
21
+ export type NativeTextProps = Readonly<{
21
22
  ...TextProps,
22
23
  isHighlighted?: ?boolean,
23
24
  selectionColor?: ?ProcessedColorValue,
@@ -88,7 +89,7 @@ const textViewConfig = {
88
89
  },
89
90
  },
90
91
  uiViewClassName: 'RCTText',
91
- };
92
+ } as const;
92
93
 
93
94
  const virtualTextViewConfig = {
94
95
  validAttributes: {
@@ -97,7 +98,7 @@ const virtualTextViewConfig = {
97
98
  maxFontSizeMultiplier: true,
98
99
  },
99
100
  uiViewClassName: 'RCTVirtualText',
100
- };
101
+ } as const;
101
102
 
102
103
  /**
103
104
  * `NativeText` is an internal React Native host component, and is exported to
@@ -111,8 +112,6 @@ const virtualTextViewConfig = {
111
112
  // and <View> wrappers so that we no longer have any reason to export these APIs.
112
113
  export const NativeText: HostComponent<NativeTextProps> =
113
114
  (createReactNativeComponentClass('RCTText', () =>
114
- /* $FlowFixMe[incompatible-type] Natural Inference rollout. See
115
- * https://fburl.com/workplace/6291gfvu */
116
115
  createViewConfig(textViewConfig),
117
116
  ): any);
118
117
 
@@ -121,7 +120,15 @@ export const NativeVirtualText: HostComponent<NativeTextProps> =
121
120
  UIManager.getViewManagerConfig('RCTVirtualText') == null
122
121
  ? NativeText
123
122
  : (createReactNativeComponentClass('RCTVirtualText', () =>
124
- /* $FlowFixMe[incompatible-type] Natural Inference rollout. See
125
- * https://fburl.com/workplace/6291gfvu */
126
123
  createViewConfig(virtualTextViewConfig),
127
124
  ): any);
125
+
126
+ export const NativeSelectableText: HostComponent<NativeTextProps> =
127
+ enablePreparedTextLayout()
128
+ ? (createReactNativeComponentClass('RCTSelectableText', () =>
129
+ createViewConfig({
130
+ ...textViewConfig,
131
+ uiViewClassName: 'RCTSelectableText',
132
+ }),
133
+ ): any)
134
+ : NativeText;
@@ -25,14 +25,14 @@ import type {
25
25
 
26
26
  import * as React from 'react';
27
27
 
28
- export type PressRetentionOffset = $ReadOnly<{
28
+ export type PressRetentionOffset = Readonly<{
29
29
  top: number,
30
30
  left: number,
31
31
  bottom: number,
32
32
  right: number,
33
33
  }>;
34
34
 
35
- type TextPointerEventProps = $ReadOnly<{
35
+ type TextPointerEventProps = Readonly<{
36
36
  onPointerEnter?: (event: PointerEvent) => void,
37
37
  onPointerLeave?: (event: PointerEvent) => void,
38
38
  onPointerMove?: (event: PointerEvent) => void,
@@ -121,7 +121,7 @@ export type TextPropsAndroid = {
121
121
  minimumFontScale?: ?number,
122
122
  };
123
123
 
124
- type TextBaseProps = $ReadOnly<{
124
+ type TextBaseProps = Readonly<{
125
125
  onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown,
126
126
 
127
127
  /**
@@ -268,7 +268,7 @@ type TextBaseProps = $ReadOnly<{
268
268
  /**
269
269
  * @see https://reactnative.dev/docs/text#reference
270
270
  */
271
- export type TextProps = $ReadOnly<{
271
+ export type TextProps = Readonly<{
272
272
  ...TextPointerEventProps,
273
273
  ...TextPropsIOS,
274
274
  ...TextPropsAndroid,
@@ -25,14 +25,14 @@ import type {
25
25
 
26
26
  import * as React from 'react';
27
27
 
28
- export type PressRetentionOffset = $ReadOnly<{
28
+ export type PressRetentionOffset = Readonly<{
29
29
  top: number,
30
30
  left: number,
31
31
  bottom: number,
32
32
  right: number,
33
33
  }>;
34
34
 
35
- type TextPointerEventProps = $ReadOnly<{
35
+ type TextPointerEventProps = Readonly<{
36
36
  onPointerEnter?: (event: PointerEvent) => void,
37
37
  onPointerLeave?: (event: PointerEvent) => void,
38
38
  onPointerMove?: (event: PointerEvent) => void,
@@ -121,7 +121,7 @@ export type TextPropsAndroid = {
121
121
  minimumFontScale?: ?number,
122
122
  };
123
123
 
124
- type TextBaseProps = $ReadOnly<{
124
+ type TextBaseProps = Readonly<{
125
125
  onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown,
126
126
  accessibilityControls?: ?Stringish, // Win32
127
127
  accessibilityDescribedBy?: ?Stringish, // Win32
@@ -282,7 +282,7 @@ type TextBaseProps = $ReadOnly<{
282
282
  /**
283
283
  * @see https://reactnative.dev/docs/text#reference
284
284
  */
285
- export type TextProps = $ReadOnly<{
285
+ export type TextProps = Readonly<{
286
286
  ...TextPointerEventProps,
287
287
  ...TextPropsIOS,
288
288
  ...TextPropsAndroid,
@@ -33,7 +33,7 @@ export type Int32 = number;
33
33
  export type UnsafeObject = Object;
34
34
  export type UnsafeMixed = unknown;
35
35
 
36
- type DefaultTypes = number | boolean | string | $ReadOnlyArray<string>;
36
+ type DefaultTypes = number | boolean | string | ReadonlyArray<string>;
37
37
  // Default handling, ignore the unused value
38
38
  // we're only using it for type checking
39
39
  //
@@ -10,12 +10,12 @@
10
10
 
11
11
  import type {HostInstance} from '../../src/private/types/HostInstance';
12
12
 
13
- export type NativeSyntheticEvent<+T> = $ReadOnly<{
13
+ export type NativeSyntheticEvent<+T> = Readonly<{
14
14
  bubbles: ?boolean,
15
15
  cancelable: ?boolean,
16
16
  currentTarget: number | HostInstance,
17
17
  defaultPrevented: ?boolean,
18
- dispatchConfig: $ReadOnly<{
18
+ dispatchConfig: Readonly<{
19
19
  registrationName: string,
20
20
  }>,
21
21
  eventPhase: ?number,
@@ -31,14 +31,14 @@ export type NativeSyntheticEvent<+T> = $ReadOnly<{
31
31
  type: ?string,
32
32
  }>;
33
33
 
34
- export type ResponderSyntheticEvent<T> = $ReadOnly<{
34
+ export type ResponderSyntheticEvent<T> = Readonly<{
35
35
  ...NativeSyntheticEvent<T>,
36
- touchHistory: $ReadOnly<{
36
+ touchHistory: Readonly<{
37
37
  indexOfSingleActiveTouch: number,
38
38
  mostRecentTimeStamp: number,
39
39
  numberActiveTouches: number,
40
- touchBank: $ReadOnlyArray<
41
- $ReadOnly<{
40
+ touchBank: ReadonlyArray<
41
+ Readonly<{
42
42
  touchActive: boolean,
43
43
  startPageX: number,
44
44
  startPageY: number,
@@ -54,14 +54,14 @@ export type ResponderSyntheticEvent<T> = $ReadOnly<{
54
54
  }>,
55
55
  }>;
56
56
 
57
- export type LayoutRectangle = $ReadOnly<{
57
+ export type LayoutRectangle = Readonly<{
58
58
  x: number,
59
59
  y: number,
60
60
  width: number,
61
61
  height: number,
62
62
  }>;
63
63
 
64
- export type TextLayoutLine = $ReadOnly<{
64
+ export type TextLayoutLine = Readonly<{
65
65
  ...LayoutRectangle,
66
66
  ascender: number,
67
67
  capHeight: number,
@@ -71,12 +71,12 @@ export type TextLayoutLine = $ReadOnly<{
71
71
  }>;
72
72
 
73
73
  export type LayoutChangeEvent = NativeSyntheticEvent<
74
- $ReadOnly<{
74
+ Readonly<{
75
75
  layout: LayoutRectangle,
76
76
  }>,
77
77
  >;
78
78
 
79
- type TextLayoutEventData = $ReadOnly<{
79
+ type TextLayoutEventData = Readonly<{
80
80
  lines: Array<TextLayoutLine>,
81
81
  }>;
82
82
 
@@ -220,11 +220,11 @@ export interface NativePointerEvent extends NativeMouseEvent {
220
220
 
221
221
  export type PointerEvent = NativeSyntheticEvent<NativePointerEvent>;
222
222
 
223
- export type NativeTouchEvent = $ReadOnly<{
223
+ export type NativeTouchEvent = Readonly<{
224
224
  /**
225
225
  * Array of all touch events that have changed since the last event
226
226
  */
227
- changedTouches: $ReadOnlyArray<NativeTouchEvent>,
227
+ changedTouches: ReadonlyArray<NativeTouchEvent>,
228
228
  /**
229
229
  * 3D Touch reported force
230
230
  * @platform ios
@@ -261,34 +261,34 @@ export type NativeTouchEvent = $ReadOnly<{
261
261
  /**
262
262
  * Array of all current touches on the screen
263
263
  */
264
- touches: $ReadOnlyArray<NativeTouchEvent>,
264
+ touches: ReadonlyArray<NativeTouchEvent>,
265
265
  }>;
266
266
 
267
267
  export type GestureResponderEvent = ResponderSyntheticEvent<NativeTouchEvent>;
268
268
 
269
- export type NativeScrollRectangle = $ReadOnly<{
269
+ export type NativeScrollRectangle = Readonly<{
270
270
  bottom: number,
271
271
  left: number,
272
272
  right: number,
273
273
  top: number,
274
274
  }>;
275
275
 
276
- export type NativeScrollPoint = $ReadOnly<{
276
+ export type NativeScrollPoint = Readonly<{
277
277
  y: number,
278
278
  x: number,
279
279
  }>;
280
280
 
281
- export type NativeScrollVelocity = $ReadOnly<{
281
+ export type NativeScrollVelocity = Readonly<{
282
282
  y: number,
283
283
  x: number,
284
284
  }>;
285
285
 
286
- export type NativeScrollSize = $ReadOnly<{
286
+ export type NativeScrollSize = Readonly<{
287
287
  height: number,
288
288
  width: number,
289
289
  }>;
290
290
 
291
- export type NativeScrollEvent = $ReadOnly<{
291
+ export type NativeScrollEvent = Readonly<{
292
292
  contentInset: NativeScrollRectangle,
293
293
  contentOffset: NativeScrollPoint,
294
294
  contentSize: NativeScrollSize,
@@ -304,7 +304,7 @@ export type NativeScrollEvent = $ReadOnly<{
304
304
 
305
305
  export type ScrollEvent = NativeSyntheticEvent<NativeScrollEvent>;
306
306
 
307
- export type TargetedEvent = $ReadOnly<{
307
+ export type TargetedEvent = Readonly<{
308
308
  target: number,
309
309
  ...
310
310
  }>;
@@ -314,7 +314,7 @@ export type BlurEvent = NativeSyntheticEvent<TargetedEvent>;
314
314
  export type FocusEvent = NativeSyntheticEvent<TargetedEvent>;
315
315
 
316
316
  export type MouseEvent = NativeSyntheticEvent<
317
- $ReadOnly<{
317
+ Readonly<{
318
318
  clientX: number,
319
319
  clientY: number,
320
320
  pageX: number,
@@ -323,7 +323,7 @@ export type MouseEvent = NativeSyntheticEvent<
323
323
  }>,
324
324
  >;
325
325
 
326
- export type KeyEvent = $ReadOnly<{
326
+ export type KeyEvent = Readonly<{
327
327
  /**
328
328
  * The actual key that was pressed. For example, F would be "f" or "F" depending on the shift key.
329
329
  * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
@@ -10,12 +10,12 @@
10
10
 
11
11
  import type {HostInstance} from '../../src/private/types/HostInstance';
12
12
 
13
- export type NativeSyntheticEvent<+T> = $ReadOnly<{
13
+ export type NativeSyntheticEvent<+T> = Readonly<{
14
14
  bubbles: ?boolean,
15
15
  cancelable: ?boolean,
16
16
  currentTarget: number | HostInstance,
17
17
  defaultPrevented: ?boolean,
18
- dispatchConfig: $ReadOnly<{
18
+ dispatchConfig: Readonly<{
19
19
  registrationName: string,
20
20
  }>,
21
21
  eventPhase: ?number,
@@ -31,14 +31,14 @@ export type NativeSyntheticEvent<+T> = $ReadOnly<{
31
31
  type: ?string,
32
32
  }>;
33
33
 
34
- export type ResponderSyntheticEvent<T> = $ReadOnly<{
34
+ export type ResponderSyntheticEvent<T> = Readonly<{
35
35
  ...NativeSyntheticEvent<T>,
36
- touchHistory: $ReadOnly<{
36
+ touchHistory: Readonly<{
37
37
  indexOfSingleActiveTouch: number,
38
38
  mostRecentTimeStamp: number,
39
39
  numberActiveTouches: number,
40
- touchBank: $ReadOnlyArray<
41
- $ReadOnly<{
40
+ touchBank: ReadonlyArray<
41
+ Readonly<{
42
42
  touchActive: boolean,
43
43
  startPageX: number,
44
44
  startPageY: number,
@@ -54,14 +54,14 @@ export type ResponderSyntheticEvent<T> = $ReadOnly<{
54
54
  }>,
55
55
  }>;
56
56
 
57
- export type LayoutRectangle = $ReadOnly<{
57
+ export type LayoutRectangle = Readonly<{
58
58
  x: number,
59
59
  y: number,
60
60
  width: number,
61
61
  height: number,
62
62
  }>;
63
63
 
64
- export type TextLayoutLine = $ReadOnly<{
64
+ export type TextLayoutLine = Readonly<{
65
65
  ...LayoutRectangle,
66
66
  ascender: number,
67
67
  capHeight: number,
@@ -71,12 +71,12 @@ export type TextLayoutLine = $ReadOnly<{
71
71
  }>;
72
72
 
73
73
  export type LayoutChangeEvent = NativeSyntheticEvent<
74
- $ReadOnly<{
74
+ Readonly<{
75
75
  layout: LayoutRectangle,
76
76
  }>,
77
77
  >;
78
78
 
79
- type TextLayoutEventData = $ReadOnly<{
79
+ type TextLayoutEventData = Readonly<{
80
80
  lines: Array<TextLayoutLine>,
81
81
  }>;
82
82
 
@@ -230,17 +230,18 @@ export interface NativePointerEvent extends NativeMouseEvent {
230
230
 
231
231
  export type PointerEvent = NativeSyntheticEvent<NativePointerEvent>;
232
232
 
233
- export type NativeTouchEvent = $ReadOnly<{
233
+ export type NativeTouchEvent = Readonly<{
234
234
  altKey: ?boolean, // TODO(macOS)
235
235
 
236
236
  button: ?number, // TODO(macOS)
237
237
  /**
238
238
  * Array of all touch events that have changed since the last event
239
239
  */
240
- changedTouches: $ReadOnlyArray<NativeTouchEvent>,
240
+ changedTouches: ReadonlyArray<NativeTouchEvent>,
241
241
 
242
242
  ctrlKey: ?boolean, // TODO(macOS)
243
243
 
244
+
244
245
  /**
245
246
  * 3D Touch reported force
246
247
  * @platform ios
@@ -282,34 +283,34 @@ export type NativeTouchEvent = $ReadOnly<{
282
283
  /**
283
284
  * Array of all current touches on the screen
284
285
  */
285
- touches: $ReadOnlyArray<NativeTouchEvent>,
286
+ touches: ReadonlyArray<NativeTouchEvent>,
286
287
  }>;
287
288
 
288
289
  export type GestureResponderEvent = ResponderSyntheticEvent<NativeTouchEvent>;
289
290
 
290
- export type NativeScrollRectangle = $ReadOnly<{
291
+ export type NativeScrollRectangle = Readonly<{
291
292
  bottom: number,
292
293
  left: number,
293
294
  right: number,
294
295
  top: number,
295
296
  }>;
296
297
 
297
- export type NativeScrollPoint = $ReadOnly<{
298
+ export type NativeScrollPoint = Readonly<{
298
299
  y: number,
299
300
  x: number,
300
301
  }>;
301
302
 
302
- export type NativeScrollVelocity = $ReadOnly<{
303
+ export type NativeScrollVelocity = Readonly<{
303
304
  y: number,
304
305
  x: number,
305
306
  }>;
306
307
 
307
- export type NativeScrollSize = $ReadOnly<{
308
+ export type NativeScrollSize = Readonly<{
308
309
  height: number,
309
310
  width: number,
310
311
  }>;
311
312
 
312
- export type NativeScrollEvent = $ReadOnly<{
313
+ export type NativeScrollEvent = Readonly<{
313
314
  contentInset: NativeScrollRectangle,
314
315
  contentOffset: NativeScrollPoint,
315
316
  contentSize: NativeScrollSize,
@@ -325,7 +326,7 @@ export type NativeScrollEvent = $ReadOnly<{
325
326
 
326
327
  export type ScrollEvent = NativeSyntheticEvent<NativeScrollEvent>;
327
328
 
328
- export type TargetedEvent = $ReadOnly<{
329
+ export type TargetedEvent = Readonly<{
329
330
  target: number,
330
331
  ...
331
332
  }>;
@@ -338,7 +339,7 @@ export type FocusEvent = NativeSyntheticEvent<TargetedEvent>;
338
339
  // introduced for react-native-web. Replace typings with our values to catch
339
340
  // anything dependent on react-native-web specific values
340
341
  export type MouseEvent = NativeSyntheticEvent<
341
- $ReadOnly<{
342
+ Readonly<{
342
343
  target: number,
343
344
  identifier: number,
344
345
  clientX: number,
@@ -362,7 +363,7 @@ export type MouseEvent = NativeSyntheticEvent<
362
363
  }>,
363
364
  >;
364
365
  // Windows]
365
- export type KeyEvent = $ReadOnly<{
366
+ export type KeyEvent = Readonly<{
366
367
  /**
367
368
  * The actual key that was pressed. For example, F would be "f" or "F" depending on the shift key.
368
369
  * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
@@ -34,12 +34,12 @@ export type ReactDevToolsAgentEvents = {
34
34
  export type ReactDevToolsAgent = {
35
35
  selectNode(node: unknown): void,
36
36
  stopInspectingNative(value: boolean): void,
37
- addListener<Event: $Keys<ReactDevToolsAgentEvents>>(
37
+ addListener<Event: keyof ReactDevToolsAgentEvents>(
38
38
  event: Event,
39
39
  listener: (...ReactDevToolsAgentEvents[Event]) => void,
40
40
  ): void,
41
41
  removeListener(
42
- event: $Keys<ReactDevToolsAgentEvents>,
42
+ event: keyof ReactDevToolsAgentEvents,
43
43
  listener: () => void,
44
44
  ): void,
45
45
  };
@@ -99,7 +99,12 @@ export function setColorScheme(colorScheme: ColorSchemeName): void {
99
99
  if (NativeAppearance != null) {
100
100
  NativeAppearance.setColorScheme(colorScheme);
101
101
  state.appearance = {
102
- colorScheme,
102
+ // When setting to 'unspecified', get the actual system color scheme.
103
+ // Fall back to the passed value if getColorScheme() returns null.
104
+ colorScheme:
105
+ colorScheme === 'unspecified'
106
+ ? (NativeAppearance.getColorScheme() ?? colorScheme)
107
+ : colorScheme,
103
108
  };
104
109
  }
105
110
  }
@@ -60,7 +60,7 @@ class Dimensions {
60
60
  *
61
61
  * @param {DimensionsPayload} dims Simple string-keyed object of dimensions to set
62
62
  */
63
- static set(dims: $ReadOnly<DimensionsPayload>): void {
63
+ static set(dims: Readonly<DimensionsPayload>): void {
64
64
  // We calculate the window dimensions in JS so that we don't encounter loss of
65
65
  // precision in transferring the dimensions (which could be non-integers) over
66
66
  // the bridge.
@@ -64,7 +64,7 @@ class Dimensions {
64
64
  *
65
65
  * @param {DimensionsPayload} dims Simple string-keyed object of dimensions to set
66
66
  */
67
- static set(dims: $ReadOnly<DimensionsPayload>): void {
67
+ static set(dims: Readonly<DimensionsPayload>): void {
68
68
  let {screen, window} = dims;
69
69
  const {windowPhysicalPixels} = dims;
70
70
  if (windowPhysicalPixels) {
@@ -26,7 +26,7 @@ let hmrUnavailableReason: string | null = null;
26
26
  let hmrOrigin: string | null = null;
27
27
  let currentCompileErrorMessage: string | null = null;
28
28
  let didConnect: boolean = false;
29
- let pendingLogs: Array<[LogLevel, $ReadOnlyArray<unknown>]> = [];
29
+ let pendingLogs: Array<[LogLevel, ReadonlyArray<unknown>]> = [];
30
30
 
31
31
  type LogLevel =
32
32
  | 'trace'
@@ -43,7 +43,7 @@ export type HMRClientNativeInterface = {
43
43
  enable(): void,
44
44
  disable(): void,
45
45
  registerBundle(requestUrl: string): void,
46
- log(level: LogLevel, data: $ReadOnlyArray<unknown>): void,
46
+ log(level: LogLevel, data: ReadonlyArray<unknown>): void,
47
47
  setup(
48
48
  platform: string,
49
49
  bundleEntry: string,
@@ -113,7 +113,7 @@ const HMRClient: HMRClientNativeInterface = {
113
113
  registerBundleEntryPoints(hmrClient);
114
114
  },
115
115
 
116
- log(level: LogLevel, data: $ReadOnlyArray<unknown>) {
116
+ log(level: LogLevel, data: ReadonlyArray<unknown>) {
117
117
  if (!hmrClient) {
118
118
  // Catch a reasonable number of early logs
119
119
  // in case hmrClient gets initialized later.
@@ -141,7 +141,7 @@ const HMRClient: HMRClientNativeInterface = {
141
141
  ),
142
142
  }),
143
143
  );
144
- } catch (error) {
144
+ } catch {
145
145
  // If sending logs causes any failures we want to silently ignore them
146
146
  // to ensure we do not cause infinite-logging loops.
147
147
  }
@@ -212,6 +212,7 @@ Error: ${e.message}`;
212
212
  });
213
213
 
214
214
  let pendingUpdatesCount = 0;
215
+ let lastMarkerChangeId: string | null = null;
215
216
  client.on('update-start', ({isInitialUpdate}) => {
216
217
  pendingUpdatesCount++;
217
218
  currentCompileErrorMessage = null;
@@ -229,10 +230,15 @@ Error: ${e.message}`;
229
230
  }
230
231
  });
231
232
 
232
- client.on('update-done', () => {
233
+ client.on('update-done', body => {
233
234
  pendingUpdatesCount--;
234
235
  if (pendingUpdatesCount === 0) {
235
236
  DevLoadingView.hide();
237
+ const changeId = body?.changeId;
238
+ if (changeId != null && changeId !== lastMarkerChangeId) {
239
+ lastMarkerChangeId = changeId;
240
+ emitFastRefreshCompleteEvents();
241
+ }
236
242
  }
237
243
  });
238
244
 
@@ -379,4 +385,25 @@ function showCompileError() {
379
385
  throw error;
380
386
  }
381
387
 
388
+ function emitFastRefreshCompleteEvents() {
389
+ // Add marker entry in performance timeline
390
+ performance.mark('Fast Refresh - Update done', {
391
+ detail: {
392
+ devtools: {
393
+ dataType: 'marker',
394
+ color: 'primary',
395
+ tooltipText: 'Fast Refresh \u269b',
396
+ },
397
+ },
398
+ });
399
+
400
+ // Notify CDP clients via internal binding
401
+ if (
402
+ // $FlowFixMe[prop-missing] - Injected by RuntimeTarget
403
+ typeof globalThis.__notifyFastRefreshComplete === 'function'
404
+ ) {
405
+ globalThis.__notifyFastRefreshComplete();
406
+ }
407
+ }
408
+
382
409
  export default HMRClient;
@@ -34,10 +34,10 @@ export interface IPerformanceLogger {
34
34
  clearCompleted(): void;
35
35
  close(): void;
36
36
  currentTimestamp(): number;
37
- getExtras(): $ReadOnly<{[key: string]: ?ExtraValue, ...}>;
38
- getPoints(): $ReadOnly<{[key: string]: ?number, ...}>;
39
- getPointExtras(): $ReadOnly<{[key: string]: ?Extras, ...}>;
40
- getTimespans(): $ReadOnly<{[key: string]: ?Timespan, ...}>;
37
+ getExtras(): Readonly<{[key: string]: ?ExtraValue, ...}>;
38
+ getPoints(): Readonly<{[key: string]: ?number, ...}>;
39
+ getPointExtras(): Readonly<{[key: string]: ?Extras, ...}>;
40
+ getTimespans(): Readonly<{[key: string]: ?Timespan, ...}>;
41
41
  hasTimespan(key: string): boolean;
42
42
  isClosed(): boolean;
43
43
  logEverything(): void;
@@ -10,14 +10,14 @@
10
10
 
11
11
  const {dispatchCommand} = require('../ReactNative/RendererProxy');
12
12
 
13
- type NativeCommandsOptions<T = string> = $ReadOnly<{
14
- supportedCommands: $ReadOnlyArray<T>,
13
+ type NativeCommandsOptions<T = string> = Readonly<{
14
+ supportedCommands: ReadonlyArray<T>,
15
15
  }>;
16
16
 
17
17
  function codegenNativeCommands<T: interface {}>(
18
- options: NativeCommandsOptions<$Keys<T>>,
18
+ options: NativeCommandsOptions<keyof T>,
19
19
  ): T {
20
- const commandObj: {[$Keys<T>]: (...$ReadOnlyArray<unknown>) => void} = {};
20
+ const commandObj: {[keyof T]: (...ReadonlyArray<unknown>) => void} = {};
21
21
 
22
22
  options.supportedCommands.forEach(command => {
23
23
  // $FlowFixMe[missing-local-annot]
@@ -14,6 +14,8 @@ interface Options {
14
14
  readonly paperComponentName?: string | undefined;
15
15
  readonly paperComponentNameDeprecated?: string | undefined;
16
16
  readonly excludedPlatforms?: ReadonlyArray<'iOS' | 'android'> | undefined;
17
+ readonly generateOptionalProperties?: boolean | undefined;
18
+ readonly generateOptionalObjectProperties?: boolean | undefined;
17
19
  }
18
20
 
19
21
  type NativeComponentType<T> = HostComponent<T>;