react-native-windows 0.74.11 → 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 (336) 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 +14 -70
  33. package/Libraries/Components/TextInput/TextInput.windows.js +15 -72
  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/CompositionViewComponentView.cpp +1 -4
  161. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
  162. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
  163. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +0 -10
  164. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +0 -3
  165. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +29 -45
  166. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +1 -3
  167. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
  168. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
  169. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  170. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  171. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  172. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
  173. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
  174. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -16
  175. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  176. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  177. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  178. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  179. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  180. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  181. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  182. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  183. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  184. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  185. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  186. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
  187. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  188. package/Microsoft.ReactNative/Timer.idl +1 -3
  189. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  190. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  191. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  192. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  193. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  194. package/Microsoft.ReactNative/packages.lock.json +45 -72
  195. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  196. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  197. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  198. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  199. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  200. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  201. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  202. package/PropertySheets/ARM64EC.props +13 -0
  203. package/PropertySheets/Application/ARM64EC.props +13 -0
  204. package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
  205. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  206. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  207. package/PropertySheets/JSEngine.props +2 -0
  208. package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
  209. package/README.md +21 -21
  210. package/ReactCommon/ReactCommon.vcxproj +11 -1
  211. package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  224. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  225. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  226. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  228. package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
  229. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +4 -0
  230. package/Scripts/rnw-dependencies.ps1 +36 -23
  231. package/Shared/HermesRuntimeHolder.cpp +19 -1
  232. package/Shared/HermesRuntimeHolder.h +8 -1
  233. package/Shared/HermesSamplingProfiler.cpp +1 -2
  234. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  235. package/Shared/OInstance.cpp +1 -2
  236. package/Shared/Shared.vcxitems +21 -15
  237. package/Shared/Shared.vcxitems.filters +8 -3
  238. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  239. package/Shared/Threading/BatchingQueueThread.h +2 -2
  240. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  241. package/codegen/NativeAppStateSpec.g.h +8 -8
  242. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  243. package/codegen/NativeDOMSpec.g.h +136 -0
  244. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  245. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  246. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  247. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  248. package/codegen/NativePerformanceSpec.g.h +35 -7
  249. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  250. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  251. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  252. package/codegen/NativeUIManagerSpec.g.h +5 -17
  253. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  254. package/codegen/react/components/rnwcore/Props.h +16 -12
  255. package/codegen/react/components/rnwcore/States.h +0 -26
  256. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  257. package/codegen/rnwcoreJSI.h +1374 -2867
  258. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  259. package/fmt/fmt.vcxproj +10 -2
  260. package/jest/mockComponent.js +7 -0
  261. package/jest/renderer.js +25 -14
  262. package/jest/setup.js +19 -13
  263. package/package.json +29 -27
  264. package/rn-get-polyfills.js +1 -0
  265. package/src/private/core/composeStyles.js +27 -0
  266. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  267. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  268. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  269. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  270. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  271. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  272. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  273. package/src/private/specs/modules/NativeUIManager.js +0 -7
  274. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  275. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  276. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  277. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  278. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  279. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  280. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  281. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  282. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  283. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  284. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  285. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  286. package/src/private/webapis/performance/EventCounts.js +1 -1
  287. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  288. package/src/private/webapis/performance/Performance.js +10 -56
  289. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  290. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  291. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  292. package/src/private/webapis/performance/UserTiming.js +63 -0
  293. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  294. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  295. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  296. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  297. package/stubs/glog/logging.h +1 -0
  298. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  299. package/template/cs-lib/proj/MyLib.csproj +1 -1
  300. package/template/metro.config.js +13 -2
  301. package/templates/cpp-app/template.config.js +1 -1
  302. package/templates/cpp-lib/example/metro.config.js +2 -2
  303. package/templates/cpp-lib/template.config.js +1 -1
  304. package/templates/old/generateWrapper.js +4 -1
  305. package/types/modules/globals.d.ts +4 -0
  306. package/Libraries/Lists/FlatList.windows.js +0 -717
  307. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  308. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  309. package/Libraries/Utilities/LoadingView.js +0 -16
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  312. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  313. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  314. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2377
  315. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -140
  316. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  317. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  318. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  319. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  320. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -366
  321. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  322. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  323. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  324. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  325. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  326. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  327. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  328. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  329. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  330. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  331. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  332. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  333. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  334. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  335. package/template/metro.devMode.config.js +0 -56
  336. /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
  */
