@office-iss/react-native-win32 0.73.2 → 0.74.0-preview.2

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 (475) hide show
  1. package/.eslintignore +1 -1
  2. package/.flowconfig +11 -3
  3. package/CHANGELOG.json +426 -54
  4. package/CHANGELOG.md +165 -30
  5. package/IntegrationTests/AccessibilityManagerTest.js +2 -2
  6. package/IntegrationTests/AppEventsTest.js +2 -2
  7. package/IntegrationTests/LayoutEventsTest.js +8 -10
  8. package/IntegrationTests/LoggingTestModule.js +1 -2
  9. package/IntegrationTests/websocket_integration_test_server.js +1 -1
  10. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +6 -0
  11. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +6 -0
  12. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +4 -45
  13. package/Libraries/Alert/NativeAlertManager.js +4 -26
  14. package/Libraries/Animated/Animated.js +2 -2
  15. package/Libraries/Animated/AnimatedPlatformConfig.js +1 -1
  16. package/Libraries/Animated/NativeAnimatedHelper.js +14 -11
  17. package/Libraries/Animated/NativeAnimatedHelper.win32.js +14 -11
  18. package/Libraries/Animated/NativeAnimatedModule.js +4 -68
  19. package/Libraries/Animated/NativeAnimatedTurboModule.js +4 -69
  20. package/Libraries/Animated/animations/Animation.js +6 -22
  21. package/Libraries/Animated/components/AnimatedFlatList.js +1 -16
  22. package/Libraries/Animated/components/AnimatedScrollView.js +36 -31
  23. package/Libraries/Animated/components/AnimatedSectionList.js +1 -20
  24. package/Libraries/Animated/createAnimatedComponent.js +45 -40
  25. package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
  26. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +1 -1
  27. package/Libraries/Animated/useAnimatedProps.js +21 -1
  28. package/Libraries/AppState/NativeAppState.js +4 -24
  29. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  30. package/Libraries/Blob/Blob.js +1 -4
  31. package/Libraries/Blob/BlobManager.js +6 -8
  32. package/Libraries/Blob/File.js +1 -1
  33. package/Libraries/Blob/NativeBlobModule.js +4 -50
  34. package/Libraries/Blob/NativeFileReaderModule.js +4 -13
  35. package/Libraries/BugReporting/NativeBugReporting.js +4 -12
  36. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +5 -1
  37. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +48 -7
  38. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
  39. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +11 -0
  40. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
  41. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
  42. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +3 -2
  43. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
  44. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
  45. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +36 -36
  46. package/Libraries/Components/Button/ButtonWin32.Props.js +2 -2
  47. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
  48. package/Libraries/Components/Button/ButtonWin32.d.ts +19 -19
  49. package/Libraries/Components/Button/ButtonWin32.js +82 -82
  50. package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
  51. package/Libraries/Components/Button.js +103 -107
  52. package/Libraries/Components/Button.win32.js +297 -301
  53. package/Libraries/Components/Clipboard/NativeClipboard.js +3 -11
  54. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +3 -114
  55. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -5
  56. package/Libraries/Components/EnterString.win32.d.ts +12 -12
  57. package/Libraries/Components/EnterString.win32.js +81 -81
  58. package/Libraries/Components/EnterString.win32.js.map +1 -1
  59. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +3 -10
  60. package/Libraries/Components/Pressable/Pressable.js +1 -1
  61. package/Libraries/Components/Pressable/Pressable.win32.js +1 -1
  62. package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
  63. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
  64. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
  65. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
  66. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  67. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
  68. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
  69. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  70. package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
  71. package/Libraries/Components/ScrollView/ScrollView.js +12 -38
  72. package/Libraries/Components/ScrollView/ScrollView.win32.js +12 -38
  73. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
  74. package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
  75. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
  76. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
  77. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
  78. package/Libraries/Components/Switch/Switch.js +0 -2
  79. package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
  80. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
  81. package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
  82. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
  83. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
  84. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +8 -8
  85. package/Libraries/Components/TextInput/Tests/TextInputTest.js +127 -127
  86. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  87. package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
  88. package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
  89. package/Libraries/Components/TextInput/TextInput.js +65 -32
  90. package/Libraries/Components/TextInput/TextInput.win32.js +70 -37
  91. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
  92. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  93. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +8 -8
  94. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +343 -344
  95. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  96. package/Libraries/Components/Touchable/Touchable.js +2 -3
  97. package/Libraries/Components/Touchable/Touchable.win32.js +2 -3
  98. package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
  99. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  100. package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
  101. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -37
  102. package/Libraries/Components/Touchable/TouchableWin32.Props.js +2 -2
  103. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  104. package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
  105. package/Libraries/Components/Touchable/TouchableWin32.Types.js +2 -2
  106. package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -1
  107. package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
  108. package/Libraries/Components/Touchable/TouchableWin32.js +506 -506
  109. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  110. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
  111. package/Libraries/Components/View/ReactNativeStyleAttributes.js +2 -1
  112. package/Libraries/Components/View/View.js +0 -11
  113. package/Libraries/Components/View/View.win32.js +18 -17
  114. package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  115. package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  116. package/Libraries/Components/View/ViewPropTypes.js +36 -36
  117. package/Libraries/Components/View/ViewPropTypes.win32.js +36 -36
  118. package/Libraries/Core/InitializeCore.js +1 -1
  119. package/Libraries/Core/NativeExceptionsManager.js +3 -93
  120. package/Libraries/Core/ReactNativeVersion.js +12 -6
  121. package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
  122. package/Libraries/Core/ReactNativeVersionCheck.win32.js +6 -6
  123. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
  124. package/Libraries/Core/Timers/NativeTiming.js +3 -16
  125. package/Libraries/Core/registerCallableModule.d.ts +16 -0
  126. package/Libraries/Core/registerCallableModule.js +42 -0
  127. package/Libraries/Core/setUpPerformance.js +2 -2
  128. package/Libraries/Core/setUpPerformanceObserver.js +3 -1
  129. package/Libraries/Debugging/DebuggingOverlay.js +111 -0
  130. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  131. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  132. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  133. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
  134. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
  135. package/Libraries/Image/AssetSourceResolver.js +5 -5
  136. package/Libraries/Image/AssetUtils.js +4 -5
  137. package/Libraries/Image/Image.android.js +146 -174
  138. package/Libraries/Image/Image.d.ts +1 -1
  139. package/Libraries/Image/Image.ios.js +53 -79
  140. package/Libraries/Image/Image.win32.js +52 -74
  141. package/Libraries/Image/ImageBackground.js +2 -2
  142. package/Libraries/Image/ImageInjection.js +76 -18
  143. package/Libraries/Image/ImageTypes.d.ts +25 -25
  144. package/Libraries/Image/ImageTypes.flow.js +71 -0
  145. package/Libraries/Image/ImageTypes.js +7 -7
  146. package/Libraries/Image/ImageTypes.js.map +1 -1
  147. package/Libraries/Image/ImageUtils.js +1 -1
  148. package/Libraries/Image/ImageViewNativeComponent.js +18 -0
  149. package/Libraries/Image/NativeImageEditor.js +3 -42
  150. package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
  151. package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
  152. package/Libraries/Image/NativeImageLoaderWin32.js +4 -36
  153. package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
  154. package/Libraries/Image/NativeImageStoreIOS.js +3 -23
  155. package/Libraries/Image/Tests/ImageWin32Test.d.ts +8 -8
  156. package/Libraries/Image/Tests/ImageWin32Test.js +21 -21
  157. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  158. package/Libraries/Image/resolveAssetSource.js +59 -26
  159. package/Libraries/Inspector/ElementProperties.js +26 -52
  160. package/Libraries/Inspector/Inspector.js +122 -186
  161. package/Libraries/Inspector/Inspector.win32.js +118 -185
  162. package/Libraries/Inspector/InspectorOverlay.js +21 -33
  163. package/Libraries/Inspector/InspectorOverlay.win32.js +22 -33
  164. package/Libraries/Inspector/InspectorPanel.js +3 -17
  165. package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
  166. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
  167. package/Libraries/Interaction/FrameRateLogger.js +8 -18
  168. package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
  169. package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
  170. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
  171. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
  172. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
  173. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
  174. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
  175. package/Libraries/Linking/NativeIntentAndroid.js +3 -20
  176. package/Libraries/Linking/NativeLinkingManager.js +3 -17
  177. package/Libraries/Lists/FillRateHelper.js +1 -1
  178. package/Libraries/Lists/FlatList.d.ts +2 -2
  179. package/Libraries/Lists/FlatList.js +6 -2
  180. package/Libraries/Lists/SectionList.d.ts +6 -1
  181. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  182. package/Libraries/Lists/VirtualizeUtils.js +1 -1
  183. package/Libraries/Lists/VirtualizedList.js +1 -1
  184. package/Libraries/Lists/VirtualizedListContext.js +1 -1
  185. package/Libraries/Lists/VirtualizedSectionList.js +1 -1
  186. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  187. package/Libraries/Modal/Modal.js +43 -11
  188. package/Libraries/Modal/NativeModalManager.js +3 -11
  189. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
  190. package/Libraries/MutationObserver/MutationObserver.js +1 -1
  191. package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
  192. package/Libraries/MutationObserver/MutationRecord.js +12 -10
  193. package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
  194. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
  195. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  196. package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
  197. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
  198. package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
  199. package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
  200. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
  201. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
  202. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
  203. package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
  204. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
  205. package/Libraries/Network/FormData.js +3 -1
  206. package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
  207. package/Libraries/Network/NativeNetworkingIOS.js +4 -28
  208. package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
  209. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
  210. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  211. package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
  212. package/Libraries/PersonaCoin/PersonaCoin.js +14 -14
  213. package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -1
  214. package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
  215. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +19 -19
  216. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -1
  217. package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
  218. package/Libraries/PersonaCoin/PersonaCoinTypes.js +23 -23
  219. package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -1
  220. package/Libraries/Pressability/Pressability.js +12 -2
  221. package/Libraries/Pressability/Pressability.win32.js +12 -2
  222. package/Libraries/Pressability/usePressability.js +7 -0
  223. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
  224. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
  225. package/Libraries/ReactNative/AppContainer-dev.js +211 -0
  226. package/Libraries/ReactNative/AppContainer-prod.js +53 -0
  227. package/Libraries/ReactNative/AppContainer.js +6 -149
  228. package/Libraries/ReactNative/AppRegistry.js +3 -1
  229. package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
  230. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  231. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
  232. package/Libraries/ReactNative/NativeI18nManager.js +3 -18
  233. package/Libraries/ReactNative/NativeUIManager.js +4 -112
  234. package/Libraries/ReactNative/PaperUIManager.js +8 -7
  235. package/Libraries/ReactNative/PaperUIManager.win32.js +26 -7
  236. package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
  237. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
  238. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
  239. package/Libraries/ReactNative/RendererImplementation.js +11 -0
  240. package/Libraries/ReactNative/UIManager.d.ts +11 -34
  241. package/Libraries/ReactNative/UIManager.js +2 -23
  242. package/Libraries/ReactNative/UIManagerProperties.js +0 -2
  243. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
  244. package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
  245. package/Libraries/ReactNative/renderApplication.js +9 -6
  246. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
  247. package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
  248. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
  249. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
  250. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
  251. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
  252. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
  253. package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
  254. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
  255. package/Libraries/Settings/NativeSettingsManager.js +4 -16
  256. package/Libraries/Share/NativeShareModule.js +3 -13
  257. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +1 -1
  258. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  259. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +1 -1
  260. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
  261. package/Libraries/StyleSheet/StyleSheet.js +5 -28
  262. package/Libraries/StyleSheet/StyleSheet.win32.js +5 -28
  263. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +51 -7
  264. package/Libraries/StyleSheet/StyleSheetTypes.js +19 -11
  265. package/Libraries/StyleSheet/flattenStyle.js +2 -2
  266. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  267. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  268. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  269. package/Libraries/Text/Text.d.ts +5 -6
  270. package/Libraries/Text/Text.js +0 -6
  271. package/Libraries/Text/Text.win32.js +0 -6
  272. package/Libraries/Text/TextAncestor.js +2 -3
  273. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
  274. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  275. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  276. package/Libraries/Utilities/DebugEnvironment.js +1 -4
  277. package/Libraries/Utilities/Dimensions.js +8 -16
  278. package/Libraries/Utilities/Dimensions.win32.js +8 -16
  279. package/Libraries/Utilities/FocusManager.win32.js +2 -0
  280. package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
  281. package/Libraries/Utilities/NativeAppearance.js +3 -26
  282. package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
  283. package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
  284. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
  285. package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
  286. package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
  287. package/Libraries/Utilities/PixelRatio.d.ts +4 -4
  288. package/Libraries/Utilities/Platform.android.js +4 -0
  289. package/Libraries/Utilities/Platform.d.ts +3 -0
  290. package/Libraries/Utilities/Platform.flow.js +7 -0
  291. package/Libraries/Utilities/Platform.flow.win32.js +18 -5
  292. package/Libraries/Utilities/Platform.ios.js +11 -0
  293. package/Libraries/Utilities/Platform.win32.js +9 -1
  294. package/Libraries/Utilities/binaryToBase64.js +1 -1
  295. package/Libraries/Utilities/codegenNativeComponent.js +4 -6
  296. package/Libraries/Utilities/createPerformanceLogger.js +2 -74
  297. package/Libraries/Utilities/useMergeRefs.js +5 -9
  298. package/Libraries/Vibration/NativeVibration.js +3 -14
  299. package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
  300. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  301. package/Libraries/platform-types.d.ts +2 -3
  302. package/Libraries/vendor/emitter/EventEmitter.js +1 -0
  303. package/babel.config.js +1 -1
  304. package/flow/jest.js +1 -1
  305. package/flow/react.js +15 -0
  306. package/index.js +61 -99
  307. package/index.win32.js +60 -101
  308. package/jest/assetFileTransformer.js +1 -1
  309. package/jest/local-setup.js +0 -5
  310. package/jest/mockModal.js +2 -1
  311. package/jest/mockScrollView.js +1 -2
  312. package/jest/renderer.js +1 -1
  313. package/jest/setup.js +6 -3
  314. package/jest.config.js +2 -1
  315. package/overrides.json +152 -131
  316. package/package.json +27 -26
  317. package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
  318. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
  319. package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
  320. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
  321. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
  322. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  323. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  324. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
  325. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  326. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  327. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  328. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  329. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  330. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  331. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
  332. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  333. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  334. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  335. package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
  336. package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +39 -0
  337. package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
  338. package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
  339. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  340. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  341. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  342. package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
  343. package/src/private/specs/modules/NativeAppState.js +33 -0
  344. package/src/private/specs/modules/NativeAppearance.js +36 -0
  345. package/src/private/specs/modules/NativeBlobModule.js +59 -0
  346. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  347. package/src/private/specs/modules/NativeClipboard.js +21 -0
  348. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  349. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  350. package/src/private/specs/modules/NativeDevSettings.js +33 -0
  351. package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
  352. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  353. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  354. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  355. package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
  356. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  357. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  358. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  359. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  360. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  361. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  362. package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
  363. package/src/private/specs/modules/NativeImageLoaderWin32.js +45 -0
  364. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  365. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  366. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  367. package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
  368. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  369. package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
  370. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  371. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  372. package/src/private/specs/modules/NativeLogBox.js +20 -0
  373. package/src/private/specs/modules/NativeModalManager.js +21 -0
  374. package/src/private/specs/modules/NativeMutationObserver.js +58 -0
  375. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  376. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  377. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  378. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  379. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  380. package/src/private/specs/modules/NativePlatformConstantsWin.js +37 -0
  381. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
  382. package/src/private/specs/modules/NativeRedBox.js +20 -0
  383. package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
  384. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  385. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  386. package/src/private/specs/modules/NativeShareModule.js +23 -0
  387. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  388. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  389. package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
  390. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  391. package/src/private/specs/modules/NativeTiming.js +26 -0
  392. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  393. package/src/private/specs/modules/NativeUIManager.js +118 -0
  394. package/src/private/specs/modules/NativeVibration.js +24 -0
  395. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  396. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
  397. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
  398. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
  399. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
  400. package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
  401. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
  402. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
  403. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
  404. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
  405. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
  406. package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
  407. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
  408. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
  409. package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
  410. package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
  411. package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
  412. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
  413. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
  414. package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
  415. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
  416. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +161 -0
  417. package/{src → src-win}/Libraries/Components/Button/ButtonWin32.tsx +3 -3
  418. package/{src → src-win}/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +9 -10
  419. package/{src → src-win}/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  420. package/{src → src-win}/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  421. package/{src → src-win}/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  422. package/{src → src-win}/Libraries/Text/Text.d.ts +5 -6
  423. package/{src → src-win}/Libraries/platform-types.d.ts +2 -3
  424. package/types/index.d.ts +1 -0
  425. package/types/modules/globals.d.ts +1 -0
  426. package/Libraries/Components/Button.flow.js +0 -265
  427. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
  428. package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -63
  429. package/Libraries/Components/Text/TextWin32.Props.js +0 -3
  430. package/Libraries/Components/Text/TextWin32.Props.js.map +0 -1
  431. package/Libraries/Components/Text/TextWin32.d.ts +0 -6
  432. package/Libraries/Components/Text/TextWin32.js +0 -18
  433. package/Libraries/Components/Text/TextWin32.js.map +0 -1
  434. package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
  435. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
  436. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
  437. package/Libraries/Image/Image.flow.js +0 -64
  438. package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
  439. package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
  440. package/src/Libraries/Components/Text/TextWin32.Props.ts +0 -82
  441. package/src/Libraries/Components/Text/TextWin32.tsx +0 -25
  442. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
  443. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
  444. /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
  445. /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
  446. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
  447. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
  448. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
  449. /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
  450. /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
  451. /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
  452. /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
  453. /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
  454. /package/{src → src-win}/Libraries/Components/Button/ButtonWin32.Props.ts +0 -0
  455. /package/{src → src-win}/Libraries/Components/EnterString.win32.tsx +0 -0
  456. /package/{src → src-win}/Libraries/Components/TextInput/Tests/TextInputTest.tsx +0 -0
  457. /package/{src → src-win}/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +0 -0
  458. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Props.tsx +0 -0
  459. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Types.tsx +0 -0
  460. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.tsx +0 -0
  461. /package/{src → src-win}/Libraries/Components/View/ViewWin32.d.ts +0 -0
  462. /package/{src → src-win}/Libraries/Image/ImageTypes.ts +0 -0
  463. /package/{src → src-win}/Libraries/Image/Tests/ImageWin32Test.tsx +0 -0
  464. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest.png +0 -0
  465. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
  466. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
  467. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
  468. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
  469. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
  470. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
  471. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoin.tsx +0 -0
  472. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +0 -0
  473. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinTypes.ts +0 -0
  474. /package/{src → src-win}/Libraries/Utilities/FocusManager.win32.d.ts +0 -0
  475. /package/{src → src-win}/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +0 -0
