react-native-windows 0.74.10 → 0.75.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 (327) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Common.vcxproj +8 -0
  3. package/Common/Utilities.cpp +2 -2
  4. package/Directory.Build.targets +5 -0
  5. package/Folly/Folly.vcxproj +10 -2
  6. package/Folly/Folly.vcxproj.filters +0 -7
  7. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  8. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  9. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  10. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  11. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  12. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  13. package/Libraries/Animated/useAnimatedProps.js +56 -28
  14. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  15. package/Libraries/Components/Button.js +10 -5
  16. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  17. package/Libraries/Components/Flyout/Flyout.js +10 -10
  18. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  19. package/Libraries/Components/Pressable/Pressable.js +13 -6
  20. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  21. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  22. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  23. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  24. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  25. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  26. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  27. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  28. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  29. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  30. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  31. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  32. package/Libraries/Components/TextInput/TextInput.js +20 -73
  33. package/Libraries/Components/TextInput/TextInput.windows.js +21 -75
  34. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  35. package/Libraries/Components/Touchable/Touchable.js +2 -2
  36. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  37. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  39. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  40. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  41. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  42. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  43. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  44. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  45. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  46. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  47. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  48. package/Libraries/Components/View/View.js +0 -11
  49. package/Libraries/Components/View/View.windows.js +0 -11
  50. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  51. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  52. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  53. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  54. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  55. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  56. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  57. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  58. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  59. package/Libraries/Core/ErrorHandlers.js +116 -0
  60. package/Libraries/Core/ExceptionsManager.js +2 -2
  61. package/Libraries/Core/ReactNativeVersion.js +3 -3
  62. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  63. package/Libraries/Core/setUpPerformance.js +6 -4
  64. package/Libraries/Core/setUpReactDevTools.js +70 -10
  65. package/Libraries/Core/setUpTimers.js +50 -31
  66. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  67. package/Libraries/Image/Image.android.js +23 -13
  68. package/Libraries/Image/Image.d.ts +14 -15
  69. package/Libraries/Image/Image.ios.js +21 -11
  70. package/Libraries/Image/Image.windows.js +21 -11
  71. package/Libraries/Image/ImageProps.js +16 -5
  72. package/Libraries/Image/ImageTypes.flow.js +7 -2
  73. package/Libraries/Image/ImageUtils.js +1 -0
  74. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  75. package/Libraries/Inspector/ElementBox.js +6 -3
  76. package/Libraries/Inspector/ElementProperties.js +1 -1
  77. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  78. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  79. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  80. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  81. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  82. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  83. package/Libraries/LogBox/LogBox.js +29 -12
  84. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  85. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  86. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  87. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  88. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  89. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  90. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  91. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  92. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  93. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  94. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  95. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  96. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  97. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  98. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  99. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  101. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  102. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  103. package/Libraries/Network/XMLHttpRequest.js +5 -1
  104. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  105. package/Libraries/Pressability/Pressability.js +3 -51
  106. package/Libraries/Pressability/Pressability.windows.js +3 -51
  107. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  108. package/Libraries/ReactNative/AppRegistry.js +2 -4
  109. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  110. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  111. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  112. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  113. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  114. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  115. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  116. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  117. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  118. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  119. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  120. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  121. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  123. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  124. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  125. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  126. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  127. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  128. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  129. package/Libraries/Share/Share.d.ts +16 -10
  130. package/Libraries/Share/Share.js +14 -15
  131. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  132. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  133. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  134. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  135. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  136. package/Libraries/StyleSheet/processFilter.js +132 -0
  137. package/Libraries/StyleSheet/processTransform.js +18 -3
  138. package/Libraries/Text/Text.js +151 -128
  139. package/Libraries/Text/Text.windows.js +144 -127
  140. package/Libraries/Text/TextNativeComponent.js +5 -4
  141. package/Libraries/Text/TextProps.js +6 -6
  142. package/Libraries/Text/TextProps.windows.js +6 -6
  143. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  144. package/Libraries/Types/CodegenTypes.js +3 -0
  145. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  146. package/Libraries/Utilities/Dimensions.js +1 -0
  147. package/Libraries/Utilities/HMRClient.js +36 -8
  148. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  149. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  150. package/Libraries/Utilities/Platform.android.js +4 -4
  151. package/Libraries/Utilities/RCTLog.js +1 -0
  152. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  153. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  154. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  155. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  156. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  157. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  158. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  159. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  160. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
  161. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
  162. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +12 -3
  163. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
  165. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  166. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  167. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  168. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
  169. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
  170. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -11
  171. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  172. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  173. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  174. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  175. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  176. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  177. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  178. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  179. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  180. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  181. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  182. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
  183. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  184. package/Microsoft.ReactNative/Timer.idl +1 -3
  185. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  186. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  187. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  188. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  189. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  190. package/Microsoft.ReactNative/packages.lock.json +45 -72
  191. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  192. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  193. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  194. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  195. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  196. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  197. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  198. package/PropertySheets/ARM64EC.props +13 -0
  199. package/PropertySheets/Application/ARM64EC.props +13 -0
  200. package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
  201. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  202. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  203. package/PropertySheets/JSEngine.props +2 -0
  204. package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
  205. package/README.md +21 -21
  206. package/ReactCommon/ReactCommon.vcxproj +11 -1
  207. package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
  208. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  209. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  210. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  211. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  224. package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
  225. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +10 -6
  226. package/Scripts/rnw-dependencies.ps1 +36 -23
  227. package/Shared/HermesRuntimeHolder.cpp +19 -1
  228. package/Shared/HermesRuntimeHolder.h +8 -1
  229. package/Shared/HermesSamplingProfiler.cpp +1 -2
  230. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  231. package/Shared/OInstance.cpp +1 -2
  232. package/Shared/Shared.vcxitems +21 -15
  233. package/Shared/Shared.vcxitems.filters +8 -3
  234. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  235. package/Shared/Threading/BatchingQueueThread.h +2 -2
  236. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  237. package/codegen/NativeAppStateSpec.g.h +8 -8
  238. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  239. package/codegen/NativeDOMSpec.g.h +136 -0
  240. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  241. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  242. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  243. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  244. package/codegen/NativePerformanceSpec.g.h +35 -7
  245. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  246. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  247. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  248. package/codegen/NativeUIManagerSpec.g.h +5 -17
  249. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  250. package/codegen/react/components/rnwcore/Props.h +16 -12
  251. package/codegen/react/components/rnwcore/States.h +0 -26
  252. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  253. package/codegen/rnwcoreJSI.h +1374 -2867
  254. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  255. package/fmt/fmt.vcxproj +10 -2
  256. package/jest/mockComponent.js +7 -0
  257. package/jest/renderer.js +25 -14
  258. package/jest/setup.js +19 -13
  259. package/package.json +29 -27
  260. package/rn-get-polyfills.js +1 -0
  261. package/src/private/core/composeStyles.js +27 -0
  262. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  263. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  264. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  265. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  266. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  267. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  268. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  269. package/src/private/specs/modules/NativeUIManager.js +0 -7
  270. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  271. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  272. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  273. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  274. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  275. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  276. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  277. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  278. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  279. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  280. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  281. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  282. package/src/private/webapis/performance/EventCounts.js +1 -1
  283. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  284. package/src/private/webapis/performance/Performance.js +10 -56
  285. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  286. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  287. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  288. package/src/private/webapis/performance/UserTiming.js +63 -0
  289. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  290. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  291. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  292. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  293. package/stubs/glog/logging.h +1 -0
  294. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  295. package/template/cs-lib/proj/MyLib.csproj +1 -1
  296. package/template/metro.config.js +13 -2
  297. package/templates/cpp-app/template.config.js +1 -1
  298. package/templates/cpp-lib/example/metro.config.js +2 -2
  299. package/templates/cpp-lib/template.config.js +1 -1
  300. package/templates/old/generateWrapper.js +4 -1
  301. package/types/modules/globals.d.ts +4 -0
  302. package/Libraries/Lists/FlatList.windows.js +0 -717
  303. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  304. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  305. package/Libraries/Utilities/LoadingView.js +0 -16
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2375
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  312. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  313. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  314. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  315. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  316. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  317. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  318. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  319. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  320. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  321. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  322. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  323. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  324. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  325. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  326. package/template/metro.devMode.config.js +0 -56
  327. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -818,33 +818,12 @@ export type Props = $ReadOnly<{|
818
818
  */
819
819
  onChange?: ?(e: ChangeEvent) => mixed,
820
820
 
821
- /**
822
- * DANGER: this API is not stable and will change in the future.
823
- *
824
- * Callback will be called on the main thread and may result in dropped frames.
825
- * Callback that is called when the text input's text changes.
826
- *
827
- * @platform ios
828
- */
829
- unstable_onChangeSync?: ?(e: ChangeEvent) => mixed,
830
-
831
821
  /**
832
822
  * Callback that is called when the text input's text changes.
833
823
  * Changed text is passed as an argument to the callback handler.
834
824
  */
835
825
  onChangeText?: ?(text: string) => mixed,
836
826
 
837
- /**
838
- * DANGER: this API is not stable and will change in the future.
839
- *
840
- * Callback will be called on the main thread and may result in dropped frames.
841
- * Callback that is called when the text input's text changes.
842
- * Changed text is passed as an argument to the callback handler.
843
- *
844
- * @platform ios
845
- */
846
- unstable_onChangeTextSync?: ?(text: string) => mixed,
847
-
848
827
  /**
849
828
  * Callback that is called when the text input's content size changes.
850
829
  * This will be called with
@@ -873,21 +852,6 @@ export type Props = $ReadOnly<{|
873
852
  */
874
853
  onKeyPress?: ?(e: KeyPressEvent) => mixed,
875
854
 
876
- /**
877
- * DANGER: this API is not stable and will change in the future.
878
- *
879
- * Callback will be called on the main thread and may result in dropped frames.
880
- *
881
- * Callback that is called when a key is pressed.
882
- * This will be called with `{ nativeEvent: { key: keyValue } }`
883
- * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and
884
- * the typed-in character otherwise including `' '` for space.
885
- * Fires before `onChange` callbacks.
886
- *
887
- * @platform ios
888
- */
889
- unstable_onKeyPressSync?: ?(e: KeyPressEvent) => mixed,
890
-
891
855
  /**
892
856
  * Called when a single tap gesture is detected.
893
857
  */
@@ -1212,12 +1176,14 @@ function InternalTextInput(props: Props): React.Node {
1212
1176
  };
1213
1177
 
1214
1178
  const [mostRecentEventCount, setMostRecentEventCount] = useState<number>(0);
1215
-
1216
1179
  const [lastNativeText, setLastNativeText] = useState<?Stringish>(props.value);
1217
1180
  const [lastNativeSelectionState, setLastNativeSelection] = useState<{|
1218
- selection: ?Selection,
1181
+ selection: Selection,
1219
1182
  mostRecentEventCount: number,
1220
- |}>({selection, mostRecentEventCount});
1183
+ |}>({
1184
+ selection: {start: -1, end: -1},
1185
+ mostRecentEventCount: mostRecentEventCount,
1186
+ });
1221
1187
 
