react-native-windows 0.79.2 → 0.80.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/.flowconfig +12 -3
  2. package/Directory.Build.props +5 -2
  3. package/Libraries/Alert/Alert.d.ts +4 -1
  4. package/Libraries/Alert/Alert.js +3 -0
  5. package/Libraries/Alert/Alert.windows.js +3 -0
  6. package/Libraries/Alert/RCTAlertManager.js +17 -0
  7. package/Libraries/Animated/Animated.js.flow +1 -3
  8. package/Libraries/Animated/AnimatedEvent.js +4 -3
  9. package/Libraries/Animated/AnimatedExports.js +2 -2
  10. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  11. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  12. package/Libraries/Animated/Easing.js +13 -15
  13. package/Libraries/Animated/animations/Animation.js +8 -4
  14. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  15. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  16. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  17. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  18. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  19. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  20. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  21. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  22. package/Libraries/AppState/AppState.js +7 -2
  23. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  24. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  25. package/Libraries/Blob/BlobManager.js +1 -0
  26. package/Libraries/Blob/FileReader.js +219 -8
  27. package/Libraries/Blob/URL.js +37 -12
  28. package/Libraries/Blob/URLSearchParams.js +106 -31
  29. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  30. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +1 -1
  32. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  33. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  34. package/Libraries/Components/Button.d.ts +3 -0
  35. package/Libraries/Components/Button.js +1 -1
  36. package/Libraries/Components/Button.windows.js +27 -1
  37. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  38. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  39. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  42. package/Libraries/Components/Flyout/Flyout.js +11 -0
  43. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  45. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  46. package/Libraries/Components/Popup/Popup.js +11 -0
  47. package/Libraries/Components/Pressable/Pressable.js +20 -4
  48. package/Libraries/Components/Pressable/Pressable.windows.js +20 -4
  49. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  50. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  51. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  52. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +1 -1
  53. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  54. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  55. package/Libraries/Components/ScrollView/ScrollView.windows.js +131 -122
  56. package/Libraries/Components/StaticRenderer.js +1 -1
  57. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  58. package/Libraries/Components/Switch/Switch.js +8 -4
  59. package/Libraries/Components/Switch/Switch.windows.js +17 -4
  60. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  61. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  62. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  63. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  64. package/Libraries/Components/TextInput/TextInput.flow.windows.js +1246 -0
  65. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  66. package/Libraries/Components/TextInput/TextInput.windows.js +104 -1092
  67. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  68. package/Libraries/Components/TextInput/TextInputState.windows.js +1 -1
  69. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +2 -1
  70. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  71. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  72. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  73. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  74. package/Libraries/Components/Touchable/Touchable.js +5 -5
  75. package/Libraries/Components/Touchable/Touchable.windows.js +5 -5
  76. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  77. package/Libraries/Components/Touchable/TouchableBounce.windows.js +14 -7
  78. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  79. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +10 -7
  80. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  81. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +6 -6
  82. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  83. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +13 -6
  84. package/Libraries/Components/View/View.js +18 -21
  85. package/Libraries/Components/View/View.windows.js +39 -41
  86. package/Libraries/Components/View/ViewAccessibility.d.ts +8 -0
  87. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  88. package/Libraries/Components/View/ViewAccessibility.windows.js +9 -1
  89. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  90. package/Libraries/Components/View/ViewPropTypes.windows.js +50 -2
  91. package/Libraries/Core/ReactNativeVersion.js +1 -1
  92. package/Libraries/Core/setUpReactDevTools.js +5 -5
  93. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  94. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  95. package/Libraries/Image/AssetSourceResolver.js +17 -4
  96. package/Libraries/Image/AssetSourceResolver.windows.js +17 -4
  97. package/Libraries/Image/Image.d.ts +26 -10
  98. package/Libraries/Image/Image.js +17 -0
  99. package/Libraries/Image/Image.js.flow +5 -5
  100. package/Libraries/Image/Image.windows.js +13 -1
  101. package/Libraries/Image/ImageBackground.js +2 -0
  102. package/Libraries/Image/ImageInjection.js +1 -1
  103. package/Libraries/Image/ImageProps.js +22 -17
  104. package/Libraries/Image/ImageSource.js +3 -1
  105. package/Libraries/Image/ImageSourceUtils.js +4 -2
  106. package/Libraries/Image/ImageTypes.flow.js +1 -1
  107. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  108. package/Libraries/Interaction/InteractionManager.js +1 -1
  109. package/Libraries/Interaction/PanResponder.js +3 -3
  110. package/Libraries/Interaction/TaskQueue.js +1 -0
  111. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  112. package/Libraries/Linking/Linking.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +2 -2
  114. package/Libraries/Lists/FlatList.js +8 -11
  115. package/Libraries/Lists/SectionList.js +39 -42
  116. package/Libraries/Lists/SectionListModern.js +25 -34
  117. package/Libraries/Lists/VirtualizedList.js +1 -0
  118. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  119. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  120. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  121. package/Libraries/Modal/Modal.js +33 -7
  122. package/Libraries/Modal/Modal.windows.js +33 -10
  123. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  124. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  125. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  126. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
  127. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  128. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  129. package/Libraries/Network/RCTNetworking.android.js +1 -1
  130. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  131. package/Libraries/Network/RCTNetworking.js +17 -0
  132. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  133. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  134. package/Libraries/Network/XMLHttpRequest.js +781 -10
  135. package/Libraries/Performance/Systrace.js +7 -7
  136. package/Libraries/Pressability/Pressability.js +1 -1
  137. package/Libraries/Pressability/Pressability.windows.js +1 -1
  138. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  139. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  140. package/Libraries/ReactNative/AppRegistry.js +2 -322
  141. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  142. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  143. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  144. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  145. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  146. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  147. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  148. package/Libraries/ReactNative/renderApplication.js +9 -0
  149. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  150. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  151. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  152. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  153. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  154. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  155. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  156. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  157. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  158. package/Libraries/Settings/Settings.ios.js +1 -0
  159. package/Libraries/Settings/Settings.js +13 -19
  160. package/Libraries/Settings/SettingsFallback.js +33 -0
  161. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  162. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  163. package/Libraries/StyleSheet/Rect.js +1 -0
  164. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  165. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  166. package/Libraries/StyleSheet/StyleSheetExports.js +210 -0
  167. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  168. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  169. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  170. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  171. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  172. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  173. package/Libraries/Text/Text.d.ts +2 -5
  174. package/Libraries/Text/Text.js +3 -3
  175. package/Libraries/Text/Text.windows.js +3 -3
  176. package/Libraries/Text/TextNativeComponent.js +0 -4
  177. package/Libraries/Text/TextProps.js +5 -33
  178. package/Libraries/Text/TextProps.windows.js +5 -32
  179. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  180. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  181. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  182. package/Libraries/Types/CoreEventTypes.js +1 -1
  183. package/Libraries/Types/CoreEventTypes.windows.js +1 -1
  184. package/Libraries/Utilities/Appearance.js +2 -0
  185. package/Libraries/Utilities/BackHandler.js +17 -0
  186. package/Libraries/Utilities/DeviceInfo.js +2 -0
  187. package/Libraries/Utilities/Dimensions.js +1 -1
  188. package/Libraries/Utilities/Platform.js +17 -0
  189. package/Libraries/Utilities/PlatformTypes.js +11 -3
  190. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  191. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  192. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  193. package/Libraries/WebSocket/WebSocket.js +313 -8
  194. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  195. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  196. package/Microsoft.ReactNative/CompositionSwitcher.idl +8 -0
  197. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +0 -6
  198. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +197 -1
  199. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +34 -4
  200. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +12 -0
  201. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +36 -33
  202. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +81 -0
  203. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +5 -0
  204. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +148 -14
  205. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +4 -0
  206. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +29 -0
  207. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +2 -0
  208. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +17 -34
  209. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +4 -0
  210. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
  211. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +16 -0
  212. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +1 -0
  213. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +9 -0
  214. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +1 -0
  215. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +4 -0
  216. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +34 -94
  217. package/Microsoft.ReactNative/Modules/SampleTurboModule.cpp +4 -0
  218. package/Microsoft.ReactNative/Modules/SampleTurboModule.h +3 -0
  219. package/Microsoft.ReactNative/TurboModulesProvider.h +1 -1
  220. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.h +1 -1
  221. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  222. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  223. package/PropertySheets/React.Cpp.props +4 -0
  224. package/README.md +2 -2
  225. package/ReactCommon/ReactCommon.vcxproj +9 -4
  226. package/ReactCommon/ReactCommon.vcxproj.filters +6 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +253 -0
  228. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +5 -2
  229. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +4 -8
  230. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +184 -0
  231. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +22 -0
  232. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +2 -4
  233. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +27 -0
  234. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +2 -1
  235. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +1 -1
  236. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +308 -0
  237. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/DynamicEventPayload.cpp +42 -0
  238. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +7 -51
  239. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +10 -5
  240. package/Scripts/creaternwapp.cmd +9 -3
  241. package/Shared/Shared.vcxitems +3 -2
  242. package/Shared/Shared.vcxitems.filters +2 -1
  243. package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
  244. package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
  245. package/codegen/NativePerformanceSpec.g.h +14 -0
  246. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +151 -127
  247. package/codegen/NativeSampleTurboModuleSpec.g.h +14 -8
  248. package/codegen/react/components/rnwcore/EventEmitters.cpp +48 -48
  249. package/codegen/rnwcoreJSI-generated.cpp +159 -129
  250. package/codegen/rnwcoreJSI.h +534 -408
  251. package/index.js +51 -331
  252. package/index.windows.js +70 -352
  253. package/interface.js +0 -4
  254. package/jest/resolver.js +31 -0
  255. package/jest/setup.js +6 -2
  256. package/package.json +29 -28
  257. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  258. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  259. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  260. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  261. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  262. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  263. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  264. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  265. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  266. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  267. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  268. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  269. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  270. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  271. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  272. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  273. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  274. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  275. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  276. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  277. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  278. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  279. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  280. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  281. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.windows.js +1 -1
  282. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  283. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  284. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  285. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  286. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +12 -1
  287. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  288. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  289. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  290. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  291. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  292. package/src/private/styles/composeStyles.js +12 -5
  293. package/src/private/types/HostComponent.js +1 -1
  294. package/src/private/types/HostInstance.js +67 -1
  295. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  296. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  297. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  298. package/src/private/webapis/performance/Performance.js +1 -3
  299. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  300. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  301. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  302. package/src/types/globals.d.ts +42 -0
  303. package/stubs/double-conversion/double-conversion.h +3 -1
  304. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +4 -0
  305. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +4 -0
  306. package/types/index.d.ts +6 -3
  307. package/types/public/ReactNativeTypes.d.ts +2 -2
  308. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  309. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  310. package/Libraries/Blob/FileReader_new.js +0 -231
  311. package/Libraries/Blob/FileReader_old.js +0 -186
  312. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  313. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  314. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  315. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  316. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  317. package/Libraries/Events/CustomEvent.js +0 -32
  318. package/Libraries/Events/EventPolyfill.js +0 -239
  319. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  320. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  321. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  322. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  323. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  324. package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +0 -30
  325. package/Libraries/NewAppScreen/components/Header.js +0 -77
  326. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  327. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  328. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  329. package/Libraries/NewAppScreen/components/ReloadInstructions.windows.js +0 -31
  330. package/Libraries/NewAppScreen/components/logo.png +0 -0
  331. package/Libraries/NewAppScreen/index.js +0 -25
  332. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  333. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  334. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  335. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  336. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  337. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  338. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  339. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  340. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  341. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  342. package/jest/__tests__/setup-test.js +0 -18
  343. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  344. package/src/private/utilities/ensureInstance.js +0 -21
  345. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  346. package/types/modules/LaunchScreen.d.ts +0 -18
  347. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  348. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -20,18 +20,17 @@ import type {
20
20
  } from '../../Types/CoreEventTypes';
