@office-iss/react-native-win32 0.71.4 → 0.72.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 (323) hide show
  1. package/.flowconfig +15 -3
  2. package/CHANGELOG.json +310 -40
  3. package/CHANGELOG.md +145 -23
  4. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -0
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
  6. package/Libraries/Alert/Alert.d.ts +4 -4
  7. package/Libraries/Alert/Alert.win32.js +1 -0
  8. package/Libraries/Animated/Animated.d.ts +17 -6
  9. package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
  10. package/Libraries/Animated/NativeAnimatedHelper.win32.js +606 -0
  11. package/Libraries/Animated/bezier.js +1 -1
  12. package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
  13. package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
  14. package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
  15. package/Libraries/Animated/createAnimatedComponent.js +26 -239
  16. package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
  17. package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
  18. package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
  19. package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
  20. package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
  21. package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
  23. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  24. package/Libraries/Animated/useAnimatedProps.js +7 -10
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -1
  26. package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  28. package/Libraries/Blob/Blob.js +4 -0
  29. package/Libraries/Blob/FileReader.js +30 -2
  30. package/Libraries/Blob/URL.js +3 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +2 -3
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
  35. package/Libraries/Components/Button.js +3 -2
  36. package/Libraries/Components/Button.win32.js +451 -0
  37. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  39. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
  40. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  41. package/Libraries/Components/Pressable/Pressable.js +1 -1
  42. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
  43. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
  44. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +1 -2
  45. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
  46. package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
  47. package/Libraries/Components/ScrollView/ScrollView.js +149 -91
  48. package/Libraries/Components/ScrollView/ScrollView.win32.js +1939 -0
  49. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
  50. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
  51. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
  52. package/Libraries/Components/StatusBar/StatusBar.js +3 -0
  53. package/Libraries/Components/Switch/Switch.js +3 -1
  54. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
  55. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
  57. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +51 -0
  58. package/Libraries/Components/TextInput/TextInput.Types.win32.js +3 -0
  59. package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +1 -0
  60. package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
  61. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  62. package/Libraries/Components/TextInput/TextInput.js +130 -103
  63. package/Libraries/Components/TextInput/TextInput.win32.js +202 -890
  64. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  65. package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
  66. package/Libraries/Components/Touchable/Touchable.js +6 -3
  67. package/Libraries/Components/Touchable/Touchable.win32.js +6 -3
  68. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
  71. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  73. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +189 -0
  74. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
  75. package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
  76. package/Libraries/Components/View/View.js +71 -45
  77. package/Libraries/Components/View/View.win32.js +38 -16
  78. package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
  79. package/Libraries/Components/View/ViewAccessibility.js +10 -1
  80. package/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  81. package/Libraries/Components/View/ViewNativeComponent.js +32 -8
  82. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
  83. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  84. package/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
  86. package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
  87. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
  88. package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
  89. package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
  90. package/Libraries/Core/ExceptionsManager.js +2 -2
  91. package/Libraries/Core/InitializeCore.js +2 -1
  92. package/Libraries/Core/ReactNativeVersion.js +3 -3
  93. package/Libraries/Core/ReactNativeVersionCheck.js +1 -9
  94. package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -9
  95. package/Libraries/Core/Timers/JSTimers.js +1 -1
  96. package/Libraries/Core/Timers/immediateShim.js +1 -0
  97. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  98. package/Libraries/Core/setUpAlert.js +1 -1
  99. package/Libraries/Core/setUpDOM.js +18 -0
  100. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  101. package/Libraries/Core/setUpGlobals.js +5 -2
  102. package/Libraries/Core/setUpNavigator.js +6 -5
  103. package/Libraries/Core/setUpPerformance.js +23 -13
  104. package/Libraries/Core/setUpReactDevTools.js +2 -0
  105. package/Libraries/Core/setUpSegmentFetcher.js +0 -41
  106. package/Libraries/Core/setUpTimers.js +2 -2
  107. package/Libraries/DOM/Geometry/DOMRect.js +82 -0
  108. package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
  109. package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
  110. package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
  111. package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
  112. package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
  113. package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
  114. package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
  115. package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
  116. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
  117. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
  118. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
  119. package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +35 -0
  120. package/Libraries/{Utilities/NativeDevSplitBundleLoader.js → DevToolsSettings/NativeDevToolsSettingsManager.js} +7 -2
  121. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
  122. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
  123. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
  124. package/Libraries/Events/EventPolyfill.js +1 -1
  125. package/Libraries/Image/AssetRegistry.js +1 -1
  126. package/Libraries/Image/AssetSourceResolver.js +3 -3
  127. package/Libraries/Image/Image.android.js +4 -1
  128. package/Libraries/Image/Image.d.ts +63 -2
  129. package/Libraries/Image/Image.ios.js +3 -0
  130. package/Libraries/Image/Image.win32.js +3 -0
  131. package/Libraries/Image/ImageBackground.js +1 -0
  132. package/Libraries/Image/ImageProps.js +1 -1
  133. package/Libraries/Image/ImageViewNativeComponent.js +4 -4
  134. package/Libraries/Image/RelativeImageStub.js +1 -1
  135. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  136. package/Libraries/Image/resolveAssetSource.js +1 -1
  137. package/Libraries/Inspector/DevtoolsOverlay.js +29 -19
  138. package/Libraries/Inspector/ElementBox.js +4 -1
  139. package/Libraries/Inspector/Inspector.js +5 -6
  140. package/Libraries/Inspector/Inspector.win32.js +7 -6
  141. package/Libraries/Inspector/InspectorOverlay.js +3 -3
  142. package/Libraries/Inspector/InspectorOverlay.win32.js +2 -1
  143. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  144. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  145. package/Libraries/Interaction/PanResponder.js +5 -6
  146. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
  147. package/Libraries/Linking/Linking.js +1 -4
  148. package/Libraries/Lists/FillRateHelper.js +4 -238
  149. package/Libraries/Lists/FlatList.d.ts +15 -22
  150. package/Libraries/Lists/FlatList.js +9 -6
  151. package/Libraries/Lists/SectionList.d.ts +10 -6
  152. package/Libraries/Lists/SectionList.js +5 -3
  153. package/Libraries/Lists/SectionListModern.js +3 -3
  154. package/Libraries/Lists/ViewabilityHelper.js +8 -344
  155. package/Libraries/Lists/VirtualizeUtils.js +4 -244
  156. package/Libraries/Lists/VirtualizedList.js +10 -1867
  157. package/Libraries/Lists/VirtualizedListContext.js +6 -104
  158. package/Libraries/Lists/VirtualizedSectionList.js +9 -602
  159. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
  160. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  161. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  162. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  163. package/Libraries/LogBox/LogBox.js +1 -1
  164. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
  165. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +168 -0
  166. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +3 -0
  167. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +193 -0
  168. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  169. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
  170. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +7 -3
  171. package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
  172. package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
  173. package/Libraries/Modal/Modal.js +2 -2
  174. package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
  175. package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
  176. package/Libraries/NativeComponent/BaseViewConfig.win32.js +43 -19
  177. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
  178. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  179. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
  180. package/Libraries/Network/RCTNetworking.android.js +2 -2
  181. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  182. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  183. package/Libraries/Network/XMLHttpRequest.js +1 -1
  184. package/Libraries/Pressability/Pressability.js +11 -5
  185. package/Libraries/Pressability/Pressability.win32.js +9 -3
  186. package/Libraries/ReactNative/AppContainer.js +7 -1
  187. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  188. package/Libraries/ReactNative/AppRegistry.js +10 -13
  189. package/Libraries/ReactNative/FabricUIManager.js +24 -8
  190. package/Libraries/ReactNative/NativeUIManager.js +5 -5
  191. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
  192. package/Libraries/ReactNative/UIManager.js +142 -1
  193. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
  194. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  195. package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
  196. package/Libraries/ReactNative/requireNativeComponent.js +1 -1
  197. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  198. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  199. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  200. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  201. package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
  202. package/Libraries/Renderer/shims/ReactNativeTypes.js +38 -20
  203. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
  204. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  205. package/Libraries/Share/Share.js +1 -1
  206. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  207. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  208. package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
  209. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
  210. package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
  211. package/Libraries/StyleSheet/flattenStyle.js +2 -0
  212. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  213. package/Libraries/StyleSheet/processColor.js +1 -1
  214. package/Libraries/Text/Text.d.ts +12 -2
  215. package/Libraries/Text/Text.js +50 -41
  216. package/Libraries/Text/TextProps.js +3 -4
  217. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  218. package/Libraries/Types/CodegenTypes.js +1 -0
  219. package/Libraries/UTFSequence.js +3 -1
  220. package/Libraries/Utilities/Appearance.d.ts +10 -0
  221. package/Libraries/Utilities/Appearance.js +13 -0
  222. package/Libraries/Utilities/Dimensions.js +1 -1
  223. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  224. package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
  225. package/Libraries/Utilities/HMRClient.js +16 -10
  226. package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
  227. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  228. package/Libraries/Utilities/LoadingView.android.js +28 -11
  229. package/Libraries/Utilities/NativeAppearance.js +1 -0
  230. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
  231. package/Libraries/Utilities/PixelRatio.js +2 -2
  232. package/Libraries/Utilities/Platform.win32.js +1 -1
  233. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  234. package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
  235. package/Libraries/Utilities/codegenNativeCommands.js +2 -0
  236. package/Libraries/Utilities/createPerformanceLogger.js +55 -43
  237. package/Libraries/Utilities/stringifySafe.js +2 -7
  238. package/Libraries/Utilities/useColorScheme.js +1 -1
  239. package/Libraries/Utilities/useWindowDimensions.js +3 -3
  240. package/Libraries/WebPerformance/EventCounts.js +78 -0
  241. package/Libraries/WebPerformance/MemoryInfo.js +54 -0
  242. package/Libraries/WebPerformance/NativePerformance.js +38 -0
  243. package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
  244. package/Libraries/WebPerformance/Performance.js +312 -0
  245. package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
  246. package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
  247. package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
  248. package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
  249. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
  250. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
  251. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
  252. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  253. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  254. package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
  255. package/Libraries/vendor/emitter/EventEmitter.js +9 -1
  256. package/flow/global.js +29 -4
  257. package/flow/jest.js +258 -164
  258. package/index.js +56 -42
  259. package/index.win32.js +56 -42
  260. package/interface.js +1 -1
  261. package/jest/local-setup.js +33 -0
  262. package/jest/mockComponent.js +4 -2
  263. package/jest/mockNativeComponent.js +1 -1
  264. package/jest/mockScrollView.js +2 -1
  265. package/jest/react-native-env.js +1 -3
  266. package/jest/setup.js +11 -8
  267. package/overrides.json +115 -85
  268. package/package.json +38 -28
  269. package/rn-get-polyfills.js +1 -1
  270. package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
  271. package/src/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  272. package/src/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  273. package/types/index.d.ts +2 -6
  274. package/types/modules/Codegen.d.ts +4 -4
  275. package/types/modules/globals.d.ts +27 -25
  276. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -20
  277. package/types/public/ReactNativeRenderer.d.ts +2 -7
  278. package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
  279. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
  280. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
  281. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
  282. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
  283. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
  284. package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
  285. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
  286. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
  287. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -47
  288. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  289. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
  290. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
  291. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
  292. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
  293. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -45
  294. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
  295. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
  296. package/Libraries/Components/Slider/Slider.d.ts +0 -132
  297. package/Libraries/Components/Slider/Slider.js +0 -282
  298. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
  299. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +0 -23
  300. package/Libraries/Interaction/Batchinator.js +0 -76
  301. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
  302. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  303. package/Libraries/Interaction/PanResponder.flow.js +0 -257
  304. package/Libraries/Lists/CellRenderMask.js +0 -155
  305. package/Libraries/Lists/ChildListCollection.js +0 -72
  306. package/Libraries/Lists/StateSafePureComponent.js +0 -85
  307. package/Libraries/Lists/VirtualizedList.d.ts +0 -347
  308. package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
  309. package/Libraries/Lists/VirtualizedListProps.js +0 -279
  310. package/Libraries/Performance/PureComponentDebug.js +0 -74
  311. package/Libraries/Reliability/UserFlow.js +0 -158
  312. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
  313. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
  314. package/Libraries/Utilities/MatrixMath.js +0 -748
  315. package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
  316. package/Libraries/Utilities/clamp.js +0 -23
  317. package/Libraries/Utilities/deprecatedPropType.js +0 -36
  318. package/Libraries/Utilities/groupByEveryN.js +0 -51
  319. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  320. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  321. package/Libraries/Utilities/truncate.js +0 -51
  322. package/flow/JSITimerInternalType.js +0 -30
  323. package/flow/use-sync-external-store.js +0 -19
