react-native-windows 0.76.3 → 0.77.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 (369) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/NativeAnimatedAllowlist.windows.js +122 -0
  8. package/Libraries/Animated/animations/Animation.js +60 -25
  9. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  10. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  11. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  12. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  13. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  14. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  15. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  17. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  18. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  19. package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
  20. package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
  21. package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
  22. package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  24. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  26. package/Libraries/Animated/useAnimatedProps.js +41 -35
  27. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  28. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  29. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  30. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  31. package/Libraries/Components/Button.js +9 -4
  32. package/Libraries/Components/Button.windows.js +19 -5
  33. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  34. package/Libraries/Components/Glyph/Glyph.js +2 -1
  35. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  36. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  37. package/Libraries/Components/Pressable/Pressable.js +4 -4
  38. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  39. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  40. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  41. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  42. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  43. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  44. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  45. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  46. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  47. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  48. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  49. package/Libraries/Components/Switch/Switch.js +8 -6
  50. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  51. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  52. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  53. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  54. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  55. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  56. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  57. package/Libraries/Components/TextInput/TextInput.js +37 -13
  58. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  59. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  60. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  61. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  62. package/Libraries/Components/Touchable/Position.js +7 -2
  63. package/Libraries/Components/Touchable/Touchable.js +4 -0
  64. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  65. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  66. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  67. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  68. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  71. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  73. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  74. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  75. package/Libraries/Components/View/View.js +4 -4
  76. package/Libraries/Components/View/View.windows.js +12 -5
  77. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  78. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  79. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  80. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  81. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  82. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  83. package/Libraries/Core/ExceptionsManager.js +50 -29
  84. package/Libraries/Core/ReactNativeVersion.js +3 -3
  85. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  86. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  87. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  88. package/Libraries/Core/setUpErrorHandling.js +20 -18
  89. package/Libraries/Core/setUpReactDevTools.js +107 -8
  90. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  91. package/Libraries/Core/setUpTimers.js +21 -18
  92. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  93. package/Libraries/Image/AssetSourceResolver.js +12 -1
  94. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  95. package/Libraries/Image/Image.android.js +1 -5
  96. package/Libraries/Image/Image.d.ts +20 -29
  97. package/Libraries/Image/Image.ios.js +0 -2
  98. package/Libraries/Image/Image.windows.js +5 -1
  99. package/Libraries/Image/ImageBackground.js +2 -5
  100. package/Libraries/Image/ImageProps.js +7 -6
  101. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  102. package/Libraries/Image/ImageResizeMode.js +4 -1
  103. package/Libraries/Image/ImageSource.d.ts +0 -2
  104. package/Libraries/Image/ImageSource.js +0 -2
  105. package/Libraries/Image/ImageTypes.flow.js +11 -9
  106. package/Libraries/Image/ImageUtils.js +6 -3
  107. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  108. package/Libraries/Inspector/Inspector.js +1 -0
  109. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  110. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  111. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  112. package/Libraries/Interaction/InteractionManager.js +6 -1
  113. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  114. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  115. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  116. package/Libraries/Lists/FlatList.d.ts +1 -2
  117. package/Libraries/Lists/FlatList.js +2 -2
  118. package/Libraries/Lists/SectionListModern.js +7 -7
  119. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  120. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  121. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  122. package/Libraries/LogBox/LogBox.js +18 -5
  123. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  124. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  125. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  126. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  129. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  131. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  132. package/Libraries/Modal/Modal.d.ts +12 -0
  133. package/Libraries/Modal/Modal.js +31 -4
  134. package/Libraries/Modal/Modal.windows.js +18 -0
  135. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  136. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  137. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  138. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  139. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  140. package/Libraries/Network/XHRInterceptor.js +63 -14
  141. package/Libraries/Network/XMLHttpRequest.js +26 -1
  142. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  143. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  144. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  145. package/Libraries/Pressability/HoverState.js +2 -0
  146. package/Libraries/Pressability/Pressability.js +2 -3
  147. package/Libraries/Pressability/Pressability.windows.js +2 -3
  148. package/Libraries/Pressability/usePressability.js +4 -1
  149. package/Libraries/ReactNative/AppContainer.js +1 -1
  150. package/Libraries/ReactNative/AppRegistry.js +1 -11
  151. package/Libraries/ReactNative/DisplayMode.js +1 -1
  152. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  153. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  154. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  155. package/Libraries/ReactNative/renderApplication.js +9 -8
  156. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  157. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  158. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  159. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  160. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  161. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  162. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  163. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  166. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  167. package/Libraries/StyleSheet/processTransform.js +3 -34
  168. package/Libraries/Text/Text.js +248 -249
  169. package/Libraries/Text/Text.windows.js +298 -292
  170. package/Libraries/Text/TextNativeComponent.js +0 -1
  171. package/Libraries/Text/TextProps.windows.js +2 -0
  172. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  173. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  174. package/Libraries/Types/CoreEventTypes.js +4 -6
  175. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  176. package/Libraries/Utilities/Appearance.js +3 -1
  177. package/Libraries/Utilities/BackHandler.android.js +6 -18
  178. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  179. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  180. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  181. package/Libraries/Utilities/HMRClient.js +3 -4
  182. package/Libraries/Utilities/Platform.flow.js +2 -2
  183. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  184. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  185. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  186. package/Libraries/Utilities/useMergeRefs.js +26 -7
  187. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  188. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  189. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  190. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  191. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  192. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  193. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  194. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  196. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  198. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  200. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  201. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  202. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  203. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  204. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  205. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  206. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  207. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  208. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  209. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  210. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  211. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  212. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  213. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  214. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  215. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  222. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  223. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  228. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  229. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  230. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  231. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  232. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  233. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  234. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  236. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  237. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  239. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  240. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  242. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  245. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  248. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  249. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  250. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  256. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  257. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  259. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  260. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  261. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  262. package/PropertySheets/Bundle.Common.targets +1 -1
  263. package/PropertySheets/Bundle.props +3 -0
  264. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  265. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  266. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  267. package/ReactCommon/ReactCommon.vcxproj +5 -0
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  275. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
  276. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  277. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  278. package/Shared/InspectorPackagerConnection.cpp +3 -6
  279. package/Shared/InspectorPackagerConnection.h +2 -2
  280. package/Shared/InstanceManager.h +1 -1
  281. package/Shared/OInstance.h +1 -1
  282. package/Shared/Shared.vcxitems +17 -2
  283. package/Shared/Shared.vcxitems.filters +3 -1
  284. package/Shared/TurboModuleManager.cpp +29 -4
  285. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  286. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  287. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  288. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  289. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  290. package/codegen/NativePerformanceSpec.g.h +127 -3
  291. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  292. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  293. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  294. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  295. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  296. package/codegen/react/components/rnwcore/Props.h +1 -0
  297. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  298. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  299. package/codegen/react/components/rnwcore/States.h +0 -12
  300. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  301. package/codegen/rnwcoreJSI.h +942 -511
  302. package/index.js +10 -3
  303. package/index.windows.js +10 -3
  304. package/jest/setup.js +36 -1
  305. package/just-task.js +15 -0
  306. package/package.json +22 -22
  307. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  308. package/src/private/animated/useAnimatedPropsMemo.js +348 -0
  309. package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
  310. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  311. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  312. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  313. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  314. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  315. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  316. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  317. package/src/private/devmenu/DevMenu.d.ts +20 -0
  318. package/src/private/devmenu/DevMenu.js +31 -0
  319. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  320. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  321. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  322. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  323. package/src/private/setup/setUpDOM.js +14 -6
  324. package/src/private/setup/setUpMutationObserver.js +5 -0
  325. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  326. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  327. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  328. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  329. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  330. package/src/private/specs/modules/NativeAppearance.js +4 -10
  331. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  332. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  333. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  334. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  335. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  336. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  337. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  338. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  339. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  340. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  341. package/src/private/webapis/performance/EventTiming.js +13 -8
  342. package/src/private/webapis/performance/Performance.js +66 -73
  343. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  344. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  345. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  346. package/src/private/webapis/performance/UserTiming.js +11 -7
  347. package/src/private/webapis/performance/Utilities.js +18 -0
  348. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  349. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  350. package/templates/cpp-lib/template.config.js +13 -7
  351. package/templates/templateUtils.js +10 -0
  352. package/types/index.d.ts +1 -1
  353. package/types/public/ReactNativeTypes.d.ts +4 -8
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  356. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  357. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  358. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  359. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  360. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  361. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  362. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  363. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  364. package/src/private/components/useSyncOnScroll.js +0 -48
  365. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  366. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  367. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  368. package/types/experimental.d.ts +0 -59
  369. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -95,6 +95,14 @@ export type Props = $ReadOnly<{|
95
95
  */
96
96
  statusBarTranslucent?: ?boolean,
97
97
 
98
+ /**
99
+ * The `navigationBarTranslucent` prop determines whether your modal should go under
100
+ * the system navigationbar.
101
+ *
102
+ * See https://reactnative.dev/docs/modal.html#navigationbartranslucent-android
103
+ */
104
+ navigationBarTranslucent?: ?boolean,
105
+
98
106
  /**
99
107
  * The `hardwareAccelerated` prop controls whether to force hardware
100
108
  * acceleration for the underlying window.
@@ -157,6 +165,12 @@ export type Props = $ReadOnly<{|
157
165
  * See https://reactnative.dev/docs/modal#onorientationchange
158
166
  */
159
167
  onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,
168
+
169
+ /**
170
+ * The `backdropColor` props sets the background color of the modal's container.
171
+ * Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.
172
+ */
173
+ backdropColor?: ?string,
160
174
  |}>;
