react-native-windows 0.79.2 → 0.80.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 (348) hide show
  1. package/.flowconfig +12 -3
  2. package/Directory.Build.props +5 -2
  3. package/Libraries/Alert/Alert.d.ts +4 -1
  4. package/Libraries/Alert/Alert.js +3 -0
  5. package/Libraries/Alert/Alert.windows.js +3 -0
  6. package/Libraries/Alert/RCTAlertManager.js +17 -0
  7. package/Libraries/Animated/Animated.js.flow +1 -3
  8. package/Libraries/Animated/AnimatedEvent.js +4 -3
  9. package/Libraries/Animated/AnimatedExports.js +2 -2
  10. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  11. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  12. package/Libraries/Animated/Easing.js +13 -15
  13. package/Libraries/Animated/animations/Animation.js +8 -4
  14. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  15. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  16. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  17. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  18. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  19. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  20. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  21. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  22. package/Libraries/AppState/AppState.js +7 -2
  23. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  24. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  25. package/Libraries/Blob/BlobManager.js +1 -0
  26. package/Libraries/Blob/FileReader.js +219 -8
  27. package/Libraries/Blob/URL.js +37 -12
  28. package/Libraries/Blob/URLSearchParams.js +106 -31
  29. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  30. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +1 -1
  32. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  33. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  34. package/Libraries/Components/Button.d.ts +3 -0
  35. package/Libraries/Components/Button.js +1 -1
  36. package/Libraries/Components/Button.windows.js +27 -1
  37. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  38. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  39. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  42. package/Libraries/Components/Flyout/Flyout.js +11 -0
  43. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  45. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  46. package/Libraries/Components/Popup/Popup.js +11 -0
  47. package/Libraries/Components/Pressable/Pressable.js +20 -4
  48. package/Libraries/Components/Pressable/Pressable.windows.js +20 -4
  49. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  50. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  51. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  52. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
  53. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  54. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  55. package/Libraries/Components/ScrollView/ScrollView.windows.js +131 -122
  56. package/Libraries/Components/StaticRenderer.js +1 -1
  57. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  58. package/Libraries/Components/Switch/Switch.js +8 -4
  59. package/Libraries/Components/Switch/Switch.windows.js +17 -4
  60. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  61. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  62. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  63. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  64. package/Libraries/Components/TextInput/TextInput.flow.windows.js +1246 -0
  65. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  66. package/Libraries/Components/TextInput/TextInput.windows.js +104 -1092
  67. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  68. package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
  69. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +2 -1
  70. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  71. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  72. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  73. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  74. package/Libraries/Components/Touchable/Touchable.js +5 -5
  75. package/Libraries/Components/Touchable/Touchable.windows.js +5 -5
  76. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  77. package/Libraries/Components/Touchable/TouchableBounce.windows.js +14 -7
  78. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  79. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +10 -7
  80. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  81. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +6 -6
  82. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  83. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +13 -6
  84. package/Libraries/Components/View/View.js +18 -21
  85. package/Libraries/Components/View/View.windows.js +39 -41
  86. package/Libraries/Components/View/ViewAccessibility.d.ts +8 -0
  87. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  88. package/Libraries/Components/View/ViewAccessibility.windows.js +9 -1
  89. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  90. package/Libraries/Components/View/ViewPropTypes.windows.js +50 -2
  91. package/Libraries/Core/ReactNativeVersion.js +1 -1
  92. package/Libraries/Core/setUpReactDevTools.js +5 -5
  93. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  94. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  95. package/Libraries/Image/AssetSourceResolver.js +17 -4
  96. package/Libraries/Image/AssetSourceResolver.windows.js +17 -4
  97. package/Libraries/Image/Image.d.ts +26 -10
  98. package/Libraries/Image/Image.js +17 -0
  99. package/Libraries/Image/Image.js.flow +5 -5
  100. package/Libraries/Image/Image.windows.js +13 -1
  101. package/Libraries/Image/ImageBackground.js +2 -0
  102. package/Libraries/Image/ImageInjection.js +1 -1
  103. package/Libraries/Image/ImageProps.js +22 -17
  104. package/Libraries/Image/ImageSource.js +3 -1
  105. package/Libraries/Image/ImageSourceUtils.js +4 -2
  106. package/Libraries/Image/ImageTypes.flow.js +1 -1
  107. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  108. package/Libraries/Interaction/InteractionManager.js +1 -1
  109. package/Libraries/Interaction/PanResponder.js +3 -3
  110. package/Libraries/Interaction/TaskQueue.js +1 -0
  111. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  112. package/Libraries/Linking/Linking.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +2 -2
  114. package/Libraries/Lists/FlatList.js +8 -11
  115. package/Libraries/Lists/SectionList.js +39 -42
  116. package/Libraries/Lists/SectionListModern.js +25 -34
  117. package/Libraries/Lists/VirtualizedList.js +1 -0
  118. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  119. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  120. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  121. package/Libraries/Modal/Modal.js +33 -7
  122. package/Libraries/Modal/Modal.windows.js +33 -10
  123. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  124. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  125. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  126. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
  127. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  128. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  129. package/Libraries/Network/RCTNetworking.android.js +1 -1
  130. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  131. package/Libraries/Network/RCTNetworking.js +17 -0
  132. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  133. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  134. package/Libraries/Network/XMLHttpRequest.js +781 -10
  135. package/Libraries/Performance/Systrace.js +7 -7
  136. package/Libraries/Pressability/Pressability.js +1 -1
  137. package/Libraries/Pressability/Pressability.windows.js +1 -1
  138. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  139. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  140. package/Libraries/ReactNative/AppRegistry.js +2 -322
  141. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  142. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  143. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  144. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  145. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  146. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  147. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  148. package/Libraries/ReactNative/renderApplication.js +9 -0
  149. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  150. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  151. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  152. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  153. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  154. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  155. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  156. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  157. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  158. package/Libraries/Settings/Settings.ios.js +1 -0
  159. package/Libraries/Settings/Settings.js +13 -19
  160. package/Libraries/Settings/SettingsFallback.js +33 -0
  161. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  162. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  163. package/Libraries/StyleSheet/Rect.js +1 -0
  164. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  165. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  166. package/Libraries/StyleSheet/StyleSheetExports.js +210 -0
  167. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  168. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  169. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  170. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  171. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  172. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  173. package/Libraries/Text/Text.d.ts +2 -5
  174. package/Libraries/Text/Text.js +3 -3
  175. package/Libraries/Text/Text.windows.js +3 -3
  176. package/Libraries/Text/TextNativeComponent.js +0 -4
  177. package/Libraries/Text/TextProps.js +5 -33
  178. package/Libraries/Text/TextProps.windows.js +5 -32
  179. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  180. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  181. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  182. package/Libraries/Types/CoreEventTypes.js +1 -1
  183. package/Libraries/Types/CoreEventTypes.windows.js +1 -1
  184. package/Libraries/Utilities/Appearance.js +2 -0
  185. package/Libraries/Utilities/BackHandler.js +17 -0
  186. package/Libraries/Utilities/DeviceInfo.js +2 -0
  187. package/Libraries/Utilities/Dimensions.js +1 -1
  188. package/Libraries/Utilities/Platform.js +17 -0
  189. package/Libraries/Utilities/PlatformTypes.js +11 -3
  190. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  191. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  192. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  193. package/Libraries/WebSocket/WebSocket.js +313 -8
  194. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  195. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  196. package/Microsoft.ReactNative/CompositionSwitcher.idl +8 -0
  197. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +0 -6
  198. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +197 -1
  199. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +34 -4
  200. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +12 -0
  201. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +36 -33
  202. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +81 -0
  203. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +5 -0
  204. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +148 -14
  205. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +4 -0
  206. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +29 -0
  207. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +2 -0
  208. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +17 -34
  209. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +4 -0
  210. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  211. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +16 -0
  212. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +1 -0
  213. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +9 -0
  214. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +1 -0
  215. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +4 -0
  216. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +34 -94
  217. package/Microsoft.ReactNative/Modules/SampleTurboModule.cpp +4 -0
  218. package/Microsoft.ReactNative/Modules/SampleTurboModule.h +3 -0
  219. package/Microsoft.ReactNative/TurboModulesProvider.h +1 -1
  220. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.h +1 -1
  221. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  222. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  223. package/PropertySheets/React.Cpp.props +4 -0
  224. package/README.md +2 -2
  225. package/ReactCommon/ReactCommon.vcxproj +9 -4
  226. package/ReactCommon/ReactCommon.vcxproj.filters +6 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +253 -0
  228. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +5 -2
  229. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +4 -8
  230. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +184 -0
  231. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +22 -0
  232. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +2 -4
  233. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +27 -0
  234. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +2 -1
  235. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +1 -1
  236. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +308 -0
  237. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp +42 -0
  238. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +7 -51
  239. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +10 -5
  240. package/Scripts/creaternwapp.cmd +9 -3
  241. package/Shared/Shared.vcxitems +3 -2
  242. package/Shared/Shared.vcxitems.filters +2 -1
  243. package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
  244. package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
  245. package/codegen/NativePerformanceSpec.g.h +14 -0
  246. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +151 -127
  247. package/codegen/NativeSampleTurboModuleSpec.g.h +14 -8
  248. package/codegen/react/components/rnwcore/EventEmitters.cpp +48 -48
  249. package/codegen/rnwcoreJSI-generated.cpp +159 -129
  250. package/codegen/rnwcoreJSI.h +534 -408
  251. package/index.js +51 -331
  252. package/index.windows.js +70 -352
  253. package/interface.js +0 -4
  254. package/jest/resolver.js +31 -0
  255. package/jest/setup.js +6 -2
  256. package/package.json +29 -28
  257. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  258. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  259. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  260. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  261. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  262. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  263. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  264. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  265. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  266. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  267. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  268. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  269. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  270. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  271. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  272. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  273. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  274. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  275. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  276. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  277. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  278. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  279. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  280. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  281. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.windows.js +1 -1
  282. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  283. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  284. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  285. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  286. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +12 -1
  287. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  288. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  289. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  290. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  291. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  292. package/src/private/styles/composeStyles.js +12 -5
  293. package/src/private/types/HostComponent.js +1 -1
  294. package/src/private/types/HostInstance.js +67 -1
  295. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  296. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  297. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  298. package/src/private/webapis/performance/Performance.js +1 -3
  299. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  300. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  301. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  302. package/src/types/globals.d.ts +42 -0
  303. package/stubs/double-conversion/double-conversion.h +3 -1
  304. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +4 -0
  305. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +4 -0
  306. package/types/index.d.ts +6 -3
  307. package/types/public/ReactNativeTypes.d.ts +2 -2
  308. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  309. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  310. package/Libraries/Blob/FileReader_new.js +0 -231
  311. package/Libraries/Blob/FileReader_old.js +0 -186
  312. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  313. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  314. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  315. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  316. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  317. package/Libraries/Events/CustomEvent.js +0 -32
  318. package/Libraries/Events/EventPolyfill.js +0 -239
  319. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  320. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  321. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  322. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  323. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  324. package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +0 -30
  325. package/Libraries/NewAppScreen/components/Header.js +0 -77
  326. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  327. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  328. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  329. package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +0 -31
  330. package/Libraries/NewAppScreen/components/logo.png +0 -0
  331. package/Libraries/NewAppScreen/index.js +0 -25
  332. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  333. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  334. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  335. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  336. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  337. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  338. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  339. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  340. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  341. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  342. package/jest/__tests__/setup-test.js +0 -18
  343. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  344. package/src/private/utilities/ensureInstance.js +0 -21
  345. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  346. package/types/modules/LaunchScreen.d.ts +0 -18
  347. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  348. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -8,13 +8,224 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import typeof FileReader from './FileReader_old';
