@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
@@ -0,0 +1,300 @@
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
+ ListRenderItemInfo,
13
+ VirtualizedListWithoutRenderItemProps,
14
+ } from './VirtualizedList';
15
+ import type {
16
+ ScrollView,
17
+ ScrollViewProps,
18
+ } from '../Components/ScrollView/ScrollView';
19
+ import {NodeHandle} from '../ReactNative/RendererProxy';
20
+ import {StyleProp} from '../StyleSheet/StyleSheet';
21
+ import {ViewStyle} from '../StyleSheet/StyleSheetTypes';
22
+
23
+ /**
24
+ * @see https://reactnative.dev/docs/sectionlist
25
+ */
26
+
27
+ type DefaultSectionT = {
28
+ [key: string]: any;
29
+ };
30
+
31
+ export interface SectionBase<ItemT, SectionT = DefaultSectionT> {
32
+ data: ReadonlyArray<ItemT>;
33
+
34
+ key?: string | undefined;
35
+
36
+ renderItem?: SectionListRenderItem<ItemT, SectionT> | undefined;
37
+
38
+ ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
39
+
40
+ keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
41
+ }
42
+
43
+ export type SectionListData<ItemT, SectionT = DefaultSectionT> = SectionBase<
44
+ ItemT,
45
+ SectionT
46
+ > &
47
+ SectionT;
48
+
49
+ /**
50
+ * @see https://reactnative.dev/docs/sectionlist.html#props
51
+ */
52
+
53
+ export interface SectionListRenderItemInfo<ItemT, SectionT = DefaultSectionT>
54
+ extends ListRenderItemInfo<ItemT> {
55
+ section: SectionListData<ItemT, SectionT>;
56
+ }
57
+
58
+ export type SectionListRenderItem<ItemT, SectionT = DefaultSectionT> = (
59
+ info: SectionListRenderItemInfo<ItemT, SectionT>,
60
+ ) => React.ReactElement | null;
61
+
62
+ export interface SectionListProps<ItemT, SectionT = DefaultSectionT>
63
+ extends VirtualizedListWithoutRenderItemProps<ItemT> {
64
+ /**
65
+ * Rendered in between adjacent Items within each section.
66
+ */
67
+ ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
68
+
69
+ /**
70
+ * Rendered when the list is empty.
71
+ */
72
+ ListEmptyComponent?:
73
+ | React.ComponentType<any>
74
+ | React.ReactElement
75
+ | null
76
+ | undefined;
77
+
78
+ /**
79
+ * Rendered at the very end of the list.
80
+ */
81
+ ListFooterComponent?:
82
+ | React.ComponentType<any>
83
+ | React.ReactElement
84
+ | null
85
+ | undefined;
86
+
87
+ /**
88
+ * Styling for internal View for ListFooterComponent
89
+ */
90
+ ListFooterComponentStyle?: StyleProp<ViewStyle> | undefined | null;
91
+
92
+ /**
93
+ * Rendered at the very beginning of the list.
94
+ */
95
+ ListHeaderComponent?:
96
+ | React.ComponentType<any>
97
+ | React.ReactElement
98
+ | null
99
+ | undefined;
100
+
101
+ /**
102
+ * Styling for internal View for ListHeaderComponent
103
+ */
104
+ ListHeaderComponentStyle?: StyleProp<ViewStyle> | undefined | null;
105
+
106
+ /**
107
+ * Rendered in between each section.
108
+ */
109
+ SectionSeparatorComponent?:
110
+ | React.ComponentType<any>
111
+ | React.ReactElement
112
+ | null
113
+ | undefined;
114
+
115
+ /**
116
+ * A marker property for telling the list to re-render (since it implements PureComponent).
117
+ * If any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the `data` prop,
118
+ * stick it here and treat it immutably.
119
+ */
120
+ extraData?: any;
121
+
122
+ /**
123
+ * `getItemLayout` is an optional optimization that lets us skip measurement of dynamic
124
+ * content if you know the height of items a priori. getItemLayout is the most efficient,
125
+ * and is easy to use if you have fixed height items, for example:
126
+ * ```
127
+ * getItemLayout={(data, index) => (
128
+ * {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}
129
+ * )}
130
+ * ```
131
+ */
132
+ getItemLayout?:
133
+ | ((
134
+ data: SectionListData<ItemT, SectionT>[] | null,
135
+ index: number,
136
+ ) => {length: number; offset: number; index: number})
137
+ | undefined;
138
+
139
+ /**
140
+ * How many items to render in the initial batch
141
+ */
142
+ initialNumToRender?: number | undefined;
143
+
144
+ /**
145
+ * Reverses the direction of scroll. Uses scale transforms of -1.
146
+ */
147
+ inverted?: boolean | null | undefined;
148
+
149
+ /**
150
+ * Used to extract a unique key for a given item at the specified index. Key is used for caching
151
+ * and as the react key to track item re-ordering. The default extractor checks `item.key`, then
152
+ * falls back to using the index, like React does.
153
+ */
154
+ keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
155
+
156
+ /**
157
+ * Called once when the scroll position gets within onEndReachedThreshold of the rendered content.
158
+ */
159
+ onEndReached?: ((info: {distanceFromEnd: number}) => void) | null | undefined;
160
+
161
+ /**
162
+ * How far from the end (in units of visible length of the list) the bottom edge of the
163
+ * list must be from the end of the content to trigger the `onEndReached` callback.
164
+ * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is
165
+ * within half the visible length of the list.
166
+ */
167
+ onEndReachedThreshold?: number | null | undefined;
168
+
169
+ /**
170
+ * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality.
171
+ * Make sure to also set the refreshing prop correctly.
172
+ */
173
+ onRefresh?: (() => void) | null | undefined;
174
+
175
+ /**
176
+ * Used to handle failures when scrolling to an index that has not been measured yet.
177
+ * Recommended action is to either compute your own offset and `scrollTo` it, or scroll as far
178
+ * as possible and then try again after more items have been rendered.
179
+ */
180
+ onScrollToIndexFailed?:
181
+ | ((info: {
182
+ index: number;
183
+ highestMeasuredFrameIndex: number;
184
+ averageItemLength: number;
185
+ }) => void)
186
+ | undefined;
187
+
188
+ /**
189
+ * Set this true while waiting for new data from a refresh.
190
+ */
191
+ refreshing?: boolean | null | undefined;
192
+
193
+ /**
194
+ * Default renderer for every item in every section. Can be over-ridden on a per-section basis.
195
+ */
196
+ renderItem?: SectionListRenderItem<ItemT, SectionT> | undefined;
197
+
198
+ /**
199
+ * Rendered at the top of each section. Sticky headers are not yet supported.
200
+ */
201
+ renderSectionHeader?:
202
+ | ((info: {
203
+ section: SectionListData<ItemT, SectionT>;
204
+ }) => React.ReactElement | null)
205
+ | undefined;
206
+
207
+ /**
208
+ * Rendered at the bottom of each section.
209
+ */
210
+ renderSectionFooter?:
211
+ | ((info: {
212
+ section: SectionListData<ItemT, SectionT>;
213
+ }) => React.ReactElement | null)
214
+ | undefined;
215
+
216
+ /**
217
+ * An array of objects with data for each section.
218
+ */
219
+ sections: ReadonlyArray<SectionListData<ItemT, SectionT>>;
220
+
221
+ /**
222
+ * Render a custom scroll component, e.g. with a differently styled `RefreshControl`.
223
+ */
224
+ renderScrollComponent?:
225
+ | ((props: ScrollViewProps) => React.ReactElement<ScrollViewProps>)
226
+ | undefined;
227
+
228
+ /**
229
+ * Note: may have bugs (missing content) in some circumstances - use at your own risk.
230
+ *
231
+ * This may improve scroll performance for large lists.
232
+ */
233
+ removeClippedSubviews?: boolean | undefined;
234
+
235
+ /**
236
+ * Makes section headers stick to the top of the screen until the next one pushes it off.
237
+ * Only enabled by default on iOS because that is the platform standard there.
238
+ */
239
+ stickySectionHeadersEnabled?: boolean | undefined;
240
+
241
+ /**
242
+ * Uses legacy MetroListView instead of default VirtualizedSectionList
243
+ */
244
+ legacyImplementation?: boolean | undefined;
245
+ }
246
+
247
+ export interface SectionListScrollParams {
248
+ animated?: boolean | undefined;
249
+ itemIndex: number;
250
+ sectionIndex: number;
251
+ viewOffset?: number | undefined;
252
+ viewPosition?: number | undefined;
253
+ }
254
+
255
+ export class SectionList<
256
+ ItemT = any,
257
+ SectionT = DefaultSectionT,
258
+ > extends React.Component<SectionListProps<ItemT, SectionT>> {
259
+ /**
260
+ * Scrolls to the item at the specified sectionIndex and itemIndex (within the section)
261
+ * positioned in the viewable area such that viewPosition 0 places it at the top
262
+ * (and may be covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle.
263
+ */
264
+ scrollToLocation(params: SectionListScrollParams): void;
265
+
266
+ /**
267
+ * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.
268
+ * if `waitForInteractions` is true and the user has not scrolled. This is typically called by
269
+ * taps on items or by navigation actions.
270
+ */
271
+ recordInteraction(): void;
272
+
273
+ /**
274
+ * Displays the scroll indicators momentarily.
275
+ *
276
+ * @platform ios
277
+ */
278
+ flashScrollIndicators(): void;
279
+
280
+ /**
281
+ * Provides a handle to the underlying scroll responder.
282
+ */
283
+ getScrollResponder(): ScrollView | undefined;
284
+
285
+ /**
286
+ * Provides a handle to the underlying scroll node.
287
+ */
288
+ getScrollableNode(): NodeHandle | undefined;
289
+ }
290
+
291
+ /* This definition is deprecated because it extends the wrong base type */
292
+ export interface SectionListStatic<ItemT, SectionT = DefaultSectionT>
293
+ extends React.ComponentClass<SectionListProps<ItemT, SectionT>> {
294
+ /**
295
+ * Scrolls to the item at the specified sectionIndex and itemIndex (within the section)
296
+ * positioned in the viewable area such that viewPosition 0 places it at the top
297
+ * (and may be covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle.
298
+ */
299
+ scrollToLocation?(params: SectionListScrollParams): void;
300
+ }
@@ -10,17 +10,17 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import Platform from '../Utilities/Platform';
14
- import * as React from 'react';
15
- import VirtualizedSectionList from './VirtualizedSectionList';
16
-
17
13
  import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