@@ -4,19 +4,22 @@
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
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- import type {ImageStyleProp} from '../StyleSheet/StyleSheet';
11
+ import type {ImageStyle, ImageStyleProp} from '../StyleSheet/StyleSheet';
12
12
  import type {RootTag} from '../Types/RootTagTypes';
13
- import type {ImageIOS} from './Image.flow';
14
- import type {ImageProps as ImagePropsType} from './ImageProps';
13
+ import type {AbstractImageIOS, ImageIOS} from './ImageTypes.flow';
15
14
 
15
+ import {createRootTag} from '../ReactNative/RootTag';
16
16
  import flattenStyle from '../StyleSheet/flattenStyle';
17
17
  import StyleSheet from '../StyleSheet/StyleSheet';
18
18
  import ImageAnalyticsTagContext from './ImageAnalyticsTagContext';
19
- import ImageInjection from './ImageInjection';
19
+ import {
20
+ unstable_getImageComponentDecorator,
21
+ useWrapRefWithImageAttachedCallbacks,
22
+ } from './ImageInjection';
20
23
  import {getImageSourcesFromImageProps} from './ImageSourceUtils';
21
24
  import {convertObjectFitToResizeMode} from './ImageUtils';
22
25
  import ImageViewNativeComponent from './ImageViewNativeComponent';
