@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
@@ -12,7 +12,7 @@ import type {
12
12
  ListRenderItem,
13
13
  ViewToken,
14
14
  VirtualizedListProps,
15
- } from './VirtualizedList';
15
+ } from '@react-native/virtualized-lists';
16
16
  import type {ScrollViewComponent} from '../Components/ScrollView/ScrollView';
17
17
  import type {StyleProp} from '../StyleSheet/StyleSheet';
18
18
  import type {ViewStyle} from '../StyleSheet/StyleSheetTypes';
@@ -41,7 +41,7 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
41
41
 
42
42
  /**
43
43
  * An array (or array-like list) of items to render. Other data types can be
44
- * used by targetting VirtualizedList directly.
44
+ * used by targeting VirtualizedList directly.
45
45
  */
46
46
  data: ArrayLike<ItemT> | null | undefined;
47
47
 
@@ -50,7 +50,7 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
50
50
  * If any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the `data` prop,
51
51
  * stick it here and treat it immutably.
52
52
  */
53
- extraData?: any;
53
+ extraData?: any | undefined;
54
54
 
55
55
  /**
56
56
  * `getItemLayout` is an optional optimization that lets us skip measurement of dynamic
@@ -66,7 +66,7 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
66
66
  */
67
67
  getItemLayout?:
68
68
  | ((
69
- data: Array<ItemT> | null | undefined,
69
+ data: ArrayLike<ItemT> | null | undefined,
70
70
  index: number,
71
71
  ) => {length: number; offset: number; index: number})
72
72
  | undefined;
@@ -104,19 +104,6 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
104
104
  */
105
105
  numColumns?: number | undefined;
106
106
 
107
- /**
108
- * Called once when the scroll position gets within onEndReachedThreshold of the rendered content.
109
- */
110
- onEndReached?: ((info: {distanceFromEnd: number}) => void) | null | undefined;
111
-
112
- /**
113
- * How far from the end (in units of visible length of the list) the bottom edge of the
114
- * list must be from the end of the content to trigger the `onEndReached` callback.
115
- * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is
116
- * within half the visible length of the list.
117
- */
118
- onEndReachedThreshold?: number | null | undefined;
119
-
120
107
  /**
121
108
  * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality.
122
109
  * Make sure to also set the refreshing prop correctly.
@@ -145,7 +132,7 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
145
132
  * _renderItem = ({item}) => (
146
133
  * <TouchableOpacity onPress={() => this._onPress(item)}>
147
134
  * <Text>{item.title}</Text>
148
- * <TouchableOpacity/>
135
+ * </TouchableOpacity>
149
136
  * );
150
137
  * ...
151
138
  * <FlatList data={[{title: 'Title Text', key: 'item1'}]} renderItem={this._renderItem} />
@@ -157,7 +144,7 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
157
144
  /**
158
145
  * See `ViewabilityHelper` for flow type and further documentation.
159
146
  */
160
- viewabilityConfig?: any;
147
+ viewabilityConfig?: any | undefined;
161
148
 
162
149
  /**
163
150
  * Note: may have bugs (missing content) in some circumstances - use at your own risk.
@@ -179,9 +166,10 @@ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
179
166
  fadingEdgeLength?: number | undefined;
180
167
  }
181
168
 
182
- export class FlatList<ItemT = any> extends React.Component<
183
- FlatListProps<ItemT>
184
- > {
169
+ export abstract class FlatListComponent<
170
+ ItemT,
171
+ Props,
172
+ > extends React.Component<Props> {
185
173
  /**
186
174
  * Scrolls to the end of the content. May be janky without `getItemLayout` prop.
187
175
  */
@@ -249,3 +237,8 @@ export class FlatList<ItemT = any> extends React.Component<
249
237
  // TODO: use `unknown` instead of `any` for Typescript >= 3.0
250
238
  setNativeProps: (props: {[key: string]: any}) => void;
251
239
  }
240
+
241
+ export class FlatList<ItemT = any> extends FlatListComponent<
242
+ ItemT,
243
+ FlatListProps<ItemT>
244
+ > {}
@@ -11,14 +11,17 @@
11
11
  import typeof ScrollViewNativeComponent from '../Components/ScrollView/ScrollViewNativeComponent';
12
12
  import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