@@ -13,7 +13,7 @@ import {GestureResponderEvent} from '../../Types/CoreEventTypes';
13
13
 
14
14
  /**
15
15
  * //FIXME: need to find documentation on which component is a TTouchable and can implement that interface
16
- * @see React.DOMAtributes
16
+ * @see React.DOMAttributes
17
17
  */
18
18
  export interface Touchable {
19
19
  onTouchStart?: ((event: GestureResponderEvent) => void) | undefined;
@@ -99,7 +99,30 @@ import * as React from 'react';
99
99
  * }
100
100
  */
101
101
 
102
- // Default amount "active" region protrudes beyond box
102
+ /**
103
+ * Touchable states.
104
+ */
105
+
106
+ const States = {
107
+ NOT_RESPONDER: 'NOT_RESPONDER', // Not the responder
108
+ RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN', // Responder, inactive, in the `PressRect`
109
+ RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT', // Responder, inactive, out of `PressRect`
110
+ RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN', // Responder, active, in the `PressRect`
111
+ RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT', // Responder, active, out of `PressRect`
112
+ RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN', // Responder, active, in the `PressRect`, after long press threshold
113
+ RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT', // Responder, active, out of `PressRect`, after long press threshold
114
+ ERROR: 'ERROR',
115
+ };
116
+
117
+ type State =
118
+ | typeof States.NOT_RESPONDER
119
+ | typeof States.RESPONDER_INACTIVE_PRESS_IN
120
+ | typeof States.RESPONDER_INACTIVE_PRESS_OUT
121
+ | typeof States.RESPONDER_ACTIVE_PRESS_IN
122
+ | typeof States.RESPONDER_ACTIVE_PRESS_OUT
123
+ | typeof States.RESPONDER_ACTIVE_LONG_PRESS_IN
124
+ | typeof States.RESPONDER_ACTIVE_LONG_PRESS_OUT
125
+ | typeof States.ERROR;
103
126
 
