react-native-windows 0.76.3 → 0.77.0-preview.2

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 (367) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/animations/Animation.js +60 -25
  8. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  9. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  10. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  11. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  13. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  14. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  17. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  23. package/Libraries/Animated/useAnimatedProps.js +41 -35
  24. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  26. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  27. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  28. package/Libraries/Components/Button.js +9 -4
  29. package/Libraries/Components/Button.windows.js +19 -5
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  31. package/Libraries/Components/Glyph/Glyph.js +2 -1
  32. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  33. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  34. package/Libraries/Components/Pressable/Pressable.js +4 -4
  35. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  36. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  37. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  38. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  39. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  40. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  41. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  42. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  43. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  45. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  46. package/Libraries/Components/Switch/Switch.js +8 -6
  47. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  58. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  59. package/Libraries/Components/Touchable/Position.js +7 -2
  60. package/Libraries/Components/Touchable/Touchable.js +4 -0
  61. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  62. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  63. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  68. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  69. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  71. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  72. package/Libraries/Components/View/View.js +4 -4
  73. package/Libraries/Components/View/View.windows.js +12 -5
  74. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  75. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  76. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  77. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  78. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  79. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  80. package/Libraries/Core/ExceptionsManager.js +50 -29
  81. package/Libraries/Core/ReactNativeVersion.js +3 -3
  82. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  84. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  85. package/Libraries/Core/setUpErrorHandling.js +20 -18
  86. package/Libraries/Core/setUpReactDevTools.js +107 -8
  87. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  88. package/Libraries/Core/setUpTimers.js +21 -18
  89. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  90. package/Libraries/Image/AssetSourceResolver.js +12 -1
  91. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  92. package/Libraries/Image/Image.android.js +1 -5
  93. package/Libraries/Image/Image.d.ts +20 -29
  94. package/Libraries/Image/Image.ios.js +0 -2
  95. package/Libraries/Image/Image.windows.js +5 -1
  96. package/Libraries/Image/ImageBackground.js +2 -5
  97. package/Libraries/Image/ImageProps.js +7 -6
  98. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  99. package/Libraries/Image/ImageResizeMode.js +4 -1
  100. package/Libraries/Image/ImageSource.d.ts +0 -2
  101. package/Libraries/Image/ImageSource.js +0 -2
  102. package/Libraries/Image/ImageTypes.flow.js +11 -9
  103. package/Libraries/Image/ImageUtils.js +6 -3
  104. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  105. package/Libraries/Inspector/Inspector.js +1 -0
  106. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  107. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  108. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  109. package/Libraries/Interaction/InteractionManager.js +6 -1
  110. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  111. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  112. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +1 -2
  114. package/Libraries/Lists/FlatList.js +2 -2
  115. package/Libraries/Lists/SectionListModern.js +7 -7
  116. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  117. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  118. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  119. package/Libraries/LogBox/LogBox.js +18 -5
  120. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  122. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  129. package/Libraries/Modal/Modal.d.ts +12 -0
  130. package/Libraries/Modal/Modal.js +31 -4
  131. package/Libraries/Modal/Modal.windows.js +18 -0
  132. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  133. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  134. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  135. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  136. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  137. package/Libraries/Network/FormData.js +11 -3
  138. package/Libraries/Network/XHRInterceptor.js +63 -14
  139. package/Libraries/Network/XMLHttpRequest.js +26 -1
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  141. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  142. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  143. package/Libraries/Pressability/HoverState.js +2 -0
  144. package/Libraries/Pressability/Pressability.js +2 -3
  145. package/Libraries/Pressability/Pressability.windows.js +2 -3
  146. package/Libraries/Pressability/usePressability.js +4 -1
  147. package/Libraries/ReactNative/AppContainer.js +1 -1
  148. package/Libraries/ReactNative/AppRegistry.js +1 -11
  149. package/Libraries/ReactNative/DisplayMode.js +1 -1
  150. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  151. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  152. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  153. package/Libraries/ReactNative/renderApplication.js +9 -8
  154. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  155. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  156. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  157. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  159. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  160. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  161. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  162. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  163. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  164. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  165. package/Libraries/StyleSheet/processTransform.js +3 -34
  166. package/Libraries/Text/Text.js +248 -249
  167. package/Libraries/Text/Text.windows.js +298 -292
  168. package/Libraries/Text/TextNativeComponent.js +0 -1
  169. package/Libraries/Text/TextProps.windows.js +2 -0
  170. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  171. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  172. package/Libraries/Types/CoreEventTypes.js +4 -6
  173. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  174. package/Libraries/Utilities/Appearance.js +3 -1
  175. package/Libraries/Utilities/BackHandler.android.js +6 -18
  176. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  177. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  178. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  179. package/Libraries/Utilities/HMRClient.js +3 -4
  180. package/Libraries/Utilities/Platform.flow.js +2 -2
  181. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  182. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  183. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  184. package/Libraries/Utilities/useMergeRefs.js +26 -7
  185. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  186. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  187. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  188. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  189. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  190. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  191. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  192. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  193. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  194. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  196. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  198. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  200. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  201. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  203. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  204. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  205. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  206. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  207. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  208. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  209. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  210. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  211. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  212. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  213. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  214. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  215. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  222. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  223. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  229. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  230. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  231. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  232. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  233. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  234. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  236. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  237. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  239. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  240. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  242. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  245. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  248. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  249. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  250. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  256. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  257. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  259. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  260. package/PropertySheets/Bundle.Common.targets +1 -1
  261. package/PropertySheets/Bundle.props +3 -0
  262. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  263. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  264. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  265. package/PropertySheets/React.Cpp.props +6 -0
  266. package/ReactCommon/ReactCommon.vcxproj +5 -0
  267. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
  275. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  276. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  277. package/Shared/InspectorPackagerConnection.cpp +3 -6
  278. package/Shared/InspectorPackagerConnection.h +2 -2
  279. package/Shared/InstanceManager.h +1 -1
  280. package/Shared/OInstance.h +1 -1
  281. package/Shared/Shared.vcxitems +17 -2
  282. package/Shared/Shared.vcxitems.filters +3 -1
  283. package/Shared/TurboModuleManager.cpp +29 -4
  284. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  285. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  286. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  287. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  288. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  289. package/codegen/NativePerformanceSpec.g.h +127 -3
  290. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  291. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  292. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  293. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  294. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  295. package/codegen/react/components/rnwcore/Props.h +1 -0
  296. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  297. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  298. package/codegen/react/components/rnwcore/States.h +0 -12
  299. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  300. package/codegen/rnwcoreJSI.h +942 -511
  301. package/index.js +10 -3
  302. package/index.windows.js +10 -3
  303. package/jest/setup.js +36 -1
  304. package/just-task.js +15 -0
  305. package/package.json +22 -22
  306. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  307. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  308. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  309. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  310. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  311. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  312. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  313. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  314. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  315. package/src/private/devmenu/DevMenu.d.ts +20 -0
  316. package/src/private/devmenu/DevMenu.js +31 -0
  317. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  318. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  319. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  320. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  321. package/src/private/setup/setUpDOM.js +14 -6
  322. package/src/private/setup/setUpMutationObserver.js +5 -0
  323. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  324. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  325. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  326. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  327. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  328. package/src/private/specs/modules/NativeAppearance.js +4 -10
  329. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  330. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  331. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  332. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  333. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  334. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  335. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  336. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  337. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  338. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  339. package/src/private/webapis/performance/EventTiming.js +13 -8
  340. package/src/private/webapis/performance/Performance.js +66 -73
  341. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  342. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  343. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  344. package/src/private/webapis/performance/UserTiming.js +11 -7
  345. package/src/private/webapis/performance/Utilities.js +18 -0
  346. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  347. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  348. package/templates/cpp-lib/template.config.js +13 -7
  349. package/templates/templateUtils.js +10 -0
  350. package/types/index.d.ts +1 -1
  351. package/types/public/ReactNativeTypes.d.ts +4 -8
  352. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  353. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  356. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  357. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  358. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  359. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  360. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  361. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  362. package/src/private/components/useSyncOnScroll.js +0 -48
  363. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  364. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  365. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  366. package/types/experimental.d.ts +0 -59
  367. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -36,232 +36,163 @@ type TextForwardRef = React.ElementRef<