21
21
  import type {EventSubscription} from '../../vendor/emitter/EventEmitter';
22
22
  import type {KeyboardEvent, KeyboardMetrics} from '../Keyboard/Keyboard';
23
- import typeof View from '../View/View';
24
23
  import type {ViewProps} from '../View/ViewPropTypes';
25
24
  import type {ScrollViewStickyHeaderProps} from './ScrollViewStickyHeader';
26
25
 
27
26
  import {
28
27
  HScrollContentViewNativeComponent,
29
28
  HScrollViewNativeComponent,
30
- } from '../../../src/private/components/HScrollViewNativeComponents';
29
+ } from '../../../src/private/components/scrollview/HScrollViewNativeComponents';
31
30
  import {
32
31
  VScrollContentViewNativeComponent,
33
32
  VScrollViewNativeComponent,
34
- } from '../../../src/private/components/VScrollViewNativeComponents';
33
+ } from '../../../src/private/components/scrollview/VScrollViewNativeComponents';
35
34
  import AnimatedImplementation from '../../Animated/AnimatedImplementation';
36
35
  import FrameRateLogger from '../../Interaction/FrameRateLogger';
37
36
  import {findNodeHandle} from '../../ReactNative/RendererProxy';
@@ -44,6 +43,7 @@ import dismissKeyboard from '../../Utilities/dismissKeyboard';
44
43
  import Platform from '../../Utilities/Platform';
