@office-iss/react-native-win32 0.70.2 → 0.71.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 (559) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +2 -0
  3. package/.flowconfig +3 -6
  4. package/CHANGELOG.json +281 -43
  5. package/CHANGELOG.md +105 -24
  6. package/IntegrationTests/AccessibilityManagerTest.js +1 -1
  7. package/IntegrationTests/AppEventsTest.js +0 -1
  8. package/IntegrationTests/BUCK +0 -1
  9. package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
  10. package/IntegrationTests/ImageSnapshotTest.js +1 -1
  11. package/IntegrationTests/IntegrationTestsApp.js +2 -3
  12. package/IntegrationTests/SimpleSnapshotTest.js +1 -1
  13. package/IntegrationTests/SyncMethodTest.js +1 -1
  14. package/IntegrationTests/TimersTest.js +4 -4
  15. package/IntegrationTests/WebSocketTest.js +3 -3
  16. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +80 -0
  17. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +4 -3
  18. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  19. package/Libraries/Alert/Alert.d.ts +90 -0
  20. package/Libraries/Alert/Alert.js +7 -1
  21. package/Libraries/Alert/Alert.win32.js +1 -0
  22. package/Libraries/Alert/NativeAlertManager.js +2 -0
  23. package/Libraries/Alert/RCTAlertManager.ios.js +2 -1
  24. package/Libraries/Animated/Animated.d.ts +587 -0
  25. package/Libraries/Animated/Animated.js +13 -11
  26. package/Libraries/Animated/AnimatedEvent.js +12 -17
  27. package/Libraries/Animated/AnimatedImplementation.js +21 -23
  28. package/Libraries/Animated/AnimatedMock.js +11 -13
  29. package/Libraries/Animated/AnimatedWeb.js +2 -2
  30. package/Libraries/Animated/Easing.d.ts +37 -0
  31. package/Libraries/Animated/Easing.js +2 -2
  32. package/Libraries/Animated/NativeAnimatedHelper.js +32 -22
  33. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  34. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  35. package/Libraries/Animated/SpringConfig.js +2 -7
  36. package/Libraries/Animated/animations/Animation.js +3 -4
  37. package/Libraries/Animated/animations/DecayAnimation.js +5 -8
  38. package/Libraries/Animated/animations/SpringAnimation.js +9 -14
  39. package/Libraries/Animated/animations/TimingAnimation.js +9 -13
  40. package/Libraries/Animated/bezier.js +2 -2
  41. package/Libraries/Animated/components/AnimatedFlatList.js +5 -6
  42. package/Libraries/Animated/components/AnimatedImage.js +5 -6
  43. package/Libraries/Animated/components/AnimatedScrollView.js +110 -14
  44. package/Libraries/Animated/components/AnimatedSectionList.js +4 -5
  45. package/Libraries/Animated/components/AnimatedText.js +5 -6
  46. package/Libraries/Animated/components/AnimatedView.js +5 -6
  47. package/Libraries/Animated/createAnimatedComponent.js +13 -20
  48. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +2 -2
  49. package/Libraries/Animated/nodes/AnimatedAddition.js +6 -8
  50. package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
  51. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +6 -8
  52. package/Libraries/Animated/nodes/AnimatedDivision.js +7 -9
  53. package/Libraries/Animated/nodes/AnimatedInterpolation.js +7 -10
  54. package/Libraries/Animated/nodes/AnimatedModulo.js +6 -8
  55. package/Libraries/Animated/nodes/AnimatedMultiplication.js +7 -9
  56. package/Libraries/Animated/nodes/AnimatedNode.js +10 -8
  57. package/Libraries/Animated/nodes/AnimatedProps.js +12 -30
  58. package/Libraries/Animated/nodes/AnimatedStyle.js +12 -22
  59. package/Libraries/Animated/nodes/AnimatedSubtraction.js +7 -9
  60. package/Libraries/Animated/nodes/AnimatedTracking.js +8 -12
  61. package/Libraries/Animated/nodes/AnimatedTransform.js +38 -31
  62. package/Libraries/Animated/nodes/AnimatedValue.js +9 -10
  63. package/Libraries/Animated/nodes/AnimatedValueXY.js +4 -7
  64. package/Libraries/Animated/nodes/AnimatedWithChildren.js +4 -5
  65. package/Libraries/Animated/useAnimatedProps.js +8 -16
  66. package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
  67. package/Libraries/Animated/useAnimatedValue.js +25 -0
  68. package/Libraries/AppState/AppState.d.ts +58 -0
  69. package/Libraries/AppState/AppState.js +3 -7
  70. package/Libraries/AppState/NativeAppState.js +1 -0
  71. package/Libraries/BatchedBridge/MessageQueue.js +9 -5
  72. package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
  73. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  74. package/Libraries/Blob/BlobManager.js +5 -3
  75. package/Libraries/Blob/File.js +2 -3
  76. package/Libraries/Blob/FileReader.js +6 -5
  77. package/Libraries/Blob/NativeBlobModule.js +1 -0
  78. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  79. package/Libraries/Blob/URL.js +11 -9
  80. package/Libraries/BugReporting/NativeBugReporting.js +1 -0
  81. package/Libraries/BugReporting/getReactData.js +1 -1
  82. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +128 -0
  83. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +208 -0
  84. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +40 -8
  85. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +40 -8
  86. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -0
  87. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +5 -0
  88. package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
  89. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +58 -0
  90. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +7 -8
  91. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
  92. package/Libraries/Components/Button.d.ts +42 -0
  93. package/Libraries/Components/Button.flow.js +265 -0
  94. package/Libraries/Components/Button.js +62 -18
  95. package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
  96. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -0
  97. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -2
  98. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +92 -0
  99. package/Libraries/Components/{MaskedView/MaskedViewIOS.android.js → DatePicker/DatePickerIOS.flow.android.js} +3 -2
  100. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +113 -0
  101. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +8 -7
  102. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +4 -2
  103. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +7 -6
  104. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +1 -0
  105. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +9 -8
  106. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +13 -14
  107. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
  108. package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
  109. package/Libraries/Components/Keyboard/Keyboard.js +35 -8
  110. package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
  111. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +35 -15
  112. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -0
  113. package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
  114. package/Libraries/Components/Pressable/Pressable.js +73 -15
  115. package/Libraries/Components/Pressable/Pressable.win32.js +77 -19
  116. package/Libraries/Components/Pressable/useAndroidRippleForView.js +6 -3
  117. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +3 -3
  118. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
  119. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
  120. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +1 -1
  121. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +62 -0
  122. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +4 -4
  123. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +1 -1
  124. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +2 -2
  125. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +5 -6
  126. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +4 -4
  127. package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
  128. package/Libraries/Components/RefreshControl/RefreshControl.js +4 -3
  129. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
  130. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -1
  131. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
  132. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +19 -0
  133. package/Libraries/Components/SafeAreaView/SafeAreaView.js +5 -4
  134. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +5 -4
  135. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -1
  136. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -1
  137. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -1
  138. package/Libraries/Components/ScrollView/ScrollView.d.ts +911 -0
  139. package/Libraries/Components/ScrollView/ScrollView.js +87 -52
  140. package/Libraries/Components/ScrollView/ScrollViewCommands.js +3 -3
  141. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +2 -1
  142. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +3 -3
  143. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +243 -269
  144. package/Libraries/Components/Slider/Slider.d.ts +132 -0
  145. package/Libraries/Components/Slider/Slider.js +9 -9
  146. package/Libraries/Components/Slider/SliderNativeComponent.js +4 -5
  147. package/Libraries/Components/Sound/NativeSoundManager.js +1 -0
  148. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -0
  149. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -0
  150. package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
  151. package/Libraries/Components/StatusBar/StatusBar.js +7 -7
  152. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +10 -10
  153. package/Libraries/Components/Switch/Switch.d.ts +115 -0
  154. package/Libraries/Components/Switch/Switch.js +7 -7
  155. package/Libraries/Components/Switch/SwitchNativeComponent.js +9 -4
  156. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +40 -12
  157. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
  158. package/Libraries/Components/TextInput/InputAccessoryView.js +3 -4
  159. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -1
  160. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +3 -2
  161. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +3 -2
  162. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -1
  163. package/Libraries/Components/TextInput/TextInput.d.ts +840 -0
  164. package/Libraries/Components/TextInput/TextInput.flow.js +1057 -0
  165. package/Libraries/Components/TextInput/TextInput.js +344 -38
  166. package/Libraries/Components/TextInput/TextInput.win32.d.ts +1 -1
  167. package/Libraries/Components/TextInput/TextInput.win32.js +1 -1
  168. package/Libraries/Components/TextInput/TextInput.win32.js.map +1 -1
  169. package/Libraries/Components/TextInput/TextInputNativeCommands.js +2 -2
  170. package/Libraries/Components/TextInput/TextInputState.js +22 -5
  171. package/Libraries/Components/TextInput/TextInputState.win32.js +24 -5
  172. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -0
  173. package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +47 -0
  174. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  175. package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
  176. package/Libraries/Components/Touchable/Touchable.flow.js +258 -0
  177. package/Libraries/Components/Touchable/Touchable.js +12 -12
  178. package/Libraries/Components/Touchable/Touchable.win32.js +12 -12
  179. package/Libraries/Components/Touchable/TouchableBounce.js +44 -10
  180. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +68 -0
  181. package/Libraries/Components/Touchable/TouchableHighlight.js +32 -9
  182. package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +114 -0
  183. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +54 -20
  184. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +109 -0
  185. package/Libraries/Components/Touchable/TouchableOpacity.js +54 -16
  186. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +2 -1
  187. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  188. package/Libraries/Components/Touchable/TouchableWin32.js +0 -1
  189. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  190. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +143 -0
  191. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +64 -10
  192. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -1
  193. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  194. package/Libraries/Components/View/ReactNativeStyleAttributes.js +13 -2
  195. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
  196. package/Libraries/Components/View/View.d.ts +29 -0
  197. package/Libraries/Components/View/View.js +91 -8
  198. package/Libraries/Components/View/View.win32.js +176 -89
  199. package/Libraries/Components/View/ViewAccessibility.d.ts +360 -0
  200. package/Libraries/Components/View/ViewAccessibility.js +70 -1
  201. package/Libraries/Components/View/ViewNativeComponent.js +3 -3
  202. package/Libraries/Components/View/ViewPropTypes.d.ts +245 -0
  203. package/Libraries/Components/View/ViewPropTypes.js +105 -13
  204. package/Libraries/Components/View/ViewPropTypes.win32.js +105 -13
  205. package/Libraries/Components/View/ViewWin32.Props.d.ts +6 -1
  206. package/Libraries/Components/View/ViewWin32.Props.js.map +1 -1
  207. package/Libraries/Core/Devtools/openFileInEditor.js +3 -0
  208. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  209. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  210. package/Libraries/Core/ExceptionsManager.js +8 -0
  211. package/Libraries/Core/ExtendedError.js +11 -8
  212. package/Libraries/Core/InitializeCore.js +2 -1
  213. package/Libraries/Core/NativeExceptionsManager.js +3 -4
  214. package/Libraries/Core/RawEventEmitter.js +2 -1
  215. package/Libraries/Core/ReactFiberErrorDialog.js +2 -2
  216. package/Libraries/Core/ReactNativeVersion.js +2 -2
  217. package/Libraries/Core/ReactNativeVersionCheck.js +1 -0
  218. package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -0
  219. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  220. package/Libraries/Core/Timers/JSTimers.js +13 -11
  221. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  222. package/Libraries/Core/setUpBatchedBridge.js +1 -5
  223. package/Libraries/Core/setUpDeveloperTools.js +4 -6
  224. package/Libraries/Core/setUpReactDevTools.js +4 -1
  225. package/Libraries/Core/setUpRegeneratorRuntime.js +1 -1
  226. package/Libraries/Core/setUpTimers.js +1 -1
  227. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +70 -0
  228. package/Libraries/EventEmitter/NativeEventEmitter.js +1 -0
  229. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +30 -0
  230. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
  231. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
  232. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +1 -0
  233. package/Libraries/Events/EventPolyfill.js +1 -1
  234. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +1 -0
  235. package/Libraries/Image/AssetSourceResolver.js +4 -6
  236. package/Libraries/Image/Image.android.js +63 -45
  237. package/Libraries/Image/Image.d.ts +322 -0
  238. package/Libraries/Image/Image.flow.js +64 -0
  239. package/Libraries/Image/Image.ios.js +55 -28
  240. package/Libraries/Image/Image.win32.js +54 -25
  241. package/Libraries/Image/ImageBackground.js +18 -7
  242. package/Libraries/Image/ImageInjection.js +2 -1
  243. package/Libraries/Image/ImageProps.js +88 -5
  244. package/Libraries/Image/ImageResizeMode.d.ts +49 -0
  245. package/Libraries/Image/ImageSource.d.ts +76 -0
  246. package/Libraries/Image/ImageSourceUtils.js +80 -0
  247. package/Libraries/Image/ImageUtils.js +21 -0
  248. package/Libraries/Image/ImageViewNativeComponent.js +8 -5
  249. package/Libraries/Image/NativeImageEditor.js +1 -0
  250. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  251. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  252. package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
  253. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  254. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  255. package/Libraries/Image/TextInlineImageNativeComponent.js +4 -3
  256. package/Libraries/Image/nativeImageSource.js +2 -2
  257. package/Libraries/Image/resolveAssetSource.js +5 -5
  258. package/Libraries/Inspector/BorderBox.js +1 -1
  259. package/Libraries/Inspector/BoxInspector.js +3 -4
  260. package/Libraries/Inspector/DevtoolsOverlay.js +213 -0
  261. package/Libraries/Inspector/ElementBox.js +4 -5
  262. package/Libraries/Inspector/ElementProperties.js +10 -11
  263. package/Libraries/Inspector/Inspector.js +22 -108
  264. package/Libraries/Inspector/Inspector.win32.js +23 -109
  265. package/Libraries/Inspector/InspectorOverlay.js +5 -5
  266. package/Libraries/Inspector/InspectorOverlay.win32.js +5 -5
  267. package/Libraries/Inspector/InspectorPanel.js +12 -10
  268. package/Libraries/Inspector/NetworkOverlay.js +7 -3
  269. package/Libraries/Inspector/PerformanceOverlay.js +3 -3
  270. package/Libraries/Inspector/StyleInspector.js +2 -2
  271. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +71 -0
  272. package/Libraries/Interaction/BridgeSpyStallHandler.js +1 -1
  273. package/Libraries/Interaction/InteractionManager.d.ts +74 -0
  274. package/Libraries/Interaction/InteractionManager.js +8 -8
  275. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  276. package/Libraries/Interaction/PanResponder.d.ts +202 -0
  277. package/Libraries/Interaction/PanResponder.flow.js +257 -0
  278. package/Libraries/Interaction/PanResponder.js +4 -3
  279. package/Libraries/JSInspector/JSInspector.js +0 -3
  280. package/Libraries/JSInspector/NetworkAgent.js +3 -3
  281. package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
  282. package/Libraries/LayoutAnimation/LayoutAnimation.js +4 -3
  283. package/Libraries/Linking/Linking.d.ts +61 -0
  284. package/Libraries/Linking/Linking.js +3 -2
  285. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  286. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  287. package/Libraries/Lists/CellRenderMask.js +13 -3
  288. package/Libraries/Lists/ChildListCollection.js +72 -0
  289. package/Libraries/Lists/FillRateHelper.js +28 -17
  290. package/Libraries/Lists/FlatList.d.ts +292 -0
  291. package/Libraries/Lists/FlatList.js +70 -70
  292. package/Libraries/Lists/SectionList.d.ts +300 -0
  293. package/Libraries/Lists/SectionList.js +5 -5
  294. package/Libraries/Lists/SectionListModern.js +6 -6
  295. package/Libraries/Lists/StateSafePureComponent.js +85 -0
  296. package/Libraries/Lists/ViewabilityHelper.js +33 -12
  297. package/Libraries/Lists/VirtualizeUtils.js +17 -13
  298. package/Libraries/Lists/VirtualizedList.d.ts +317 -0
  299. package/Libraries/Lists/VirtualizedList.js +548 -890
  300. package/Libraries/Lists/VirtualizedListCellRenderer.js +259 -0
  301. package/Libraries/Lists/VirtualizedListContext.js +7 -48
  302. package/Libraries/Lists/VirtualizedListProps.js +279 -0
  303. package/Libraries/Lists/VirtualizedSectionList.js +6 -3
  304. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  305. package/Libraries/LogBox/Data/LogBoxData.js +9 -8
  306. package/Libraries/LogBox/Data/LogBoxLog.js +5 -5
  307. package/Libraries/LogBox/Data/LogBoxSymbolication.js +4 -4
  308. package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -3
  309. package/Libraries/LogBox/LogBox.d.ts +28 -0
  310. package/Libraries/LogBox/LogBox.js +11 -11
  311. package/Libraries/LogBox/LogBoxInspectorContainer.js +5 -3
  312. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  313. package/Libraries/LogBox/UI/AnsiHighlight.js +5 -3
  314. package/Libraries/LogBox/UI/LogBoxButton.js +6 -5
  315. package/Libraries/LogBox/UI/LogBoxInspector.js +6 -6
  316. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +9 -8
  317. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +3 -3
  318. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +7 -6
  319. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +6 -5
  320. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +6 -5
  321. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +7 -6
  322. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +2 -2
  323. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -3
  324. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +5 -5
  325. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +5 -5
  326. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +5 -5
  327. package/Libraries/LogBox/UI/LogBoxMessage.js +3 -3
  328. package/Libraries/LogBox/UI/LogBoxNotification.js +6 -5
  329. package/Libraries/Modal/Modal.d.ts +104 -0
  330. package/Libraries/Modal/Modal.js +14 -14
  331. package/Libraries/Modal/NativeModalManager.js +1 -0
  332. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -3
  333. package/Libraries/NativeComponent/BaseViewConfig.android.js +27 -2
  334. package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -3
  335. package/Libraries/NativeComponent/BaseViewConfig.win32.js +8 -3
  336. package/Libraries/NativeComponent/NativeComponentRegistry.js +5 -4
  337. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -0
  338. package/Libraries/NativeComponent/StaticViewConfigValidator.js +1 -1
  339. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  340. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +1 -0
  341. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  342. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  343. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  344. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  345. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -2
  346. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  347. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  348. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  349. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  350. package/Libraries/Network/RCTNetworking.android.js +4 -3
  351. package/Libraries/Network/RCTNetworking.ios.js +3 -2
  352. package/Libraries/Network/RCTNetworking.win32.js +1 -0
  353. package/Libraries/Network/convertRequestBody.js +1 -2
  354. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -1
  355. package/Libraries/NewAppScreen/components/Header.js +6 -2
  356. package/Libraries/NewAppScreen/components/HermesBadge.js +6 -2
  357. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +8 -9
  358. package/Libraries/NewAppScreen/components/ReloadInstructions.js +4 -1
  359. package/Libraries/NewAppScreen/index.js +1 -1
  360. package/Libraries/Performance/NativeJSCSamplingProfiler.js +1 -0
  361. package/Libraries/Performance/QuickPerformanceLogger.js +34 -10
  362. package/Libraries/Performance/Systrace.d.ts +66 -0
  363. package/Libraries/Performance/Systrace.js +110 -195
  364. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  365. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +115 -0
  366. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +5 -4
  367. package/Libraries/Pressability/Pressability.js +12 -10
  368. package/Libraries/Pressability/Pressability.win32.js +9 -7
  369. package/Libraries/Pressability/PressabilityDebug.js +2 -2
  370. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  371. package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +275 -0
  372. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +19 -14
  373. package/Libraries/ReactNative/AppContainer.js +17 -7
  374. package/Libraries/ReactNative/AppRegistry.d.ts +68 -0
  375. package/Libraries/ReactNative/AppRegistry.js +11 -14
  376. package/Libraries/ReactNative/BridgelessUIManager.js +4 -3
  377. package/Libraries/ReactNative/FabricUIManager.js +3 -3
  378. package/Libraries/ReactNative/I18nManager.d.ts +25 -0
  379. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  380. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  381. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  382. package/Libraries/ReactNative/PaperUIManager.js +2 -2
  383. package/Libraries/ReactNative/PaperUIManager.win32.js +1 -1
  384. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +9 -0
  385. package/Libraries/ReactNative/RendererImplementation.js +112 -0
  386. package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
  387. package/Libraries/ReactNative/RendererProxy.js +26 -0
  388. package/Libraries/ReactNative/RootTag.js +0 -1
  389. package/Libraries/ReactNative/UIManager.d.ts +157 -0
  390. package/Libraries/ReactNative/UIManager.js +1 -1
  391. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -0
  392. package/Libraries/ReactNative/renderApplication.js +38 -20
  393. package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
  394. package/Libraries/ReactNative/requireNativeComponent.js +2 -2
  395. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +10 -9
  396. package/Libraries/Renderer/implementations/ReactFabric-dev.js +312 -217
  397. package/Libraries/Renderer/implementations/ReactFabric-prod.js +212 -177
  398. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +248 -213
  399. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +311 -218
  400. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +226 -196
  401. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +262 -232
  402. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +149 -0
  403. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  404. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  405. package/Libraries/Renderer/shims/ReactNative.js +2 -2
  406. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +141 -0
  407. package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -22
  408. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +8 -8
  409. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  410. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  411. package/Libraries/Settings/Settings.d.ts +18 -0
  412. package/Libraries/Share/NativeShareModule.js +1 -0
  413. package/Libraries/Share/Share.d.ts +80 -0
  414. package/Libraries/Share/Share.js +7 -5
  415. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  416. package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
  417. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  418. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
  419. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -0
  420. package/Libraries/StyleSheet/StyleSheet.d.ts +156 -0
  421. package/Libraries/StyleSheet/StyleSheet.js +15 -11
  422. package/Libraries/StyleSheet/StyleSheet.win32.js +16 -12
  423. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +332 -0
  424. package/Libraries/StyleSheet/StyleSheetTypes.js +101 -24
  425. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +2 -2
  426. package/Libraries/StyleSheet/normalizeColor.js +3 -3
  427. package/Libraries/StyleSheet/private/_TransformStyle.js +26 -24
  428. package/Libraries/StyleSheet/processAspectRatio.js +53 -0
  429. package/Libraries/StyleSheet/processColor.d.ts +16 -0
  430. package/Libraries/StyleSheet/processColor.js +3 -4
  431. package/Libraries/StyleSheet/processColorArray.js +1 -0
  432. package/Libraries/StyleSheet/processFontVariant.js +30 -0
  433. package/Libraries/StyleSheet/processTransform.js +114 -105
  434. package/Libraries/StyleSheet/splitLayoutProps.js +5 -0
  435. package/Libraries/Text/Text.d.ts +209 -0
  436. package/Libraries/Text/Text.js +94 -12
  437. package/Libraries/Text/TextNativeComponent.js +49 -41
  438. package/Libraries/Text/TextNativeComponent.win32.js +67 -48
  439. package/Libraries/Text/TextProps.js +64 -7
  440. package/Libraries/{Components/MaskedView/MaskedViewIOS.win32.js → TurboModule/RCTExport.d.ts} +3 -4
  441. package/Libraries/TurboModule/TurboModuleRegistry.d.ts +15 -0
  442. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -1
  443. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  444. package/Libraries/Types/CoreEventTypes.d.ts +263 -0
  445. package/Libraries/Types/CoreEventTypes.js +2 -1
  446. package/Libraries/Types/CoreEventTypes.win32.js +2 -1
  447. package/Libraries/Utilities/AcessibilityMapping.js +154 -0
  448. package/Libraries/Utilities/Appearance.d.ts +43 -0
  449. package/Libraries/Utilities/Appearance.js +3 -3
  450. package/Libraries/Utilities/BackHandler.android.js +3 -5
  451. package/Libraries/Utilities/BackHandler.d.ts +38 -0
  452. package/Libraries/Utilities/BackHandler.win32.js +3 -5
  453. package/Libraries/Utilities/DevSettings.d.ts +32 -0
  454. package/Libraries/Utilities/DevSettings.js +4 -2
  455. package/Libraries/Utilities/Dimensions.d.ts +79 -0
  456. package/Libraries/Utilities/Dimensions.js +2 -2
  457. package/Libraries/Utilities/Dimensions.win32.js +2 -2
  458. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -1
  459. package/Libraries/Utilities/HMRClient.js +23 -8
  460. package/Libraries/Utilities/LoadingView.ios.js +1 -1
  461. package/Libraries/Utilities/NativeAppearance.js +1 -0
  462. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  463. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +1 -0
  464. package/Libraries/Utilities/NativeDeviceInfo.js +1 -0
  465. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  466. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  467. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  468. package/Libraries/Utilities/PerformanceLoggerContext.js +3 -2
  469. package/Libraries/Utilities/PixelRatio.d.ts +64 -0
  470. package/Libraries/Utilities/Platform.android.js +11 -5
  471. package/Libraries/Utilities/Platform.d.ts +102 -0
  472. package/Libraries/Utilities/Platform.ios.js +12 -5
  473. package/Libraries/Utilities/Platform.win32.js +11 -5
  474. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  475. package/Libraries/Utilities/ReactNativeTestTools.js +9 -15
  476. package/Libraries/Utilities/codegenNativeCommands.js +1 -10
  477. package/Libraries/Utilities/codegenNativeComponent.js +4 -1
  478. package/Libraries/Utilities/createPerformanceLogger.js +7 -8
  479. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  480. package/Libraries/Utilities/groupByEveryN.js +1 -1
  481. package/Libraries/Utilities/stringifySafe.js +3 -1
  482. package/Libraries/Utilities/useColorScheme.js +3 -2
  483. package/Libraries/Utilities/useRefEffect.js +1 -1
  484. package/Libraries/Vibration/NativeVibration.js +1 -0
  485. package/Libraries/Vibration/Vibration.d.ts +43 -0
  486. package/Libraries/Vibration/Vibration.js +1 -0
  487. package/Libraries/WebPerformance/NativePerformanceObserver.js +41 -0
  488. package/Libraries/WebPerformance/PerformanceObserver.js +223 -0
  489. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  490. package/Libraries/WebSocket/WebSocket.js +11 -3
  491. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  492. package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +19 -0
  493. package/Libraries/YellowBox/YellowBoxDeprecated.js +2 -3
  494. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +2 -1
  495. package/Libraries/__tests__/ButtonWin32-test.js +16 -0
  496. package/Libraries/platform-types.d.ts +25 -0
  497. package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
  498. package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
  499. package/babel.config.js +3 -0
  500. package/flow/jest.js +2 -2
  501. package/flow-typed/npm/{react-dom_v16.x.x.js → react-dom_v17.x.x.js} +58 -31
  502. package/flow-typed/npm/yargs_v17.x.x.js +341 -0
  503. package/index.js +89 -55
  504. package/index.win32.js +89 -55
  505. package/interface.js +8 -0
  506. package/jest/react-native-env.js +18 -0
  507. package/jest/renderer.js +2 -2
  508. package/jest/setup.js +7 -9
  509. package/jest.config.js +9 -2
  510. package/overrides.json +40 -101
  511. package/package.json +34 -33
  512. package/src/Libraries/Components/TextInput/TextInput.win32.tsx +2 -1
  513. package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
  514. package/src/Libraries/Components/Touchable/TouchableWin32.Props.tsx +2 -1
  515. package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
  516. package/src/Libraries/Components/View/ViewWin32.Props.ts +10 -1
  517. package/src/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +22 -0
  518. package/src/Libraries/platform-types.d.ts +25 -0
  519. package/types/index.d.ts +215 -0
  520. package/IntegrationTests/AsyncStorageTest.js +0 -261
  521. package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +0 -93
  522. package/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js +0 -21
  523. package/Libraries/Core/setUpSystrace.js +0 -21
  524. package/Libraries/Image/ImagePickerIOS.js +0 -103
  525. package/Libraries/Image/NativeImagePickerIOS.js +0 -38
  526. package/Libraries/Lists/VirtualizedList.win32.js +0 -9
  527. package/Libraries/Lists/__tests__/CellRenderMask-test.js +0 -179
  528. package/Libraries/Lists/__tests__/FillRateHelper-test.js +0 -120
  529. package/Libraries/Lists/__tests__/FlatList-test.js +0 -155
  530. package/Libraries/Lists/__tests__/SectionList-test.js +0 -109
  531. package/Libraries/Lists/__tests__/ViewabilityHelper-test.js +0 -440
  532. package/Libraries/Lists/__tests__/VirtualizeUtils-test.js +0 -91
  533. package/Libraries/Lists/__tests__/VirtualizedList-test.js +0 -1587
  534. package/Libraries/Lists/__tests__/VirtualizedSectionList-test.js +0 -269
  535. package/Libraries/Storage/AsyncStorage.js +0 -385
  536. package/Libraries/Storage/NativeAsyncLocalStorage.js +0 -44
  537. package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +0 -44
  538. package/Libraries/Utilities/JSDevSupportModule.js +0 -37
  539. package/Libraries/Utilities/NativeJSDevSupport.js +0 -23
  540. package/rntypes/BatchedBridge.d.ts +0 -23
  541. package/rntypes/Devtools.d.ts +0 -20
  542. package/rntypes/LaunchScreen.d.ts +0 -9
  543. package/rntypes/globals.d.ts +0 -497
  544. package/rntypes/index.d.ts +0 -9754
  545. package/rntypes/legacy-properties.d.ts +0 -238
  546. package/src/Libraries/Lists/__tests__/__snapshots__/FlatList-test.js.snap +0 -427
  547. package/src/Libraries/Lists/__tests__/__snapshots__/SectionList-test.js.snap +0 -391
  548. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +0 -4565
  549. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +0 -1153
  550. package/src/rntypes/BatchedBridge.d.ts +0 -23
  551. package/src/rntypes/Devtools.d.ts +0 -20
  552. package/src/rntypes/LaunchScreen.d.ts +0 -9
  553. package/src/rntypes/globals.d.ts +0 -497
  554. package/src/rntypes/index.d.ts +0 -9754
  555. package/src/rntypes/legacy-properties.d.ts +0 -238
  556. package/src/typings-index.ts +0 -37
  557. package/typings-index.d.ts +0 -23
  558. package/typings-index.js +0 -47
  559. package/typings-index.js.map +0 -1