36
36
  *
37
37
  * @see https://reactnative.dev/docs/text
38
38
  */
39
- const Text: React.AbstractComponent<TextProps, TextForwardRef> =
40
- React.forwardRef(
41
- (
42
- {
43
- accessible,
44
- accessibilityLabel,
45
- accessibilityLevel, // Windows
46
- accessibilityPosInSet, // Windows
47
- accessibilitySetSize, // Windows
48
- accessibilityState,
49
- allowFontScaling,
50
- 'aria-busy': ariaBusy,
51
- 'aria-checked': ariaChecked,
52
- 'aria-disabled': ariaDisabled,
53
- 'aria-expanded': ariaExpanded,
54
- 'aria-label': ariaLabel,
55
- 'aria-level': ariaLevel, // Windows
56
- 'aria-posinset': ariaPosinset, // Windows
57
- 'aria-setsize': ariaSetsize, // Windows
58
- 'aria-selected': ariaSelected,
59
- children,
60
- ellipsizeMode,
61
- disabled,
62
- id,
63
- nativeID,
64
- numberOfLines,
65
- onLongPress,
66
- onPress,
67
- onPressIn,
68
- onPressOut,
69
- onResponderGrant,
70
- onResponderMove,
71
- onResponderRelease,
72
- onResponderTerminate,
73
- onResponderTerminationRequest,
74
- onStartShouldSetResponder,
75
- pressRetentionOffset,
76
- selectable,
77
- selectionColor,
78
- suppressHighlighting,
79
- style,
80
- ...restProps
81
- }: TextProps,
82
- forwardedRef,
83
- ) => {
84
- const _accessibilityLabel = ariaLabel ?? accessibilityLabel;
85
- const _accessibilityLevel = ariaLevel ?? accessibilityLevel; // Windows
86
- const _accessibilityPosInSet = ariaPosinset ?? accessibilityPosInSet; // Windows
87
- const _accessibilitySetSize = ariaSetsize ?? accessibilitySetSize; // Windows
88
-
89
- let _accessibilityState: ?TextProps['accessibilityState'] =
90
- accessibilityState;
91
- if (
92
- ariaBusy != null ||
93
- ariaChecked != null ||
94
- ariaDisabled != null ||
95
- ariaExpanded != null ||
96
- ariaSelected != null
97
- ) {
98
- if (_accessibilityState != null) {
99
- _accessibilityState = {
100
- busy: ariaBusy ?? _accessibilityState.busy,
101
- checked: ariaChecked ?? _accessibilityState.checked,
102
- disabled: ariaDisabled ?? _accessibilityState.disabled,
103
- expanded: ariaExpanded ?? _accessibilityState.expanded,
104
- selected: ariaSelected ?? _accessibilityState.selected,
105
- };
106
- } else {
107
- _accessibilityState = {
108
- busy: ariaBusy,
109
- checked: ariaChecked,
110
- disabled: ariaDisabled,
111
- expanded: ariaExpanded,
112
- selected: ariaSelected,
113
- };
114
- }
39
+ const Text: component(
40
+ ref: React.RefSetter<TextForwardRef>,
41
+ ...props: TextProps
42
+ ) = React.forwardRef(
43
+ (
44
+ {
45
+ accessible,
46
+ accessibilityLabel,
47
+ accessibilityLevel, // Windows
48
+ accessibilityPosInSet, // Windows
49
+ accessibilitySetSize, // Windows
50
+ accessibilityState,
51
+ allowFontScaling,
52
+ 'aria-busy': ariaBusy,
53
+ 'aria-checked': ariaChecked,
54
+ 'aria-disabled': ariaDisabled,
55
+ 'aria-expanded': ariaExpanded,
56
+ 'aria-multiselectable': ariaMultiselectable, // Windows
57
+ 'aria-required': ariaRequired, // Windows
58
+ 'aria-label': ariaLabel,
59
+ 'aria-level': ariaLevel, // Windows
60
+ 'aria-posinset': ariaPosinset, // Windows
61
+ 'aria-setsize': ariaSetsize, // Windows
62
+ 'aria-selected': ariaSelected,
63
+ children,
64
+ ellipsizeMode,
65
+ disabled,
66
+ id,
67
+ nativeID,
68
+ numberOfLines,
69
+ onLongPress,
70
+ onPress,
71
+ onPressIn,
72
+ onPressOut,
73
+ onResponderGrant,
74
+ onResponderMove,
75
+ onResponderRelease,
76
+ onResponderTerminate,
77
+ onResponderTerminationRequest,
78
+ onStartShouldSetResponder,
79
+ pressRetentionOffset,
80
+ selectable,
81
+ selectionColor,
82
+ suppressHighlighting,
83
+ style,
84
+ ...restProps
85
+ }: TextProps,
86
+ forwardedRef,
87
+ ) => {
88
+ const _accessibilityLabel = ariaLabel ?? accessibilityLabel;
89
+ const _accessibilityLevel = ariaLevel ?? accessibilityLevel; // Windows
90
+ const _accessibilityPosInSet = ariaPosinset ?? accessibilityPosInSet; // Windows
91
+ const _accessibilitySetSize = ariaSetsize ?? accessibilitySetSize; // Windows
92
+
93
+ let _accessibilityState: ?TextProps['accessibilityState'] =
94
+ accessibilityState;
95
+ if (
96
+ ariaBusy != null ||
97
+ ariaChecked != null ||
98
+ ariaDisabled != null ||
99
+ ariaExpanded != null ||
100
+ ariaSelected != null ||
101
+ ariaMultiselectable != null || // Windows
102
+ ariaRequired != null // Windows
103
+ ) {
104
+ if (_accessibilityState != null) {
105
+ _accessibilityState = {
106
+ busy: ariaBusy ?? _accessibilityState.busy,
107
+ checked: ariaChecked ?? _accessibilityState.checked,
108
+ disabled: ariaDisabled ?? _accessibilityState.disabled,
109
+ expanded: ariaExpanded ?? _accessibilityState.expanded,
110
+ selected: ariaSelected ?? _accessibilityState.selected,
111
+ multiselectable:
112
+ ariaMultiselectable ?? _accessibilityState.multiselectable, // Windows
113
+ required: ariaRequired ?? _accessibilityState.required, // Windows
114
+ };
115
+ } else {
116
+ _accessibilityState = {
117
+ busy: ariaBusy,
118
+ checked: ariaChecked,
119
+ disabled: ariaDisabled,
120
+ expanded: ariaExpanded,
121
+ selected: ariaSelected,
122
+ multiselectable: ariaMultiselectable, // Windows
123
+ required: ariaRequired, // Windows
124
+ };
115
125
  }
126
+ }
116
127
 
117
- const _accessibilityStateDisabled = _accessibilityState?.disabled;
118
- const _disabled = disabled ?? _accessibilityStateDisabled;
128
+ const _accessibilityStateDisabled = _accessibilityState?.disabled;
129
+ const _disabled = disabled ?? _accessibilityStateDisabled;
119
130
 
120
- const isPressable =
121
- (onPress != null ||
122
- onLongPress != null ||
123
- onStartShouldSetResponder != null) &&
124
- _disabled !== true;
131
+ const isPressable =
132
+ (onPress != null ||
133
+ onLongPress != null ||
134
+ onStartShouldSetResponder != null) &&
135
+ _disabled !== true;
125
136
 
126
- // TODO: Move this processing to the view configuration.
127
- const _selectionColor =
128
- selectionColor == null ? null : processColor(selectionColor);
137
+ // TODO: Move this processing to the view configuration.
138
+ const _selectionColor =
139
+ selectionColor != null ? processColor(selectionColor) : undefined;
129
140
 
130
- let _style = style;
131
- if (__DEV__) {
132
- if (PressabilityDebug.isEnabled() && onPress != null) {
133
- _style = [style, {color: 'magenta'}];
134
- }
141
+ let _style = style;
142
+ if (__DEV__) {
143
+ if (PressabilityDebug.isEnabled() && onPress != null) {
144
+ _style = [style, {color: 'magenta'}];
135
145
  }
146
+ }
136
147
 
137
- let _numberOfLines = numberOfLines;
138
- if (_numberOfLines != null && !(_numberOfLines >= 0)) {
139
- if (__DEV__) {
140
- console.error(
141
- `'numberOfLines' in <Text> must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`,
142
- );
143
- }
144
- _numberOfLines = 0;
148
+ let _numberOfLines = numberOfLines;
149
+ if (_numberOfLines != null && !(_numberOfLines >= 0)) {
150
+ if (__DEV__) {
151
+ console.error(
152
+ `'numberOfLines' in <Text> must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`,
153
+ );
145
154
  }
155
+ _numberOfLines = 0;
156
+ }
146
157
 
147
- let _selectable = selectable;
148
-
149
- let processedStyle = flattenStyle<TextStyleProp>(_style);
150
- if (processedStyle != null) {
151
- let overrides: ?{...TextStyleInternal} = null;
152
- if (typeof processedStyle.fontWeight === 'number') {
153
- overrides = overrides || ({}: {...TextStyleInternal});
154
- overrides.fontWeight =
155
- // $FlowFixMe[incompatible-cast]
156
- (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']);
157
- }
158
-
159
- if (processedStyle.userSelect != null) {
160
- _selectable = userSelectToSelectableMap[processedStyle.userSelect];
161
- overrides = overrides || ({}: {...TextStyleInternal});
162
- overrides.userSelect = undefined;
163
- }
164
-
165
- if (processedStyle.verticalAlign != null) {
166
- overrides = overrides || ({}: {...TextStyleInternal});
167
- overrides.textAlignVertical =
168
- verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign];
169
- overrides.verticalAlign = undefined;
170
- }
158
+ let _selectable = selectable;
171
159
 
172
- if (overrides != null) {
173
- // $FlowFixMe[incompatible-type]
174
- _style = [_style, overrides];
175
- }
160
+ let processedStyle = flattenStyle<TextStyleProp>(_style);
161
+ if (processedStyle != null) {
162
+ let overrides: ?{...TextStyleInternal} = null;
163
+ if (typeof processedStyle.fontWeight === 'number') {
164
+ overrides = overrides || ({}: {...TextStyleInternal});
165
+ overrides.fontWeight =
166
+ // $FlowFixMe[incompatible-cast]
167
+ (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']);
176
168
  }
177
169
 
178
- const _nativeID = id ?? nativeID;
179
-
180
- const hasTextAncestor = useContext(TextAncestor);
181
- if (hasTextAncestor) {
182
- if (isPressable) {
183
- return (
184
- <NativePressableVirtualText
185
- ref={forwardedRef}
186
- textProps={{
187
- ...restProps,
188
- accessibilityLabel: _accessibilityLabel,
189
- accessibilityState: _accessibilityState,
190
- accessibilityLevel: _accessibilityLevel, // Windows
191
- accessibilityPosInSet: _accessibilityPosInSet, // Windows
192
- accessibilitySetSize: _accessibilitySetSize, // Windows
193
- nativeID: _nativeID,
194
- numberOfLines: _numberOfLines,
195
- selectable: _selectable,
196
- selectionColor: _selectionColor,
197
- style: _style,
198
- disabled: disabled,
199
- children,
200
- }}
201
- textPressabilityProps={{
202
- onLongPress,
203
- onPress,
204
- onPressIn,
205
- onPressOut,
206
- onResponderGrant,
207
- onResponderMove,
208
- onResponderRelease,
209
- onResponderTerminate,
210
- onResponderTerminationRequest,
211
- onStartShouldSetResponder,
212
- pressRetentionOffset,
213
- suppressHighlighting,
214
- }}
215
- />
216
- );
217
- }
170
+ if (processedStyle.userSelect != null) {
171
+ _selectable = userSelectToSelectableMap[processedStyle.userSelect];
172
+ overrides = overrides || ({}: {...TextStyleInternal});
173
+ overrides.userSelect = undefined;
174
+ }
218
175
 
219
- return (
220
- <NativeVirtualText
221
- {...restProps}
222
- accessibilityLabel={_accessibilityLabel}
223
- accessibilityState={_accessibilityState}
224
- accessibilityLevel={_accessibilityLevel} // Windows
225
- accessibilityPosInSet={_accessibilityPosInSet} // Windows
226
- accessibilitySetSize={_accessibilitySetSize} // Windows
227
- isHighlighted={false}
228
- isPressable={false}
229
- nativeID={_nativeID}
230
- numberOfLines={_numberOfLines}
231
- ref={forwardedRef}
232
- selectable={_selectable}
233
- selectionColor={_selectionColor}
234
- style={_style}
235
- disabled={disabled}>
236
- {children}
237
- </NativeVirtualText>
238
- );
176
+ if (processedStyle.verticalAlign != null) {
177
+ overrides = overrides || ({}: {...TextStyleInternal});
178
+ overrides.textAlignVertical =
179
+ verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign];
180
+ overrides.verticalAlign = undefined;
239
181
  }
240
182
 
241
- // If the disabled prop and accessibilityState.disabled are out of sync but not both in
242
- // falsy states we need to update the accessibilityState object to use the disabled prop.
243
- if (
244
- _disabled !== _accessibilityStateDisabled &&
245
- ((_disabled != null && _disabled !== false) ||
246
- (_accessibilityStateDisabled != null &&
247
- _accessibilityStateDisabled !== false))
248
- ) {
249
- _accessibilityState = {..._accessibilityState, disabled: _disabled};
183
+ if (overrides != null) {
184
+ // $FlowFixMe[incompatible-type]
185
+ _style = [_style, overrides];
250
186
  }
187
+ }
251
188
 
252
- const _accessible = Platform.select({
253
- ios: accessible !== false,
254
- android:
255
- accessible == null
256
- ? onPress != null || onLongPress != null
257
- : accessible,
258
- default: accessible !== false, // [Windows]
259
- });
189
+ const _nativeID = id ?? nativeID;
260
190
 
261
- let nativeText = null;
191
+ const hasTextAncestor = useContext(TextAncestor);
192
+ if (hasTextAncestor) {
262
193
  if (isPressable) {
263
- nativeText = (
264
- <NativePressableText
194
+ return (
195
+ <NativePressableVirtualText
265
196
  ref={forwardedRef}
266
197
  textProps={{
267
198
  ...restProps,
@@ -270,15 +201,12 @@ const Text: React.AbstractComponent<TextProps, TextForwardRef> =
270
201
  accessibilityLevel: _accessibilityLevel, // Windows
271
202
  accessibilityPosInSet: _accessibilityPosInSet, // Windows
272
203
  accessibilitySetSize: _accessibilitySetSize, // Windows
273
- accessible: _accessible,
274
- allowFontScaling: allowFontScaling !== false,
275
- disabled: _disabled,
276
- ellipsizeMode: ellipsizeMode ?? 'tail',
277
204
  nativeID: _nativeID,
278
205
  numberOfLines: _numberOfLines,
279
206
  selectable: _selectable,
280
207
  selectionColor: _selectionColor,
281
208
  style: _style,
209
+ disabled: disabled,
282
210
  children,
283
211
  }}
284
212
  textPressabilityProps={{
@@ -297,88 +225,166 @@ const Text: React.AbstractComponent<TextProps, TextForwardRef> =
297
225
  }}
298
226
  />
299
227
  );
300
- } else {
301
- nativeText = (
302
- <NativeText
303
- {...restProps}
304
- accessibilityLabel={_accessibilityLabel}
305
- accessibilityState={_accessibilityState}
306
- accessibilityLevel={_accessibilityLevel} // Windows
307
- accessibilityPosInSet={_accessibilityPosInSet} // Windows
308
- accessibilitySetSize={_accessibilitySetSize} // Windows
309
- accessible={_accessible}
310
- allowFontScaling={allowFontScaling !== false}
311
- disabled={_disabled}
312
- ellipsizeMode={ellipsizeMode ?? 'tail'}
313
- isHighlighted={false}
314
- nativeID={_nativeID}
315
- numberOfLines={_numberOfLines}
316
- ref={forwardedRef}
317
- selectable={_selectable}
318
- selectionColor={_selectionColor}
319
- style={_style}>
320
- {children}
321
- </NativeText>
322
- );
323
228
  }
324
229
 
325
- // [Windows
326
- // $FlowFixMe[unclear-type]
327
- let styleProps: ViewStyleProp = (processedStyle: any); // Flow style type casting
328
- if (
329
- global.RN$Bridgeless !== true && // [Windows] Fabric text handles borders, but on paper we need to wrap it in an extra view
330
- styleProps &&
331
- styleProps.borderColor != null &&
332
- (styleProps.borderWidth != null ||
333
- styleProps.borderBottomWidth != null ||
334
- styleProps.borderEndWidth != null ||
335
- styleProps.borderLeftWidth != null ||
336
- styleProps.borderRightWidth != null ||
337
- styleProps.borderStartWidth != null ||
338
- styleProps.borderTopWidth != null)
339
- ) {
340
- return (
341
- <View style={styleProps}>
342
- <TextAncestor.Provider value={true}>
343
- {nativeText}
344
- </TextAncestor.Provider>
345
- </View>
346
- );
347
- }
348
- // Windows]
230
+ return (
231
+ <NativeVirtualText
232
+ {...restProps}
233
+ accessibilityLabel={_accessibilityLabel}
234
+ accessibilityState={_accessibilityState}
235
+ accessibilityLevel={_accessibilityLevel} // Windows
236
+ accessibilityPosInSet={_accessibilityPosInSet} // Windows
237
+ accessibilitySetSize={_accessibilitySetSize} // Windows
238
+ nativeID={_nativeID}
239
+ numberOfLines={_numberOfLines}
240
+ ref={forwardedRef}
241
+ selectable={_selectable}
242
+ selectionColor={_selectionColor}
243
+ style={_style}
244
+ disabled={disabled}>
245
+ {children}
246
+ </NativeVirtualText>
247
+ );
248
+ }
349
249
 
350
- if (children == null) {
351
- return nativeText;
352
- }
250
+ // If the disabled prop and accessibilityState.disabled are out of sync but not both in
251
+ // falsy states we need to update the accessibilityState object to use the disabled prop.
252
+ if (
253
+ _disabled !== _accessibilityStateDisabled &&
254
+ ((_disabled != null && _disabled !== false) ||
255
+ (_accessibilityStateDisabled != null &&
256
+ _accessibilityStateDisabled !== false))
257
+ ) {
258
+ _accessibilityState = {..._accessibilityState, disabled: _disabled};
259
+ }
353
260
 
354
- // If the children do not contain a JSX element it would not be possible to have a
355
- // nested `Text` component so we can skip adding the `TextAncestor` context wrapper
356
- // which has a performance overhead. Since we do this for performance reasons we need
357
- // to keep the check simple to avoid regressing overall perf. For this reason the
358
- // `children.length` constant is set to `3`, this should be a reasonable tradeoff
359
- // to capture the majority of `Text` uses but also not make this check too expensive.
360
- /*
361
- if (Array.isArray(children) && children.length <= 3) {
362
- let hasNonTextChild = false;
363
- for (let child of children) {
364
- if (child != null && typeof child === 'object') {
365
- hasNonTextChild = true;
366
- break;
367
- }
368
- }
369
- if (!hasNonTextChild) {
370
- return nativeText;
261
+ const _accessible = Platform.select({
262
+ ios: accessible !== false,
263
+ android:
264
+ accessible == null
265
+ ? onPress != null || onLongPress != null
266
+ : accessible,
267
+ default: accessible !== false, // [Windows #13996 - default value is accessible !== false]
268
+ });
269
+
270
+ let nativeText = null;
271
+ if (isPressable) {
272
+ nativeText = (
273
+ <NativePressableText
274
+ ref={forwardedRef}
275
+ textProps={{
276
+ ...restProps,
277
+ accessibilityLabel: _accessibilityLabel,
278
+ accessibilityState: _accessibilityState,
279
+ accessibilityLevel: _accessibilityLevel, // Windows
280
+ accessibilityPosInSet: _accessibilityPosInSet, // Windows
281
+ accessibilitySetSize: _accessibilitySetSize, // Windows
282
+ accessible: _accessible,
283
+ allowFontScaling: allowFontScaling !== false,
284
+ disabled: _disabled,
285
+ ellipsizeMode: ellipsizeMode ?? 'tail',
286
+ nativeID: _nativeID,
287
+ numberOfLines: _numberOfLines,
288
+ selectable: _selectable,
289
+ selectionColor: _selectionColor,
290
+ style: _style,
291
+ children,
292
+ }}
293
+ textPressabilityProps={{
294
+ onLongPress,
295
+ onPress,
296
+ onPressIn,
297
+ onPressOut,
298
+ onResponderGrant,
299
+ onResponderMove,
300
+ onResponderRelease,
301
+ onResponderTerminate,
302
+ onResponderTerminationRequest,
303
+ onStartShouldSetResponder,
304
+ pressRetentionOffset,
305
+ suppressHighlighting,
306
+ }}
307
+ />
308
+ );
309
+ } else {
310
+ nativeText = (
311
+ <NativeText
312
+ {...restProps}
313
+ accessibilityLabel={_accessibilityLabel}
314
+ accessibilityState={_accessibilityState}
315
+ accessibilityLevel={_accessibilityLevel} // Windows
316
+ accessibilityPosInSet={_accessibilityPosInSet} // Windows
317
+ accessibilitySetSize={_accessibilitySetSize} // Windows
318
+ accessible={_accessible}
319
+ allowFontScaling={allowFontScaling !== false}
320
+ disabled={_disabled}
321
+ ellipsizeMode={ellipsizeMode ?? 'tail'}
322
+ nativeID={_nativeID}
323
+ numberOfLines={_numberOfLines}
324
+ ref={forwardedRef}
325
+ selectable={_selectable}
326
+ selectionColor={_selectionColor}
327
+ style={_style}>
328
+ {children}
329
+ </NativeText>
330
+ );
331
+ }
332
+
333
+ // [Windows
334
+ // $FlowFixMe[unclear-type]
335
+ let styleProps: ViewStyleProp = (style: any); // Flow style type casting
336
+ if (
337
+ global.RN$Bridgeless !== true && // [Windows] Fabric text handles borders, but on paper we need to wrap it in an extra view
338
+ styleProps &&
339
+ styleProps.borderColor != null &&
340
+ (styleProps.borderWidth != null ||
341
+ styleProps.borderBottomWidth != null ||
342
+ styleProps.borderEndWidth != null ||
343
+ styleProps.borderLeftWidth != null ||
344
+ styleProps.borderRightWidth != null ||
345
+ styleProps.borderStartWidth != null ||
346
+ styleProps.borderTopWidth != null)
347
+ ) {
348
+ return (
349
+ <View style={styleProps}>
350
+ <TextAncestor.Provider value={true}>
351
+ {nativeText}
352
+ </TextAncestor.Provider>
353
+ </View>
354
+ );
355
+ }
356
+ // Windows]
357
+
358
+ if (children == null) {
359
+ return nativeText;
360
+ }
361
+
362
+ // If the children do not contain a JSX element it would not be possible to have a
363
+ // nested `Text` component so we can skip adding the `TextAncestor` context wrapper
364
+ // which has a performance overhead. Since we do this for performance reasons we need
365
+ // to keep the check simple to avoid regressing overall perf. For this reason the
366
+ // `children.length` constant is set to `3`, this should be a reasonable tradeoff
367
+ // to capture the majority of `Text` uses but also not make this check too expensive.
368
+ if (Array.isArray(children) && children.length <= 3) {
369
+ let hasNonTextChild = false;
370
+ for (let child of children) {
371
+ if (child != null && typeof child === 'object') {
372
+ hasNonTextChild = true;
373
+ break;
371
374
  }
375
+ }
376
+ if (!hasNonTextChild) {
377
+ return nativeText;
372
378
  } else if (typeof children !== 'object') {
373
379
  return nativeText;
374
380
  }
375
- */
381
+ }
376
382
 
377
- return (
378
- <TextAncestor.Provider value={true}>{nativeText}</TextAncestor.Provider>
379
- );
380
- },
381
- );
383
+ return (
384
+ <TextAncestor.Provider value={true}>{nativeText}</TextAncestor.Provider>
385
+ );
386
+ },
387
+ );
382
388
 
383
389
  Text.displayName = 'Text';
384
390
 
@@ -527,10 +533,10 @@ type NativePressableTextProps = $ReadOnly<{
527
533
  * This logic is split out from the main Text component to enable the more
528
534
  * expensive pressability logic to be only initialized when needed.
529
535
  */
530
- const NativePressableVirtualText: React.AbstractComponent<
531
- NativePressableTextProps,
532
- TextForwardRef,
533
- > = React.forwardRef(({textProps, textPressabilityProps}, forwardedRef) => {
536
+ const NativePressableVirtualText: component(
537
+ ref: React.RefSetter<TextForwardRef>,
538
+ ...props: NativePressableTextProps
539
+ ) = React.forwardRef(({textProps, textPressabilityProps}, forwardedRef) => {
534
540
  const [isHighlighted, eventHandlersForText] = useTextPressability(
535
541
  textPressabilityProps,
536
542
  );
@@ -552,10 +558,10 @@ const NativePressableVirtualText: React.AbstractComponent<
552
558
  * This logic is split out from the main Text component to enable the more
553
559
  * expensive pressability logic to be only initialized when needed.
554
560
  */
555
- const NativePressableText: React.AbstractComponent<
556
- NativePressableTextProps,
557
- TextForwardRef,
558
- > = React.forwardRef(({textProps, textPressabilityProps}, forwardedRef) => {
561
+ const NativePressableText: component(
562
+ ref: React.RefSetter<TextForwardRef>,
563
+ ...props: NativePressableTextProps
564
+ ) = React.forwardRef(({textProps, textPressabilityProps}, forwardedRef) => {
559
565
  const [isHighlighted, eventHandlersForText] = useTextPressability(
560
566
  textPressabilityProps,
561
567
  );
@@ -16,7 +16,6 @@ import type {TextProps} from './TextProps';
16
16
  import {createViewConfig} from '../NativeComponent/ViewConfig';
17
17
  import UIManager from '../ReactNative/UIManager';
18
18
  import createReactNativeComponentClass from '../Renderer/shims/createReactNativeComponentClass';
19
- import Platform from '../Utilities/Platform';
20
19
 
21
20
  export type NativeTextProps = $ReadOnly<{
22
21
  ...TextProps,