@office-iss/react-native-win32 0.79.1 → 0.80.0

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 (294) hide show
  1. package/.flowconfig +10 -3
  2. package/CHANGELOG.json +117 -24
  3. package/CHANGELOG.md +49 -14
  4. package/IntegrationTests/ImageCachePolicyTest.js +1 -1
  5. package/IntegrationTests/LayoutEventsTest.js +1 -4
  6. package/Libraries/Alert/Alert.d.ts +4 -1
  7. package/Libraries/Alert/Alert.js +3 -0
  8. package/Libraries/Alert/RCTAlertManager.js +17 -0
  9. package/Libraries/Animated/Animated.js.flow +1 -3
  10. package/Libraries/Animated/AnimatedEvent.js +4 -3
  11. package/Libraries/Animated/AnimatedExports.js +2 -2
  12. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  13. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  14. package/Libraries/Animated/Easing.js +13 -15
  15. package/Libraries/Animated/animations/Animation.js +8 -4
  16. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  17. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  18. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  19. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  20. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  22. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  23. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  24. package/Libraries/AppState/AppState.js +7 -2
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  26. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  27. package/Libraries/Blob/BlobManager.js +1 -0
  28. package/Libraries/Blob/FileReader.js +219 -8
  29. package/Libraries/Blob/URL.js +37 -12
  30. package/Libraries/Blob/URLSearchParams.js +106 -31
  31. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
  34. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  35. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  36. package/Libraries/Components/Button.js +1 -1
  37. package/Libraries/Components/Button.win32.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  39. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  43. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  45. package/Libraries/Components/Pressable/Pressable.js +20 -4
  46. package/Libraries/Components/Pressable/Pressable.win32.js +20 -4
  47. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  48. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  49. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  50. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  51. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  52. package/Libraries/Components/StaticRenderer.js +1 -1
  53. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  54. package/Libraries/Components/Switch/Switch.js +8 -4
  55. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  57. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +2 -1
  58. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  59. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  60. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  61. package/Libraries/Components/TextInput/TextInput.flow.win32.js +1208 -0
  62. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  63. package/Libraries/Components/TextInput/TextInput.win32.js +89 -1059
  64. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  65. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  66. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  67. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  68. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  69. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +4 -32
  70. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  71. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +2 -1
  72. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  73. package/Libraries/Components/Touchable/Touchable.js +5 -5
  74. package/Libraries/Components/Touchable/Touchable.win32.js +5 -5
  75. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  76. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  77. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  78. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +6 -6
  79. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  80. package/Libraries/Components/View/View.js +18 -21
  81. package/Libraries/Components/View/View.win32.js +21 -24
  82. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  83. package/Libraries/Components/View/ViewAccessibility.win32.js +9 -1
  84. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +49 -3
  86. package/Libraries/Core/ReactNativeVersion.js +1 -1
  87. package/Libraries/Core/setUpReactDevTools.js +5 -5
  88. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  89. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  90. package/Libraries/Image/AssetSourceResolver.js +17 -4
  91. package/Libraries/Image/Image.d.ts +26 -10
  92. package/Libraries/Image/Image.js +17 -0
  93. package/Libraries/Image/Image.js.flow +5 -5
  94. package/Libraries/Image/ImageBackground.js +2 -0
  95. package/Libraries/Image/ImageInjection.js +1 -1
  96. package/Libraries/Image/ImageProps.js +22 -17
  97. package/Libraries/Image/ImageSource.js +3 -1
  98. package/Libraries/Image/ImageSourceUtils.js +4 -2
  99. package/Libraries/Image/ImageTypes.flow.js +1 -1
  100. package/Libraries/Image/Tests/ImageWin32Test.d.ts +2 -1
  101. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  102. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  103. package/Libraries/Interaction/InteractionManager.js +1 -1
  104. package/Libraries/Interaction/PanResponder.js +3 -3
  105. package/Libraries/Interaction/TaskQueue.js +1 -0
  106. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  107. package/Libraries/Linking/Linking.js +1 -1
  108. package/Libraries/Lists/FlatList.d.ts +2 -2
  109. package/Libraries/Lists/FlatList.js +8 -11
  110. package/Libraries/Lists/SectionList.js +39 -42
  111. package/Libraries/Lists/SectionListModern.js +25 -34
  112. package/Libraries/Lists/VirtualizedList.js +1 -0
  113. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  114. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  115. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  116. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +140 -0
  117. package/Libraries/Modal/Modal.js +33 -7
  118. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  119. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  120. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  121. package/Libraries/NativeComponent/BaseViewConfig.win32.js +1 -0
  122. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  123. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  124. package/Libraries/Network/RCTNetworking.android.js +1 -1
  125. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  126. package/Libraries/Network/RCTNetworking.js +17 -0
  127. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  128. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  129. package/Libraries/Network/XMLHttpRequest.js +781 -10
  130. package/Libraries/Performance/Systrace.js +7 -7
  131. package/Libraries/Pressability/Pressability.js +1 -1
  132. package/Libraries/Pressability/Pressability.win32.js +1 -1
  133. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  134. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  135. package/Libraries/ReactNative/AppRegistry.js +2 -322
  136. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  137. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  138. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  139. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  140. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  141. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  142. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  143. package/Libraries/ReactNative/renderApplication.js +9 -0
  144. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  145. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  146. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  147. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  148. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  149. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  150. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  151. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  152. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  153. package/Libraries/Settings/Settings.ios.js +1 -0
  154. package/Libraries/Settings/Settings.js +13 -19
  155. package/Libraries/Settings/Settings.win32.js +19 -20
  156. package/Libraries/Settings/SettingsFallback.js +33 -0
  157. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  158. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  159. package/Libraries/StyleSheet/Rect.js +1 -0
  160. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  161. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  162. package/Libraries/StyleSheet/{StyleSheet.win32.js → StyleSheetExports.js} +2 -151
  163. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  166. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  167. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  168. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  169. package/Libraries/Text/Text.d.ts +2 -5
  170. package/Libraries/Text/Text.js +3 -3
  171. package/Libraries/Text/Text.win32.js +3 -3
  172. package/Libraries/Text/TextNativeComponent.js +0 -4
  173. package/Libraries/Text/TextNativeComponent.win32.js +0 -4
  174. package/Libraries/Text/TextProps.js +5 -33
  175. package/Libraries/Text/TextProps.win32.js +5 -30
  176. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  177. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  178. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  179. package/Libraries/Types/CoreEventTypes.js +1 -1
  180. package/Libraries/Types/CoreEventTypes.win32.js +1 -1
  181. package/Libraries/Utilities/Appearance.js +2 -0
  182. package/Libraries/Utilities/BackHandler.js +17 -0
  183. package/Libraries/Utilities/DeviceInfo.js +2 -0
  184. package/Libraries/Utilities/Dimensions.js +1 -1
  185. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  186. package/Libraries/Utilities/Platform.js +17 -0
  187. package/Libraries/Utilities/PlatformTypes.js +11 -3
  188. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  189. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  190. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  191. package/Libraries/WebSocket/WebSocket.js +313 -8
  192. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  193. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  194. package/flow/global.js +1 -0
  195. package/index.js +51 -331
  196. package/index.win32.js +71 -352
  197. package/interface.js +0 -4
  198. package/jest/resolver.js +31 -0
  199. package/overrides.json +45 -47
  200. package/package.json +25 -25
  201. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  202. package/src/private/animated/NativeAnimatedHelper.win32.js +21 -8
  203. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  204. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  205. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  206. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  207. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  208. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  209. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  210. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  211. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  212. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  213. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  214. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  215. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  216. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  217. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  218. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  219. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  220. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  221. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  222. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  223. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  224. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  225. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  226. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.win32.js +1 -1
  227. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  228. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  229. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  230. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  231. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +9 -1
  232. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  233. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  234. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  235. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  236. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  237. package/src/private/styles/composeStyles.js +12 -5
  238. package/src/private/types/HostComponent.js +1 -1
  239. package/src/private/types/HostInstance.js +67 -1
  240. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  241. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  242. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  243. package/src/private/webapis/performance/Performance.js +1 -3
  244. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  245. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  246. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  247. package/src/types/globals.d.ts +42 -0
  248. package/src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx +7 -7
  249. package/src-win/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +3 -3
  250. package/src-win/Libraries/Image/Tests/ImageWin32Test.tsx +1 -1
  251. package/src-win/Libraries/Text/Text.d.ts +2 -5
  252. package/types/index.d.ts +6 -3
  253. package/types/public/ReactNativeTypes.d.ts +2 -2
  254. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  255. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  256. package/Libraries/Blob/FileReader_new.js +0 -231
  257. package/Libraries/Blob/FileReader_old.js +0 -186
  258. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  259. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  260. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  261. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  262. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  263. package/Libraries/Events/CustomEvent.js +0 -32
  264. package/Libraries/Events/EventPolyfill.js +0 -239
  265. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  266. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  267. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  268. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  269. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  270. package/Libraries/NewAppScreen/components/Header.js +0 -77
  271. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  272. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  273. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  274. package/Libraries/NewAppScreen/components/logo.png +0 -0
  275. package/Libraries/NewAppScreen/index.js +0 -25
  276. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  277. package/Libraries/Utilities/DeviceInfo.win32.js +0 -19
  278. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  279. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  280. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  281. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  282. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  283. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  284. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  285. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  286. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  287. package/flow/jest.js +0 -1287
  288. package/jest/__tests__/setup-test.js +0 -18
  289. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  290. package/src/private/utilities/ensureInstance.js +0 -21
  291. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  292. package/types/modules/LaunchScreen.d.ts +0 -18
  293. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  294. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -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
