@office-iss/react-native-win32 0.73.2 → 0.74.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 (479) hide show
  1. package/.eslintignore +1 -1
  2. package/.flowconfig +11 -3
  3. package/CHANGELOG.json +411 -54
  4. package/CHANGELOG.md +157 -30
  5. package/IntegrationTests/AccessibilityManagerTest.js +2 -2
  6. package/IntegrationTests/AppEventsTest.js +2 -2
  7. package/IntegrationTests/LayoutEventsTest.js +8 -10
  8. package/IntegrationTests/LoggingTestModule.js +1 -2
  9. package/IntegrationTests/websocket_integration_test_server.js +1 -1
  10. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +6 -0
  11. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +6 -0
  12. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +4 -45
  13. package/Libraries/Alert/NativeAlertManager.js +4 -26
  14. package/Libraries/Animated/Animated.js +2 -2
  15. package/Libraries/Animated/AnimatedPlatformConfig.js +1 -1
  16. package/Libraries/Animated/NativeAnimatedHelper.js +14 -11
  17. package/Libraries/Animated/NativeAnimatedHelper.win32.js +14 -11
  18. package/Libraries/Animated/NativeAnimatedModule.js +4 -68
  19. package/Libraries/Animated/NativeAnimatedTurboModule.js +4 -69
  20. package/Libraries/Animated/animations/Animation.js +6 -22
  21. package/Libraries/Animated/components/AnimatedFlatList.js +1 -16
  22. package/Libraries/Animated/components/AnimatedScrollView.js +36 -31
  23. package/Libraries/Animated/components/AnimatedSectionList.js +1 -20
  24. package/Libraries/Animated/createAnimatedComponent.js +45 -40
  25. package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
  26. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +1 -1
  27. package/Libraries/Animated/useAnimatedProps.js +21 -1
  28. package/Libraries/AppState/NativeAppState.js +4 -24
  29. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  30. package/Libraries/Blob/Blob.js +1 -4
  31. package/Libraries/Blob/BlobManager.js +6 -8
  32. package/Libraries/Blob/File.js +1 -1
  33. package/Libraries/Blob/NativeBlobModule.js +4 -50
  34. package/Libraries/Blob/NativeFileReaderModule.js +4 -13
  35. package/Libraries/BugReporting/NativeBugReporting.js +4 -12
  36. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +5 -1
  37. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +48 -7
  38. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
  39. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +11 -0
  40. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
  41. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
  42. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +3 -2
  43. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
  44. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
  45. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +36 -36
  46. package/Libraries/Components/Button/ButtonWin32.Props.js +2 -2
  47. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
  48. package/Libraries/Components/Button/ButtonWin32.d.ts +19 -19
  49. package/Libraries/Components/Button/ButtonWin32.js +82 -82
  50. package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
  51. package/Libraries/Components/Button.js +103 -107
  52. package/Libraries/Components/Button.win32.js +297 -301
  53. package/Libraries/Components/Clipboard/NativeClipboard.js +3 -11
  54. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +3 -114
  55. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -5
  56. package/Libraries/Components/EnterString.win32.d.ts +12 -12
  57. package/Libraries/Components/EnterString.win32.js +81 -81
  58. package/Libraries/Components/EnterString.win32.js.map +1 -1
  59. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +3 -10
  60. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.android.js +69 -0
  61. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +24 -0
  62. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +33 -0
  63. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +13 -0
  64. package/Libraries/Components/Pressable/Pressable.js +1 -1
  65. package/Libraries/Components/Pressable/Pressable.win32.js +1 -1
  66. package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
  67. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
  68. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
  69. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
  70. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  71. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
  72. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
  73. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  74. package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
  75. package/Libraries/Components/ScrollView/ScrollView.js +12 -38
  76. package/Libraries/Components/ScrollView/ScrollView.win32.js +12 -38
  77. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
  78. package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
  79. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
  80. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
  81. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
  82. package/Libraries/Components/Switch/Switch.js +0 -2
  83. package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
  84. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
  85. package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
  86. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
  87. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
  88. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +8 -8
  89. package/Libraries/Components/TextInput/Tests/TextInputTest.js +127 -127
  90. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  91. package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
  92. package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
  93. package/Libraries/Components/TextInput/TextInput.js +65 -32
  94. package/Libraries/Components/TextInput/TextInput.win32.js +70 -37
  95. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
  96. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  97. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +8 -8
  98. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +343 -344
  99. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  100. package/Libraries/Components/Touchable/Touchable.js +2 -3
  101. package/Libraries/Components/Touchable/Touchable.win32.js +2 -3
  102. package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
  103. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  104. package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
  105. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -37
  106. package/Libraries/Components/Touchable/TouchableWin32.Props.js +2 -2
  107. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  108. package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
  109. package/Libraries/Components/Touchable/TouchableWin32.Types.js +2 -2
  110. package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -1
  111. package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
  112. package/Libraries/Components/Touchable/TouchableWin32.js +506 -506
  113. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  114. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
  115. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
  116. package/Libraries/Components/View/View.js +0 -11
  117. package/Libraries/Components/View/View.win32.js +18 -17
  118. package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  119. package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  120. package/Libraries/Components/View/ViewPropTypes.js +36 -36
  121. package/Libraries/Components/View/ViewPropTypes.win32.js +36 -36
  122. package/Libraries/Core/InitializeCore.js +1 -1
  123. package/Libraries/Core/NativeExceptionsManager.js +3 -93
  124. package/Libraries/Core/ReactNativeVersion.js +12 -6
  125. package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
  126. package/Libraries/Core/ReactNativeVersionCheck.win32.js +6 -6
  127. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
  128. package/Libraries/Core/Timers/NativeTiming.js +3 -16
  129. package/Libraries/Core/registerCallableModule.js +42 -0
  130. package/Libraries/Core/setUpPerformance.js +2 -2
  131. package/Libraries/Core/setUpPerformanceObserver.js +3 -1
  132. package/Libraries/Debugging/DebuggingOverlay.js +111 -0
  133. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  134. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  135. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  136. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
  137. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
  138. package/Libraries/Image/AssetSourceResolver.js +5 -5
  139. package/Libraries/Image/AssetUtils.js +4 -5
  140. package/Libraries/Image/Image.android.js +146 -174
  141. package/Libraries/Image/Image.d.ts +1 -1
  142. package/Libraries/Image/Image.ios.js +53 -79
  143. package/Libraries/Image/Image.win32.js +52 -74
  144. package/Libraries/Image/ImageBackground.js +2 -2
  145. package/Libraries/Image/ImageInjection.js +76 -18
  146. package/Libraries/Image/ImageTypes.d.ts +25 -25
  147. package/Libraries/Image/ImageTypes.flow.js +71 -0
  148. package/Libraries/Image/ImageTypes.js +7 -7
  149. package/Libraries/Image/ImageTypes.js.map +1 -1
  150. package/Libraries/Image/ImageUtils.js +1 -1
  151. package/Libraries/Image/ImageViewNativeComponent.js +18 -0
  152. package/Libraries/Image/NativeImageEditor.js +3 -42
  153. package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
  154. package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
  155. package/Libraries/Image/NativeImageLoaderWin32.js +4 -36
  156. package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
  157. package/Libraries/Image/NativeImageStoreIOS.js +3 -23
  158. package/Libraries/Image/Tests/ImageWin32Test.d.ts +8 -8
  159. package/Libraries/Image/Tests/ImageWin32Test.js +21 -21
  160. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  161. package/Libraries/Image/resolveAssetSource.js +59 -26
  162. package/Libraries/Inspector/ElementProperties.js +26 -52
  163. package/Libraries/Inspector/Inspector.js +122 -186
  164. package/Libraries/Inspector/Inspector.win32.js +118 -185
  165. package/Libraries/Inspector/InspectorOverlay.js +21 -33
  166. package/Libraries/Inspector/InspectorOverlay.win32.js +22 -33
  167. package/Libraries/Inspector/InspectorPanel.js +3 -17
  168. package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
  169. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
  170. package/Libraries/Interaction/FrameRateLogger.js +8 -18
  171. package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
  172. package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
  173. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
  174. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
  175. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
  176. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
  177. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
  178. package/Libraries/Linking/NativeIntentAndroid.js +3 -20
  179. package/Libraries/Linking/NativeLinkingManager.js +3 -17
  180. package/Libraries/Lists/FillRateHelper.js +1 -1
  181. package/Libraries/Lists/FlatList.d.ts +2 -2
  182. package/Libraries/Lists/FlatList.js +6 -1
  183. package/Libraries/Lists/SectionList.d.ts +6 -1
  184. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  185. package/Libraries/Lists/VirtualizeUtils.js +1 -1
  186. package/Libraries/Lists/VirtualizedList.js +1 -1
  187. package/Libraries/Lists/VirtualizedListContext.js +1 -1
  188. package/Libraries/Lists/VirtualizedSectionList.js +1 -1
  189. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  190. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  191. package/Libraries/Modal/Modal.js +43 -11
  192. package/Libraries/Modal/NativeModalManager.js +3 -11
  193. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
  194. package/Libraries/MutationObserver/MutationObserver.js +1 -1
  195. package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
  196. package/Libraries/MutationObserver/MutationRecord.js +12 -10
  197. package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
  198. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
  199. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  200. package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
  201. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
  202. package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
  203. package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
  204. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
  205. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
  206. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
  207. package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
  208. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
  209. package/Libraries/Network/FormData.js +3 -1
  210. package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
  211. package/Libraries/Network/NativeNetworkingIOS.js +4 -28
  212. package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
  213. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
  214. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  215. package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
  216. package/Libraries/PersonaCoin/PersonaCoin.js +14 -14
  217. package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -1
  218. package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
  219. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +19 -19
  220. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -1
  221. package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
  222. package/Libraries/PersonaCoin/PersonaCoinTypes.js +23 -23
  223. package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -1
  224. package/Libraries/Pressability/Pressability.js +12 -2
  225. package/Libraries/Pressability/Pressability.win32.js +12 -2
  226. package/Libraries/Pressability/usePressability.js +7 -0
  227. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
  228. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
  229. package/Libraries/ReactNative/AppContainer-dev.js +192 -0
  230. package/Libraries/ReactNative/AppContainer-prod.js +53 -0
  231. package/Libraries/ReactNative/AppContainer.js +6 -149
  232. package/Libraries/ReactNative/AppRegistry.js +3 -1
  233. package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
  234. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  235. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
  236. package/Libraries/ReactNative/NativeI18nManager.js +3 -18
  237. package/Libraries/ReactNative/NativeUIManager.js +4 -112
  238. package/Libraries/ReactNative/PaperUIManager.js +8 -7
  239. package/Libraries/ReactNative/PaperUIManager.win32.js +26 -7
  240. package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
  241. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
  242. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
  243. package/Libraries/ReactNative/RendererImplementation.js +11 -0
  244. package/Libraries/ReactNative/UIManager.d.ts +11 -34
  245. package/Libraries/ReactNative/UIManager.js +2 -23
  246. package/Libraries/ReactNative/UIManagerProperties.js +0 -2
  247. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
  248. package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
  249. package/Libraries/ReactNative/renderApplication.js +9 -6
  250. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
  251. package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
  252. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
  253. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
  254. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
  255. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
  256. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
  257. package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
  258. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
  259. package/Libraries/Settings/NativeSettingsManager.js +4 -16
  260. package/Libraries/Share/NativeShareModule.js +3 -13
  261. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +1 -1
  262. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  263. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +1 -1
  264. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
  265. package/Libraries/StyleSheet/StyleSheet.js +5 -28
  266. package/Libraries/StyleSheet/StyleSheet.win32.js +5 -28
  267. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +47 -7
  268. package/Libraries/StyleSheet/StyleSheetTypes.js +16 -11
  269. package/Libraries/StyleSheet/flattenStyle.js +2 -2
  270. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  271. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  272. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  273. package/Libraries/Text/Text.d.ts +5 -6
  274. package/Libraries/Text/Text.js +0 -6
  275. package/Libraries/Text/Text.win32.js +0 -6
  276. package/Libraries/Text/TextAncestor.js +2 -3
  277. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
  278. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  279. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  280. package/Libraries/Utilities/DebugEnvironment.js +1 -4
  281. package/Libraries/Utilities/Dimensions.js +8 -16
  282. package/Libraries/Utilities/Dimensions.win32.js +8 -16
  283. package/Libraries/Utilities/FocusManager.win32.js +2 -0
  284. package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
  285. package/Libraries/Utilities/NativeAppearance.js +3 -26
  286. package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
  287. package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
  288. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
  289. package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
  290. package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
  291. package/Libraries/Utilities/PixelRatio.d.ts +4 -4
  292. package/Libraries/Utilities/Platform.android.js +4 -0
  293. package/Libraries/Utilities/Platform.d.ts +3 -0
  294. package/Libraries/Utilities/Platform.flow.js +7 -0
  295. package/Libraries/Utilities/Platform.flow.win32.js +18 -5
  296. package/Libraries/Utilities/Platform.ios.js +11 -0
  297. package/Libraries/Utilities/Platform.win32.js +9 -1
  298. package/Libraries/Utilities/binaryToBase64.js +1 -1
  299. package/Libraries/Utilities/codegenNativeComponent.js +4 -6
  300. package/Libraries/Utilities/createPerformanceLogger.js +2 -74
  301. package/Libraries/Utilities/useMergeRefs.js +5 -9
  302. package/Libraries/Vibration/NativeVibration.js +3 -14
  303. package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
  304. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  305. package/Libraries/platform-types.d.ts +2 -3
  306. package/Libraries/vendor/emitter/EventEmitter.js +1 -0
  307. package/babel.config.js +1 -1
  308. package/flow/jest.js +1 -1
  309. package/flow/react.js +15 -0
  310. package/index.js +66 -99
  311. package/index.win32.js +60 -101
  312. package/jest/assetFileTransformer.js +1 -1
  313. package/jest/local-setup.js +0 -5
  314. package/jest/mockModal.js +2 -1
  315. package/jest/mockScrollView.js +1 -2
  316. package/jest/renderer.js +1 -1
  317. package/jest/setup.js +6 -3
  318. package/jest.config.js +2 -1
  319. package/overrides.json +152 -131
  320. package/package.json +26 -26
  321. package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
  322. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
  323. package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
  324. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
  325. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
  326. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  327. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  328. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
  329. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  330. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  331. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  332. package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +47 -0
  333. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  334. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  335. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  336. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
  337. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  338. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  339. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  340. package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
  341. package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +39 -0
  342. package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
  343. package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
  344. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  345. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  346. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  347. package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
  348. package/src/private/specs/modules/NativeAppState.js +33 -0
  349. package/src/private/specs/modules/NativeAppearance.js +36 -0
  350. package/src/private/specs/modules/NativeBlobModule.js +59 -0
  351. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  352. package/src/private/specs/modules/NativeClipboard.js +21 -0
  353. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  354. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  355. package/src/private/specs/modules/NativeDevSettings.js +33 -0
  356. package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
  357. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  358. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  359. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  360. package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
  361. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  362. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  363. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  364. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  365. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  366. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  367. package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
  368. package/src/private/specs/modules/NativeImageLoaderWin32.js +45 -0
  369. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  370. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  371. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  372. package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
  373. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  374. package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
  375. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  376. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  377. package/src/private/specs/modules/NativeLogBox.js +20 -0
  378. package/src/private/specs/modules/NativeModalManager.js +21 -0
  379. package/src/private/specs/modules/NativeMutationObserver.js +58 -0
  380. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  381. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  382. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  383. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  384. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  385. package/src/private/specs/modules/NativePlatformConstantsWin.js +37 -0
  386. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
  387. package/src/private/specs/modules/NativeRedBox.js +20 -0
  388. package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
  389. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  390. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  391. package/src/private/specs/modules/NativeShareModule.js +23 -0
  392. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  393. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  394. package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
  395. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  396. package/src/private/specs/modules/NativeTiming.js +26 -0
  397. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  398. package/src/private/specs/modules/NativeUIManager.js +118 -0
  399. package/src/private/specs/modules/NativeVibration.js +24 -0
  400. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  401. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
  402. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
  403. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
  404. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
  405. package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
  406. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
  407. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
  408. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
  409. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
  410. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
  411. package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
  412. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
  413. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
  414. package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
  415. package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
  416. package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
  417. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
  418. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
  419. package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
  420. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
  421. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +161 -0
  422. package/{src → src-win}/Libraries/Components/Button/ButtonWin32.tsx +3 -3
  423. package/{src → src-win}/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +9 -10
  424. package/{src → src-win}/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  425. package/{src → src-win}/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  426. package/{src → src-win}/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  427. package/{src → src-win}/Libraries/Text/Text.d.ts +5 -6
  428. package/{src → src-win}/Libraries/platform-types.d.ts +2 -3
  429. package/types/modules/globals.d.ts +1 -0
  430. package/Libraries/Components/Button.flow.js +0 -265
  431. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
  432. package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -63
  433. package/Libraries/Components/Text/TextWin32.Props.js +0 -3
  434. package/Libraries/Components/Text/TextWin32.Props.js.map +0 -1
  435. package/Libraries/Components/Text/TextWin32.d.ts +0 -6
  436. package/Libraries/Components/Text/TextWin32.js +0 -18
  437. package/Libraries/Components/Text/TextWin32.js.map +0 -1
  438. package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
  439. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
  440. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
  441. package/Libraries/Image/Image.flow.js +0 -64
  442. package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
  443. package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
  444. package/src/Libraries/Components/Text/TextWin32.Props.ts +0 -82
  445. package/src/Libraries/Components/Text/TextWin32.tsx +0 -25
  446. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
  447. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
  448. /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
  449. /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
  450. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
  451. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
  452. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
  453. /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
  454. /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
  455. /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
  456. /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
  457. /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
  458. /package/{src → src-win}/Libraries/Components/Button/ButtonWin32.Props.ts +0 -0
  459. /package/{src → src-win}/Libraries/Components/EnterString.win32.tsx +0 -0
  460. /package/{src → src-win}/Libraries/Components/TextInput/Tests/TextInputTest.tsx +0 -0
  461. /package/{src → src-win}/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +0 -0
  462. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Props.tsx +0 -0
  463. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Types.tsx +0 -0
  464. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.tsx +0 -0
  465. /package/{src → src-win}/Libraries/Components/View/ViewWin32.d.ts +0 -0
  466. /package/{src → src-win}/Libraries/Image/ImageTypes.ts +0 -0
  467. /package/{src → src-win}/Libraries/Image/Tests/ImageWin32Test.tsx +0 -0
  468. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest.png +0 -0
  469. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
  470. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
  471. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
  472. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
  473. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
  474. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
  475. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoin.tsx +0 -0
  476. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +0 -0
  477. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinTypes.ts +0 -0
  478. /package/{src → src-win}/Libraries/Utilities/FocusManager.win32.d.ts +0 -0
  479. /package/{src → src-win}/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +0 -0