@@ -1349,12 +1313,8 @@ function InternalTextInput(props: Props): React.Node {
1349
1313
  }
1350
1314
  },
1351
1315
  isFocused(): boolean {
1352
- const currentlyFocusedInput =
1353
- TextInputState.currentlyFocusedInput();
1354
- return (
1355
- currentlyFocusedInput !== null &&
1356
- currentlyFocusedInput === inputRef.current
1357
- );
1316
+ const currentlyFocusedInput = TextInputState.currentlyFocusedInput();
1317
+ return currentlyFocusedInput !== null && currentlyFocusedInput === inputRef.current;
1358
1318
  },
1359
1319
  getNativeRef(): ?React.ElementRef<HostComponent<mixed>> {
1360
1320
  return inputRef.current;
@@ -1397,26 +1357,6 @@ function InternalTextInput(props: Props): React.Node {
1397
1357
  setMostRecentEventCount(event.nativeEvent.eventCount);
1398
1358
  };
1399
1359
 
1400
- const _onChangeSync = (event: ChangeEvent) => {
1401
- const currentText = event.nativeEvent.text;
1402
- props.unstable_onChangeSync && props.unstable_onChangeSync(event);
1403
- props.unstable_onChangeTextSync &&
1404
- props.unstable_onChangeTextSync(currentText);
1405
-
1406
- if (inputRef.current == null) {
1407
- // calling `props.onChange` or `props.onChangeText`
1408
- // may clean up the input itself. Exits here.
1409
- return;
1410
- }
1411
-
1412
- setLastNativeText(currentText);
1413
- // This must happen last, after we call setLastNativeText.
1414
- // Different ordering can cause bugs when editing AndroidTextInputs
1415
- // with multiple Fragments.
1416
- // We must update this so that controlled input updates work.
1417
- setMostRecentEventCount(event.nativeEvent.eventCount);
1418
- };
1419
-
1420
1360
  const _onSelectionChange = (event: SelectionChangeEvent) => {
1421
1361
  props.onSelectionChange && props.onSelectionChange(event);
1422
1362
 
@@ -1609,6 +1549,12 @@ function InternalTextInput(props: Props): React.Node {
1609
1549
 
1610
1550
  const style = flattenStyle<TextStyleProp>(props.style);
1611
1551
 
1552
+ if (typeof style?.fontWeight === 'number') {
1553
+ // $FlowFixMe[prop-missing]
1554
+ // $FlowFixMe[cannot-write]
1555
+ style.fontWeight = style?.fontWeight.toString();
1556
+ }
1557
+
1612
1558
  if (Platform.OS === 'ios') {
1613
1559
  const RCTTextInputView =
1614
1560
  props.multiline === true
@@ -1622,10 +1568,6 @@ function InternalTextInput(props: Props): React.Node {
1622
1568
  style.paddingVertical == null &&
1623
1569
  style.paddingTop == null));
1624
1570
 
1625
- const useOnChangeSync =
1626
- (props.unstable_onChangeSync || props.unstable_onChangeTextSync) &&
1627
- !(props.onChange || props.onChangeText);
1628
-
1629
1571
  textInput = (
1630
1572
  <RCTTextInputView
1631
1573
  // $FlowFixMe[incompatible-type] - Figure out imperative + forward refs.
@@ -1642,9 +1584,7 @@ function InternalTextInput(props: Props): React.Node {
1642
1584
  mostRecentEventCount={mostRecentEventCount}
1643
1585
  nativeID={id ?? props.nativeID}
1644
1586
  onBlur={_onBlur}
1645
- onKeyPressSync={props.unstable_onKeyPressSync}
1646
1587
  onChange={_onChange}
1647
- onChangeSync={useOnChangeSync === true ? _onChangeSync : null}
1648
1588
  onContentSizeChange={props.onContentSizeChange}
1649
1589
  onFocus={_onFocus}
1650
1590
  onScroll={_onScroll}
@@ -1929,10 +1869,13 @@ const ExportedForwardRef: React.AbstractComponent<
1929
1869
  : undefined
1930
1870
  }
1931
1871
  textContentType={
1932
- Platform.OS === 'ios' &&
1933
- autoComplete &&
1934
- autoComplete in autoCompleteWebToTextContentTypeMap
1935
- ? // $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]
1936
1879
  autoCompleteWebToTextContentTypeMap[autoComplete]
1937
1880
  : textContentType
1938
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
+ };