react-native-windows 0.76.2 → 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 (459) 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 +88 -57
  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 +370 -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/CompositionComponentView.idl +2 -1
  194. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  195. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +6 -3
  196. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +7 -0
  198. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +2 -0
  199. package/Microsoft.ReactNative/Fabric/ComponentView.cpp +45 -50
  200. package/Microsoft.ReactNative/Fabric/ComponentView.h +14 -22
  201. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +943 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +80 -0
  203. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +223 -21
  204. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  205. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +187 -6
  206. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +10 -1
  207. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +8 -32
  208. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +349 -929
  209. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +32 -29
  210. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +9 -2
  211. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +2 -1
  212. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
  213. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +181 -123
  214. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +16 -8
  215. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +99 -37
  216. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +25 -3
  217. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +64 -3
  218. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +12 -0
  219. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +51 -3
  220. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +3 -0
  221. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +18 -8
  222. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +3 -0
  223. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  224. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +56 -7
  225. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +8 -0
  226. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  227. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +9 -3
  228. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  229. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +35 -0
  230. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -0
  231. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +1 -1
  232. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  233. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  234. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  235. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  236. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +1 -5
  237. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +26 -0
  238. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +1 -1
  239. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  240. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  241. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  242. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  243. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  244. package/Microsoft.ReactNative/ReactNativeIsland.idl +3 -2
  245. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  246. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  247. package/Microsoft.ReactNative/ViewProps.idl +2 -0
  248. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  249. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  250. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  251. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  252. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  253. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  254. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  255. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  256. package/Microsoft.ReactNative.Cxx/ComponentView.Experimental.interop.h +14 -0
  257. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  258. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  259. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  260. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  261. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  262. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  263. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  264. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  265. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  266. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  267. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  268. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  269. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  270. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  271. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  272. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  273. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  274. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  275. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  276. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  277. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  278. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  279. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  280. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  281. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  282. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  283. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  284. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  285. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  286. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  287. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  288. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  289. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  290. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  291. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  292. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  293. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  294. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  295. package/PropertySheets/Bundle.Common.targets +1 -1
  296. package/PropertySheets/Bundle.props +3 -0
  297. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  298. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  299. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  300. package/ReactCommon/ReactCommon.vcxproj +5 -0
  301. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  302. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  303. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  304. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  305. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +188 -39
  309. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  310. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  311. package/Shared/InspectorPackagerConnection.cpp +3 -6
  312. package/Shared/InspectorPackagerConnection.h +2 -2
  313. package/Shared/InstanceManager.h +1 -1
  314. package/Shared/OInstance.h +1 -1
  315. package/Shared/Shared.vcxitems +20 -2
  316. package/Shared/Shared.vcxitems.filters +4 -1
  317. package/Shared/TurboModuleManager.cpp +29 -4
  318. package/codegen/NativeAccessibilityInfoSpec.g.h +28 -9
  319. package/codegen/NativeAccessibilityManagerSpec.g.h +20 -13
  320. package/codegen/NativeActionSheetManagerSpec.g.h +5 -0
  321. package/codegen/NativeAlertManagerSpec.g.h +1 -0
  322. package/codegen/NativeAnimatedModuleSpec.g.h +1 -0
  323. package/codegen/NativeAnimatedTurboModuleSpec.g.h +1 -0
  324. package/codegen/NativeAppStateSpec.g.h +1 -0
  325. package/codegen/NativeAppThemeSpec.g.h +1 -0
  326. package/codegen/NativeAppearanceSpec.g.h +1 -0
  327. package/codegen/NativeBlobModuleSpec.g.h +1 -0
  328. package/codegen/NativeBugReportingSpec.g.h +1 -0
  329. package/codegen/NativeClipboardSpec.g.h +1 -0
  330. package/codegen/NativeDOMSpec.g.h +1 -0
  331. package/codegen/NativeDevLoadingViewSpec.g.h +1 -0
  332. package/codegen/NativeDevMenuSpec.g.h +1 -0
  333. package/codegen/NativeDevSettingsSpec.g.h +1 -0
  334. package/codegen/NativeDeviceEventManagerSpec.g.h +1 -0
  335. package/codegen/NativeDeviceInfoSpec.g.h +1 -0
  336. package/codegen/NativeDialogManagerAndroidSpec.g.h +1 -0
  337. package/codegen/NativeDialogManagerWindowsSpec.g.h +1 -0
  338. package/codegen/NativeExceptionsManagerSpec.g.h +2 -7
  339. package/codegen/NativeFileReaderModuleSpec.g.h +1 -0
  340. package/codegen/NativeFrameRateLoggerSpec.g.h +1 -0
  341. package/codegen/NativeHeadlessJsTaskSupportSpec.g.h +1 -0
  342. package/codegen/NativeI18nManagerSpec.g.h +1 -0
  343. package/codegen/NativeIdleCallbacksSpec.g.h +1 -0
  344. package/codegen/NativeImageEditorSpec.g.h +1 -0
  345. package/codegen/NativeImageLoaderAndroidSpec.g.h +1 -0
  346. package/codegen/NativeImageLoaderIOSSpec.g.h +1 -0
  347. package/codegen/NativeImageStoreAndroidSpec.g.h +1 -0
  348. package/codegen/NativeImageStoreIOSSpec.g.h +1 -0
  349. package/codegen/NativeIntentAndroidSpec.g.h +1 -0
  350. package/codegen/NativeIntersectionObserverSpec.g.h +3 -0
  351. package/codegen/NativeJSCHeapCaptureSpec.g.h +1 -0
  352. package/codegen/NativeJSCSamplingProfilerSpec.g.h +1 -0
  353. package/codegen/NativeKeyboardObserverSpec.g.h +1 -0
  354. package/codegen/NativeLinkingManagerSpec.g.h +1 -0
  355. package/codegen/NativeLogBoxSpec.g.h +1 -0
  356. package/codegen/NativeMicrotasksSpec.g.h +1 -0
  357. package/codegen/NativeModalManagerSpec.g.h +1 -0
  358. package/codegen/NativeMutationObserverSpec.g.h +1 -0
  359. package/codegen/NativeNetworkingAndroidSpec.g.h +1 -0
  360. package/codegen/NativeNetworkingIOSSpec.g.h +1 -0
  361. package/codegen/NativePerformanceSpec.g.h +128 -3
  362. package/codegen/NativePermissionsAndroidSpec.g.h +1 -0
  363. package/codegen/NativePlatformConstantsAndroidSpec.g.h +1 -0
  364. package/codegen/NativePlatformConstantsIOSSpec.g.h +1 -0
  365. package/codegen/NativePlatformConstantsWindowsSpec.g.h +1 -0
  366. package/codegen/NativePushNotificationManagerIOSSpec.g.h +1 -0
  367. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  368. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  369. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +126 -137
  370. package/codegen/NativeRedBoxSpec.g.h +1 -0
  371. package/codegen/NativeSampleTurboModuleSpec.g.h +1 -0
  372. package/codegen/NativeSegmentFetcherSpec.g.h +1 -0
  373. package/codegen/NativeSettingsManagerSpec.g.h +1 -0
  374. package/codegen/NativeShareModuleSpec.g.h +1 -0
  375. package/codegen/NativeSoundManagerSpec.g.h +1 -0
  376. package/codegen/NativeSourceCodeSpec.g.h +1 -0
  377. package/codegen/NativeStatusBarManagerAndroidSpec.g.h +1 -0
  378. package/codegen/NativeStatusBarManagerIOSSpec.g.h +1 -0
  379. package/codegen/NativeTimingSpec.g.h +1 -0
  380. package/codegen/NativeToastAndroidSpec.g.h +1 -0
  381. package/codegen/NativeUIManagerSpec.g.h +1 -0
  382. package/codegen/NativeVibrationSpec.g.h +1 -0
  383. package/codegen/NativeWebSocketModuleSpec.g.h +1 -0
  384. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  385. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  386. package/codegen/react/components/rnwcore/Props.h +1 -0
  387. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  388. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  389. package/codegen/react/components/rnwcore/States.h +0 -12
  390. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  391. package/codegen/rnwcoreJSI.h +942 -511
  392. package/index.js +10 -3
  393. package/index.windows.js +10 -3
  394. package/jest/setup.js +36 -1
  395. package/just-task.js +15 -0
  396. package/package.json +22 -22
  397. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  398. package/src/private/animated/useAnimatedPropsMemo.js +348 -0
  399. package/src/private/animated/useAnimatedPropsMemo.windows.js +356 -0
  400. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  401. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  402. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  403. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  404. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  405. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  406. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  407. package/src/private/devmenu/DevMenu.d.ts +20 -0
  408. package/src/private/devmenu/DevMenu.js +31 -0
  409. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  410. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  411. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  412. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  413. package/src/private/setup/setUpDOM.js +14 -6
  414. package/src/private/setup/setUpMutationObserver.js +5 -0
  415. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  416. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  417. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  418. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  419. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  420. package/src/private/specs/modules/NativeAppearance.js +4 -10
  421. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  422. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  423. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  424. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  425. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  426. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  427. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  428. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  429. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  430. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  431. package/src/private/webapis/performance/EventTiming.js +13 -8
  432. package/src/private/webapis/performance/Performance.js +66 -73
  433. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  434. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  435. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  436. package/src/private/webapis/performance/UserTiming.js +11 -7
  437. package/src/private/webapis/performance/Utilities.js +18 -0
  438. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  439. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  440. package/templates/cpp-lib/template.config.js +13 -7
  441. package/templates/templateUtils.js +10 -0
  442. package/types/index.d.ts +1 -1
  443. package/types/public/ReactNativeTypes.d.ts +4 -8
  444. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  445. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  446. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  447. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  448. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  449. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  450. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  451. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  452. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -52
  453. package/codegen/NativePerformanceObserverSpec.g.h +0 -130
  454. package/src/private/components/useSyncOnScroll.js +0 -48
  455. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  456. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  457. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  458. package/types/experimental.d.ts +0 -59
  459. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -59,7 +59,9 @@ function LogBoxInspectorCodeFrame(props: Props): React.Node {
59
59
  <LogBoxInspectorSection heading="Source" action={<AppInfo />}>
60
60
  <View style={styles.box}>
61
61
  <View style={styles.frame}>
62
- <ScrollView horizontal>
62
+ <ScrollView
63
+ horizontal
64
+ contentContainerStyle={styles.contentContainer}>
63
65
  <AnsiHighlight style={styles.content} text={codeFrame.content} />
64
66
  </ScrollView>
65
67
  </View>
@@ -138,6 +140,9 @@ const styles = StyleSheet.create({
138
140
  paddingTop: 10,
139
141
  paddingBottom: 10,
140
142
  },
143
+ contentContainer: {
144
+ minWidth: '100%',
145
+ },
141
146
  content: {
142
147
  color: LogBoxStyle.getTextColor(1),
143
148
  fontSize: 12,
@@ -59,7 +59,9 @@ function LogBoxInspectorCodeFrame(props: Props): React.Node {
59
59
  <LogBoxInspectorSection heading="Source" action={<AppInfo />}>
60
60
  <View style={styles.box}>
61
61
  <View style={styles.frame}>
62
- <ScrollView horizontal>
62
+ <ScrollView
63
+ horizontal
64
+ contentContainerStyle={styles.contentContainer}>
63
65
  <AnsiHighlight style={styles.content} text={codeFrame.content} />
64
66
  </ScrollView>
65
67
  </View>
@@ -138,6 +140,9 @@ const styles = StyleSheet.create({
138
140
  paddingTop: 10,
139
141
  paddingBottom: 10,
140
142
  },
143
+ contentContainer: {
144
+ minWidth: '100%',
145
+ },
141
146
  content: {
142
147
  color: LogBoxStyle.getTextColor(1),
143
148
  fontSize: 12,
@@ -27,7 +27,7 @@ type Props = $ReadOnly<{
27
27
  level: LogLevel,
28
28
  }>;
29
29
 
30
- const LogBoxInspectorHeaderSafeArea: React.AbstractComponent<ViewProps> =
30
+ const LogBoxInspectorHeaderSafeArea: React.ComponentType<ViewProps> =
31
31
  Platform.OS === 'android' ? View : SafeAreaView;
32
32
 
33
33
  export default function LogBoxInspectorHeader(props: Props): React.Node {
@@ -27,7 +27,7 @@ type Props = $ReadOnly<{
27
27
  level: LogLevel,
28
28
  }>;
29
29
 
30
- const LogBoxInspectorHeaderSafeArea: React.AbstractComponent<ViewProps> =
30
+ const LogBoxInspectorHeaderSafeArea: React.ComponentType<ViewProps> =
31
31
  Platform.OS === 'android' ? View : SafeAreaView;
32
32
 
33
33
  export default function LogBoxInspectorHeader(props: Props): React.Node {
@@ -138,7 +138,7 @@ function StackFrameList(props: {
138
138
  }
139
139
 
140
140
  function StackFrameFooter(
141
- props: $TEMPORARY$object<{message: string, onPress: () => void}>,
141
+ props: $ReadOnly<{message: string, onPress: () => void}>,
142
142
  ) {
143
143
  return (
144
144
  <View style={stackStyles.collapseContainer}>
@@ -59,7 +59,7 @@ function TappableLinks(props: {
59
59
 
60
60
  // URLs were detected. Construct array of Text nodes.
61
61
 
62
- let fragments: Array<React.Node> = [];
62
+ const fragments: Array<React.Node> = [];
63
63
  let indexCounter = 0;
64
64
  let startIndex = 0;
65
65
 
@@ -115,7 +115,7 @@ function LogBoxMessage(props: Props): React.Node {
115
115
  const elements = [];
116
116
  let length = 0;
117
117
  const createUnderLength = (
118
- key: string | $TEMPORARY$string<'-1'>,
118
+ key: string,
119
119
  message: string,
120
120
  style: void | TextStyleProp,
121
121
  ) => {
@@ -10,6 +10,7 @@
10
10
  import type * as React from 'react';
11
11
  import {ViewProps} from '../Components/View/ViewPropTypes';
12
12
  import {NativeSyntheticEvent} from '../Types/CoreEventTypes';
13
+ import {ColorValue} from '../StyleSheet/StyleSheet';
13
14
 
14
15
  export interface ModalBaseProps {
15
16
  /**
@@ -43,6 +44,12 @@ export interface ModalBaseProps {
43
44
  * The `onShow` prop allows passing a function that will be called once the modal has been shown.
44
45
  */
45
46
  onShow?: ((event: NativeSyntheticEvent<any>) => void) | undefined;
47
+
48
+ /**
49
+ * The `backdropColor` props sets the background color of the modal's container.
50
+ * Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.
51
+ */
52
+ backdropColor?: ColorValue | undefined;
46
53
  }
47
54
 
48
55
  export interface ModalPropsIOS {
@@ -94,6 +101,11 @@ export interface ModalPropsAndroid {
94
101
  * Determines whether your modal should go under the system statusbar.
95
102
  */
96
103
  statusBarTranslucent?: boolean | undefined;
104
+
105
+ /**
106
+ * Determines whether your modal should go under the system navigationbar.
107
+ */
108
+ navigationBarTranslucent?: boolean | undefined;
97
109
  }
98
110
 
99
111
  export type ModalProps = ModalBaseProps &
@@ -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;
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @format
8
+ * @flow strict-local
9
+ */
10
+
11
+ import type {ViewProps} from '../Components/View/ViewPropTypes';
12
+ import type {RootTag} from '../ReactNative/RootTag';
13
+ import type {DirectEventHandler} from '../Types/CodegenTypes';
14
+
15
+ import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
16
+ import {type EventSubscription} from '../vendor/emitter/EventEmitter';
17
+ import ModalInjection from './ModalInjection';
18
+ import NativeModalManager from './NativeModalManager';
19
+ import RCTModalHostView from './RCTModalHostViewNativeComponent';
20
+ import {VirtualizedListContextResetter} from '@react-native/virtualized-lists';
21
+
22
+ const ScrollView = require('../Components/ScrollView/ScrollView');
23
+ const View = require('../Components/View/View');
24
+ const AppContainer = require('../ReactNative/AppContainer');
25
+ const I18nManager = require('../ReactNative/I18nManager');
26
+ const {RootTagContext} = require('../ReactNative/RootTag');
27
+ const StyleSheet = require('../StyleSheet/StyleSheet');
28
+ const Platform = require('../Utilities/Platform');
29
+ const React = require('react');
30
+
31
+ type ModalEventDefinitions = {
32
+ modalDismissed: [{modalID: number}],
33
+ };
34
+
35
+ const ModalEventEmitter =
36
+ (Platform.OS === 'ios' || Platform.OS === 'windows') && // [Windows]
37
+ NativeModalManager != null
38
+ ? new NativeEventEmitter<ModalEventDefinitions>(
39
+ // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior
40
+ // If you want to use the native module on other platforms, please remove this condition and test its behavior
41
+ Platform.OS !== 'ios' && Platform.OS !== 'windows' // [Windows]
42
+ ? null
43
+ : NativeModalManager,
44
+ )
45
+ : null;
46
+
47
+ /**
48
+ * The Modal component is a simple way to present content above an enclosing view.
49
+ *
50
+ * See https://reactnative.dev/docs/modal
51
+ */
52
+
53
+ // In order to route onDismiss callbacks, we need to uniquely identifier each
54
+ // <Modal> on screen. There can be different ones, either nested or as siblings.
55
+ // We cannot pass the onDismiss callback to native as the view will be
56
+ // destroyed before the callback is fired.
57
+ let uniqueModalIdentifier = 0;
58
+
59
+ type OrientationChangeEvent = $ReadOnly<{|
60
+ orientation: 'portrait' | 'landscape',
61
+ |}>;
62
+
63
+ export type Props = $ReadOnly<{|
64
+ ...ViewProps,
65
+
66
+ /**
67
+ * The `animationType` prop controls how the modal animates.
68
+ *
69
+ * See https://reactnative.dev/docs/modal#animationtype
70
+ */
71
+ animationType?: ?('none' | 'slide' | 'fade'),
72
+
73
+ /**
74
+ * The `presentationStyle` prop controls how the modal appears.
75
+ *
76
+ * See https://reactnative.dev/docs/modal#presentationstyle
77
+ */
78
+ presentationStyle?: ?(
79
+ | 'fullScreen'
80
+ | 'pageSheet'
81
+ | 'formSheet'
82
+ | 'overFullScreen'
83
+ ),
84
+
85
+ /**
86
+ * The `transparent` prop determines whether your modal will fill the
87
+ * entire view.
88
+ *
89
+ * See https://reactnative.dev/docs/modal#transparent
90
+ */
91
+ transparent?: ?boolean,
92
+
93
+ /**
94
+ * The `statusBarTranslucent` prop determines whether your modal should go under
95
+ * the system statusbar.
96
+ *
97
+ * See https://reactnative.dev/docs/modal.html#statusbartranslucent-android
98
+ */
99
+ statusBarTranslucent?: ?boolean,
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
+
109
+ /**
110
+ * The `hardwareAccelerated` prop controls whether to force hardware
111
+ * acceleration for the underlying window.
112
+ *
113
+ * This prop works only on Android.
114
+ *
115
+ * See https://reactnative.dev/docs/modal#hardwareaccelerated
116
+ */
117
+ hardwareAccelerated?: ?boolean,
118
+
119
+ /**
120
+ * The `visible` prop determines whether your modal is visible.
121
+ *
122
+ * See https://reactnative.dev/docs/modal#visible
123
+ */
124
+ visible?: ?boolean,
125
+
126
+ /**
127
+ * The `onRequestClose` callback is called when the user taps the hardware
128
+ * back button on Android or the menu button on Apple TV.
129
+ *
130
+ * This is required on Apple TV and Android.
131
+ *
132
+ * See https://reactnative.dev/docs/modal#onrequestclose
133
+ */
134
+ onRequestClose?: ?DirectEventHandler<null>,
135
+
136
+ /**
137
+ * The `onShow` prop allows passing a function that will be called once the
138
+ * modal has been shown.
139
+ *
140
+ * See https://reactnative.dev/docs/modal#onshow
141
+ */
142
+ onShow?: ?DirectEventHandler<null>,
143
+
144
+ /**
145
+ * The `onDismiss` prop allows passing a function that will be called once
146
+ * the modal has been dismissed.
147
+ *
148
+ * See https://reactnative.dev/docs/modal#ondismiss
149
+ */
150
+ onDismiss?: ?() => mixed,
151
+
152
+ /**
153
+ * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.
154
+ *
155
+ * See https://reactnative.dev/docs/modal#supportedorientations
156
+ */
157
+ supportedOrientations?: ?$ReadOnlyArray<
158
+ | 'portrait'
159
+ | 'portrait-upside-down'
160
+ | 'landscape'
161
+ | 'landscape-left'
162
+ | 'landscape-right',
163
+ >,
164
+
165
+ /**
166
+ * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.
167
+ *
168
+ * See https://reactnative.dev/docs/modal#onorientationchange
169
+ */
170
+ onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,
171
+
172
+ /**
173
+ * The `backdropColor` props sets the background color of the modal's container.
174
+ * Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.
175
+ */
176
+ backdropColor?: ?string,
177
+ |}>;
178
+
179
+ function confirmProps(props: Props) {
180
+ if (__DEV__) {
181
+ if (
182
+ props.presentationStyle &&
183
+ props.presentationStyle !== 'overFullScreen' &&
184
+ props.transparent === true
185
+ ) {
186
+ console.warn(
187
+ `Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,
188
+ );
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
+ }
198
+ }
199
+ }
200
+
201
+ // Create a state to track whether the Modal is rendering or not.
202
+ // This is the only prop that controls whether the modal is rendered or not.
203
+ type State = {
204
+ isRendered: boolean,
205
+ };
206
+
207
+ class Modal extends React.Component<Props, State> {
208
+ static defaultProps: {|hardwareAccelerated: boolean, visible: boolean|} = {
209
+ visible: true,
210
+ hardwareAccelerated: false,
211
+ };
212
+
213
+ static contextType: React.Context<RootTag> = RootTagContext;
214
+
215
+ _identifier: number;
216
+ _eventSubscription: ?EventSubscription;
217
+
218
+ constructor(props: Props) {
219
+ super(props);
220
+ if (__DEV__) {
221
+ confirmProps(props);
222
+ }
223
+ this._identifier = uniqueModalIdentifier++;
224
+ this.state = {
225
+ isRendered: props.visible === true,
226
+ };
227
+ }
228
+
229
+ componentDidMount() {
230
+ // 'modalDismissed' is for the old renderer in iOS only
231
+ if (ModalEventEmitter) {
232
+ this._eventSubscription = ModalEventEmitter.addListener(
233
+ 'modalDismissed',
234
+ event => {
235
+ this.setState({isRendered: false}, () => {
236
+ if (event.modalID === this._identifier && this.props.onDismiss) {
237
+ this.props.onDismiss();
238
+ }
239
+ });
240
+ },
241
+ );
242
+ }
243
+ }
244
+
245
+ componentWillUnmount() {
246
+ if (this._eventSubscription) {
247
+ this._eventSubscription.remove();
248
+ }
249
+ }
250
+
251
+ componentDidUpdate(prevProps: Props) {
252
+ if (prevProps.visible === false && this.props.visible === true) {
253
+ this.setState({isRendered: true});
254
+ }
255
+
256
+ if (__DEV__) {
257
+ confirmProps(this.props);
258
+ }
259
+ }
260
+
261
+ // Helper function to encapsulate platform specific logic to show or not the Modal.
262
+ _shouldShowModal(): boolean {
263
+ if (Platform.OS === 'ios' || Platform.OS === 'windows') {
264
+ // [Windows]
265
+ return this.props.visible === true || this.state.isRendered === true;
266
+ }
267
+
268
+ return this.props.visible === true;
269
+ }
270
+
271
+ render(): React.Node {
272
+ if (!this._shouldShowModal()) {
273
+ return null;
274
+ }
275
+
276
+ const containerStyles = {
277
+ backgroundColor:
278
+ this.props.transparent === true
279
+ ? 'transparent'
280
+ : this.props.backdropColor ?? 'white',
281
+ };
282
+
283
+ let animationType = this.props.animationType || 'none';
284
+
285
+ let presentationStyle = this.props.presentationStyle;
286
+ if (!presentationStyle) {
287
+ presentationStyle = 'fullScreen';
288
+ if (this.props.transparent === true) {
289
+ presentationStyle = 'overFullScreen';
290
+ }
291
+ }
292
+
293
+ const innerChildren = __DEV__ ? (
294
+ <AppContainer rootTag={this.context}>{this.props.children}</AppContainer>
295
+ ) : (
296
+ this.props.children
297
+ );
298
+
299
+ const onDismiss = () => {
300
+ // OnDismiss is implemented on iOS/Windows only. // [Windows]
301
+ if (Platform.OS === 'ios' || Platform.OS === 'windows') {
302
+ // [Windows]
303
+ this.setState({isRendered: false}, () => {
304
+ if (this.props.onDismiss) {
305
+ this.props.onDismiss();
306
+ }
307
+ });
308
+ }
309
+ };
310
+
311
+ return (
312
+ <RCTModalHostView
313
+ animationType={animationType}
314
+ presentationStyle={presentationStyle}
315
+ transparent={this.props.transparent}
316
+ hardwareAccelerated={this.props.hardwareAccelerated}
317
+ onRequestClose={this.props.onRequestClose}
318
+ onShow={this.props.onShow}
319
+ onDismiss={onDismiss}
320
+ visible={this.props.visible}
321
+ statusBarTranslucent={this.props.statusBarTranslucent}
322
+ navigationBarTranslucent={this.props.navigationBarTranslucent}
323
+ identifier={this._identifier}
324
+ style={styles.modal}
325
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
326
+ onStartShouldSetResponder={this._shouldSetResponder}
327
+ supportedOrientations={this.props.supportedOrientations}
328
+ onOrientationChange={this.props.onOrientationChange}
329
+ testID={this.props.testID}>
330
+ <VirtualizedListContextResetter>
331
+ <ScrollView.Context.Provider value={null}>
332
+ <View
333
+ style={[styles.container, containerStyles]}
334
+ collapsable={false}>
335
+ {innerChildren}
336
+ </View>
337
+ </ScrollView.Context.Provider>
338
+ </VirtualizedListContextResetter>
339
+ </RCTModalHostView>
340
+ );
341
+ }
342
+
343
+ // We don't want any responder events bubbling out of the modal.
344
+ _shouldSetResponder(): boolean {
345
+ return true;
346
+ }
347
+ }
348
+
349
+ const side = I18nManager.getConstants().isRTL ? 'right' : 'left';
350
+ const styles = StyleSheet.create({
351
+ modal: {
352
+ position: 'absolute',
353
+ },
354
+ container: {
355
+ /* $FlowFixMe[invalid-computed-prop] (>=0.111.0 site=react_native_fb) This
356
+ * comment suppresses an error found when Flow v0.111 was deployed. To see
357
+ * the error, delete this comment and run Flow. */
358
+ [side]: 0,
359
+ top: 0,
360
+ flex: 1,
361
+ },
362
+ });
363
+
364
+ // $FlowFixMe[prop-missing]
365
+ const ExportedModal: React.AbstractComponent<
366
+ React.ElementConfig<typeof Modal>,
367
+ // $FlowFixMe[incompatible-type-arg]
368
+ > = ModalInjection.unstable_Modal ?? Modal;
369
+
370
+ module.exports = ExportedModal;
@@ -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,