@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
@@ -5,41 +5,42 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  * @format
8
- * @flow
8
+ * @flow strict-local
9
9
  */
10
10
 
11
- // Resolves an asset into a `source` for `Image`.
12
-
13
- 'use strict';
11
+ // Utilities for resolving an asset into a `source` for e.g. `Image`
14
12
 
15
13
  import type {ResolvedAssetSource} from './AssetSourceResolver';
14
+ import type {ImageSource} from './ImageSource';
15
+
16
+ import SourceCode from '../NativeModules/specs/NativeSourceCode';
16
17
 
17
18
  const AssetSourceResolver = require('./AssetSourceResolver');
18
19
  const {pickScale} = require('./AssetUtils');
19
20
  const AssetRegistry = require('@react-native/assets-registry/registry');
20
21
 
21
- let _customSourceTransformer, _serverURL, _scriptURL;
22
+ type CustomSourceTransformer = (
23
+ resolver: AssetSourceResolver,
24
+ ) => ?ResolvedAssetSource;
22
25
 
26
+ let _customSourceTransformers: Array<CustomSourceTransformer> = [];
27
+ let _serverURL: ?string;
28
+ let _scriptURL: ?string;
23
29
  let _sourceCodeScriptURL: ?string;
30
+
24
31
  function getSourceCodeScriptURL(): ?string {
25
- if (_sourceCodeScriptURL) {
32
+ if (_sourceCodeScriptURL != null) {
26
33
  return _sourceCodeScriptURL;
27
34
  }
28
35
 
29
- let sourceCode =
30
- global.nativeExtensions && global.nativeExtensions.SourceCode;
31
- if (!sourceCode) {
32
- sourceCode = require('../NativeModules/specs/NativeSourceCode').default;
33
- }
34
- _sourceCodeScriptURL = sourceCode.getConstants().scriptURL;
36
+ _sourceCodeScriptURL = SourceCode.getConstants().scriptURL;
35
37
  return _sourceCodeScriptURL;
36
38
  }
37
39
 
38
40
  function getDevServerURL(): ?string {
39
41
  if (_serverURL === undefined) {
40
42
  const sourceCodeScriptURL = getSourceCodeScriptURL();
41
- const match =
42
- sourceCodeScriptURL && sourceCodeScriptURL.match(/^https?:\/\/.*?\//);
43
+ const match = sourceCodeScriptURL?.match(/^https?:\/\/.*?\//);
43
44
  if (match) {
44
45
  // jsBundle was loaded from network
45
46
  _serverURL = match[0];
@@ -52,19 +53,25 @@ function getDevServerURL(): ?string {
52
53
  }
53
54
 
54
55
  function _coerceLocalScriptURL(scriptURL: ?string): ?string {
55
- if (scriptURL) {
56
- if (scriptURL.startsWith('assets://')) {
56
+ let normalizedScriptURL = scriptURL;
57
+
58
+ if (normalizedScriptURL != null) {
59
+ if (normalizedScriptURL.startsWith('assets://')) {
57
60
  // android: running from within assets, no offline path to use
58
61
  return null;
59
62
  }
60
- scriptURL = scriptURL.substring(0, scriptURL.lastIndexOf('/') + 1);
61
- if (!scriptURL.includes('://')) {
63
+ normalizedScriptURL = normalizedScriptURL.substring(
64
+ 0,
65
+ normalizedScriptURL.lastIndexOf('/') + 1,
66
+ );
67
+ if (!normalizedScriptURL.includes('://')) {
62
68
  // Add file protocol in case we have an absolute file path and not a URL.
63
69
  // This shouldn't really be necessary. scriptURL should be a URL.
64
- scriptURL = 'file://' + scriptURL;
70
+ normalizedScriptURL = 'file://' + normalizedScriptURL;
65
71
  }
66
72
  }
67
- return scriptURL;
73
+
74
+ return normalizedScriptURL;
68
75
  }
69
76
 
70
77
  function getScriptURL(): ?string {
@@ -74,18 +81,35 @@ function getScriptURL(): ?string {
74
81
  return _scriptURL;
75
82
  }
76
83
 
84
+ /**
85
+ * `transformer` can optionally be used to apply a custom transformation when
86
+ * resolving an asset source. This methods overrides all other custom transformers
87
+ * that may have been previously registered.
88
+ */
77
89
  function setCustomSourceTransformer(
78
- transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource,
90
+ transformer: CustomSourceTransformer,
79
91
  ): void {
80
- _customSourceTransformer = transformer;
92
+ _customSourceTransformers = [transformer];
93
+ }
94
+
95
+ /**
96
+ * Adds a `transformer` into the chain of custom source transformers, which will
97
+ * be applied in the order registered, until one returns a non-null value.
98
+ */
99
+ function addCustomSourceTransformer(
100
+ transformer: CustomSourceTransformer,
101
+ ): void {
102
+ _customSourceTransformers.push(transformer);
81
103
  }
82
104
 
83
105
  /**
84
106
  * `source` is either a number (opaque type returned by require('./foo.png'))
85
107
  * or an `ImageSource` like { uri: '<http location || file path>' }
86
108
  */
87
- function resolveAssetSource(source: any): ?ResolvedAssetSource {
88
- if (typeof source === 'object') {
109
+ function resolveAssetSource(source: ?ImageSource): ?ResolvedAssetSource {
110
+ if (source == null || typeof source === 'object') {
111
+ // $FlowFixMe[incompatible-exact] `source` doesn't exactly match `ResolvedAssetSource`
112
+ // $FlowFixMe[incompatible-return] `source` doesn't exactly match `ResolvedAssetSource`
89
113
  return source;
90
114
  }
91
115
 
@@ -99,12 +123,21 @@ function resolveAssetSource(source: any): ?ResolvedAssetSource {
99
123
  getScriptURL(),
100
124
  asset,
101
125
  );
102
- if (_customSourceTransformer) {
103
- return _customSourceTransformer(resolver);
126
+
127
+ // Apply (chained) custom source transformers, if any
128
+ if (_customSourceTransformers) {
129
+ for (const customSourceTransformer of _customSourceTransformers) {
130
+ const transformedSource = customSourceTransformer(resolver);
131
+ if (transformedSource != null) {
132
+ return transformedSource;
133
+ }
134
+ }
104
135
  }
136
+
105
137
  return resolver.defaultAsset();
106
138
  }
107
139
 
108
140
  resolveAssetSource.pickScale = pickScale;
109
141
  resolveAssetSource.setCustomSourceTransformer = setCustomSourceTransformer;
142
+ resolveAssetSource.addCustomSourceTransformer = addCustomSourceTransformer;
110
143
  module.exports = resolveAssetSource;
@@ -10,12 +10,12 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {InspectorData} from '../Renderer/shims/ReactNativeTypes';
13
14
  import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
14
15
 
15
16
  const TouchableHighlight = require('../Components/Touchable/TouchableHighlight');
16
17
  const TouchableWithoutFeedback = require('../Components/Touchable/TouchableWithoutFeedback');
17
18
  const View = require('../Components/View/View');
18
- const openFileInEditor = require('../Core/Devtools/openFileInEditor');
19
19
  const flattenStyle = require('../StyleSheet/flattenStyle');
20
20
  const StyleSheet = require('../StyleSheet/StyleSheet');
21
21
  const Text = require('../Text/Text');
@@ -25,13 +25,8 @@ const StyleInspector = require('./StyleInspector');
25
25
  const React = require('react');
26
26
 
27
27
  type Props = $ReadOnly<{|
28
- hierarchy: Array<{|name: string|}>,
28
+ hierarchy: ?InspectorData['hierarchy'],
29
29
  style?: ?ViewStyleProp,
30
- source?: ?{
31
- fileName?: string,
32
- lineNumber?: number,
33
- ...
34
- },
35
30
  frame?: ?Object,
36
31
  selection?: ?number,
37
32
  setSelection?: number => mixed,
@@ -41,50 +36,40 @@ class ElementProperties extends React.Component<Props> {
41
36
  render(): React.Node {
42
37
  const style = flattenStyle(this.props.style);
43
38
  const selection = this.props.selection;
44
- let openFileButton;
45
- const source = this.props.source;
46
- const {fileName, lineNumber} = source || {};
47
- if (fileName && lineNumber) {
48
- const parts = fileName.split('/');
49
- const fileNameShort = parts[parts.length - 1];
50
- openFileButton = (
51
- <TouchableHighlight
52
- style={styles.openButton}
53
- onPress={openFileInEditor.bind(null, fileName, lineNumber)}>
54
- <Text style={styles.openButtonTitle} numberOfLines={1}>
55
- {fileNameShort}:{lineNumber}
56
- </Text>
57
- </TouchableHighlight>
58
- );
59
- }
39
+
60
40
  // Without the `TouchableWithoutFeedback`, taps on this inspector pane
61
41
  // would change the inspected element to whatever is under the inspector
62
42
  return (
63
43
  <TouchableWithoutFeedback>
64
44
  <View style={styles.info}>
65
45
  <View style={styles.breadcrumb}>
66
- {mapWithSeparator(
67
- this.props.hierarchy,
68
- (hierarchyItem, i): React.MixedElement => (
69
- <TouchableHighlight
70
- key={'item-' + i}
71
- style={[styles.breadItem, i === selection && styles.selected]}
72
- // $FlowFixMe[not-a-function] found when converting React.createClass to ES6
73
- onPress={() => this.props.setSelection(i)}>
74
- <Text style={styles.breadItemText}>{hierarchyItem.name}</Text>
75
- </TouchableHighlight>
76
- ),
77
- (i): React.MixedElement => (
78
- <Text key={'sep-' + i} style={styles.breadSep}>
79
- &#9656;
80
- </Text>
81
- ),
82
- )}
46
+ {this.props.hierarchy != null &&
47
+ mapWithSeparator(
48
+ this.props.hierarchy,
49
+ (hierarchyItem, i): React.MixedElement => (
50
+ <TouchableHighlight
51
+ key={'item-' + i}
52
+ style={[
53
+ styles.breadItem,
54
+ i === selection && styles.selected,
55
+ ]}
56
+ // $FlowFixMe[not-a-function] found when converting React.createClass to ES6
57
+ onPress={() => this.props.setSelection(i)}>
58
+ <Text style={styles.breadItemText}>
59
+ {hierarchyItem.name}
60
+ </Text>
61
+ </TouchableHighlight>
62
+ ),
63
+ (i): React.MixedElement => (
64
+ <Text key={'sep-' + i} style={styles.breadSep}>
65
+ &#9656;
66
+ </Text>
67
+ ),
68
+ )}
83
69
  </View>
84
70
  <View style={styles.row}>
85
71
  <View style={styles.col}>
86
72
  <StyleInspector style={style} />
87
- {openFileButton}
88
73
  </View>
89
74
  {<BoxInspector style={style} frame={this.props.frame} />}
90
75
  </View>
@@ -130,17 +115,6 @@ const styles = StyleSheet.create({
130
115
  info: {
131
116
  padding: 10,
132
117
  },
133
- openButton: {
134
- padding: 10,
135
- backgroundColor: '#000',
136
- marginVertical: 5,
137
- marginRight: 5,
138
- borderRadius: 2,
139
- },
140
- openButtonTitle: {
141
- color: 'white',
142
- fontSize: 8,
143
- },
144
118
  });
145
119
 
146
120
  module.exports = ElementProperties;
@@ -10,10 +10,14 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {TouchedViewDataAtPoint} from '../Renderer/shims/ReactNativeTypes';
14
- import type {HostRef} from './getInspectorDataForViewAtPoint';
13
+ import type {InspectedViewRef} from '../ReactNative/AppContainer-dev';
14
+ import type {
15
+ InspectorData,
16
+ TouchedViewDataAtPoint,
17
+ } from '../Renderer/shims/ReactNativeTypes';
18
+ import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
19
+ import type {ReactDevToolsAgent} from '../Types/ReactDevToolsTypes';
15
20
 
16
- const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
17
21
  const View = require('../Components/View/View');
18
22
  const PressabilityDebug = require('../Pressability/PressabilityDebug');
19
23
  const {findNodeHandle} = require('../ReactNative/RendererProxy');
@@ -25,114 +29,68 @@ const InspectorOverlay = require('./InspectorOverlay');
25
29
  const InspectorPanel = require('./InspectorPanel');
26
30
  const React = require('react');
27
31
 
28
- const hook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;
29
-
30
- // Required for React DevTools to view/edit React Native styles in Flipper.
31
- // Flipper doesn't inject these values when initializing DevTools.
32
- hook.resolveRNStyle = require('../StyleSheet/flattenStyle');
33
- hook.nativeStyleEditorValidAttributes = Object.keys(ReactNativeStyleAttributes);
34
-
35
- class Inspector extends React.Component<
36
- {
37
- inspectedView: ?HostRef,
38
- onRequestRerenderApp: (callback: (instance: ?HostRef) => void) => void,
39
- ...
40
- },
41
- {
42
- devtoolsAgent: ?Object,
43
- hierarchy: any,
44
- panelPos: string,
45
- inspecting: boolean,
46
- selection: ?number,
47
- perfing: boolean,
48
- inspected: any,
49
- inspectedView: ?HostRef,
50
- networking: boolean,
51
- ...
52
- },
53
- > {
54
- _hideTimeoutID: TimeoutID | null = null;
55
- _subs: ?Array<() => void>;
56
- _setTouchedViewData: ?(TouchedViewDataAtPoint) => void;
57
-
58
- constructor(props: Object) {
59
- super(props);
60
-
61
- this.state = {
62
- devtoolsAgent: null,
63
- hierarchy: null,
64
- panelPos: 'bottom',
65
- inspecting: true,
66
- perfing: false,
67
- inspected: null,
68
- selection: null,
69
- inspectedView: this.props.inspectedView,
70
- networking: false,
71
- };
72
- }
73
-
74
- componentDidMount() {
75
- hook.on('react-devtools', this._attachToDevtools);
76
- // if devtools is already started
77
- if (hook.reactDevtoolsAgent) {
78
- this._attachToDevtools(hook.reactDevtoolsAgent);
79
- }
80
- }
81
-
82
- componentWillUnmount() {
83
- if (this._subs) {
84
- this._subs.map(fn => fn());
32
+ const {useState} = React;
33
+
34
+ type PanelPosition = 'top' | 'bottom';
35
+ type SelectedTab =
36
+ | 'elements-inspector'
37
+ | 'network-profiling'
38
+ | 'performance-profiling';
39
+
40
+ export type InspectedElementFrame = TouchedViewDataAtPoint['frame'];
41
+ export type InspectedElement = $ReadOnly<{
42
+ frame: InspectedElementFrame,
43
+ style?: ViewStyleProp,
44
+ }>;
45
+ export type ElementsHierarchy = InspectorData['hierarchy'];
46
+
47
+ type Props = {
48
+ inspectedViewRef: InspectedViewRef,
49
+ onRequestRerenderApp: () => void,
50
+ reactDevToolsAgent?: ReactDevToolsAgent,
51
+ };
52
+
53
+ function Inspector({
54
+ inspectedViewRef,
55
+ onRequestRerenderApp,
56
+ reactDevToolsAgent,
57
+ }: Props): React.Node {
58
+ const [selectedTab, setSelectedTab] =
59
+ useState<?SelectedTab>('elements-inspector');
60
+
61
+ const [panelPosition, setPanelPosition] = useState<PanelPosition>('bottom');
62
+ const [inspectedElement, setInspectedElement] =
63
+ useState<?InspectedElement>(null);
64
+ const [selectionIndex, setSelectionIndex] = useState<?number>(null);
65
+ const [elementsHierarchy, setElementsHierarchy] =
66
+ useState<?ElementsHierarchy>(null);
67
+
68
+ const setSelection = (i: number) => {
69
+ const hierarchyItem = elementsHierarchy?.[i];
70
+ if (hierarchyItem == null) {
71
+ return;
85
72
  }
86
- hook.off('react-devtools', this._attachToDevtools);
87
- this._setTouchedViewData = null;
88
- }
89
-
90
- UNSAFE_componentWillReceiveProps(newProps: Object) {
91
- this.setState({inspectedView: newProps.inspectedView});
92
- }
93
-
94
- _attachToDevtools = (agent: Object) => {
95
- agent.addListener('shutdown', this._onAgentShutdown);
96
-
97
- this.setState({
98
- devtoolsAgent: agent,
99
- });
100
- };
101
-
102
- _onAgentShutdown = () => {
103
- const agent = this.state.devtoolsAgent;
104
- if (agent != null) {
105
- agent.removeListener('shutdown', this._onAgentShutdown);
106
-
107
- this.setState({devtoolsAgent: null});
108
- }
109
- };
110
73
 
111
- setSelection(i: number) {
112
- const hierarchyItem = this.state.hierarchy[i];
113
- // we pass in findNodeHandle as the method is injected
114
- const {measure, props, source} =
115
- hierarchyItem.getInspectorData(findNodeHandle);
74
+ // We pass in findNodeHandle as the method is injected
75
+ const {measure, props} = hierarchyItem.getInspectorData(findNodeHandle);
116
76
 
117
77
  measure((x, y, width, height, left, top) => {
118
- this.setState({
119
- inspected: {
120
- frame: {left, top, width, height},
121
- style: props.style,
122
- source,
123
- },
124
- selection: i,
78
+ // $FlowFixMe[incompatible-call] `props` from InspectorData are defined as <string, string> dictionary, which is incompatible with ViewStyleProp
79
+ setInspectedElement({
80
+ frame: {left, top, width, height},
81
+ style: props.style,
125
82
  });
83
+
84
+ setSelectionIndex(i);
126
85
  });
127
- }
86
+ };
128
87
 
129
- onTouchPoint(locationX: number, locationY: number) {
130
- this._setTouchedViewData = viewData => {
88
+ const onTouchPoint = (locationX: number, locationY: number) => {
89
+ const setTouchedViewData = (viewData: TouchedViewDataAtPoint) => {
131
90
  const {
132
91
  hierarchy,
133
92
  props,
134
93
  selectedIndex,
135
- source,
136
94
  frame,
137
95
  pointerY,
138
96
  touchedViewTag,
@@ -142,111 +100,89 @@ class Inspector extends React.Component<
142
100
  // Sync the touched view with React DevTools.
143
101
  // Note: This is Paper only. To support Fabric,
144
102
  // DevTools needs to be updated to not rely on view tags.
145
- const agent = this.state.devtoolsAgent;
146
- if (agent) {
147
- agent.selectNode(findNodeHandle(touchedViewTag));
103
+ if (reactDevToolsAgent) {
104
+ reactDevToolsAgent.selectNode(findNodeHandle(touchedViewTag));
148
105
  if (closestInstance != null) {
149
- agent.selectNode(closestInstance);
106
+ reactDevToolsAgent.selectNode(closestInstance);
150
107
  }
151
108
  }
152
109
 
153
- this.setState({
154
- panelPos:
155
- pointerY > Dimensions.get('window').height / 2 ? 'top' : 'bottom',
156
- selection: selectedIndex,
157
- hierarchy,
158
- inspected: {
159
- style: props.style,
160
- frame,
161
- source,
162
- },
110
+ setPanelPosition(
111
+ pointerY > Dimensions.get('window').height / 2 ? 'top' : 'bottom',
112
+ );
113
+ setSelectionIndex(selectedIndex);
114
+ setElementsHierarchy(hierarchy);
115
+ // $FlowFixMe[incompatible-call] `props` from InspectorData are defined as <string, string> dictionary, which is incompatible with ViewStyleProp
116
+ setInspectedElement({
117
+ frame,
118
+ style: props.style,
163
119
  });
164
120
  };
121
+
165
122
  getInspectorDataForViewAtPoint(
166
- this.state.inspectedView,
123
+ inspectedViewRef.current,
167
124
  locationX,
168
125
  locationY,
169
126
  viewData => {
170
- if (this._setTouchedViewData != null) {
171
- this._setTouchedViewData(viewData);
172
- this._setTouchedViewData = null;
173
- }
127
+ setTouchedViewData(viewData);
174
128
  return false;
175
129
  },
176
130
  );
177
- }
131
+ };
178
132
 
179
- setPerfing(val: boolean) {
180
- this.setState({
181
- perfing: val,
182
- inspecting: false,
183
- inspected: null,
184
- networking: false,
185
- });
186
- }
133
+ const setInspecting = (enabled: boolean) => {
134
+ setSelectedTab(enabled ? 'elements-inspector' : null);
135
+ setInspectedElement(null);
136
+ };
187
137
 
188
- setInspecting(val: boolean) {
189
- this.setState({
190
- inspecting: val,
191
- inspected: null,
192
- });
193
- }
138
+ const setPerfing = (enabled: boolean) => {
139
+ setSelectedTab(enabled ? 'performance-profiling' : null);
140
+ setInspectedElement(null);
141
+ };
194
142
 
195
- setTouchTargeting(val: boolean) {
196
- PressabilityDebug.setEnabled(val);
197
- this.props.onRequestRerenderApp(inspectedView => {
198
- this.setState({inspectedView});
199
- });
200
- }
143
+ const setNetworking = (enabled: boolean) => {
144
+ setSelectedTab(enabled ? 'network-profiling' : null);
145
+ setInspectedElement(null);
146
+ };
201
147
 
202
- setNetworking(val: boolean) {
203
- this.setState({
204
- networking: val,
205
- perfing: false,
206
- inspecting: false,
207
- inspected: null,
208
- });
209
- }
148
+ const setTouchTargeting = (val: boolean) => {
149
+ PressabilityDebug.setEnabled(val);
150
+ onRequestRerenderApp();
151
+ };
210
152
 
211
- render(): React.Node {
212
- const panelContainerStyle =
213
- this.state.panelPos === 'bottom'
214
- ? {bottom: 0}
215
- : {top: Platform.OS === 'ios' ? 20 : 0};
216
- return (
217
- <View style={styles.container} pointerEvents="box-none">
218
- {this.state.inspecting && (
219
- <InspectorOverlay
220
- inspected={this.state.inspected}
221
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
222
- onTouchPoint={this.onTouchPoint.bind(this)}
223
- />
224
- )}
225
- <View style={[styles.panelContainer, panelContainerStyle]}>
226
- <InspectorPanel
227
- devtoolsIsOpen={!!this.state.devtoolsAgent}
228
- inspecting={this.state.inspecting}
229
- perfing={this.state.perfing}
230
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
231
- setPerfing={this.setPerfing.bind(this)}
232
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
233
- setInspecting={this.setInspecting.bind(this)}
234
- inspected={this.state.inspected}
235
- hierarchy={this.state.hierarchy}
236
- selection={this.state.selection}
237
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
238
- setSelection={this.setSelection.bind(this)}
239
- touchTargeting={PressabilityDebug.isEnabled()}
240
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
241
- setTouchTargeting={this.setTouchTargeting.bind(this)}
242
- networking={this.state.networking}
243
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
244
- setNetworking={this.setNetworking.bind(this)}
245
- />
246
- </View>
153
+ const panelContainerStyle =
154
+ panelPosition === 'bottom'
155
+ ? {bottom: 0}
156
+ : Platform.select({ios: {top: 0}, default: {top: 0}});
157
+
158
+ return (
159
+ <View style={styles.container} pointerEvents="box-none">
160
+ {selectedTab === 'elements-inspector' && (
161
+ <InspectorOverlay
162
+ inspected={inspectedElement}
163
+ onTouchPoint={onTouchPoint}
164
+ />
165
+ )}
166
+
167
+ <View style={[styles.panelContainer, panelContainerStyle]}>
168
+ <InspectorPanel
169
+ devtoolsIsOpen={!!reactDevToolsAgent}
170
+ inspecting={selectedTab === 'elements-inspector'}
171
+ perfing={selectedTab === 'performance-profiling'}
172
+ setPerfing={setPerfing}
173
+ setInspecting={setInspecting}
174
+ inspected={inspectedElement}
175
+ hierarchy={elementsHierarchy}
176
+ selection={selectionIndex}
177
+ setSelection={setSelection}
178
+ touchTargeting={PressabilityDebug.isEnabled()}
179
+ setTouchTargeting={setTouchTargeting}
180
+ networking={selectedTab === 'network-profiling'}
181
+ setNetworking={setNetworking}
182
+ />
247
183
  </View>
248
- );
249
- }
184
+ </View>
185
+ );
250
186
  }
251
187
 
252
188
  const styles = StyleSheet.create({