@@ -10,6 +10,8 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {FrameMetricProps} from './VirtualizedListProps';
14
+
13
15
  export type FillRateInfo = Info;
14
16
 
15
17
  class Info {
@@ -47,12 +49,12 @@ let _sampleRate = DEBUG ? 1 : null;
47
49
  * `SceneTracker.getActiveScene` to determine the context of the events.
48
50
  */
49
51
  class FillRateHelper {
50
- _anyBlankStartTime = (null: ?number);
52
+ _anyBlankStartTime: ?number = null;
51
53
  _enabled = false;
52
- _getFrameMetrics: (index: number) => ?FrameMetrics;
53
- _info = new Info();
54
- _mostlyBlankStartTime = (null: ?number);
55
- _samplesStartTime = (null: ?number);
54
+ _getFrameMetrics: (index: number, props: FrameMetricProps) => ?FrameMetrics;
55
+ _info: Info = new Info();
56
+ _mostlyBlankStartTime: ?number = null;
57
+ _samplesStartTime: ?number = null;
56
58
 
57
59
  static addListener(callback: FillRateInfo => void): {
58
60
  remove: () => void,
@@ -77,7 +79,9 @@ class FillRateHelper {
77
79
  _minSampleCount = minSampleCount;
78
80
  }
79
81
 
80
- constructor(getFrameMetrics: (index: number) => ?FrameMetrics) {
82
+ constructor(
83
+ getFrameMetrics: (index: number, props: FrameMetricProps) => ?FrameMetrics,
84
+ ) {
81
85
  this._getFrameMetrics = getFrameMetrics;
82
86
  this._enabled = (_sampleRate || 0) > Math.random();
83
87
  this._resetData();
@@ -124,6 +128,7 @@ class FillRateHelper {
124
128
  mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent,
125
129
  };
126
130
  for (const key in derived) {
131
+ // $FlowFixMe[prop-missing]
127
132
  derived[key] = Math.round(1000 * derived[key]) / 1000;
128
133
  }
129
134
  console.debug('FillRateHelper deactivateAndFlush: ', {derived, info});
@@ -134,12 +139,11 @@ class FillRateHelper {
134
139
 
135
140
  computeBlankness(
136
141
  props: {
137
- data: any,
138
- getItemCount: (data: any) => number,
142
+ ...FrameMetricProps,
139
143
  initialNumToRender?: ?number,
140
144
  ...
141
145
  },
142
- state: {
146
+ cellsAroundViewport: {
143
147
  first: number,
144
148
  last: number,
145
149
  ...
@@ -155,6 +159,7 @@ class FillRateHelper {
155
159
  if (
156
160
  !this._enabled ||
157
161
  props.getItemCount(props.data) === 0 ||
162
+ cellsAroundViewport.last < cellsAroundViewport.first ||
158
163
  this._samplesStartTime == null
159
164
  ) {
160
165
  return 0;
@@ -180,10 +185,13 @@ class FillRateHelper {
180
185
  this._mostlyBlankStartTime = null;
181
186
 
182
187
  let blankTop = 0;
183
- let first = state.first;
184
- let firstFrame = this._getFrameMetrics(first);
185
- while (first <= state.last && (!firstFrame || !firstFrame.inLayout)) {
186
- firstFrame = this._getFrameMetrics(first);
188
+ let first = cellsAroundViewport.first;
189
+ let firstFrame = this._getFrameMetrics(first, props);
190
+ while (
191
+ first <= cellsAroundViewport.last &&
192
+ (!firstFrame || !firstFrame.inLayout)
193
+ ) {
194
+ firstFrame = this._getFrameMetrics(first, props);
187
195
  first++;
188
196
  }
189
197
  // Only count blankTop if we aren't rendering the first item, otherwise we will count the header
@@ -195,10 +203,13 @@ class FillRateHelper {
195
203
  );
196
204
  }
197
205
  let blankBottom = 0;
198
- let last = state.last;
199
- let lastFrame = this._getFrameMetrics(last);
200
- while (last >= state.first && (!lastFrame || !lastFrame.inLayout)) {
201
- lastFrame = this._getFrameMetrics(last);
206
+ let last = cellsAroundViewport.last;
207
+ let lastFrame = this._getFrameMetrics(last, props);
208
+ while (
209
+ last >= cellsAroundViewport.first &&
210
+ (!lastFrame || !lastFrame.inLayout)
211
+ ) {
212
+ lastFrame = this._getFrameMetrics(last, props);
202
213
  last--;
203
214
  }
204
215
  // Only count blankBottom if we aren't rendering the last item, otherwise we will count the
@@ -0,0 +1,292 @@
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
+ * @format
8
+ */
9
+
10
+ import type * as React from 'react';
11
+ import type {
12
+ ListRenderItem,
13
+ ViewToken,
14
+ VirtualizedListProps,
15
+ } from './VirtualizedList';
16
+ import type {ScrollViewComponent} from '../Components/ScrollView/ScrollView';
17
+ import {StyleProp} from '../StyleSheet/StyleSheet';
18
+ import {ViewStyle} from '../StyleSheet/StyleSheetTypes';
19
+ import {View} from '../Components/View/View';
20
+
21
+ export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
22
+ /**
23
+ * Rendered in between each item, but not at the top or bottom
24
+ */
25
+ ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
26
+
27
+ /**
28
+ * Rendered when the list is empty.
29
+ */
30
+ ListEmptyComponent?:
31
+ | React.ComponentType<any>
32
+ | React.ReactElement
33
+ | null
34
+ | undefined;
35
+
36
+ /**
37
+ * Rendered at the very end of the list.
38
+ */
39
+ ListFooterComponent?:
40
+ | React.ComponentType<any>
41
+ | React.ReactElement
42
+ | null
43
+ | undefined;
44
+
45
+ /**
46
+ * Styling for internal View for ListFooterComponent
47
+ */
48
+ ListFooterComponentStyle?: StyleProp<ViewStyle> | undefined;
49
+
50
+ /**
51
+ * Rendered at the very beginning of the list.
52
+ */
53
+ ListHeaderComponent?:
54
+ | React.ComponentType<any>
55
+ | React.ReactElement
56
+ | null
57
+ | undefined;
58
+
59
+ /**
60
+ * Styling for internal View for ListHeaderComponent
61
+ */
62
+ ListHeaderComponentStyle?: StyleProp<ViewStyle> | undefined;
63
+
64
+ /**
65
+ * Optional custom style for multi-item rows generated when numColumns > 1
66
+ */
67
+ columnWrapperStyle?: StyleProp<ViewStyle> | undefined;
68
+
69
+ /**
70
+ * Determines when the keyboard should stay visible after a tap.
71
+ * - 'never' (the default), tapping outside of the focused text input when the keyboard is up dismisses the keyboard. When this happens, children won't receive the tap.
72
+ * - 'always', the keyboard will not dismiss automatically, and the scroll view will not catch taps, but children of the scroll view can catch taps.
73
+ * - 'handled', the keyboard will not dismiss automatically when the tap was handled by a children, (or captured by an ancestor).
74
+ * - false, deprecated, use 'never' instead
75
+ * - true, deprecated, use 'always' instead
76
+ */
77
+ keyboardShouldPersistTaps?:
78
+ | boolean
79
+ | 'always'
80
+ | 'never'
81
+ | 'handled'
82
+ | undefined;
83
+
84
+ /**
85
+ * For simplicity, data is just a plain array. If you want to use something else,
86
+ * like an immutable list, use the underlying VirtualizedList directly.
87
+ */
88
+ data: ReadonlyArray<ItemT> | null | undefined;
89
+
90
+ /**
91
+ * A marker property for telling the list to re-render (since it implements PureComponent).
92
+ * If any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the `data` prop,
93
+ * stick it here and treat it immutably.
94
+ */
95
+ extraData?: any;
96
+
97
+ /**
98
+ * `getItemLayout` is an optional optimization that lets us skip measurement of dynamic
99
+ * content if you know the height of items a priori. getItemLayout is the most efficient,
100
+ * and is easy to use if you have fixed height items, for example:
101
+ * ```
102
+ * getItemLayout={(data, index) => (
103
+ * {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}
104
+ * )}
105
+ * ```
106
+ * Remember to include separator length (height or width) in your offset calculation if you specify
107
+ * `ItemSeparatorComponent`.
108
+ */
109
+ getItemLayout?:
110
+ | ((
111
+ data: Array<ItemT> | null | undefined,
112
+ index: number,
113
+ ) => {length: number; offset: number; index: number})
114
+ | undefined;
115
+
116
+ /**
117
+ * If true, renders items next to each other horizontally instead of stacked vertically.
118
+ */
119
+ horizontal?: boolean | null | undefined;
120
+
121
+ /**
122
+ * How many items to render in the initial batch
123
+ */
124
+ initialNumToRender?: number | undefined;
125
+
126
+ /**
127
+ * Instead of starting at the top with the first item, start at initialScrollIndex
128
+ */
129
+ initialScrollIndex?: number | null | undefined;
130
+
131
+ /**
132
+ * Used to extract a unique key for a given item at the specified index. Key is used for caching
133
+ * and as the react key to track item re-ordering. The default extractor checks `item.key`, then
134
+ * falls back to using the index, like React does.
135
+ */
136
+ keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
137
+
138
+ /**
139
+ * Uses legacy MetroListView instead of default VirtualizedSectionList
140
+ */
141
+ legacyImplementation?: boolean | undefined;
142
+
143
+ /**
144
+ * Multiple columns can only be rendered with `horizontal={false}` and will zig-zag like a `flexWrap` layout.
145
+ * Items should all be the same height - masonry layouts are not supported.
146
+ */
147
+ numColumns?: number | undefined;
148
+
149
+ /**
150
+ * Called once when the scroll position gets within onEndReachedThreshold of the rendered content.
151
+ */
152
+ onEndReached?: ((info: {distanceFromEnd: number}) => void) | null | undefined;
153
+
154
+ /**
155
+ * How far from the end (in units of visible length of the list) the bottom edge of the
156
+ * list must be from the end of the content to trigger the `onEndReached` callback.
157
+ * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is
158
+ * within half the visible length of the list.
159
+ */
160
+ onEndReachedThreshold?: number | null | undefined;
161
+
162
+ /**
163
+ * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality.
164
+ * Make sure to also set the refreshing prop correctly.
165
+ */
166
+ onRefresh?: (() => void) | null | undefined;
167
+
168
+ /**
169
+ * Called when the viewability of rows changes, as defined by the `viewablePercentThreshold` prop.
170
+ */
171
+ onViewableItemsChanged?:
172
+ | ((info: {
173
+ viewableItems: Array<ViewToken>;
174
+ changed: Array<ViewToken>;
175
+ }) => void)
176
+ | null
177
+ | undefined;
178
+
179
+ /**
180
+ * Set this true while waiting for new data from a refresh.
181
+ */
182
+ refreshing?: boolean | null | undefined;
183
+
184
+ /**
185
+ * Takes an item from data and renders it into the list. Typical usage:
186
+ * ```
187
+ * _renderItem = ({item}) => (
188
+ * <TouchableOpacity onPress={() => this._onPress(item)}>
189
+ * <Text>{item.title}</Text>
190
+ * <TouchableOpacity/>
191
+ * );
192
+ * ...
193
+ * <FlatList data={[{title: 'Title Text', key: 'item1'}]} renderItem={this._renderItem} />
194
+ * ```
195
+ * Provides additional metadata like `index` if you need it.
196
+ */
197
+ renderItem: ListRenderItem<ItemT> | null | undefined;
198
+
199
+ /**
200
+ * See `ViewabilityHelper` for flow type and further documentation.
201
+ */
202
+ viewabilityConfig?: any;
203
+
204
+ /**
205
+ * Note: may have bugs (missing content) in some circumstances - use at your own risk.
206
+ *
207
+ * This may improve scroll performance for large lists.
208
+ */
209
+ removeClippedSubviews?: boolean | undefined;
210
+
211
+ /**
212
+ * Fades out the edges of the scroll content.
213
+ *
214
+ * If the value is greater than 0, the fading edges will be set accordingly
215
+ * to the current scroll direction and position,
216
+ * indicating if there is more content to show.
217
+ *
218
+ * The default value is 0.
219
+ * @platform android
220
+ */
221
+ fadingEdgeLength?: number | undefined;
222
+ }
223
+
224
+ export class FlatList<ItemT = any> extends React.Component<
225
+ FlatListProps<ItemT>
226
+ > {
227
+ /**
228
+ * Scrolls to the end of the content. May be janky without `getItemLayout` prop.
229
+ */
230
+ scrollToEnd: (params?: {animated?: boolean | null | undefined}) => void;
231
+
232
+ /**
233
+ * Scrolls to the item at the specified index such that it is positioned in the viewable area
234
+ * such that viewPosition 0 places it at the top, 1 at the bottom, and 0.5 centered in the middle.
235
+ * Cannot scroll to locations outside the render window without specifying the getItemLayout prop.
236
+ */
237
+ scrollToIndex: (params: {
238
+ animated?: boolean | null | undefined;
239
+ index: number;
240
+ viewOffset?: number | undefined;
241
+ viewPosition?: number | undefined;
242
+ }) => void;
243
+
244
+ /**
245
+ * Requires linear scan through data - use `scrollToIndex` instead if possible.
246
+ * May be janky without `getItemLayout` prop.
247
+ */
248
+ scrollToItem: (params: {
249
+ animated?: boolean | null | undefined;
250
+ item: ItemT;
251
+ viewPosition?: number | undefined;
252
+ }) => void;
253
+
254
+ /**
255
+ * Scroll to a specific content pixel offset, like a normal `ScrollView`.
256
+ */
257
+ scrollToOffset: (params: {
258
+ animated?: boolean | null | undefined;
259
+ offset: number;
260
+ }) => void;
261
+
262
+ /**
263
+ * Tells the list an interaction has occurred, which should trigger viewability calculations,
264
+ * e.g. if waitForInteractions is true and the user has not scrolled. This is typically called
265
+ * by taps on items or by navigation actions.
266
+ */
267
+ recordInteraction: () => void;
268
+
269
+ /**
270
+ * Displays the scroll indicators momentarily.
271
+ */
272
+ flashScrollIndicators: () => void;
273
+
274
+ /**
275
+ * Provides a handle to the underlying scroll responder.
276
+ */
277
+ getScrollResponder: () => JSX.Element | null | undefined;
278
+
279
+ /**
280
+ * Provides a reference to the underlying host component
281
+ */
282
+ getNativeScrollRef: () =>
283
+ | React.ElementRef<typeof View>
284
+ | React.ElementRef<typeof ScrollViewComponent>
285
+ | null
286
+ | undefined;
287
+
288
+ getScrollableNode: () => any;
289
+
290
+ // TODO: use `unknown` instead of `any` for Typescript >= 3.0
291
+ setNativeProps: (props: {[key: string]: any}) => void;
292
+ }
@@ -8,26 +8,26 @@
8
8
  * @format
9
9
  */
10
10
 
11
- const Platform = require('../Utilities/Platform');
12
- const deepDiffer = require('../Utilities/differ/deepDiffer');
13
- const React = require('react');
14
- const View = require('../Components/View/View');
15
- const VirtualizedList = require('./VirtualizedList');
16
- const StyleSheet = require('../StyleSheet/StyleSheet');
17
-
18
- const invariant = require('invariant');
19
-
20
11
  import typeof ScrollViewNativeComponent from '../Components/ScrollView/ScrollViewNativeComponent';
21
- import {type ScrollResponderType} from '../Components/ScrollView/ScrollView';
22
12
  import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
23
13
  import type {
24
- ViewToken,
25
14
  ViewabilityConfigCallbackPair,
15
+ ViewToken,
26
16
  } from './ViewabilityHelper';
27
- import type {RenderItemType, RenderItemProps} from './VirtualizedList';
17
+ import type {RenderItemProps, RenderItemType} from './VirtualizedList';
18
+
19
+ import {type ScrollResponderType} from '../Components/ScrollView/ScrollView';
20
+ import VirtualizedList from './VirtualizedList';
28
21
  import {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils';
29
22
  import memoizeOne from 'memoize-one';
30
23
 
24
+ const View = require('../Components/View/View');
25
+ const StyleSheet = require('../StyleSheet/StyleSheet');
26
+ const deepDiffer = require('../Utilities/differ/deepDiffer');
27
+ const Platform = require('../Utilities/Platform');
28
+ const invariant = require('invariant');
29
+ const React = require('react');
30
+
31
31
  type RequiredProps<ItemT> = {|
32
32
  /**
33
33
  * For simplicity, data is just a plain array. If you want to use something else, like an
@@ -433,6 +433,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
433
433
  }
434
434
  }
435
435
 
436
+ // $FlowFixMe[missing-local-annot]
436
437
  componentDidUpdate(prevProps: Props<ItemT>) {
437
438
  invariant(
438
439
  prevProps.numColumns === this.props.numColumns,
@@ -463,6 +464,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
463
464
  this._listRef = ref;
464
465
  };
465
466
 
467
+ // $FlowFixMe[missing-local-annot]
466
468
  _checkProps(props: Props<ItemT>) {
467
469
  const {
468
470
  // $FlowFixMe[prop-missing] this prop doesn't exist, is only used for an invariant
@@ -494,13 +496,15 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
494
496
  );
495
497
  }
496
498
 
499
+ // $FlowFixMe[missing-local-annot]
497
500
  _getItem = (data: Array<ItemT>, index: number) => {
498
501
  const numColumns = numColumnsOrDefault(this.props.numColumns);
499
502
  if (numColumns > 1) {
500
503
  const ret = [];
501
504
  for (let kk = 0; kk < numColumns; kk++) {
502
- const item = data[index * numColumns + kk];
503
- if (item != null) {
505
+ const itemIndex = index * numColumns + kk;
506
+ if (itemIndex < data.length) {
507
+ const item = data[itemIndex];
504
508
  ret.push(item);
505
509
  }
506
510
  }
@@ -511,7 +515,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
511
515
  };
512
516
 
513
517
  _getItemCount = (data: ?Array<ItemT>): number => {
514
- if (data) {
518
+ if (Array.isArray(data)) {
515
519
  const numColumns = numColumnsOrDefault(this.props.numColumns);
516
520
  return numColumns > 1 ? Math.ceil(data.length / numColumns) : data.length;
517
521
  } else {
@@ -519,29 +523,26 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
519
523
  }
520
524
  };
521
525
 
522
- _keyExtractor = (items: ItemT | Array<ItemT>, index: number) => {
526
+ _keyExtractor = (items: ItemT | Array<ItemT>, index: number): string => {
523
527
  const numColumns = numColumnsOrDefault(this.props.numColumns);
524
528
  const keyExtractor = this.props.keyExtractor ?? defaultKeyExtractor;
525
529
 
526
530
  if (numColumns > 1) {
527
- if (Array.isArray(items)) {
528
- return items
529
- .map((item, kk) =>
530
- keyExtractor(((item: $FlowFixMe): ItemT), index * numColumns + kk),
531
- )
532
- .join(':');
533
- } else {
534
- invariant(
535
- Array.isArray(items),
536
- 'FlatList: Encountered internal consistency error, expected each item to consist of an ' +
537
- 'array with 1-%s columns; instead, received a single item.',
538
- numColumns,
539
- );
540
- }
541
- } else {
542
- // $FlowFixMe[incompatible-call] Can't call keyExtractor with an array
543
- return keyExtractor(items, index);
531
+ invariant(
532
+ Array.isArray(items),
533
+ 'FlatList: Encountered internal consistency error, expected each item to consist of an ' +
534
+ 'array with 1-%s columns; instead, received a single item.',
535
+ numColumns,
536
+ );
537
+ return items
538
+ .map((item, kk) =>
539
+ keyExtractor(((item: $FlowFixMe): ItemT), index * numColumns + kk),
540
+ )
541
+ .join(':');
544
542
  }
543
+
544
+ // $FlowFixMe[incompatible-call] Can't call keyExtractor with an array
545
+ return keyExtractor(items, index);
545
546
  };
546
547
 
547
548
  _pushMultiColumnViewable(arr: Array<ViewToken>, v: ViewToken): void {
@@ -560,6 +561,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
560
561
  changed: Array<ViewToken>,
561
562
  ...
562
563
  }) => void,
564
+ // $FlowFixMe[missing-local-annot]
563
565
  ) {
564
566
  return (info: {
565
567
  viewableItems: Array<ViewToken>,
@@ -569,8 +571,8 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
569
571
  const numColumns = numColumnsOrDefault(this.props.numColumns);
570
572
  if (onViewableItemsChanged) {
571
573
  if (numColumns > 1) {
572
- const changed = [];
573
- const viewableItems = [];
574
+ const changed: Array<ViewToken> = [];
575
+ const viewableItems: Array<ViewToken> = [];
574
576
  info.viewableItems.forEach(v =>
575
577
  this._pushMultiColumnViewable(viewableItems, v),
576
578
  );
@@ -589,14 +591,11 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
589
591
  columnWrapperStyle: ?ViewStyleProp,
590
592
  numColumns: ?number,
591
593
  extraData: ?any,
594
+ // $FlowFixMe[missing-local-annot]
592
595
  ) => {
593
596
  const cols = numColumnsOrDefault(numColumns);
594
597
 
595
- let virtualizedListRenderKey = ListItemComponent
596
- ? 'ListItemComponent'
597
- : 'renderItem';
598
-
599
- const renderer = (props: RenderItemProps<ItemT>): React.Node => {
598
+ const render = (props: RenderItemProps<ItemT>): React.Node => {
600
599
  if (ListItemComponent) {
601
600
  // $FlowFixMe[not-a-component] Component isn't valid
602
601
  // $FlowFixMe[incompatible-type-arg] Component isn't valid
@@ -610,39 +609,39 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
610
609
  }
611
610
  };
612
611
 
613
- return {
614
- /* $FlowFixMe[invalid-computed-prop] (>=0.111.0 site=react_native_fb)
615
- * This comment suppresses an error found when Flow v0.111 was deployed.
616
- * To see the error, delete this comment and run Flow. */
617
- [virtualizedListRenderKey]: (info: RenderItemProps<ItemT>) => {
618
- if (cols > 1) {
619
- const {item, index} = info;
620
- invariant(
621
- Array.isArray(item),
622
- 'Expected array of items with numColumns > 1',
623
- );
624
- return (
625
- <View style={StyleSheet.compose(styles.row, columnWrapperStyle)}>
626
- {item.map((it, kk) => {
627
- const element = renderer({
628
- // $FlowFixMe[incompatible-call]
629
- item: it,
630
- index: index * cols + kk,
631
- separators: info.separators,
632
- });
633
- return element != null ? (
634
- <React.Fragment key={kk}>{element}</React.Fragment>
635
- ) : null;
636
- })}
637
- </View>
638
- );
639
- } else {
640
- return renderer(info);
641
- }
642
- },
612
+ const renderProp = (info: RenderItemProps<ItemT>) => {
613
+ if (cols > 1) {
614
+ const {item, index} = info;
615
+ invariant(
616
+ Array.isArray(item),
617
+ 'Expected array of items with numColumns > 1',
618
+ );
619
+ return (
620
+ <View style={StyleSheet.compose(styles.row, columnWrapperStyle)}>
621
+ {item.map((it, kk) => {
622
+ const element = render({
623
+ // $FlowFixMe[incompatible-call]
624
+ item: it,
625
+ index: index * cols + kk,
626
+ separators: info.separators,
627
+ });
628
+ return element != null ? (
629
+ <React.Fragment key={kk}>{element}</React.Fragment>
630
+ ) : null;
631
+ })}
632
+ </View>
633
+ );
634
+ } else {
635
+ return render(info);
636
+ }
643
637
  };
638
+
639
+ return ListItemComponent
640
+ ? {ListItemComponent: renderProp}
641
+ : {renderItem: renderProp};
644
642
  };
645
643
 
644
+ // $FlowFixMe[missing-local-annot]
646
645
  _memoizedRenderer = memoizeOne(this._renderer);
647
646
 
648
647
  render(): React.Node {
@@ -657,6 +656,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
657
656
  const renderer = strictMode ? this._memoizedRenderer : this._renderer;
658
657
 
659
658
  return (
659
+ // $FlowFixMe[incompatible-exact] - `restProps` (`Props`) is inexact.
660
660
  <VirtualizedList
661
661
  {...restProps}
662
662
  getItem={this._getItem}