45
44
  import Keyboard from '../Keyboard/Keyboard';
46
45
  import TextInputState from '../TextInput/TextInputState';
46
+ import View from '../View/View';
47
47
  import processDecelerationRate from './processDecelerationRate';
48
48
  import Commands from './ScrollViewCommands';
49
49
  import ScrollViewContext, {HORIZONTAL, VERTICAL} from './ScrollViewContext';
@@ -134,19 +134,33 @@ export interface ScrollViewScrollToOptions {
134
134
 
135
135
  // Public methods for ScrollView
136
136
  export interface ScrollViewImperativeMethods {
137
- +getScrollResponder: $PropertyType<ScrollView, 'getScrollResponder'>;
138
- +getScrollableNode: $PropertyType<ScrollView, 'getScrollableNode'>;
139
- +getInnerViewNode: $PropertyType<ScrollView, 'getInnerViewNode'>;
140
- +getInnerViewRef: $PropertyType<ScrollView, 'getInnerViewRef'>;
141
- +getNativeScrollRef: $PropertyType<ScrollView, 'getNativeScrollRef'>;
142
- +scrollTo: $PropertyType<ScrollView, 'scrollTo'>;
143
- +scrollToEnd: $PropertyType<ScrollView, 'scrollToEnd'>;
144
- +flashScrollIndicators: $PropertyType<ScrollView, 'flashScrollIndicators'>;
145
- +scrollResponderZoomTo: $PropertyType<ScrollView, 'scrollResponderZoomTo'>;
146
- +scrollResponderScrollNativeHandleToKeyboard: $PropertyType<
147
- ScrollView,
148
- 'scrollResponderScrollNativeHandleToKeyboard',
149
- >;
137
+ +getScrollResponder: () => ScrollResponderType;
138
+ +getScrollableNode: () => ?number;
139
+ +getInnerViewNode: () => ?number;
140
+ +getInnerViewRef: () => InnerViewInstance | null;
141
+ +getNativeScrollRef: () => HostInstance | null;
142
+ +scrollTo: (
143
+ options?: ScrollViewScrollToOptions | number,
144
+ deprecatedX?: number,
145
+ deprecatedAnimated?: boolean,
146
+ ) => void;
147
+ +scrollToEnd: (options?: ?ScrollViewScrollToOptions) => void;
148
+ +flashScrollIndicators: () => void;
149
+ +scrollResponderZoomTo: (
150
+ rect: {
151
+ x: number,
152
+ y: number,
153
+ width: number,
154
+ height: number,
155
+ animated?: boolean,
156
+ },
157
+ animated?: boolean, // deprecated, put this inside the rect argument instead
158
+ ) => void;
159
+ +scrollResponderScrollNativeHandleToKeyboard: (
160
+ nodeHandle: number | HostInstance,
161
+ additionalOffset?: number,
162
+ preventNegativeScrollOffset?: boolean,
163
+ ) => void;
150
164
  }
151
165
 
152
166
  export type DecelerationRateType = 'fast' | 'normal' | number;
@@ -156,7 +170,7 @@ export interface PublicScrollViewInstance
156
170
  extends HostInstance,
157
171
  ScrollViewImperativeMethods {}
158
172
 
159
- type InnerViewInstance = React.ElementRef<View>;
173
+ type InnerViewInstance = React.ElementRef<typeof View>;
160
174
 
161
175
  export type ScrollViewPropsIOS = $ReadOnly<{
162
176
  /**
@@ -303,7 +317,7 @@ export type ScrollViewPropsIOS = $ReadOnly<{
303
317
  /**
304
318
  * This property specifies how the safe area insets are used to modify the
305
319
  * content area of the scroll view. The default value of this property is
306
- * "never". Available on iOS 11 and later.
320
+ * "never".
307
321
  * @platform ios
308
322
  */
309
323
  contentInsetAdjustmentBehavior?: ?(
@@ -376,11 +390,7 @@ type StickyHeaderComponentType = component(
376
390
  ...ScrollViewStickyHeaderProps
377
391
  );
378
392
 
379
- export type ScrollViewProps = $ReadOnly<{
380
- ...ViewProps,
381
- ...ScrollViewPropsIOS,
382
- ...ScrollViewPropsAndroid,
383
-
393
+ type ScrollViewBaseProps = $ReadOnly<{
384
394
  /**
385
395
  * These styles will be applied to the scroll view content container which
386
396
  * wraps all of the child views. Example:
@@ -643,7 +653,7 @@ export type ScrollViewProps = $ReadOnly<{
643
653
  */
644
654
  /* $FlowFixMe[unclear-type] - how to handle generic type without existential
645
655
  * operator? */
646
- refreshControl?: ?React.Node,
656
+ refreshControl?: ?React.MixedElement,
647
657
  children?: React.Node,
648
658
  /**
649
659
  * A ref to the inner View element of the ScrollView. This should be used
@@ -658,7 +668,14 @@ export type ScrollViewProps = $ReadOnly<{
658
668
  scrollViewRef?: React.RefSetter<PublicScrollViewInstance>,
659
669
  }>;
660
670
 
661
- type State = {
671
+ export type ScrollViewProps = $ReadOnly<{
672
+ ...ViewProps,
673
+ ...ScrollViewPropsIOS,
674
+ ...ScrollViewPropsAndroid,
675
+ ...ScrollViewBaseProps,
676
+ }>;
677
+
678
+ type ScrollViewState = {
662
679
  layoutHeight: ?number,
663
680
  };
664
681
 
@@ -703,7 +720,7 @@ export type ScrollViewComponentStatics = $ReadOnly<{
703
720
  * multiple columns, infinite scroll loading, or any number of other features it
704
721
  * supports out of the box.
705
722
  */
706
- class ScrollView extends React.Component<ScrollViewProps, State> {
723
+ class ScrollView extends React.Component<ScrollViewProps, ScrollViewState> {
707
724
  static Context: typeof ScrollViewContext = ScrollViewContext;
708
725
 
709
726
  constructor(props: ScrollViewProps) {
@@ -745,7 +762,7 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
745
762
  _subscriptionKeyboardDidShow: ?EventSubscription = null;
746
763
  _subscriptionKeyboardDidHide: ?EventSubscription = null;
747
764
 
748
- state: State = {
765
+ state: ScrollViewState = {
749
766
  layoutHeight: null,
750
767
  };
751
768
 
@@ -823,26 +840,28 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
823
840
  * implement this method so that they can be composed while providing access
824
841
  * to the underlying scroll responder's methods.
825
842
  */
826
- getScrollResponder: () => ScrollResponderType = () => {
827
- // $FlowFixMe[unclear-type]
828
- return ((this: any): ScrollResponderType);
829
- };
843
+ getScrollResponder: ScrollViewImperativeMethods['getScrollResponder'] =
844
+ () => {
845
+ // $FlowFixMe[unclear-type]
846
+ return ((this: any): ScrollResponderType);
847
+ };
830
848
 
831
- getScrollableNode: () => ?number = () => {
832
- return findNodeHandle(this.getNativeScrollRef());
849
+ getScrollableNode: ScrollViewImperativeMethods['getScrollableNode'] = () => {
850
+ return findNodeHandle<$FlowFixMe>(this.getNativeScrollRef());
833
851
  };
834
852
 
835
- getInnerViewNode: () => ?number = () => {
836
- return findNodeHandle(this._innerView.nativeInstance);
853
+ getInnerViewNode: ScrollViewImperativeMethods['getInnerViewNode'] = () => {
854
+ return findNodeHandle<$FlowFixMe>(this._innerView.nativeInstance);
837
855
  };
838
856
 
839
- getInnerViewRef: () => InnerViewInstance | null = () => {
857
+ getInnerViewRef: ScrollViewImperativeMethods['getInnerViewRef'] = () => {
840
858
  return this._innerView.nativeInstance;
841
859
  };
842
860
 
843
- getNativeScrollRef: () => HostInstance | null = () => {
844
- return this._scrollView.nativeInstance;
845
- };
861
+ getNativeScrollRef: ScrollViewImperativeMethods['getNativeScrollRef'] =
862
+ () => {
863
+ return this._scrollView.nativeInstance;
864
+ };
846
865
 
847
866
  /**
848
867
  * Scrolls to a given x, y offset, either immediately or with a smooth animation.
@@ -855,11 +874,11 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
855
874
  * the function also accepts separate arguments as an alternative to the options object.
856
875
  * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.
857
876
  */
858
- scrollTo: (
859
- options?: ScrollViewScrollToOptions | number,
860
- deprecatedX?: number,
861
- deprecatedAnimated?: boolean,
862
- ) => void = (options, deprecatedX, deprecatedAnimated) => {
877
+ scrollTo: ScrollViewImperativeMethods['scrollTo'] = (
878
+ options,
879
+ deprecatedX,
880
+ deprecatedAnimated,
881
+ ) => {
863
882
  let x, y, animated;
864
883
  if (typeof options === 'number') {
865
884
  console.warn(
@@ -889,7 +908,7 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
889
908
  * `scrollToEnd({animated: false})` for immediate scrolling.
890
909
  * If no options are passed, `animated` defaults to true.
891
910
  */
892
- scrollToEnd: (options?: ?ScrollViewScrollToOptions) => void = options => {
911
+ scrollToEnd: ScrollViewImperativeMethods['scrollToEnd'] = options => {
893
912
  // Default to true
894
913
  const animated = (options && options.animated) !== false;
895
914
  const component = this.getNativeScrollRef();
@@ -904,13 +923,14 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
904
923
  *
905
924
  * @platform ios
906
925
  */
907
- flashScrollIndicators: () => void = () => {
908
- const component = this.getNativeScrollRef();
909
- if (component == null) {
910
- return;
911
- }
912
- Commands.flashScrollIndicators(component);
913
- };
926
+ flashScrollIndicators: ScrollViewImperativeMethods['flashScrollIndicators'] =
927
+ () => {
928
+ const component = this.getNativeScrollRef();
929
+ if (component == null) {
930
+ return;
931
+ }
932
+ Commands.flashScrollIndicators(component);
933
+ };
914
934
 
915
935
  /**
916
936
  * This method should be used as the callback to onFocus in a TextInputs'
@@ -922,39 +942,36 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
922
942
  * @param {bool} preventNegativeScrolling Whether to allow pulling the content
923
943
  * down to make it meet the keyboard's top. Default is false.
924
944
  */
925
- scrollResponderScrollNativeHandleToKeyboard: (
926
- nodeHandle: number | HostInstance,
927
- additionalOffset?: number,
928
- preventNegativeScrollOffset?: boolean,
929
- ) => void = (
930
- nodeHandle: number | HostInstance,
931
- additionalOffset?: number,
932
- preventNegativeScrollOffset?: boolean,
933
- ) => {
934
- this._additionalScrollOffset = additionalOffset || 0;
935
- this._preventNegativeScrollOffset = !!preventNegativeScrollOffset;
936
-
937
- if (this._innerView.nativeInstance == null) {
938
- return;
939
- }
945
+ scrollResponderScrollNativeHandleToKeyboard: ScrollViewImperativeMethods['scrollResponderScrollNativeHandleToKeyboard'] =
946
+ (
947
+ nodeHandle: number | HostInstance,
948
+ additionalOffset?: number,
949
+ preventNegativeScrollOffset?: boolean,
950
+ ) => {
951
+ this._additionalScrollOffset = additionalOffset || 0;
952
+ this._preventNegativeScrollOffset = !!preventNegativeScrollOffset;
953
+
954
+ if (this._innerView.nativeInstance == null) {
955
+ return;
956
+ }
940
957
 
941
- if (typeof nodeHandle === 'number') {
942
- UIManager.measureLayout(
943
- nodeHandle,
944
- nullthrows(findNodeHandle(this)),
945
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
946
- this._textInputFocusError,
947
- this._inputMeasureAndScrollToKeyboard,
948
- );
949
- } else {
950
- nodeHandle.measureLayout(
951
- this._innerView.nativeInstance,
952
- this._inputMeasureAndScrollToKeyboard,
953
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
954
- this._textInputFocusError,
955
- );
956
- }
957
- };
958
+ if (typeof nodeHandle === 'number') {
959
+ UIManager.measureLayout(
960
+ nodeHandle,
961
+ nullthrows(findNodeHandle<$FlowFixMe>(this)),
962
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
963
+ this._textInputFocusError,
964
+ this._inputMeasureAndScrollToKeyboard,
965
+ );
966
+ } else {
967
+ nodeHandle.measureLayout(
968
+ this._innerView.nativeInstance,
969
+ this._inputMeasureAndScrollToKeyboard,
970
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
971
+ this._textInputFocusError,
972
+ );
973
+ }
974
+ };
958
975
 
959
976
  /**
960
977
  * A helper function to zoom to a specific rect in the scrollview. The argument has the shape
@@ -962,41 +979,33 @@ class ScrollView extends React.Component<ScrollViewProps, State> {
962
979
  *
963
980
  * @platform ios
964
981
  */
965
- scrollResponderZoomTo: (
966
- rect: {
967
- x: number,
968
- y: number,
969
- width: number,
970
- height: number,
971
- animated?: boolean,
972
- },
973
- animated?: boolean, // deprecated, put this inside the rect argument instead
974
- ) => void = (
975
- rect: {
976
- x: number,
977
- y: number,
978
- width: number,
979
- height: number,
980
- animated?: boolean,
981
- },
982
- animated?: boolean, // deprecated, put this inside the rect argument instead
983
- ) => {
984
- invariant(Platform.OS === 'ios', 'zoomToRect is not implemented');
985
- if ('animated' in rect) {
986
- this._animated = rect.animated;
987
- delete rect.animated;
988
- } else if (typeof animated !== 'undefined') {
989
- console.warn(
990
- '`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead',
991
- );
992
- }
982
+ scrollResponderZoomTo: ScrollViewImperativeMethods['scrollResponderZoomTo'] =
983
+ (
984
+ rect: {
985
+ x: number,
986
+ y: number,
987
+ width: number,
988
+ height: number,
989
+ animated?: boolean,
990
+ },
991
+ animated?: boolean, // deprecated, put this inside the rect argument instead
992
+ ) => {
993
+ invariant(Platform.OS === 'ios', 'zoomToRect is not implemented');
994
+ if ('animated' in rect) {
995
+ this._animated = rect.animated;
996
+ delete rect.animated;
997
+ } else if (typeof animated !== 'undefined') {
998
+ console.warn(
999
+ '`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead',
1000
+ );
1001
+ }
993
1002
 
994
- const component = this.getNativeScrollRef();
995
- if (component == null) {
996
- return;
997
- }
998
- Commands.zoomToRect(component, rect, animated !== false);
999
- };
1003
+ const component = this.getNativeScrollRef();
1004
+ if (component == null) {
1005
+ return;
1006
+ }
1007
+ Commands.zoomToRect(component, rect, animated !== false);
1008
+ };
1000
1009
 
1001
1010
  _textInputFocusError() {
1002
1011
  console.warn('Error measuring text field.');
@@ -1904,7 +1913,7 @@ function createRefForwarder<TNativeInstance, TPublicInstance>(
1904
1913
  // NOTE: This wrapper component is necessary because `ScrollView` is a class
1905
1914
  // component and we need to map `ref` to a differently named prop. This can be
1906
1915
  // removed when `ScrollView` is a functional component.
1907
- const Wrapper: component(
1916
+ const ScrollViewWrapper: component(
1908
1917
  ref?: React.RefSetter<PublicScrollViewInstance>,
1909
1918
  ...props: ScrollViewProps
1910
1919
  ) = React.forwardRef(function Wrapper(
@@ -1917,9 +1926,9 @@ const Wrapper: component(
1917
1926
  <ScrollView {...props} scrollViewRef={ref} />
1918
1927
  );
1919
1928
  });
1920
- Wrapper.displayName = 'ScrollView';
1929
+ ScrollViewWrapper.displayName = 'ScrollView';
1921
1930
  // $FlowExpectedError[prop-missing]
1922
- Wrapper.Context = ScrollViewContext;
1931
+ ScrollViewWrapper.Context = ScrollViewContext;
1923
1932
 
1924
- export default ((Wrapper: $FlowFixMe): typeof Wrapper &
1933
+ export default ((ScrollViewWrapper: $FlowFixMe): typeof ScrollViewWrapper &
1925
1934
  ScrollViewComponentStatics);
@@ -10,7 +10,7 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import React from 'react';
13
+ import * as React from 'react';
14
14
 
15
15
  type Props = $ReadOnly<{
16
16
  /**
@@ -38,6 +38,9 @@ export interface SwitchPropsIOS extends ViewProps {
38
38
  tintColor?: ColorValue | undefined;
39
39
  }
40
40
 
41
+ /**
42
+ * @deprecated Use `SwitchChangeEvent` instead.
43
+ */
41
44
  export interface SwitchChangeEventData extends TargetedEvent {
42
45
  value: boolean;
43
46
  }
@@ -22,6 +22,7 @@ import SwitchNativeComponent, {
22
22
  Commands as SwitchCommands,
23
23
  } from './SwitchNativeComponent';
24
24
  import * as React from 'react';
25
+ import {useLayoutEffect, useRef, useState} from 'react';
25
26
 
26
27
  export type SwitchPropsIOS = {
27
28
  /**
@@ -46,7 +47,7 @@ export type SwitchPropsIOS = {
46
47
  tintColor?: ?ColorValue,
47
48
  };
48
49
 
49
- export type SwitchChangeEventData = $ReadOnly<{
50
+ type SwitchChangeEventData = $ReadOnly<{
50
51
  target: number,
51
52
  value: boolean,
52
53
  }>;
@@ -179,13 +180,16 @@ const Switch: component(
179
180
  const trackColorForFalse = trackColor?.false;
180
181
  const trackColorForTrue = trackColor?.true;
181
182
 
182
- const nativeSwitchRef = React.useRef<React.ElementRef<
183
+ const nativeSwitchRef = useRef<React.ElementRef<
183
184
  typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,
184
185
  > | null>(null);
185
186
 
186
187
  const ref = useMergeRefs(nativeSwitchRef, forwardedRef);
187
188
 
188
- const [native, setNative] = React.useState({value: (null: ?boolean)});
189
+ // We wrap the native state in an object to force the layout-effect
190
+ // below to re-run whenever we get an update from native, even if it's
191
+ // not different from the previous native state.
192
+ const [native, setNative] = useState({value: (null: ?boolean)});
189
193
 
190
194
  const handleChange = (event: SwitchChangeEvent) => {
191
195
  // $FlowFixMe[unused-promise]
@@ -195,7 +199,7 @@ const Switch: component(
195
199
  setNative({value: event.nativeEvent.value});
196
200
  };
197
201
 
198
- React.useLayoutEffect(() => {
202
+ useLayoutEffect(() => {
199
203
  // This is necessary in case native updates the switch and JS decides
200
204
  // that the update should be ignored and we should stick with the value
201
205
  // that we have in JS.
@@ -22,6 +22,7 @@ import SwitchNativeComponent, {
22
22
  Commands as SwitchCommands,
23
23
  } from './SwitchNativeComponent';
24
24
  import * as React from 'react';
25
+ import {useLayoutEffect, useRef, useState} from 'react';
25
26
 
26
27
  export type SwitchPropsIOS = {
27
28
  /**
@@ -46,7 +47,7 @@ export type SwitchPropsIOS = {
46
47
  tintColor?: ?ColorValue,
47
48
  };
48
49
 
49
- export type SwitchChangeEventData = $ReadOnly<{
50
+ type SwitchChangeEventData = $ReadOnly<{
50
51
  target: number,
51
52
  value: boolean,
52
53
  }>;
@@ -176,18 +177,27 @@ const Switch: component(
176
177
  thumbColor,
177
178
  trackColor,
178
179
  value,
180
+ 'aria-level': ariaLevel, // Windows
181
+ 'aria-posinset': ariaPosinset, // Windows
182
+ 'aria-setsize': ariaSetsize, // Windows
179
183
  ...restProps
180
184
  } = props;
181
185
  const trackColorForFalse = trackColor?.false;
182
186
  const trackColorForTrue = trackColor?.true;
187
+ const _accessibilityLevel = ariaLevel ?? props.accessibilityLevel; // Windows
188
+ const _accessibilityPosInSet = ariaPosinset ?? props.accessibilityPosInSet; // Windows
189
+ const _accessibilitySetSize = ariaSetsize ?? props.accessibilitySetSize; // Windows
183
190
 
184
- const nativeSwitchRef = React.useRef<React.ElementRef<
191
+ const nativeSwitchRef = useRef<React.ElementRef<
185
192
  typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,
186
193
  > | null>(null);
187
194
 
188
195
  const ref = useMergeRefs(nativeSwitchRef, forwardedRef);
189
196
 
190
- const [native, setNative] = React.useState({value: (null: ?boolean)});
197
+ // We wrap the native state in an object to force the layout-effect
198
+ // below to re-run whenever we get an update from native, even if it's
199
+ // not different from the previous native state.
200
+ const [native, setNative] = useState({value: (null: ?boolean)});
191
201
 
192
202
  const handleChange = (event: SwitchChangeEvent) => {
193
203
  // $FlowFixMe[unused-promise]
@@ -197,7 +207,7 @@ const Switch: component(
197
207
  setNative({value: event.nativeEvent.value});
198
208
  };
199
209
 
200
- React.useLayoutEffect(() => {
210
+ useLayoutEffect(() => {
201
211
  // This is necessary in case native updates the switch and JS decides
202
212
  // that the update should be ignored and we should stick with the value
203
213
  // that we have in JS.
@@ -278,6 +288,9 @@ const Switch: component(
278
288
  focusable={focusable === undefined ? true : focusable} // [Windows]
279
289
  accessible={accessible === undefined ? true : accessible} // [Windows]
280
290
  accessibilityRole={props.accessibilityRole ?? 'switch'}
291
+ accessibilityLevel={_accessibilityLevel} // [Windows]
292
+ accessibilityPosInSet={_accessibilityPosInSet} // [Windows]
293
+ accessibilitySetSize={_accessibilitySetSize} // [Windows]
281
294
  onChange={handleChange}
282
295
  onResponderTerminationRequest={returnsFalse}
283
296
  onStartShouldSetResponder={returnsTrue}
@@ -70,7 +70,7 @@ export type SubmitBehavior = 'submit' | 'blurAndSubmit' | 'newline';
70
70
  export type NativeProps = $ReadOnly<{
71
71
  // This allows us to inherit everything from ViewProps except for style (see below)
72
72
  // This must be commented for Fabric codegen to work.
73
- ...$Diff<ViewProps, $ReadOnly<{style: ?ViewStyleProp}>>,
73
+ ...Omit<ViewProps, 'style'>,
74
74
 
75
75
  /**
76
76
  * Android props after this
@@ -658,6 +658,7 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
658
658
  },
659
659
  },
660
660
  validAttributes: {
661
+ acceptDragAndDropTypes: true,
661
662
  maxFontSizeMultiplier: true,
662
663
  adjustsFontSizeToFit: true,
663
664
  minimumFontScale: true,
@@ -12,10 +12,7 @@ import type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';
12
12
 
13
13
  import {ConditionallyIgnoredEventHandlers} from '../../NativeComponent/ViewConfigIgnore';
14
14
 
15
- type PartialViewConfigWithoutName = $Rest<
16
- PartialViewConfig,
17
- {uiViewClassName: string},
18
- >;
15
+ type PartialViewConfigWithoutName = Omit<PartialViewConfig, 'uiViewClassName'>;
19
16
 
20
17
  const RCTTextInputViewConfig = {
21
18
  bubblingEventTypes: {
@@ -93,6 +90,7 @@ const RCTTextInputViewConfig = {
93
90
  },
94
91
  },
95
92
  validAttributes: {
93
+ acceptDragAndDropTypes: true,
96
94
  dynamicTypeRamp: true,
97
95
  fontSize: true,
98
96
  fontWeight: true,