1222
1188
  const lastNativeSelection = lastNativeSelectionState.selection;
1223
1189
 
@@ -1347,12 +1313,8 @@ function InternalTextInput(props: Props): React.Node {
1347
1313
  }
1348
1314
  },
1349
1315
  isFocused(): boolean {
1350
- const currentlyFocusedInput =
1351
- TextInputState.currentlyFocusedInput();
1352
- return (
1353
- currentlyFocusedInput !== null &&
1354
- currentlyFocusedInput === inputRef.current
1355
- );
1316
+ const currentlyFocusedInput = TextInputState.currentlyFocusedInput();
1317
+ return currentlyFocusedInput !== null && currentlyFocusedInput === inputRef.current;
1356
1318
  },
1357
1319
  getNativeRef(): ?React.ElementRef<HostComponent<mixed>> {
1358
1320
  return inputRef.current;
@@ -1395,26 +1357,6 @@ function InternalTextInput(props: Props): React.Node {
1395
1357
  setMostRecentEventCount(event.nativeEvent.eventCount);
1396
1358
  };
1397
1359
 
1398
- const _onChangeSync = (event: ChangeEvent) => {
1399
- const currentText = event.nativeEvent.text;
1400
- props.unstable_onChangeSync && props.unstable_onChangeSync(event);
1401
- props.unstable_onChangeTextSync &&
1402
- props.unstable_onChangeTextSync(currentText);
1403
-
1404
- if (inputRef.current == null) {
1405
- // calling `props.onChange` or `props.onChangeText`
1406
- // may clean up the input itself. Exits here.
1407
- return;
1408
- }
1409
-
1410
- setLastNativeText(currentText);
1411
- // This must happen last, after we call setLastNativeText.
1412
- // Different ordering can cause bugs when editing AndroidTextInputs
1413
- // with multiple Fragments.
1414
- // We must update this so that controlled input updates work.
1415
- setMostRecentEventCount(event.nativeEvent.eventCount);
1416
- };
1417
-
1418
1360
  const _onSelectionChange = (event: SelectionChangeEvent) => {
1419
1361
  props.onSelectionChange && props.onSelectionChange(event);
1420
1362
 
@@ -1607,6 +1549,12 @@ function InternalTextInput(props: Props): React.Node {
1607
1549
 
1608
1550
  const style = flattenStyle<TextStyleProp>(props.style);
1609
1551
 
1552
+ if (typeof style?.fontWeight === 'number') {
1553
+ // $FlowFixMe[prop-missing]
1554
+ // $FlowFixMe[cannot-write]
1555
+ style.fontWeight = style?.fontWeight.toString();
1556
+ }
1557
+
1610
1558
  if (Platform.OS === 'ios') {
1611
1559
  const RCTTextInputView =
1612
1560
  props.multiline === true
@@ -1620,10 +1568,6 @@ function InternalTextInput(props: Props): React.Node {
1620
1568
  style.paddingVertical == null &&
1621
1569
  style.paddingTop == null));
1622
1570
 
1623
- const useOnChangeSync =
1624
- (props.unstable_onChangeSync || props.unstable_onChangeTextSync) &&
1625
- !(props.onChange || props.onChangeText);
1626
-
1627
1571
  textInput = (
1628
1572
  <RCTTextInputView
1629
1573
  // $FlowFixMe[incompatible-type] - Figure out imperative + forward refs.
@@ -1640,15 +1584,14 @@ function InternalTextInput(props: Props): React.Node {
1640
1584
  mostRecentEventCount={mostRecentEventCount}
1641
1585
  nativeID={id ?? props.nativeID}
1642
1586
  onBlur={_onBlur}
1643
- onKeyPressSync={props.unstable_onKeyPressSync}
1644
1587
  onChange={_onChange}
1645
- onChangeSync={useOnChangeSync === true ? _onChangeSync : null}
1646
1588
  onContentSizeChange={props.onContentSizeChange}
1647
1589
  onFocus={_onFocus}
1648
1590
  onScroll={_onScroll}
1649
1591
  onSelectionChange={_onSelectionChange}
1650
1592
  onSelectionChangeShouldSetResponder={emptyFunctionThatReturnsTrue}
1651
1593
  selection={selection}
1594
+ selectionColor={selectionColor}
1652
1595
  style={StyleSheet.compose(
1653
1596
  useMultilineDefaultStyle ? styles.multilineDefault : null,
1654
1597
  style,
@@ -1926,10 +1869,13 @@ const ExportedForwardRef: React.AbstractComponent<
1926
1869
  : undefined
1927
1870
  }
1928
1871
  textContentType={
1929
- Platform.OS === 'ios' &&
1930
- autoComplete &&
1931
- autoComplete in autoCompleteWebToTextContentTypeMap
1932
- ? // $FlowFixMe
1872
+ textContentType != null
1873
+ ? textContentType
1874
+ : Platform.OS === 'ios' &&
1875
+ autoComplete &&
1876
+ autoComplete in autoCompleteWebToTextContentTypeMap
1877
+ ? // $FlowFixMe[invalid-computed-prop]
1878
+ // $FlowFixMe[prop-missing]
1933
1879
  autoCompleteWebToTextContentTypeMap[autoComplete]
1934
1880
  : textContentType
1935
1881
  }
@@ -385,15 +385,6 @@ export type NativeProps = $ReadOnly<{|
385
385
  |}>,
386
386
  >,
387
387
 
388
- onTextInput?: ?BubblingEventHandler<
389
- $ReadOnly<{|
390
- target: Int32,
391
- text: string,
392
- previousText: string,
393
- range: $ReadOnly<{|start: Double, end: Double|}>,
394
- |}>,
395
- >,
396
-
397
388
  /**
398
389
  * Callback that is called when text input ends.
399
390
  */
@@ -647,10 +638,34 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
647
638
  export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
648
639
  uiViewClassName: 'WindowsTextInput',
649
640
  bubblingEventTypes: {
650
- topTextInput: {
641
+ topBlur: {
642
+ phasedRegistrationNames: {
643
+ bubbled: 'onBlur',
644
+ captured: 'onBlurCapture',
645
+ },
646
+ },
647
+ topEndEditing: {
648
+ phasedRegistrationNames: {
649
+ bubbled: 'onEndEditing',
650
+ captured: 'onEndEditingCapture',
651
+ },
652
+ },
653
+ topFocus: {
654
+ phasedRegistrationNames: {
655
+ bubbled: 'onFocus',
656
+ captured: 'onFocusCapture',
657
+ },
658
+ },
659
+ topKeyPress: {
660
+ phasedRegistrationNames: {
661
+ bubbled: 'onKeyPress',
662
+ captured: 'onKeyPressCapture',
663
+ },
664
+ },
665
+ topSubmitEditing: {
651
666
  phasedRegistrationNames: {
652
- bubbled: 'onTextInput',
653
- captured: 'onTextInputCapture',
667
+ bubbled: 'onSubmitEditing',
668
+ captured: 'onSubmitEditingCapture',
654
669
  },
655
670
  },
656
671
  },
@@ -40,8 +40,8 @@ const extractSingleTouch = (nativeEvent: {
40
40
  return !hasTouches && hasChangedTouches
41
41
  ? changedTouches[0]
42
42
  : hasTouches
43
- ? touches[0]
44
- : nativeEvent;
43
+ ? touches[0]
44
+ : nativeEvent;
45
45
  };
46
46
 
47
47
  /**
@@ -8,12 +8,9 @@
8
8
  */
9
9
 
10
10
  import type * as React from 'react';
11
- import {Constructor} from '../../../types/private/Utilities';
12
- import {TimerMixin} from '../../../types/private/TimerMixin';
13
- import {NativeMethods} from '../../../types/public/ReactNativeTypes';
14
11
  import {ColorValue, StyleProp} from '../../StyleSheet/StyleSheet';
15
12
  import {ViewStyle} from '../../StyleSheet/StyleSheetTypes';
16
- import {TouchableMixin} from './Touchable';
13
+ import {View} from '../../Components/View/View';
17
14
  import {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';
18
15
 
19
16
  /**
@@ -60,9 +57,6 @@ export interface TouchableHighlightProps extends TouchableWithoutFeedbackProps {
60
57
  *
61
58
  * @see https://reactnative.dev/docs/touchablehighlight
62
59
  */
63
- declare class TouchableHighlightComponent extends React.Component<TouchableHighlightProps> {}
64
- declare const TouchableHighlightBase: Constructor<NativeMethods> &
65
- Constructor<TimerMixin> &
66
- Constructor<TouchableMixin> &
67
- typeof TouchableHighlightComponent;
68
- export class TouchableHighlight extends TouchableHighlightBase {}
60
+ export const TouchableHighlight: React.ForwardRefExoticComponent<
61
+ React.PropsWithoutRef<TouchableHighlightProps> & React.RefAttributes<View>
62
+ >;
@@ -342,7 +342,9 @@ class TouchableHighlight extends React.Component<Props, State> {
342
342
  nextFocusRight={this.props.nextFocusRight}
343
343
  nextFocusUp={this.props.nextFocusUp}
344
344
  focusable={
345
- this.props.focusable !== false && this.props.onPress !== undefined
345
+ this.props.focusable !== false &&
346
+ this.props.onPress !== undefined &&
347
+ !this.props.disabled
346
348
  }
347
349
  nativeID={this.props.id ?? this.props.nativeID}
348
350
  testID={this.props.testID}
@@ -350,7 +350,9 @@ class TouchableHighlight extends React.Component<Props, State> {
350
350
  nextFocusRight={this.props.nextFocusRight}
351
351
  nextFocusUp={this.props.nextFocusUp}
352
352
  focusable={
353
- this.props.focusable !== false && this.props.onPress !== undefined
353
+ this.props.focusable !== false &&
354
+ this.props.onPress !== undefined &&
355
+ !this.props.disabled
354
356
  }
355
357
  nativeID={this.props.id ?? this.props.nativeID}
356
358
  testID={this.props.testID}
@@ -8,11 +8,7 @@
8
8
  */
9
9
 
10
10
  import type * as React from 'react';
11
- import {Constructor} from '../../../types/private/Utilities';
12
- import {TimerMixin} from '../../../types/private/TimerMixin';
13
- import {NativeMethods} from '../../../types/public/ReactNativeTypes';
14
- import {TVParallaxProperties} from '../View/ViewPropTypes';
15
- import {TouchableMixin} from './Touchable';
11
+ import {View} from '../../Components/View/View';
16
12
  import {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';
17
13
 
18
14
  export interface TVProps {
@@ -70,22 +66,6 @@ export interface TouchableOpacityProps
70
66
  * Defaults to 0.2
71
67
  */
72
68
  activeOpacity?: number | undefined;
73
-
74
- /**
75
- * *(Apple TV only)* Object with properties to control Apple TV parallax effects.
76
- *
77
- * enabled: If true, parallax effects are enabled. Defaults to true.
78
- * shiftDistanceX: Defaults to 2.0.
79
- * shiftDistanceY: Defaults to 2.0.
80
- * tiltAngle: Defaults to 0.05.
81
- * magnification: Defaults to 1.0.
82
- * pressMagnification: Defaults to 1.0.
83
- * pressDuration: Defaults to 0.3.
84
- * pressDelay: Defaults to 0.0.
85
- *
86
- * @platform android
87
- */
88
- tvParallaxProperties?: TVParallaxProperties | undefined;
89
69
  }
90
70
 
91
71
  /**
@@ -96,14 +76,6 @@ export interface TouchableOpacityProps
96
76
  *
97
77
  * @see https://reactnative.dev/docs/touchableopacity
98
78
  */
99
- declare class TouchableOpacityComponent extends React.Component<TouchableOpacityProps> {}
100
- declare const TouchableOpacityBase: Constructor<TimerMixin> &
101
- Constructor<TouchableMixin> &
102
- Constructor<NativeMethods> &
103
- typeof TouchableOpacityComponent;
104
- export class TouchableOpacity extends TouchableOpacityBase {
105
- /**
106
- * Animate the touchable to a new opacity.
107
- */
108
- setOpacityTo: (value: number) => void;
109
- }
79
+ export const TouchableOpacity: React.ForwardRefExoticComponent<
80
+ React.PropsWithoutRef<TouchableOpacityProps> & React.RefAttributes<View>
81
+ >;
@@ -287,7 +287,9 @@ class TouchableOpacity extends React.Component<Props, State> {
287
287
  hasTVPreferredFocus={this.props.hasTVPreferredFocus}
288
288
  hitSlop={this.props.hitSlop}
289
289
  focusable={
290
- this.props.focusable !== false && this.props.onPress !== undefined
290
+ this.props.focusable !== false &&
291
+ this.props.onPress !== undefined &&
292
+ !this.props.disabled
291
293
  }
292
294
  ref={this.props.hostRef}
293
295
  {...eventHandlersWithoutBlurAndFocus}>
@@ -295,7 +295,9 @@ class TouchableOpacity extends React.Component<Props, State> {
295
295
  hasTVPreferredFocus={this.props.hasTVPreferredFocus}
296
296
  hitSlop={this.props.hitSlop}
297
297
  focusable={
298
- this.props.focusable !== false && this.props.onPress !== undefined
298
+ this.props.focusable !== false &&
299
+ this.props.onPress !== undefined &&
300
+ !this.props.disabled
299
301
  }
300
302
  ref={this.props.hostRef}
301
303
  accessibilityPosInSet={this.props.accessibilityPosInSet} // [Windows]
@@ -42,6 +42,8 @@ export interface TouchableWithoutFeedbackProps
42
42
  AccessibilityProps {
43
43
  children?: React.ReactNode | undefined;
44
44
 
45
+ rejectResponderTermination?: boolean | undefined;
46
+
45
47
  /**
46
48
  * Delay in ms, from onPressIn, before onLongPress is called.
47
49
  */
@@ -62,6 +64,12 @@ export interface TouchableWithoutFeedbackProps
62
64
  */
63
65
  disabled?: boolean | undefined;
64
66
 
67
+ /**
68
+ * Whether this View should be focusable with a non-touch input device,
69
+ * eg. receive focus with a hardware keyboard / TV remote.
70
+ */
71
+ focusable?: boolean | undefined;
72
+
65
73
  /**
66
74
  * This defines how far your touch can start away from the button.
67
75
  * This is added to pressRetentionOffset when moving off of the button.
@@ -24,11 +24,10 @@ import type {
24
24
  } from '../../Types/CoreEventTypes';
25
25
 
26
26
  import View from '../../Components/View/View';
27
- import Pressability, {
28
- type PressabilityConfig,
29
- } from '../../Pressability/Pressability';
30
27
  import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
28
+ import usePressability from '../../Pressability/usePressability';
31
29
  import * as React from 'react';
30
+ import {useMemo} from 'react';
32
31
 
33
32
  type Props = $ReadOnly<{|
34
33
  accessibilityActions?: ?$ReadOnlyArray<AccessibilityActionInfo>,
@@ -85,10 +84,6 @@ type Props = $ReadOnly<{|
85
84
  touchSoundDisabled?: ?boolean,
86
85
  |}>;
87
86
 
88
- type State = $ReadOnly<{|
89
- pressability: Pressability,
90
- |}>;
91
-
92
87
  const PASSTHROUGH_PROPS = [
93
88
  'accessibilityActions',
94
89
  'accessibilityElementsHidden',
@@ -115,115 +110,126 @@ const PASSTHROUGH_PROPS = [
115
110
  'testID',
116
111
  ];
117
112
 
118
- class TouchableWithoutFeedback extends React.Component<Props, State> {
119
- state: State = {
120
- pressability: new Pressability(createPressabilityConfig(this.props)),
121
- };
122
-
123
- render(): React.Node {
124
- const element = React.Children.only<$FlowFixMe>(this.props.children);
125
- const children: Array<React.Node> = [element.props.children];
126
- const ariaLive = this.props['aria-live'];
127
-
128
- if (__DEV__) {
129
- if (element.type === View) {
130
- children.push(
131
- <PressabilityDebugView color="red" hitSlop={this.props.hitSlop} />,
132
- );
133
- }
134
- }
135
-
136
- let _accessibilityState = {
137
- busy: this.props['aria-busy'] ?? this.props.accessibilityState?.busy,
138
- checked:
139
- this.props['aria-checked'] ?? this.props.accessibilityState?.checked,
113
+ module.exports = function TouchableWithoutFeedback(props: Props): React.Node {
114
+ const {
115
+ disabled,
116
+ rejectResponderTermination,
117
+ 'aria-disabled': ariaDisabled,
118
+ accessibilityState,
119
+ hitSlop,
120
+ delayLongPress,
121
+ delayPressIn,
122
+ delayPressOut,
123
+ pressRetentionOffset,
124
+ touchSoundDisabled,
125
+ onBlur: _onBlur,
126
+ onFocus: _onFocus,
127
+ onLongPress,
128
+ onPress,
129
+ onPressIn,
130
+ onPressOut,
131
+ } = props;
132
+
133
+ const pressabilityConfig = useMemo(
134
+ () => ({
135
+ cancelable: !rejectResponderTermination,
140
136
  disabled:
141
- this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,
142
- expanded:
143
- this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,
144
- selected:
145
- this.props['aria-selected'] ?? this.props.accessibilityState?.selected,
146
- };
147
-
148
- // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
149
- // adopting `Pressability`, so preserve that behavior.
150
- const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =
151
- this.state.pressability.getEventHandlers();
152
-
153
- const elementProps: {[string]: mixed, ...} = {
154
- ...eventHandlersWithoutBlurAndFocus,
155
- accessible: this.props.accessible !== false,
156
- accessibilityState:
157
- this.props.disabled != null
158
- ? {
159
- ..._accessibilityState,
160
- disabled: this.props.disabled,
161
- }
162
- : _accessibilityState,
163
- focusable:
164
- this.props.focusable !== false && this.props.onPress !== undefined,
165
-
166
- accessibilityElementsHidden:
167
- this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden,
168
- importantForAccessibility:
169
- this.props['aria-hidden'] === true
170
- ? 'no-hide-descendants'
171
- : this.props.importantForAccessibility,
172
- accessibilityLiveRegion:
173
- ariaLive === 'off'
174
- ? 'none'
175
- : ariaLive ?? this.props.accessibilityLiveRegion,
176
- nativeID: this.props.id ?? this.props.nativeID,
177
- };
178
- for (const prop of PASSTHROUGH_PROPS) {
179
- if (this.props[prop] !== undefined) {
180
- elementProps[prop] = this.props[prop];
181
- }
137
+ disabled !== null
138
+ ? disabled
139
+ : ariaDisabled ?? accessibilityState?.disabled,
140
+ hitSlop: hitSlop,
141
+ delayLongPress: delayLongPress,
142
+ delayPressIn: delayPressIn,
143
+ delayPressOut: delayPressOut,
144
+ minPressDuration: 0,
145
+ pressRectOffset: pressRetentionOffset,
146
+ android_disableSound: touchSoundDisabled,
147
+ onBlur: _onBlur,
148
+ onFocus: _onFocus,
149
+ onLongPress: onLongPress,
150
+ onPress: onPress,
151
+ onPressIn: onPressIn,
152
+ onPressOut: onPressOut,
153
+ }),
154
+ [
155
+ rejectResponderTermination,
156
+ disabled,
157
+ ariaDisabled,
158
+ accessibilityState?.disabled,
159
+ hitSlop,
160
+ delayLongPress,
161
+ delayPressIn,
162
+ delayPressOut,
163
+ pressRetentionOffset,
164
+ touchSoundDisabled,
165
+ _onBlur,
166
+ _onFocus,
167
+ onLongPress,
168
+ onPress,
169
+ onPressIn,
170
+ onPressOut,
171
+ ],
172
+ );
173
+
174
+ const eventHandlers = usePressability(pressabilityConfig);
175
+
176
+ const element = React.Children.only<$FlowFixMe>(props.children);
177
+ const children: Array<React.Node> = [element.props.children];
178
+ const ariaLive = props['aria-live'];
179
+
180
+ if (__DEV__) {
181
+ if (element.type === View) {
182
+ children.push(
183
+ <PressabilityDebugView color="red" hitSlop={props.hitSlop} />,
184
+ );
182
185
  }
183
-
184
- // $FlowFixMe[incompatible-call]
185
- return React.cloneElement(element, elementProps, ...children);
186
- }
187
-
188
- componentDidUpdate(): void {
189
- this.state.pressability.configure(createPressabilityConfig(this.props));
190
- }
191
-
192
- componentDidMount(): mixed {
193
- this.state.pressability.configure(createPressabilityConfig(this.props));
194
186
  }
195
187
 
196
- componentWillUnmount(): void {
197
- this.state.pressability.reset();
198
- }
199
- }
188
+ let _accessibilityState = {
189
+ busy: props['aria-busy'] ?? props.accessibilityState?.busy,
190
+ checked: props['aria-checked'] ?? props.accessibilityState?.checked,
191
+ disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,
192
+ expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,
193
+ selected: props['aria-selected'] ?? props.accessibilityState?.selected,
194
+ };
200
195
 
201
- function createPressabilityConfig({
202
- 'aria-disabled': ariaDisabled,
203
- ...props
204
- }: Props): PressabilityConfig {
205
- const accessibilityStateDisabled =
206
- ariaDisabled ?? props.accessibilityState?.disabled;
207
- return {
208
- cancelable: !props.rejectResponderTermination,
209
- disabled:
210
- props.disabled !== null ? props.disabled : accessibilityStateDisabled,
211
- hitSlop: props.hitSlop,
212
- delayLongPress: props.delayLongPress,
213
- delayPressIn: props.delayPressIn,
214
- delayPressOut: props.delayPressOut,
215
- minPressDuration: 0,
216
- pressRectOffset: props.pressRetentionOffset,
217
- android_disableSound: props.touchSoundDisabled,
218
- onBlur: props.onBlur,
219
- onFocus: props.onFocus,
220
- onLongPress: props.onLongPress,
221
- onPress: props.onPress,
222
- onPressIn: props.onPressIn,
223
- onPressOut: props.onPressOut,
196
+ // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
197
+ // adopting `Pressability`, so preserve that behavior.
198
+ const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =
199
+ eventHandlers || {};
200
+
201
+ const elementProps: {[string]: mixed, ...} = {
202
+ ...eventHandlersWithoutBlurAndFocus,
203
+ accessible: props.accessible !== false,
204
+ accessibilityState:
205
+ props.disabled != null
206
+ ? {
207
+ ..._accessibilityState,
208
+ disabled: props.disabled,
209
+ }
210
+ : _accessibilityState,
211
+ focusable:
212
+ props.focusable !== false &&
213
+ props.onPress !== undefined &&
214
+ !props.disabled,
215
+
216
+ accessibilityElementsHidden:
217
+ props['aria-hidden'] ?? props.accessibilityElementsHidden,
218
+ importantForAccessibility:
219
+ props['aria-hidden'] === true
220
+ ? 'no-hide-descendants'
221
+ : props.importantForAccessibility,
222
+ accessibilityLiveRegion:
223
+ ariaLive === 'off' ? 'none' : ariaLive ?? props.accessibilityLiveRegion,
224
+ nativeID: props.id ?? props.nativeID,
224
225
  };
225
- }
226
226
 
227
- TouchableWithoutFeedback.displayName = 'TouchableWithoutFeedback';
227
+ for (const prop of PASSTHROUGH_PROPS) {
228
+ if (props[prop] !== undefined) {
229
+ elementProps[prop] = props[prop];
230
+ }
231
+ }
228
232
 
229
- module.exports = TouchableWithoutFeedback;
233
+ // $FlowFixMe[incompatible-call]
234
+ return React.cloneElement(element, elementProps, ...children);
235
+ };