161
175
 
162
176
  function confirmProps(props: Props) {
@@ -170,6 +184,14 @@ function confirmProps(props: Props) {
170
184
  `Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,
171
185
  );
172
186
  }
187
+ if (
188
+ props.navigationBarTranslucent === true &&
189
+ props.statusBarTranslucent !== true
190
+ ) {
191
+ console.warn(
192
+ 'Modal with translucent navigation bar and without translucent status bar is not supported.',
193
+ );
194
+ }
173
195
  }
174
196
  }
175
197
 
@@ -218,6 +240,9 @@ class Modal extends React.Component<Props, State> {
218
240
  }
219
241
 
220
242
  componentWillUnmount() {
243
+ if (Platform.OS === 'ios') {
244
+ this.setState({isRendered: false});
245
+ }
221
246
  if (this._eventSubscription) {
222
247
  this._eventSubscription.remove();
223
248
  }
@@ -249,7 +274,9 @@ class Modal extends React.Component<Props, State> {
249
274
 
250
275
  const containerStyles = {
251
276
  backgroundColor:
252
- this.props.transparent === true ? 'transparent' : 'white',
277
+ this.props.transparent === true
278
+ ? 'transparent'
279
+ : this.props.backdropColor ?? 'white',
253
280
  };
254
281
 
255
282
  let animationType = this.props.animationType || 'none';
@@ -290,6 +317,7 @@ class Modal extends React.Component<Props, State> {
290
317
  onDismiss={onDismiss}
291
318
  visible={this.props.visible}
292
319
  statusBarTranslucent={this.props.statusBarTranslucent}
320
+ navigationBarTranslucent={this.props.navigationBarTranslucent}
293
321
  identifier={this._identifier}
294
322
  style={styles.modal}
295
323
  // $FlowFixMe[method-unbinding] added when improving typing for this parameters
@@ -331,8 +359,7 @@ const styles = StyleSheet.create({
331
359
  },
332
360
  });
333
361
 
334
- const ExportedModal: React.AbstractComponent<
335
- React.ElementConfig<typeof Modal>,
336
- > = ModalInjection.unstable_Modal ?? Modal;
362
+ const ExportedModal: React.ComponentType<React.ElementConfig<typeof Modal>> =
363
+ ModalInjection.unstable_Modal ?? Modal;
337
364
 
338
365
  module.exports = ExportedModal;
@@ -98,6 +98,14 @@ export type Props = $ReadOnly<{|
98
98
  */
99
99
  statusBarTranslucent?: ?boolean,
100
100
 
101
+ /**
102
+ * The `navigationBarTranslucent` prop determines whether your modal should go under
103
+ * the system navigationbar.
104
+ *
105
+ * See https://reactnative.dev/docs/modal.html#navigationbartranslucent-android
106
+ */
107
+ navigationBarTranslucent?: ?boolean,
108
+
101
109
  /**
102
110
  * The `hardwareAccelerated` prop controls whether to force hardware
103
111
  * acceleration for the underlying window.
@@ -179,6 +187,14 @@ function confirmProps(props: Props) {
179
187
  `Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,
180
188
  );
181
189
  }