13
13
  import type {
14
+ RenderItemProps,
15
+ RenderItemType,
14
16
  ViewabilityConfigCallbackPair,
15
17
  ViewToken,
16
- } from './ViewabilityHelper';
17
- import type {RenderItemProps, RenderItemType} from './VirtualizedList';
18
+ } from '@react-native/virtualized-lists';
18
19
 
19
20
  import {type ScrollResponderType} from '../Components/ScrollView/ScrollView';
20
- import VirtualizedList from './VirtualizedList';
21
- import {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils';
21
+ import {
22
+ VirtualizedList,
23
+ keyExtractor as defaultKeyExtractor,
24
+ } from '@react-native/virtualized-lists';
22
25
  import memoizeOne from 'memoize-one';
23
26
 
24
27
  const View = require('../Components/View/View');
@@ -31,7 +34,7 @@ const React = require('react');
31
34
  type RequiredProps<ItemT> = {|
32
35
  /**
33
36
  * An array (or array-like list) of items to render. Other data types can be
34
- * used by targetting VirtualizedList directly.
37
+ * used by targeting VirtualizedList directly.
35
38
  */
36
39
  data: ?$ArrayLike<ItemT>,
37
40
  |};
@@ -88,7 +91,7 @@ type OptionalProps<ItemT> = {|
88
91
  * specify `ItemSeparatorComponent`.
89
92
  */
90
93
  getItemLayout?: (
91
- data: ?Array<ItemT>,
94
+ data: ?$ArrayLike<ItemT>,
92
95
  index: number,
93
96
  ) => {
94
97
  length: number,
@@ -11,7 +11,7 @@ import type * as React from 'react';
11
11
  import type {
12
12
  ListRenderItemInfo,
13
13
  VirtualizedListWithoutRenderItemProps,
14
- } from './VirtualizedList';
14
+ } from '@react-native/virtualized-lists';
15
15
  import type {
16
16
  ScrollView,
17
17
  ScrollViewProps,
@@ -75,7 +75,7 @@ export interface SectionListProps<ItemT, SectionT = DefaultSectionT>
75
75
  * If any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the `data` prop,
76
76
  * stick it here and treat it immutably.
77
77
  */
78
- extraData?: any;
78
+ extraData?: any | undefined;
79
79
 
80
80
  /**
81
81
  * `getItemLayout` is an optional optimization that lets us skip measurement of dynamic
@@ -210,10 +210,9 @@ export interface SectionListScrollParams {
210
210
  viewPosition?: number | undefined;
211
211
  }
212
212
 
213
- export class SectionList<
214
- ItemT = any,
215
- SectionT = DefaultSectionT,
216
- > extends React.Component<SectionListProps<ItemT, SectionT>> {
213
+ export abstract class SectionListComponent<
214
+ Props,
215
+ > extends React.Component<Props> {
217
216
  /**
218
217
  * Scrolls to the item at the specified sectionIndex and itemIndex (within the section)
219
218
  * positioned in the viewable area such that viewPosition 0 places it at the top
@@ -246,6 +245,11 @@ export class SectionList<
246
245
  getScrollableNode(): NodeHandle | undefined;
247
246
  }
248
247
 
248
+ export class SectionList<
249
+ ItemT = any,
250
+ SectionT = DefaultSectionT,
251
+ > extends SectionListComponent<SectionListProps<ItemT, SectionT>> {}
252
+
249
253
  /* This definition is deprecated because it extends the wrong base type */
250
254
  export interface SectionListStatic<ItemT, SectionT = DefaultSectionT>
251
255
  extends React.ComponentClass<SectionListProps<ItemT, SectionT>> {
@@ -12,13 +12,13 @@
12
12
 
13
13
  import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
14
14
  import type {
15
- Props as VirtualizedSectionListProps,
16
15
  ScrollToLocationParamsType,
17
16
  SectionBase as _SectionBase,
18
- } from './VirtualizedSectionList';
17
+ VirtualizedSectionListProps,
18
+ } from '@react-native/virtualized-lists';
19
19
 
20
20
  import Platform from '../Utilities/Platform';
21
- import VirtualizedSectionList from './VirtualizedSectionList';
21
+ import {VirtualizedSectionList} from '@react-native/virtualized-lists';
22
22
  import * as React from 'react';
23
23
 
24
24
  type Item = any;
@@ -248,7 +248,9 @@ export default class SectionList<
248
248
  {...restProps}
249
249
  stickySectionHeadersEnabled={stickySectionHeadersEnabled}
250
250
  ref={this._captureRef}
251
+ // $FlowFixMe[missing-local-annot]
251
252
  getItemCount={items => items.length}
253
+ // $FlowFixMe[missing-local-annot]
252
254
  getItem={(items, index) => items[index]}
253
255
  />
254
256
  );
@@ -12,14 +12,14 @@
12
12
 
13
13
  import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
14
14
  import type {
15
- Props as VirtualizedSectionListProps,
16
15
  ScrollToLocationParamsType,
17
16
  SectionBase as _SectionBase,
18
- } from './VirtualizedSectionList';
17
+ VirtualizedSectionListProps,
18
+ } from '@react-native/virtualized-lists';
19
19
  import type {AbstractComponent, Element, ElementRef} from 'react';
20
20
 
21
21
  import Platform from '../Utilities/Platform';
22
- import VirtualizedSectionList from './VirtualizedSectionList';
22
+ import {VirtualizedSectionList} from '@react-native/virtualized-lists';
23
23
  import React, {forwardRef, useImperativeHandle, useRef} from 'react';
24
24
 
25
25
  type Item = any;
@@ -10,351 +10,15 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {FrameMetricProps} from './VirtualizedListProps';
13
+ export type {
14
+ ViewToken,
15
+ ViewabilityConfig,
16
+ ViewabilityConfigCallbackPair,
17
+ } from '@react-native/virtualized-lists';
14
18
 
15
- const invariant = require('invariant');
19
+ import {typeof ViewabilityHelper as ViewabilityHelperType} from '@react-native/virtualized-lists';
16
20
 
17
- export type ViewToken = {
18
- item: any,
19
- key: string,
20
- index: ?number,
21
- isViewable: boolean,
22
- section?: any,
23
- ...
24
- };
25
-
26
- export type ViewabilityConfigCallbackPair = {
27
- viewabilityConfig: ViewabilityConfig,
28
- onViewableItemsChanged: (info: {
29
- viewableItems: Array<ViewToken>,
30
- changed: Array<ViewToken>,
31
- ...
32
- }) => void,
33
- ...
34
- };
35
-
36
- export type ViewabilityConfig = {|
37
- /**
38
- * Minimum amount of time (in milliseconds) that an item must be physically viewable before the
39
- * viewability callback will be fired. A high number means that scrolling through content without
40
- * stopping will not mark the content as viewable.
41
- */
42
- minimumViewTime?: number,
43
-
44
- /**
45
- * Percent of viewport that must be covered for a partially occluded item to count as
46
- * "viewable", 0-100. Fully visible items are always considered viewable. A value of 0 means
47
- * that a single pixel in the viewport makes the item viewable, and a value of 100 means that
48
- * an item must be either entirely visible or cover the entire viewport to count as viewable.
49
- */
50
- viewAreaCoveragePercentThreshold?: number,
51
-
52
- /**
53
- * Similar to `viewAreaPercentThreshold`, but considers the percent of the item that is visible,
54
- * rather than the fraction of the viewable area it covers.
55
- */
56
- itemVisiblePercentThreshold?: number,
57
-
58
- /**
59
- * Nothing is considered viewable until the user scrolls or `recordInteraction` is called after
60
- * render.
61
- */
62
- waitForInteraction?: boolean,
63
- |};
64
-
65
- /**
66
- * A Utility class for calculating viewable items based on current metrics like scroll position and
67
- * layout.
68
- *
69
- * An item is said to be in a "viewable" state when any of the following
70
- * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`
71
- * is true):
72
- *
73
- * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item
74
- * visible in the view area >= `itemVisiblePercentThreshold`.
75
- * - Entirely visible on screen
76
- */
77
- class ViewabilityHelper {
78
- _config: ViewabilityConfig;
79
- _hasInteracted: boolean = false;
80
- _timers: Set<number> = new Set();
81
- _viewableIndices: Array<number> = [];
82
- _viewableItems: Map<string, ViewToken> = new Map();
83
-
84
- constructor(
85
- config: ViewabilityConfig = {viewAreaCoveragePercentThreshold: 0},
86
- ) {
87
- this._config = config;
88
- }
89
-
90
- /**
91
- * Cleanup, e.g. on unmount. Clears any pending timers.
92
- */
93
- dispose() {
94
- /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This
95
- * comment suppresses an error found when Flow v0.63 was deployed. To see
96
- * the error delete this comment and run Flow. */
97
- this._timers.forEach(clearTimeout);
98
- }
99
-
100
- /**
101
- * Determines which items are viewable based on the current metrics and config.
102
- */
103
- computeViewableItems(
104
- props: FrameMetricProps,
105
- scrollOffset: number,
106
- viewportHeight: number,
107
- getFrameMetrics: (
108
- index: number,
109
- props: FrameMetricProps,
110
- ) => ?{
111
- length: number,
112
- offset: number,
113
- ...
114
- },
115
- // Optional optimization to reduce the scan size
116
- renderRange?: {
117
- first: number,
118
- last: number,
119
- ...
120
- },
121
- ): Array<number> {
122
- const itemCount = props.getItemCount(props.data);
123
- const {itemVisiblePercentThreshold, viewAreaCoveragePercentThreshold} =
124
- this._config;
125
- const viewAreaMode = viewAreaCoveragePercentThreshold != null;
126
- const viewablePercentThreshold = viewAreaMode
127
- ? viewAreaCoveragePercentThreshold
128
- : itemVisiblePercentThreshold;
129
- invariant(
130
- viewablePercentThreshold != null &&
131
- (itemVisiblePercentThreshold != null) !==
132
- (viewAreaCoveragePercentThreshold != null),
133
- 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold',
134
- );
135
- const viewableIndices = [];
136
- if (itemCount === 0) {
137
- return viewableIndices;
138
- }
139
- let firstVisible = -1;
140
- const {first, last} = renderRange || {first: 0, last: itemCount - 1};
141
- if (last >= itemCount) {
142
- console.warn(
143
- 'Invalid render range computing viewability ' +
144
- JSON.stringify({renderRange, itemCount}),
145
- );
146
- return [];
147
- }
148
- for (let idx = first; idx <= last; idx++) {
149
- const metrics = getFrameMetrics(idx, props);
150
- if (!metrics) {
151
- continue;
152
- }
153
- const top = metrics.offset - scrollOffset;
154
- const bottom = top + metrics.length;
155
- if (top < viewportHeight && bottom > 0) {
156
- firstVisible = idx;
157
- if (
158
- _isViewable(
159
- viewAreaMode,
160
- viewablePercentThreshold,
161
- top,
162
- bottom,
163
- viewportHeight,
164
- metrics.length,
165
- )
166
- ) {
167
- viewableIndices.push(idx);
168
- }
169
- } else if (firstVisible >= 0) {
170
- break;
171
- }
172
- }
173
- return viewableIndices;
174
- }
175
-
176
- /**
177
- * Figures out which items are viewable and how that has changed from before and calls
178
- * `onViewableItemsChanged` as appropriate.
179
- */
180
- onUpdate(
181
- props: FrameMetricProps,
182
- scrollOffset: number,
183
- viewportHeight: number,
184
- getFrameMetrics: (
185
- index: number,
186
- props: FrameMetricProps,
187
- ) => ?{
188
- length: number,
189
- offset: number,
190
- ...
191
- },
192
- createViewToken: (
193
- index: number,
194
- isViewable: boolean,
195
- props: FrameMetricProps,
196
- ) => ViewToken,
197
- onViewableItemsChanged: ({
198
- viewableItems: Array<ViewToken>,
199
- changed: Array<ViewToken>,
200
- ...
201
- }) => void,
202
- // Optional optimization to reduce the scan size
203
- renderRange?: {
204
- first: number,
205
- last: number,
206
- ...
207
- },
208
- ): void {
209
- const itemCount = props.getItemCount(props.data);
210
- if (
211
- (this._config.waitForInteraction && !this._hasInteracted) ||
212
- itemCount === 0 ||
213
- !getFrameMetrics(0, props)
214
- ) {
215
- return;
216
- }
217
- let viewableIndices: Array<number> = [];
218
- if (itemCount) {
219
- viewableIndices = this.computeViewableItems(
220
- props,
221
- scrollOffset,
222
- viewportHeight,
223
- getFrameMetrics,
224
- renderRange,
225
- );
226
- }
227
- if (
228
- this._viewableIndices.length === viewableIndices.length &&
229
- this._viewableIndices.every((v, ii) => v === viewableIndices[ii])
230
- ) {
231
- // We might get a lot of scroll events where visibility doesn't change and we don't want to do
232
- // extra work in those cases.
233
- return;
234
- }
235
- this._viewableIndices = viewableIndices;
236
- if (this._config.minimumViewTime) {
237
- const handle: TimeoutID = setTimeout(() => {
238
- /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This
239
- * comment suppresses an error found when Flow v0.63 was deployed. To
240
- * see the error delete this comment and run Flow. */
241
- this._timers.delete(handle);
242
- this._onUpdateSync(
243
- props,
244
- viewableIndices,
245
- onViewableItemsChanged,
246
- createViewToken,
247
- );
248
- }, this._config.minimumViewTime);
249
- /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This
250
- * comment suppresses an error found when Flow v0.63 was deployed. To see
251
- * the error delete this comment and run Flow. */
252
- this._timers.add(handle);
253
- } else {
254
- this._onUpdateSync(
255
- props,
256
- viewableIndices,
257
- onViewableItemsChanged,
258
- createViewToken,
259
- );
260
- }
261
- }
262
-
263
- /**
264
- * clean-up cached _viewableIndices to evaluate changed items on next update
265
- */
266
- resetViewableIndices() {
267
- this._viewableIndices = [];
268
- }
269
-
270
- /**
271
- * Records that an interaction has happened even if there has been no scroll.
272
- */
273
- recordInteraction() {
274
- this._hasInteracted = true;
275
- }
276
-
277
- _onUpdateSync(
278
- props: FrameMetricProps,
279
- viewableIndicesToCheck: Array<number>,
280
- onViewableItemsChanged: ({
281
- changed: Array<ViewToken>,
282
- viewableItems: Array<ViewToken>,
283
- ...
284
- }) => void,
285
- createViewToken: (
286
- index: number,
287
- isViewable: boolean,
288
- props: FrameMetricProps,
289
- ) => ViewToken,
290
- ) {
291
- // Filter out indices that have gone out of view since this call was scheduled.
292
- viewableIndicesToCheck = viewableIndicesToCheck.filter(ii =>
293
- this._viewableIndices.includes(ii),
294
- );
295
- const prevItems = this._viewableItems;
296
- const nextItems = new Map(
297
- viewableIndicesToCheck.map(ii => {
298
- const viewable = createViewToken(ii, true, props);
299
- return [viewable.key, viewable];
300
- }),
301
- );
302
-
303
- const changed = [];
304
- for (const [key, viewable] of nextItems) {
305
- if (!prevItems.has(key)) {
306
- changed.push(viewable);
307
- }
308
- }
309
- for (const [key, viewable] of prevItems) {
310
- if (!nextItems.has(key)) {
311
- changed.push({...viewable, isViewable: false});
312
- }
313
- }
314
- if (changed.length > 0) {
315
- this._viewableItems = nextItems;
316
- onViewableItemsChanged({
317
- viewableItems: Array.from(nextItems.values()),
318
- changed,
319
- viewabilityConfig: this._config,
320
- });
321
- }
322
- }
323
- }
324
-
325
- function _isViewable(
326
- viewAreaMode: boolean,
327
- viewablePercentThreshold: number,
328
- top: number,
329
- bottom: number,
330
- viewportHeight: number,
331
- itemLength: number,
332
- ): boolean {
333
- if (_isEntirelyVisible(top, bottom, viewportHeight)) {
334
- return true;
335
- } else {
336
- const pixels = _getPixelsVisible(top, bottom, viewportHeight);
337
- const percent =
338
- 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);
339
- return percent >= viewablePercentThreshold;
340
- }
341
- }
342
-
343
- function _getPixelsVisible(
344
- top: number,
345
- bottom: number,
346
- viewportHeight: number,
347
- ): number {
348
- const visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);
349
- return Math.max(0, visibleHeight);
350
- }
351
-
352
- function _isEntirelyVisible(
353
- top: number,
354
- bottom: number,
355
- viewportHeight: number,
356
- ): boolean {
357
- return top >= 0 && bottom <= viewportHeight && bottom > top;
358
- }
21
+ const ViewabilityHelper: ViewabilityHelperType =
22
+ require('@react-native/virtualized-lists').ViewabilityHelper;
359
23
 
360
24
  module.exports = ViewabilityHelper;