18
14
  import type {
19
- SectionBase as _SectionBase,
20
15
  Props as VirtualizedSectionListProps,
21
16
  ScrollToLocationParamsType,
17
+ SectionBase as _SectionBase,
22
18
  } from './VirtualizedSectionList';
23
19
 
20
+ import Platform from '../Utilities/Platform';
21
+ import VirtualizedSectionList from './VirtualizedSectionList';
22
+ import * as React from 'react';
23
+
24
24
  type Item = any;
25
25
 
26
26
  export type SectionBase<SectionItemT> = _SectionBase<SectionItemT>;
@@ -10,17 +10,17 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import Platform from '../Utilities/Platform';
14
- import React, {useRef, forwardRef, useImperativeHandle} from 'react';
15
- import VirtualizedSectionList from './VirtualizedSectionList';
16
-
17
13
  import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
18
14
  import type {
19
- SectionBase as _SectionBase,
20
15
  Props as VirtualizedSectionListProps,
21
16
  ScrollToLocationParamsType,
17
+ SectionBase as _SectionBase,
22
18
  } from './VirtualizedSectionList';
23
- import type {Element, ElementRef, AbstractComponent} from 'react';
19
+ import type {AbstractComponent, Element, ElementRef} from 'react';
20
+
21
+ import Platform from '../Utilities/Platform';
22
+ import VirtualizedSectionList from './VirtualizedSectionList';
23
+ import React, {forwardRef, useImperativeHandle, useRef} from 'react';
24
24
 