104
127
  /**
105
128
  * By convention, methods prefixed with underscores are meant to be @private,
@@ -200,9 +223,12 @@ interface TouchableMixinType {
200
223
  * @return {object} State object to be placed inside of
201
224
  * `this.state.touchable`.
202
225
  */
203
- touchableGetInitialState: () => $TEMPORARY$object<{|
204
- touchable: $TEMPORARY$object<{|responderID: null, touchState: void|}>,
205
- |}>;
226
+ touchableGetInitialState: () => {
227
+ touchable: {
228
+ touchState: ?State,
229
+ responderID: ?PressEvent['currentTarget'],
230
+ },
231
+ };
206
232
 
207
233
  // ==== Hooks to Gesture Responder system ====
208
234
  /**
@@ -396,9 +396,12 @@ const TouchableMixin = {
396
396
  * @return {object} State object to be placed inside of
397
397
  * `this.state.touchable`.
398
398
  */
399
- touchableGetInitialState: function (): $TEMPORARY$object<{|
400
- touchable: $TEMPORARY$object<{|responderID: null, touchState: void|}>,
401
- |}> {
399
+ touchableGetInitialState: function (): {
400
+ touchable: {
401
+ touchState: ?State,
402
+ responderID: ?PressEvent['currentTarget'],
403
+ },
404
+ } {
402
405
  return {
403
406
  touchable: {touchState: undefined, responderID: null},
404
407
  };
@@ -401,9 +401,12 @@ const TouchableMixin = {
401
401
  * @return {object} State object to be placed inside of
402
402
  * `this.state.touchable`.
403
403
  */
404
- touchableGetInitialState: function (): $TEMPORARY$object<{|
405
- touchable: $TEMPORARY$object<{|responderID: null, touchState: void|}>,
406
- |}> {
404
+ touchableGetInitialState: function (): {
405
+ touchable: {
406
+ touchState: ?State,
407
+ responderID: ?PressEvent['currentTarget'],
408
+ },
409
+ } {
407
410
  return {
408
411
  touchable: {touchState: undefined, responderID: null},
409
412
  };
@@ -277,7 +277,7 @@ class TouchableHighlight extends React.Component<Props, State> {
277
277
  }
278
278
 
279
279
  render(): React.Node {
280
- const child = React.Children.only(this.props.children);
280
+ const child = React.Children.only<$FlowFixMe>(this.props.children);
281
281
 
282
282
  // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
283
283
  // adopting `Pressability`, so preserve that behavior.
@@ -239,8 +239,8 @@ class TouchableNativeFeedback extends React.Component<Props, State> {
239
239
  }
240
240
 
241
241
  render(): React.Node {
242
- const element = React.Children.only(this.props.children);
243
- const children = [element.props.children];
242
+ const element = React.Children.only<$FlowFixMe>(this.props.children);
243
+ const children: Array<React.Node> = [element.props.children];
244
244
  if (__DEV__) {
245
245
  if (element.type === View) {
246
246
  children.push(
@@ -206,6 +206,7 @@ class TouchableOpacity extends React.Component<Props, State> {
206
206
  }
207
207
 
208
208
  _getChildStyleOpacityWithDefault(): number {
209
+ // $FlowFixMe[underconstrained-implicit-instantiation]
209
210
  const opacity = flattenStyle(this.props.style)?.opacity;
210
211
  return typeof opacity === 'number' ? opacity : 1;
211
212
  }
@@ -301,7 +302,9 @@ class TouchableOpacity extends React.Component<Props, State> {
301
302
  this.state.pressability.configure(this._createPressabilityConfig());
302
303
  if (
303
304
  this.props.disabled !== prevProps.disabled ||
305
+ // $FlowFixMe[underconstrained-implicit-instantiation]
304
306
  flattenStyle(prevProps.style)?.opacity !==
307
+ // $FlowFixMe[underconstrained-implicit-instantiation]
305
308
  flattenStyle(this.props.style)?.opacity
306
309
  ) {
307
310
  this._opacityInactive(250);
@@ -40,7 +40,7 @@ export interface TouchableWithoutFeedbackProps
40
40
  extends TouchableWithoutFeedbackPropsIOS,
41
41
  TouchableWithoutFeedbackPropsAndroid,
42
42
  AccessibilityProps {
43
- children?: React.ReactNode;
43
+ children?: React.ReactNode | undefined;
44
44
 
45
45
  /**
46
46
  * Delay in ms, from onPressIn, before onLongPress is called.
@@ -121,8 +121,8 @@ class TouchableWithoutFeedback extends React.Component<Props, State> {
121
121
  };
122
122
 
123
123
  render(): React.Node {
124
- const element = React.Children.only(this.props.children);
125
- const children = [element.props.children];
124
+ const element = React.Children.only<$FlowFixMe>(this.props.children);
125
+ const children: Array<React.Node> = [element.props.children];
126
126
  const ariaLive = this.props['aria-live'];
127
127
 
128
128
  if (__DEV__) {
@@ -0,0 +1,189 @@
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 {Overlay} from './TraceUpdateOverlayNativeComponent';
12
+
13
+ import UIManager from '../../ReactNative/UIManager';
14
+ import processColor from '../../StyleSheet/processColor';
15
+ import StyleSheet from '../../StyleSheet/StyleSheet';
16
+ import Platform from '../../Utilities/Platform';
17
+ import View from '../View/View';
18
+ import TraceUpdateOverlayNativeComponent, {
19
+ Commands,
20
+ } from './TraceUpdateOverlayNativeComponent';
21
+ import * as React from 'react';
22
+
23
+ type AgentEvents = {
24
+ drawTraceUpdates: [Array<{node: TraceNode, color: string}>],
25
+ disableTraceUpdates: [],
26
+ };
27
+
28
+ interface Agent {
29
+ addListener<Event: $Keys<AgentEvents>>(
30
+ event: Event,
31
+ listener: (...AgentEvents[Event]) => void,
32
+ ): void;
33
+ removeListener(event: $Keys<AgentEvents>, listener: () => void): void;
34
+ }
35
+
36
+ type PublicInstance = {
37
+ measure?: (
38
+ (
39
+ x: number,
40
+ y: number,
41
+ width: number,
42
+ height: number,
43
+ left: number,
44
+ top: number,
45
+ ) => void,
46
+ ) => void,
47
+ };
48
+
49
+ type TraceNode =
50
+ | PublicInstance
51
+ | {
52
+ canonical?:
53
+ | PublicInstance // TODO: remove this variant when syncing the new version of the renderer from React to React Native.
54
+ | {
55
+ publicInstance?: PublicInstance,
56
+ },
57
+ };
58
+
59
+ type ReactDevToolsGlobalHook = {
60
+ on: (eventName: string, (agent: Agent) => void) => void,
61
+ off: (eventName: string, (agent: Agent) => void) => void,
62
+ reactDevtoolsAgent: Agent,
63
+ };
64
+
65
+ const {useEffect, useRef, useState} = React;
66
+ const hook: ReactDevToolsGlobalHook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;
67
+ const isNativeComponentReady =
68
+ Platform.OS === 'android' &&
69
+ UIManager.hasViewManagerConfig('TraceUpdateOverlay');
70
+ let devToolsAgent: ?Agent;
71
+
72
+ export default function TraceUpdateOverlay(): React.Node {
73
+ const [overlayDisabled, setOverlayDisabled] = useState(false);
74
+ // This effect is designed to be explicitly shown here to avoid re-subscribe from the same
75
+ // overlay component.
76
+ useEffect(() => {
77
+ if (!isNativeComponentReady) {
78
+ return;
79
+ }
80
+
81
+ function attachToDevtools(agent: Agent) {
82
+ devToolsAgent = agent;
83
+ agent.addListener('drawTraceUpdates', onAgentDrawTraceUpdates);
84
+ agent.addListener('disableTraceUpdates', onAgentDisableTraceUpdates);
85
+ }
86
+
87
+ function subscribe() {
88
+ hook?.on('react-devtools', attachToDevtools);
89
+ if (hook?.reactDevtoolsAgent) {
90
+ attachToDevtools(hook.reactDevtoolsAgent);
91
+ }
92
+ }
93
+
94
+ function unsubscribe() {
95
+ hook?.off('react-devtools', attachToDevtools);
96
+ const agent = devToolsAgent;
97
+ if (agent != null) {
98
+ agent.removeListener('drawTraceUpdates', onAgentDrawTraceUpdates);
99
+ agent.removeListener('disableTraceUpdates', onAgentDisableTraceUpdates);
100
+ devToolsAgent = null;
101
+ }
102
+ }
103
+
104
+ function onAgentDrawTraceUpdates(
105
+ nodesToDraw: Array<{node: TraceNode, color: string}> = [],
106
+ ) {
107
+ // If overlay is disabled before, now it's enabled.
108
+ setOverlayDisabled(false);
109
+
110
+ const newFramesToDraw: Array<Promise<Overlay>> = [];
111
+ nodesToDraw.forEach(({node, color}) => {
112
+ // `canonical.publicInstance` => Fabric
113
+ // TODO: remove this check when syncing the new version of the renderer from React to React Native.
114
+ // `canonical` => Legacy Fabric
115
+ // `node` => Legacy renderer
116
+ const component =
117
+ (node.canonical && node.canonical.publicInstance) ??
118
+ node.canonical ??
119
+ node;
120
+ if (!component || !component.measure) {
121
+ return;
122
+ }
123
+ const frameToDrawPromise = new Promise<Overlay>(resolve => {
124
+ // The if statement here is to make flow happy
125
+ if (component.measure) {
126
+ // TODO(T145522797): We should refactor this to use `getBoundingClientRect` when Paper is no longer supported.
127
+ component.measure((x, y, width, height, left, top) => {
128
+ resolve({
129
+ rect: {left, top, width, height},
130
+ color: processColor(color),
131
+ });
132
+ });
133
+ }
134
+ });
135
+ newFramesToDraw.push(frameToDrawPromise);
136
+ });
137
+ Promise.all(newFramesToDraw).then(
138
+ results => {
139
+ if (nativeComponentRef.current != null) {
140
+ Commands.draw(
141
+ nativeComponentRef.current,
142
+ JSON.stringify(
143
+ results.filter(
144
+ ({rect, color}) => rect.width >= 0 && rect.height >= 0,
145
+ ),
146
+ ),
147
+ );
148
+ }
149
+ },
150
+ err => {
151
+ console.error(`Failed to measure updated traces. Error: ${err}`);
152
+ },
153
+ );
154
+ }
155
+
156
+ function onAgentDisableTraceUpdates() {
157
+ // When trace updates are disabled from the backend, we won't receive draw events until it's enabled by the next draw. We can safely remove the overlay as it's not needed now.
158
+ setOverlayDisabled(true);
159
+ }
160
+
161
+ subscribe();
162
+ return unsubscribe;
163
+ }, []); // Only run once when the overlay initially rendered
164
+
165
+ const nativeComponentRef =
166
+ useRef<?React.ElementRef<typeof TraceUpdateOverlayNativeComponent>>(null);
167
+
168
+ return (
169
+ !overlayDisabled &&
170
+ isNativeComponentReady && (
171
+ <View pointerEvents="none" style={styles.overlay}>
172
+ <TraceUpdateOverlayNativeComponent
173
+ ref={nativeComponentRef}
174
+ style={styles.overlay}
175
+ />
176
+ </View>
177
+ )
178
+ );
179
+ }
180
+
181
+ const styles = StyleSheet.create({
182
+ overlay: {
183
+ position: 'absolute',
184
+ top: 0,
185
+ bottom: 0,
186
+ left: 0,
187
+ right: 0,
188
+ },
189
+ });
@@ -0,0 +1,43 @@
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 {HostComponent} from '../../Renderer/shims/ReactNativeTypes';
12
+ import type {ProcessedColorValue} from '../../StyleSheet/processColor';
13
+ import type {ViewProps} from '../View/ViewPropTypes';
14
+
15
+ import codegenNativeCommands from '../../Utilities/codegenNativeCommands';
16
+ import codegenNativeComponent from '../../Utilities/codegenNativeComponent';
17
+ import * as React from 'react';
18
+
19
+ type NativeProps = $ReadOnly<{|
20
+ ...ViewProps,
21
+ |}>;
22
+ export type TraceUpdateOverlayNativeComponentType = HostComponent<NativeProps>;
23
+ export type Overlay = {
24
+ rect: {left: number, top: number, width: number, height: number},
25
+ color: ?ProcessedColorValue,
26
+ };
27
+
28
+ interface NativeCommands {
29
+ +draw: (
30
+ viewRef: React.ElementRef<TraceUpdateOverlayNativeComponentType>,
31
+ // TODO(T144046177): Ideally we can pass array of Overlay, but currently
32
+ // Array type is not supported in RN codegen for building native commands.
33
+ overlays: string,
34
+ ) => void;
35
+ }
36
+
37
+ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
38
+ supportedCommands: ['draw'],
39
+ });
40
+
41
+ export default (codegenNativeComponent<NativeProps>(
42
+ 'TraceUpdateOverlay',
43
+ ): HostComponent<NativeProps>);
@@ -46,12 +46,25 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
46
46
  flexWrap: true,
47
47
  gap: true,
48
48
  height: true,
49
+ inset: true,
50
+ insetBlock: true,
51
+ insetBlockEnd: true,
52
+ insetBlockStart: true,
53
+ insetInline: true,
54
+ insetInlineEnd: true,
55
+ insetInlineStart: true,
49
56
  justifyContent: true,
50
57
  left: true,
51
58
  margin: true,
59
+ marginBlock: true,
60
+ marginBlockEnd: true,
61
+ marginBlockStart: true,
52
62
  marginBottom: true,
53
63
  marginEnd: true,
54
64
  marginHorizontal: true,
65
+ marginInline: true,
66
+ marginInlineEnd: true,
67
+ marginInlineStart: true,
55
68
  marginLeft: true,
56
69
  marginRight: true,
57
70
  marginStart: true,
@@ -63,9 +76,15 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
63
76
  minWidth: true,
64
77
  overflow: true,
65
78
  padding: true,
79
+ paddingBlock: true,
80
+ paddingBlockEnd: true,
81
+ paddingBlockStart: true,
66
82
  paddingBottom: true,
67
83
  paddingEnd: true,
68
84
  paddingHorizontal: true,
85
+ paddingInline: true,
86
+ paddingInlineEnd: true,
87
+ paddingInlineStart: true,
69
88
  paddingLeft: true,
70
89
  paddingRight: true,
71
90
  paddingStart: true,
@@ -98,6 +117,9 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
98
117
  */
99
118
  backfaceVisibility: true,
100
119
  backgroundColor: colorAttributes,
120
+ borderBlockColor: colorAttributes,
121
+ borderBlockEndColor: colorAttributes,
122
+ borderBlockStartColor: colorAttributes,
101
123
  borderBottomColor: colorAttributes,
102
124
  borderBottomEndRadius: true,
103
125
  borderBottomLeftRadius: true,
@@ -106,10 +128,14 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
106
128
  borderColor: colorAttributes,
107
129
  borderCurve: true,
108
130
  borderEndColor: colorAttributes,
131
+ borderEndEndRadius: true,
132
+ borderEndStartRadius: true,
109
133
  borderLeftColor: colorAttributes,
110
134
  borderRadius: true,
111
135
  borderRightColor: colorAttributes,
112
136
  borderStartColor: colorAttributes,
137
+ borderStartEndRadius: true,
138
+ borderStartStartRadius: true,
113
139
  borderStyle: true,
114
140
  borderTopColor: colorAttributes,
115
141
  borderTopEndRadius: true,
@@ -57,63 +57,89 @@ const View: React.AbstractComponent<
57
57
  nativeID,
58
58
  pointerEvents,
59
59
  role,
60
- style,
61
60
  tabIndex,
62
61
  ...otherProps
63
62
  }: ViewProps,
64
63
  forwardedRef,
65
64
  ) => {
65
+ const hasTextAncestor = React.useContext(TextAncestor);
66
66
  const _accessibilityLabelledBy =
67
67
  ariaLabelledBy?.split(/\s*,\s*/g) ?? accessibilityLabelledBy;
68
68
 
69
- const _accessibilityState = {
70
- busy: ariaBusy ?? accessibilityState?.busy,
71
- checked: ariaChecked ?? accessibilityState?.checked,
72
- disabled: ariaDisabled ?? accessibilityState?.disabled,
73
- expanded: ariaExpanded ?? accessibilityState?.expanded,
74
- selected: ariaSelected ?? accessibilityState?.selected,
75
- };
69
+ let _accessibilityState;
70
+ if (
71
+ accessibilityState != null ||
72
+ ariaBusy != null ||
73
+ ariaChecked != null ||
74
+ ariaDisabled != null ||
75
+ ariaExpanded != null ||
76
+ ariaSelected != null
77
+ ) {
78
+ _accessibilityState = {
79
+ busy: ariaBusy ?? accessibilityState?.busy,
80
+ checked: ariaChecked ?? accessibilityState?.checked,
81
+ disabled: ariaDisabled ?? accessibilityState?.disabled,
82
+ expanded: ariaExpanded ?? accessibilityState?.expanded,
83
+ selected: ariaSelected ?? accessibilityState?.selected,
84
+ };
85
+ }
86
+ let _accessibilityValue;
87
+ if (
88
+ accessibilityValue != null ||
89
+ ariaValueMax != null ||
90
+ ariaValueMin != null ||
91
+ ariaValueNow != null ||
92
+ ariaValueText != null
93
+ ) {
94
+ _accessibilityValue = {
95
+ max: ariaValueMax ?? accessibilityValue?.max,
96
+ min: ariaValueMin ?? accessibilityValue?.min,
97
+ now: ariaValueNow ?? accessibilityValue?.now,
98
+ text: ariaValueText ?? accessibilityValue?.text,
99
+ };
100
+ }
76
101
 
77
- const _accessibilityValue = {
78
- max: ariaValueMax ?? accessibilityValue?.max,
79
- min: ariaValueMin ?? accessibilityValue?.min,
80
- now: ariaValueNow ?? accessibilityValue?.now,
81
- text: ariaValueText ?? accessibilityValue?.text,
82
- };
102
+ // $FlowFixMe[underconstrained-implicit-instantiation]
103
+ let style = flattenStyle(otherProps.style);
83
104
 
84
- const flattenedStyle = flattenStyle(style);
85
- const newPointerEvents = flattenedStyle?.pointerEvents || pointerEvents;
105
+ const newPointerEvents = style?.pointerEvents || pointerEvents;
86
106
 
87
- return (
88
- <TextAncestor.Provider value={false}>
89
- <ViewNativeComponent
90
- {...otherProps}
91
- accessibilityLiveRegion={
92
- ariaLive === 'off' ? 'none' : ariaLive ?? accessibilityLiveRegion
93
- }
94
- accessibilityLabel={ariaLabel ?? accessibilityLabel}
95
- focusable={tabIndex !== undefined ? !tabIndex : focusable}
96
- accessibilityState={_accessibilityState}
97
- accessibilityRole={
98
- role ? getAccessibilityRoleFromRole(role) : accessibilityRole
99
- }
100
- accessibilityElementsHidden={
101
- ariaHidden ?? accessibilityElementsHidden
102
- }
103
- accessibilityLabelledBy={_accessibilityLabelledBy}
104
- accessibilityValue={_accessibilityValue}
105
- importantForAccessibility={
106
- ariaHidden === true
107
- ? 'no-hide-descendants'
108
- : importantForAccessibility
109
- }
110
- nativeID={id ?? nativeID}
111
- style={style}
112
- pointerEvents={newPointerEvents}
113
- ref={forwardedRef}
114
- />
115
- </TextAncestor.Provider>
107
+ const actualView = (
108
+ <ViewNativeComponent
109
+ {...otherProps}
110
+ accessibilityLiveRegion={
111
+ ariaLive === 'off' ? 'none' : ariaLive ?? accessibilityLiveRegion
112
+ }
113
+ accessibilityLabel={ariaLabel ?? accessibilityLabel}
114
+ focusable={tabIndex !== undefined ? !tabIndex : focusable}
115
+ accessibilityState={_accessibilityState}
116
+ accessibilityRole={
117
+ role ? getAccessibilityRoleFromRole(role) : accessibilityRole
118
+ }
119
+ accessibilityElementsHidden={ariaHidden ?? accessibilityElementsHidden}
120
+ accessibilityLabelledBy={_accessibilityLabelledBy}
121
+ accessibilityValue={_accessibilityValue}
122
+ importantForAccessibility={
123
+ ariaHidden === true
124
+ ? 'no-hide-descendants'
125
+ : importantForAccessibility
126
+ }
127
+ nativeID={id ?? nativeID}
128
+ style={style}
129
+ pointerEvents={newPointerEvents}
130
+ ref={forwardedRef}
131
+ />
116
132
  );
133
+
134
+ if (hasTextAncestor) {
135
+ return (
136
+ <TextAncestor.Provider value={false}>
137
+ {actualView}
138
+ </TextAncestor.Provider>
139
+ );
140
+ }
141
+
142
+ return actualView;
117
143
  },
118
144
  );
119
145
 
@@ -61,7 +61,6 @@ const View: React.AbstractComponent<
61
61
  nativeID,
62
62
  pointerEvents,
63
63
  role,
64
- style,
65
64
  tabIndex,
66
65
  ...otherProps
67
66
  }: ViewProps,
@@ -70,23 +69,43 @@ const View: React.AbstractComponent<
70
69
  const _accessibilityLabelledBy =
71
70
  ariaLabelledBy?.split(/\s*,\s*/g) ?? accessibilityLabelledBy;
72
71
 
73
- const _accessibilityState = {
74
- busy: ariaBusy ?? accessibilityState?.busy,
75
- checked: ariaChecked ?? accessibilityState?.checked,
76
- disabled: ariaDisabled ?? accessibilityState?.disabled,
77
- expanded: ariaExpanded ?? accessibilityState?.expanded,
78
- selected: ariaSelected ?? accessibilityState?.selected,
79
- };
72
+ let _accessibilityState;
73
+ if (
74
+ accessibilityState != null ||
75
+ ariaBusy != null ||
76
+ ariaChecked != null ||
77
+ ariaDisabled != null ||
78
+ ariaExpanded != null ||
79
+ ariaSelected != null
80
+ ) {
81
+ _accessibilityState = {
82
+ busy: ariaBusy ?? accessibilityState?.busy,
83
+ checked: ariaChecked ?? accessibilityState?.checked,
84
+ disabled: ariaDisabled ?? accessibilityState?.disabled,
85
+ expanded: ariaExpanded ?? accessibilityState?.expanded,
86
+ selected: ariaSelected ?? accessibilityState?.selected,
87
+ };
88
+ }
89
+ let _accessibilityValue;
90
+ if (
91
+ accessibilityValue != null ||
92
+ ariaValueMax != null ||
93
+ ariaValueMin != null ||
94
+ ariaValueNow != null ||
95
+ ariaValueText != null
96
+ ) {
97
+ _accessibilityValue = {
98
+ max: ariaValueMax ?? accessibilityValue?.max,
99
+ min: ariaValueMin ?? accessibilityValue?.min,
100
+ now: ariaValueNow ?? accessibilityValue?.now,
101
+ text: ariaValueText ?? accessibilityValue?.text,
102
+ };
103
+ }
80
104
 
81
- const _accessibilityValue = {
82
- max: ariaValueMax ?? accessibilityValue?.max,
83
- min: ariaValueMin ?? accessibilityValue?.min,
84
- now: ariaValueNow ?? accessibilityValue?.now,
85
- text: ariaValueText ?? accessibilityValue?.text,
86
- };
105
+ // $FlowFixMe[underconstrained-implicit-instantiation]
106
+ let style = flattenStyle(otherProps.style);
87
107
 
88
- const flattenedStyle = flattenStyle(style);
89
- const newPointerEvents = flattenedStyle?.pointerEvents || pointerEvents;
108
+ const newPointerEvents = style?.pointerEvents || pointerEvents;
90
109
 
91
110
  const _keyDown = (event: KeyEvent) => {
92
111
  if (otherProps.keyDownEvents && event.isPropagationStopped() !== true) {
@@ -141,7 +160,9 @@ const View: React.AbstractComponent<
141
160
  const childrenWithImportantForAccessibility = children => {
142
161
  return React.Children.map(children, child => {
143
162
  if (React.isValidElement(child)) {
163
+ // $FlowFixMe[incompatible-use]
144
164
  if (child.props.children) {
165
+ // $FlowFixMe[incompatible-type]
145
166
  return React.cloneElement(child, {
146
167
  accessible: false,
147
168
  children: childrenWithImportantForAccessibility(
@@ -149,6 +170,7 @@ const View: React.AbstractComponent<
149
170
  ),
150
171
  });
151
172
  } else {
173
+ // $FlowFixMe[incompatible-type]
152
174
  return React.cloneElement(child, {accessible: false});
153
175
  }
154
176
  }