@@ -27,8 +30,8 @@ import * as React from 'react';
27
30
  function getSize(
28
31
  uri: string,
29
32
  success: (width: number, height: number) => void,
30
- failure?: (error: any) => void,
31
- ) {
33
+ failure?: (error: mixed) => void,
34
+ ): void {
32
35
  NativeImageLoaderIOS.getSize(uri)
33
36
  .then(([width, height]) => success(width, height))
34
37
  .catch(
@@ -43,9 +46,9 @@ function getSizeWithHeaders(
43
46
  uri: string,
44
47
  headers: {[string]: string, ...},
45
48
  success: (width: number, height: number) => void,
46
- failure?: (error: any) => void,
47
- ): any {
48
- return NativeImageLoaderIOS.getSizeWithHeaders(uri, headers)
49
+ failure?: (error: mixed) => void,
50
+ ): void {
51
+ NativeImageLoaderIOS.getSizeWithHeaders(uri, headers)
49
52
  .then(function (sizes) {
50
53
  success(sizes.width, sizes.height);
51
54
  })
@@ -61,41 +64,30 @@ function prefetchWithMetadata(
61
64
  url: string,
62
65
  queryRootName: string,
63
66
  rootTag?: ?RootTag,
64
- ): any {
67
+ ): Promise<boolean> {
65
68
  if (NativeImageLoaderIOS.prefetchImageWithMetadata) {
66
69
  // number params like rootTag cannot be nullable before TurboModules is available
67
70
  return NativeImageLoaderIOS.prefetchImageWithMetadata(
68
71
  url,
69
72
  queryRootName,
70
73
  // NOTE: RootTag type
71
- // $FlowFixMe[incompatible-call] RootTag: number is incompatible with RootTag
72
- rootTag ? rootTag : 0,
74
+ rootTag != null ? rootTag : createRootTag(0),
73
75
  );
74
76
  } else {
75
77
  return NativeImageLoaderIOS.prefetchImage(url);
76
78
  }
77
79
  }
78
80
 
79
- function prefetch(url: string): any {
81
+ function prefetch(url: string): Promise<boolean> {
80
82
  return NativeImageLoaderIOS.prefetchImage(url);
81
83
  }
82
84
 
83
85
  async function queryCache(
84
86
  urls: Array<string>,
85
87
  ): Promise<{[string]: 'memory' | 'disk' | 'disk/memory', ...}> {
86
- return await NativeImageLoaderIOS.queryCache(urls);
88
+ return NativeImageLoaderIOS.queryCache(urls);
87
89
  }
88
90
 
89
- export type ImageComponentStatics = $ReadOnly<{|
90
- getSize: typeof getSize,
91
- getSizeWithHeaders: typeof getSizeWithHeaders,
92
- prefetch: typeof prefetch,
93
- prefetchWithMetadata: typeof prefetchWithMetadata,
94
- abortPrefetch?: number => void,
95
- queryCache: typeof queryCache,
96
- resolveAssetSource: typeof resolveAssetSource,
97
- |}>;
98
-
99
91
  /**
100
92
  * A React component for displaying different types of images,
101
93
  * including network images, static resources, temporary local images, and
@@ -103,9 +95,7 @@ export type ImageComponentStatics = $ReadOnly<{|
103
95
  *
104
96
  * See https://reactnative.dev/docs/image
105
97
  */
106
- /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
107
- * LTI update could not be added via codemod */
108
- const BaseImage = (props: ImagePropsType, forwardedRef) => {
98
+ let BaseImage: AbstractImageIOS = React.forwardRef((props, forwardedRef) => {
109
99
  const source = getImageSourcesFromImageProps(props) || {
110
100
  uri: undefined,
111
101
  width: undefined,
@@ -113,16 +103,23 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
113
103
  };
114
104
 
115
105
  let sources;
116
- let style: ImageStyleProp;
106
+ let style: ImageStyle;
107
+
117
108
  if (Array.isArray(source)) {
118
- // $FlowFixMe[underconstrained-implicit-instantiation]
119
- style = flattenStyle([styles.base, props.style]) || {};
109
+ style =
110
+ flattenStyle<ImageStyleProp>([styles.base, props.style]) ||
111
+ ({}: ImageStyle);
120
112
  sources = source;
121
113
  } else {
122
- // $FlowFixMe[incompatible-type]
123
- const {width = props.width, height = props.height, uri} = source;
124
- // $FlowFixMe[underconstrained-implicit-instantiation]
125
- style = flattenStyle([{width, height}, styles.base, props.style]) || {};
114
+ const {uri} = source;
115
+ const width = source.width ?? props.width;
116
+ const height = source.height ?? props.height;
117
+ style =
118
+ flattenStyle<ImageStyleProp>([
119
+ {width, height},
120
+ styles.base,
121
+ props.style,
122
+ ]) || ({}: ImageStyle);
126
123
  sources = [source];
127
124
 
128
125
  if (uri === '') {
@@ -131,16 +128,12 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
131
128
  }
132
129
 
133
130
  const objectFit =
134
- // $FlowFixMe[prop-missing]
135
- style && style.objectFit
136
- ? // $FlowFixMe[incompatible-call]
137
- convertObjectFitToResizeMode(style.objectFit)
131
+ style.objectFit != null
132
+ ? convertObjectFitToResizeMode(style.objectFit)
138
133
  : null;
139
134
  const resizeMode =
140
- // $FlowFixMe[prop-missing]
141
- objectFit || props.resizeMode || (style && style.resizeMode) || 'cover';
142
- // $FlowFixMe[prop-missing]
143
- const tintColor = props.tintColor || style.tintColor;
135
+ objectFit || props.resizeMode || style.resizeMode || 'cover';
136
+ const tintColor = props.tintColor ?? style.tintColor;
144
137
 
145
138
  if (props.children != null) {
146
139
  throw new Error(
@@ -168,6 +161,8 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
168
161
  };
169
162
  const accessibilityLabel = props['aria-label'] ?? props.accessibilityLabel;
170
163
 
164
+ const actualRef = useWrapRefWithImageAttachedCallbacks(forwardedRef);
165
+
171
166
  return (
172
167
  <ImageAnalyticsTagContext.Consumer>
173
168
  {analyticTag => {
@@ -177,9 +172,8 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
177
172
  {...restProps}
178
173
  accessible={props.alt !== undefined ? true : props.accessible}
179
174
  accessibilityLabel={accessibilityLabel ?? props.alt}
180
- ref={forwardedRef}
175
+ ref={actualRef}
181
176
  style={style}
182
- // $FlowFixMe[incompatible-type]
183
177
  resizeMode={resizeMode}
184
178
  tintColor={tintColor}
185
179
  source={sources}
@@ -189,18 +183,16 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
189
183
  }}
190
184
  </ImageAnalyticsTagContext.Consumer>
191
185
  );
192
- };
193
-
194
- const ImageForwardRef = React.forwardRef<
195
- ImagePropsType,
196
- React.ElementRef<typeof ImageViewNativeComponent>,
197
- >(BaseImage);
186
+ });
198
187
 
199
- let Image = ImageForwardRef;
200
- if (ImageInjection.unstable_createImageComponent != null) {
201
- Image = ImageInjection.unstable_createImageComponent(Image);
188
+ const imageComponentDecorator = unstable_getImageComponentDecorator();
189
+ if (imageComponentDecorator != null) {
190
+ BaseImage = imageComponentDecorator(BaseImage);
202
191
  }
203
192
 
193
+ // $FlowExpectedError[incompatible-type] Eventually we need to move these functions from statics of the component to exports in the module.
194
+ const Image: ImageIOS = BaseImage;
195
+
204
196
  Image.displayName = 'Image';
205
197
 
206
198
  /**
@@ -208,9 +200,7 @@ Image.displayName = 'Image';
208
200
  *
209
201
  * See https://reactnative.dev/docs/image#getsize
210
202
  */
211
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
212
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
213
- * delete this comment and run Flow. */
203
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
214
204
  Image.getSize = getSize;
215
205
 
216
206
  /**
@@ -219,9 +209,7 @@ Image.getSize = getSize;
219
209
  *
220
210
  * See https://reactnative.dev/docs/image#getsizewithheaders
221
211
  */
222
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
223
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
224
- * delete this comment and run Flow. */
212
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
225
213
  Image.getSizeWithHeaders = getSizeWithHeaders;
226
214
 
227
215
  /**
@@ -230,9 +218,7 @@ Image.getSizeWithHeaders = getSizeWithHeaders;
230
218
  *
231
219
  * See https://reactnative.dev/docs/image#prefetch
232
220
  */
233
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
234
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
235
- * delete this comment and run Flow. */
221
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
236
222
  Image.prefetch = prefetch;
237
223
 
238
224
  /**
@@ -241,9 +227,7 @@ Image.prefetch = prefetch;
241
227
  *
242
228
  * See https://reactnative.dev/docs/image#prefetch
243
229
  */
244
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
245
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
246
- * delete this comment and run Flow. */
230
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
247
231
  Image.prefetchWithMetadata = prefetchWithMetadata;
248
232
 
249
233
  /**
@@ -251,9 +235,7 @@ Image.prefetchWithMetadata = prefetchWithMetadata;
251
235
  *
252
236
  * See https://reactnative.dev/docs/image#querycache
253
237
  */
254
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
255
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
256
- * delete this comment and run Flow. */
238
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
257
239
  Image.queryCache = queryCache;
258
240
 
259
241
  /**
@@ -261,21 +243,13 @@ Image.queryCache = queryCache;
261
243
  *
262
244
  * See https://reactnative.dev/docs/image#resolveassetsource
263
245
  */
264
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
265
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
266
- * delete this comment and run Flow. */
246
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
267
247
  Image.resolveAssetSource = resolveAssetSource;
268
248
 
269
- /**
270
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
271
- * releases. This is deprecated and will be removed in the future.
272
- */
273
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
274
-
275
249
  const styles = StyleSheet.create({
276
250
  base: {
277
251
  overflow: 'hidden',
278
252
  },
279
253
  });
280
254
 
281
- module.exports = ((Image: any): ImageIOS);
255
+ module.exports = Image;
@@ -4,24 +4,28 @@
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
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
11
  import type {RootTag} from '../Types/RootTagTypes';
12
- import type {ImageIOS} from './Image.flow';
12
+ import type {AbstractImageIOS, ImageIOS} from './ImageTypes.flow';
13
13
  import TextAncestor from '../Text/TextAncestor'; // [Windows]
14
14
  import invariant from 'invariant'; // [Windows]
15
15
 
16
16
  import type {ImageProps as ImagePropsType} from './ImageProps';
17
17
 
18
- import type {ImageStyleProp} from '../StyleSheet/StyleSheet';
18
+ import type {ImageStyle, ImageStyleProp} from '../StyleSheet/StyleSheet';
19
19
  import NativeImageLoaderWin32 from './NativeImageLoaderWin32'; // [Win32] Replace iOS
20
20
 
21
+ import {createRootTag} from '../ReactNative/RootTag';
21
22
  import flattenStyle from '../StyleSheet/flattenStyle';
22
23
  import StyleSheet from '../StyleSheet/StyleSheet';
23
24
  import ImageAnalyticsTagContext from './ImageAnalyticsTagContext';
24
- import ImageInjection from './ImageInjection';
25
+ import {
26
+ unstable_getImageComponentDecorator,
27
+ useWrapRefWithImageAttachedCallbacks,
28
+ } from './ImageInjection';
25
29
  import {getImageSourcesFromImageProps} from './ImageSourceUtils';
26
30
  import {convertObjectFitToResizeMode} from './ImageUtils';
27
31
  import ImageViewNativeComponent from './ImageViewNativeComponent';
@@ -31,6 +35,7 @@ import * as React from 'react';
31
35
  function getSize(
32
36
  uri: string,
33
37
  success: (width: number, height: number) => void,
38
+ // $FlowFixMe[unclear-type]
34
39
  failure?: (error: any) => void,
35
40
  ) {
36
41
  //[Win32
@@ -48,6 +53,7 @@ function getSize(
48
53
  NativeImageLoaderWin32.getSize(
49
54
  uri,
50
55
  (width: number, height: number, err?: string) => {
56
+ // $FlowFixMe[sketchy-null-string]
51
57
  if (!err) {
52
58
  success(width, height);
53
59
  } else {
@@ -66,7 +72,8 @@ function getSizeWithHeaders(
66
72
  uri: string,
67
73
  headers: {[string]: string, ...},
68
74
  success: (width: number, height: number) => void,
69
- failure?: (error: any) => void,
75
+ failure?: (error: mixed) => void,
76
+ // $FlowFixMe[unclear-type]
70
77
  ): any {
71
78
  return NativeImageLoaderWin32.getSizeWithHeaders(uri, headers)
72
79
  .then(function (sizes) {
@@ -84,41 +91,30 @@ function prefetchWithMetadata(
84
91
  url: string,
85
92
  queryRootName: string,
86
93
  rootTag?: ?RootTag,
87
- ): any {
94
+ ): Promise<boolean> {
88
95
  if (NativeImageLoaderWin32.prefetchImageWithMetadata) {
89
96
  // number params like rootTag cannot be nullable before TurboModules is available
90
97
  return NativeImageLoaderWin32.prefetchImageWithMetadata(
91
98
  url,
92
99
  queryRootName,
93
100
  // NOTE: RootTag type
94
- // $FlowFixMe[incompatible-call] RootTag: number is incompatible with RootTag
95
- rootTag ? rootTag : 0,
101
+ rootTag != null ? rootTag : createRootTag(0),
96
102
  );
97
103
  } else {
98
104
  return NativeImageLoaderWin32.prefetchImage(url);
99
105
  }
100
106
  }
101
107
 
102
- function prefetch(url: string): any {
108
+ function prefetch(url: string): Promise<boolean> {
103
109
  return NativeImageLoaderWin32.prefetchImage(url);
104
110
  }
105
111
 
106
112
  async function queryCache(
107
113
  urls: Array<string>,
108
114
  ): Promise<{[string]: 'memory' | 'disk' | 'disk/memory', ...}> {
109
- return await NativeImageLoaderWin32.queryCache(urls);
115
+ return NativeImageLoaderWin32.queryCache(urls);
110
116
  }
111
117
 
112
- export type ImageComponentStatics = $ReadOnly<{|
113
- getSize: typeof getSize,
114
- getSizeWithHeaders: typeof getSizeWithHeaders,
115
- prefetch: typeof prefetch,
116
- prefetchWithMetadata: typeof prefetchWithMetadata,
117
- abortPrefetch?: number => void,
118
- queryCache: typeof queryCache,
119
- resolveAssetSource: typeof resolveAssetSource,
120
- |}>;
121
-
122
118
  /**
123
119
  * A React component for displaying different types of images,
124
120
  * including network images, static resources, temporary local images, and
@@ -126,9 +122,7 @@ export type ImageComponentStatics = $ReadOnly<{|
126
122
  *
127
123
  * See https://reactnative.dev/docs/image
128
124
  */
129
- /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
130
- * LTI update could not be added via codemod */
131
- const BaseImage = (props: ImagePropsType, forwardedRef) => {
125
+ let BaseImage: AbstractImageIOS = React.forwardRef((props, forwardedRef) => {
132
126
  const source = getImageSourcesFromImageProps(props) || {
133
127
  uri: undefined,
134
128
  width: undefined,
@@ -136,16 +130,23 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
136
130
  };
137
131
 
138
132
  let sources;
139
- let style: ImageStyleProp;
133
+ let style: ImageStyle;
134
+
140
135
  if (Array.isArray(source)) {
141
- // $FlowFixMe[underconstrained-implicit-instantiation]
142
- style = flattenStyle([styles.base, props.style]) || {};
136
+ style =
137
+ flattenStyle<ImageStyleProp>([styles.base, props.style]) ||
138
+ ({}: ImageStyle);
143
139
  sources = source;
144
140
  } else {
145
- // $FlowFixMe[incompatible-type]
146
- const {width = props.width, height = props.height, uri} = source;
147
- // $FlowFixMe[underconstrained-implicit-instantiation]
148
- style = flattenStyle([{width, height}, styles.base, props.style]) || {};
141
+ const {uri} = source;
142
+ const width = source.width ?? props.width;
143
+ const height = source.height ?? props.height;
144
+ style =
145
+ flattenStyle<ImageStyleProp>([
146
+ {width, height},
147
+ styles.base,
148
+ props.style,
149
+ ]) || ({}: ImageStyle);
149
150
  sources = [source];
150
151
 
151
152
  if (uri === '') {
@@ -154,16 +155,12 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
154
155
  }
155
156
 
156
157
  const objectFit =
157
- // $FlowFixMe[prop-missing]
158
- style && style.objectFit
159
- ? // $FlowFixMe[incompatible-call]
160
- convertObjectFitToResizeMode(style.objectFit)
158
+ style.objectFit != null
159
+ ? convertObjectFitToResizeMode(style.objectFit)
161
160
  : null;
162
161
  const resizeMode =
163
- // $FlowFixMe[prop-missing]
164
- objectFit || props.resizeMode || (style && style.resizeMode) || 'cover';
165
- // $FlowFixMe[prop-missing]
166
- const tintColor = props.tintColor || style.tintColor;
162
+ objectFit || props.resizeMode || style.resizeMode || 'cover';
163
+ const tintColor = props.tintColor ?? style.tintColor;
167
164
 
168
165
  if (props.children != null) {
169
166
  throw new Error(
@@ -196,6 +193,8 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
196
193
  };
197
194
  const accessibilityLabel = props['aria-label'] ?? props.accessibilityLabel;
198
195
 
196
+ const actualRef = useWrapRefWithImageAttachedCallbacks(forwardedRef);
197
+
199
198
  return (
200
199
  // [Win32
201
200
  <TextAncestor.Consumer>
@@ -215,9 +214,8 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
215
214
  {...restProps}
216
215
  accessible={props.alt !== undefined ? true : props.accessible}
217
216
  accessibilityLabel={accessibilityLabel ?? props.alt}
218
- ref={forwardedRef}
217
+ ref={actualRef}
219
218
  style={style}
220
- // $FlowFixMe[incompatible-type]
221
219
  resizeMode={resizeMode}
222
220
  tintColor={tintColor}
223
221
  source={sources}
@@ -230,18 +228,16 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
230
228
  }}
231
229
  </TextAncestor.Consumer>
232
230
  );
233
- };
234
-
235
- const ImageForwardRef = React.forwardRef<
236
- ImagePropsType,
237
- React.ElementRef<typeof ImageViewNativeComponent>,
238
- >(BaseImage);
231
+ });
239
232
 
240
- let Image = ImageForwardRef;
241
- if (ImageInjection.unstable_createImageComponent != null) {
242
- Image = ImageInjection.unstable_createImageComponent(Image);
233
+ const imageComponentDecorator = unstable_getImageComponentDecorator();
234
+ if (imageComponentDecorator != null) {
235
+ BaseImage = imageComponentDecorator(BaseImage);
243
236
  }
244
237
 
238
+ // $FlowExpectedError[incompatible-type] Eventually we need to move these functions from statics of the component to exports in the module.
239
+ const Image: ImageIOS = BaseImage;
240
+
245
241
  Image.displayName = 'Image';
246
242
 
247
243
  /**
@@ -249,9 +245,7 @@ Image.displayName = 'Image';
249
245
  *
250
246
  * See https://reactnative.dev/docs/image#getsize
251
247
  */
252
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
253
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
254
- * delete this comment and run Flow. */
248
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
255
249
  Image.getSize = getSize;
256
250
 
257
251
  /**
@@ -260,9 +254,7 @@ Image.getSize = getSize;
260
254
  *
261
255
  * See https://reactnative.dev/docs/image#getsizewithheaders
262
256
  */
263
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
264
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
265
- * delete this comment and run Flow. */
257
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
266
258
  Image.getSizeWithHeaders = getSizeWithHeaders;
267
259
 
268
260
  /**
@@ -271,9 +263,7 @@ Image.getSizeWithHeaders = getSizeWithHeaders;
271
263
  *
272
264
  * See https://reactnative.dev/docs/image#prefetch
273
265
  */
274
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
275
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
276
- * delete this comment and run Flow. */
266
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
277
267
  Image.prefetch = prefetch;
278
268
 
279
269
  /**
@@ -282,9 +272,7 @@ Image.prefetch = prefetch;
282
272
  *
283
273
  * See https://reactnative.dev/docs/image#prefetch
284
274
  */
285
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
286
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
287
- * delete this comment and run Flow. */
275
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
288
276
  Image.prefetchWithMetadata = prefetchWithMetadata;
289
277
 
290
278
  /**
@@ -292,9 +280,7 @@ Image.prefetchWithMetadata = prefetchWithMetadata;
292
280
  *
293
281
  * See https://reactnative.dev/docs/image#querycache
294
282
  */
295
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
296
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
297
- * delete this comment and run Flow. */
283
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
298
284
  Image.queryCache = queryCache;
299
285
 
300
286
  /**
@@ -302,21 +288,13 @@ Image.queryCache = queryCache;
302
288
  *
303
289
  * See https://reactnative.dev/docs/image#resolveassetsource
304
290
  */
305
- /* $FlowFixMe[prop-missing] (>=0.89.0 site=react_native_ios_fb) This comment
306
- * suppresses an error found when Flow v0.89 was deployed. To see the error,
307
- * delete this comment and run Flow. */
291
+ // $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.
308
292
  Image.resolveAssetSource = resolveAssetSource;
309
293
 
310
- /**
311
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
312
- * releases. This is deprecated and will be removed in the future.
313
- */
314
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
315
-
316
294
  const styles = StyleSheet.create({
317
295
  base: {
318
296
  overflow: 'hidden',
319
297
  },
320
298
  });
321
299
 
322
- module.exports = ((Image: any): ImageIOS);
300
+ module.exports = Image;
@@ -4,7 +4,7 @@
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
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
@@ -45,7 +45,7 @@ import * as React from 'react';
45
45
  * ```
46
46
  */
47
47
  class ImageBackground extends React.Component<ImageBackgroundProps> {
48
- setNativeProps(props: Object) {
48
+ setNativeProps(props: {...}) {
49
49
  // Work-around flow
50
50
  const viewRef = this._viewRef;
51
51
  if (viewRef) {