react-native-windows 0.74.12 → 0.75.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 (335) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Utilities.cpp +2 -2
  3. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  4. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  5. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  6. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  7. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  8. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  9. package/Libraries/Animated/useAnimatedProps.js +56 -28
  10. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  11. package/Libraries/Components/Button.js +10 -5
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  13. package/Libraries/Components/Flyout/Flyout.js +10 -10
  14. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  15. package/Libraries/Components/Pressable/Pressable.js +13 -6
  16. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  17. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  18. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  19. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  20. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  21. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  22. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  23. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  24. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  25. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  26. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  27. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  28. package/Libraries/Components/TextInput/TextInput.js +14 -70
  29. package/Libraries/Components/TextInput/TextInput.windows.js +15 -72
  30. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  31. package/Libraries/Components/Touchable/Touchable.js +2 -2
  32. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  33. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  34. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  35. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  36. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  37. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  39. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  40. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  41. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  42. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  43. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  44. package/Libraries/Components/View/View.js +0 -11
  45. package/Libraries/Components/View/View.windows.js +0 -11
  46. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  47. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  48. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  49. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  50. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  51. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  52. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  53. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  54. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  55. package/Libraries/Core/ErrorHandlers.js +116 -0
  56. package/Libraries/Core/ExceptionsManager.js +2 -2
  57. package/Libraries/Core/ReactNativeVersion.js +3 -3
  58. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  59. package/Libraries/Core/setUpPerformance.js +6 -4
  60. package/Libraries/Core/setUpReactDevTools.js +70 -10
  61. package/Libraries/Core/setUpTimers.js +50 -31
  62. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  63. package/Libraries/Image/Image.android.js +23 -13
  64. package/Libraries/Image/Image.d.ts +14 -15
  65. package/Libraries/Image/Image.ios.js +21 -11
  66. package/Libraries/Image/Image.windows.js +21 -11
  67. package/Libraries/Image/ImageProps.js +16 -5
  68. package/Libraries/Image/ImageTypes.flow.js +7 -2
  69. package/Libraries/Image/ImageUtils.js +1 -0
  70. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  71. package/Libraries/Inspector/ElementBox.js +6 -3
  72. package/Libraries/Inspector/ElementProperties.js +1 -1
  73. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  74. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  75. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  76. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  77. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  78. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  79. package/Libraries/LogBox/LogBox.js +29 -12
  80. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  81. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  82. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  83. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  84. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  85. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  86. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  87. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  88. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  89. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  90. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  91. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  92. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  93. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  94. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  95. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  96. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  97. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  98. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  99. package/Libraries/Network/XMLHttpRequest.js +5 -1
  100. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  101. package/Libraries/Pressability/Pressability.js +3 -51
  102. package/Libraries/Pressability/Pressability.windows.js +3 -51
  103. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  104. package/Libraries/ReactNative/AppRegistry.js +2 -4
  105. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  106. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  107. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  108. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  109. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  110. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  111. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  112. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  113. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  114. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  115. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  116. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  117. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  118. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  119. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  120. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  121. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  122. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  123. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  124. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  125. package/Libraries/Share/Share.d.ts +16 -10
  126. package/Libraries/Share/Share.js +14 -15
  127. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  128. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  129. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  130. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  131. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  132. package/Libraries/StyleSheet/processFilter.js +132 -0
  133. package/Libraries/StyleSheet/processTransform.js +18 -3
  134. package/Libraries/Text/Text.js +151 -128
  135. package/Libraries/Text/Text.windows.js +144 -128
  136. package/Libraries/Text/TextNativeComponent.js +5 -4
  137. package/Libraries/Text/TextProps.js +6 -6
  138. package/Libraries/Text/TextProps.windows.js +6 -6
  139. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  140. package/Libraries/Types/CodegenTypes.js +3 -0
  141. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  142. package/Libraries/Utilities/Dimensions.js +1 -0
  143. package/Libraries/Utilities/HMRClient.js +36 -8
  144. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  145. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  146. package/Libraries/Utilities/Platform.android.js +4 -4
  147. package/Libraries/Utilities/RCTLog.js +1 -0
  148. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  149. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  150. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  151. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  152. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  153. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  154. package/Microsoft.ReactNative/Composition.Input.idl +3 -3
  155. package/Microsoft.ReactNative/CompositionSwitcher.idl +0 -1
  156. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  157. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  158. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +0 -3
  159. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +2 -2
  160. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +4 -4
  161. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -10
  162. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -16
  163. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +48 -85
  165. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +0 -4
  166. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +24 -24
  167. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +6 -8
  168. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +0 -10
  169. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +0 -3
  170. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +29 -45
  171. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +1 -3
  172. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +6 -43
  173. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +23 -34
  174. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  175. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  176. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  177. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +17 -48
  178. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -7
  179. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -16
  180. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  184. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  185. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  186. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  187. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  188. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  189. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  190. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  191. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +13 -20
  192. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  193. package/Microsoft.ReactNative/Timer.idl +1 -3
  194. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  195. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  196. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  197. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  198. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  199. package/Microsoft.ReactNative/packages.lock.json +41 -78
  200. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  201. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  202. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  203. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  204. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  205. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  206. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  207. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  208. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  209. package/README.md +21 -21
  210. package/ReactCommon/ReactCommon.vcxproj +2 -0
  211. package/ReactCommon/ReactCommon.vcxproj.filters +3 -0
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  224. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  225. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  226. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  228. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +4 -0
  229. package/Scripts/rnw-dependencies.ps1 +36 -23
  230. package/Shared/HermesRuntimeHolder.cpp +19 -1
  231. package/Shared/HermesRuntimeHolder.h +8 -1
  232. package/Shared/HermesSamplingProfiler.cpp +1 -2
  233. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  234. package/Shared/OInstance.cpp +1 -2
  235. package/Shared/Shared.vcxitems +21 -15
  236. package/Shared/Shared.vcxitems.filters +8 -3
  237. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  238. package/Shared/Threading/BatchingQueueThread.h +2 -2
  239. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  240. package/codegen/NativeAppStateSpec.g.h +8 -8
  241. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  242. package/codegen/NativeDOMSpec.g.h +136 -0
  243. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  244. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  245. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  246. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  247. package/codegen/NativePerformanceSpec.g.h +35 -7
  248. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  249. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  250. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  251. package/codegen/NativeUIManagerSpec.g.h +5 -17
  252. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  253. package/codegen/react/components/rnwcore/Props.h +16 -12
  254. package/codegen/react/components/rnwcore/States.h +0 -26
  255. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  256. package/codegen/rnwcoreJSI.h +1374 -2867
  257. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  258. package/fmt/fmt.vcxproj +1 -1
  259. package/jest/mockComponent.js +7 -0
  260. package/jest/renderer.js +25 -14
  261. package/jest/setup.js +19 -13
  262. package/package.json +29 -27
  263. package/rn-get-polyfills.js +1 -0
  264. package/src/private/core/composeStyles.js +27 -0
  265. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  266. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  267. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  268. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  269. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  270. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  271. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  272. package/src/private/specs/modules/NativeUIManager.js +0 -7
  273. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  274. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  275. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  276. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  277. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  278. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  279. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  280. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  281. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  282. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  283. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  284. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  285. package/src/private/webapis/performance/EventCounts.js +1 -1
  286. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  287. package/src/private/webapis/performance/Performance.js +10 -56
  288. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  289. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  290. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  291. package/src/private/webapis/performance/UserTiming.js +63 -0
  292. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  293. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  294. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  295. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  296. package/stubs/glog/logging.h +1 -0
  297. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  298. package/template/cs-lib/proj/MyLib.csproj +1 -1
  299. package/template/metro.config.js +13 -2
  300. package/templates/cpp-app/template.config.js +1 -1
  301. package/templates/cpp-lib/example/metro.config.js +2 -2
  302. package/templates/cpp-lib/template.config.js +1 -1
  303. package/templates/old/generateWrapper.js +4 -1
  304. package/types/modules/globals.d.ts +4 -0
  305. package/Libraries/Lists/FlatList.windows.js +0 -717
  306. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  307. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  308. package/Libraries/Utilities/LoadingView.js +0 -16
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  312. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  313. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2377
  314. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -140
  315. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  316. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  317. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  318. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  319. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -366
  320. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  321. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  322. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  323. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  324. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  325. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  326. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  327. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  328. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  329. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  330. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  331. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  332. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  333. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  334. package/template/metro.devMode.config.js +0 -56
  335. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -23,7 +23,9 @@ import {
23
23
  import {getImageSourcesFromImageProps} from './ImageSourceUtils';
24
24
  import {convertObjectFitToResizeMode} from './ImageUtils';
25
25
  import ImageViewNativeComponent from './ImageViewNativeComponent';
26
- import NativeImageLoaderAndroid from './NativeImageLoaderAndroid';
26
+ import NativeImageLoaderAndroid, {
27
+ type ImageSize,
28
+ } from './NativeImageLoaderAndroid';
27
29
  import resolveAssetSource from './resolveAssetSource';
28
30
  import TextInlineImageNativeComponent from './TextInlineImageNativeComponent';
29
31
  import * as React from 'react';
@@ -40,13 +42,15 @@ function generateRequestId() {
40
42
  */
41
43
  function getSize(
42
44
  url: string,
43
- success: (width: number, height: number) => void,
45
+ success?: (width: number, height: number) => void,
44
46
  failure?: (error: mixed) => void,
45
- ): void {
46
- NativeImageLoaderAndroid.getSize(url)
47
- .then(function (sizes) {
48
- success(sizes.width, sizes.height);
49
- })
47
+ ): void | Promise<ImageSize> {
48
+ const promise = NativeImageLoaderAndroid.getSize(url);
49
+ if (typeof success !== 'function') {
50
+ return promise;
51
+ }
52
+ promise
53
+ .then(sizes => success(sizes.width, sizes.height))
50
54
  .catch(
51
55
  failure ||
52
56
  function () {
@@ -64,13 +68,15 @@ function getSize(
64
68
  function getSizeWithHeaders(
65
69
  url: string,
66
70
  headers: {[string]: string, ...},
67
- success: (width: number, height: number) => void,
71
+ success?: (width: number, height: number) => void,
68
72
  failure?: (error: mixed) => void,
69
- ): void {
70
- NativeImageLoaderAndroid.getSizeWithHeaders(url, headers)
71
- .then(function (sizes) {
72
- success(sizes.width, sizes.height);
73
- })
73
+ ): void | Promise<ImageSize> {
74
+ const promise = NativeImageLoaderAndroid.getSizeWithHeaders(url, headers);
75
+ if (typeof success !== 'function') {
76
+ return promise;
77
+ }
78
+ promise
79
+ .then(sizes => success(sizes.width, sizes.height))
74
80
  .catch(
75
81
  failure ||
76
82
  function () {
@@ -171,7 +177,11 @@ let BaseImage: AbstractImageAndroid = React.forwardRef(
171
177
  ...restProps,
172
178
  style,
173
179
  shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd || onError),
180
+ // Both iOS and C++ sides expect to have "source" prop, whereas on Android it's "src"
181
+ // (for historical reasons). So in the latter case we populate both "src" and "source",
182
+ // in order to have a better alignment between platforms in the future.
174
183
  src: sources,
184
+ source: sources,
175
185
  /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found
176
186
  * when making Flow check .android.js files. */
177
187
  headers: (source?.[0]?.headers || source?.headers: ?{[string]: string}),
@@ -325,20 +325,31 @@ export interface ImageProps extends ImagePropsBase {
325
325
  style?: StyleProp<ImageStyle> | undefined;
326
326
  }
327
327
 
328
+ export interface ImageSize {
329
+ width: number;
330
+ height: number;
331
+ }
332
+
328
333
  declare class ImageComponent extends React.Component<ImageProps> {}
329
334
  declare const ImageBase: Constructor<NativeMethods> & typeof ImageComponent;
330
335
  export class Image extends ImageBase {
336
+ static getSize(uri: string): Promise<ImageSize>;
331
337
  static getSize(
332
338
  uri: string,
333
339
  success: (width: number, height: number) => void,
334
340
  failure?: (error: any) => void,
335
- ): any;
341
+ ): void;
342
+
343
+ static getSizeWithHeaders(
344
+ uri: string,
345
+ headers: {[index: string]: string},
346
+ ): Promise<ImageSize>;
336
347
  static getSizeWithHeaders(
337
348
  uri: string,
338
349
  headers: {[index: string]: string},
339
350
  success: (width: number, height: number) => void,
340
351
  failure?: (error: any) => void,
341
- ): any;
352
+ ): void;
342
353
  static prefetch(url: string): Promise<boolean>;
343
354
  static prefetchWithMetadata(
344
355
  url: string,
@@ -368,16 +379,4 @@ export interface ImageBackgroundProps extends ImagePropsBase {
368
379
  declare class ImageBackgroundComponent extends React.Component<ImageBackgroundProps> {}
369
380
  declare const ImageBackgroundBase: Constructor<NativeMethods> &
370
381
  typeof ImageBackgroundComponent;
371
- export class ImageBackground extends ImageBackgroundBase {
372
- resizeMode: ImageResizeMode;
373
- getSize(
374
- uri: string,
375
- success: (width: number, height: number) => void,
376
- failure: (error: any) => void,
377
- ): any;
378
- prefetch(url: string): any;
379
- abortPrefetch?(requestId: number): void;
380
- queryCache?(
381
- urls: string[],
382
- ): Promise<{[url: string]: 'memory' | 'disk' | 'disk/memory'}>;
383
- }
382
+ export class ImageBackground extends ImageBackgroundBase {}
@@ -11,6 +11,7 @@
11
11
  import type {ImageStyle, ImageStyleProp} from '../StyleSheet/StyleSheet';
12
12
  import type {RootTag} from '../Types/RootTagTypes';
13
13
  import type {AbstractImageIOS, ImageIOS} from './ImageTypes.flow';
14
+ import type {ImageSize} from './NativeImageLoaderAndroid';
14
15
 
15
16
  import {createRootTag} from '../ReactNative/RootTag';
16
17
  import flattenStyle from '../StyleSheet/flattenStyle';
@@ -29,15 +30,22 @@ import * as React from 'react';
29
30
 
30
31
  function getSize(
31
32
  uri: string,
32
- success: (width: number, height: number) => void,
33
+ success?: (width: number, height: number) => void,
33
34
  failure?: (error: mixed) => void,
34
- ): void {
35
- NativeImageLoaderIOS.getSize(uri)
36
- .then(([width, height]) => success(width, height))
35
+ ): void | Promise<ImageSize> {
36
+ const promise = NativeImageLoaderIOS.getSize(uri).then(([width, height]) => ({
37
+ width,
38
+ height,
39
+ }));
40
+ if (typeof success !== 'function') {
41
+ return promise;
42
+ }
43
+ promise
44
+ .then(sizes => success(sizes.width, sizes.height))
37
45
  .catch(
38
46
  failure ||
39
47
  function () {
40
- console.warn('Failed to get size for image ' + uri);
48
+ console.warn('Failed to get size for image: ' + uri);
41
49
  },
42
50
  );
43
51
  }
@@ -45,13 +53,15 @@ function getSize(
45
53
  function getSizeWithHeaders(
46
54
  uri: string,
47
55
  headers: {[string]: string, ...},
48
- success: (width: number, height: number) => void,
56
+ success?: (width: number, height: number) => void,
49
57
  failure?: (error: mixed) => void,
50
- ): void {
51
- NativeImageLoaderIOS.getSizeWithHeaders(uri, headers)
52
- .then(function (sizes) {
53
- success(sizes.width, sizes.height);
54
- })
58
+ ): void | Promise<ImageSize> {
59
+ const promise = NativeImageLoaderIOS.getSizeWithHeaders(uri, headers);
60
+ if (typeof success !== 'function') {
61
+ return promise;
62
+ }
63
+ promise
64
+ .then(sizes => success(sizes.width, sizes.height))
55
65
  .catch(
56
66
  failure ||
57
67
  function () {
@@ -11,6 +11,7 @@
11
11
  import type {ImageStyle, ImageStyleProp} from '../StyleSheet/StyleSheet';
12
12
  import type {RootTag} from '../Types/RootTagTypes';
13
13
  import type {AbstractImageIOS, ImageIOS} from './ImageTypes.flow';
14
+ import type {ImageSize} from './NativeImageLoaderAndroid';
14
15
 
15
16
  import {createRootTag} from '../ReactNative/RootTag';
16
17
  import TextAncestor from '../Text/TextAncestor'; // [Windows]
@@ -31,15 +32,22 @@ import * as React from 'react';
31
32
 
32
33
  function getSize(
33
34
  uri: string,
34
- success: (width: number, height: number) => void,
35
+ success?: (width: number, height: number) => void,
35
36
  failure?: (error: mixed) => void,
36
- ): void {
37
- NativeImageLoaderIOS.getSize(uri)
38
- .then(([width, height]) => success(width, height))
37
+ ): void | Promise<ImageSize> {
38
+ const promise = NativeImageLoaderIOS.getSize(uri).then(([width, height]) => ({
39
+ width,
40
+ height,
41
+ }));
42
+ if (typeof success !== 'function') {
43
+ return promise;
44
+ }
45
+ promise
46
+ .then(sizes => success(sizes.width, sizes.height))
39
47
  .catch(
40
48
  failure ||
41
49
  function () {
42
- console.warn('Failed to get size for image ' + uri);
50
+ console.warn('Failed to get size for image: ' + uri);
43
51
  },
44
52
  );
45
53
  }
@@ -47,13 +55,15 @@ function getSize(
47
55
  function getSizeWithHeaders(
48
56
  uri: string,
49
57
  headers: {[string]: string, ...},
50
- success: (width: number, height: number) => void,
58
+ success?: (width: number, height: number) => void,
51
59
  failure?: (error: mixed) => void,
52
- ): void {
53
- NativeImageLoaderIOS.getSizeWithHeaders(uri, headers)
54
- .then(function (sizes) {
55
- success(sizes.width, sizes.height);
56
- })
60
+ ): void | Promise<ImageSize> {
61
+ const promise = NativeImageLoaderIOS.getSizeWithHeaders(uri, headers);
62
+ if (typeof success !== 'function') {
63
+ return promise;
64
+ }
65
+ promise
66
+ .then(sizes => success(sizes.width, sizes.height))
57
67
  .catch(
58
68
  failure ||
59
69
  function () {
@@ -59,6 +59,22 @@ type AndroidImageProps = $ReadOnly<{|
59
59
  loadingIndicatorSource?: ?(number | $ReadOnly<{|uri: string|}>),
60
60
  progressiveRenderingEnabled?: ?boolean,
61
61
  fadeDuration?: ?number,
62
+
63
+ /**
64
+ * The mechanism that should be used to resize the image when the image's
65
+ * dimensions differ from the image view's dimensions. Defaults to `'auto'`.
66
+ * See https://reactnative.dev/docs/image#resizemethod-android
67
+ */
68
+ resizeMethod?: ?('auto' | 'resize' | 'scale'),
69
+
70
+ /**
71
+ * When the `resizeMethod` is set to `resize`, the destination dimensions are
72
+ * multiplied by this value. The `scale` method is used to perform the
73
+ * remainder of the resize.
74
+ * This is used to produce higher quality images when resizing to small dimensions.
75
+ * Defaults to 1.0.
76
+ */
77
+ resizeMultiplier?: ?number,
62
78
  |}>;
63
79
 
64
80
  export type ImageProps = {|
@@ -183,11 +199,6 @@ export type ImageProps = {|
183
199
  */
184
200
  onLoadStart?: ?() => void,
185
201
 
186
- /**
187
- * See https://reactnative.dev/docs/image#resizemethod
188
- */
189
- resizeMethod?: ?('auto' | 'resize' | 'scale'),
190
-
191
202
  /**
192
203
  * The image source (either a remote URL or a local file resource).
193
204
  *
@@ -18,12 +18,17 @@ import typeof TextInlineImageNativeComponent from './TextInlineImageNativeCompon
18
18
  import * as React from 'react';
19
19
 
20
20
  type ImageComponentStaticsIOS = $ReadOnly<{
21
- getSize: (
21
+ getSize(uri: string): Promise<{width: number, height: number}>,
22
+ getSize(
22
23
  uri: string,
23
24
  success: (width: number, height: number) => void,
24
25
  failure?: (error: mixed) => void,
25
- ) => void,
26
+ ): void,
26
27
 
28
+ getSizeWithHeaders(
29
+ uri: string,
30
+ headers: {[string]: string, ...},
31
+ ): Promise<{width: number, height: number}>,
27
32
  getSizeWithHeaders(
28
33
  uri: string,
29
34
  headers: {[string]: string, ...},
@@ -17,5 +17,6 @@ export function convertObjectFitToResizeMode(objectFit: string): ResizeMode {
17
17
  fill: 'stretch',
18
18
  'scale-down': 'contain',
19
19
  };
20
+ // $FlowFixMe[invalid-computed-prop]
20
21
  return objectFitMap[objectFit];
21
22
  }
@@ -82,13 +82,14 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
82
82
  validAttributes: {
83
83
  blurRadius: true,
84
84
  internal_analyticTag: true,
85
+ resizeMethod: true,
85
86
  resizeMode: true,
87
+ resizeMultiplier: true,
86
88
  tintColor: {
87
89
  process: require('../StyleSheet/processColor').default,
88
90
  },
89
91
  borderBottomLeftRadius: true,
90
92
  borderTopLeftRadius: true,
91
- resizeMethod: true,
92
93
  src: true,
93
94
  // NOTE: New Architecture expects this to be called `source`,
94
95
  // regardless of the platform, therefore propagate it as well.
@@ -20,10 +20,9 @@ const React = require('react');
20
20
 
21
21
  class ElementBox extends React.Component<$FlowFixMeProps> {
22
22
  render(): React.Node {
23
- // $FlowFixMe[underconstrained-implicit-instantiation]
24
23
  const style = flattenStyle(this.props.style) || {};
25
- let margin = resolveBoxStyle('margin', style);
26
- let padding = resolveBoxStyle('padding', style);
24
+ let margin: ?$ReadOnly<Style> = resolveBoxStyle('margin', style);
25
+ let padding: ?$ReadOnly<Style> = resolveBoxStyle('padding', style);
27
26
 
28
27
  const frameStyle = {...this.props.frame};
29
28
  const contentStyle: {width: number, height: number} = {
@@ -122,13 +121,17 @@ function resolveSizeInPlace(
122
121
  direction: string,
123
122
  dimension: string,
124
123
  ) {
124
+ // $FlowFixMe[invalid-computed-prop]
125
125
  if (style[direction] !== null && typeof style[direction] === 'string') {
126
126
  if (style[direction].indexOf('%') !== -1) {
127
127
  // $FlowFixMe[prop-missing]
128
128
  style[direction] =
129
+ // $FlowFixMe[invalid-computed-prop]
129
130
  (parseFloat(style[direction]) / 100.0) *
131
+ // $FlowFixMe[invalid-computed-prop]
130
132
  Dimensions.get('window')[dimension];
131
133
  }
134
+ // $FlowFixMe[invalid-computed-prop]
132
135
  if (style[direction] === 'auto') {
133
136
  // Ignore auto sizing in frame drawing due to complexity of correctly rendering this
134
137
  // $FlowFixMe[prop-missing]
@@ -71,7 +71,7 @@ class ElementProperties extends React.Component<Props> {
71
71
  <View style={styles.col}>
72
72
  <StyleInspector style={style} />
73
73
  </View>
74
- {<BoxInspector style={style} frame={this.props.frame} />}
74
+ <BoxInspector style={style} frame={this.props.frame} />
75
75
  </View>
76
76
  </View>
77
77
  </TouchableWithoutFeedback>
@@ -48,10 +48,10 @@ const TouchHistoryMath = {
48
48
  ofCurrent && isXAxis
49
49
  ? oneTouchData.currentPageX
50
50
  : ofCurrent && !isXAxis
51
- ? oneTouchData.currentPageY
52
- : !ofCurrent && isXAxis
53
- ? oneTouchData.previousPageX
54
- : oneTouchData.previousPageY;
51
+ ? oneTouchData.currentPageY
52
+ : !ofCurrent && isXAxis
53
+ ? oneTouchData.previousPageX
54
+ : oneTouchData.previousPageY;
55
55
  count = 1;
56
56
  }
57
57
  } else {
@@ -67,19 +67,11 @@ function setTargetForInstanceHandle(
67
67
  instanceHandleToTargetMap.set(key, target);
68
68
  }
69
69
 
70
- function unsetTargetForInstanceHandle(instanceHandle: mixed): void {
71
- // $FlowExpectedError[incompatible-type] instanceHandle is typed as mixed but we know it's an object and we need it to be to use it as a key in a WeakMap.
72
- const key: interface {} = instanceHandle;
73
- instanceHandleToTargetMap.delete(key);
74
- }
75
-
76
70
  // The mapping between ReactNativeElement and their corresponding shadow node
77
71
  // also needs to be kept here because React removes the link when unmounting.
78
- // We also keep the instance handle so we don't have to retrieve it again
79
- // from the target to unobserve.
80
- const targetToShadowNodeAndInstanceHandleMap: WeakMap<
72
+ const targetToShadowNodeMap: WeakMap<
81
73
  ReactNativeElement,
82
- [ReturnType<typeof getShadowNode>, mixed],
74
+ ReturnType<typeof getShadowNode>,
83
75
  > = new WeakMap();
84
76
 
85
77
  /**
@@ -163,12 +155,8 @@ export function observe({
163
155
  // access it even after the instance handle has been unmounted.
164
156
  setTargetForInstanceHandle(instanceHandle, target);
165
157
 
166
- // Same for the mapping between the target and its shadow node
167
- // and instance handle.
168
- targetToShadowNodeAndInstanceHandleMap.set(target, [
169
- targetShadowNode,
170
- instanceHandle,
171
- ]);
158
+ // Same for the mapping between the target and its shadow node.
159
+ targetToShadowNodeMap.set(target, targetShadowNode);
172
160
 
173
161
  if (!isConnected) {
174
162
  NativeIntersectionObserver.connect(notifyIntersectionObservers);
@@ -201,26 +189,18 @@ export function unobserve(
201
189
  return;
202
190
  }
203
191
 
204
- const targetShadowNodeAndInstanceHandle =
205
- targetToShadowNodeAndInstanceHandleMap.get(target);
206
- if (targetShadowNodeAndInstanceHandle == null) {
192
+ const targetShadowNode = targetToShadowNodeMap.get(target);
193
+ if (targetShadowNode == null) {
207
194
  console.error(
208
195
  'IntersectionObserverManager: could not find registration data for target',
209
196
  );
210
197
  return;
211
198
  }
212
199
 
213
- const [targetShadowNode, instanceHandle] = targetShadowNodeAndInstanceHandle;
214
-
215
200
  NativeIntersectionObserver.unobserve(
216
201
  intersectionObserverId,
217
202
  targetShadowNode,
218
203
  );
219
-
220
- // We can guarantee we won't receive any more entries for this target,
221
- // so we don't need to keep the mappings anymore.
222
- unsetTargetForInstanceHandle(instanceHandle);
223
- targetToShadowNodeAndInstanceHandleMap.delete(target);
224
204
  }
225
205
 
226
206
  /**
@@ -232,7 +232,7 @@ class Interceptor {
232
232
  const event: LoadingFinishedEvent = {
233
233
  requestId: String(id),
234
234
  timestamp: JSInspector.getTimestamp(),
235
- encodedDataLength: encodedDataLength,
235
+ encodedDataLength,
236
236
  };
237
237
  this._agent.sendEvent('loadingFinished', event);
238
238
  }
@@ -8,30 +8,32 @@
8
8
  * @format
9
9
  */
10
10
 
11
- ('use strict');
12
-
13
11
  import type {ExtendedError} from '../../Core/ExtendedError';
14
12
  import type {LogLevel} from './LogBoxLog';
15
13
  import type {
16
14
  Category,
17
15
  ComponentStack,
16
+ ComponentStackType,
18
17
  ExtendedExceptionData,
19
18
  Message,
20
19
  } from './parseLogBoxLog';
21
20
 
22
21
  import parseErrorStack from '../../Core/Devtools/parseErrorStack';
22
+ import NativeDevSettings from '../../NativeModules/specs/NativeDevSettings';
23
23
  import NativeLogBox from '../../NativeModules/specs/NativeLogBox';
24
24
  import LogBoxLog from './LogBoxLog';
25
25
  import {parseLogBoxException} from './parseLogBoxLog';
26
26
  import * as React from 'react';
27
+
27
28
  export type LogBoxLogs = Set<LogBoxLog>;
28
- export type LogData = $ReadOnly<{|
29
+ export type LogData = $ReadOnly<{
29
30
  level: LogLevel,
30
31
  message: Message,
31
32
  category: Category,
32
33
  componentStack: ComponentStack,
34
+ componentStackType: ComponentStackType | null,
33
35
  stack?: string,
34
- |}>;
36
+ }>;
35
37
 
36
38
  export type Observer = (
37
39
  $ReadOnly<{|
@@ -72,6 +74,7 @@ let logs: LogBoxLogs = new Set();
72
74
  let updateTimeout: $FlowFixMe | null = null;
73
75
  let _isDisabled = false;
74
76
  let _selectedIndex = -1;
77
+ let hasShownFuseboxWarningsMigrationMessage = false;
75
78
 
76
79
  let warningFilter: WarningFilter = function (format) {
77
80
  return {
@@ -193,6 +196,11 @@ function appendNewLog(newLog: LogBoxLog) {
193
196
  }
194
197
 
195
198
  export function addLog(log: LogData): void {
199
+ if (log.level === 'warn' && global.__FUSEBOX_HAS_FULL_CONSOLE_SUPPORT__) {
200
+ // Under Fusebox, don't report warnings to LogBox.
201
+ showFuseboxWarningsMigrationMessageOnce();
202
+ return;
203
+ }
196
204
  const errorForStackTrace = new Error();
197
205
 
198
206
  // Parsing logs are expensive so we schedule this
@@ -209,6 +217,7 @@ export function addLog(log: LogData): void {
209
217
  stack,
210
218
  category: log.category,
211
219
  componentStack: log.componentStack,
220
+ componentStackType: log.componentStackType || 'legacy',
212
221
  }),
213
222
  );
214
223
  } catch (error) {
@@ -449,32 +458,33 @@ export function withSubscription(
449
458
  this._subscription.unsubscribe();
450
459
  }
451
460
  }
452
-
453
- _handleDismiss = (): void => {
454
- // Here we handle the cases when the log is dismissed and it
455
- // was either the last log, or when the current index
456
- // is now outside the bounds of the log array.
457
- const {selectedLogIndex, logs: stateLogs} = this.state;
458
- const logsArray = Array.from(stateLogs);
459
- if (selectedLogIndex != null) {
460
- if (logsArray.length - 1 <= 0) {
461
- setSelectedLog(-1);
462
- } else if (selectedLogIndex >= logsArray.length - 1) {
463
- setSelectedLog(selectedLogIndex - 1);
464
- }
465
-
466
- dismiss(logsArray[selectedLogIndex]);
467
- }
468
- };
469
-
470
- _handleMinimize = (): void => {
471
- setSelectedLog(-1);
472
- };
473
-
474
- _handleSetSelectedLog = (index: number): void => {
475
- setSelectedLog(index);
476
- };
477
461
  }
478
462
 
479
463
  return LogBoxStateSubscription;
480
464
  }
465
+
466
+ function showFuseboxWarningsMigrationMessageOnce() {
467
+ if (hasShownFuseboxWarningsMigrationMessage) {
468
+ return;
469
+ }
470
+ hasShownFuseboxWarningsMigrationMessage = true;
471
+ appendNewLog(
472
+ new LogBoxLog({
473
+ level: 'warn',
474
+ message: {
475
+ content: 'Open debugger to view warnings.',
476
+ substitutions: [],
477
+ },
478
+ isComponentError: false,
479
+ stack: [],
480
+ category: 'fusebox-warnings-migration',
481
+ componentStack: [],
482
+ onNotificationPress: () => {
483
+ if (NativeDevSettings.openDebugger) {
484
+ NativeDevSettings.openDebugger();
485
+ }
486
+ clearWarnings();
487
+ },
488
+ }),
489
+ );
490
+ }