25
25
  type Item = any;
26
26
 
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ import invariant from 'invariant';
12
+ import * as React from 'react';
13
+
14
+ /**
15
+ * `setState` is called asynchronously, and should not rely on the value of
16
+ * `this.props` or `this.state`:
17
+ * https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous
18
+ *
19
+ * SafePureComponent adds runtime enforcement, to catch cases where these
20
+ * variables are read in a state updater function, instead of the ones passed
21
+ * in.
22
+ */
23
+ export default class StateSafePureComponent<
24
+ Props,
25
+ State: interface {},
26
+ > extends React.PureComponent<Props, State> {
27
+ _inAsyncStateUpdate = false;
28
+
29
+ constructor(props: Props) {
30
+ super(props);
31
+ this._installSetStateHooks();
32
+ }
33
+
34
+ setState(
35
+ partialState: ?($Shape<State> | ((State, Props) => ?$Shape<State>)),
36
+ callback?: () => mixed,
37
+ ): void {
38
+ if (typeof partialState === 'function') {
39
+ super.setState((state, props) => {
40
+ this._inAsyncStateUpdate = true;
41
+ let ret;
42
+ try {
43
+ ret = partialState(state, props);
44
+ } catch (err) {
45
+ throw err;
46
+ } finally {
47
+ this._inAsyncStateUpdate = false;
48
+ }
49
+ return ret;
50
+ }, callback);
51
+ } else {
52
+ super.setState(partialState, callback);
53
+ }
54
+ }
55
+
56
+ _installSetStateHooks() {
57
+ const that = this;
58
+ let {props, state} = this;
59
+
60
+ Object.defineProperty(this, 'props', {
61
+ get() {
62
+ invariant(
63
+ !that._inAsyncStateUpdate,
64
+ '"this.props" should not be accessed during state updates',
65
+ );
66
+ return props;
67
+ },
68
+ set(newProps: Props) {
69
+ props = newProps;
70
+ },
71
+ });
72
+ Object.defineProperty(this, 'state', {
73
+ get() {
74
+ invariant(
75
+ !that._inAsyncStateUpdate,
76
+ '"this.state" should not be acceessed during state updates',
77
+ );
78
+ return state;
79
+ },
80
+ set(newState: State) {
81
+ state = newState;
82
+ },
83
+ });
84
+ }
85
+ }
@@ -10,6 +10,8 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {FrameMetricProps} from './VirtualizedListProps';
14
+
13
15
  const invariant = require('invariant');
