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
@@ -0,0 +1,371 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ import type {PressEvent} from '../../Types/CoreEventTypes';
12
+ import typeof TouchableWithoutFeedback from './TouchableWithoutFeedback';
13
+
14
+ import View from '../../Components/View/View';
15
+ import Pressability, {
16
+ type PressabilityConfig,
17
+ } from '../../Pressability/Pressability';
18
+ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
19
+ import {findHostInstance_DEPRECATED} from '../../ReactNative/RendererProxy';
20
+ import processColor from '../../StyleSheet/processColor';
21
+ import Platform from '../../Utilities/Platform';
22
+ import {Commands} from '../View/ViewNativeComponent';
23
+ import invariant from 'invariant';
24
+ import * as React from 'react';
25
+
26
+ type Props = $ReadOnly<{|
27
+ ...React.ElementConfig<TouchableWithoutFeedback>,
28
+
29
+ /**
30
+ * Determines the type of background drawable that's going to be used to
31
+ * display feedback. It takes an object with `type` property and extra data
32
+ * depending on the `type`. It's recommended to use one of the static
33
+ * methods to generate that dictionary.
34
+ */
35
+ background?: ?(
36
+ | $ReadOnly<{|
37
+ type: 'ThemeAttrAndroid',
38
+ attribute:
39
+ | 'selectableItemBackground'
40
+ | 'selectableItemBackgroundBorderless',
41
+ rippleRadius: ?number,
42
+ |}>
43
+ | $ReadOnly<{|
44
+ type: 'RippleAndroid',
45
+ color: ?number,
46
+ borderless: boolean,
47
+ rippleRadius: ?number,
48
+ |}>
49
+ ),
50
+
51
+ /**
52
+ * TV preferred focus (see documentation for the View component).
53
+ */
54
+ hasTVPreferredFocus?: ?boolean,
55
+
56
+ /**
57
+ * TV next focus down (see documentation for the View component).
58
+ */
59
+ nextFocusDown?: ?number,
60
+
61
+ /**
62
+ * TV next focus forward (see documentation for the View component).
63
+ */
64
+ nextFocusForward?: ?number,
65
+
66
+ /**
67
+ * TV next focus left (see documentation for the View component).
68
+ */
69
+ nextFocusLeft?: ?number,
70
+
71
+ /**
72
+ * TV next focus right (see documentation for the View component).
73
+ */
74
+ nextFocusRight?: ?number,
75
+
76
+ /**
77
+ * TV next focus up (see documentation for the View component).
78
+ */
79
+ nextFocusUp?: ?number,
80
+
81
+ /**
82
+ * Set to true to add the ripple effect to the foreground of the view, instead
83
+ * of the background. This is useful if one of your child views has a
84
+ * background of its own, or you're e.g. displaying images, and you don't want
85
+ * the ripple to be covered by them.
86
+ *
87
+ * Check TouchableNativeFeedback.canUseNativeForeground() first, as this is
88
+ * only available on Android 6.0 and above. If you try to use this on older
89
+ * versions, this will fallback to background.
90
+ */
91
+ useForeground?: ?boolean,
92
+ |}>;
93
+
94
+ type State = $ReadOnly<{|
95
+ pressability: Pressability,
96
+ |}>;
97
+
98
+ class TouchableNativeFeedback extends React.Component<Props, State> {
99
+ /**
100
+ * Creates a value for the `background` prop that uses the Android theme's
101
+ * default background for selectable elements.
102
+ */
103
+ static SelectableBackground: (rippleRadius: ?number) => $ReadOnly<{|
104
+ attribute: 'selectableItemBackground',
105
+ type: 'ThemeAttrAndroid',
106
+ rippleRadius: ?number,
107
+ |}> = (rippleRadius: ?number) => ({
108
+ type: 'ThemeAttrAndroid',
109
+ attribute: 'selectableItemBackground',
110
+ rippleRadius,
111
+ });
112
+
113
+ /**
114
+ * Creates a value for the `background` prop that uses the Android theme's
115
+ * default background for borderless selectable elements. Requires API 21+.
116
+ */
117
+ static SelectableBackgroundBorderless: (rippleRadius: ?number) => $ReadOnly<{|
118
+ attribute: 'selectableItemBackgroundBorderless',
119
+ type: 'ThemeAttrAndroid',
120
+ rippleRadius: ?number,
121
+ |}> = (rippleRadius: ?number) => ({
122
+ type: 'ThemeAttrAndroid',
123
+ attribute: 'selectableItemBackgroundBorderless',
124
+ rippleRadius,
125
+ });
126
+
127
+ /**
128
+ * Creates a value for the `background` prop that uses the Android ripple with
129
+ * the supplied color. If `borderless` is true, the ripple will render outside
130
+ * of the view bounds. Requires API 21+.
131
+ */
132
+ static Ripple: (
133
+ color: string,
134
+ borderless: boolean,
135
+ rippleRadius: ?number,
136
+ ) => $ReadOnly<{|
137
+ borderless: boolean,
138
+ color: ?number,
139
+ rippleRadius: ?number,
140
+ type: 'RippleAndroid',
141
+ |}> = (color: string, borderless: boolean, rippleRadius: ?number) => {
142
+ const processedColor = processColor(color);
143
+ invariant(
144
+ processedColor == null || typeof processedColor === 'number',
145
+ 'Unexpected color given for Ripple color',
146
+ );
147
+ return {
148
+ type: 'RippleAndroid',
149
+ // $FlowFixMe[incompatible-type]
150
+ color: processedColor,
151
+ borderless,
152
+ rippleRadius,
153
+ };
154
+ };
155
+
156
+ /**
157
+ * Whether `useForeground` is supported.
158
+ */
159
+ static canUseNativeForeground: () => boolean = () =>
160
+ Platform.OS === 'android';
161
+
162
+ state: State = {
163
+ pressability: new Pressability(this._createPressabilityConfig()),
164
+ };
165
+
166
+ _createPressabilityConfig(): PressabilityConfig {
167
+ const accessibilityStateDisabled =
168
+ this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled;
169
+ return {
170
+ cancelable: !this.props.rejectResponderTermination,
171
+ disabled:
172
+ this.props.disabled != null
173
+ ? this.props.disabled
174
+ : accessibilityStateDisabled,
175
+ hitSlop: this.props.hitSlop,
176
+ delayLongPress: this.props.delayLongPress,
177
+ delayPressIn: this.props.delayPressIn,
178
+ delayPressOut: this.props.delayPressOut,
179
+ minPressDuration: 0,
180
+ pressRectOffset: this.props.pressRetentionOffset,
181
+ android_disableSound: this.props.touchSoundDisabled,
182
+ onLongPress: this.props.onLongPress,
183
+ onPress: this.props.onPress,
184
+ onPressIn: event => {
185
+ if (Platform.OS === 'android') {
186
+ this._dispatchHotspotUpdate(event);
187
+ this._dispatchPressedStateChange(true);
188
+ }
189
+ if (this.props.onPressIn != null) {
190
+ this.props.onPressIn(event);
191
+ }
192
+ },
193
+ onPressMove: event => {
194
+ if (Platform.OS === 'android') {
195
+ this._dispatchHotspotUpdate(event);
196
+ }
197
+ },
198
+ onPressOut: event => {
199
+ if (Platform.OS === 'android') {
200
+ this._dispatchPressedStateChange(false);
201
+ }
202
+ if (this.props.onPressOut != null) {
203
+ this.props.onPressOut(event);
204
+ }
205
+ },
206
+ };
207
+ }
208
+
209
+ _dispatchPressedStateChange(pressed: boolean): void {
210
+ if (Platform.OS === 'android') {
211
+ const hostComponentRef = findHostInstance_DEPRECATED(this);
212
+ if (hostComponentRef == null) {
213
+ console.warn(
214
+ 'Touchable: Unable to find HostComponent instance. ' +
215
+ 'Has your Touchable component been unmounted?',
216
+ );
217
+ } else {
218
+ Commands.setPressed(hostComponentRef, pressed);
219
+ }
220
+ }
221
+ }
222
+
223
+ _dispatchHotspotUpdate(event: PressEvent): void {
224
+ if (Platform.OS === 'android') {
225
+ const {locationX, locationY} = event.nativeEvent;
226
+ const hostComponentRef = findHostInstance_DEPRECATED(this);
227
+ if (hostComponentRef == null) {
228
+ console.warn(
229
+ 'Touchable: Unable to find HostComponent instance. ' +
230
+ 'Has your Touchable component been unmounted?',
231
+ );
232
+ } else {
233
+ Commands.hotspotUpdate(
234
+ hostComponentRef,
235
+ locationX ?? 0,
236
+ locationY ?? 0,
237
+ );
238
+ }
239
+ }
240
+ }
241
+
242
+ render(): React.Node {
243
+ const element = React.Children.only<$FlowFixMe>(this.props.children);
244
+ const children: Array<React.Node> = [element.props.children];
245
+ if (__DEV__) {
246
+ if (element.type === View) {
247
+ children.push(
248
+ <PressabilityDebugView color="brown" hitSlop={this.props.hitSlop} />,
249
+ );
250
+ }
251
+ }
252
+
253
+ // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
254
+ // adopting `Pressability`, so preserve that behavior.
255
+ const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =
256
+ this.state.pressability.getEventHandlers();
257
+
258
+ let _accessibilityState = {
259
+ busy: this.props['aria-busy'] ?? this.props.accessibilityState?.busy,
260
+ checked:
261
+ this.props['aria-checked'] ?? this.props.accessibilityState?.checked,
262
+ disabled:
263
+ this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,
264
+ expanded:
265
+ this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,
266
+ selected:
267
+ this.props['aria-selected'] ?? this.props.accessibilityState?.selected,
268
+ multiselectable:
269
+ this.props['aria-multiselectable'] ??
270
+ this.props.accessibilityState?.multiselectable, // Windows
271
+ required:
272
+ this.props['aria-required'] ?? this.props.accessibilityState?.required, // Windows
273
+ };
274
+
275
+ _accessibilityState =
276
+ this.props.disabled != null
277
+ ? {
278
+ ..._accessibilityState,
279
+ disabled: this.props.disabled,
280
+ }
281
+ : _accessibilityState;
282
+
283
+ const accessibilityValue = {
284
+ max: this.props['aria-valuemax'] ?? this.props.accessibilityValue?.max,
285
+ min: this.props['aria-valuemin'] ?? this.props.accessibilityValue?.min,
286
+ now: this.props['aria-valuenow'] ?? this.props.accessibilityValue?.now,
287
+ text: this.props['aria-valuetext'] ?? this.props.accessibilityValue?.text,
288
+ };
289
+
290
+ const accessibilityLiveRegion =
291
+ this.props['aria-live'] === 'off'
292
+ ? 'none'
293
+ : this.props['aria-live'] ?? this.props.accessibilityLiveRegion;
294
+
295
+ const accessibilityLabel =
296
+ this.props['aria-label'] ?? this.props.accessibilityLabel;
297
+ return React.cloneElement(
298
+ element,
299
+ {
300
+ ...eventHandlersWithoutBlurAndFocus,
301
+ ...getBackgroundProp(
302
+ this.props.background === undefined
303
+ ? TouchableNativeFeedback.SelectableBackground()
304
+ : this.props.background,
305
+ this.props.useForeground === true,
306
+ ),
307
+ accessible: this.props.accessible !== false,
308
+ accessibilityHint: this.props.accessibilityHint,
309
+ accessibilityLanguage: this.props.accessibilityLanguage,
310
+ accessibilityLabel: accessibilityLabel,
311
+ accessibilityRole: this.props.accessibilityRole,
312
+ accessibilityState: _accessibilityState,
313
+ accessibilityActions: this.props.accessibilityActions,
314
+ onAccessibilityAction: this.props.onAccessibilityAction,
315
+ accessibilityValue: accessibilityValue,
316
+ importantForAccessibility:
317
+ this.props['aria-hidden'] === true
318
+ ? 'no-hide-descendants'
319
+ : this.props.importantForAccessibility,
320
+ accessibilityViewIsModal:
321
+ this.props['aria-modal'] ?? this.props.accessibilityViewIsModal,
322
+ accessibilityLiveRegion: accessibilityLiveRegion,
323
+ accessibilityElementsHidden:
324
+ this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden,
325
+ hasTVPreferredFocus: this.props.hasTVPreferredFocus,
326
+ hitSlop: this.props.hitSlop,
327
+ focusable:
328
+ this.props.focusable !== false &&
329
+ this.props.onPress !== undefined &&
330
+ !this.props.disabled,
331
+ nativeID: this.props.id ?? this.props.nativeID,
332
+ nextFocusDown: this.props.nextFocusDown,
333
+ nextFocusForward: this.props.nextFocusForward,
334
+ nextFocusLeft: this.props.nextFocusLeft,
335
+ nextFocusRight: this.props.nextFocusRight,
336
+ nextFocusUp: this.props.nextFocusUp,
337
+ onLayout: this.props.onLayout,
338
+ testID: this.props.testID,
339
+ },
340
+ ...children,
341
+ );
342
+ }
343
+
344
+ componentDidUpdate(prevProps: Props, prevState: State) {
345
+ this.state.pressability.configure(this._createPressabilityConfig());
346
+ }
347
+
348
+ componentDidMount(): mixed {
349
+ this.state.pressability.configure(this._createPressabilityConfig());
350
+ }
351
+
352
+ componentWillUnmount(): void {
353
+ this.state.pressability.reset();
354
+ }
355
+ }
356
+
357
+ const getBackgroundProp =
358
+ Platform.OS === 'android'
359
+ ? /* $FlowFixMe[missing-local-annot] The type annotation(s) required by
360
+ * Flow's LTI update could not be added via codemod */
361
+ (background, useForeground: boolean) =>
362
+ useForeground && TouchableNativeFeedback.canUseNativeForeground()
363
+ ? {nativeForegroundAndroid: background}
364
+ : {nativeBackgroundAndroid: background}
365
+ : /* $FlowFixMe[missing-local-annot] The type annotation(s) required by
366
+ * Flow's LTI update could not be added via codemod */
367
+ (background, useForeground: boolean) => null;
368
+
369
+ TouchableNativeFeedback.displayName = 'TouchableNativeFeedback';
370
+
371
+ module.exports = TouchableNativeFeedback;
@@ -37,7 +37,7 @@ type Props = $ReadOnly<{|
37
37
  activeOpacity?: ?number,
38
38
  style?: ?ViewStyleProp,
39
39
 
40
- hostRef?: ?React.Ref<typeof Animated.View>,
40
+ hostRef?: ?React.RefSetter<React.ElementRef<typeof Animated.View>>,
41
41
  |}>;
