@office-iss/react-native-win32 0.73.1 → 0.74.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/.eslintignore +1 -1
  2. package/.flowconfig +11 -3
  3. package/CHANGELOG.json +422 -44
  4. package/CHANGELOG.md +162 -26
  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/PopupMenuAndroid/PopupMenuAndroid.android.js +69 -0
  61. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +24 -0
  62. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +33 -0
  63. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +13 -0
  64. package/Libraries/Components/Pressable/Pressable.js +1 -1
  65. package/Libraries/Components/Pressable/Pressable.win32.js +1 -1
  66. package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
  67. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
  68. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
  69. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
  70. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  71. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
  72. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
  73. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  74. package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
  75. package/Libraries/Components/ScrollView/ScrollView.js +12 -38
  76. package/Libraries/Components/ScrollView/ScrollView.win32.js +12 -38
  77. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
  78. package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
  79. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
  80. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
  81. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
  82. package/Libraries/Components/Switch/Switch.js +0 -2
  83. package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
  84. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
  85. package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
  86. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
  87. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
  88. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +8 -8
  89. package/Libraries/Components/TextInput/Tests/TextInputTest.js +127 -127
  90. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  91. package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
  92. package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
  93. package/Libraries/Components/TextInput/TextInput.js +65 -32
  94. package/Libraries/Components/TextInput/TextInput.win32.js +70 -37
  95. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
  96. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  97. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +8 -8
  98. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +343 -344
  99. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  100. package/Libraries/Components/Touchable/Touchable.js +2 -3
  101. package/Libraries/Components/Touchable/Touchable.win32.js +2 -3
  102. package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
  103. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  104. package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
  105. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -37
  106. package/Libraries/Components/Touchable/TouchableWin32.Props.js +2 -2
  107. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  108. package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
  109. package/Libraries/Components/Touchable/TouchableWin32.Types.js +2 -2
  110. package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -1
  111. package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
  112. package/Libraries/Components/Touchable/TouchableWin32.js +506 -506
  113. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  114. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
  115. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
  116. package/Libraries/Components/View/View.js +0 -11
  117. package/Libraries/Components/View/View.win32.js +18 -17
  118. package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  119. package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  120. package/Libraries/Components/View/ViewPropTypes.js +36 -36
  121. package/Libraries/Components/View/ViewPropTypes.win32.js +36 -36
  122. package/Libraries/Core/InitializeCore.js +1 -1
  123. package/Libraries/Core/NativeExceptionsManager.js +3 -93
  124. package/Libraries/Core/ReactNativeVersion.js +12 -6
  125. package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
  126. package/Libraries/Core/ReactNativeVersionCheck.win32.js +6 -6
  127. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
  128. package/Libraries/Core/Timers/NativeTiming.js +3 -16
  129. package/Libraries/Core/registerCallableModule.js +42 -0
  130. package/Libraries/Core/setUpPerformance.js +2 -2
  131. package/Libraries/Core/setUpPerformanceObserver.js +3 -1
  132. package/Libraries/Debugging/DebuggingOverlay.js +111 -0
  133. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  134. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  135. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  136. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
  137. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
  138. package/Libraries/Image/AssetSourceResolver.js +5 -5
  139. package/Libraries/Image/AssetUtils.js +4 -5
  140. package/Libraries/Image/Image.android.js +146 -174
  141. package/Libraries/Image/Image.d.ts +1 -1
  142. package/Libraries/Image/Image.ios.js +53 -79
  143. package/Libraries/Image/Image.win32.js +52 -74
  144. package/Libraries/Image/ImageBackground.js +2 -2
  145. package/Libraries/Image/ImageInjection.js +76 -18
  146. package/Libraries/Image/ImageTypes.d.ts +25 -25
  147. package/Libraries/Image/ImageTypes.flow.js +71 -0
  148. package/Libraries/Image/ImageTypes.js +7 -7
  149. package/Libraries/Image/ImageTypes.js.map +1 -1
  150. package/Libraries/Image/ImageUtils.js +1 -1
  151. package/Libraries/Image/ImageViewNativeComponent.js +18 -0
  152. package/Libraries/Image/NativeImageEditor.js +3 -42
  153. package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
  154. package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
  155. package/Libraries/Image/NativeImageLoaderWin32.js +4 -36
  156. package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
  157. package/Libraries/Image/NativeImageStoreIOS.js +3 -23
  158. package/Libraries/Image/Tests/ImageWin32Test.d.ts +8 -8
  159. package/Libraries/Image/Tests/ImageWin32Test.js +21 -21
  160. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  161. package/Libraries/Image/resolveAssetSource.js +59 -26
  162. package/Libraries/Inspector/ElementProperties.js +26 -52
  163. package/Libraries/Inspector/Inspector.js +122 -186
  164. package/Libraries/Inspector/Inspector.win32.js +118 -185
  165. package/Libraries/Inspector/InspectorOverlay.js +21 -33
  166. package/Libraries/Inspector/InspectorOverlay.win32.js +22 -33
  167. package/Libraries/Inspector/InspectorPanel.js +3 -17
  168. package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
  169. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
  170. package/Libraries/Interaction/FrameRateLogger.js +8 -18
  171. package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
  172. package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
  173. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
  174. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
  175. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
  176. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
  177. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
  178. package/Libraries/Linking/NativeIntentAndroid.js +3 -20
  179. package/Libraries/Linking/NativeLinkingManager.js +3 -17
  180. package/Libraries/Lists/FillRateHelper.js +1 -1
  181. package/Libraries/Lists/FlatList.d.ts +2 -2
  182. package/Libraries/Lists/FlatList.js +6 -1
  183. package/Libraries/Lists/SectionList.d.ts +6 -1
  184. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  185. package/Libraries/Lists/VirtualizeUtils.js +1 -1
  186. package/Libraries/Lists/VirtualizedList.js +1 -1
  187. package/Libraries/Lists/VirtualizedListContext.js +1 -1
  188. package/Libraries/Lists/VirtualizedSectionList.js +1 -1
  189. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  190. package/Libraries/Modal/Modal.js +43 -11
  191. package/Libraries/Modal/NativeModalManager.js +3 -11
  192. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
  193. package/Libraries/MutationObserver/MutationObserver.js +1 -1
  194. package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
  195. package/Libraries/MutationObserver/MutationRecord.js +12 -10
  196. package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
  197. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
  198. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  199. package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
  200. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
  201. package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
  202. package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
  203. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
  204. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
  205. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
  206. package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
  207. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
  208. package/Libraries/Network/FormData.js +3 -1
  209. package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
  210. package/Libraries/Network/NativeNetworkingIOS.js +4 -28
  211. package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
  212. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
  213. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  214. package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
  215. package/Libraries/PersonaCoin/PersonaCoin.js +14 -14
  216. package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -1
  217. package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
  218. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +19 -19
  219. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -1
  220. package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
  221. package/Libraries/PersonaCoin/PersonaCoinTypes.js +23 -23
  222. package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -1
  223. package/Libraries/Pressability/Pressability.js +12 -2
  224. package/Libraries/Pressability/Pressability.win32.js +12 -2
  225. package/Libraries/Pressability/usePressability.js +7 -0
  226. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
  227. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
  228. package/Libraries/ReactNative/AppContainer-dev.js +192 -0
  229. package/Libraries/ReactNative/AppContainer-prod.js +53 -0
  230. package/Libraries/ReactNative/AppContainer.js +6 -149
  231. package/Libraries/ReactNative/AppRegistry.js +3 -1
  232. package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
  233. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  234. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
  235. package/Libraries/ReactNative/NativeI18nManager.js +3 -18
  236. package/Libraries/ReactNative/NativeUIManager.js +4 -112
  237. package/Libraries/ReactNative/PaperUIManager.js +8 -7
  238. package/Libraries/ReactNative/PaperUIManager.win32.js +26 -7
  239. package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
  240. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
  241. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
  242. package/Libraries/ReactNative/RendererImplementation.js +11 -0
  243. package/Libraries/ReactNative/UIManager.d.ts +11 -34
  244. package/Libraries/ReactNative/UIManager.js +2 -23
  245. package/Libraries/ReactNative/UIManagerProperties.js +0 -2
  246. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
  247. package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
  248. package/Libraries/ReactNative/renderApplication.js +9 -6
  249. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
  250. package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
  251. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
  252. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
  253. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
  254. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
  255. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
  256. package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
  257. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
  258. package/Libraries/Settings/NativeSettingsManager.js +4 -16
  259. package/Libraries/Share/NativeShareModule.js +3 -13
  260. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +1 -1
  261. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  262. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +1 -1
  263. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
  264. package/Libraries/StyleSheet/StyleSheet.js +5 -28
  265. package/Libraries/StyleSheet/StyleSheet.win32.js +5 -28
  266. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +47 -7
  267. package/Libraries/StyleSheet/StyleSheetTypes.js +16 -11
  268. package/Libraries/StyleSheet/flattenStyle.js +2 -2
  269. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  270. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  271. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  272. package/Libraries/Text/Text.d.ts +85 -0
  273. package/Libraries/Text/Text.js +0 -6
  274. package/Libraries/Text/Text.win32.js +0 -6
  275. package/Libraries/Text/TextAncestor.js +2 -3
  276. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
  277. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  278. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  279. package/Libraries/Utilities/DebugEnvironment.js +1 -4
  280. package/Libraries/Utilities/Dimensions.js +8 -16
  281. package/Libraries/Utilities/Dimensions.win32.js +8 -16
  282. package/Libraries/Utilities/FocusManager.win32.js +2 -0
  283. package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
  284. package/Libraries/Utilities/NativeAppearance.js +3 -26
  285. package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
  286. package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
  287. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
  288. package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
  289. package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
  290. package/Libraries/Utilities/PixelRatio.d.ts +4 -4
  291. package/Libraries/Utilities/Platform.android.js +4 -0
  292. package/Libraries/Utilities/Platform.d.ts +3 -0
  293. package/Libraries/Utilities/Platform.flow.js +7 -0
  294. package/Libraries/Utilities/Platform.flow.win32.js +18 -5
  295. package/Libraries/Utilities/Platform.ios.js +11 -0
  296. package/Libraries/Utilities/Platform.win32.js +9 -1
  297. package/Libraries/Utilities/binaryToBase64.js +1 -1
  298. package/Libraries/Utilities/codegenNativeComponent.js +4 -6
  299. package/Libraries/Utilities/createPerformanceLogger.js +2 -74
  300. package/Libraries/Utilities/useMergeRefs.js +5 -9
  301. package/Libraries/Vibration/NativeVibration.js +3 -14
  302. package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
  303. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  304. package/Libraries/platform-types.d.ts +2 -3
  305. package/Libraries/vendor/emitter/EventEmitter.js +1 -0
  306. package/babel.config.js +1 -1
  307. package/flow/jest.js +1 -1
  308. package/flow/react.js +15 -0
  309. package/index.js +66 -99
  310. package/index.win32.js +60 -101
  311. package/jest/assetFileTransformer.js +1 -1
  312. package/jest/local-setup.js +0 -5
  313. package/jest/mockModal.js +2 -1
  314. package/jest/mockScrollView.js +1 -2
  315. package/jest/renderer.js +1 -1
  316. package/jest/setup.js +6 -3
  317. package/jest.config.js +2 -1
  318. package/overrides.json +157 -130
  319. package/package.json +26 -26
  320. package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
  321. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
  322. package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
  323. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
  324. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
  325. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  326. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  327. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
  328. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  329. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  330. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  331. package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +47 -0
  332. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  333. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  334. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  335. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
  336. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  337. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  338. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  339. package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
  340. package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +39 -0
  341. package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
  342. package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
  343. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  344. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  345. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  346. package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
  347. package/src/private/specs/modules/NativeAppState.js +33 -0
  348. package/src/private/specs/modules/NativeAppearance.js +36 -0
  349. package/src/private/specs/modules/NativeBlobModule.js +59 -0
  350. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  351. package/src/private/specs/modules/NativeClipboard.js +21 -0
  352. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  353. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  354. package/src/private/specs/modules/NativeDevSettings.js +33 -0
  355. package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
  356. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  357. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  358. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  359. package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
  360. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  361. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  362. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  363. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  364. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  365. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  366. package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
  367. package/src/private/specs/modules/NativeImageLoaderWin32.js +45 -0
  368. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  369. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  370. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  371. package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
  372. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  373. package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
  374. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  375. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  376. package/src/private/specs/modules/NativeLogBox.js +20 -0
  377. package/src/private/specs/modules/NativeModalManager.js +21 -0
  378. package/src/private/specs/modules/NativeMutationObserver.js +58 -0
  379. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  380. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  381. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  382. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  383. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  384. package/src/private/specs/modules/NativePlatformConstantsWin.js +37 -0
  385. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
  386. package/src/private/specs/modules/NativeRedBox.js +20 -0
  387. package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
  388. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  389. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  390. package/src/private/specs/modules/NativeShareModule.js +23 -0
  391. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  392. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  393. package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
  394. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  395. package/src/private/specs/modules/NativeTiming.js +26 -0
  396. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  397. package/src/private/specs/modules/NativeUIManager.js +118 -0
  398. package/src/private/specs/modules/NativeVibration.js +24 -0
  399. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  400. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
  401. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
  402. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
  403. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
  404. package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
  405. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
  406. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
  407. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
  408. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
  409. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
  410. package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
  411. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
  412. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
  413. package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
  414. package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
  415. package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
  416. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
  417. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
  418. package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
  419. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
  420. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +161 -0
  421. package/{src → src-win}/Libraries/Components/Button/ButtonWin32.tsx +3 -3
  422. package/{src → src-win}/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +9 -10
  423. package/{src → src-win}/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  424. package/{src → src-win}/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  425. package/{src → src-win}/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  426. package/src-win/Libraries/Text/Text.d.ts +304 -0
  427. package/{src → src-win}/Libraries/platform-types.d.ts +2 -3
  428. package/types/modules/globals.d.ts +1 -0
  429. package/Libraries/Components/Button.flow.js +0 -265
  430. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
  431. package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -63
  432. package/Libraries/Components/Text/TextWin32.Props.js +0 -3
  433. package/Libraries/Components/Text/TextWin32.Props.js.map +0 -1
  434. package/Libraries/Components/Text/TextWin32.d.ts +0 -6
  435. package/Libraries/Components/Text/TextWin32.js +0 -18
  436. package/Libraries/Components/Text/TextWin32.js.map +0 -1
  437. package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
  438. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
  439. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
  440. package/Libraries/Image/Image.flow.js +0 -64
  441. package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
  442. package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
  443. package/src/Libraries/Components/Text/TextWin32.Props.ts +0 -82
  444. package/src/Libraries/Components/Text/TextWin32.tsx +0 -25
  445. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
  446. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
  447. /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
  448. /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
  449. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
  450. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
  451. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
  452. /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
  453. /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
  454. /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
  455. /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
  456. /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
  457. /package/{src → src-win}/Libraries/Components/Button/ButtonWin32.Props.ts +0 -0
  458. /package/{src → src-win}/Libraries/Components/EnterString.win32.tsx +0 -0
  459. /package/{src → src-win}/Libraries/Components/TextInput/Tests/TextInputTest.tsx +0 -0
  460. /package/{src → src-win}/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +0 -0
  461. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Props.tsx +0 -0
  462. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Types.tsx +0 -0
  463. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.tsx +0 -0
  464. /package/{src → src-win}/Libraries/Components/View/ViewWin32.d.ts +0 -0
  465. /package/{src → src-win}/Libraries/Image/ImageTypes.ts +0 -0
  466. /package/{src → src-win}/Libraries/Image/Tests/ImageWin32Test.tsx +0 -0
  467. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest.png +0 -0
  468. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
  469. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
  470. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
  471. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
  472. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
  473. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
  474. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoin.tsx +0 -0
  475. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +0 -0
  476. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinTypes.ts +0 -0
  477. /package/{src → src-win}/Libraries/Utilities/FocusManager.win32.d.ts +0 -0
  478. /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({