@@ -6,14 +6,12 @@
6
6
  *
7
7
  * @format
8
8
  * @flow
9
- * @generate-docs
10
9
  */
11
10
 
12
11
  'use strict';
13
12
 
14
13
  import type {TextStyleProp, ViewStyleProp} from '../StyleSheet/StyleSheet';
15
14
  import type {PressEvent} from '../Types/CoreEventTypes';
16
- import type {Button as ButtonType} from './Button.flow';
17
15
  import type {
18
16
  AccessibilityActionEvent,
19
17
  AccessibilityActionInfo,
@@ -23,7 +21,7 @@ import type {
23
21
  import StyleSheet, {type ColorValue} from '../StyleSheet/StyleSheet';
24
22
  import Text from '../Text/Text';
25
23
  import Platform from '../Utilities/Platform';
26
- import {PlatformColor} from '../StyleSheet/PlatformColorValueTypes';
24
+ import {PlatformColor} from '../StyleSheet/PlatformColorValueTypes'; // Win32
27
25
  import TouchableNativeFeedback from './Touchable/TouchableNativeFeedback';
28
26
  import TouchableOpacity from './Touchable/TouchableOpacity';
29
27
  import View from './View/View';
@@ -32,101 +30,101 @@ import * as React from 'react';
32
30
 
33
31
  type ButtonProps = $ReadOnly<{|
34
32
  /**
35
- Text to display inside the button. On Android the given title will be
36
- converted to the uppercased form.
37
- */
33
+ Text to display inside the button. On Android the given title will be
34
+ converted to the uppercased form.
35
+ */
38
36
  title: string,
39
37
 
40
38
  /**
41
- Handler to be called when the user taps the button. The first function
42
- argument is an event in form of [PressEvent](pressevent).
43
- */
39
+ Handler to be called when the user taps the button. The first function
40
+ argument is an event in form of [PressEvent](pressevent).
41
+ */
44
42
  onPress: (event?: PressEvent) => mixed,
45
43
 
46
44
  /**
47
- If `true`, doesn't play system sound on touch.
48
-
49
- @platform android
50
-
51
- @default false
52
- */
45
+ If `true`, doesn't play system sound on touch.
46
+
47
+ @platform android
48
+
49
+ @default false
50
+ */
53
51
  touchSoundDisabled?: ?boolean,
54
52
 
55
53
  /**
56
- Color of the text (iOS), or background color of the button (Android).
57
-
58
- @default {@platform android} '#2196F3'
59
- @default {@platform ios} '#007AFF'
60
- */
54
+ Color of the text (iOS), or background color of the button (Android).
55
+
56
+ @default {@platform android} '#2196F3'
57
+ @default {@platform ios} '#007AFF'
58
+ */
61
59
  color?: ?ColorValue,
62
60
 
63
61
  /**
64
- TV preferred focus.
65
-
66
- @platform tv
67
-
68
- @default false
69
- */
62
+ TV preferred focus.
63
+
64
+ @platform tv
65
+
66
+ @default false
67
+ */
70
68
  hasTVPreferredFocus?: ?boolean,
71
69
 
72
70
  /**
73
- Designates the next view to receive focus when the user navigates down. See
74
- the [Android documentation][android:nextFocusDown].
75
-
76
- [android:nextFocusDown]:
77
- https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusDown
78
-
79
- @platform android, tv
80
- */
71
+ Designates the next view to receive focus when the user navigates down. See
72
+ the [Android documentation][android:nextFocusDown].
73
+
74
+ [android:nextFocusDown]:
75
+ https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusDown
76
+
77
+ @platform android, tv
78
+ */
81
79
  nextFocusDown?: ?number,
82
80
 
83
81
  /**
84
- Designates the next view to receive focus when the user navigates forward.
85
- See the [Android documentation][android:nextFocusForward].
86
-
87
- [android:nextFocusForward]:
88
- https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusForward
89
-
90
- @platform android, tv
91
- */
82
+ Designates the next view to receive focus when the user navigates forward.
83
+ See the [Android documentation][android:nextFocusForward].
84
+
85
+ [android:nextFocusForward]:
86
+ https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusForward
87
+
88
+ @platform android, tv
89
+ */
92
90
  nextFocusForward?: ?number,
93
91
 
94
92
  /**
95
- Designates the next view to receive focus when the user navigates left. See
96
- the [Android documentation][android:nextFocusLeft].
97
-
98
- [android:nextFocusLeft]:
99
- https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusLeft
100
-
101
- @platform android, tv
102
- */
93
+ Designates the next view to receive focus when the user navigates left. See
94
+ the [Android documentation][android:nextFocusLeft].
95
+
96
+ [android:nextFocusLeft]:
97
+ https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusLeft
98
+
99
+ @platform android, tv
100
+ */
103
101
  nextFocusLeft?: ?number,
104
102
 
105
103
  /**
106
- Designates the next view to receive focus when the user navigates right. See
107
- the [Android documentation][android:nextFocusRight].
108
-
109
- [android:nextFocusRight]:
110
- https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusRight
111
-
112
- @platform android, tv
113
- */
104
+ Designates the next view to receive focus when the user navigates right. See
105
+ the [Android documentation][android:nextFocusRight].
106
+
107
+ [android:nextFocusRight]:
108
+ https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusRight
109
+
110
+ @platform android, tv
111
+ */
114
112
  nextFocusRight?: ?number,
115
113
 
116
114
  /**
117
- Designates the next view to receive focus when the user navigates up. See
118
- the [Android documentation][android:nextFocusUp].
119
-
120
- [android:nextFocusUp]:
121
- https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusUp
122
-
123
- @platform android, tv
124
- */
115
+ Designates the next view to receive focus when the user navigates up. See
116
+ the [Android documentation][android:nextFocusUp].
117
+
118
+ [android:nextFocusUp]:
119
+ https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusUp
120
+
121
+ @platform android, tv
122
+ */
125
123
  nextFocusUp?: ?number,
126
124
 
127
125
  /**
128
- Text to display for blindness accessibility features.
129
- */
126
+ Text to display for blindness accessibility features.
127
+ */
130
128
  accessibilityLabel?: ?string,
131
129
  /**
132
130
  * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel
@@ -134,15 +132,15 @@ type ButtonProps = $ReadOnly<{|
134
132
  */
135
133
  'aria-label'?: ?string,
136
134
  /**
137
- If `true`, disable all interactions for this component.
138
-
139
- @default false
140
- */
135
+ If `true`, disable all interactions for this component.
136
+
137
+ @default false
138
+ */
141
139
  disabled?: ?boolean,
142
140
 
143
141
  /**
144
- Used to locate this view in end-to-end tests.
145
- */
142
+ Used to locate this view in end-to-end tests.
143
+ */
146
144
  testID?: ?string,
147
145
 
148
146
  /**
@@ -175,231 +173,232 @@ type ButtonProps = $ReadOnly<{|
175
173
  |}>;
176
174
 
177
175
  /**
178
- A basic button component that should render nicely on any platform. Supports a
179
- minimal level of customization.
180
-
181
- If this button doesn't look right for your app, you can build your own button
182
- using [TouchableOpacity](touchableopacity) or
183
- [TouchableWithoutFeedback](touchablewithoutfeedback). For inspiration, look at
184
- the [source code for this button component][button:source]. Or, take a look at
185
- the [wide variety of button components built by the community]
186
- [button:examples].
187
-
188
- [button:source]:
189
- https://github.com/facebook/react-native/blob/HEAD/Libraries/Components/Button.js
190
-
191
- [button:examples]:
192
- https://js.coach/?menu%5Bcollections%5D=React%20Native&page=1&query=button
193
-
194
- ```jsx
195
- <Button
196
- onPress={onPressLearnMore}
197
- title="Learn More"
198
- color="#841584"
199
- accessibilityLabel="Learn more about this purple button"
200
- />
201
- ```
202
-
203
- ```SnackPlayer name=Button%20Example
204
- import React from 'react';
205
- import { StyleSheet, Button, View, SafeAreaView, Text, Alert } from 'react-native';
206
-
207
- const Separator = () => (
208
- <View style={styles.separator} />
209
- );
210
-
211
- const App = () => (
212
- <SafeAreaView style={styles.container}>
213
- <View>
214
- <Text style={styles.title}>
215
- The title and onPress handler are required. It is recommended to set accessibilityLabel to help make your app usable by everyone.
216
- </Text>
217
- <Button
218
- title="Press me"
219
- onPress={() => Alert.alert('Simple Button pressed')}
220
- />
221
- </View>
222
- <Separator />
223
- <View>
224
- <Text style={styles.title}>
225
- Adjust the color in a way that looks standard on each platform. On iOS, the color prop controls the color of the text. On Android, the color adjusts the background color of the button.
226
- </Text>
227
- <Button
228
- title="Press me"
229
- color="#f194ff"
230
- onPress={() => Alert.alert('Button with adjusted color pressed')}
231
- />
232
- </View>
233
- <Separator />
234
- <View>
235
- <Text style={styles.title}>
236
- All interaction for the component are disabled.
237
- </Text>
238
- <Button
239
- title="Press me"
240
- disabled
241
- onPress={() => Alert.alert('Cannot press this one')}
242
- />
243
- </View>
244
- <Separator />
245
- <View>
246
- <Text style={styles.title}>
247
- This layout strategy lets the title define the width of the button.
248
- </Text>
249
- <View style={styles.fixToText}>
250
- <Button
251
- title="Left button"
252
- onPress={() => Alert.alert('Left button pressed')}
253
- />
254
- <Button
255
- title="Right button"
256
- onPress={() => Alert.alert('Right button pressed')}
257
- />
258
- </View>
259
- </View>
260
- </SafeAreaView>
261
- );
262
-
263
- const styles = StyleSheet.create({
264
- container: {
265
- flex: 1,
266
- justifyContent: 'center',
267
- marginHorizontal: 16,
268
- },
269
- title: {
270
- textAlign: 'center',
271
- marginVertical: 8,
272
- },
273
- fixToText: {
274
- flexDirection: 'row',
275
- justifyContent: 'space-between',
276
- },
277
- separator: {
278
- marginVertical: 8,
279
- borderBottomColor: '#737373',
280
- borderBottomWidth: StyleSheet.hairlineWidth,
281
- },
282
- });
283
-
284
- export default App;
285
- ```
286
- */
287
-
288
- class Button extends React.Component<ButtonProps> {
289
- render(): React.Node {
290
- const {
291
- accessibilityLabel,
292
- accessibilityState,
293
- 'aria-busy': ariaBusy,
294
- 'aria-checked': ariaChecked,
295
- 'aria-disabled': ariaDisabled,
296
- 'aria-expanded': ariaExpanded,
297
- 'aria-label': ariaLabel,
298
- 'aria-multiselectable': ariaMultiselectable, // Win32
299
- 'aria-required': ariaRequired, // Win32
300
- 'aria-selected': ariaSelected,
301
- importantForAccessibility,
302
- color,
303
- onPress,
304
- touchSoundDisabled,
305
- title,
306
- hasTVPreferredFocus,
307
- nextFocusDown,
308
- nextFocusForward,
309
- nextFocusLeft,
310
- nextFocusRight,
311
- nextFocusUp,
312
- testID,
313
- accessible,
314
- accessibilityActions,
315
- accessibilityHint,
316
- accessibilityLanguage,
317
- onAccessibilityAction,
318
- } = this.props;
319
- const buttonStyles: Array<ViewStyleProp> = [styles.button];
320
- const textStyles: Array<TextStyleProp> = [styles.text];
321
- if (color) {
322
- if (Platform.OS === 'ios') {
323
- textStyles.push({color: color});
324
- } else {
325
- buttonStyles.push({backgroundColor: color});
326
- }
327
- }
176
+ A basic button component that should render nicely on any platform. Supports a
177
+ minimal level of customization.
328
178
 
329
- let _accessibilityState = {
330
- busy: ariaBusy ?? accessibilityState?.busy,
331
- checked: ariaChecked ?? accessibilityState?.checked,
332
- disabled: ariaDisabled ?? accessibilityState?.disabled,
333
- expanded: ariaExpanded ?? accessibilityState?.expanded,
334
- multiselectable:
335
- ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
336
- required: ariaRequired ?? accessibilityState?.required, // Win32
337
- selected: ariaSelected ?? accessibilityState?.selected,
338
- };
339
-
340
- const disabled =
341
- this.props.disabled != null
342
- ? this.props.disabled
343
- : _accessibilityState?.disabled;
344
-
345
- _accessibilityState =
346
- disabled !== _accessibilityState?.disabled
347
- ? {..._accessibilityState, disabled}
348
- : _accessibilityState;
349
-
350
- if (disabled) {
351
- buttonStyles.push(styles.buttonDisabled);
352
- textStyles.push(styles.textDisabled);
353
- }
179
+ If this button doesn't look right for your app, you can build your own button
180
+ using [TouchableOpacity](touchableopacity) or
181
+ [TouchableWithoutFeedback](touchablewithoutfeedback). For inspiration, look at
182
+ the [source code for this button component][button:source]. Or, take a look at
183
+ the [wide variety of button components built by the community]
184
+ [button:examples].
185
+
186
+ [button:source]:
187
+ https://github.com/facebook/react-native/blob/HEAD/Libraries/Components/Button.js
188
+
189
+ [button:examples]:
190
+ https://js.coach/?menu%5Bcollections%5D=React%20Native&page=1&query=button
191
+
192
+ ```jsx
193
+ <Button
194
+ onPress={onPressLearnMore}
195
+ title="Learn More"
196
+ color="#841584"
197
+ accessibilityLabel="Learn more about this purple button"
198
+ />
199
+ ```
200
+
201
+ ```SnackPlayer name=Button%20Example
202
+ import React from 'react';
203
+ import { StyleSheet, Button, View, SafeAreaView, Text, Alert } from 'react-native';
354
204
 
355
- invariant(
356
- typeof title === 'string',
357
- 'The title prop of a Button must be a string',
358
- );
359
- const formattedTitle =
360
- Platform.OS === 'android' ? title.toUpperCase() : title;
361
- const Touchable =
362
- Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;
363
-
364
- // If `no` is specified for `importantForAccessibility`, it will be changed to `no-hide-descendants` because the text inside should not be focused.
365
- const _importantForAccessibility =
366
- importantForAccessibility === 'no'
367
- ? 'no-hide-descendants'
368
- : importantForAccessibility;
369
-
370
- return (
371
- <Touchable
372
- accessible={accessible}
373
- accessibilityActions={accessibilityActions}
374
- onAccessibilityAction={onAccessibilityAction}
375
- accessibilityLabel={ariaLabel || accessibilityLabel}
376
- accessibilityHint={accessibilityHint}
377
- accessibilityLanguage={accessibilityLanguage}
378
- accessibilityRole="button"
379
- accessibilityState={_accessibilityState}
380
- importantForAccessibility={_importantForAccessibility}
381
- hasTVPreferredFocus={hasTVPreferredFocus}
382
- nextFocusDown={nextFocusDown}
383
- nextFocusForward={nextFocusForward}
384
- nextFocusLeft={nextFocusLeft}
385
- nextFocusRight={nextFocusRight}
386
- nextFocusUp={nextFocusUp}
387
- testID={testID}
388
- disabled={disabled}
389
- onPress={onPress}
390
- touchSoundDisabled={touchSoundDisabled}>
391
- <View style={buttonStyles}>
392
- <Text style={textStyles} disabled={disabled}>
393
- {formattedTitle}
394
- </Text>
205
+ const Separator = () => (
206
+ <View style={styles.separator} />
207
+ );
208
+
209
+ const App = () => (
210
+ <SafeAreaView style={styles.container}>
211
+ <View>
212
+ <Text style={styles.title}>
213
+ The title and onPress handler are required. It is recommended to set accessibilityLabel to help make your app usable by everyone.
214
+ </Text>
215
+ <Button
216
+ title="Press me"
217
+ onPress={() => Alert.alert('Simple Button pressed')}
218
+ />
219
+ </View>
220
+ <Separator />
221
+ <View>
222
+ <Text style={styles.title}>
223
+ Adjust the color in a way that looks standard on each platform. On iOS, the color prop controls the color of the text. On Android, the color adjusts the background color of the button.
224
+ </Text>
225
+ <Button
226
+ title="Press me"
227
+ color="#f194ff"
228
+ onPress={() => Alert.alert('Button with adjusted color pressed')}
229
+ />
230
+ </View>
231
+ <Separator />
232
+ <View>
233
+ <Text style={styles.title}>
234
+ All interaction for the component are disabled.
235
+ </Text>
236
+ <Button
237
+ title="Press me"
238
+ disabled
239
+ onPress={() => Alert.alert('Cannot press this one')}
240
+ />
241
+ </View>
242
+ <Separator />
243
+ <View>
244
+ <Text style={styles.title}>
245
+ This layout strategy lets the title define the width of the button.
246
+ </Text>
247
+ <View style={styles.fixToText}>
248
+ <Button
249
+ title="Left button"
250
+ onPress={() => Alert.alert('Left button pressed')}
251
+ />
252
+ <Button
253
+ title="Right button"
254
+ onPress={() => Alert.alert('Right button pressed')}
255
+ />
395
256
  </View>
396
- </Touchable>
397
- );
257
+ </View>
258
+ </SafeAreaView>
259
+ );
260
+
261
+ const styles = StyleSheet.create({
262
+ container: {
263
+ flex: 1,
264
+ justifyContent: 'center',
265
+ marginHorizontal: 16,
266
+ },
267
+ title: {
268
+ textAlign: 'center',
269
+ marginVertical: 8,
270
+ },
271
+ fixToText: {
272
+ flexDirection: 'row',
273
+ justifyContent: 'space-between',
274
+ },
275
+ separator: {
276
+ marginVertical: 8,
277
+ borderBottomColor: '#737373',
278
+ borderBottomWidth: StyleSheet.hairlineWidth,
279
+ },
280
+ });
281
+
282
+ export default App;
283
+ ```
284
+ */
285
+
286
+ const Button: React.AbstractComponent<
287
+ ButtonProps,
288
+ React.ElementRef<typeof TouchableNativeFeedback | typeof TouchableOpacity>,
289
+ > = React.forwardRef((props: ButtonProps, ref) => {
290
+ // Win32
291
+ const {
292
+ accessibilityLabel,
293
+ accessibilityState,
294
+ 'aria-busy': ariaBusy,
295
+ 'aria-checked': ariaChecked,
296
+ 'aria-disabled': ariaDisabled,
297
+ 'aria-expanded': ariaExpanded,
298
+ 'aria-label': ariaLabel,
299
+ 'aria-multiselectable': ariaMultiselectable, // Win32
300
+ 'aria-required': ariaRequired, // Win32
301
+ 'aria-selected': ariaSelected,
302
+ importantForAccessibility,
303
+ color,
304
+ onPress,
305
+ touchSoundDisabled,
306
+ title,
307
+ hasTVPreferredFocus,
308
+ nextFocusDown,
309
+ nextFocusForward,
310
+ nextFocusLeft,
311
+ nextFocusRight,
312
+ nextFocusUp,
313
+ testID,
314
+ accessible,
315
+ accessibilityActions,
316
+ accessibilityHint,
317
+ accessibilityLanguage,
318
+ onAccessibilityAction,
319
+ } = props;
320
+ const buttonStyles: Array<ViewStyleProp> = [styles.button];
321
+ const textStyles: Array<TextStyleProp> = [styles.text];
322
+ if (color) {
323
+ if (Platform.OS === 'ios') {
324
+ textStyles.push({color: color});
325
+ } else {
326
+ buttonStyles.push({backgroundColor: color});
327
+ }
398
328
  }
399
- }
329
+
330
+ let _accessibilityState = {
331
+ busy: ariaBusy ?? accessibilityState?.busy,
332
+ checked: ariaChecked ?? accessibilityState?.checked,
333
+ disabled: ariaDisabled ?? accessibilityState?.disabled,
334
+ expanded: ariaExpanded ?? accessibilityState?.expanded,
335
+ multiselectable: ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
336
+ required: ariaRequired ?? accessibilityState?.required, // Win32
337
+ selected: ariaSelected ?? accessibilityState?.selected,
338
+ };
339
+
340
+ const disabled =
341
+ props.disabled != null ? props.disabled : _accessibilityState?.disabled;
342
+
343
+ _accessibilityState =
344
+ disabled !== _accessibilityState?.disabled
345
+ ? {..._accessibilityState, disabled}
346
+ : _accessibilityState;
347
+
348
+ if (disabled) {
349
+ buttonStyles.push(styles.buttonDisabled);
350
+ textStyles.push(styles.textDisabled);
351
+ }
352
+
353
+ invariant(
354
+ typeof title === 'string',
355
+ 'The title prop of a Button must be a string',
356
+ );
357
+ const formattedTitle =
358
+ Platform.OS === 'android' ? title.toUpperCase() : title;
359
+ const Touchable =
360
+ Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;
361
+
362
+ // If `no` is specified for `importantForAccessibility`, it will be changed to `no-hide-descendants` because the text inside should not be focused.
363
+ const _importantForAccessibility =
364
+ importantForAccessibility === 'no'
365
+ ? 'no-hide-descendants'
366
+ : importantForAccessibility;
367
+
368
+ return (
369
+ <Touchable
370
+ accessible={accessible}
371
+ accessibilityActions={accessibilityActions}
372
+ onAccessibilityAction={onAccessibilityAction}
373
+ accessibilityLabel={ariaLabel || accessibilityLabel}
374
+ accessibilityHint={accessibilityHint}
375
+ accessibilityLanguage={accessibilityLanguage}
376
+ accessibilityRole="button"
377
+ accessibilityState={_accessibilityState}
378
+ importantForAccessibility={_importantForAccessibility}
379
+ hasTVPreferredFocus={hasTVPreferredFocus}
380
+ nextFocusDown={nextFocusDown}
381
+ nextFocusForward={nextFocusForward}
382
+ nextFocusLeft={nextFocusLeft}
383
+ nextFocusRight={nextFocusRight}
384
+ nextFocusUp={nextFocusUp}
385
+ testID={testID}
386
+ disabled={disabled}
387
+ onPress={onPress}
388
+ touchSoundDisabled={touchSoundDisabled}
389
+ ref={ref}>
390
+ <View style={buttonStyles}>
391
+ <Text style={textStyles} disabled={disabled}>
392
+ {formattedTitle}
393
+ </Text>
394
+ </View>
395
+ </Touchable>
396
+ );
397
+ });
398
+
399
+ Button.displayName = 'Button';
400
400
 
401
401
  const styles = StyleSheet.create({
402
- // $FlowFixMe[underconstrained-implicit-instantiation]
403
402
  button: Platform.select({
404
403
  ios: {},
405
404
  android: {
@@ -412,7 +411,6 @@ const styles = StyleSheet.create({
412
411
  text: {
413
412
  textAlign: 'center',
414
413
  margin: 8,
415
- // $FlowFixMe[underconstrained-implicit-instantiation]
416
414
  ...Platform.select({
417
415
  ios: {
418
416
  // iOS blue from https://developer.apple.com/ios/human-interface-guidelines/visual-design/color/
@@ -425,21 +423,19 @@ const styles = StyleSheet.create({
425
423
  },
426
424
  }),
427
425
  },
428
- // $FlowFixMe[underconstrained-implicit-instantiation]
429
426
  buttonDisabled: Platform.select({
430
427
  ios: {},
431
428
  android: {
432
429
  elevation: 0,
433
430
  backgroundColor: '#dfdfdf',
434
431
  },
435
- // [Windows
432
+ // [Win32
436
433
  windows: {
437
434
  backgroundColor: PlatformColor('ButtonBackgroundDisabled'),
438
435
  borderColor: PlatformColor('ButtonBorderBrushDisabled'),
439
436
  },
440
- // Windows]
437
+ // Win32]
441
438
  }),
442
- // $FlowFixMe[underconstrained-implicit-instantiation]
443
439
  textDisabled: Platform.select({
444
440
  ios: {
445
441
  color: '#cdcdcd',
@@ -447,12 +443,12 @@ const styles = StyleSheet.create({
447
443
  android: {
448
444
  color: '#a1a1a1',
449
445
  },
450
- // [Windows
446
+ // [Win32
451
447
  windows: {
452
448
  color: PlatformColor('ButtonForegroundDisabled'),
453
449
  },
454
- // Windows]
450
+ // Win32]
455
451
  }),
456
452
  });
457
453
 
458
- module.exports = (Button: ButtonType);
454
+ export default Button;