42
42
 
43
43
  type State = $ReadOnly<{|
@@ -291,6 +291,7 @@ class TouchableOpacity extends React.Component<Props, State> {
291
291
  this.props.onPress !== undefined &&
292
292
  !this.props.disabled
293
293
  }
294
+ // $FlowFixMe[prop-missing]
294
295
  ref={this.props.hostRef}
295
296
  {...eventHandlersWithoutBlurAndFocus}>
296
297
  {this.props.children}
@@ -326,10 +327,10 @@ class TouchableOpacity extends React.Component<Props, State> {
326
327
  }
327
328
  }
328
329
 
329
- const Touchable: React.AbstractComponent<
330
- Props,
331
- React.ElementRef<typeof Animated.View>,
332
- > = React.forwardRef((props, ref) => (
330
+ const Touchable: component(
331
+ ref: React.RefSetter<React.ElementRef<typeof Animated.View>>,
332
+ ...props: Props
333
+ ) = React.forwardRef((props, ref) => (
333
334
  <TouchableOpacity {...props} hostRef={ref} />
334
335
  ));
335
336
 
@@ -37,7 +37,7 @@ type Props = $ReadOnly<{|
37
37
  activeOpacity?: ?number,
38
38
  style?: ?ViewStyleProp,
39
39
 
40
- hostRef?: ?React.Ref<typeof Animated.View>,
40
+ hostRef?: ?React.RefSetter<React.ElementRef<typeof Animated.View>>,
41
41
  |}>;
42
42
 
43
43
  type State = $ReadOnly<{|
@@ -235,6 +235,11 @@ class TouchableOpacity extends React.Component<Props, State> {
235
235
  this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,
236
236
  selected:
237
237
  this.props['aria-selected'] ?? this.props.accessibilityState?.selected,
238
+ multiselectable:
239
+ this.props['aria-multiselectable'] ??
240
+ this.props.accessibilityState?.multiselectable, // Windows
241
+ required:
242
+ this.props['aria-required'] ?? this.props.accessibilityState?.required, // Windows
238
243
  };
239
244
 
240
245
  _accessibilityState =
@@ -299,6 +304,7 @@ class TouchableOpacity extends React.Component<Props, State> {
299
304
  this.props.onPress !== undefined &&
300
305
  !this.props.disabled
301
306
  }
307
+ // $FlowFixMe[prop-missing]
302
308
  ref={this.props.hostRef}
303
309
  accessibilityPosInSet={this.props.accessibilityPosInSet} // [Windows]
304
310
  accessibilitySetSize={this.props.accessibilitySetSize} // [Windows]
@@ -341,10 +347,10 @@ class TouchableOpacity extends React.Component<Props, State> {
341
347
  }
342
348
  }
343
349
 
344
- const Touchable: React.AbstractComponent<
345
- Props,
346
- React.ElementRef<typeof Animated.View>,
347
- > = React.forwardRef((props, ref) => (
350
+ const Touchable: component(
351
+ ref: React.RefSetter<React.ElementRef<typeof Animated.View>>,
352
+ ...props: Props
353
+ ) = React.forwardRef((props, ref) => (
348
354
  <TouchableOpacity {...props} hostRef={ref} />
349
355
  ));
350
356
 
@@ -195,8 +195,7 @@ module.exports = function TouchableWithoutFeedback(props: Props): React.Node {
195
195
 
196
196
  // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
197
197
  // adopting `Pressability`, so preserve that behavior.
198
- const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =
199
- eventHandlers || {};
198
+ const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} = eventHandlers;
200
199
 
201
200
  const elementProps: {[string]: mixed, ...} = {
202
201
  ...eventHandlersWithoutBlurAndFocus,
@@ -59,6 +59,8 @@ type Props = $ReadOnly<{|
59
59
  'aria-disabled'?: ?boolean,
60
60
  'aria-expanded'?: ?boolean,
61
61
  'aria-selected'?: ?boolean,
62
+ 'aria-multiselectable'?: ?boolean, // Windows
63
+ 'aria-required'?: ?boolean, // Windows
62
64
  'aria-hidden'?: ?boolean,
63
65
  'aria-live'?: ?('polite' | 'assertive' | 'off'),
64
66
  'aria-label'?: ?Stringish,
@@ -91,7 +93,7 @@ type Props = $ReadOnly<{|
91
93
  onMouseLeave?: ?(event: MouseEvent) => void, // [Windows]
92
94
  tabIndex?: ?number, // [Windows]
93
95
  tooltip?: ?Stringish, // [Windows]
94
- hostRef?: ?React.Ref<typeof Animated.View>, // [Windows]
96
+ hostRef?: React.RefSetter<React.ElementRef<typeof Animated.View>>, // [Windows]
95
97
  |}>;
96
98
 
97
99
  const PASSTHROUGH_PROPS = [
@@ -128,6 +130,7 @@ const PASSTHROUGH_PROPS = [
128
130
  ];
129
131
 
130
132
  // Modify the function to accept the ref prop and forward it
133
+ // $FlowFixMe[prop-missing]
131
134
  const TouchableWithoutFeedback: React.AbstractComponent<
132
135
  Props,
133
136
  React.ElementRef<typeof Animated.View>,
@@ -221,12 +224,15 @@ const TouchableWithoutFeedback: React.AbstractComponent<
221
224
  disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,
222
225
  expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,
223
226
  selected: props['aria-selected'] ?? props.accessibilityState?.selected,
227
+ multiselectable:
228
+ props['aria-multiselectable'] ??
229
+ props.accessibilityState?.multiselectable, // Windows
230
+ required: props['aria-required'] ?? props.accessibilityState?.required, // Windows
224
231
  };
225
232
 
226
233
  // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
227
234
  // adopting `Pressability`, so preserve that behavior.
228
- const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =
229
- eventHandlers || {};
235
+ const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} = eventHandlers;
230
236
 
231
237
  const elementProps: {[string]: mixed, ...} = {
232
238
  ...eventHandlersWithoutBlurAndFocus,
@@ -36,6 +36,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
36
36
  borderRightWidth: true,
37
37
  borderStartWidth: true,
38
38
  borderTopWidth: true,
39
+ boxSizing: true,
39
40
  columnGap: true,
40
41
  borderWidth: true,
41
42
  bottom: true,
@@ -125,7 +126,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
125
126
  /**
126
127
  * MixBlendMode
127
128
  */
128
- experimental_mixBlendMode: true,
129
+ mixBlendMode: true,
129
130
 
130
131
  /**
131
132
  * Isolation
@@ -174,6 +175,10 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
174
175
  borderTopStartRadius: true,
175
176
  cursor: true,
176
177
  opacity: true,
178
+ outlineColor: colorAttributes,
179
+ outlineOffset: true,
180
+ outlineStyle: true,
181
+ outlineWidth: true,
177
182
  pointerEvents: true,
178
183
 
179
184
  /**
@@ -23,10 +23,10 @@ export type Props = ViewProps;
23
23
  *
24
24
  * @see https://reactnative.dev/docs/view
25
25
  */
26
- const View: React.AbstractComponent<
27
- ViewProps,
28
- React.ElementRef<typeof ViewNativeComponent>,
29
- > = React.forwardRef(
26
+ const View: component(
27
+ ref: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
28
+ ...props: ViewProps
29
+ ) = React.forwardRef(
30
30
  (
31
31
  {
32
32
  accessibilityElementsHidden,
@@ -57,10 +57,10 @@ const childrenWithImportantForAccessibility = children => {
57
57
  *
58
58
  * @see https://reactnative.dev/docs/view
59
59
  */
60
- const View: React.AbstractComponent<
61
- ViewProps,
62
- React.ElementRef<typeof ViewNativeComponent>,
63
- > = React.forwardRef(
60
+ const View: component(
61
+ ref: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
62
+ ...props: ViewProps
63
+ ) = React.forwardRef(
64
64
  (
65
65
  {
66
66
  accessibilityElementsHidden,
@@ -76,6 +76,8 @@ const View: React.AbstractComponent<
76
76
  'aria-checked': ariaChecked,
77
77
  'aria-disabled': ariaDisabled,
78
78
  'aria-expanded': ariaExpanded,
79
+ 'aria-multiselectable': ariaMultiselectable, // Windows
80
+ 'aria-required': ariaRequired, // Windows
79
81
  'aria-hidden': ariaHidden,
80
82
  'aria-label': ariaLabel,
81
83
  'aria-labelledby': ariaLabelledBy,
@@ -108,7 +110,9 @@ const View: React.AbstractComponent<
108
110
  ariaChecked != null ||
109
111
  ariaDisabled != null ||
110
112
  ariaExpanded != null ||
111
- ariaSelected != null
113
+ ariaSelected != null ||
114
+ ariaMultiselectable != null || // Windows
115
+ ariaRequired != null // Windows
112
116
  ) {
113
117
  _accessibilityState = {
114
118
  busy: ariaBusy ?? accessibilityState?.busy,
@@ -116,6 +120,9 @@ const View: React.AbstractComponent<
116
120
  disabled: ariaDisabled ?? accessibilityState?.disabled,
117
121
  expanded: ariaExpanded ?? accessibilityState?.expanded,
118
122
  selected: ariaSelected ?? accessibilityState?.selected,
123
+ multiselectable:
124
+ ariaMultiselectable ?? accessibilityState?.multiselectable, // Windows
125
+ required: ariaRequired ?? accessibilityState?.required, // Windows
119
126
  };
120
127
  }
121
128
  let _accessibilityValue;
@@ -183,6 +183,16 @@ export interface AccessibilityState {
183
183
  * When present, informs accessible tools the element is expanded or collapsed
184
184
  */
185
185
  expanded?: boolean | undefined;
186
+ /**
187
+ * When present, informs accessible tools the element can have multiple items selected
188
+ * @platform windows
189
+ */
190
+ multiselectable?: boolean | undefined;
191
+ /**
192
+ * When present, informs accessible tools the element requires selection
193
+ * @platform windows
194
+ */
195
+ required?: boolean | undefined;
186
196
  }
187
197
 
188
198
  export interface AccessibilityValue {
@@ -181,6 +181,8 @@ export type AccessibilityState = {
181
181
  checked?: ?boolean | 'mixed',
182
182
  busy?: ?boolean,
183
183
  expanded?: ?boolean,
184
+ multiselectable?: ?boolean, // Windows
185
+ required?: ?boolean, // Windows
184
186
  ...
185
187
  };
186
188