190
+ if (
191
+ props.navigationBarTranslucent === true &&
192
+ props.statusBarTranslucent !== true
193
+ ) {
194
+ console.warn(
195
+ 'Modal with translucent navigation bar and without translucent status bar is not supported.',
196
+ );
197
+ }
182
198
  }
183
199
  }
184
200
 
@@ -303,6 +319,7 @@ class Modal extends React.Component<Props, State> {
303
319
  onDismiss={onDismiss}
304
320
  visible={this.props.visible}
305
321
  statusBarTranslucent={this.props.statusBarTranslucent}
322
+ navigationBarTranslucent={this.props.navigationBarTranslucent}
306
323
  identifier={this._identifier}
307
324
  style={styles.modal}
308
325
  // $FlowFixMe[method-unbinding] added when improving typing for this parameters
@@ -344,6 +361,7 @@ const styles = StyleSheet.create({
344
361
  },
345
362
  });
346
363
 
364
+ // $FlowFixMe[prop-missing]
347
365
  const ExportedModal: React.AbstractComponent<
348
366
  React.ElementConfig<typeof Modal>,
349
367
  // $FlowFixMe[incompatible-type-arg]
@@ -175,7 +175,7 @@ const validAttributesForNonEventProps = {
175
175
  filter: {
176
176
  process: require('../StyleSheet/processFilter').default,
177
177
  },
178
- experimental_mixBlendMode: true,
178
+ mixBlendMode: true,
179
179
  isolation: true,
180
180
  opacity: true,
181
181
  elevation: true,
@@ -227,6 +227,7 @@ const validAttributesForNonEventProps = {
227
227
  justifyContent: true,
228
228
  overflow: true,
229
229
  display: true,
230
+ boxSizing: true,
230
231
 
231
232
  margin: true,
232
233
  marginBlock: true,
@@ -268,6 +269,11 @@ const validAttributesForNonEventProps = {
268
269
  borderLeftWidth: true,
269
270
  borderRightWidth: true,
270
271
 
272
+ outlineColor: {process: require('../StyleSheet/processColor').default},
273
+ outlineOffset: true,
274
+ outlineStyle: true,
275
+ outlineWidth: true,
276
+
271
277
  start: true,
272
278
  end: true,
273
279
  left: true,
@@ -288,6 +294,71 @@ const validAttributesForNonEventProps = {
288
294
  style: ReactNativeStyleAttributes,
289
295
 
290
296
  experimental_layoutConformance: true,
297
+
298
+ // ReactClippingViewManager @ReactProps
299
+ removeClippedSubviews: true,
300
+
301
+ // ReactViewManager @ReactProps
302
+ accessible: true,
303
+ hasTVPreferredFocus: true,
304
+ nextFocusDown: true,
305
+ nextFocusForward: true,
306
+ nextFocusLeft: true,
307
+ nextFocusRight: true,
308
+ nextFocusUp: true,
309
+
310
+ borderRadius: true,
311
+ borderTopLeftRadius: true,
312
+ borderTopRightRadius: true,
313
+ borderBottomRightRadius: true,
314
+ borderBottomLeftRadius: true,
315
+ borderTopStartRadius: true,
316
+ borderTopEndRadius: true,
317
+ borderBottomStartRadius: true,
318
+ borderBottomEndRadius: true,
319
+ borderEndEndRadius: true,
320
+ borderEndStartRadius: true,
321
+ borderStartEndRadius: true,
322
+ borderStartStartRadius: true,
323
+ borderStyle: true,
324
+ hitSlop: true,
325
+ pointerEvents: true,
326
+ nativeBackgroundAndroid: true,
327
+ nativeForegroundAndroid: true,
328
+ needsOffscreenAlphaCompositing: true,
329
+
330
+ borderColor: {
331
+ process: require('../StyleSheet/processColor').default,
332
+ },
333
+ borderLeftColor: {
334
+ process: require('../StyleSheet/processColor').default,
335
+ },
336
+ borderRightColor: {
337
+ process: require('../StyleSheet/processColor').default,
338
+ },
339
+ borderTopColor: {
340
+ process: require('../StyleSheet/processColor').default,
341
+ },
342
+ borderBottomColor: {
343
+ process: require('../StyleSheet/processColor').default,
344
+ },
345
+ borderStartColor: {
346
+ process: require('../StyleSheet/processColor').default,
347
+ },
348
+ borderEndColor: {
349
+ process: require('../StyleSheet/processColor').default,
350
+ },
351
+ borderBlockColor: {
352
+ process: require('../StyleSheet/processColor').default,
353
+ },
354
+ borderBlockEndColor: {
355
+ process: require('../StyleSheet/processColor').default,
356
+ },
357
+ borderBlockStartColor: {
358
+ process: require('../StyleSheet/processColor').default,
359
+ },
360
+ focusable: true,
361
+ backfaceVisibility: true,
291
362
  };
292
363
 
293
364
  // Props for bubbling and direct events
@@ -231,7 +231,7 @@ const validAttributesForNonEventProps = {
231
231
  boxShadow: {
232
232
  process: require('../StyleSheet/processBoxShadow').default,
233
233
  },
234
- experimental_mixBlendMode: true,
234
+ mixBlendMode: true,
235
235
  isolation: true,
236
236
 
237
237
  borderTopWidth: true,
@@ -348,6 +348,7 @@ const validAttributesForNonEventProps = {
348
348
  alignContent: true,
349
349
  position: true,
350
350
  aspectRatio: true,
351
+ boxSizing: true,
351
352
 
352
353
  // Also declared as ViewProps
353
354
  // overflow: true,
@@ -218,7 +218,6 @@ const validAttributesForNonEventProps = {
218
218
  testID: true,
219
219
  backgroundColor: {process: require('../StyleSheet/processColor').default},
220
220
  backfaceVisibility: true,
221
- cursor: true,
222
221
  opacity: true,
223
222
  shadowColor: {process: require('../StyleSheet/processColor').default},
224
223
  shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
@@ -237,21 +236,19 @@ const validAttributesForNonEventProps = {
237
236
  role: true,
238
237
  borderRadius: true,
239
238
  borderColor: {process: require('../StyleSheet/processColor').default},
240
- borderBlockColor: {process: require('../StyleSheet/processColor').default},
241
239
  borderCurve: true,
242
240
  borderWidth: true,
243
- borderBlockWidth: true,
244
241
  borderStyle: true,
245
242
  hitSlop: {diff: require('../Utilities/differ/insetsDiffer')},
246
243
  collapsable: true,
247
244
  collapsableChildren: true,
248
- filter: {
245
+ experimental_filter: {
249
246
  process: require('../StyleSheet/processFilter').default,
250
247
  },
251
248
  boxShadow: {
252
249
  process: require('../StyleSheet/processBoxShadow').default,
253
250
  },
254
- experimental_mixBlendMode: true,
251
+ mixBlendMode: true,
255
252
  isolation: true,
256
253
 
257
254
  borderTopWidth: true,
@@ -263,15 +260,9 @@ const validAttributesForNonEventProps = {
263
260
  borderLeftWidth: true,
264
261
  borderLeftColor: {process: require('../StyleSheet/processColor').default},
265
262
  borderStartWidth: true,
266
- borderBlockStartWidth: true,
267
263
  borderStartColor: {process: require('../StyleSheet/processColor').default},
268
- borderBlockStartColor: {
269
- process: require('../StyleSheet/processColor').default,
270
- },
271
264
  borderEndWidth: true,
272
- borderBlockEndWidth: true,
273
265
  borderEndColor: {process: require('../StyleSheet/processColor').default},
274
- borderBlockEndColor: {process: require('../StyleSheet/processColor').default},
275
266
 
276
267
  borderTopLeftRadius: true,
277
268
  borderTopRightRadius: true,
@@ -368,6 +359,7 @@ const validAttributesForNonEventProps = {
368
359
  alignContent: true,
369
360
  position: true,
370
361
  aspectRatio: true,
362
+ boxSizing: true,
371
363
 
372
364
  // Also declared as ViewProps
373
365
  // overflow: true,
@@ -48,7 +48,7 @@ export function setRuntimeConfigProvider(
48
48
  * The supplied `viewConfigProvider` may or may not be invoked and utilized,
49
49
  * depending on how `setRuntimeConfigProvider` is configured.
50
50
  */
51
- export function get<Config>(
51
+ export function get<Config: {...}>(
52
52
  name: string,
53
53
  viewConfigProvider: () => PartialViewConfig,
54
54
  ): HostComponent<Config> {
@@ -121,10 +121,10 @@ export function get<Config>(
121
121
  * that the return value of this is not `HostComponent` because the returned
122
122
  * component instance is not guaranteed to have native methods.
123
123
  */
124
- export function getWithFallback_DEPRECATED<Config>(
124
+ export function getWithFallback_DEPRECATED<Config: {...}>(
125
125
  name: string,
126
126
  viewConfigProvider: () => PartialViewConfig,
127
- ): React.AbstractComponent<Config> {
127
+ ): React.ComponentType<Config> {
128
128
  if (getRuntimeConfig == null) {
129
129
  // `getRuntimeConfig == null` when static view configs are disabled
130
130
  // If `setRuntimeConfigProvider` is not configured, use native reflection.
@@ -9,7 +9,6 @@
9
9
  */
10
10
 
11
11
  import {type ViewConfig} from '../Renderer/shims/ReactNativeTypes';
12
- import {isIgnored} from './ViewConfigIgnore';
13
12
 
14
13
  export type Difference =
15
14
  | {
@@ -5,20 +5,57 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  * @format
8
+ * @flow strict-local
8
9
  */
9
10
 
10
11
  'use strict';
11
12
 
12
13
  const XMLHttpRequest = require('./XMLHttpRequest');
14
+ // $FlowFixMe[method-unbinding]
13
15
  const originalXHROpen = XMLHttpRequest.prototype.open;
16
+ // $FlowFixMe[method-unbinding]
14
17
  const originalXHRSend = XMLHttpRequest.prototype.send;
18
+ // $FlowFixMe[method-unbinding]
15
19
  const originalXHRSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
16
20
 
17
- let openCallback;
18
- let sendCallback;
19
- let requestHeaderCallback;
20
- let headerReceivedCallback;
21
- let responseCallback;
21
+ type XHRInterceptorOpenCallback = (
22
+ method: string,
23
+ url: string,
24
+ request: XMLHttpRequest,
25
+ ) => void;
26
+
27
+ type XHRInterceptorSendCallback = (
28
+ data: string,
29
+ request: XMLHttpRequest,
30
+ ) => void;
31
+
32
+ type XHRInterceptorRequestHeaderCallback = (
33
+ header: string,
34
+ value: string,
35
+ request: XMLHttpRequest,
36
+ ) => void;
37
+
38
+ type XHRInterceptorHeaderReceivedCallback = (
39
+ responseContentType: string | void,
40
+ responseSize: number | void,
41
+ allHeaders: string,
42
+ request: XMLHttpRequest,
43
+ ) => void;
44
+
45
+ type XHRInterceptorResponseCallback = (
46
+ status: number,
47
+ timeout: number,
48
+ response: string,
49
+ responseURL: string,
50
+ responseType: string,
51
+ request: XMLHttpRequest,
52
+ ) => void;
53
+
54
+ let openCallback: XHRInterceptorOpenCallback | null;
55
+ let sendCallback: XHRInterceptorSendCallback | null;
56
+ let requestHeaderCallback: XHRInterceptorRequestHeaderCallback | null;
57
+ let headerReceivedCallback: XHRInterceptorHeaderReceivedCallback | null;
58
+ let responseCallback: XHRInterceptorResponseCallback | null;
22
59
 
23
60
  let isInterceptorEnabled = false;
24
61
 
@@ -33,39 +70,39 @@ const XHRInterceptor = {
33
70
  /**
34
71
  * Invoked before XMLHttpRequest.open(...) is called.
35
72
  */
36
- setOpenCallback(callback) {
73
+ setOpenCallback(callback: XHRInterceptorOpenCallback) {
37
74
  openCallback = callback;
38
75
  },
39
76
 
40
77
  /**
41
78
  * Invoked before XMLHttpRequest.send(...) is called.
42
79
  */
43
- setSendCallback(callback) {
80
+ setSendCallback(callback: XHRInterceptorSendCallback) {
44
81
  sendCallback = callback;
45
82
  },
46
83
 
47
84
  /**
48
85
  * Invoked after xhr's readyState becomes xhr.HEADERS_RECEIVED.
49
86
  */
50
- setHeaderReceivedCallback(callback) {
87
+ setHeaderReceivedCallback(callback: XHRInterceptorHeaderReceivedCallback) {
51
88
  headerReceivedCallback = callback;
52
89
  },
53
90
 
54
91
  /**
55
92
  * Invoked after xhr's readyState becomes xhr.DONE.
56
93
  */
57
- setResponseCallback(callback) {
94
+ setResponseCallback(callback: XHRInterceptorResponseCallback) {
58
95
  responseCallback = callback;
59
96
  },
60
97
 
61
98
  /**
62
99
  * Invoked before XMLHttpRequest.setRequestHeader(...) is called.
63
100
  */
64
- setRequestHeaderCallback(callback) {
101
+ setRequestHeaderCallback(callback: XHRInterceptorRequestHeaderCallback) {
65
102
  requestHeaderCallback = callback;
66
103
  },
67
104
 
68
- isInterceptorEnabled() {
105
+ isInterceptorEnabled(): boolean {
69
106
  return isInterceptorEnabled;
70
107
  },
71
108
 
@@ -75,7 +112,9 @@ const XHRInterceptor = {
75
112
  }
76
113
  // Override `open` method for all XHR requests to intercept the request
77
114
  // method and url, then pass them through the `openCallback`.
78
- XMLHttpRequest.prototype.open = function (method, url) {
115
+ // $FlowFixMe[cannot-write]
116
+ // $FlowFixMe[missing-this-annot]
117
+ XMLHttpRequest.prototype.open = function (method: string, url: string) {
79
118
  if (openCallback) {
80
119
  openCallback(method, url, this);
81
120
  }
@@ -84,7 +123,12 @@ const XHRInterceptor = {
84
123
 
85
124
  // Override `setRequestHeader` method for all XHR requests to intercept
86
125
  // the request headers, then pass them through the `requestHeaderCallback`.
87
- XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
126
+ // $FlowFixMe[cannot-write]
127
+ // $FlowFixMe[missing-this-annot]
128
+ XMLHttpRequest.prototype.setRequestHeader = function (
129
+ header: string,
130
+ value: string,
131
+ ) {
88
132
  if (requestHeaderCallback) {
89
133
  requestHeaderCallback(header, value, this);
90
134
  }
@@ -93,7 +137,9 @@ const XHRInterceptor = {
93
137
 
94
138
  // Override `send` method of all XHR requests to intercept the data sent,
95
139
  // register listeners to intercept the response, and invoke the callbacks.
96
- XMLHttpRequest.prototype.send = function (data) {
140
+ // $FlowFixMe[cannot-write]
141
+ // $FlowFixMe[missing-this-annot]
142
+ XMLHttpRequest.prototype.send = function (data: string) {
97
143
  if (sendCallback) {
98
144
  sendCallback(data, this);
99
145
  }
@@ -151,8 +197,11 @@ const XHRInterceptor = {
151
197
  return;
152
198
  }
153
199
  isInterceptorEnabled = false;
200
+ // $FlowFixMe[cannot-write]
154
201
  XMLHttpRequest.prototype.send = originalXHRSend;
202
+ // $FlowFixMe[cannot-write]
155
203
  XMLHttpRequest.prototype.open = originalXHROpen;
204
+ // $FlowFixMe[cannot-write]
156
205
  XMLHttpRequest.prototype.setRequestHeader = originalXHRSetRequestHeader;
157
206
  responseCallback = null;
158
207
  openCallback = null;
@@ -22,6 +22,7 @@ const base64 = require('base64-js');
22
22
  const invariant = require('invariant');
23
23
 
24
24
  const DEBUG_NETWORK_SEND_DELAY: false = false; // Set to a number of milliseconds when debugging
25
+ const LABEL_FOR_MISSING_URL_FOR_PROFILING = 'Unknown URL';
25
26
 
26
27
  export type NativeResponseType = 'base64' | 'blob' | 'text';
27
28
  export type ResponseType =
@@ -101,6 +102,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
101
102
  static DONE: number = DONE;
102
103
 
103
104
  static _interceptor: ?XHRInterceptor = null;
105
+ static _profiling: boolean = false;
104
106
 
105
107
  UNSENT: number = UNSENT;
106
108
  OPENED: number = OPENED;
@@ -144,12 +146,17 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
144
146
  _timedOut: boolean = false;
145
147
  _trackingName: string = 'unknown';
146
148
  _incrementalEvents: boolean = false;
149
+ _startTime: ?number = null;
147
150
  _performanceLogger: IPerformanceLogger = GlobalPerformanceLogger;
148
151
 
149
152
  static setInterceptor(interceptor: ?XHRInterceptor) {
150
153
  XMLHttpRequest._interceptor = interceptor;
151
154
  }
152
155
 
156
+ static enableProfiling(enableProfiling: boolean): void {
157
+ XMLHttpRequest._profiling = enableProfiling;
158
+ }
159
+
153
160
  constructor() {
154
161
  super();
155
162
  this._reset();
@@ -356,6 +363,11 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
356
363
  this._response += responseText;
357
364
  }
358
365
 
366
+ if (XMLHttpRequest._profiling) {
367
+ performance.mark(
368
+ 'Track:XMLHttpRequest:Incremental Data: ' + this._getMeasureURL(),
369
+ );
370
+ }
359
371
  XMLHttpRequest._interceptor &&
360
372
  XMLHttpRequest._interceptor.dataReceived(requestId, responseText);
361
373
 
@@ -398,7 +410,13 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
398
410
  this._clearSubscriptions();
399
411
  this._requestId = null;
400
412
  this.setReadyState(this.DONE);
401
-
413
+ if (XMLHttpRequest._profiling && this._startTime != null) {
414
+ const start = this._startTime;
415
+ performance.measure('Track:XMLHttpRequest:' + this._getMeasureURL(), {
416
+ start,
417
+ end: performance.now(),
418
+ });
419
+ }
402
420
  if (error) {
403
421
  XMLHttpRequest._interceptor &&
404
422
  XMLHttpRequest._interceptor.loadingFailed(requestId, error);
@@ -572,6 +590,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
572
590
  this._trackingName !== 'unknown' ? this._trackingName : this._url;
573
591
  this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName);
574
592
  this._performanceLogger.startTimespan(this._perfKey);
593
+ this._startTime = performance.now();
575
594
  invariant(
576
595
  this._method,
577
596
  'XMLHttpRequest method needs to be defined (%s).',
@@ -668,6 +687,12 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
668
687
  }
669
688
  super.addEventListener(type, listener);
670
689
  }
690
+
691
+ _getMeasureURL(): string {
692
+ return (
693
+ this._trackingName ?? this._url ?? LABEL_FOR_MISSING_URL_FOR_PROFILING
694
+ );
695
+ }
671
696
  }
672
697
 
673
698
  module.exports = XMLHttpRequest;
@@ -40,8 +40,8 @@ const HermesBadge = (): Node => {
40
40
  const styles = StyleSheet.create({
41
41
  badge: {
42
42
  position: 'absolute',
43
- top: 8,
44
43
  right: 12,
44
+ bottom: 8,
45
45
  },
46
46
  badgeText: {
47
47
  fontSize: 14,
@@ -66,11 +66,58 @@ export interface PermissionsAndroidStatic {
66
66
  /**
67
67
  * A list of permission results that are returned
68
68
  */
69
- RESULTS: {[key: string]: PermissionStatus};
69
+ RESULTS: {
70
+ [key in 'GRANTED' | 'DENIED' | 'NEVER_ASK_AGAIN']: PermissionStatus;
71
+ };
70
72
  /**
71
73
  * A list of specified "dangerous" permissions that require prompting the user
72
74
  */
73
- PERMISSIONS: {[key: string]: Permission};
75
+ PERMISSIONS: {
76
+ [key in
77
+ | 'READ_CALENDAR'
78
+ | 'WRITE_CALENDAR'
79
+ | 'CAMERA'
80
+ | 'READ_CONTACTS'
81
+ | 'WRITE_CONTACTS'
82
+ | 'GET_ACCOUNTS'
83
+ | 'ACCESS_FINE_LOCATION'
84
+ | 'ACCESS_COARSE_LOCATION'
85
+ | 'ACCESS_BACKGROUND_LOCATION'
86
+ | 'RECORD_AUDIO'
87
+ | 'READ_PHONE_STATE'
88
+ | 'CALL_PHONE'
89
+ | 'READ_CALL_LOG'
90
+ | 'WRITE_CALL_LOG'
91
+ | 'ADD_VOICEMAIL'
92
+ | 'READ_VOICEMAIL'
93
+ | 'WRITE_VOICEMAIL'
94
+ | 'USE_SIP'
95
+ | 'PROCESS_OUTGOING_CALLS'
96
+ | 'BODY_SENSORS'
97
+ | 'BODY_SENSORS_BACKGROUND'
98
+ | 'SEND_SMS'
99
+ | 'RECEIVE_SMS'
100
+ | 'READ_SMS'
101
+ | 'RECEIVE_WAP_PUSH'
102
+ | 'RECEIVE_MMS'
103
+ | 'READ_EXTERNAL_STORAGE'
104
+ | 'READ_MEDIA_IMAGES'
105
+ | 'READ_MEDIA_VIDEO'
106
+ | 'READ_MEDIA_AUDIO'
107
+ | 'READ_MEDIA_VISUAL_USER_SELECTED'
108
+ | 'WRITE_EXTERNAL_STORAGE'
109
+ | 'BLUETOOTH_CONNECT'
110
+ | 'BLUETOOTH_SCAN'
111
+ | 'BLUETOOTH_ADVERTISE'
112
+ | 'ACCESS_MEDIA_LOCATION'
113
+ | 'ACCEPT_HANDOVER'
114
+ | 'ACTIVITY_RECOGNITION'
115
+ | 'ANSWER_PHONE_CALLS'
116
+ | 'READ_PHONE_NUMBERS'
117
+ | 'UWB_RANGING'
118
+ | 'POST_NOTIFICATIONS'
119
+ | 'NEARBY_WIFI_DEVICES']: Permission;
120
+ };
74
121
  new (): PermissionsAndroidStatic;
75
122
  /**
76
123
  * @deprecated Use check instead
@@ -88,7 +88,7 @@ const PERMISSIONS = Object.freeze({
88
88
  */
89
89
 
90
90
  class PermissionsAndroid {
91
- PERMISSIONS: {|
91
+ PERMISSIONS: $ReadOnly<{|
92
92
  ACCEPT_HANDOVER: string,
93
93
  ACCESS_BACKGROUND_LOCATION: string,
94
94
  ACCESS_COARSE_LOCATION: string,
@@ -132,12 +132,12 @@ class PermissionsAndroid {
132
132
  WRITE_CALL_LOG: string,
133
133
  WRITE_CONTACTS: string,
134
134
  WRITE_EXTERNAL_STORAGE: string,
135
- |} = PERMISSIONS;
136
- RESULTS: {|
135
+ |}> = PERMISSIONS;
136
+ RESULTS: $ReadOnly<{|
137
137
  DENIED: 'denied',
138
138
  GRANTED: 'granted',
139
139
  NEVER_ASK_AGAIN: 'never_ask_again',
140
- |} = PERMISSION_REQUEST_RESULT;
140
+ |}> = PERMISSION_REQUEST_RESULT;
141
141
 
142
142
  /**
143
143
  * DEPRECATED - use check
@@ -12,6 +12,8 @@ import Platform from '../Utilities/Platform';
12
12
 
13
13
  let isEnabled = false;
14
14
 
15
+ /* $FlowFixMe[incompatible-type] Error found due to incomplete typing of
16
+ * Platform.flow.js */
15
17
  if (Platform.OS === 'web') {
16
18
  const canUseDOM = Boolean(
17
19
  typeof window !== 'undefined' &&