14
16
 
15
17
  export type ViewToken = {
@@ -99,10 +101,13 @@ class ViewabilityHelper {
99
101
  * Determines which items are viewable based on the current metrics and config.
100
102
  */
101
103
  computeViewableItems(
102
- itemCount: number,
104
+ props: FrameMetricProps,
103
105
  scrollOffset: number,
104
106
  viewportHeight: number,
105
- getFrameMetrics: (index: number) => ?{
107
+ getFrameMetrics: (
108
+ index: number,
109
+ props: FrameMetricProps,
110
+ ) => ?{
106
111
  length: number,
107
112
  offset: number,
108
113
  ...
@@ -114,6 +119,7 @@ class ViewabilityHelper {
114
119
  ...
115
120
  },
116
121
  ): Array<number> {
122
+ const itemCount = props.getItemCount(props.data);
117
123
  const {itemVisiblePercentThreshold, viewAreaCoveragePercentThreshold} =
118
124
  this._config;
119
125
  const viewAreaMode = viewAreaCoveragePercentThreshold != null;
@@ -140,7 +146,7 @@ class ViewabilityHelper {
140
146
  return [];
141
147
  }
142
148
  for (let idx = first; idx <= last; idx++) {
143
- const metrics = getFrameMetrics(idx);
149
+ const metrics = getFrameMetrics(idx, props);
144
150
  if (!metrics) {
145
151
  continue;
146
152
  }
@@ -172,15 +178,22 @@ class ViewabilityHelper {
172
178
  * `onViewableItemsChanged` as appropriate.
173
179
  */
174
180
  onUpdate(
175
- itemCount: number,
181
+ props: FrameMetricProps,
176
182
  scrollOffset: number,
177
183
  viewportHeight: number,
178
- getFrameMetrics: (index: number) => ?{
184
+ getFrameMetrics: (
185
+ index: number,
186
+ props: FrameMetricProps,
187
+ ) => ?{
179
188
  length: number,
180
189
  offset: number,
181
190
  ...
182
191
  },
183
- createViewToken: (index: number, isViewable: boolean) => ViewToken,
192
+ createViewToken: (
193
+ index: number,
194
+ isViewable: boolean,
195
+ props: FrameMetricProps,
196
+ ) => ViewToken,
184
197
  onViewableItemsChanged: ({
185
198
  viewableItems: Array<ViewToken>,
186
199
  changed: Array<ViewToken>,
@@ -193,17 +206,18 @@ class ViewabilityHelper {
193
206
  ...
194
207
  },
195
208
  ): void {
209
+ const itemCount = props.getItemCount(props.data);
196
210
  if (
197
211
  (this._config.waitForInteraction && !this._hasInteracted) ||
198
212
  itemCount === 0 ||
199
- !getFrameMetrics(0)
213
+ !getFrameMetrics(0, props)
200
214
  ) {
201
215
  return;
202
216
  }
203
- let viewableIndices = [];
217
+ let viewableIndices: Array<number> = [];
204
218
  if (itemCount) {
205
219
  viewableIndices = this.computeViewableItems(
206
- itemCount,
220
+ props,
207
221
  scrollOffset,
208
222
  viewportHeight,
209
223
  getFrameMetrics,
@@ -220,12 +234,13 @@ class ViewabilityHelper {
220
234
  }
221
235
  this._viewableIndices = viewableIndices;
222
236
  if (this._config.minimumViewTime) {
223
- const handle = setTimeout(() => {
237
+ const handle: TimeoutID = setTimeout(() => {
224
238
  /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This
225
239
  * comment suppresses an error found when Flow v0.63 was deployed. To
226
240
  * see the error delete this comment and run Flow. */
227
241
  this._timers.delete(handle);
228
242
  this._onUpdateSync(
243
+ props,
229
244
  viewableIndices,
230
245
  onViewableItemsChanged,
231
246
  createViewToken,
@@ -237,6 +252,7 @@ class ViewabilityHelper {
237
252
  this._timers.add(handle);
238
253
  } else {
239
254
  this._onUpdateSync(
255
+ props,
240
256
  viewableIndices,
241
257
  onViewableItemsChanged,
242
258
  createViewToken,
@@ -259,13 +275,18 @@ class ViewabilityHelper {
259
275
  }
260
276
 
261
277
  _onUpdateSync(
278
+ props: FrameMetricProps,
262
279
  viewableIndicesToCheck: Array<number>,
263
280
  onViewableItemsChanged: ({
264
281
  changed: Array<ViewToken>,
265
282
  viewableItems: Array<ViewToken>,
266
283
  ...
267
284
  }) => void,
268
- createViewToken: (index: number, isViewable: boolean) => ViewToken,
285
+ createViewToken: (
286
+ index: number,
287
+ isViewable: boolean,
288
+ props: FrameMetricProps,
289
+ ) => ViewToken,
269
290
  ) {
270
291
  // Filter out indices that have gone out of view since this call was scheduled.
271
292
  viewableIndicesToCheck = viewableIndicesToCheck.filter(ii =>
@@ -274,7 +295,7 @@ class ViewabilityHelper {
274
295
  const prevItems = this._viewableItems;
275
296
  const nextItems = new Map(
276
297
  viewableIndicesToCheck.map(ii => {
277
- const viewable = createViewToken(ii, true);
298
+ const viewable = createViewToken(ii, true, props);
278
299
  return [viewable.key, viewable];
279
300
  }),
280
301
  );
@@ -10,7 +10,7 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import invariant from 'invariant';
13
+ import type {FrameMetricProps} from './VirtualizedListProps';
14
14
 
15
15
  /**
16
16
  * Used to find the indices of the frames that overlap the given offsets. Useful for finding the
@@ -19,14 +19,18 @@ import invariant from 'invariant';
19
19
  */
20
20
  export function elementsThatOverlapOffsets(
21
21
  offsets: Array<number>,
22
- itemCount: number,
23
- getFrameMetrics: (index: number) => {
22
+ props: FrameMetricProps,
23
+ getFrameMetrics: (
24
+ index: number,
25
+ props: FrameMetricProps,
26
+ ) => {
24
27
  length: number,
25
28
  offset: number,
26
29
  ...
27
30
  },
28
31
  zoomScale: number = 1,
29
32
  ): Array<number> {
33
+ const itemCount = props.getItemCount(props.data);
30
34
  const result = [];
31
35
  for (let offsetIndex = 0; offsetIndex < offsets.length; offsetIndex++) {
32
36
  const currentOffset = offsets[offsetIndex];
@@ -36,7 +40,7 @@ export function elementsThatOverlapOffsets(
36
40
  while (left <= right) {
37
41
  // eslint-disable-next-line no-bitwise
38
42
  const mid = left + ((right - left) >>> 1);
39
- const frame = getFrameMetrics(mid);
43
+ const frame = getFrameMetrics(mid, props);
40
44
  const scaledOffsetStart = frame.offset * zoomScale;
41
45
  const scaledOffsetEnd = (frame.offset + frame.length) * zoomScale;
42
46
 
@@ -95,16 +99,17 @@ export function newRangeCount(
95
99
  * biased in the direction of scroll.
96
100
  */
97
101
  export function computeWindowedRenderLimits(
98
- data: any,
99
- getItemCount: (data: any) => number,
102
+ props: FrameMetricProps,
100
103
  maxToRenderPerBatch: number,
101
104
  windowSize: number,
102
105
  prev: {
103
106
  first: number,
104
107
  last: number,
105
- ...
106
108
  },
107
- getFrameMetricsApprox: (index: number) => {
109
+ getFrameMetricsApprox: (
110
+ index: number,
111
+ props: FrameMetricProps,
112
+ ) => {
108
113
  length: number,
109
114
  offset: number,
110
115
  ...
@@ -120,11 +125,10 @@ export function computeWindowedRenderLimits(
120
125
  ): {
121
126
  first: number,
122
127
  last: number,
123
- ...
124
128
  } {
125
- const itemCount = getItemCount(data);
129
+ const itemCount = props.getItemCount(props.data);
126
130
  if (itemCount === 0) {
127
- return prev;
131
+ return {first: 0, last: -1};
128
132
  }
129
133
  const {offset, velocity, visibleLength, zoomScale = 1} = scrollMetrics;
130
134
 
@@ -148,7 +152,7 @@ export function computeWindowedRenderLimits(
148
152
  const overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength);
149
153
 
150
154
  const lastItemOffset =
151
- getFrameMetricsApprox(itemCount - 1).offset * zoomScale;
155
+ getFrameMetricsApprox(itemCount - 1, props).offset * zoomScale;
152
156
  if (lastItemOffset < overscanBegin) {
153
157
  // Entire list is before our overscan window
154
158
  return {
@@ -160,7 +164,7 @@ export function computeWindowedRenderLimits(
160
164
  // Find the indices that correspond to the items at the render boundaries we're targeting.
161
165
  let [overscanFirst, first, last, overscanLast] = elementsThatOverlapOffsets(
162
166
  [overscanBegin, visibleBegin, visibleEnd, overscanEnd],
163
- itemCount,
167
+ props,
164
168
  getFrameMetricsApprox,
165
169
  zoomScale,
166
170
  );