11
+ import type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';
12
+ import type Blob from './Blob';
12
13
 
13
- // Use a global instead of a flag from ReactNativeFeatureFlags because this will
14
- // be read before apps have a chance to set overrides.
15
- const useBuiltInEventTarget = global.RN$useBuiltInEventTarget?.();
14
+ import Event from '../../src/private/webapis/dom/events/Event';
15
+ import {
16
+ getEventHandlerAttribute,
17
+ setEventHandlerAttribute,
18
+ } from '../../src/private/webapis/dom/events/EventHandlerAttributes';
19
+ import EventTarget from '../../src/private/webapis/dom/events/EventTarget';
20
+ import NativeFileReaderModule from './NativeFileReaderModule';
21
+ import {toByteArray} from 'base64-js';
16
22
 
17
- export default (useBuiltInEventTarget
18
- ? // $FlowExpectedError[incompatible-cast]
19
- require('./FileReader_new').default
20
- : require('./FileReader_old').default) as FileReader;
23
+ type ReadyState =
24
+ | 0 // EMPTY
25
+ | 1 // LOADING
26
+ | 2; // DONE
27
+
28
+ type ReaderResult = string | ArrayBuffer;
29
+
30
+ const EMPTY = 0;
31
+ const LOADING = 1;
32
+ const DONE = 2;
33
+
34
+ class FileReader extends EventTarget {
35
+ static EMPTY: number = EMPTY;
36
+ static LOADING: number = LOADING;
37
+ static DONE: number = DONE;
38
+
39
+ EMPTY: number = EMPTY;
40
+ LOADING: number = LOADING;
41
+ DONE: number = DONE;
42
+
43
+ _readyState: ReadyState;
44
+ _error: ?Error;
45
+ _result: ?ReaderResult;
46
+ _aborted: boolean = false;
47
+
48
+ constructor() {
49
+ super();
50
+ this._reset();
51
+ }
52
+
53
+ _reset(): void {
54
+ this._readyState = EMPTY;
55
+ this._error = null;
56
+ this._result = null;
57
+ }
58
+
59
+ _setReadyState(newState: ReadyState) {
60
+ this._readyState = newState;
61
+ this.dispatchEvent(new Event('readystatechange'));
62
+ if (newState === DONE) {
63
+ if (this._aborted) {
64
+ this.dispatchEvent(new Event('abort'));
65
+ } else if (this._error) {
66
+ this.dispatchEvent(new Event('error'));
67
+ } else {
68
+ this.dispatchEvent(new Event('load'));
69
+ }
70
+ this.dispatchEvent(new Event('loadend'));
71
+ }
72
+ }
73
+
74
+ readAsArrayBuffer(blob: ?Blob): void {
75
+ this._aborted = false;
76
+
77
+ if (blob == null) {
78
+ throw new TypeError(
79
+ "Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'",
80
+ );
81
+ }
82
+
83
+ NativeFileReaderModule.readAsDataURL(blob.data).then(
84
+ (text: string) => {
85
+ if (this._aborted) {
86
+ return;
87
+ }
88
+
89
+ const base64 = text.split(',')[1];
90
+ const typedArray = toByteArray(base64);
91
+
92
+ this._result = typedArray.buffer;
93
+ this._setReadyState(DONE);
94
+ },
95
+ error => {
96
+ if (this._aborted) {
97
+ return;
98
+ }
99
+ this._error = error;
100
+ this._setReadyState(DONE);
101
+ },
102
+ );
103
+ }
104
+
105
+ readAsDataURL(blob: ?Blob): void {
106
+ this._aborted = false;
107
+
108
+ if (blob == null) {
109
+ throw new TypeError(
110
+ "Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'",
111
+ );
112
+ }
113
+
114
+ NativeFileReaderModule.readAsDataURL(blob.data).then(
115
+ (text: string) => {
116
+ if (this._aborted) {
117
+ return;
118
+ }
119
+ this._result = text;
120
+ this._setReadyState(DONE);
121
+ },
122
+ error => {
123
+ if (this._aborted) {
124
+ return;
125
+ }
126
+ this._error = error;
127
+ this._setReadyState(DONE);
128
+ },
129
+ );
130
+ }
131
+
132
+ readAsText(blob: ?Blob, encoding: string = 'UTF-8'): void {
133
+ this._aborted = false;
134
+
135
+ if (blob == null) {
136
+ throw new TypeError(
137
+ "Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'",
138
+ );
139
+ }
140
+
141
+ NativeFileReaderModule.readAsText(blob.data, encoding).then(
142
+ (text: string) => {
143
+ if (this._aborted) {
144
+ return;
145
+ }
146
+ this._result = text;
147
+ this._setReadyState(DONE);
148
+ },
149
+ error => {
150
+ if (this._aborted) {
151
+ return;
152
+ }
153
+ this._error = error;
154
+ this._setReadyState(DONE);
155
+ },
156
+ );
157
+ }
158
+
159
+ abort() {
160
+ this._aborted = true;
161
+ // only call onreadystatechange if there is something to abort, as per spec
162
+ if (this._readyState !== EMPTY && this._readyState !== DONE) {
163
+ this._reset();
164
+ this._setReadyState(DONE);
165
+ }
166
+ // Reset again after, in case modified in handler
167
+ this._reset();
168
+ }
169
+
170
+ get readyState(): ReadyState {
171
+ return this._readyState;
172
+ }
173
+
174
+ get error(): ?Error {
175
+ return this._error;
176
+ }
177
+
178
+ get result(): ?ReaderResult {
179
+ return this._result;
180
+ }
181
+
182
+ get onabort(): EventCallback | null {
183
+ return getEventHandlerAttribute(this, 'abort');
184
+ }
185
+
186
+ set onabort(listener: ?EventCallback) {
187
+ setEventHandlerAttribute(this, 'abort', listener);
188
+ }
189
+
190
+ get onerror(): EventCallback | null {
191
+ return getEventHandlerAttribute(this, 'error');
192
+ }
193
+
194
+ set onerror(listener: ?EventCallback) {
195
+ setEventHandlerAttribute(this, 'error', listener);
196
+ }
197
+
198
+ get onload(): EventCallback | null {
199
+ return getEventHandlerAttribute(this, 'load');
200
+ }
201
+
202
+ set onload(listener: ?EventCallback) {
203
+ setEventHandlerAttribute(this, 'load', listener);
204
+ }
205
+
206
+ get onloadstart(): EventCallback | null {
207
+ return getEventHandlerAttribute(this, 'loadstart');
208
+ }
209
+
210
+ set onloadstart(listener: ?EventCallback) {
211
+ setEventHandlerAttribute(this, 'loadstart', listener);
212
+ }
213
+
214
+ get onloadend(): EventCallback | null {
215
+ return getEventHandlerAttribute(this, 'loadend');
216
+ }
217
+
218
+ set onloadend(listener: ?EventCallback) {
219
+ setEventHandlerAttribute(this, 'loadend', listener);
220
+ }
221
+
222
+ get onprogress(): EventCallback | null {
223
+ return getEventHandlerAttribute(this, 'progress');
224
+ }
225
+
226
+ set onprogress(listener: ?EventCallback) {
227
+ setEventHandlerAttribute(this, 'progress', listener);
228
+ }
229
+ }
230
+
231
+ export default FileReader;
@@ -81,7 +81,19 @@ export class URL {
81
81
  let baseUrl = null;
82
82
  if (!base || validateBaseUrl(url)) {
83
83
  this._url = url;
84
- if (!this._url.endsWith('/')) {
84
+ if (this._url.includes('#')) {
85
+ const split = this._url.split('#');
86
+ const beforeHash = split[0];
87
+ const website = beforeHash.split('://')[1];
88
+ if (!website.includes('/')) {
89
+ this._url = split.join('/#');
90
+ }
91
+ }
92
+
93
+ if (
94
+ !this._url.endsWith('/') &&
95
+ !(this._url.includes('?') || this._url.includes('#'))
96
+ ) {
85
97
  this._url += '/';
86
98
  }
87
99
  } else {
@@ -107,15 +119,21 @@ export class URL {
107
119
  }
108
120
 
109
121
  get hash(): string {
110
- throw new Error('URL.hash is not implemented');
122
+ const hashMatch = this._url.match(/#([^/]*)/);
123
+ return hashMatch ? `#${hashMatch[1]}` : '';
111
124
  }
112
125
 
113
126
  get host(): string {
114
- throw new Error('URL.host is not implemented');
127
+ const hostMatch = this._url.match(/^https?:\/\/(?:[^@]+@)?([^:/?#]+)/);
128
+ const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/);
129
+ return hostMatch
130
+ ? hostMatch[1] + (portMatch ? `:${portMatch[1]}` : '')
131
+ : '';
115
132
  }
116
133
 
117
134
  get hostname(): string {
118
- throw new Error('URL.hostname is not implemented');
135
+ const hostnameMatch = this._url.match(/^https?:\/\/(?:[^@]+@)?([^:/?#]+)/);
136
+ return hostnameMatch ? hostnameMatch[1] : '';
119
137
  }
120
138
 
121
139
  get href(): string {
@@ -123,32 +141,38 @@ export class URL {
123
141
  }
124
142
 
125
143
  get origin(): string {
126
- throw new Error('URL.origin is not implemented');
144
+ const matches = this._url.match(/^(https?:\/\/[^/]+)/);
145
+ return matches ? matches[1] : '';
127
146
  }
128
147
 
129
148
  get password(): string {
130
- throw new Error('URL.password is not implemented');
149
+ const passwordMatch = this._url.match(/https?:\/\/.*:(.*)@/);
150
+ return passwordMatch ? passwordMatch[1] : '';
131
151
  }
132
152
 
133
153
  get pathname(): string {
134
- throw new Error('URL.pathname not implemented');
154
+ const pathMatch = this._url.match(/https?:\/\/[^/]+(\/[^?#]*)?/);
155
+ return pathMatch ? pathMatch[1] || '/' : '/';
135
156
  }
136
157
 
137
158
  get port(): string {
138
- throw new Error('URL.port is not implemented');
159
+ const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/);
160
+ return portMatch ? portMatch[1] : '';
139
161
  }
140
162
 
141
163
  get protocol(): string {
142
- throw new Error('URL.protocol is not implemented');
164
+ const protocolMatch = this._url.match(/^([a-zA-Z][a-zA-Z\d+\-.]*):/);
165
+ return protocolMatch ? protocolMatch[1] + ':' : '';
143
166
  }
144
167
 
145
168
  get search(): string {
146
- throw new Error('URL.search is not implemented');
169
+ const searchMatch = this._url.match(/\?([^#]*)/);
170
+ return searchMatch ? `?${searchMatch[1]}` : '';
147
171
  }
148
172
 
149
173
  get searchParams(): URLSearchParams {
150
174
  if (this._searchParamsInstance == null) {
151
- this._searchParamsInstance = new URLSearchParams();
175
+ this._searchParamsInstance = new URLSearchParams(this.search);
152
176
  }
153
177
  return this._searchParamsInstance;
154
178
  }
@@ -168,6 +192,7 @@ export class URL {
168
192
  }
169
193
 
170
194
  get username(): string {
171
- throw new Error('URL.username is not implemented');
195
+ const usernameMatch = this._url.match(/^https?:\/\/([^:@]+)(?::[^@]*)?@/);
196
+ return usernameMatch ? usernameMatch[1] : '';
172
197
  }
173
198
  }
@@ -11,60 +11,135 @@
11
11
  // Small subset from whatwg-url: https://github.com/jsdom/whatwg-url/tree/master/src
12
12
  // The reference code bloat comes from Unicode issues with URLs, so those won't work here.
13
13
  export class URLSearchParams {
14
- _searchParams: Array<[string, string]> = [];
14
+ _searchParams: Map<string, string[]> = new Map();
15
15
 
16
- constructor(params?: Record<string, string>) {
17
- if (typeof params === 'object') {
18
- Object.keys(params).forEach(key => this.append(key, params[key]));
16
+ constructor(params?: Record<string, string> | string | [string, string][]) {
17
+ if (params === null) {
18
+ return;
19
+ }
20
+
21
+ if (typeof params === 'string') {
22
+ // URLSearchParams("key1=value1&key2=value2");
23
+ params
24
+ .replace(/^\?/, '')
25
+ .split('&')
26
+ .forEach(pair => {
27
+ if (!pair) {
28
+ return;
29
+ }
30
+ const [key, value] = pair
31
+ .split('=')
32
+ .map(part => decodeURIComponent(part.replace(/\+/g, ' ')));
33
+ this.append(key, value);
34
+ });
35
+ } else if (Array.isArray(params)) {
36
+ //URLSearchParams([["key1", "value1"], ["key2", "value2"]]);
37
+ params.forEach(([key, value]) => this.append(key, value));
38
+ } else if (typeof params === 'object') {
39
+ //URLSearchParams({ key1: "value1", key2: "value2" });
40
+ Object.entries(params).forEach(([key, value]) => this.append(key, value));
19
41
  }
20
42
  }
21
43
 
22
44
  append(key: string, value: string): void {
23
- this._searchParams.push([key, value]);
45
+ if (!this._searchParams.has(key)) {
46
+ this._searchParams.set(key, [value]); // Initialize with an array if key is missing
47
+ } else {
48
+ this._searchParams.get(key)?.push(value); // Else push the value to the array
49
+ }
50
+ }
51
+
52
+ delete(name: string): void {
53
+ this._searchParams.delete(name);
24
54
  }
25
55
 
26
- delete(name: string): empty {
27
- throw new Error('URLSearchParams.delete is not implemented');
56
+ get(name: string): string | null {
57
+ const values = this._searchParams.get(name);
58
+ return values ? values[0] : null;
28
59
  }
29
60
 
30
- get(name: string): empty {
31
- throw new Error('URLSearchParams.get is not implemented');
61
+ getAll(name: string): string[] {
62
+ return this._searchParams.get(name) ?? [];
32
63
  }
33
64
 
34
- getAll(name: string): empty {
35
- throw new Error('URLSearchParams.getAll is not implemented');
65
+ has(name: string): boolean {
66
+ return this._searchParams.has(name);
36
67
  }
37
68
 
38
- has(name: string): empty {
39
- throw new Error('URLSearchParams.has is not implemented');
69
+ set(name: string, value: string): void {
70
+ this._searchParams.set(name, [value]);
40
71
  }
41
72
 
42
- set(name: string, value: string): empty {
43
- throw new Error('URLSearchParams.set is not implemented');
73
+ keys(): Iterator<string> {
74
+ return this._searchParams.keys();
44
75
  }
45
76
 
46
- sort(): empty {
47
- throw new Error('URLSearchParams.sort is not implemented');
77
+ values(): Iterator<string> {
78
+ function* generateValues(params: Map<string, string[]>): Iterator<string> {
79
+ for (const valueArray of params.values()) {
80
+ for (const value of valueArray) {
81
+ yield value;
82
+ }
83
+ }
84
+ }
85
+ return generateValues(this._searchParams);
86
+ }
87
+
88
+ entries(): Iterator<[string, string]> {
89
+ function* generateEntries(
90
+ params: Map<string, string[]>,
91
+ ): Iterator<[string, string]> {
92
+ for (const [key, values] of params) {
93
+ for (const value of values) {
94
+ yield [key, value];
95
+ }
96
+ }
97
+ }
98
+
99
+ return generateEntries(this._searchParams);
100
+ }
101
+
102
+ forEach(
103
+ callback: (value: string, key: string, searchParams: this) => void,
104
+ ): void {
105
+ for (const [key, values] of this._searchParams) {
106
+ for (const value of values) {
107
+ callback(value, key, this);
108
+ }
109
+ }
110
+ }
111
+
112
+ sort(): void {
113
+ this._searchParams = new Map(
114
+ [...this._searchParams.entries()].sort(([a], [b]) => a.localeCompare(b)),
115
+ );
48
116
  }
49
117
 
50
118
  // $FlowFixMe[unsupported-syntax]
51
119
  [Symbol.iterator](): Iterator<[string, string]> {
52
- return this._searchParams[Symbol.iterator]();
120
+ const entries: [string, string][] = [];
121
+
122
+ for (const [key, values] of this._searchParams) {
123
+ for (const value of values) {
124
+ entries.push([key, value]);
125
+ }
126
+ }
127
+
128
+ return entries[Symbol.iterator]();
53
129
  }
54
130
 
55
131
  toString(): string {
56
- if (this._searchParams.length === 0) {
57
- return '';
58
- }
59
- const last = this._searchParams.length - 1;
60
- return this._searchParams.reduce((acc, curr, index) => {
61
- return (
62
- acc +
63
- encodeURIComponent(curr[0]) +
64
- '=' +
65
- encodeURIComponent(curr[1]) +
66
- (index === last ? '' : '&')
67
- );
68
- }, '');
132
+ return Array.from(this._searchParams.entries())
133
+ .map(([key, values]) =>
134
+ values
135
+ .map(
136
+ value =>
137
+ `${encodeURIComponent(key).replace(/%20/g, '+')}=${encodeURIComponent(
138
+ value,
139
+ ).replace(/%20/g, '+')}`, // Convert only spaces to '+'
140
+ )
141
+ .join('&'),
142
+ )
143
+ .join('&');
69
144
  }
70
145
  }
@@ -10,14 +10,19 @@
10
10
 
11
11
  declare export class URLSearchParams {
12
12
  _searchParams: Array<[string, string]>;
13
- constructor(params?: Record<string, string>): void;
13
+ constructor(
14
+ params?: Record<string, string> | string | Array<[string, string]>,
15
+ ): void;
14
16
  append(key: string, value: string): void;
15
- delete(name: string): empty;
16
- get(name: string): empty;
17
- getAll(name: string): empty;
18
- has(name: string): empty;
19
- set(name: string, value: string): empty;
20
- sort(): empty;
17
+ delete(name: string): void;
18
+ get(name: string): string;
19
+ getAll(name: string): Array<string>;
20
+ has(name: string): boolean;
21
+ set(name: string, value: string): void;
22
+ sort(): void;
21
23
  @@iterator(): Iterator<[string, string]>;
22
24
  toString(): string;
25
+ keys(): Iterator<string>;
26
+ values(): Iterator<string>;
27
+ entries(): Iterator<[string, string]>;
23
28
  }
@@ -397,7 +397,7 @@ const AccessibilityInfo = {
397
397
  addEventListener<K: $Keys<AccessibilityEventDefinitions>>(
398
398
  eventName: K,
399
399
  // $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423)
400
- handler: (...$ElementType<AccessibilityEventDefinitions, K>) => void,
400
+ handler: (...AccessibilityEventDefinitions[K]) => void,
401
401
  ): EventSubscription {
402
402
  const deviceEventName = EventNames.get(eventName);
403
403
  return deviceEventName == null
@@ -408,7 +408,7 @@ const AccessibilityInfo = {
408
408
  addEventListener<K: $Keys<AccessibilityEventDefinitions>>(
409
409
  eventName: K,
410
410
  // $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423)
411
- handler: (...$ElementType<AccessibilityEventDefinitions, K>) => void,
411
+ handler: (...AccessibilityEventDefinitions[K]) => void,
412
412
  ): EventSubscription {
413
413
  const deviceEventName = EventNames.get(eventName);
414
414
  return deviceEventName == null
@@ -0,0 +1,17 @@
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
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ // NOTE: This file supports backwards compatibility of subpath (deep) imports
12
+ // from 'react-native' with platform-specific extensions. It can be deleted
13
+ // once we remove the "./*" mapping from package.json "exports".
14
+
15
+ import legacySendAccessibilityEvent from './legacySendAccessibilityEvent';
16
+
17
+ export default legacySendAccessibilityEvent;
@@ -110,6 +110,7 @@ const ActivityIndicator = (
110
110
  style={StyleSheet.compose(styles.container, style)}>
111
111
  {Platform.OS === 'android' ? (
112
112
  // $FlowFixMe[prop-missing] Flow doesn't know when this is the android component
113
+ // $FlowFixMe[incompatible-type]
113
114
  <PlatformActivityIndicator {...nativeProps} {...androidProps} />
114
115
  ) : (
115
116
  /* $FlowFixMe[incompatible-type] (>=0.106.0 site=react_native_android_fb) This comment
@@ -17,6 +17,7 @@ export interface ButtonProps
17
17
  TouchableNativeFeedbackProps & TouchableOpacityProps,
18
18
  | 'accessibilityLabel'
19
19
  | 'accessibilityState'
20
+ | 'accessibilityValue' // Windows
20
21
  | 'hasTVPreferredFocus'
21
22
  | 'nextFocusDown'
22
23
  | 'nextFocusForward'
@@ -37,6 +38,8 @@ export interface ButtonProps
37
38
  * Color of the text (iOS), or background color of the button (Android).
38
39
  */
39
40
  color?: ColorValue | undefined;
41
+
42
+ onAccessibilityTap?: () => void; // Windows
40
43
  }
41
44
 
42
45
  export class Button extends React.Component<ButtonProps> {}
@@ -38,7 +38,7 @@ export type ButtonProps = $ReadOnly<{
38
38
  Handler to be called when the user taps the button. The first function
39
39
  argument is an event in form of [GestureResponderEvent](pressevent).
40
40
  */
41
- onPress: (event?: GestureResponderEvent) => mixed,
41
+ onPress?: (event?: GestureResponderEvent) => mixed,
42
42
 
43
43
  /**
44
44
  If `true`, doesn't play system sound on touch.
@@ -16,6 +16,7 @@ import type {
16
16
  AccessibilityActionEvent,
17
17
  AccessibilityActionInfo,
18
18
  AccessibilityState,
19
+ AccessibilityValue, // Windows
19
20
  } from './View/ViewAccessibility';
20
21
 
21
22
  import StyleSheet, {type ColorValue} from '../StyleSheet/StyleSheet';
@@ -42,7 +43,7 @@ export type ButtonProps = $ReadOnly<{
42
43
  Handler to be called when the user taps the button. The first function
43
44
  argument is an event in form of [GestureResponderEvent](pressevent).
44
45
  */
45
- onPress: (event?: GestureResponderEvent) => mixed,
46
+ onPress?: (event?: GestureResponderEvent) => mixed,
46
47
 
47
48
  /**
48
49
  If `true`, doesn't play system sound on touch.
@@ -154,6 +155,7 @@ export type ButtonProps = $ReadOnly<{
154
155
  onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,
155
156
  onAccessibilityTap?: ?() => void, // Windows
156
157
  accessibilityState?: ?AccessibilityState,
158
+ accessibilityValue?: ?AccessibilityValue, // Windows
157
159
 
158
160
  /**
159
161
  * alias for accessibilityState
@@ -169,6 +171,15 @@ export type ButtonProps = $ReadOnly<{
169
171
  'aria-multiselectable'?: ?boolean, // Windows
170
172
  'aria-required'?: ?boolean, // Windows
171
173
 
174
+ /**
175
+ * alias for accessibilityValue
176
+ * It represents textual description of a component's value, or for range-based components, such as sliders and progress bars.
177
+ */
178
+ 'aria-valuemax'?: ?AccessibilityValue['max'],
179
+ 'aria-valuemin'?: ?AccessibilityValue['min'],
180
+ 'aria-valuenow'?: ?AccessibilityValue['now'],
181
+ 'aria-valuetext'?: ?AccessibilityValue['text'],
182
+
172
183
  /**
173
184
  * [Android] Controlling if a view fires accessibility events and if it is reported to accessibility services.
174
185
  */
@@ -308,6 +319,7 @@ const Button: component(
308
319
  const {
309
320
  accessibilityLabel,
310
321
  accessibilityState,
322
+ accessibilityValue, // Windows
311
323
  'aria-busy': ariaBusy,
312
324
  'aria-checked': ariaChecked,
313
325
  'aria-disabled': ariaDisabled,
@@ -317,6 +329,10 @@ const Button: component(
317
329
  'aria-readonly': ariaReadOnly, // Windows
318
330
  'aria-multiselectable': ariaMultiselectable, // Windows
319
331
  'aria-required': ariaRequired, // Windows
332
+ 'aria-valuemax': ariaValueMax, // Windows
333
+ 'aria-valuemin': ariaValueMin, // Windows
334
+ 'aria-valuenow': ariaValueNow, // Windows
335
+ 'aria-valuetext': ariaValueText, // Windows
320
336
  importantForAccessibility,
321
337
  color,
322
338
  onPress,
@@ -366,6 +382,15 @@ const Button: component(
366
382
  ? {..._accessibilityState, disabled}
367
383
  : _accessibilityState;
368
384
 
385
+ // [Windows
386
+ let _accessibilityValue = {
387
+ max: ariaValueMax ?? accessibilityValue?.max,
388
+ min: ariaValueMin ?? accessibilityValue?.min,
389
+ now: ariaValueNow ?? accessibilityValue?.now,
390
+ text: ariaValueText ?? accessibilityValue?.text,
391
+ };
392
+ // Windows]
393
+
369
394
  if (disabled) {
370
395
  buttonStyles.push(styles.buttonDisabled);
371
396
  textStyles.push(styles.textDisabled);
@@ -393,6 +418,7 @@ const Button: component(
393
418
  accessibilityLanguage={accessibilityLanguage}
394
419
  accessibilityRole="button"
395
420
  accessibilityState={_accessibilityState}
421
+ accessibilityValue={_accessibilityValue} // Windows
396
422
  onAccessibilityTap={onAccessibilityTap} // Windows
397
423
  importantForAccessibility={_importantForAccessibility}
398
424
  hasTVPreferredFocus={hasTVPreferredFocus}