@@ -421,7 +421,7 @@ const AccessibilityInfo = {
421
421
  addEventListener<K: $Keys<AccessibilityEventDefinitions>>(
422
422
  eventName: K,
423
423
  // $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423)
424
- handler: (...$ElementType<AccessibilityEventDefinitions, K>) => void,
424
+ handler: (...AccessibilityEventDefinitions[K]) => void,
425
425
  ): EventSubscription {
426
426
  const deviceEventName = EventNames.get(eventName);
427
427
  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
@@ -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.
@@ -39,7 +39,7 @@ export type ButtonProps = $ReadOnly<{
39
39
  Handler to be called when the user taps the button. The first function
40
40
  argument is an event in form of [GestureResponderEvent](pressevent).
41
41
  */
42
- onPress: (event?: GestureResponderEvent) => mixed,
42
+ onPress?: (event?: GestureResponderEvent) => mixed,
43
43
 
44
44
  /**
45
45
  If `true`, doesn't play system sound on touch.
@@ -13,8 +13,6 @@ import type {
13
13
  MeasureLayoutOnSuccessCallback,
14
14
  MeasureOnSuccessCallback,
15
15
  } from '../../../src/private/types/HostInstance';
16
- import type {AccessibilityRole} from '../../Components/View/ViewAccessibility';
17
- import typeof DrawerLayoutAndroidCommon from './DrawerLayoutAndroid.js';
18
16
  import type {
19
17
  DrawerLayoutAndroidMethods,
20
18
  DrawerLayoutAndroidProps,
@@ -305,4 +303,4 @@ const styles = StyleSheet.create({
305
303
  },
306
304
  });
307
305
 
308
- export default DrawerLayoutAndroid as $FlowFixMe as DrawerLayoutAndroidCommon;
306
+ export default DrawerLayoutAndroid as $FlowFixMe;
@@ -4,16 +4,12 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow strict-local
8
7
  * @format
8
+ * @flow strict-local
9
9
  */
10
10
 
11
- export default {
12
- primary: '#1292B4',
13
- white: '#FFF',
14
- lighter: '#F3F3F3',
15
- light: '#DAE1E7',
16
- dark: '#444',
17
- darker: '#222',
18
- black: '#000',
19
- };
11
+ 'use strict';
12
+
13
+ import DrawerLayoutAndroidFallback from './DrawerLayoutAndroidFallback';
14
+
15
+ export default DrawerLayoutAndroidFallback;
@@ -5,73 +5,13 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  * @format
8
- * @flow strict-local
8
+ * @flow
9
9
  */
10
10
 
11
- 'use strict';
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".
12
14
 
13
- // import typeof DrawerLayoutAndroid from './DrawerLayoutAndroid.android';
14
- import type {
15
- MeasureInWindowOnSuccessCallback,
16
- MeasureLayoutOnSuccessCallback,
17
- MeasureOnSuccessCallback,
18
- } from '../../../src/private/types/HostInstance';
19
- import type {
20
- DrawerLayoutAndroidMethods,
21
- DrawerLayoutAndroidProps,
22
- DrawerLayoutAndroidState,
23
- } from './DrawerLayoutAndroidTypes';
15
+ import DrawerLayoutAndroid from './DrawerLayoutAndroid';
24
16
 
25
- import UnimplementedView from '../UnimplementedViews/UnimplementedView';
26
- import * as React from 'react';
27
-
28
- export type {
29
- DrawerLayoutAndroidProps,
30
- DrawerSlideEvent,
31
- } from './DrawerLayoutAndroidTypes';
32
-
33
- export default class DrawerLayoutAndroid
34
- extends React.Component<DrawerLayoutAndroidProps, DrawerLayoutAndroidState>
35
- implements DrawerLayoutAndroidMethods
36
- {
37
- render(): React.Node {
38
- return <UnimplementedView {...this.props} />;
39
- }
40
-
41
- openDrawer(): void {
42
- throw new Error('DrawerLayoutAndroid is only available on Android');
43
- }
44
-
45
- closeDrawer(): void {
46
- throw new Error('DrawerLayoutAndroid is only available on Android');
47
- }
48
-
49
- blur(): void {
50
- throw new Error('DrawerLayoutAndroid is only available on Android');
51
- }
52
-
53
- focus(): void {
54
- throw new Error('DrawerLayoutAndroid is only available on Android');
55
- }
56
-
57
- measure(callback: MeasureOnSuccessCallback): void {
58
- throw new Error('DrawerLayoutAndroid is only available on Android');
59
- }
60
-
61
- measureInWindow(callback: MeasureInWindowOnSuccessCallback): void {
62
- throw new Error('DrawerLayoutAndroid is only available on Android');
63
- }
64
-
65
- measureLayout(
66
- relativeToNativeNode: number,
67
- onSuccess: MeasureLayoutOnSuccessCallback,
68
- onFail?: () => void,
69
- ): void {
70
- throw new Error('DrawerLayoutAndroid is only available on Android');
71
- }
72
-
73
- // $FlowFixMe[unclear-type]
74
- setNativeProps(nativeProps: Object): void {
75
- throw new Error('DrawerLayoutAndroid is only available on Android');
76
- }
77
- }
17
+ export default DrawerLayoutAndroid;
@@ -0,0 +1,18 @@
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 DrawerLayoutAndroid from './DrawerLayoutAndroidFallback';
12
+
13
+ export type {
14
+ DrawerLayoutAndroidProps,
15
+ DrawerSlideEvent,
16
+ } from './DrawerLayoutAndroidTypes';
17
+
18
+ export default DrawerLayoutAndroid;
@@ -0,0 +1,71 @@
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
+ 'use strict';
12
+
13
+ import type {
14
+ MeasureInWindowOnSuccessCallback,
15
+ MeasureLayoutOnSuccessCallback,
16
+ MeasureOnSuccessCallback,
17
+ } from '../../../src/private/types/HostInstance';
18
+ import type {
19
+ DrawerLayoutAndroidMethods,
20
+ DrawerLayoutAndroidProps,
21
+ DrawerLayoutAndroidState,
22
+ } from './DrawerLayoutAndroidTypes';
23
+
24
+ import UnimplementedView from '../UnimplementedViews/UnimplementedView';
25
+ import * as React from 'react';
26
+
27
+ export default class DrawerLayoutAndroid
28
+ extends React.Component<DrawerLayoutAndroidProps, DrawerLayoutAndroidState>
29
+ implements DrawerLayoutAndroidMethods
30
+ {
31
+ render(): React.Node {
32
+ return <UnimplementedView {...this.props} />;
33
+ }
34
+
35
+ openDrawer(): void {
36
+ throw new Error('DrawerLayoutAndroid is only available on Android');
37
+ }
38
+
39
+ closeDrawer(): void {
40
+ throw new Error('DrawerLayoutAndroid is only available on Android');
41
+ }
42
+
43
+ blur(): void {
44
+ throw new Error('DrawerLayoutAndroid is only available on Android');
45
+ }
46
+
47
+ focus(): void {
48
+ throw new Error('DrawerLayoutAndroid is only available on Android');
49
+ }
50
+
51
+ measure(callback: MeasureOnSuccessCallback): void {
52
+ throw new Error('DrawerLayoutAndroid is only available on Android');
53
+ }
54
+
55
+ measureInWindow(callback: MeasureInWindowOnSuccessCallback): void {
56
+ throw new Error('DrawerLayoutAndroid is only available on Android');
57
+ }
58
+
59
+ measureLayout(
60
+ relativeToNativeNode: number,
61
+ onSuccess: MeasureLayoutOnSuccessCallback,
62
+ onFail?: () => void,
63
+ ): void {
64
+ throw new Error('DrawerLayoutAndroid is only available on Android');
65
+ }
66
+
67
+ // $FlowFixMe[unclear-type]
68
+ setNativeProps(nativeProps: Object): void {
69
+ throw new Error('DrawerLayoutAndroid is only available on Android');
70
+ }
71
+ }
@@ -103,7 +103,7 @@ type KeyboardEventDefinitions = {
103
103
  *```
104
104
  */
105
105
 
106
- class Keyboard {
106
+ class KeyboardImpl {
107
107
  _currentlyShowing: ?KeyboardEvent;
108
108
 
109
109
  _emitter: NativeEventEmitter<KeyboardEventDefinitions> =
@@ -148,7 +148,7 @@ class Keyboard {
148
148
  */
149
149
  addListener<K: $Keys<KeyboardEventDefinitions>>(
150
150
  eventType: K,
151
- listener: (...$ElementType<KeyboardEventDefinitions, K>) => mixed,
151
+ listener: (...KeyboardEventDefinitions[K]) => mixed,
152
152
  context?: mixed,
153
153
  ): EventSubscription {
154
154
  return this._emitter.addListener(eventType, listener);
@@ -202,4 +202,6 @@ class Keyboard {
202
202
  }
203
203
  }
204
204
 
205
- export default (new Keyboard(): Keyboard);
205
+ const Keyboard: KeyboardImpl = new KeyboardImpl();
206
+
207
+ export default Keyboard;
@@ -51,7 +51,7 @@ export type KeyboardAvoidingViewProps = $ReadOnly<{
51
51
  keyboardVerticalOffset?: number,
52
52
  }>;
53
53
 
54
- type State = {
54
+ type KeyboardAvoidingViewState = {
55
55
  bottom: number,
56
56
  };
57
57
 
@@ -61,7 +61,7 @@ type State = {
61
61
  */
62
62
  class KeyboardAvoidingView extends React.Component<
63
63
  KeyboardAvoidingViewProps,
64
- State,
64
+ KeyboardAvoidingViewState,
65
65
  > {
66
66
  _frame: ?ViewLayout = null;
67
67
  _keyboardEvent: ?KeyboardEvent = null;
@@ -178,7 +178,10 @@ class KeyboardAvoidingView extends React.Component<
178
178
  }
179
179
  };
180
180
 
181
- componentDidUpdate(_: KeyboardAvoidingViewProps, prevState: State): void {
181
+ componentDidUpdate(
182
+ _: KeyboardAvoidingViewProps,
183
+ prevState: KeyboardAvoidingViewState,
184
+ ): void {
182
185
  const enabled = this.props.enabled ?? true;
183
186
  if (enabled && this._bottom !== prevState.bottom) {
184
187
  this.setState({bottom: this._bottom});
@@ -26,7 +26,9 @@ import useAndroidRippleForView, {
26
26
  import * as React from 'react';
27
27
  import {useMemo, useRef, useState} from 'react';
28
28
 
29
- type ViewStyleProp = $ElementType<React.ElementConfig<typeof View>, 'style'>;
29
+ type ViewStyleProp = React.ElementConfig<typeof View>['style'];
30
+
31
+ export type {PressableAndroidRippleConfig};
30
32
 
31
33
  export type PressableStateCallbackType = $ReadOnly<{
32
34
  pressed: boolean,
@@ -43,7 +45,7 @@ type PressableBaseProps = $ReadOnly<{
43
45
  * Either children or a render prop that receives a boolean reflecting whether
44
46
  * the component is currently pressed.
45
47
  */
46
- children: React.Node | ((state: PressableStateCallbackType) => React.Node),
48
+ children?: React.Node | ((state: PressableStateCallbackType) => React.Node),
47
49
 
48
50
  /**
49
51
  * Duration to wait after hover in before calling `onHoverIn`.
@@ -105,6 +107,10 @@ type PressableBaseProps = $ReadOnly<{
105
107
  * Called when a touch is engaged before `onPress`.
106
108
  */
107
109
  onPressIn?: ?(event: GestureResponderEvent) => mixed,
110
+ /**
111
+ * Called when the press location moves.
112
+ */
113
+ onPressMove?: ?(event: GestureResponderEvent) => mixed,
108
114
 
109
115
  /**
110
116
  * Called when a touch is released before `onPress`.
@@ -146,7 +152,10 @@ type PressableBaseProps = $ReadOnly<{
146
152
  }>;
147
153
 
148
154
  export type PressableProps = $ReadOnly<{
149
- ...ViewProps,
155
+ // Pressability may override `onMouseEnter` and `onMouseLeave` to
156
+ // implement `onHoverIn` and `onHoverOut` in a platform-agnostic way.
157
+ // Hover events should be used instead of mouse events.
158
+ ...Omit<ViewProps, 'onMouseEnter' | 'onMouseLeave'>,
150
159
  ...PressableBaseProps,
151
160
  }>;
152
161
 
@@ -185,6 +194,7 @@ function Pressable(
185
194
  onLongPress,
186
195
  onPress,
187
196
  onPressIn,
197
+ onPressMove,
188
198
  onPressOut,
189
199
  pressRetentionOffset,
190
200
  style,
@@ -263,7 +273,12 @@ function Pressable(
263
273
  onPressIn(event);
264
274
  }
265
275
  },
266
- onPressMove: android_rippleConfig?.onPressMove,
276
+ onPressMove(event: GestureResponderEvent): void {
277
+ android_rippleConfig?.onPressMove(event);
278
+ if (onPressMove != null) {
279
+ onPressMove(event);
280
+ }
281
+ },
267
282
  onPressOut(event: GestureResponderEvent): void {
268
283
  if (android_rippleConfig != null) {
269
284
  android_rippleConfig.onPressOut(event);
@@ -288,6 +303,7 @@ function Pressable(
288
303
  onLongPress,
289
304
  onPress,
290
305
  onPressIn,
306
+ onPressMove,
291
307
  onPressOut,
292
308
  pressRetentionOffset,
293
309
  setPressed,
@@ -32,7 +32,9 @@ import {useMemo, useRef, useState} from 'react';
32
32
  import type {HandledKeyboardEvent} from '../../Components/View/ViewPropTypes';
33
33
  import View from '../View/View';
34
34
 
35
- type ViewStyleProp = $ElementType<React.ElementConfig<typeof View>, 'style'>;
35
+ type ViewStyleProp = React.ElementConfig<typeof View>['style'];
36
+
37
+ export type {PressableAndroidRippleConfig};
36
38
 
37
39
  export type PressableStateCallbackType = $ReadOnly<{
38
40
  pressed: boolean,
@@ -49,7 +51,7 @@ type PressableBaseProps = $ReadOnly<{
49
51
  * Either children or a render prop that receives a boolean reflecting whether
50
52
  * the component is currently pressed.
51
53
  */
52
- children: React.Node | ((state: PressableStateCallbackType) => React.Node),
54
+ children?: React.Node | ((state: PressableStateCallbackType) => React.Node),
53
55
 
54
56
  /**
55
57
  * Duration to wait after hover in before calling `onHoverIn`.
@@ -111,6 +113,10 @@ type PressableBaseProps = $ReadOnly<{
111
113
  * Called when a touch is engaged before `onPress`.
112
114
  */
113
115
  onPressIn?: ?(event: GestureResponderEvent) => mixed,
116
+ /**
117
+ * Called when the press location moves.
118
+ */
119
+ onPressMove?: ?(event: GestureResponderEvent) => mixed,
114
120
 
115
121
  /**
116
122
  * Called when a touch is released before `onPress`.
@@ -192,7 +198,10 @@ type PressableBaseProps = $ReadOnly<{
192
198
  }>;
193
199
 
194
200
  export type PressableProps = $ReadOnly<{
195
- ...ViewProps,
201
+ // Pressability may override `onMouseEnter` and `onMouseLeave` to
202
+ // implement `onHoverIn` and `onHoverOut` in a platform-agnostic way.
203
+ // Hover events should be used instead of mouse events.
204
+ ...Omit<ViewProps, 'onMouseEnter' | 'onMouseLeave'>,
196
205
  ...PressableBaseProps,
197
206
  }>;
198
207
 
@@ -233,6 +242,7 @@ function Pressable(
233
242
  onLongPress,
234
243
  onPress,
235
244
  onPressIn,
245
+ onPressMove,
236
246
  onPressOut,
237
247
  // [Windows
238
248
  onBlur,
@@ -319,7 +329,12 @@ function Pressable(
319
329
  onPressIn(event);
320
330
  }
321
331
  },
322
- onPressMove: android_rippleConfig?.onPressMove,
332
+ onPressMove(event: GestureResponderEvent): void {
333
+ android_rippleConfig?.onPressMove(event);
334
+ if (onPressMove != null) {
335
+ onPressMove(event);
336
+ }
337
+ },
323
338
  onPressOut(event: GestureResponderEvent): void {
324
339
  if (android_rippleConfig != null) {
325
340
  android_rippleConfig.onPressOut(event);
@@ -350,6 +365,7 @@ function Pressable(
350
365
  onLongPress,
351
366
  onPress,
352
367
  onPressIn,
368
+ onPressMove,
353
369
  onPressOut,
354
370
  // [Windows
355
371
  onBlur,