@office-iss/react-native-win32 0.0.0-canary.28 → 0.0.0-canary.281

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 (1425) hide show
  1. package/.eslintignore +5 -2
  2. package/.eslintrc.js +27 -2
  3. package/.flowconfig +76 -37
  4. package/CHANGELOG.json +5763 -1
  5. package/CHANGELOG.md +2301 -4
  6. package/IntegrationTests/AccessibilityManagerTest.js +8 -11
  7. package/IntegrationTests/AppEventsTest.js +3 -3
  8. package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +12 -5
  9. package/IntegrationTests/ImageCachePolicyTest.js +5 -5
  10. package/IntegrationTests/ImageSnapshotTest.js +2 -2
  11. package/IntegrationTests/IntegrationTestHarnessTest.js +9 -6
  12. package/IntegrationTests/IntegrationTestsApp.js +16 -21
  13. package/IntegrationTests/LayoutEventsTest.js +14 -12
  14. package/IntegrationTests/LoggingTestModule.js +10 -12
  15. package/IntegrationTests/PromiseTest.js +2 -1
  16. package/IntegrationTests/SimpleSnapshotTest.js +2 -4
  17. package/IntegrationTests/SyncMethodTest.js +2 -2
  18. package/IntegrationTests/TimersTest.js +20 -5
  19. package/IntegrationTests/WebSocketTest.js +5 -5
  20. package/IntegrationTests/launchWebSocketServer.sh +12 -0
  21. package/IntegrationTests/websocket_integration_test_server.js +3 -3
  22. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +87 -0
  23. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +51 -11
  24. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +5 -43
  25. package/Libraries/Alert/Alert.d.ts +91 -0
  26. package/Libraries/Alert/Alert.js +31 -10
  27. package/Libraries/Alert/Alert.win32.js +6 -4
  28. package/Libraries/Alert/NativeAlertManager.js +5 -26
  29. package/Libraries/Alert/RCTAlertManager.android.js +2 -4
  30. package/Libraries/Alert/RCTAlertManager.ios.js +2 -3
  31. package/Libraries/Animated/Animated.d.ts +626 -0
  32. package/Libraries/Animated/Animated.js +48 -0
  33. package/Libraries/Animated/AnimatedEvent.js +256 -0
  34. package/Libraries/Animated/AnimatedImplementation.js +754 -0
  35. package/Libraries/Animated/AnimatedMock.js +195 -0
  36. package/Libraries/Animated/AnimatedPlatformConfig.js +13 -0
  37. package/Libraries/Animated/AnimatedWeb.js +26 -0
  38. package/Libraries/Animated/Easing.d.ts +37 -0
  39. package/Libraries/Animated/Easing.js +250 -0
  40. package/Libraries/Animated/NativeAnimatedAllowlist.js +122 -0
  41. package/Libraries/Animated/NativeAnimatedModule.js +13 -0
  42. package/Libraries/Animated/NativeAnimatedTurboModule.js +13 -0
  43. package/Libraries/Animated/SpringConfig.js +98 -0
  44. package/Libraries/Animated/animations/Animation.js +192 -0
  45. package/Libraries/Animated/animations/DecayAnimation.js +122 -0
  46. package/Libraries/Animated/animations/SpringAnimation.js +373 -0
  47. package/Libraries/Animated/animations/TimingAnimation.js +174 -0
  48. package/Libraries/Animated/bezier.js +164 -0
  49. package/Libraries/Animated/components/AnimatedFlatList.js +20 -0
  50. package/Libraries/Animated/components/AnimatedImage.js +22 -0
  51. package/Libraries/Animated/components/AnimatedScrollView.js +137 -0
  52. package/Libraries/Animated/components/AnimatedSectionList.js +22 -0
  53. package/Libraries/Animated/components/AnimatedText.js +22 -0
  54. package/Libraries/Animated/components/AnimatedView.js +20 -0
  55. package/Libraries/Animated/createAnimatedComponent.js +101 -0
  56. package/Libraries/Animated/nodes/AnimatedAddition.js +71 -0
  57. package/Libraries/Animated/nodes/AnimatedColor.js +323 -0
  58. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +80 -0
  59. package/Libraries/Animated/nodes/AnimatedDivision.js +87 -0
  60. package/Libraries/Animated/nodes/AnimatedInterpolation.js +420 -0
  61. package/Libraries/Animated/nodes/AnimatedModulo.js +66 -0
  62. package/Libraries/Animated/nodes/AnimatedMultiplication.js +70 -0
  63. package/Libraries/Animated/nodes/AnimatedNode.js +179 -0
  64. package/Libraries/Animated/nodes/AnimatedObject.js +169 -0
  65. package/Libraries/Animated/nodes/AnimatedProps.js +285 -0
  66. package/Libraries/Animated/nodes/AnimatedStyle.js +255 -0
  67. package/Libraries/Animated/nodes/AnimatedSubtraction.js +71 -0
  68. package/Libraries/Animated/nodes/AnimatedTracking.js +104 -0
  69. package/Libraries/Animated/nodes/AnimatedTransform.js +202 -0
  70. package/Libraries/Animated/nodes/AnimatedValue.js +348 -0
  71. package/Libraries/Animated/nodes/AnimatedValueXY.js +238 -0
  72. package/Libraries/Animated/nodes/AnimatedWithChildren.js +85 -0
  73. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  74. package/Libraries/Animated/useAnimatedProps.js +346 -0
  75. package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
  76. package/Libraries/Animated/useAnimatedValue.js +25 -0
  77. package/Libraries/AppState/AppState.d.ts +58 -0
  78. package/Libraries/AppState/AppState.js +91 -144
  79. package/Libraries/AppState/NativeAppState.js +5 -22
  80. package/Libraries/BatchedBridge/BatchedBridge.js +2 -2
  81. package/Libraries/BatchedBridge/MessageQueue.js +136 -114
  82. package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
  83. package/Libraries/BatchedBridge/NativeModules.js +36 -21
  84. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +1 -1
  85. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +3 -3
  86. package/Libraries/Blob/Blob.js +20 -3
  87. package/Libraries/Blob/BlobManager.js +7 -10
  88. package/Libraries/Blob/BlobRegistry.js +15 -10
  89. package/Libraries/Blob/BlobTypes.js +1 -1
  90. package/Libraries/Blob/File.js +3 -4
  91. package/Libraries/Blob/FileReader.js +36 -16
  92. package/Libraries/Blob/NativeBlobModule.js +5 -18
  93. package/Libraries/Blob/NativeFileReaderModule.js +5 -15
  94. package/Libraries/Blob/URL.js +38 -87
  95. package/Libraries/Blob/URLSearchParams.js +71 -0
  96. package/Libraries/Blob/__mocks__/BlobModule.js +1 -1
  97. package/Libraries/Blob/__mocks__/FileReaderModule.js +1 -1
  98. package/Libraries/BugReporting/BugReporting.js +8 -9
  99. package/Libraries/BugReporting/NativeBugReporting.js +5 -12
  100. package/Libraries/BugReporting/dumpReactTree.js +1 -1
  101. package/Libraries/BugReporting/getReactData.js +17 -8
  102. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +177 -0
  103. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +493 -0
  104. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +466 -96
  105. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +5 -19
  106. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +11 -0
  107. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +5 -51
  108. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +36 -0
  109. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +26 -0
  110. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +36 -0
  111. package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
  112. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +77 -52
  113. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +4 -47
  114. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +36 -36
  115. package/Libraries/Components/Button/ButtonWin32.Props.js +3 -3
  116. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -0
  117. package/Libraries/Components/Button/ButtonWin32.d.ts +19 -19
  118. package/Libraries/Components/Button/ButtonWin32.js +83 -103
  119. package/Libraries/Components/Button/ButtonWin32.js.map +1 -0
  120. package/Libraries/Components/Button.d.ts +42 -0
  121. package/Libraries/Components/Button.js +328 -125
  122. package/Libraries/Components/Button.win32.js +463 -0
  123. package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
  124. package/Libraries/Components/Clipboard/Clipboard.js +3 -5
  125. package/Libraries/Components/Clipboard/NativeClipboard.js +5 -14
  126. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +4 -116
  127. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +44 -35
  128. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
  129. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +7 -2
  130. package/Libraries/Components/EnterString.win32.d.ts +12 -12
  131. package/Libraries/Components/EnterString.win32.js +82 -114
  132. package/Libraries/Components/EnterString.win32.js.map +1 -0
  133. package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
  134. package/Libraries/Components/Keyboard/Keyboard.js +81 -71
  135. package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
  136. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +123 -56
  137. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +5 -13
  138. package/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +21 -0
  139. package/Libraries/Components/LayoutConformance/LayoutConformance.js +59 -0
  140. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +29 -0
  141. package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
  142. package/Libraries/Components/Pressable/Pressable.js +179 -46
  143. package/Libraries/Components/Pressable/Pressable.win32.js +437 -0
  144. package/Libraries/Components/Pressable/useAndroidRippleForView.js +38 -23
  145. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +36 -27
  146. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
  147. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  148. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +5 -27
  149. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +4 -77
  150. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +4 -56
  151. package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
  152. package/Libraries/Components/RefreshControl/RefreshControl.js +16 -38
  153. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +6 -8
  154. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +4 -20
  155. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
  156. package/Libraries/Components/SafeAreaView/SafeAreaView.js +12 -39
  157. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +12 -41
  158. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +5 -32
  159. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +38 -21
  160. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +13 -20
  161. package/Libraries/Components/ScrollView/ScrollView.d.ts +910 -0
  162. package/Libraries/Components/ScrollView/ScrollView.js +1119 -439
  163. package/Libraries/Components/ScrollView/ScrollViewCommands.js +5 -5
  164. package/Libraries/Components/ScrollView/ScrollViewContext.js +24 -0
  165. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +168 -18
  166. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +11 -17
  167. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +206 -62
  168. package/Libraries/Components/ScrollView/processDecelerationRate.js +2 -4
  169. package/Libraries/Components/Sound/NativeSoundManager.js +5 -15
  170. package/Libraries/Components/Sound/SoundManager.js +3 -4
  171. package/Libraries/Components/StaticRenderer.js +1 -1
  172. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +5 -27
  173. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +5 -35
  174. package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
  175. package/Libraries/Components/StatusBar/StatusBar.js +40 -60
  176. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +5 -56
  177. package/Libraries/Components/Switch/Switch.d.ts +115 -0
  178. package/Libraries/Components/Switch/Switch.js +162 -133
  179. package/Libraries/Components/Switch/SwitchNativeComponent.js +5 -50
  180. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +237 -67
  181. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
  182. package/Libraries/Components/TextInput/InputAccessoryView.js +28 -23
  183. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +5 -18
  184. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +29 -34
  185. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +24 -42
  186. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +169 -0
  187. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +8 -8
  188. package/Libraries/Components/TextInput/Tests/TextInputTest.js +128 -126
  189. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -0
  190. package/Libraries/Components/TextInput/TextInput.d.ts +1012 -0
  191. package/Libraries/Components/TextInput/TextInput.flow.js +1115 -0
  192. package/Libraries/Components/TextInput/TextInput.js +1145 -444
  193. package/Libraries/Components/TextInput/TextInput.win32.js +2043 -179
  194. package/Libraries/Components/TextInput/TextInputNativeCommands.js +29 -0
  195. package/Libraries/Components/TextInput/TextInputState.js +42 -21
  196. package/Libraries/Components/TextInput/TextInputState.win32.js +55 -30
  197. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +26 -0
  198. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +5 -31
  199. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +11 -10
  200. package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +47 -0
  201. package/Libraries/Components/ToastAndroid/ToastAndroid.js +45 -0
  202. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +16 -10
  203. package/Libraries/Components/Touchable/BoundingDimensions.js +13 -6
  204. package/Libraries/Components/Touchable/PooledClass.js +26 -15
  205. package/Libraries/Components/Touchable/Position.js +9 -5
  206. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +8 -8
  207. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +344 -381
  208. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -0
  209. package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
  210. package/Libraries/Components/Touchable/Touchable.js +122 -133
  211. package/Libraries/Components/Touchable/Touchable.win32.js +978 -0
  212. package/Libraries/Components/Touchable/TouchableBounce.js +60 -55
  213. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +62 -0
  214. package/Libraries/Components/Touchable/TouchableHighlight.js +66 -56
  215. package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +119 -0
  216. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +86 -67
  217. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +99 -51
  218. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +81 -0
  219. package/Libraries/Components/Touchable/TouchableOpacity.js +95 -58
  220. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -34
  221. package/Libraries/Components/Touchable/TouchableWin32.Props.js +3 -3
  222. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -0
  223. package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
  224. package/Libraries/Components/Touchable/TouchableWin32.Types.js +3 -3
  225. package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -0
  226. package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
  227. package/Libraries/Components/Touchable/TouchableWin32.js +507 -529
  228. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -0
  229. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +151 -0
  230. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +148 -107
  231. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +4 -19
  232. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +3 -4
  233. package/Libraries/Components/View/ReactNativeStyleAttributes.js +200 -69
  234. package/Libraries/Components/View/ReactNativeViewAttributes.js +7 -3
  235. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +37 -13
  236. package/Libraries/Components/View/View.d.ts +29 -0
  237. package/Libraries/Components/View/View.js +108 -16
  238. package/Libraries/Components/View/View.win32.js +276 -0
  239. package/Libraries/Components/View/ViewAccessibility.d.ts +566 -0
  240. package/Libraries/Components/View/ViewAccessibility.js +88 -7
  241. package/Libraries/Components/View/ViewAccessibility.win32.js +180 -0
  242. package/Libraries/Components/View/ViewNativeComponent.js +17 -71
  243. package/Libraries/Components/View/ViewPropTypes.d.ts +354 -0
  244. package/Libraries/Components/View/ViewPropTypes.js +218 -66
  245. package/Libraries/Components/View/ViewPropTypes.win32.js +731 -0
  246. package/Libraries/Components/View/ViewWin32.d.ts +30 -12
  247. package/Libraries/Components/View/ViewWin32.js +130 -80
  248. package/Libraries/Core/Devtools/getDevServer.js +9 -8
  249. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  250. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +153 -0
  251. package/Libraries/Core/Devtools/openFileInEditor.js +6 -2
  252. package/Libraries/Core/Devtools/openURLInBrowser.js +3 -2
  253. package/Libraries/Core/Devtools/parseErrorStack.js +14 -23
  254. package/Libraries/Core/Devtools/parseHermesStack.js +71 -44
  255. package/Libraries/Core/Devtools/symbolicateStackTrace.js +13 -58
  256. package/Libraries/Core/ExceptionsManager.js +130 -114
  257. package/Libraries/Core/ExtendedError.js +33 -0
  258. package/Libraries/Core/InitializeCore.js +7 -3
  259. package/Libraries/Core/NativeExceptionsManager.js +5 -100
  260. package/Libraries/Core/RawEventEmitter.js +39 -0
  261. package/Libraries/Core/ReactFiberErrorDialog.js +47 -38
  262. package/Libraries/Core/ReactNativeVersion.js +13 -7
  263. package/Libraries/Core/ReactNativeVersionCheck.js +11 -8
  264. package/Libraries/Core/ReactNativeVersionCheck.win32.js +11 -8
  265. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +5 -21
  266. package/Libraries/Core/Timers/JSTimers.js +94 -120
  267. package/Libraries/Core/Timers/NativeTiming.js +5 -19
  268. package/Libraries/Core/Timers/immediateShim.js +68 -0
  269. package/Libraries/Core/Timers/queueMicrotask.js +41 -0
  270. package/Libraries/Core/__mocks__/ErrorUtils.js +1 -1
  271. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +19 -0
  272. package/Libraries/Core/checkNativeVersion.js +1 -1
  273. package/Libraries/Core/polyfillPromise.js +19 -3
  274. package/Libraries/Core/registerCallableModule.d.ts +16 -0
  275. package/Libraries/Core/registerCallableModule.js +42 -0
  276. package/Libraries/Core/setUpAlert.js +2 -2
  277. package/Libraries/Core/setUpBatchedBridge.js +9 -20
  278. package/Libraries/Core/setUpDeveloperTools.js +59 -60
  279. package/Libraries/Core/setUpErrorHandling.js +21 -19
  280. package/Libraries/Core/setUpGlobals.js +8 -6
  281. package/Libraries/Core/setUpNavigator.js +8 -7
  282. package/Libraries/Core/setUpPerformance.js +31 -0
  283. package/Libraries/Core/setUpReactDevTools.js +194 -12
  284. package/Libraries/Core/setUpReactRefresh.js +4 -6
  285. package/Libraries/Core/setUpRegeneratorRuntime.js +28 -9
  286. package/Libraries/Core/setUpSegmentFetcher.js +9 -47
  287. package/Libraries/Core/setUpTimers.js +99 -8
  288. package/Libraries/Core/setUpXHR.js +5 -5
  289. package/Libraries/Debugging/DebuggingOverlay.js +110 -0
  290. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  291. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  292. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  293. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +63 -0
  294. package/Libraries/EventEmitter/NativeEventEmitter.js +92 -40
  295. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +29 -0
  296. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +27 -68
  297. package/Libraries/EventEmitter/RCTEventEmitter.js +3 -3
  298. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
  299. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +2 -4
  300. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +34 -11
  301. package/Libraries/Events/CustomEvent.js +32 -0
  302. package/Libraries/Events/EventPolyfill.js +239 -0
  303. package/Libraries/Image/AssetRegistry.js +2 -27
  304. package/Libraries/Image/AssetSourceResolver.js +76 -39
  305. package/Libraries/Image/AssetUtils.js +47 -0
  306. package/Libraries/Image/Image.android.js +204 -271
  307. package/Libraries/Image/Image.d.ts +373 -0
  308. package/Libraries/Image/Image.ios.js +145 -104
  309. package/Libraries/Image/Image.win32.js +150 -93
  310. package/Libraries/Image/ImageAnalyticsTagContext.js +22 -0
  311. package/Libraries/Image/ImageBackground.js +29 -13
  312. package/Libraries/Image/ImageInjection.js +87 -0
  313. package/Libraries/Image/ImageProps.js +158 -32
  314. package/Libraries/Image/ImageResizeMode.d.ts +56 -0
  315. package/Libraries/Image/ImageResizeMode.js +5 -2
  316. package/Libraries/Image/ImageSource.d.ts +74 -0
  317. package/Libraries/Image/ImageSource.js +73 -23
  318. package/Libraries/Image/ImageSourceUtils.js +80 -0
  319. package/Libraries/Image/ImageTypes.d.ts +25 -25
  320. package/Libraries/Image/ImageTypes.flow.js +78 -0
  321. package/Libraries/Image/ImageTypes.js +8 -8
  322. package/Libraries/Image/ImageTypes.js.map +1 -0
  323. package/Libraries/Image/ImageUtils.js +25 -0
  324. package/Libraries/Image/ImageViewNativeComponent.js +147 -29
  325. package/Libraries/Image/NativeImageEditor.js +13 -0
  326. package/Libraries/Image/NativeImageLoaderAndroid.js +5 -32
  327. package/Libraries/Image/NativeImageLoaderIOS.js +5 -24
  328. package/Libraries/Image/NativeImageLoaderWin32.js +5 -32
  329. package/Libraries/Image/NativeImageStoreAndroid.js +13 -0
  330. package/Libraries/Image/NativeImageStoreIOS.js +13 -0
  331. package/Libraries/Image/RelativeImageStub.js +2 -2
  332. package/Libraries/Image/Tests/ImageWin32Test.d.ts +8 -8
  333. package/Libraries/Image/Tests/ImageWin32Test.js +22 -19
  334. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -0
  335. package/Libraries/Image/TextInlineImageNativeComponent.js +38 -7
  336. package/Libraries/Image/assetPaths.js +36 -0
  337. package/Libraries/Image/nativeImageSource.js +4 -6
  338. package/Libraries/Image/resolveAssetSource.js +65 -31
  339. package/Libraries/Image/resolveAssetSource.win32.js +18 -6
  340. package/Libraries/Inspector/BorderBox.js +27 -15
  341. package/Libraries/Inspector/BoxInspector.js +62 -45
  342. package/Libraries/Inspector/ElementBox.js +65 -53
  343. package/Libraries/Inspector/ElementProperties.js +35 -62
  344. package/Libraries/Inspector/Inspector.js +153 -259
  345. package/Libraries/Inspector/Inspector.win32.js +157 -263
  346. package/Libraries/Inspector/InspectorOverlay.js +28 -53
  347. package/Libraries/Inspector/InspectorOverlay.win32.js +31 -54
  348. package/Libraries/Inspector/InspectorPanel.js +31 -37
  349. package/Libraries/Inspector/NetworkOverlay.js +28 -18
  350. package/Libraries/Inspector/PerformanceOverlay.js +5 -5
  351. package/Libraries/Inspector/ReactDevToolsOverlay.js +165 -0
  352. package/Libraries/Inspector/StyleInspector.js +38 -32
  353. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +81 -0
  354. package/Libraries/Inspector/resolveBoxStyle.js +1 -1
  355. package/Libraries/Interaction/FrameRateLogger.js +10 -22
  356. package/Libraries/Interaction/InteractionManager.d.ts +74 -0
  357. package/Libraries/Interaction/InteractionManager.js +35 -41
  358. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  359. package/Libraries/Interaction/JSEventLoopWatchdog.js +10 -15
  360. package/Libraries/Interaction/NativeFrameRateLogger.js +5 -16
  361. package/Libraries/Interaction/PanResponder.d.ts +202 -0
  362. package/Libraries/Interaction/PanResponder.js +26 -28
  363. package/Libraries/Interaction/TaskQueue.js +15 -16
  364. package/Libraries/Interaction/TouchHistoryMath.js +32 -29
  365. package/Libraries/JSInspector/InspectorAgent.js +4 -4
  366. package/Libraries/JSInspector/JSInspector.js +2 -5
  367. package/Libraries/JSInspector/NetworkAgent.js +12 -17
  368. package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
  369. package/Libraries/LayoutAnimation/LayoutAnimation.js +88 -39
  370. package/Libraries/Linking/Linking.d.ts +61 -0
  371. package/Libraries/Linking/Linking.js +50 -41
  372. package/Libraries/Linking/NativeIntentAndroid.js +13 -0
  373. package/Libraries/Linking/NativeLinkingManager.js +13 -0
  374. package/Libraries/Lists/FillRateHelper.js +6 -232
  375. package/Libraries/Lists/FlatList.d.ts +244 -0
  376. package/Libraries/Lists/FlatList.js +195 -128
  377. package/Libraries/Lists/SectionList.d.ts +267 -0
  378. package/Libraries/Lists/SectionList.js +38 -33
  379. package/Libraries/Lists/SectionListModern.js +249 -0
  380. package/Libraries/Lists/ViewabilityHelper.js +10 -327
  381. package/Libraries/Lists/VirtualizeUtils.js +6 -235
  382. package/Libraries/Lists/VirtualizedList.js +10 -2224
  383. package/Libraries/Lists/VirtualizedListContext.js +18 -0
  384. package/Libraries/Lists/VirtualizedSectionList.js +9 -565
  385. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +4 -3
  386. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +9 -9
  387. package/Libraries/LogBox/Data/LogBoxData.js +106 -75
  388. package/Libraries/LogBox/Data/LogBoxLog.js +125 -12
  389. package/Libraries/LogBox/Data/LogBoxSymbolication.js +10 -9
  390. package/Libraries/LogBox/Data/parseLogBoxLog.js +289 -76
  391. package/Libraries/LogBox/LogBox.d.ts +28 -0
  392. package/Libraries/LogBox/LogBox.js +175 -90
  393. package/Libraries/LogBox/LogBoxInspectorContainer.js +7 -7
  394. package/Libraries/LogBox/LogBoxNotificationContainer.js +11 -8
  395. package/Libraries/LogBox/UI/AnsiHighlight.js +42 -24
  396. package/Libraries/LogBox/UI/LogBoxButton.js +6 -7
  397. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  398. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  399. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  400. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  401. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  402. package/Libraries/LogBox/UI/LogBoxInspector.js +13 -77
  403. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  404. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +18 -11
  405. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +173 -0
  406. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +9 -53
  407. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  408. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +19 -79
  409. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +113 -0
  410. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  411. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +6 -7
  412. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +16 -14
  413. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +196 -0
  414. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +3 -5
  415. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +6 -10
  416. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -10
  417. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +118 -0
  418. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +19 -11
  419. package/Libraries/LogBox/UI/LogBoxMessage.js +100 -19
  420. package/Libraries/LogBox/UI/LogBoxNotification.js +20 -158
  421. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  422. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  423. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  424. package/Libraries/LogBox/UI/LogBoxStyle.js +1 -3
  425. package/Libraries/LogBox/UI/LogBoxStyle.win32.js +65 -0
  426. package/Libraries/Modal/Modal.d.ts +116 -0
  427. package/Libraries/Modal/Modal.js +168 -72
  428. package/Libraries/Modal/ModalInjection.js +15 -0
  429. package/Libraries/Modal/NativeModalManager.js +5 -14
  430. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +4 -117
  431. package/Libraries/NativeComponent/BaseViewConfig.android.js +421 -0
  432. package/Libraries/NativeComponent/BaseViewConfig.ios.js +421 -0
  433. package/Libraries/NativeComponent/BaseViewConfig.win32.js +413 -0
  434. package/Libraries/NativeComponent/NativeComponentRegistry.js +164 -0
  435. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +30 -0
  436. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +25 -0
  437. package/Libraries/NativeComponent/StaticViewConfigValidator.js +144 -0
  438. package/Libraries/NativeComponent/ViewConfig.js +52 -0
  439. package/Libraries/NativeComponent/ViewConfigIgnore.js +51 -0
  440. package/Libraries/NativeModules/specs/NativeDevMenu.js +5 -16
  441. package/Libraries/NativeModules/specs/NativeDevSettings.js +5 -26
  442. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +5 -12
  443. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +5 -41
  444. package/Libraries/NativeModules/specs/NativeLogBox.js +5 -13
  445. package/Libraries/NativeModules/specs/NativeRedBox.js +5 -13
  446. package/Libraries/NativeModules/specs/NativeSourceCode.js +5 -14
  447. package/Libraries/Network/FormData.js +21 -5
  448. package/Libraries/Network/NativeNetworkingAndroid.js +5 -30
  449. package/Libraries/Network/NativeNetworkingIOS.js +5 -30
  450. package/Libraries/Network/RCTNetworking.android.js +32 -20
  451. package/Libraries/Network/RCTNetworking.ios.js +22 -18
  452. package/Libraries/Network/RCTNetworking.win32.js +40 -69
  453. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
  454. package/Libraries/Network/XHRInterceptor.js +66 -18
  455. package/Libraries/Network/XMLHttpRequest.js +107 -31
  456. package/Libraries/Network/convertRequestBody.js +4 -4
  457. package/Libraries/Network/fetch.js +2 -1
  458. package/Libraries/NewAppScreen/components/Colors.js +2 -3
  459. package/Libraries/NewAppScreen/components/DebugInstructions.js +9 -6
  460. package/Libraries/NewAppScreen/components/Header.js +38 -16
  461. package/Libraries/NewAppScreen/components/HermesBadge.js +53 -0
  462. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +52 -27
  463. package/Libraries/NewAppScreen/components/ReloadInstructions.js +5 -2
  464. package/Libraries/NewAppScreen/components/logo.png +0 -0
  465. package/Libraries/NewAppScreen/index.js +12 -6
  466. package/Libraries/Performance/Systrace.d.ts +66 -0
  467. package/Libraries/Performance/Systrace.js +116 -171
  468. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +5 -52
  469. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +163 -0
  470. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +64 -27
  471. package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
  472. package/Libraries/PersonaCoin/PersonaCoin.js +16 -22
  473. package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -0
  474. package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
  475. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +20 -20
  476. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -0
  477. package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
  478. package/Libraries/PersonaCoin/PersonaCoinTypes.js +24 -24
  479. package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -0
  480. package/Libraries/Pressability/HoverState.js +4 -4
  481. package/Libraries/Pressability/HoverState.win32.js +62 -0
  482. package/Libraries/Pressability/Pressability.js +244 -150
  483. package/Libraries/Pressability/Pressability.win32.js +1093 -0
  484. package/Libraries/Pressability/PressabilityDebug.js +31 -27
  485. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +49 -0
  486. package/Libraries/Pressability/PressabilityTypes.js +18 -0
  487. package/Libraries/Pressability/usePressability.js +28 -11
  488. package/Libraries/Promise.js +5 -35
  489. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +5 -66
  490. package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +295 -0
  491. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +134 -83
  492. package/Libraries/QuirkSettings/CachingNativeQuirkSettings.js +30 -0
  493. package/Libraries/QuirkSettings/NativeQuirkSettings.js +17 -0
  494. package/Libraries/QuirkSettings/QuirkSettings.js +34 -0
  495. package/Libraries/QuirkSettings/Quirks.js +17 -0
  496. package/Libraries/ReactNative/AppContainer-dev.js +208 -0
  497. package/Libraries/ReactNative/AppContainer-prod.js +50 -0
  498. package/Libraries/ReactNative/AppContainer.js +13 -138
  499. package/Libraries/ReactNative/AppRegistry.d.ts +121 -0
  500. package/Libraries/ReactNative/AppRegistry.js +127 -78
  501. package/Libraries/ReactNative/BridgelessUIManager.js +419 -0
  502. package/Libraries/ReactNative/DisplayMode.js +32 -0
  503. package/Libraries/ReactNative/FabricUIManager.js +116 -27
  504. package/Libraries/ReactNative/HeadlessJsTaskError.js +1 -3
  505. package/Libraries/ReactNative/I18nManager.d.ts +25 -0
  506. package/Libraries/ReactNative/I18nManager.js +17 -12
  507. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +5 -13
  508. package/Libraries/ReactNative/NativeI18nManager.js +5 -18
  509. package/Libraries/ReactNative/NativeUIManager.js +5 -114
  510. package/Libraries/ReactNative/PaperUIManager.js +79 -52
  511. package/Libraries/ReactNative/PaperUIManager.win32.js +210 -0
  512. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +150 -0
  513. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +100 -0
  514. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +38 -0
  515. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  516. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +33 -0
  517. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +31 -0
  518. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +68 -0
  519. package/Libraries/ReactNative/RendererImplementation.js +164 -0
  520. package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
  521. package/Libraries/ReactNative/RendererProxy.js +26 -0
  522. package/Libraries/ReactNative/RootTag.d.ts +13 -0
  523. package/Libraries/ReactNative/RootTag.js +27 -0
  524. package/Libraries/ReactNative/UIManager.d.ts +113 -0
  525. package/Libraries/ReactNative/UIManager.js +178 -24
  526. package/Libraries/ReactNative/UIManagerProperties.js +6 -9
  527. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +33 -0
  528. package/Libraries/ReactNative/getNativeComponentAttributes.js +51 -25
  529. package/Libraries/ReactNative/renderApplication.js +72 -23
  530. package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
  531. package/Libraries/ReactNative/requireNativeComponent.js +9 -6
  532. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  533. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +66 -11
  534. package/Libraries/Renderer/implementations/ReactFabric-dev.js +16297 -19948
  535. package/Libraries/Renderer/implementations/ReactFabric-prod.js +8563 -5501
  536. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +9018 -5570
  537. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16537 -20505
  538. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +8466 -5422
  539. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +9225 -5791
  540. package/Libraries/Renderer/shims/ReactFabric.js +10 -9
  541. package/Libraries/Renderer/shims/ReactFeatureFlags.js +5 -3
  542. package/Libraries/Renderer/shims/ReactNative.js +6 -5
  543. package/Libraries/Renderer/shims/ReactNativeTypes.js +231 -85
  544. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +27 -37
  545. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +8 -7
  546. package/Libraries/Settings/NativeSettingsManager.js +5 -18
  547. package/Libraries/Settings/Settings.d.ts +18 -0
  548. package/Libraries/Settings/Settings.ios.js +7 -7
  549. package/Libraries/Settings/Settings.js +33 -0
  550. package/Libraries/Share/NativeShareModule.js +5 -16
  551. package/Libraries/Share/Share.d.ts +80 -0
  552. package/Libraries/Share/Share.js +33 -25
  553. package/Libraries/StyleSheet/EdgeInsetsPropType.js +5 -2
  554. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +10 -11
  555. package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
  556. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +52 -16
  557. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +15 -5
  558. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
  559. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +11 -5
  560. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +4 -4
  561. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +2 -4
  562. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +2 -2
  563. package/Libraries/StyleSheet/PointPropType.js +1 -1
  564. package/Libraries/StyleSheet/Rect.js +1 -3
  565. package/Libraries/StyleSheet/StyleSheet.d.ts +150 -0
  566. package/Libraries/StyleSheet/StyleSheet.js +49 -57
  567. package/Libraries/StyleSheet/StyleSheet.win32.js +50 -58
  568. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +573 -0
  569. package/Libraries/StyleSheet/StyleSheetTypes.js +460 -132
  570. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +11 -35
  571. package/Libraries/StyleSheet/flattenStyle.js +14 -9
  572. package/Libraries/StyleSheet/normalizeColor.js +11 -370
  573. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  574. package/Libraries/StyleSheet/private/_TransformStyle.js +69 -0
  575. package/Libraries/StyleSheet/processAspectRatio.js +63 -0
  576. package/Libraries/StyleSheet/processBackgroundImage.js +361 -0
  577. package/Libraries/StyleSheet/processBoxShadow.js +209 -0
  578. package/Libraries/StyleSheet/processColor.d.ts +16 -0
  579. package/Libraries/StyleSheet/processColor.js +6 -8
  580. package/Libraries/StyleSheet/processColorArray.js +18 -7
  581. package/Libraries/StyleSheet/processFilter.js +321 -0
  582. package/Libraries/StyleSheet/processFontVariant.js +30 -0
  583. package/Libraries/StyleSheet/processTransform.js +131 -111
  584. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  585. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  586. package/Libraries/StyleSheet/splitLayoutProps.js +57 -49
  587. package/Libraries/Text/Text.d.ts +309 -0
  588. package/Libraries/Text/Text.js +505 -270
  589. package/Libraries/Text/Text.win32.js +577 -0
  590. package/Libraries/Text/TextAncestor.js +7 -2
  591. package/Libraries/Text/TextNativeComponent.js +82 -0
  592. package/Libraries/Text/TextNativeComponent.win32.js +117 -0
  593. package/Libraries/Text/TextProps.js +108 -30
  594. package/Libraries/Text/TextProps.win32.js +281 -0
  595. package/Libraries/TurboModule/RCTExport.d.ts +12 -0
  596. package/Libraries/TurboModule/RCTExport.js +3 -1
  597. package/Libraries/TurboModule/TurboModuleRegistry.d.ts +13 -0
  598. package/Libraries/TurboModule/TurboModuleRegistry.js +24 -16
  599. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +5 -28
  600. package/Libraries/Types/CodegenTypes.js +9 -2
  601. package/Libraries/Types/CoreEventTypes.d.ts +259 -0
  602. package/Libraries/Types/CoreEventTypes.js +145 -10
  603. package/Libraries/Types/CoreEventTypes.win32.js +340 -0
  604. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  605. package/Libraries/Types/RootTagTypes.js +11 -0
  606. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  607. package/Libraries/UTFSequence.js +6 -4
  608. package/Libraries/Utilities/Appearance.d.ts +53 -0
  609. package/Libraries/Utilities/Appearance.js +118 -63
  610. package/Libraries/Utilities/BackHandler.android.js +17 -37
  611. package/Libraries/Utilities/BackHandler.d.ts +34 -0
  612. package/Libraries/Utilities/BackHandler.ios.js +12 -102
  613. package/Libraries/Utilities/BackHandler.win32.js +96 -7
  614. package/Libraries/Utilities/DebugEnvironment.js +16 -0
  615. package/Libraries/Utilities/DevLoadingView.js +64 -0
  616. package/Libraries/Utilities/DevSettings.d.ts +32 -0
  617. package/Libraries/Utilities/DevSettings.js +55 -48
  618. package/Libraries/Utilities/DeviceInfo.js +1 -3
  619. package/Libraries/Utilities/DeviceInfo.win32.js +0 -2
  620. package/Libraries/Utilities/Dimensions.d.ts +79 -0
  621. package/Libraries/Utilities/Dimensions.js +30 -49
  622. package/Libraries/Utilities/Dimensions.win32.js +106 -18
  623. package/Libraries/Utilities/FeatureDetection.js +31 -0
  624. package/Libraries/Utilities/FocusManager.win32.d.ts +12 -0
  625. package/Libraries/Utilities/FocusManager.win32.js +42 -0
  626. package/Libraries/Utilities/GlobalPerformanceLogger.js +4 -5
  627. package/Libraries/Utilities/HMRClient.js +102 -39
  628. package/Libraries/Utilities/HMRClientProdShim.js +2 -1
  629. package/Libraries/Utilities/IPerformanceLogger.d.ts +48 -0
  630. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  631. package/Libraries/Utilities/NativeAppearance.js +5 -28
  632. package/Libraries/Utilities/NativeDevLoadingView.js +5 -17
  633. package/Libraries/Utilities/NativeDeviceInfo.js +4 -40
  634. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +5 -30
  635. package/Libraries/Utilities/NativePlatformConstantsIOS.js +5 -26
  636. package/Libraries/Utilities/NativePlatformConstantsWin.js +4 -21
  637. package/Libraries/Utilities/PerformanceLoggerContext.js +17 -10
  638. package/Libraries/Utilities/PixelRatio.d.ts +64 -0
  639. package/Libraries/Utilities/PixelRatio.js +6 -6
  640. package/Libraries/Utilities/Platform.android.js +37 -16
  641. package/Libraries/Utilities/Platform.d.ts +106 -0
  642. package/Libraries/Utilities/Platform.flow.js +91 -0
  643. package/Libraries/Utilities/Platform.flow.win32.js +125 -0
  644. package/Libraries/Utilities/Platform.ios.js +39 -19
  645. package/Libraries/Utilities/Platform.win32.js +42 -15
  646. package/Libraries/Utilities/PolyfillFunctions.js +6 -6
  647. package/Libraries/Utilities/RCTLog.js +6 -5
  648. package/Libraries/Utilities/ReactNativeTestTools.js +36 -58
  649. package/Libraries/Utilities/SceneTracker.js +6 -5
  650. package/Libraries/Utilities/__mocks__/BackHandler.js +7 -12
  651. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +1 -1
  652. package/Libraries/Utilities/__mocks__/PixelRatio.js +2 -2
  653. package/Libraries/Utilities/binaryToBase64.js +6 -4
  654. package/Libraries/Utilities/codegenNativeCommands.js +6 -6
  655. package/Libraries/Utilities/codegenNativeComponent.js +25 -15
  656. package/Libraries/Utilities/createPerformanceLogger.js +259 -244
  657. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +12 -6
  658. package/Libraries/Utilities/defineLazyObjectProperty.js +3 -3
  659. package/Libraries/Utilities/differ/deepDiffer.js +3 -3
  660. package/Libraries/Utilities/differ/insetsDiffer.js +2 -2
  661. package/Libraries/Utilities/differ/matricesDiffer.js +6 -2
  662. package/Libraries/Utilities/differ/pointsDiffer.js +2 -2
  663. package/Libraries/Utilities/differ/sizesDiffer.js +11 -5
  664. package/Libraries/Utilities/dismissKeyboard.js +1 -1
  665. package/Libraries/Utilities/infoLog.js +3 -2
  666. package/Libraries/Utilities/logError.js +2 -2
  667. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  668. package/Libraries/Utilities/stringifySafe.js +8 -8
  669. package/Libraries/Utilities/stringifyViewConfig.js +22 -0
  670. package/Libraries/Utilities/useColorScheme.js +10 -16
  671. package/Libraries/Utilities/useMergeRefs.js +59 -0
  672. package/Libraries/Utilities/useRefEffect.js +45 -0
  673. package/Libraries/Utilities/useWindowDimensions.js +15 -8
  674. package/Libraries/Utilities/warnOnce.js +3 -5
  675. package/Libraries/Vibration/NativeVibration.js +5 -17
  676. package/Libraries/Vibration/Vibration.d.ts +43 -0
  677. package/Libraries/Vibration/Vibration.js +16 -14
  678. package/Libraries/WebSocket/NativeWebSocketModule.js +5 -27
  679. package/Libraries/WebSocket/WebSocket.js +47 -27
  680. package/Libraries/WebSocket/WebSocketEvent.js +5 -2
  681. package/Libraries/WebSocket/WebSocketInterceptor.js +46 -27
  682. package/Libraries/WebSocket/__mocks__/event-target-shim.js +1 -1
  683. package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +19 -0
  684. package/Libraries/YellowBox/YellowBoxDeprecated.js +6 -6
  685. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +7 -7
  686. package/Libraries/__tests__/ButtonWin32-test.js +17 -0
  687. package/Libraries/platform-types.d.ts +25 -0
  688. package/Libraries/promiseRejectionTrackingOptions.js +72 -0
  689. package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
  690. package/Libraries/vendor/core/ErrorUtils.js +2 -2
  691. package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
  692. package/Libraries/vendor/emitter/EventEmitter.js +123 -193
  693. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +81 -0
  694. package/babel.config.js +3 -0
  695. package/flow/HermesInternalType.js +114 -0
  696. package/flow/Position.js +1 -1
  697. package/flow/Stringish.js +1 -1
  698. package/flow/console.js +1 -1
  699. package/flow/global.js +87 -0
  700. package/flow/jest.js +266 -168
  701. package/flow/react.js +15 -0
  702. package/index.js +365 -255
  703. package/index.win32.js +773 -42
  704. package/interface.js +9 -9
  705. package/jest/MockNativeMethods.js +1 -1
  706. package/jest/__tests__/setup-test.js +18 -0
  707. package/jest/assetFileTransformer.js +7 -5
  708. package/jest/local-setup.js +28 -0
  709. package/jest/mockComponent.js +28 -16
  710. package/jest/mockModal.js +32 -0
  711. package/jest/mockNativeComponent.js +40 -0
  712. package/jest/mockScrollView.js +35 -0
  713. package/jest/react-native-env.js +16 -0
  714. package/jest/renderer.js +29 -22
  715. package/jest/setup.js +194 -89
  716. package/jest-snapshot-resolver.js +2 -0
  717. package/jest.config.js +38 -0
  718. package/just-task.js +11 -53
  719. package/metro.config.js +5 -20
  720. package/metroShortPathAssetDataPlugin.js +15 -0
  721. package/overrides.json +323 -251
  722. package/package.json +88 -46
  723. package/react-native.config.js +2 -0
  724. package/rn-get-polyfills.js +3 -6
  725. package/saveAssetPlugin.js +45 -0
  726. package/src/private/animated/NativeAnimatedHelper.js +440 -0
  727. package/src/private/animated/NativeAnimatedHelper.win32.js +443 -0
  728. package/src/private/animated/NativeAnimatedValidation.js +64 -0
  729. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  730. package/src/private/components/HScrollViewNativeComponents.js +30 -0
  731. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +32 -0
  732. package/src/private/components/VScrollViewNativeComponents.js +25 -0
  733. package/src/private/debugging/FuseboxSessionObserver.js +42 -0
  734. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  735. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  736. package/src/private/debugging/ReactDevToolsSettingsManager.win32.js +20 -0
  737. package/src/private/debugging/setUpFuseboxReactDevToolsDispatcher.js +114 -0
  738. package/src/private/devmenu/DevMenu.d.ts +20 -0
  739. package/src/private/devmenu/DevMenu.js +31 -0
  740. package/src/private/featureflags/ReactNativeFeatureFlags.js +375 -0
  741. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +109 -0
  742. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +78 -0
  743. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  744. package/src/private/renderer/errorhandling/ErrorHandlers.js +83 -0
  745. package/src/private/setup/setUpDOM.js +36 -0
  746. package/src/private/setup/setUpIntersectionObserver.js +27 -0
  747. package/src/private/setup/setUpMutationObserver.js +31 -0
  748. package/src/private/setup/setUpPerformanceObserver.js +64 -0
  749. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  750. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  751. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +27 -0
  752. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  753. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  754. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  755. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  756. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  757. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  758. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +147 -0
  759. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  760. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  761. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  762. package/src/private/specs/modules/NativeAccessibilityInfo.js +42 -0
  763. package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +48 -0
  764. package/src/private/specs/modules/NativeAccessibilityManager.js +70 -0
  765. package/src/private/specs/modules/NativeActionSheetManager.js +56 -0
  766. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  767. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  768. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  769. package/src/private/specs/modules/NativeAppState.js +33 -0
  770. package/src/private/specs/modules/NativeAppearance.js +30 -0
  771. package/src/private/specs/modules/NativeBlobModule.js +61 -0
  772. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  773. package/src/private/specs/modules/NativeCPUTime.js +24 -0
  774. package/src/private/specs/modules/NativeClipboard.js +21 -0
  775. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  776. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  777. package/src/private/specs/modules/NativeDevSettings.js +34 -0
  778. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  779. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  780. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  781. package/src/private/specs/modules/NativeExceptionsManager.js +91 -0
  782. package/src/private/specs/modules/NativeFantom.js +37 -0
  783. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  784. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  785. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  786. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  787. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  788. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  789. package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
  790. package/src/private/specs/modules/NativeImageLoaderWin32.js +45 -0
  791. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  792. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  793. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  794. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  795. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  796. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  797. package/src/private/specs/modules/NativeLogBox.js +20 -0
  798. package/src/private/specs/modules/NativeModalManager.js +21 -0
  799. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  800. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  801. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  802. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  803. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  804. package/src/private/specs/modules/NativePlatformConstantsWin.js +44 -0
  805. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +103 -0
  806. package/src/private/specs/modules/NativeReactDevToolsSettingsManager.js +22 -0
  807. package/src/private/specs/modules/NativeRedBox.js +20 -0
  808. package/src/private/specs/modules/NativeSampleTurboModule.js +66 -0
  809. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  810. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  811. package/src/private/specs/modules/NativeShareModule.js +23 -0
  812. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  813. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  814. package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
  815. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  816. package/src/private/specs/modules/NativeTiming.js +26 -0
  817. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  818. package/src/private/specs/modules/NativeUIManager.js +111 -0
  819. package/src/private/specs/modules/NativeVibration.js +24 -0
  820. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  821. package/src/private/styles/composeStyles.js +27 -0
  822. package/src/private/utilities/ensureInstance.js +21 -0
  823. package/src/private/webapis/dom/geometry/DOMRect.js +82 -0
  824. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +188 -0
  825. package/src/private/webapis/dom/nodes/ReactNativeElement.js +231 -0
  826. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +71 -0
  827. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +247 -0
  828. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +367 -0
  829. package/src/private/webapis/dom/nodes/ReadOnlyText.js +30 -0
  830. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  831. package/src/private/webapis/dom/nodes/utilities/Traversal.js +54 -0
  832. package/src/private/webapis/dom/oldstylecollections/ArrayLikeUtils.js +46 -0
  833. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +76 -0
  834. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +82 -0
  835. package/src/private/webapis/dom/oldstylecollections/NodeList.js +104 -0
  836. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  837. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +345 -0
  838. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +167 -0
  839. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +277 -0
  840. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +43 -0
  841. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  842. package/src/private/webapis/mutationobserver/MutationObserver.js +186 -0
  843. package/src/private/webapis/mutationobserver/MutationObserverManager.js +227 -0
  844. package/src/private/webapis/mutationobserver/MutationRecord.js +82 -0
  845. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +58 -0
  846. package/src/private/webapis/performance/EventTiming.js +145 -0
  847. package/src/private/webapis/performance/LongTasks.js +39 -0
  848. package/src/private/webapis/performance/MemoryInfo.js +54 -0
  849. package/src/private/webapis/performance/Performance.js +287 -0
  850. package/src/private/webapis/performance/PerformanceEntry.js +68 -0
  851. package/src/private/webapis/performance/PerformanceObserver.js +232 -0
  852. package/src/private/webapis/performance/RawPerformanceEntry.js +105 -0
  853. package/src/private/webapis/performance/ReactNativeStartupTiming.js +91 -0
  854. package/src/private/webapis/performance/UserTiming.js +72 -0
  855. package/src/private/webapis/performance/Utilities.js +18 -0
  856. package/src/private/webapis/performance/specs/NativePerformance.js +92 -0
  857. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  858. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +177 -0
  859. package/src-win/Libraries/Components/Button/ButtonWin32.Props.ts +45 -0
  860. package/src-win/Libraries/Components/Button/ButtonWin32.tsx +94 -0
  861. package/src-win/Libraries/Components/EnterString.win32.tsx +110 -0
  862. package/src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx +185 -0
  863. package/src-win/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +502 -0
  864. package/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +119 -0
  865. package/src-win/Libraries/Components/Touchable/TouchableWin32.Props.tsx +46 -0
  866. package/src-win/Libraries/Components/Touchable/TouchableWin32.Types.tsx +137 -0
  867. package/src-win/Libraries/Components/Touchable/TouchableWin32.tsx +624 -0
  868. package/src-win/Libraries/Components/View/ViewAccessibility.d.ts +566 -0
  869. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +354 -0
  870. package/src-win/Libraries/Components/View/ViewWin32.d.ts +30 -0
  871. package/src-win/Libraries/Image/ImageTypes.ts +27 -0
  872. package/src-win/Libraries/Image/Tests/ImageWin32Test.tsx +22 -0
  873. package/src-win/Libraries/Image/Tests/img/dpitest.png +0 -0
  874. package/src-win/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
  875. package/src-win/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
  876. package/src-win/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
  877. package/src-win/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
  878. package/src-win/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
  879. package/src-win/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
  880. package/src-win/Libraries/PersonaCoin/PersonaCoin.tsx +13 -0
  881. package/src-win/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +17 -0
  882. package/src-win/Libraries/PersonaCoin/PersonaCoinTypes.ts +36 -0
  883. package/src-win/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +38 -0
  884. package/src-win/Libraries/Text/Text.d.ts +309 -0
  885. package/src-win/Libraries/Utilities/FocusManager.win32.d.ts +12 -0
  886. package/src-win/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +22 -0
  887. package/src-win/Libraries/platform-types.d.ts +25 -0
  888. package/types/index.d.ts +219 -0
  889. package/types/modules/BatchedBridge.d.ts +32 -0
  890. package/types/modules/Codegen.d.ts +80 -0
  891. package/types/modules/Devtools.d.ts +32 -0
  892. package/types/modules/LaunchScreen.d.ts +18 -0
  893. package/types/modules/globals.d.ts +599 -0
  894. package/types/private/TimerMixin.d.ts +19 -0
  895. package/types/private/Utilities.d.ts +10 -0
  896. package/types/public/DeprecatedPropertiesAlias.d.ts +185 -0
  897. package/types/public/Insets.d.ts +15 -0
  898. package/types/public/ReactNativeRenderer.d.ts +144 -0
  899. package/types/public/ReactNativeTypes.d.ts +139 -0
  900. package/IntegrationTests/AsyncStorageTest.js +0 -217
  901. package/IntegrationTests/PropertiesUpdateTest.js +0 -29
  902. package/IntegrationTests/RCTRootViewIntegrationTestApp.js +0 -92
  903. package/IntegrationTests/ReactContentSizeUpdateTest.js +0 -91
  904. package/IntegrationTests/SizeFlexibilityUpdateTest.js +0 -108
  905. package/IntegrationTests/launchWebSocketServer.command +0 -18
  906. package/Libraries/Animated/examples/demo.html +0 -712
  907. package/Libraries/Animated/examples/pic1.jpg +0 -0
  908. package/Libraries/Animated/examples/pic2.jpg +0 -0
  909. package/Libraries/Animated/examples/pic3.jpg +0 -0
  910. package/Libraries/Animated/release/gulpfile.js +0 -155
  911. package/Libraries/Animated/src/Animated.js +0 -49
  912. package/Libraries/Animated/src/AnimatedEvent.js +0 -233
  913. package/Libraries/Animated/src/AnimatedImplementation.js +0 -712
  914. package/Libraries/Animated/src/AnimatedMock.js +0 -156
  915. package/Libraries/Animated/src/AnimatedWeb.js +0 -23
  916. package/Libraries/Animated/src/Easing.js +0 -252
  917. package/Libraries/Animated/src/NativeAnimatedHelper.js +0 -342
  918. package/Libraries/Animated/src/NativeAnimatedModule.js +0 -66
  919. package/Libraries/Animated/src/SpringConfig.js +0 -103
  920. package/Libraries/Animated/src/animations/Animation.js +0 -73
  921. package/Libraries/Animated/src/animations/DecayAnimation.js +0 -120
  922. package/Libraries/Animated/src/animations/SpringAnimation.js +0 -359
  923. package/Libraries/Animated/src/animations/TimingAnimation.js +0 -165
  924. package/Libraries/Animated/src/bezier.js +0 -153
  925. package/Libraries/Animated/src/components/AnimatedFlatList.js +0 -32
  926. package/Libraries/Animated/src/components/AnimatedImage.js +0 -25
  927. package/Libraries/Animated/src/components/AnimatedScrollView.js +0 -32
  928. package/Libraries/Animated/src/components/AnimatedSectionList.js +0 -32
  929. package/Libraries/Animated/src/components/AnimatedText.js +0 -25
  930. package/Libraries/Animated/src/components/AnimatedView.js +0 -23
  931. package/Libraries/Animated/src/createAnimatedComponent.js +0 -223
  932. package/Libraries/Animated/src/nodes/AnimatedAddition.js +0 -63
  933. package/Libraries/Animated/src/nodes/AnimatedDiffClamp.js +0 -71
  934. package/Libraries/Animated/src/nodes/AnimatedDivision.js +0 -68
  935. package/Libraries/Animated/src/nodes/AnimatedInterpolation.js +0 -373
  936. package/Libraries/Animated/src/nodes/AnimatedModulo.js +0 -62
  937. package/Libraries/Animated/src/nodes/AnimatedMultiplication.js +0 -63
  938. package/Libraries/Animated/src/nodes/AnimatedNode.js +0 -184
  939. package/Libraries/Animated/src/nodes/AnimatedProps.js +0 -176
  940. package/Libraries/Animated/src/nodes/AnimatedStyle.js +0 -127
  941. package/Libraries/Animated/src/nodes/AnimatedSubtraction.js +0 -63
  942. package/Libraries/Animated/src/nodes/AnimatedTracking.js +0 -102
  943. package/Libraries/Animated/src/nodes/AnimatedTransform.js +0 -121
  944. package/Libraries/Animated/src/nodes/AnimatedValue.js +0 -265
  945. package/Libraries/Animated/src/nodes/AnimatedValueXY.js +0 -226
  946. package/Libraries/Animated/src/nodes/AnimatedWithChildren.js +0 -87
  947. package/Libraries/Animated/src/polyfills/InteractionManager.js +0 -15
  948. package/Libraries/Animated/src/polyfills/Set.js +0 -26
  949. package/Libraries/Animated/src/polyfills/flattenStyle.js +0 -13
  950. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js +0 -162
  951. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js +0 -271
  952. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.win32.js +0 -33
  953. package/Libraries/Components/AppleTV/NativeTVNavigationEventEmitter.js +0 -23
  954. package/Libraries/Components/AppleTV/TVEventHandler.js +0 -52
  955. package/Libraries/Components/CheckBox/AndroidCheckBoxNativeComponent.js +0 -74
  956. package/Libraries/Components/CheckBox/CheckBox.android.js +0 -228
  957. package/Libraries/Components/CheckBox/CheckBox.ios.js +0 -13
  958. package/Libraries/Components/CheckBox/CheckBox.win32.js +0 -12
  959. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -46
  960. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -189
  961. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -46
  962. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  963. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -89
  964. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  965. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.win32.js +0 -30
  966. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  967. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -22
  968. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +0 -12
  969. package/Libraries/Components/MaskedView/MaskedViewIOS.android.js +0 -13
  970. package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +0 -93
  971. package/Libraries/Components/MaskedView/MaskedViewIOS.win32.js +0 -13
  972. package/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js +0 -21
  973. package/Libraries/Components/Picker/AndroidDialogPickerNativeComponent.js +0 -68
  974. package/Libraries/Components/Picker/AndroidDropdownPickerNativeComponent.js +0 -68
  975. package/Libraries/Components/Picker/Picker.js +0 -159
  976. package/Libraries/Components/Picker/Picker.win32.d.ts +0 -1
  977. package/Libraries/Components/Picker/Picker.win32.js +0 -80
  978. package/Libraries/Components/Picker/PickerAndroid.android.js +0 -146
  979. package/Libraries/Components/Picker/PickerAndroid.ios.js +0 -12
  980. package/Libraries/Components/Picker/PickerAndroid.js +0 -12
  981. package/Libraries/Components/Picker/PickerIOS.android.js +0 -14
  982. package/Libraries/Components/Picker/PickerIOS.ios.js +0 -164
  983. package/Libraries/Components/Picker/PickerIOS.js +0 -14
  984. package/Libraries/Components/Picker/RCTPickerNativeComponent.js +0 -63
  985. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js +0 -12
  986. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -46
  987. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -77
  988. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -8
  989. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -35
  990. package/Libraries/Components/ScrollResponder.js +0 -773
  991. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -77
  992. package/Libraries/Components/ScrollView/__mocks__/ScrollViewMock.js +0 -39
  993. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -46
  994. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -46
  995. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  996. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.js +0 -46
  997. package/Libraries/Components/Slider/Slider.js +0 -276
  998. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -60
  999. package/Libraries/Components/StaticContainer.react.js +0 -51
  1000. package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -22
  1001. package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -26
  1002. package/Libraries/Components/Text/TextWin32.Props.js +0 -3
  1003. package/Libraries/Components/Text/TextWin32.d.ts +0 -6
  1004. package/Libraries/Components/Text/TextWin32.js +0 -41
  1005. package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +0 -84
  1006. package/Libraries/Components/TextInput/RCTSinglelineTextInputViewConfig.js +0 -134
  1007. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +0 -51
  1008. package/Libraries/Components/TextInput/TextInput.Types.win32.js +0 -3
  1009. package/Libraries/Components/TextInput/TextInput.win32.d.ts +0 -68
  1010. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +0 -39
  1011. package/Libraries/Components/Touchable/TVTouchable.js +0 -55
  1012. package/Libraries/Components/Touchable/TouchableNativeFeedback.Props.d.ts +0 -7
  1013. package/Libraries/Components/Touchable/TouchableNativeFeedback.Props.js +0 -3
  1014. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.d.ts +0 -16
  1015. package/Libraries/Components/Touchable/__mocks__/ensureComponentIsNative.js +0 -12
  1016. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -26
  1017. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -347
  1018. package/Libraries/Components/View/ReactNativeViewViewConfig.win32.js +0 -384
  1019. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -74
  1020. package/Libraries/Components/View/Tests/ViewWin32Test.d.ts +0 -8
  1021. package/Libraries/Components/View/Tests/ViewWin32Test.js +0 -235
  1022. package/Libraries/Components/View/ViewWin32.Props.d.ts +0 -149
  1023. package/Libraries/Components/View/ViewWin32.Props.js +0 -11
  1024. package/Libraries/Core/setUpSystrace.js +0 -21
  1025. package/Libraries/DeprecatedPropTypes/DeprecatedColorPropType.js +0 -76
  1026. package/Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType.js +0 -28
  1027. package/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.js +0 -82
  1028. package/Libraries/DeprecatedPropTypes/DeprecatedImageSourcePropType.js +0 -40
  1029. package/Libraries/DeprecatedPropTypes/DeprecatedImageStylePropTypes.js +0 -76
  1030. package/Libraries/DeprecatedPropTypes/DeprecatedLayoutPropTypes.js +0 -233
  1031. package/Libraries/DeprecatedPropTypes/DeprecatedPointPropType.js +0 -24
  1032. package/Libraries/DeprecatedPropTypes/DeprecatedShadowPropTypesIOS.js +0 -30
  1033. package/Libraries/DeprecatedPropTypes/DeprecatedStyleSheetPropType.js +0 -32
  1034. package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
  1035. package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +0 -622
  1036. package/Libraries/DeprecatedPropTypes/DeprecatedTextPropTypes.js +0 -158
  1037. package/Libraries/DeprecatedPropTypes/DeprecatedTextStylePropTypes.js +0 -157
  1038. package/Libraries/DeprecatedPropTypes/DeprecatedTransformPropTypes.js +0 -99
  1039. package/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js +0 -44
  1040. package/Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes.js +0 -408
  1041. package/Libraries/DeprecatedPropTypes/DeprecatedViewStylePropTypes.js +0 -68
  1042. package/Libraries/DeprecatedPropTypes/deprecatedCreateStrictShapeTypeChecker.js +0 -86
  1043. package/Libraries/HeapCapture/HeapCapture.js +0 -31
  1044. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -20
  1045. package/Libraries/Image/ImagePickerIOS.js +0 -105
  1046. package/Libraries/Image/ImageViewViewConfig.js +0 -68
  1047. package/Libraries/Image/NativeImagePickerIOS.js +0 -40
  1048. package/Libraries/Image/assetPathUtils.js +0 -91
  1049. package/Libraries/Interaction/Batchinator.js +0 -76
  1050. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -62
  1051. package/Libraries/Interaction/InteractionMixin.js +0 -55
  1052. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  1053. package/Libraries/Linking/NativeLinking.js +0 -41
  1054. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -21
  1055. package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -20
  1056. package/Libraries/Performance/PureComponentDebug.js +0 -73
  1057. package/Libraries/Performance/QuickPerformanceLogger.js +0 -101
  1058. package/Libraries/Performance/SamplingProfiler.js +0 -39
  1059. package/Libraries/ReactNative/DummyUIManager.js +0 -123
  1060. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  1061. package/Libraries/ReactNative/RootTagContext.js +0 -15
  1062. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  1063. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -20493
  1064. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -7440
  1065. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -7718
  1066. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -21091
  1067. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -7677
  1068. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -7955
  1069. package/Libraries/Renderer/shims/ReactTypes.js +0 -192
  1070. package/Libraries/Settings/Settings.android.js +0 -33
  1071. package/Libraries/Storage/AsyncStorage.js +0 -360
  1072. package/Libraries/Storage/NativeAsyncStorage.js +0 -44
  1073. package/Libraries/StyleSheet/PlatformColorValueTypesAndroid.android.js +0 -18
  1074. package/Libraries/StyleSheet/PlatformColorValueTypesAndroid.js +0 -17
  1075. package/Libraries/StyleSheet/StyleSheetValidation.js +0 -97
  1076. package/Libraries/StyleSheet/StyleSheetValidation.win32.js +0 -102
  1077. package/Libraries/Utilities/BackHandler.win32.d.ts +0 -2
  1078. package/Libraries/Utilities/JSDevSupportModule.js +0 -40
  1079. package/Libraries/Utilities/LoadingView.android.js +0 -29
  1080. package/Libraries/Utilities/LoadingView.ios.js +0 -40
  1081. package/Libraries/Utilities/LoadingView.js +0 -16
  1082. package/Libraries/Utilities/MatrixMath.js +0 -752
  1083. package/Libraries/Utilities/NativeJSDevSupport.js +0 -25
  1084. package/Libraries/Utilities/buildStyleInterpolator.js +0 -211
  1085. package/Libraries/Utilities/clamp.js +0 -23
  1086. package/Libraries/Utilities/deprecatedPropType.js +0 -38
  1087. package/Libraries/Utilities/groupByEveryN.js +0 -51
  1088. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  1089. package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -83
  1090. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  1091. package/Libraries/Utilities/truncate.js +0 -51
  1092. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -134
  1093. package/Libraries/polyfills/Object.es7.js +0 -58
  1094. package/Libraries/polyfills/console.js +0 -641
  1095. package/Libraries/polyfills/error-guard.js +0 -115
  1096. package/Libraries/promiseRejectionIsError.js +0 -24
  1097. package/Libraries/vendor/emitter/EmitterSubscription.js +0 -59
  1098. package/Libraries/vendor/emitter/EventSubscription.js +0 -40
  1099. package/Libraries/vendor/emitter/EventSubscriptionVendor.js +0 -101
  1100. package/RNTester/APIExamples/AccessibilityExampleWin32.d.ts +0 -8
  1101. package/RNTester/APIExamples/AccessibilityExampleWin32.js +0 -262
  1102. package/RNTester/APIExamples/ThemingModuleAPI.d.ts +0 -8
  1103. package/RNTester/APIExamples/ThemingModuleAPI.js +0 -80
  1104. package/RNTester/js/RNTesterApp.android.js +0 -363
  1105. package/RNTester/js/RNTesterApp.ios.js +0 -272
  1106. package/RNTester/js/RNTesterApp.win32.js +0 -285
  1107. package/RNTester/js/assets/bandaged.png +0 -0
  1108. package/RNTester/js/assets/bunny.png +0 -0
  1109. package/RNTester/js/assets/call.png +0 -0
  1110. package/RNTester/js/assets/dislike.png +0 -0
  1111. package/RNTester/js/assets/fist.png +0 -0
  1112. package/RNTester/js/assets/flowers.png +0 -0
  1113. package/RNTester/js/assets/flux@3x.png +0 -0
  1114. package/RNTester/js/assets/hawk.png +0 -0
  1115. package/RNTester/js/assets/heart.png +0 -0
  1116. package/RNTester/js/assets/helloworld.html +0 -25
  1117. package/RNTester/js/assets/imageMask.png +0 -0
  1118. package/RNTester/js/assets/like.png +0 -0
  1119. package/RNTester/js/assets/liking.png +0 -0
  1120. package/RNTester/js/assets/messagingtest.html +0 -28
  1121. package/RNTester/js/assets/party.png +0 -0
  1122. package/RNTester/js/assets/poke.png +0 -0
  1123. package/RNTester/js/assets/relay@3x.png +0 -0
  1124. package/RNTester/js/assets/slider-left.png +0 -0
  1125. package/RNTester/js/assets/slider-left@2x.png +0 -0
  1126. package/RNTester/js/assets/slider-right.png +0 -0
  1127. package/RNTester/js/assets/slider-right@2x.png +0 -0
  1128. package/RNTester/js/assets/slider.png +0 -0
  1129. package/RNTester/js/assets/slider@2x.png +0 -0
  1130. package/RNTester/js/assets/superlike.png +0 -0
  1131. package/RNTester/js/assets/trees.jpg +0 -0
  1132. package/RNTester/js/assets/tumblr_mfqekpMktw1rn90umo1_500.gif +0 -0
  1133. package/RNTester/js/assets/uie_comment_highlighted@2x.png +0 -0
  1134. package/RNTester/js/assets/uie_comment_normal@2x.png +0 -0
  1135. package/RNTester/js/assets/uie_thumb_big.png +0 -0
  1136. package/RNTester/js/assets/uie_thumb_normal@2x.png +0 -0
  1137. package/RNTester/js/assets/uie_thumb_selected@2x.png +0 -0
  1138. package/RNTester/js/assets/victory.png +0 -0
  1139. package/RNTester/js/components/ListExampleShared.js +0 -377
  1140. package/RNTester/js/components/ListExampleShared.win32.js +0 -384
  1141. package/RNTester/js/components/RNTesterBlock.js +0 -105
  1142. package/RNTester/js/components/RNTesterButton.js +0 -50
  1143. package/RNTester/js/components/RNTesterExampleContainer.js +0 -80
  1144. package/RNTester/js/components/RNTesterExampleFilter.js +0 -120
  1145. package/RNTester/js/components/RNTesterExampleFilter.win32.js +0 -120
  1146. package/RNTester/js/components/RNTesterExampleList.js +0 -254
  1147. package/RNTester/js/components/RNTesterPage.js +0 -76
  1148. package/RNTester/js/components/RNTesterSettingSwitchRow.js +0 -60
  1149. package/RNTester/js/components/RNTesterTheme.js +0 -90
  1150. package/RNTester/js/components/RNTesterTitle.js +0 -58
  1151. package/RNTester/js/components/TextInlineView.js +0 -207
  1152. package/RNTester/js/components/TextLegend.js +0 -248
  1153. package/RNTester/js/components/createExamplePage.js +0 -31
  1154. package/RNTester/js/examples/Accessibility/AccessibilityAndroidExample.android.js +0 -177
  1155. package/RNTester/js/examples/Accessibility/AccessibilityExample.js +0 -792
  1156. package/RNTester/js/examples/Accessibility/AccessibilityIOSExample.js +0 -72
  1157. package/RNTester/js/examples/Accessibility/check.png +0 -0
  1158. package/RNTester/js/examples/Accessibility/mixed.png +0 -0
  1159. package/RNTester/js/examples/Accessibility/uncheck.png +0 -0
  1160. package/RNTester/js/examples/ActionSheetIOS/ActionSheetIOSExample.js +0 -342
  1161. package/RNTester/js/examples/ActivityIndicator/ActivityIndicatorExample.js +0 -162
  1162. package/RNTester/js/examples/Alert/AlertExample.js +0 -158
  1163. package/RNTester/js/examples/Alert/AlertIOSExample.js +0 -204
  1164. package/RNTester/js/examples/Animated/AnimatedExample.js +0 -347
  1165. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExApp.js +0 -407
  1166. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExBobble.js +0 -171
  1167. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExChained.js +0 -120
  1168. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExScroll.js +0 -124
  1169. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExSet.js +0 -149
  1170. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExSlides.md +0 -107
  1171. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExTilt.js +0 -154
  1172. package/RNTester/js/examples/AppState/AppStateExample.js +0 -106
  1173. package/RNTester/js/examples/Appearance/AppearanceExample.js +0 -219
  1174. package/RNTester/js/examples/AsyncStorage/AsyncStorageExample.js +0 -103
  1175. package/RNTester/js/examples/Border/BorderExample.js +0 -301
  1176. package/RNTester/js/examples/BoxShadow/BoxShadowExample.js +0 -100
  1177. package/RNTester/js/examples/Button/ButtonExample.js +0 -127
  1178. package/RNTester/js/examples/CheckBox/CheckBoxExample.js +0 -148
  1179. package/RNTester/js/examples/Clipboard/ClipboardExample.js +0 -68
  1180. package/RNTester/js/examples/ColorGradientWin32Example.js +0 -109
  1181. package/RNTester/js/examples/Crash/CrashExample.js +0 -52
  1182. package/RNTester/js/examples/DatePicker/DatePickerAndroidExample.js +0 -170
  1183. package/RNTester/js/examples/DatePicker/DatePickerIOSExample.js +0 -150
  1184. package/RNTester/js/examples/DevSettings/DevSettingsExample.js +0 -47
  1185. package/RNTester/js/examples/Dimensions/DimensionsExample.js +0 -68
  1186. package/RNTester/js/examples/FlatList/FlatListExample.js +0 -287
  1187. package/RNTester/js/examples/Image/ImageCapInsetsExample.js +0 -68
  1188. package/RNTester/js/examples/Image/ImageExample.js +0 -955
  1189. package/RNTester/js/examples/InputAccessoryView/InputAccessoryViewExample.js +0 -121
  1190. package/RNTester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js +0 -77
  1191. package/RNTester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js +0 -120
  1192. package/RNTester/js/examples/Layout/LayoutAnimationExample.js +0 -221
  1193. package/RNTester/js/examples/Layout/LayoutEventsExample.js +0 -165
  1194. package/RNTester/js/examples/Layout/LayoutExample.js +0 -206
  1195. package/RNTester/js/examples/Linking/LinkingExample.js +0 -128
  1196. package/RNTester/js/examples/MaskedView/MaskedViewExample.js +0 -236
  1197. package/RNTester/js/examples/Modal/ModalExample.js +0 -283
  1198. package/RNTester/js/examples/MultiColumn/MultiColumnExample.js +0 -189
  1199. package/RNTester/js/examples/NativeAnimation/NativeAnimationsExample.js +0 -702
  1200. package/RNTester/js/examples/NewAppScreen/NewAppScreenExample.js +0 -77
  1201. package/RNTester/js/examples/OrientationChange/OrientationChangeExample.js +0 -66
  1202. package/RNTester/js/examples/PanResponder/PanResponderExample.js +0 -154
  1203. package/RNTester/js/examples/PermissionsAndroid/PermissionsExample.js +0 -130
  1204. package/RNTester/js/examples/Picker/PickerExample.js +0 -220
  1205. package/RNTester/js/examples/Picker/PickerIOSExample.js +0 -190
  1206. package/RNTester/js/examples/PlatformColor/PlatformColorExample.js +0 -355
  1207. package/RNTester/js/examples/PointerEvents/PointerEventsExample.js +0 -240
  1208. package/RNTester/js/examples/Pressable/PressableExample.js +0 -426
  1209. package/RNTester/js/examples/ProgressBarAndroid/ProgressBarAndroidExample.android.js +0 -94
  1210. package/RNTester/js/examples/ProgressViewIOS/ProgressViewIOSExample.js +0 -103
  1211. package/RNTester/js/examples/PushNotificationIOS/PushNotificationIOSExample.js +0 -267
  1212. package/RNTester/js/examples/RCTRootView/RCTRootViewIOSExample.js +0 -95
  1213. package/RNTester/js/examples/RTL/RTLExample.js +0 -747
  1214. package/RNTester/js/examples/RefreshControl/RefreshControlExample.js +0 -127
  1215. package/RNTester/js/examples/RootViewSizeFlexibilityExample/RootViewSizeFlexibilityExampleApp.js +0 -68
  1216. package/RNTester/js/examples/SafeAreaView/SafeAreaViewExample.js +0 -137
  1217. package/RNTester/js/examples/ScrollView/ScrollViewAnimatedExample.js +0 -107
  1218. package/RNTester/js/examples/ScrollView/ScrollViewExample.js +0 -346
  1219. package/RNTester/js/examples/ScrollView/ScrollViewSimpleExample.js +0 -105
  1220. package/RNTester/js/examples/SectionList/SectionListExample.js +0 -301
  1221. package/RNTester/js/examples/SegmentedControlIOS/SegmentedControlIOSExample.js +0 -183
  1222. package/RNTester/js/examples/SetPropertiesExample/SetPropertiesExampleApp.js +0 -34
  1223. package/RNTester/js/examples/Share/ShareExample.js +0 -124
  1224. package/RNTester/js/examples/Slider/SliderExample.js +0 -136
  1225. package/RNTester/js/examples/Snapshot/SnapshotExample.js +0 -69
  1226. package/RNTester/js/examples/Snapshot/SnapshotViewIOS.android.js +0 -12
  1227. package/RNTester/js/examples/Snapshot/SnapshotViewIOS.ios.js +0 -67
  1228. package/RNTester/js/examples/StatusBar/StatusBarExample.js +0 -522
  1229. package/RNTester/js/examples/Switch/SwitchExample.js +0 -239
  1230. package/RNTester/js/examples/TVEventHandler/TVEventHandlerExample.js +0 -88
  1231. package/RNTester/js/examples/Text/TextExample.android.js +0 -864
  1232. package/RNTester/js/examples/Text/TextExample.ios.js +0 -1153
  1233. package/RNTester/js/examples/TextInput/TextInputExample.android.js +0 -424
  1234. package/RNTester/js/examples/TextInput/TextInputExample.ios.js +0 -710
  1235. package/RNTester/js/examples/TextInput/TextInputSharedExamples.js +0 -618
  1236. package/RNTester/js/examples/Timer/TimerExample.js +0 -373
  1237. package/RNTester/js/examples/ToastAndroid/ToastAndroidExample.android.js +0 -136
  1238. package/RNTester/js/examples/Touchable/TouchableExample.js +0 -664
  1239. package/RNTester/js/examples/Transform/TransformExample.js +0 -336
  1240. package/RNTester/js/examples/TransparentHitTest/TransparentHitTestExample.js +0 -50
  1241. package/RNTester/js/examples/TurboModule/SampleTurboModuleExample.js +0 -190
  1242. package/RNTester/js/examples/TurboModule/TurboModuleExample.js +0 -26
  1243. package/RNTester/js/examples/Vibration/VibrationExample.js +0 -127
  1244. package/RNTester/js/examples/View/ViewExample.js +0 -471
  1245. package/RNTester/js/examples/WebSocket/WebSocketExample.js +0 -356
  1246. package/RNTester/js/examples/WebSocket/http_test_server.js +0 -33
  1247. package/RNTester/js/examples/WebSocket/websocket_test_server.js +0 -46
  1248. package/RNTester/js/examples/XHR/XHRExample.js +0 -62
  1249. package/RNTester/js/examples/XHR/XHRExampleAbortController.js +0 -58
  1250. package/RNTester/js/examples/XHR/XHRExampleBinaryUpload.js +0 -149
  1251. package/RNTester/js/examples/XHR/XHRExampleDownload.js +0 -242
  1252. package/RNTester/js/examples/XHR/XHRExampleFetch.js +0 -133
  1253. package/RNTester/js/examples/XHR/XHRExampleHeaders.js +0 -114
  1254. package/RNTester/js/examples/XHR/XHRExampleOnTimeOut.js +0 -99
  1255. package/RNTester/js/types/RNTesterTypes.js +0 -47
  1256. package/RNTester/js/utils/RNTesterActions.js +0 -53
  1257. package/RNTester/js/utils/RNTesterList.android.js +0 -257
  1258. package/RNTester/js/utils/RNTesterList.ios.js +0 -366
  1259. package/RNTester/js/utils/RNTesterList.win32.js +0 -240
  1260. package/RNTester/js/utils/RNTesterNavigationReducer.js +0 -49
  1261. package/RNTester/js/utils/RNTesterStatePersister.js +0 -86
  1262. package/RNTester/js/utils/URIActionMap.js +0 -48
  1263. package/api-extractor.json +0 -25
  1264. package/demo/DocPagePropsList.d.ts +0 -18
  1265. package/demo/DocPagePropsList.js +0 -7
  1266. package/demo/DocPagePropsList.js.map +0 -1
  1267. package/docs/api/index.md +0 -12
  1268. package/docs/api/react-native-win32.accessibilityactionevent.md +0 -13
  1269. package/docs/api/react-native-win32.accessibilityactioninfo.md +0 -14
  1270. package/docs/api/react-native-win32.accessibilityactionname.md +0 -11
  1271. package/docs/api/react-native-win32.accessibilityannotationinfo.md +0 -16
  1272. package/docs/api/react-native-win32.accessibilitystate.md +0 -14
  1273. package/docs/api/react-native-win32.annotationtype.md +0 -11
  1274. package/docs/api/react-native-win32.ariarole.md +0 -11
  1275. package/docs/api/react-native-win32.basepropswin32.md +0 -17
  1276. package/docs/api/react-native-win32.buttonwin32._constructor_.md +0 -20
  1277. package/docs/api/react-native-win32.buttonwin32.md +0 -27
  1278. package/docs/api/react-native-win32.buttonwin32.render.md +0 -15
  1279. package/docs/api/react-native-win32.buttonwin32omitstyles.md +0 -11
  1280. package/docs/api/react-native-win32.colorgradientwin32.md +0 -15
  1281. package/docs/api/react-native-win32.cursor.md +0 -11
  1282. package/docs/api/react-native-win32.eventphase.md +0 -21
  1283. package/docs/api/react-native-win32.gradientcolorstop.md +0 -16
  1284. package/docs/api/react-native-win32.gradientcolorvaluewin32.md +0 -16
  1285. package/docs/api/react-native-win32.ibuttonwin32props.md +0 -25
  1286. package/docs/api/react-native-win32.ibuttonwin32props.onblur.md +0 -13
  1287. package/docs/api/react-native-win32.ibuttonwin32props.onfocus.md +0 -13
  1288. package/docs/api/react-native-win32.ibuttonwin32props.onmouseenter.md +0 -13
  1289. package/docs/api/react-native-win32.ibuttonwin32props.onmouseleave.md +0 -13
  1290. package/docs/api/react-native-win32.ibuttonwin32props.ontouchend.md +0 -13
  1291. package/docs/api/react-native-win32.ibuttonwin32props.ontouchstart.md +0 -13
  1292. package/docs/api/react-native-win32.ibuttonwin32props.style.md +0 -13
  1293. package/docs/api/react-native-win32.ibuttonwin32style.md +0 -13
  1294. package/docs/api/react-native-win32.ichildasfunction.md +0 -13
  1295. package/docs/api/react-native-win32.idimensions.height.md +0 -11
  1296. package/docs/api/react-native-win32.idimensions.md +0 -21
  1297. package/docs/api/react-native-win32.idimensions.width.md +0 -11
  1298. package/docs/api/react-native-win32.ihandledkeyboardevent.md +0 -11
  1299. package/docs/api/react-native-win32.ikeyboardevent.md +0 -11
  1300. package/docs/api/react-native-win32.inativekeyboardevent.altkey.md +0 -11
  1301. package/docs/api/react-native-win32.inativekeyboardevent.ctrlkey.md +0 -11
  1302. package/docs/api/react-native-win32.inativekeyboardevent.eventphase.md +0 -11
  1303. package/docs/api/react-native-win32.inativekeyboardevent.key.md +0 -11
  1304. package/docs/api/react-native-win32.inativekeyboardevent.md +0 -23
  1305. package/docs/api/react-native-win32.inativekeyboardevent.metakey.md +0 -11
  1306. package/docs/api/react-native-win32.inativekeyboardevent.shiftkey.md +0 -11
  1307. package/docs/api/react-native-win32.ipersonacoinprops.brandiconsource.md +0 -11
  1308. package/docs/api/react-native-win32.ipersonacoinprops.color.md +0 -11
  1309. package/docs/api/react-native-win32.ipersonacoinprops.disabled.md +0 -11
  1310. package/docs/api/react-native-win32.ipersonacoinprops.displayname.md +0 -11
  1311. package/docs/api/react-native-win32.ipersonacoinprops.emailaddress.md +0 -11
  1312. package/docs/api/react-native-win32.ipersonacoinprops.initials.md +0 -11
  1313. package/docs/api/react-native-win32.ipersonacoinprops.md +0 -29
  1314. package/docs/api/react-native-win32.ipersonacoinprops.onerror.md +0 -11
  1315. package/docs/api/react-native-win32.ipersonacoinprops.onload.md +0 -11
  1316. package/docs/api/react-native-win32.ipersonacoinprops.presence.md +0 -11
  1317. package/docs/api/react-native-win32.ipersonacoinprops.size.md +0 -11
  1318. package/docs/api/react-native-win32.ipersonacoinprops.source.md +0 -11
  1319. package/docs/api/react-native-win32.iposition.left.md +0 -11
  1320. package/docs/api/react-native-win32.iposition.md +0 -21
  1321. package/docs/api/react-native-win32.iposition.top.md +0 -11
  1322. package/docs/api/react-native-win32.ipressevent.md +0 -24
  1323. package/docs/api/react-native-win32.ipressinlocation.locationx.md +0 -11
  1324. package/docs/api/react-native-win32.ipressinlocation.locationy.md +0 -11
  1325. package/docs/api/react-native-win32.ipressinlocation.md +0 -23
  1326. package/docs/api/react-native-win32.ipressinlocation.pagex.md +0 -11
  1327. package/docs/api/react-native-win32.ipressinlocation.pagey.md +0 -11
  1328. package/docs/api/react-native-win32.irenderchild.md +0 -13
  1329. package/docs/api/react-native-win32.irenderstyle.md +0 -13
  1330. package/docs/api/react-native-win32.irespondersyntheticevent.md +0 -21
  1331. package/docs/api/react-native-win32.irespondersyntheticevent.touchhistory.md +0 -16
  1332. package/docs/api/react-native-win32.isignal.md +0 -13
  1333. package/docs/api/react-native-win32.istate.md +0 -13
  1334. package/docs/api/react-native-win32.istateconditions.md +0 -15
  1335. package/docs/api/react-native-win32.itextwin32props.md +0 -20
  1336. package/docs/api/react-native-win32.itextwin32props.textstyle.md +0 -25
  1337. package/docs/api/react-native-win32.itextwin32props.tooltip.md +0 -13
  1338. package/docs/api/react-native-win32.itouchablewin32props.children.md +0 -11
  1339. package/docs/api/react-native-win32.itouchablewin32props.disabled.md +0 -11
  1340. package/docs/api/react-native-win32.itouchablewin32props.filterkeys.md +0 -13
  1341. package/docs/api/react-native-win32.itouchablewin32props.md +0 -36
  1342. package/docs/api/react-native-win32.itouchablewin32props.onlongpress.md +0 -11
  1343. package/docs/api/react-native-win32.itouchablewin32props.rejectrespondertermination.md +0 -11
  1344. package/docs/api/react-native-win32.itouchablewin32props.renderstyle.md +0 -11
  1345. package/docs/api/react-native-win32.itouchablewin32props.touchablegethighlightdelayms.md +0 -11
  1346. package/docs/api/react-native-win32.itouchablewin32props.touchablegethitslop.md +0 -11
  1347. package/docs/api/react-native-win32.itouchablewin32props.touchablegetlongpressdelayms.md +0 -11
  1348. package/docs/api/react-native-win32.itouchablewin32props.touchablegetpressoutdelayms.md +0 -11
  1349. package/docs/api/react-native-win32.itouchablewin32props.touchablegetpressrectoffset.md +0 -11
  1350. package/docs/api/react-native-win32.itouchablewin32props.touchablehandleactivepressin.md +0 -11
  1351. package/docs/api/react-native-win32.itouchablewin32props.touchablehandleactivepressout.md +0 -11
  1352. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlekeypress.md +0 -11
  1353. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlekeypressdown.md +0 -11
  1354. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlelongpress.md +0 -11
  1355. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlepress.md +0 -11
  1356. package/docs/api/react-native-win32.itouchablewin32props.touchsounddisabled.md +0 -11
  1357. package/docs/api/react-native-win32.itouchablewin32state.isfocused.md +0 -11
  1358. package/docs/api/react-native-win32.itouchablewin32state.ishovered.md +0 -11
  1359. package/docs/api/react-native-win32.itouchablewin32state.ispressed.md +0 -11
  1360. package/docs/api/react-native-win32.itouchablewin32state.md +0 -20
  1361. package/docs/api/react-native-win32.itouchinfo.currentpagex.md +0 -11
  1362. package/docs/api/react-native-win32.itouchinfo.currentpagey.md +0 -11
  1363. package/docs/api/react-native-win32.itouchinfo.currenttimestamp.md +0 -11
  1364. package/docs/api/react-native-win32.itouchinfo.md +0 -29
  1365. package/docs/api/react-native-win32.itouchinfo.previouspagex.md +0 -11
  1366. package/docs/api/react-native-win32.itouchinfo.previouspagey.md +0 -11
  1367. package/docs/api/react-native-win32.itouchinfo.previoustimestamp.md +0 -11
  1368. package/docs/api/react-native-win32.itouchinfo.startpagex.md +0 -11
  1369. package/docs/api/react-native-win32.itouchinfo.startpagey.md +0 -11
  1370. package/docs/api/react-native-win32.itouchinfo.starttimestamp.md +0 -11
  1371. package/docs/api/react-native-win32.itouchinfo.touchactive.md +0 -11
  1372. package/docs/api/react-native-win32.itransitions.md +0 -15
  1373. package/docs/api/react-native-win32.iviewwin32.focus.md +0 -11
  1374. package/docs/api/react-native-win32.iviewwin32.md +0 -18
  1375. package/docs/api/react-native-win32.iviewwin32props.acceptskeyboardfocus.md +0 -16
  1376. package/docs/api/react-native-win32.iviewwin32props.accessibilityactions.md +0 -11
  1377. package/docs/api/react-native-win32.iviewwin32props.accessibilityannotation.md +0 -15
  1378. package/docs/api/react-native-win32.iviewwin32props.accessibilitylevel.md +0 -11
  1379. package/docs/api/react-native-win32.iviewwin32props.accessibilitypositioninset.md +0 -11
  1380. package/docs/api/react-native-win32.iviewwin32props.accessibilitysetsize.md +0 -11
  1381. package/docs/api/react-native-win32.iviewwin32props.animationclass.md +0 -11
  1382. package/docs/api/react-native-win32.iviewwin32props.children.md +0 -11
  1383. package/docs/api/react-native-win32.iviewwin32props.cursor.md +0 -11
  1384. package/docs/api/react-native-win32.iviewwin32props.focusable.md +0 -11
  1385. package/docs/api/react-native-win32.iviewwin32props.keydownevents.md +0 -11
  1386. package/docs/api/react-native-win32.iviewwin32props.keyupevents.md +0 -11
  1387. package/docs/api/react-native-win32.iviewwin32props.md +0 -44
  1388. package/docs/api/react-native-win32.iviewwin32props.onblur.md +0 -15
  1389. package/docs/api/react-native-win32.iviewwin32props.onblurcapture.md +0 -15
  1390. package/docs/api/react-native-win32.iviewwin32props.onfocus.md +0 -15
  1391. package/docs/api/react-native-win32.iviewwin32props.onfocuscapture.md +0 -15
  1392. package/docs/api/react-native-win32.iviewwin32props.onkeydown.md +0 -11
  1393. package/docs/api/react-native-win32.iviewwin32props.onkeydowncapture.md +0 -11
  1394. package/docs/api/react-native-win32.iviewwin32props.onkeyup.md +0 -11
  1395. package/docs/api/react-native-win32.iviewwin32props.onkeyupcapture.md +0 -11
  1396. package/docs/api/react-native-win32.iviewwin32props.onmouseenter.md +0 -11
  1397. package/docs/api/react-native-win32.iviewwin32props.onmouseleave.md +0 -11
  1398. package/docs/api/react-native-win32.iviewwin32props.tooltip.md +0 -13
  1399. package/docs/api/react-native-win32.iviewwin32props.type.md +0 -11
  1400. package/docs/api/react-native-win32.md +0 -85
  1401. package/docs/api/react-native-win32.omittedaccessibilitypropswin32.md +0 -15
  1402. package/docs/api/react-native-win32.personacoin.md +0 -11
  1403. package/docs/api/react-native-win32.personacoinpresence.md +0 -25
  1404. package/docs/api/react-native-win32.personacoinsize.md +0 -23
  1405. package/docs/api/react-native-win32.sharedaccessibilitypropsiosandwin32.md +0 -13
  1406. package/docs/api/react-native-win32.textstyle.md +0 -13
  1407. package/docs/api/react-native-win32.textwin32._constructor_.md +0 -20
  1408. package/docs/api/react-native-win32.textwin32.md +0 -25
  1409. package/docs/api/react-native-win32.textwin32.render.md +0 -15
  1410. package/docs/api/react-native-win32.textwin32omittypes.md +0 -11
  1411. package/docs/api/react-native-win32.touchablewin32._constructor_.md +0 -20
  1412. package/docs/api/react-native-win32.touchablewin32.componentwillunmount.md +0 -15
  1413. package/docs/api/react-native-win32.touchablewin32.focus.md +0 -11
  1414. package/docs/api/react-native-win32.touchablewin32.md +0 -34
  1415. package/docs/api/react-native-win32.touchablewin32.render.md +0 -15
  1416. package/docs/api/react-native-win32.usefrom.md +0 -13
  1417. package/docs/api/react-native-win32.viewwin32.md +0 -11
  1418. package/docs/api/react-native-win32.viewwin32omittypes.md +0 -11
  1419. package/etc/react-native-win32.api.md +0 -481
  1420. package/flow/Promise.js +0 -47
  1421. package/flow/fbjs.js +0 -258
  1422. package/flow/use-subscription.js +0 -19
  1423. package/jest/preprocessor.js +0 -120
  1424. package/typings-index.d.ts +0 -20
  1425. package/typings-index.js +0 -40
@@ -1,2237 +1,23 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
11
  'use strict';
12
12
 
13
- const Batchinator = require('../Interaction/Batchinator');
14
- const FillRateHelper = require('./FillRateHelper');
15
- const PropTypes = require('prop-types');
16
- const React = require('react');
17
- const ReactNative = require('../Renderer/shims/ReactNative');
18
- const RefreshControl = require('../Components/RefreshControl/RefreshControl');
19
- const ScrollView = require('../Components/ScrollView/ScrollView');
20
- const StyleSheet = require('../StyleSheet/StyleSheet');
21
- const View = require('../Components/View/View');
22
- const ViewabilityHelper = require('./ViewabilityHelper');
13
+ import {typeof VirtualizedList as VirtualizedListType} from '@react-native/virtualized-lists';
23
14
 
24
- const flattenStyle = require('../StyleSheet/flattenStyle');
25
- const infoLog = require('../Utilities/infoLog');
26
- const invariant = require('invariant');
27
- const warning = require('fbjs/lib/warning');
28
-
29
- const {computeWindowedRenderLimits} = require('./VirtualizeUtils');
30
-
31
- import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
32
- import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
33
- import type {
34
- ViewabilityConfig,
35
- ViewToken,
36
- ViewabilityConfigCallbackPair,
37
- } from './ViewabilityHelper';
38
-
39
- type Item = any;
40
-
41
- export type Separators = {
42
- highlight: () => void,
43
- unhighlight: () => void,
44
- updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,
45
- ...
46
- };
47
-
48
- export type RenderItemProps<ItemT> = {
49
- item: ItemT,
50
- index: number,
51
- separators: Separators,
52
- ...
53
- };
54
-
55
- export type RenderItemType<ItemT> = (
56
- info: RenderItemProps<ItemT>,
57
- ) => React.Node;
58
-
59
- type ViewabilityHelperCallbackTuple = {
60
- viewabilityHelper: ViewabilityHelper,
61
- onViewableItemsChanged: (info: {
62
- viewableItems: Array<ViewToken>,
63
- changed: Array<ViewToken>,
64
- ...
65
- }) => void,
66
- ...
67
- };
68
-
69
- type RequiredProps = {|
70
- /**
71
- * The default accessor functions assume this is an Array<{key: string} | {id: string}> but you can override
72
- * getItem, getItemCount, and keyExtractor to handle any type of index-based data.
73
- */
74
- data?: any,
75
- /**
76
- * A generic accessor for extracting an item from any sort of data blob.
77
- */
78
- getItem: (data: any, index: number) => ?Item,
79
- /**
80
- * Determines how many items are in the data blob.
81
- */
82
- getItemCount: (data: any) => number,
83
- |};
84
- type OptionalProps = {|
85
- renderItem?: ?RenderItemType<Item>,
86
- /**
87
- * `debug` will turn on extra logging and visual overlays to aid with debugging both usage and
88
- * implementation, but with a significant perf hit.
89
- */
90
- debug?: ?boolean,
91
- /**
92
- * DEPRECATED: Virtualization provides significant performance and memory optimizations, but fully
93
- * unmounts react instances that are outside of the render window. You should only need to disable
94
- * this for debugging purposes.
95
- */
96
- disableVirtualization?: ?boolean,
97
- /**
98
- * A marker property for telling the list to re-render (since it implements `PureComponent`). If
99
- * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the
100
- * `data` prop, stick it here and treat it immutably.
101
- */
102
- extraData?: any,
103
- // e.g. height, y
104
- getItemLayout?: (
105
- data: any,
106
- index: number,
107
- ) => {
108
- length: number,
109
- offset: number,
110
- index: number,
111
- ...
112
- },
113
- horizontal?: ?boolean,
114
- /**
115
- * How many items to render in the initial batch. This should be enough to fill the screen but not
116
- * much more. Note these items will never be unmounted as part of the windowed rendering in order
117
- * to improve perceived performance of scroll-to-top actions.
118
- */
119
- initialNumToRender: number,
120
- /**
121
- * Instead of starting at the top with the first item, start at `initialScrollIndex`. This
122
- * disables the "scroll to top" optimization that keeps the first `initialNumToRender` items
123
- * always rendered and immediately renders the items starting at this initial index. Requires
124
- * `getItemLayout` to be implemented.
125
- */
126
- initialScrollIndex?: ?number,
127
- /**
128
- * Reverses the direction of scroll. Uses scale transforms of -1.
129
- */
130
- inverted?: ?boolean,
131
- keyExtractor: (item: Item, index: number) => string,
132
- /**
133
- * Each cell is rendered using this element. Can be a React Component Class,
134
- * or a render function. Defaults to using View.
135
- */
136
- CellRendererComponent?: ?React.ComponentType<any>,
137
- /**
138
- * Rendered in between each item, but not at the top or bottom. By default, `highlighted` and
139
- * `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight`
140
- * which will update the `highlighted` prop, but you can also add custom props with
141
- * `separators.updateProps`.
142
- */
143
- ItemSeparatorComponent?: ?React.ComponentType<any>,
144
- /**
145
- * Takes an item from `data` and renders it into the list. Example usage:
146
- *
147
- * <FlatList
148
- * ItemSeparatorComponent={Platform.OS !== 'android' && ({highlighted}) => (
149
- * <View style={[style.separator, highlighted && {marginLeft: 0}]} />
150
- * )}
151
- * data={[{title: 'Title Text', key: 'item1'}]}
152
- * ListItemComponent={({item, separators}) => (
153
- * <TouchableHighlight
154
- * onPress={() => this._onPress(item)}
155
- * onShowUnderlay={separators.highlight}
156
- * onHideUnderlay={separators.unhighlight}>
157
- * <View style={{backgroundColor: 'white'}}>
158
- * <Text>{item.title}</Text>
159
- * </View>
160
- * </TouchableHighlight>
161
- * )}
162
- * />
163
- *
164
- * Provides additional metadata like `index` if you need it, as well as a more generic
165
- * `separators.updateProps` function which let's you set whatever props you want to change the
166
- * rendering of either the leading separator or trailing separator in case the more common
167
- * `highlight` and `unhighlight` (which set the `highlighted: boolean` prop) are insufficient for
168
- * your use-case.
169
- */
170
- ListItemComponent?: ?(React.ComponentType<any> | React.Element<any>),
171
- /**
172
- * Rendered when the list is empty. Can be a React Component Class, a render function, or
173
- * a rendered element.
174
- */
175
- ListEmptyComponent?: ?(React.ComponentType<any> | React.Element<any>),
176
- /**
177
- * Rendered at the bottom of all the items. Can be a React Component Class, a render function, or
178
- * a rendered element.
179
- */
180
- ListFooterComponent?: ?(React.ComponentType<any> | React.Element<any>),
181
- /**
182
- * Styling for internal View for ListFooterComponent
183
- */
184
- ListFooterComponentStyle?: ViewStyleProp,
185
- /**
186
- * Rendered at the top of all the items. Can be a React Component Class, a render function, or
187
- * a rendered element.
188
- */
189
- ListHeaderComponent?: ?(React.ComponentType<any> | React.Element<any>),
190
- /**
191
- * Styling for internal View for ListHeaderComponent
192
- */
193
- ListHeaderComponentStyle?: ViewStyleProp,
194
- /**
195
- * A unique identifier for this list. If there are multiple VirtualizedLists at the same level of
196
- * nesting within another VirtualizedList, this key is necessary for virtualization to
197
- * work properly.
198
- */
199
- listKey?: string,
200
- /**
201
- * The maximum number of items to render in each incremental render batch. The more rendered at
202
- * once, the better the fill rate, but responsiveness may suffer because rendering content may
203
- * interfere with responding to button taps or other interactions.
204
- */
205
- maxToRenderPerBatch: number,
206
- /**
207
- * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered
208
- * content.
209
- */
210
- onEndReached?: ?(info: {distanceFromEnd: number, ...}) => void,
211
- /**
212
- * How far from the end (in units of visible length of the list) the bottom edge of the
213
- * list must be from the end of the content to trigger the `onEndReached` callback.
214
- * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is
215
- * within half the visible length of the list.
216
- */
217
- onEndReachedThreshold?: ?number,
218
- /**
219
- * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality. Make
220
- * sure to also set the `refreshing` prop correctly.
221
- */
222
- onRefresh?: ?() => void,
223
- /**
224
- * Used to handle failures when scrolling to an index that has not been measured yet. Recommended
225
- * action is to either compute your own offset and `scrollTo` it, or scroll as far as possible and
226
- * then try again after more items have been rendered.
227
- */
228
- onScrollToIndexFailed?: ?(info: {
229
- index: number,
230
- highestMeasuredFrameIndex: number,
231
- averageItemLength: number,
232
- ...
233
- }) => void,
234
- /**
235
- * Called when the viewability of rows changes, as defined by the
236
- * `viewabilityConfig` prop.
237
- */
238
- onViewableItemsChanged?: ?(info: {
239
- viewableItems: Array<ViewToken>,
240
- changed: Array<ViewToken>,
241
- ...
242
- }) => void,
243
- persistentScrollbar?: ?boolean,
244
- /**
245
- * Set this when offset is needed for the loading indicator to show correctly.
246
- * @platform android
247
- */
248
- progressViewOffset?: number,
249
- /**
250
- * A custom refresh control element. When set, it overrides the default
251
- * <RefreshControl> component built internally. The onRefresh and refreshing
252
- * props are also ignored. Only works for vertical VirtualizedList.
253
- */
254
- refreshControl?: ?React.Element<any>,
255
- /**
256
- * Set this true while waiting for new data from a refresh.
257
- */
258
- refreshing?: ?boolean,
259
- /**
260
- * Note: may have bugs (missing content) in some circumstances - use at your own risk.
261
- *
262
- * This may improve scroll performance for large lists.
263
- */
264
- removeClippedSubviews?: boolean,
265
- /**
266
- * Render a custom scroll component, e.g. with a differently styled `RefreshControl`.
267
- */
268
- renderScrollComponent?: (props: Object) => React.Element<any>,
269
- /**
270
- * Amount of time between low-pri item render batches, e.g. for rendering items quite a ways off
271
- * screen. Similar fill rate/responsiveness tradeoff as `maxToRenderPerBatch`.
272
- */
273
- updateCellsBatchingPeriod: number,
274
- /**
275
- * See `ViewabilityHelper` for flow type and further documentation.
276
- */
277
- viewabilityConfig?: ViewabilityConfig,
278
- /**
279
- * List of ViewabilityConfig/onViewableItemsChanged pairs. A specific onViewableItemsChanged
280
- * will be called when its corresponding ViewabilityConfig's conditions are met.
281
- */
282
- viewabilityConfigCallbackPairs?: Array<ViewabilityConfigCallbackPair>,
283
- /**
284
- * Determines the maximum number of items rendered outside of the visible area, in units of
285
- * visible lengths. So if your list fills the screen, then `windowSize={21}` (the default) will
286
- * render the visible screen area plus up to 10 screens above and 10 below the viewport. Reducing
287
- * this number will reduce memory consumption and may improve performance, but will increase the
288
- * chance that fast scrolling may reveal momentary blank areas of unrendered content.
289
- */
290
- windowSize: number,
291
- /**
292
- * The legacy implementation is no longer supported.
293
- */
294
- legacyImplementation?: empty,
295
- |};
296
-
297
- type Props = {|
298
- ...React.ElementConfig<typeof ScrollView>,
299
- ...RequiredProps,
300
- ...OptionalProps,
301
- |};
302
-
303
- type DefaultProps = {|
304
- disableVirtualization: boolean,
305
- horizontal: boolean,
306
- initialNumToRender: number,
307
- keyExtractor: (item: Item, index: number) => string,
308
- maxToRenderPerBatch: number,
309
- onEndReachedThreshold: number,
310
- scrollEventThrottle: number,
311
- updateCellsBatchingPeriod: number,
312
- windowSize: number,
313
- |};
314
-
315
- let _usedIndexForKey = false;
316
- let _keylessItemComponentName: string = '';
317
-
318
- type Frame = {
319
- offset: number,
320
- length: number,
321
- index: number,
322
- inLayout: boolean,
323
- ...
324
- };
325
-
326
- type ChildListState = {
327
- first: number,
328
- last: number,
329
- frames: {[key: number]: Frame, ...},
330
- ...
331
- };
332
-
333
- type State = {
334
- first: number,
335
- last: number,
336
- ...
337
- };
338
-
339
- // Data propagated through nested lists (regardless of orientation) that is
340
- // useful for producing diagnostics for usage errors involving nesting (e.g
341
- // missing/duplicate keys).
342
- type ListDebugInfo = {
343
- cellKey: string,
344
- listKey: string,
345
- parent: ?ListDebugInfo,
346
- // We include all ancestors regardless of orientation, so this is not always
347
- // identical to the child's orientation.
348
- horizontal: boolean,
349
- };
350
-
351
- /**
352
- * Base implementation for the more convenient [`<FlatList>`](https://reactnative.dev/docs/flatlist.html)
353
- * and [`<SectionList>`](https://reactnative.dev/docs/sectionlist.html) components, which are also better
354
- * documented. In general, this should only really be used if you need more flexibility than
355
- * `FlatList` provides, e.g. for use with immutable data instead of plain arrays.
356
- *
357
- * Virtualization massively improves memory consumption and performance of large lists by
358
- * maintaining a finite render window of active items and replacing all items outside of the render
359
- * window with appropriately sized blank space. The window adapts to scrolling behavior, and items
360
- * are rendered incrementally with low-pri (after any running interactions) if they are far from the
361
- * visible area, or with hi-pri otherwise to minimize the potential of seeing blank space.
362
- *
363
- * Some caveats:
364
- *
365
- * - Internal state is not preserved when content scrolls out of the render window. Make sure all
366
- * your data is captured in the item data or external stores like Flux, Redux, or Relay.
367
- * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-
368
- * equal. Make sure that everything your `renderItem` function depends on is passed as a prop
369
- * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on
370
- * changes. This includes the `data` prop and parent component state.
371
- * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously
372
- * offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see
373
- * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,
374
- * and we are working on improving it behind the scenes.
375
- * - By default, the list looks for a `key` or `id` prop on each item and uses that for the React key.
376
- * Alternatively, you can provide a custom `keyExtractor` prop.
377
- *
378
- */
379
- class VirtualizedList extends React.PureComponent<Props, State> {
380
- props: Props;
381
-
382
- // scrollToEnd may be janky without getItemLayout prop
383
- scrollToEnd(params?: ?{animated?: ?boolean, ...}) {
384
- const animated = params ? params.animated : true;
385
- const veryLast = this.props.getItemCount(this.props.data) - 1;
386
- const frame = this._getFrameMetricsApprox(veryLast);
387
- const offset = Math.max(
388
- 0,
389
- frame.offset +
390
- frame.length +
391
- this._footerLength -
392
- this._scrollMetrics.visibleLength,
393
- );
394
-
395
- if (this._scrollRef == null) {
396
- return;
397
- }
398
-
399
- this._scrollRef.scrollTo(
400
- this.props.horizontal ? {x: offset, animated} : {y: offset, animated},
401
- );
402
- }
403
-
404
- // scrollToIndex may be janky without getItemLayout prop
405
- scrollToIndex(params: {
406
- animated?: ?boolean,
407
- index: number,
408
- viewOffset?: number,
409
- viewPosition?: number,
410
- ...
411
- }) {
412
- const {
413
- data,
414
- horizontal,
415
- getItemCount,
416
- getItemLayout,
417
- onScrollToIndexFailed,
418
- } = this.props;
419
- const {animated, index, viewOffset, viewPosition} = params;
420
- invariant(
421
- index >= 0 && index < getItemCount(data),
422
- `scrollToIndex out of range: requested index ${index} but maximum is ${getItemCount(
423
- data,
424
- ) - 1}`,
425
- );
426
- if (!getItemLayout && index > this._highestMeasuredFrameIndex) {
427
- invariant(
428
- !!onScrollToIndexFailed,
429
- 'scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, ' +
430
- 'otherwise there is no way to know the location of offscreen indices or handle failures.',
431
- );
432
- onScrollToIndexFailed({
433
- averageItemLength: this._averageCellLength,
434
- highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,
435
- index,
436
- });
437
- return;
438
- }
439
- const frame = this._getFrameMetricsApprox(index);
440
- const offset =
441
- Math.max(
442
- 0,
443
- frame.offset -
444
- (viewPosition || 0) *
445
- (this._scrollMetrics.visibleLength - frame.length),
446
- ) - (viewOffset || 0);
447
-
448
- if (this._scrollRef == null) {
449
- return;
450
- }
451
-
452
- this._scrollRef.scrollTo(
453
- horizontal ? {x: offset, animated} : {y: offset, animated},
454
- );
455
- }
456
-
457
- // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -
458
- // use scrollToIndex instead if possible.
459
- scrollToItem(params: {
460
- animated?: ?boolean,
461
- item: Item,
462
- viewPosition?: number,
463
- ...
464
- }) {
465
- const {item} = params;
466
- const {data, getItem, getItemCount} = this.props;
467
- const itemCount = getItemCount(data);
468
- for (let index = 0; index < itemCount; index++) {
469
- if (getItem(data, index) === item) {
470
- this.scrollToIndex({...params, index});
471
- break;
472
- }
473
- }
474
- }
475
-
476
- /**
477
- * Scroll to a specific content pixel offset in the list.
478
- *
479
- * Param `offset` expects the offset to scroll to.
480
- * In case of `horizontal` is true, the offset is the x-value,
481
- * in any other case the offset is the y-value.
482
- *
483
- * Param `animated` (`true` by default) defines whether the list
484
- * should do an animation while scrolling.
485
- */
486
- scrollToOffset(params: {animated?: ?boolean, offset: number, ...}) {
487
- const {animated, offset} = params;
488
-
489
- if (this._scrollRef == null) {
490
- return;
491
- }
492
-
493
- this._scrollRef.scrollTo(
494
- this.props.horizontal ? {x: offset, animated} : {y: offset, animated},
495
- );
496
- }
497
-
498
- recordInteraction() {
499
- this._nestedChildLists.forEach(childList => {
500
- childList.ref && childList.ref.recordInteraction();
501
- });
502
- this._viewabilityTuples.forEach(t => {
503
- t.viewabilityHelper.recordInteraction();
504
- });
505
- this._updateViewableItems(this.props.data);
506
- }
507
-
508
- flashScrollIndicators() {
509
- if (this._scrollRef == null) {
510
- return;
511
- }
512
-
513
- this._scrollRef.flashScrollIndicators();
514
- }
515
-
516
- /**
517
- * Provides a handle to the underlying scroll responder.
518
- * Note that `this._scrollRef` might not be a `ScrollView`, so we
519
- * need to check that it responds to `getScrollResponder` before calling it.
520
- */
521
- getScrollResponder(): ?ScrollResponderType {
522
- if (this._scrollRef && this._scrollRef.getScrollResponder) {
523
- return this._scrollRef.getScrollResponder();
524
- }
525
- }
526
-
527
- getScrollableNode(): ?number {
528
- if (this._scrollRef && this._scrollRef.getScrollableNode) {
529
- return this._scrollRef.getScrollableNode();
530
- } else {
531
- return ReactNative.findNodeHandle(this._scrollRef);
532
- }
533
- }
534
-
535
- getScrollRef():
536
- | ?React.ElementRef<typeof ScrollView>
537
- | ?React.ElementRef<typeof View> {
538
- if (this._scrollRef && this._scrollRef.getScrollRef) {
539
- return this._scrollRef.getScrollRef();
540
- } else {
541
- return this._scrollRef;
542
- }
543
- }
544
-
545
- setNativeProps(props: Object) {
546
- if (this._scrollRef) {
547
- this._scrollRef.setNativeProps(props);
548
- }
549
- }
550
-
551
- static defaultProps: DefaultProps = {
552
- disableVirtualization: false,
553
- horizontal: false,
554
- initialNumToRender: 10,
555
- keyExtractor: (item: Item, index: number) => {
556
- if (item.key != null) {
557
- return item.key;
558
- }
559
- if (item.id != null) {
560
- return item.id;
561
- }
562
- _usedIndexForKey = true;
563
- if (item.type && item.type.displayName) {
564
- _keylessItemComponentName = item.type.displayName;
565
- }
566
- return String(index);
567
- },
568
- maxToRenderPerBatch: 10,
569
- onEndReachedThreshold: 2, // multiples of length
570
- scrollEventThrottle: 50,
571
- updateCellsBatchingPeriod: 50,
572
- windowSize: 21, // multiples of length
573
- };
574
-
575
- static contextTypes:
576
- | any
577
- | {|
578
- virtualizedCell: {|
579
- cellKey: React$PropType$Primitive<string>,
580
- |},
581
- virtualizedList: {|
582
- getScrollMetrics: React$PropType$Primitive<Function>,
583
- horizontal: React$PropType$Primitive<boolean>,
584
- getOutermostParentListRef: React$PropType$Primitive<Function>,
585
- getNestedChildState: React$PropType$Primitive<Function>,
586
- registerAsNestedChild: React$PropType$Primitive<Function>,
587
- unregisterAsNestedChild: React$PropType$Primitive<Function>,
588
- debugInfo: {|
589
- listKey: React$PropType$Primitive<string>,
590
- cellKey: React$PropType$Primitive<string>,
591
- |},
592
- |},
593
- |} = {
594
- virtualizedCell: PropTypes.shape({
595
- cellKey: PropTypes.string,
596
- }),
597
- virtualizedList: PropTypes.shape({
598
- getScrollMetrics: PropTypes.func,
599
- horizontal: PropTypes.bool,
600
- getOutermostParentListRef: PropTypes.func,
601
- getNestedChildState: PropTypes.func,
602
- registerAsNestedChild: PropTypes.func,
603
- unregisterAsNestedChild: PropTypes.func,
604
- debugInfo: PropTypes.shape({
605
- listKey: PropTypes.string,
606
- cellKey: PropTypes.string,
607
- }),
608
- }),
609
- };
610
-
611
- static childContextTypes:
612
- | any
613
- | {|
614
- getScrollMetrics: React$PropType$Primitive<Function>,
615
- horizontal: React$PropType$Primitive<boolean>,
616
- getOutermostParentListRef: React$PropType$Primitive<Function>,
617
- getNestedChildState: React$PropType$Primitive<Function>,
618
- registerAsNestedChild: React$PropType$Primitive<Function>,
619
- unregisterAsNestedChild: React$PropType$Primitive<Function>,
620
- |} = {
621
- virtualizedList: PropTypes.shape({
622
- getScrollMetrics: PropTypes.func,
623
- horizontal: PropTypes.bool,
624
- getOutermostParentListRef: PropTypes.func,
625
- getNestedChildState: PropTypes.func,
626
- registerAsNestedChild: PropTypes.func,
627
- unregisterAsNestedChild: PropTypes.func,
628
- }),
629
- };
630
-
631
- getChildContext(): {|
632
- virtualizedList: {
633
- getScrollMetrics: () => {
634
- contentLength: number,
635
- dOffset: number,
636
- dt: number,
637
- offset: number,
638
- timestamp: number,
639
- velocity: number,
640
- visibleLength: number,
641
- ...
642
- },
643
- horizontal: ?boolean,
644
- getOutermostParentListRef: Function,
645
- getNestedChildState: string => ?ChildListState,
646
- registerAsNestedChild: ({
647
- cellKey: string,
648
- key: string,
649
- ref: VirtualizedList,
650
- parentDebugInfo: ListDebugInfo,
651
- ...
652
- }) => ?ChildListState,
653
- unregisterAsNestedChild: ({
654
- key: string,
655
- state: ChildListState,
656
- ...
657
- }) => void,
658
- debugInfo: ListDebugInfo,
659
- ...
660
- },
661
- |} {
662
- return {
663
- virtualizedList: {
664
- getScrollMetrics: this._getScrollMetrics,
665
- horizontal: this.props.horizontal,
666
- getOutermostParentListRef: this._getOutermostParentListRef,
667
- getNestedChildState: this._getNestedChildState,
668
- registerAsNestedChild: this._registerAsNestedChild,
669
- unregisterAsNestedChild: this._unregisterAsNestedChild,
670
- debugInfo: this._getDebugInfo(),
671
- },
672
- };
673
- }
674
-
675
- _getCellKey(): string {
676
- return (
677
- (this.context.virtualizedCell && this.context.virtualizedCell.cellKey) ||
678
- 'rootList'
679
- );
680
- }
681
-
682
- _getListKey(): string {
683
- return this.props.listKey || this._getCellKey();
684
- }
685
-
686
- _getDebugInfo(): ListDebugInfo {
687
- return {
688
- listKey: this._getListKey(),
689
- cellKey: this._getCellKey(),
690
- horizontal: !!this.props.horizontal,
691
- parent: this.context.virtualizedList
692
- ? this.context.virtualizedList.debugInfo
693
- : null,
694
- };
695
- }
696
-
697
- _getScrollMetrics = () => {
698
- return this._scrollMetrics;
699
- };
700
-
701
- hasMore(): boolean {
702
- return this._hasMore;
703
- }
704
-
705
- _getOutermostParentListRef = () => {
706
- if (this._isNestedWithSameOrientation()) {
707
- return this.context.virtualizedList.getOutermostParentListRef();
708
- } else {
709
- return this;
710
- }
711
- };
712
-
713
- _getNestedChildState = (key: string): ?ChildListState => {
714
- const existingChildData = this._nestedChildLists.get(key);
715
- return existingChildData && existingChildData.state;
716
- };
717
-
718
- _registerAsNestedChild = (childList: {
719
- cellKey: string,
720
- key: string,
721
- ref: VirtualizedList,
722
- parentDebugInfo: ListDebugInfo,
723
- ...
724
- }): ?ChildListState => {
725
- // Register the mapping between this child key and the cellKey for its cell
726
- const childListsInCell =
727
- this._cellKeysToChildListKeys.get(childList.cellKey) || new Set();
728
- childListsInCell.add(childList.key);
729
- this._cellKeysToChildListKeys.set(childList.cellKey, childListsInCell);
730
- const existingChildData = this._nestedChildLists.get(childList.key);
731
- if (existingChildData && existingChildData.ref !== null) {
732
- console.error(
733
- 'A VirtualizedList contains a cell which itself contains ' +
734
- 'more than one VirtualizedList of the same orientation as the parent ' +
735
- 'list. You must pass a unique listKey prop to each sibling list.\n\n' +
736
- describeNestedLists({
737
- ...childList,
738
- // We're called from the child's componentDidMount, so it's safe to
739
- // read the child's props here (albeit weird).
740
- horizontal: !!childList.ref.props.horizontal,
741
- }),
742
- );
743
- }
744
- this._nestedChildLists.set(childList.key, {
745
- ref: childList.ref,
746
- state: null,
747
- });
748
-
749
- if (this._hasInteracted) {
750
- childList.ref.recordInteraction();
751
- }
752
- };
753
-
754
- _unregisterAsNestedChild = (childList: {
755
- key: string,
756
- state: ChildListState,
757
- ...
758
- }): void => {
759
- this._nestedChildLists.set(childList.key, {
760
- ref: null,
761
- state: childList.state,
762
- });
763
- };
764
-
765
- state: State;
766
-
767
- constructor(props: Props, context: Object) {
768
- super(props, context);
769
- invariant(
770
- // $FlowFixMe
771
- !props.onScroll || !props.onScroll.__isNative,
772
- 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' +
773
- 'to support native onScroll events with useNativeDriver',
774
- );
775
-
776
- invariant(
777
- props.windowSize > 0,
778
- 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.',
779
- );
780
-
781
- this._fillRateHelper = new FillRateHelper(this._getFrameMetrics);
782
- this._updateCellsToRenderBatcher = new Batchinator(
783
- this._updateCellsToRender,
784
- this.props.updateCellsBatchingPeriod,
785
- );
786
-
787
- if (this.props.viewabilityConfigCallbackPairs) {
788
- this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(
789
- pair => ({
790
- viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),
791
- onViewableItemsChanged: pair.onViewableItemsChanged,
792
- }),
793
- );
794
- } else if (this.props.onViewableItemsChanged) {
795
- this._viewabilityTuples.push({
796
- viewabilityHelper: new ViewabilityHelper(this.props.viewabilityConfig),
797
- onViewableItemsChanged: this.props.onViewableItemsChanged,
798
- });
799
- }
800
-
801
- let initialState = {
802
- first: this.props.initialScrollIndex || 0,
803
- last:
804
- Math.min(
805
- this.props.getItemCount(this.props.data),
806
- (this.props.initialScrollIndex || 0) + this.props.initialNumToRender,
807
- ) - 1,
808
- };
809
-
810
- if (this._isNestedWithSameOrientation()) {
811
- const storedState = this.context.virtualizedList.getNestedChildState(
812
- this._getListKey(),
813
- );
814
- if (storedState) {
815
- initialState = storedState;
816
- this.state = storedState;
817
- this._frames = storedState.frames;
818
- }
819
- }
820
-
821
- this.state = initialState;
822
- }
823
-
824
- componentDidMount() {
825
- if (this._isNestedWithSameOrientation()) {
826
- this.context.virtualizedList.registerAsNestedChild({
827
- cellKey: this._getCellKey(),
828
- key: this._getListKey(),
829
- ref: this,
830
- // NOTE: When the child mounts (here) it's not necessarily safe to read
831
- // the parent's props. This is why we explicitly propagate debugInfo
832
- // "down" via context and "up" again via this method call on the
833
- // parent.
834
- parentDebugInfo: this.context.virtualizedList.debugInfo,
835
- });
836
- }
837
- }
838
-
839
- componentWillUnmount() {
840
- if (this._isNestedWithSameOrientation()) {
841
- this.context.virtualizedList.unregisterAsNestedChild({
842
- key: this._getListKey(),
843
- state: {
844
- first: this.state.first,
845
- last: this.state.last,
846
- frames: this._frames,
847
- },
848
- });
849
- }
850
- this._updateViewableItems(null);
851
- this._updateCellsToRenderBatcher.dispose({abort: true});
852
- this._viewabilityTuples.forEach(tuple => {
853
- tuple.viewabilityHelper.dispose();
854
- });
855
- this._fillRateHelper.deactivateAndFlush();
856
- }
857
-
858
- static getDerivedStateFromProps(newProps: Props, prevState: State): State {
859
- const {data, getItemCount, maxToRenderPerBatch} = newProps;
860
- // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make
861
- // sure we're rendering a reasonable range here.
862
- return {
863
- first: Math.max(
864
- 0,
865
- Math.min(prevState.first, getItemCount(data) - 1 - maxToRenderPerBatch),
866
- ),
867
- last: Math.max(0, Math.min(prevState.last, getItemCount(data) - 1)),
868
- };
869
- }
870
-
871
- _pushCells(
872
- cells: Array<Object>,
873
- stickyHeaderIndices: Array<number>,
874
- stickyIndicesFromProps: Set<number>,
875
- first: number,
876
- last: number,
877
- inversionStyle: ViewStyleProp,
878
- ) {
879
- const {
880
- CellRendererComponent,
881
- ItemSeparatorComponent,
882
- data,
883
- getItem,
884
- getItemCount,
885
- horizontal,
886
- keyExtractor,
887
- } = this.props;
888
- const stickyOffset = this.props.ListHeaderComponent ? 1 : 0;
889
- const end = getItemCount(data) - 1;
890
- let prevCellKey;
891
- last = Math.min(end, last);
892
- for (let ii = first; ii <= last; ii++) {
893
- const item = getItem(data, ii);
894
- const key = keyExtractor(item, ii);
895
- this._indicesToKeys.set(ii, key);
896
- if (stickyIndicesFromProps.has(ii + stickyOffset)) {
897
- stickyHeaderIndices.push(cells.length);
898
- }
899
- cells.push(
900
- <CellRenderer
901
- CellRendererComponent={CellRendererComponent}
902
- ItemSeparatorComponent={ii < end ? ItemSeparatorComponent : undefined}
903
- cellKey={key}
904
- fillRateHelper={this._fillRateHelper}
905
- horizontal={horizontal}
906
- index={ii}
907
- inversionStyle={inversionStyle}
908
- item={item}
909
- key={key}
910
- prevCellKey={prevCellKey}
911
- onUpdateSeparators={this._onUpdateSeparators}
912
- onLayout={e => this._onCellLayout(e, key, ii)}
913
- onUnmount={this._onCellUnmount}
914
- parentProps={this.props}
915
- ref={ref => {
916
- this._cellRefs[key] = ref;
917
- }}
918
- />,
919
- );
920
- prevCellKey = key;
921
- }
922
- }
923
-
924
- _onUpdateSeparators = (keys: Array<?string>, newProps: Object) => {
925
- keys.forEach(key => {
926
- const ref = key != null && this._cellRefs[key];
927
- ref && ref.updateSeparatorProps(newProps);
928
- });
929
- };
930
-
931
- _isVirtualizationDisabled(): boolean {
932
- return this.props.disableVirtualization || false;
933
- }
934
-
935
- _isNestedWithSameOrientation(): boolean {
936
- const nestedContext = this.context.virtualizedList;
937
- return !!(
938
- nestedContext && !!nestedContext.horizontal === !!this.props.horizontal
939
- );
940
- }
941
-
942
- render(): React.Node {
943
- if (__DEV__) {
944
- const flatStyles = flattenStyle(this.props.contentContainerStyle);
945
- warning(
946
- flatStyles == null || flatStyles.flexWrap !== 'wrap',
947
- '`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' +
948
- 'Consider using `numColumns` with `FlatList` instead.',
949
- );
950
- }
951
- const {
952
- ListEmptyComponent,
953
- ListFooterComponent,
954
- ListHeaderComponent,
955
- } = this.props;
956
- const {data, horizontal} = this.props;
957
- const isVirtualizationDisabled = this._isVirtualizationDisabled();
958
- const inversionStyle = this.props.inverted
959
- ? this.props.horizontal
960
- ? styles.horizontallyInverted
961
- : styles.verticallyInverted
962
- : null;
963
- const cells = [];
964
- const stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);
965
- const stickyHeaderIndices = [];
966
- if (ListHeaderComponent) {
967
- if (stickyIndicesFromProps.has(0)) {
968
- stickyHeaderIndices.push(0);
969
- }
970
- const element = React.isValidElement(ListHeaderComponent) ? (
971
- ListHeaderComponent
972
- ) : (
973
- // $FlowFixMe
974
- <ListHeaderComponent />
975
- );
976
- cells.push(
977
- <VirtualizedCellWrapper
978
- cellKey={this._getCellKey() + '-header'}
979
- key="$header">
980
- <View
981
- onLayout={this._onLayoutHeader}
982
- style={StyleSheet.compose(
983
- inversionStyle,
984
- this.props.ListHeaderComponentStyle,
985
- )}>
986
- {
987
- // $FlowFixMe - Typing ReactNativeComponent revealed errors
988
- element
989
- }
990
- </View>
991
- </VirtualizedCellWrapper>,
992
- );
993
- }
994
- const itemCount = this.props.getItemCount(data);
995
- if (itemCount > 0) {
996
- _usedIndexForKey = false;
997
- _keylessItemComponentName = '';
998
- const spacerKey = !horizontal ? 'height' : 'width';
999
- const lastInitialIndex = this.props.initialScrollIndex
1000
- ? -1
1001
- : this.props.initialNumToRender - 1;
1002
- const {first, last} = this.state;
1003
- this._pushCells(
1004
- cells,
1005
- stickyHeaderIndices,
1006
- stickyIndicesFromProps,
1007
- 0,
1008
- lastInitialIndex,
1009
- inversionStyle,
1010
- );
1011
- const firstAfterInitial = Math.max(lastInitialIndex + 1, first);
1012
- if (!isVirtualizationDisabled && first > lastInitialIndex + 1) {
1013
- let insertedStickySpacer = false;
1014
- if (stickyIndicesFromProps.size > 0) {
1015
- const stickyOffset = ListHeaderComponent ? 1 : 0;
1016
- // See if there are any sticky headers in the virtualized space that we need to render.
1017
- for (let ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) {
1018
- if (stickyIndicesFromProps.has(ii + stickyOffset)) {
1019
- const initBlock = this._getFrameMetricsApprox(lastInitialIndex);
1020
- const stickyBlock = this._getFrameMetricsApprox(ii);
1021
- const leadSpace =
1022
- stickyBlock.offset -
1023
- initBlock.offset -
1024
- (this.props.initialScrollIndex ? 0 : initBlock.length);
1025
- cells.push(
1026
- /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment
1027
- * suppresses an error found when Flow v0.111 was deployed. To
1028
- * see the error, delete this comment and run Flow. */
1029
- <View key="$sticky_lead" style={{[spacerKey]: leadSpace}} />,
1030
- );
1031
- this._pushCells(
1032
- cells,
1033
- stickyHeaderIndices,
1034
- stickyIndicesFromProps,
1035
- ii,
1036
- ii,
1037
- inversionStyle,
1038
- );
1039
- const trailSpace =
1040
- this._getFrameMetricsApprox(first).offset -
1041
- (stickyBlock.offset + stickyBlock.length);
1042
- cells.push(
1043
- /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment
1044
- * suppresses an error found when Flow v0.111 was deployed. To
1045
- * see the error, delete this comment and run Flow. */
1046
- <View key="$sticky_trail" style={{[spacerKey]: trailSpace}} />,
1047
- );
1048
- insertedStickySpacer = true;
1049
- break;
1050
- }
1051
- }
1052
- }
1053
- if (!insertedStickySpacer) {
1054
- const initBlock = this._getFrameMetricsApprox(lastInitialIndex);
1055
- const firstSpace =
1056
- this._getFrameMetricsApprox(first).offset -
1057
- (initBlock.offset + initBlock.length);
1058
- cells.push(
1059
- /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment
1060
- * suppresses an error found when Flow v0.111 was deployed. To see
1061
- * the error, delete this comment and run Flow. */
1062
- <View key="$lead_spacer" style={{[spacerKey]: firstSpace}} />,
1063
- );
1064
- }
1065
- }
1066
- this._pushCells(
1067
- cells,
1068
- stickyHeaderIndices,
1069
- stickyIndicesFromProps,
1070
- firstAfterInitial,
1071
- last,
1072
- inversionStyle,
1073
- );
1074
- if (!this._hasWarned.keys && _usedIndexForKey) {
1075
- console.warn(
1076
- 'VirtualizedList: missing keys for items, make sure to specify a key or id property on each ' +
1077
- 'item or provide a custom keyExtractor.',
1078
- _keylessItemComponentName,
1079
- );
1080
- this._hasWarned.keys = true;
1081
- }
1082
- if (!isVirtualizationDisabled && last < itemCount - 1) {
1083
- const lastFrame = this._getFrameMetricsApprox(last);
1084
- // Without getItemLayout, we limit our tail spacer to the _highestMeasuredFrameIndex to
1085
- // prevent the user for hyperscrolling into un-measured area because otherwise content will
1086
- // likely jump around as it renders in above the viewport.
1087
- const end = this.props.getItemLayout
1088
- ? itemCount - 1
1089
- : Math.min(itemCount - 1, this._highestMeasuredFrameIndex);
1090
- const endFrame = this._getFrameMetricsApprox(end);
1091
- const tailSpacerLength =
1092
- endFrame.offset +
1093
- endFrame.length -
1094
- (lastFrame.offset + lastFrame.length);
1095
- cells.push(
1096
- /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses
1097
- * an error found when Flow v0.111 was deployed. To see the error,
1098
- * delete this comment and run Flow. */
1099
- <View key="$tail_spacer" style={{[spacerKey]: tailSpacerLength}} />,
1100
- );
1101
- }
1102
- } else if (ListEmptyComponent) {
1103
- const element: React.Element<any> = ((React.isValidElement(
1104
- ListEmptyComponent,
1105
- ) ? (
1106
- ListEmptyComponent
1107
- ) : (
1108
- // $FlowFixMe
1109
- <ListEmptyComponent />
1110
- )): any);
1111
- cells.push(
1112
- React.cloneElement(element, {
1113
- key: '$empty',
1114
- onLayout: event => {
1115
- this._onLayoutEmpty(event);
1116
- if (element.props.onLayout) {
1117
- element.props.onLayout(event);
1118
- }
1119
- },
1120
- style: StyleSheet.compose(
1121
- inversionStyle,
1122
- element.props.style,
1123
- ),
1124
- }),
1125
- );
1126
- }
1127
- if (ListFooterComponent) {
1128
- const element = React.isValidElement(ListFooterComponent) ? (
1129
- ListFooterComponent
1130
- ) : (
1131
- // $FlowFixMe
1132
- <ListFooterComponent />
1133
- );
1134
- cells.push(
1135
- <VirtualizedCellWrapper
1136
- cellKey={this._getFooterCellKey()}
1137
- key="$footer">
1138
- <View
1139
- onLayout={this._onLayoutFooter}
1140
- style={StyleSheet.compose(
1141
- inversionStyle,
1142
- this.props.ListFooterComponentStyle,
1143
- )}>
1144
- {
1145
- // $FlowFixMe - Typing ReactNativeComponent revealed errors
1146
- element
1147
- }
1148
- </View>
1149
- </VirtualizedCellWrapper>,
1150
- );
1151
- }
1152
- const scrollProps = {
1153
- ...this.props,
1154
- onContentSizeChange: this._onContentSizeChange,
1155
- onLayout: this._onLayout,
1156
- onScroll: this._onScroll,
1157
- onScrollBeginDrag: this._onScrollBeginDrag,
1158
- onScrollEndDrag: this._onScrollEndDrag,
1159
- onMomentumScrollEnd: this._onMomentumScrollEnd,
1160
- scrollEventThrottle: this.props.scrollEventThrottle, // TODO: Android support
1161
- invertStickyHeaders:
1162
- this.props.invertStickyHeaders !== undefined
1163
- ? this.props.invertStickyHeaders
1164
- : this.props.inverted,
1165
- stickyHeaderIndices,
1166
- style: inversionStyle
1167
- ? [inversionStyle, this.props.style]
1168
- : this.props.style,
1169
- };
1170
-
1171
- this._hasMore =
1172
- this.state.last < this.props.getItemCount(this.props.data) - 1;
1173
-
1174
- const innerRet = React.cloneElement(
1175
- (this.props.renderScrollComponent || this._defaultRenderScrollComponent)(
1176
- scrollProps,
1177
- ),
1178
- {
1179
- ref: this._captureScrollRef,
1180
- },
1181
- cells,
1182
- );
1183
- let ret = innerRet;
1184
- if (__DEV__) {
1185
- ret = (
1186
- <ScrollView.Context.Consumer>
1187
- {scrollContext => {
1188
- if (
1189
- scrollContext != null &&
1190
- !scrollContext.horizontal === !this.props.horizontal &&
1191
- !this._hasWarned.nesting &&
1192
- this.context.virtualizedList == null
1193
- ) {
1194
- // TODO (T46547044): use React.warn once 16.9 is sync'd: https://github.com/facebook/react/pull/15170
1195
- console.warn(
1196
- 'VirtualizedLists should never be nested inside plain ScrollViews with the same ' +
1197
- 'orientation - use another VirtualizedList-backed container instead.',
1198
- );
1199
- this._hasWarned.nesting = true;
1200
- }
1201
- return innerRet;
1202
- }}
1203
- </ScrollView.Context.Consumer>
1204
- );
1205
- }
1206
- if (this.props.debug) {
1207
- return (
1208
- <View style={styles.debug}>
1209
- {ret}
1210
- {this._renderDebugOverlay()}
1211
- </View>
1212
- );
1213
- } else {
1214
- return ret;
1215
- }
1216
- }
1217
-
1218
- componentDidUpdate(prevProps: Props) {
1219
- const {data, extraData} = this.props;
1220
- if (data !== prevProps.data || extraData !== prevProps.extraData) {
1221
- this._hasDataChangedSinceEndReached = true;
1222
-
1223
- // clear the viewableIndices cache to also trigger
1224
- // the onViewableItemsChanged callback with the new data
1225
- this._viewabilityTuples.forEach(tuple => {
1226
- tuple.viewabilityHelper.resetViewableIndices();
1227
- });
1228
- }
1229
- // The `this._hiPriInProgress` is guaranteeing a hiPri cell update will only happen
1230
- // once per fiber update. The `_scheduleCellsToRenderUpdate` will set it to true
1231
- // if a hiPri update needs to perform. If `componentDidUpdate` is triggered with
1232
- // `this._hiPriInProgress=true`, means it's triggered by the hiPri update. The
1233
- // `_scheduleCellsToRenderUpdate` will check this condition and not perform
1234
- // another hiPri update.
1235
- const hiPriInProgress = this._hiPriInProgress;
1236
- this._scheduleCellsToRenderUpdate();
1237
- // Make sure setting `this._hiPriInProgress` back to false after `componentDidUpdate`
1238
- // is triggered with `this._hiPriInProgress = true`
1239
- if (hiPriInProgress) {
1240
- this._hiPriInProgress = false;
1241
- }
1242
- }
1243
-
1244
- _averageCellLength = 0;
1245
- // Maps a cell key to the set of keys for all outermost child lists within that cell
1246
- _cellKeysToChildListKeys: Map<string, Set<string>> = new Map();
1247
- _cellRefs = {};
1248
- _fillRateHelper: FillRateHelper;
1249
- _frames = {};
1250
- _footerLength = 0;
1251
- _hasDataChangedSinceEndReached = true;
1252
- _hasDoneInitialScroll = false;
1253
- _hasInteracted = false;
1254
- _hasMore = false;
1255
- _hasWarned = {};
1256
- _headerLength = 0;
1257
- _hiPriInProgress: boolean = false; // flag to prevent infinite hiPri cell limit update
1258
- _highestMeasuredFrameIndex = 0;
1259
- _indicesToKeys: Map<number, string> = new Map();
1260
- _nestedChildLists: Map<
1261
- string,
1262
- {
1263
- ref: ?VirtualizedList,
1264
- state: ?ChildListState,
1265
- ...
1266
- },
1267
- > = new Map();
1268
- _offsetFromParentVirtualizedList: number = 0;
1269
- _prevParentOffset: number = 0;
1270
- _scrollMetrics = {
1271
- contentLength: 0,
1272
- dOffset: 0,
1273
- dt: 10,
1274
- offset: 0,
1275
- timestamp: 0,
1276
- velocity: 0,
1277
- visibleLength: 0,
1278
- };
1279
- _scrollRef: ?React.ElementRef<any> = null;
1280
- _sentEndForContentLength = 0;
1281
- _totalCellLength = 0;
1282
- _totalCellsMeasured = 0;
1283
- _updateCellsToRenderBatcher: Batchinator;
1284
- _viewabilityTuples: Array<ViewabilityHelperCallbackTuple> = [];
1285
-
1286
- _captureScrollRef = ref => {
1287
- this._scrollRef = ref;
1288
- };
1289
-
1290
- _computeBlankness() {
1291
- this._fillRateHelper.computeBlankness(
1292
- this.props,
1293
- this.state,
1294
- this._scrollMetrics,
1295
- );
1296
- }
1297
-
1298
- _defaultRenderScrollComponent = props => {
1299
- const onRefresh = props.onRefresh;
1300
- if (this._isNestedWithSameOrientation()) {
1301
- // $FlowFixMe - Typing ReactNativeComponent revealed errors
1302
- return <View {...props} />;
1303
- } else if (onRefresh) {
1304
- invariant(
1305
- typeof props.refreshing === 'boolean',
1306
- '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' +
1307
- /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses
1308
- * an error found when Flow v0.111 was deployed. To see the error,
1309
- * delete this comment and run Flow. */
1310
- JSON.stringify(props.refreshing) +
1311
- '`',
1312
- );
1313
- return (
1314
- // $FlowFixMe Invalid prop usage
1315
- <ScrollView
1316
- {...props}
1317
- refreshControl={
1318
- props.refreshControl == null ? (
1319
- <RefreshControl
1320
- refreshing={props.refreshing}
1321
- onRefresh={onRefresh}
1322
- progressViewOffset={props.progressViewOffset}
1323
- />
1324
- ) : (
1325
- props.refreshControl
1326
- )
1327
- }
1328
- />
1329
- );
1330
- } else {
1331
- // $FlowFixMe Invalid prop usage
1332
- return <ScrollView {...props} />;
1333
- }
1334
- };
1335
-
1336
- _onCellLayout(e, cellKey, index) {
1337
- const layout = e.nativeEvent.layout;
1338
- const next = {
1339
- offset: this._selectOffset(layout),
1340
- length: this._selectLength(layout),
1341
- index,
1342
- inLayout: true,
1343
- };
1344
- const curr = this._frames[cellKey];
1345
- if (
1346
- !curr ||
1347
- next.offset !== curr.offset ||
1348
- next.length !== curr.length ||
1349
- index !== curr.index
1350
- ) {
1351
- this._totalCellLength += next.length - (curr ? curr.length : 0);
1352
- this._totalCellsMeasured += curr ? 0 : 1;
1353
- this._averageCellLength =
1354
- this._totalCellLength / this._totalCellsMeasured;
1355
- this._frames[cellKey] = next;
1356
- this._highestMeasuredFrameIndex = Math.max(
1357
- this._highestMeasuredFrameIndex,
1358
- index,
1359
- );
1360
- this._scheduleCellsToRenderUpdate();
1361
- } else {
1362
- this._frames[cellKey].inLayout = true;
1363
- }
1364
-
1365
- this._triggerRemeasureForChildListsInCell(cellKey);
1366
-
1367
- this._computeBlankness();
1368
- this._updateViewableItems(this.props.data);
1369
- }
1370
-
1371
- _onCellUnmount = (cellKey: string) => {
1372
- const curr = this._frames[cellKey];
1373
- if (curr) {
1374
- this._frames[cellKey] = {...curr, inLayout: false};
1375
- }
1376
- };
1377
-
1378
- _triggerRemeasureForChildListsInCell(cellKey: string): void {
1379
- const childListKeys = this._cellKeysToChildListKeys.get(cellKey);
1380
- if (childListKeys) {
1381
- for (let childKey of childListKeys) {
1382
- const childList = this._nestedChildLists.get(childKey);
1383
- childList &&
1384
- childList.ref &&
1385
- childList.ref.measureLayoutRelativeToContainingList();
1386
- }
1387
- }
1388
- }
1389
-
1390
- measureLayoutRelativeToContainingList(): void {
1391
- // TODO (T35574538): findNodeHandle sometimes crashes with "Unable to find
1392
- // node on an unmounted component" during scrolling
1393
- try {
1394
- if (!this._scrollRef) {
1395
- return;
1396
- }
1397
- // We are assuming that getOutermostParentListRef().getScrollRef()
1398
- // is a non-null reference to a ScrollView
1399
- this._scrollRef.measureLayout(
1400
- this.context.virtualizedList
1401
- .getOutermostParentListRef()
1402
- .getScrollRef()
1403
- .getNativeScrollRef(),
1404
- (x, y, width, height) => {
1405
- this._offsetFromParentVirtualizedList = this._selectOffset({x, y});
1406
- this._scrollMetrics.contentLength = this._selectLength({
1407
- width,
1408
- height,
1409
- });
1410
- const scrollMetrics = this._convertParentScrollMetrics(
1411
- this.context.virtualizedList.getScrollMetrics(),
1412
- );
1413
- this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;
1414
- this._scrollMetrics.offset = scrollMetrics.offset;
1415
- },
1416
- error => {
1417
- console.warn(
1418
- "VirtualizedList: Encountered an error while measuring a list's" +
1419
- ' offset from its containing VirtualizedList.',
1420
- );
1421
- },
1422
- );
1423
- } catch (error) {
1424
- console.warn(
1425
- 'measureLayoutRelativeToContainingList threw an error',
1426
- error.stack,
1427
- );
1428
- }
1429
- }
1430
-
1431
- _onLayout = (e: Object) => {
1432
- if (this._isNestedWithSameOrientation()) {
1433
- // Need to adjust our scroll metrics to be relative to our containing
1434
- // VirtualizedList before we can make claims about list item viewability
1435
- this.measureLayoutRelativeToContainingList();
1436
- } else {
1437
- this._scrollMetrics.visibleLength = this._selectLength(
1438
- e.nativeEvent.layout,
1439
- );
1440
- }
1441
- this.props.onLayout && this.props.onLayout(e);
1442
- this._scheduleCellsToRenderUpdate();
1443
- this._maybeCallOnEndReached();
1444
- };
1445
-
1446
- _onLayoutEmpty = e => {
1447
- this.props.onLayout && this.props.onLayout(e);
1448
- };
1449
-
1450
- _getFooterCellKey(): string {
1451
- return this._getCellKey() + '-footer';
1452
- }
1453
-
1454
- _onLayoutFooter = e => {
1455
- this._triggerRemeasureForChildListsInCell(this._getFooterCellKey());
1456
- this._footerLength = this._selectLength(e.nativeEvent.layout);
1457
- };
1458
-
1459
- _onLayoutHeader = e => {
1460
- this._headerLength = this._selectLength(e.nativeEvent.layout);
1461
- };
1462
-
1463
- _renderDebugOverlay() {
1464
- const normalize =
1465
- this._scrollMetrics.visibleLength /
1466
- (this._scrollMetrics.contentLength || 1);
1467
- const framesInLayout = [];
1468
- const itemCount = this.props.getItemCount(this.props.data);
1469
- for (let ii = 0; ii < itemCount; ii++) {
1470
- const frame = this._getFrameMetricsApprox(ii);
1471
- /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an
1472
- * error found when Flow v0.68 was deployed. To see the error delete this
1473
- * comment and run Flow. */
1474
- if (frame.inLayout) {
1475
- framesInLayout.push(frame);
1476
- }
1477
- }
1478
- const windowTop = this._getFrameMetricsApprox(this.state.first).offset;
1479
- const frameLast = this._getFrameMetricsApprox(this.state.last);
1480
- const windowLen = frameLast.offset + frameLast.length - windowTop;
1481
- const visTop = this._scrollMetrics.offset;
1482
- const visLen = this._scrollMetrics.visibleLength;
1483
-
1484
- return (
1485
- <View style={[styles.debugOverlayBase, styles.debugOverlay]}>
1486
- {framesInLayout.map((f, ii) => (
1487
- <View
1488
- key={'f' + ii}
1489
- style={[
1490
- styles.debugOverlayBase,
1491
- styles.debugOverlayFrame,
1492
- {
1493
- top: f.offset * normalize,
1494
- height: f.length * normalize,
1495
- },
1496
- ]}
1497
- />
1498
- ))}
1499
- <View
1500
- style={[
1501
- styles.debugOverlayBase,
1502
- styles.debugOverlayFrameLast,
1503
- {
1504
- top: windowTop * normalize,
1505
- height: windowLen * normalize,
1506
- },
1507
- ]}
1508
- />
1509
- <View
1510
- style={[
1511
- styles.debugOverlayBase,
1512
- styles.debugOverlayFrameVis,
1513
- {
1514
- top: visTop * normalize,
1515
- height: visLen * normalize,
1516
- },
1517
- ]}
1518
- />
1519
- </View>
1520
- );
1521
- }
1522
-
1523
- _selectLength(
1524
- metrics: $ReadOnly<{
1525
- height: number,
1526
- width: number,
1527
- ...
1528
- }>,
1529
- ): number {
1530
- return !this.props.horizontal ? metrics.height : metrics.width;
1531
- }
1532
-
1533
- _selectOffset(
1534
- metrics: $ReadOnly<{
1535
- x: number,
1536
- y: number,
1537
- ...
1538
- }>,
1539
- ): number {
1540
- return !this.props.horizontal ? metrics.y : metrics.x;
1541
- }
1542
-
1543
- _maybeCallOnEndReached() {
1544
- const {
1545
- data,
1546
- getItemCount,
1547
- onEndReached,
1548
- onEndReachedThreshold,
1549
- } = this.props;
1550
- const {contentLength, visibleLength, offset} = this._scrollMetrics;
1551
- const distanceFromEnd = contentLength - visibleLength - offset;
1552
- if (
1553
- onEndReached &&
1554
- this.state.last === getItemCount(data) - 1 &&
1555
- /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an
1556
- * error found when Flow v0.63 was deployed. To see the error delete this
1557
- * comment and run Flow. */
1558
- distanceFromEnd < onEndReachedThreshold * visibleLength &&
1559
- (this._hasDataChangedSinceEndReached ||
1560
- this._scrollMetrics.contentLength !== this._sentEndForContentLength)
1561
- ) {
1562
- // Only call onEndReached once for a given dataset + content length.
1563
- this._hasDataChangedSinceEndReached = false;
1564
- this._sentEndForContentLength = this._scrollMetrics.contentLength;
1565
- onEndReached({distanceFromEnd});
1566
- }
1567
- }
1568
-
1569
- _onContentSizeChange = (width: number, height: number) => {
1570
- if (
1571
- width > 0 &&
1572
- height > 0 &&
1573
- this.props.initialScrollIndex != null &&
1574
- this.props.initialScrollIndex > 0 &&
1575
- !this._hasDoneInitialScroll
1576
- ) {
1577
- this.scrollToIndex({
1578
- animated: false,
1579
- index: this.props.initialScrollIndex,
1580
- });
1581
- this._hasDoneInitialScroll = true;
1582
- }
1583
- if (this.props.onContentSizeChange) {
1584
- this.props.onContentSizeChange(width, height);
1585
- }
1586
- this._scrollMetrics.contentLength = this._selectLength({height, width});
1587
- this._scheduleCellsToRenderUpdate();
1588
- this._maybeCallOnEndReached();
1589
- };
1590
-
1591
- /* Translates metrics from a scroll event in a parent VirtualizedList into
1592
- * coordinates relative to the child list.
1593
- */
1594
- _convertParentScrollMetrics = (metrics: {
1595
- visibleLength: number,
1596
- offset: number,
1597
- ...
1598
- }) => {
1599
- // Offset of the top of the nested list relative to the top of its parent's viewport
1600
- const offset = metrics.offset - this._offsetFromParentVirtualizedList;
1601
- // Child's visible length is the same as its parent's
1602
- const visibleLength = metrics.visibleLength;
1603
- const dOffset = offset - this._scrollMetrics.offset;
1604
- const contentLength = this._scrollMetrics.contentLength;
1605
-
1606
- return {
1607
- visibleLength,
1608
- contentLength,
1609
- offset,
1610
- dOffset,
1611
- };
1612
- };
1613
-
1614
- _onScroll = (e: Object) => {
1615
- this._nestedChildLists.forEach(childList => {
1616
- childList.ref && childList.ref._onScroll(e);
1617
- });
1618
- if (this.props.onScroll) {
1619
- this.props.onScroll(e);
1620
- }
1621
- const timestamp = e.timeStamp;
1622
- let visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);
1623
- let contentLength = this._selectLength(e.nativeEvent.contentSize);
1624
- let offset = this._selectOffset(e.nativeEvent.contentOffset);
1625
- let dOffset = offset - this._scrollMetrics.offset;
1626
-
1627
- if (this._isNestedWithSameOrientation()) {
1628
- if (this._scrollMetrics.contentLength === 0) {
1629
- // Ignore scroll events until onLayout has been called and we
1630
- // know our offset from our offset from our parent
1631
- return;
1632
- }
1633
- ({
1634
- visibleLength,
1635
- contentLength,
1636
- offset,
1637
- dOffset,
1638
- } = this._convertParentScrollMetrics({
1639
- visibleLength,
1640
- offset,
1641
- }));
1642
- }
1643
-
1644
- const dt = this._scrollMetrics.timestamp
1645
- ? Math.max(1, timestamp - this._scrollMetrics.timestamp)
1646
- : 1;
1647
- const velocity = dOffset / dt;
1648
-
1649
- if (
1650
- dt > 500 &&
1651
- this._scrollMetrics.dt > 500 &&
1652
- contentLength > 5 * visibleLength &&
1653
- !this._hasWarned.perf
1654
- ) {
1655
- infoLog(
1656
- 'VirtualizedList: You have a large list that is slow to update - make sure your ' +
1657
- 'renderItem function renders components that follow React performance best practices ' +
1658
- 'like PureComponent, shouldComponentUpdate, etc.',
1659
- {dt, prevDt: this._scrollMetrics.dt, contentLength},
1660
- );
1661
- this._hasWarned.perf = true;
1662
- }
1663
- this._scrollMetrics = {
1664
- contentLength,
1665
- dt,
1666
- dOffset,
1667
- offset,
1668
- timestamp,
1669
- velocity,
1670
- visibleLength,
1671
- };
1672
- this._updateViewableItems(this.props.data);
1673
- if (!this.props) {
1674
- return;
1675
- }
1676
- this._maybeCallOnEndReached();
1677
- if (velocity !== 0) {
1678
- this._fillRateHelper.activate();
1679
- }
1680
- this._computeBlankness();
1681
- this._scheduleCellsToRenderUpdate();
1682
- };
1683
-
1684
- _scheduleCellsToRenderUpdate() {
1685
- const {first, last} = this.state;
1686
- const {offset, visibleLength, velocity} = this._scrollMetrics;
1687
- const itemCount = this.props.getItemCount(this.props.data);
1688
- let hiPri = false;
1689
- const scrollingThreshold =
1690
- /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an
1691
- * error found when Flow v0.63 was deployed. To see the error delete
1692
- * this comment and run Flow. */
1693
- (this.props.onEndReachedThreshold * visibleLength) / 2;
1694
- // Mark as high priority if we're close to the start of the first item
1695
- // But only if there are items before the first rendered item
1696
- if (first > 0) {
1697
- const distTop = offset - this._getFrameMetricsApprox(first).offset;
1698
- hiPri =
1699
- hiPri || distTop < 0 || (velocity < -2 && distTop < scrollingThreshold);
1700
- }
1701
- // Mark as high priority if we're close to the end of the last item
1702
- // But only if there are items after the last rendered item
1703
- if (last < itemCount - 1) {
1704
- const distBottom =
1705
- this._getFrameMetricsApprox(last).offset - (offset + visibleLength);
1706
- hiPri =
1707
- hiPri ||
1708
- distBottom < 0 ||
1709
- (velocity > 2 && distBottom < scrollingThreshold);
1710
- }
1711
- // Only trigger high-priority updates if we've actually rendered cells,
1712
- // and with that size estimate, accurately compute how many cells we should render.
1713
- // Otherwise, it would just render as many cells as it can (of zero dimension),
1714
- // each time through attempting to render more (limited by maxToRenderPerBatch),
1715
- // starving the renderer from actually laying out the objects and computing _averageCellLength.
1716
- // If this is triggered in an `componentDidUpdate` followed by a hiPri cellToRenderUpdate
1717
- // We shouldn't do another hipri cellToRenderUpdate
1718
- if (
1719
- hiPri &&
1720
- (this._averageCellLength || this.props.getItemLayout) &&
1721
- !this._hiPriInProgress
1722
- ) {
1723
- this._hiPriInProgress = true;
1724
- // Don't worry about interactions when scrolling quickly; focus on filling content as fast
1725
- // as possible.
1726
- this._updateCellsToRenderBatcher.dispose({abort: true});
1727
- this._updateCellsToRender();
1728
- return;
1729
- } else {
1730
- this._updateCellsToRenderBatcher.schedule();
1731
- }
1732
- }
1733
-
1734
- _onScrollBeginDrag = (e): void => {
1735
- this._nestedChildLists.forEach(childList => {
1736
- childList.ref && childList.ref._onScrollBeginDrag(e);
1737
- });
1738
- this._viewabilityTuples.forEach(tuple => {
1739
- tuple.viewabilityHelper.recordInteraction();
1740
- });
1741
- this._hasInteracted = true;
1742
- this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);
1743
- };
1744
-
1745
- _onScrollEndDrag = (e): void => {
1746
- const {velocity} = e.nativeEvent;
1747
- if (velocity) {
1748
- this._scrollMetrics.velocity = this._selectOffset(velocity);
1749
- }
1750
- this._computeBlankness();
1751
- this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);
1752
- };
1753
-
1754
- _onMomentumScrollEnd = (e): void => {
1755
- this._scrollMetrics.velocity = 0;
1756
- this._computeBlankness();
1757
- this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);
1758
- };
1759
-
1760
- _updateCellsToRender = () => {
1761
- const {data, getItemCount, onEndReachedThreshold} = this.props;
1762
- const isVirtualizationDisabled = this._isVirtualizationDisabled();
1763
- this._updateViewableItems(data);
1764
- if (!data) {
1765
- return;
1766
- }
1767
- this.setState(state => {
1768
- let newState;
1769
- const {contentLength, offset, visibleLength} = this._scrollMetrics;
1770
- if (!isVirtualizationDisabled) {
1771
- // If we run this with bogus data, we'll force-render window {first: 0, last: 0},
1772
- // and wipe out the initialNumToRender rendered elements.
1773
- // So let's wait until the scroll view metrics have been set up. And until then,
1774
- // we will trust the initialNumToRender suggestion
1775
- if (visibleLength > 0 && contentLength > 0) {
1776
- // If we have a non-zero initialScrollIndex and run this before we've scrolled,
1777
- // we'll wipe out the initialNumToRender rendered elements starting at initialScrollIndex.
1778
- // So let's wait until we've scrolled the view to the right place. And until then,
1779
- // we will trust the initialScrollIndex suggestion.
1780
- if (!this.props.initialScrollIndex || this._scrollMetrics.offset) {
1781
- newState = computeWindowedRenderLimits(
1782
- this.props,
1783
- state,
1784
- this._getFrameMetricsApprox,
1785
- this._scrollMetrics,
1786
- );
1787
- }
1788
- }
1789
- } else {
1790
- const distanceFromEnd = contentLength - visibleLength - offset;
1791
- const renderAhead =
1792
- /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses
1793
- * an error found when Flow v0.63 was deployed. To see the error
1794
- * delete this comment and run Flow. */
1795
- distanceFromEnd < onEndReachedThreshold * visibleLength
1796
- ? this.props.maxToRenderPerBatch
1797
- : 0;
1798
- newState = {
1799
- first: 0,
1800
- last: Math.min(state.last + renderAhead, getItemCount(data) - 1),
1801
- };
1802
- }
1803
- if (newState && this._nestedChildLists.size > 0) {
1804
- const newFirst = newState.first;
1805
- const newLast = newState.last;
1806
- // If some cell in the new state has a child list in it, we should only render
1807
- // up through that item, so that we give that list a chance to render.
1808
- // Otherwise there's churn from multiple child lists mounting and un-mounting
1809
- // their items.
1810
- for (let ii = newFirst; ii <= newLast; ii++) {
1811
- const cellKeyForIndex = this._indicesToKeys.get(ii);
1812
- const childListKeys =
1813
- cellKeyForIndex &&
1814
- this._cellKeysToChildListKeys.get(cellKeyForIndex);
1815
- if (!childListKeys) {
1816
- continue;
1817
- }
1818
- let someChildHasMore = false;
1819
- // For each cell, need to check whether any child list in it has more elements to render
1820
- for (let childKey of childListKeys) {
1821
- const childList = this._nestedChildLists.get(childKey);
1822
- if (childList && childList.ref && childList.ref.hasMore()) {
1823
- someChildHasMore = true;
1824
- break;
1825
- }
1826
- }
1827
- if (someChildHasMore) {
1828
- newState.last = ii;
1829
- break;
1830
- }
1831
- }
1832
- }
1833
- if (
1834
- newState != null &&
1835
- newState.first === state.first &&
1836
- newState.last === state.last
1837
- ) {
1838
- newState = null;
1839
- }
1840
- return newState;
1841
- });
1842
- };
1843
-
1844
- _createViewToken = (index: number, isViewable: boolean) => {
1845
- const {data, getItem, keyExtractor} = this.props;
1846
- const item = getItem(data, index);
1847
- return {index, item, key: keyExtractor(item, index), isViewable};
1848
- };
1849
-
1850
- _getFrameMetricsApprox = (
1851
- index: number,
1852
- ): {
1853
- length: number,
1854
- offset: number,
1855
- ...
1856
- } => {
1857
- const frame = this._getFrameMetrics(index);
1858
- if (frame && frame.index === index) {
1859
- // check for invalid frames due to row re-ordering
1860
- return frame;
1861
- } else {
1862
- const {getItemLayout} = this.props;
1863
- invariant(
1864
- !getItemLayout,
1865
- 'Should not have to estimate frames when a measurement metrics function is provided',
1866
- );
1867
- return {
1868
- length: this._averageCellLength,
1869
- offset: this._averageCellLength * index,
1870
- };
1871
- }
1872
- };
1873
-
1874
- _getFrameMetrics = (
1875
- index: number,
1876
- ): ?{
1877
- length: number,
1878
- offset: number,
1879
- index: number,
1880
- inLayout?: boolean,
1881
- ...
1882
- } => {
1883
- const {
1884
- data,
1885
- getItem,
1886
- getItemCount,
1887
- getItemLayout,
1888
- keyExtractor,
1889
- } = this.props;
1890
- invariant(
1891
- getItemCount(data) > index,
1892
- 'Tried to get frame for out of range index ' + index,
1893
- );
1894
- const item = getItem(data, index);
1895
- let frame = item && this._frames[keyExtractor(item, index)];
1896
- if (!frame || frame.index !== index) {
1897
- if (getItemLayout) {
1898
- frame = getItemLayout(data, index);
1899
- if (__DEV__) {
1900
- const frameType = PropTypes.shape({
1901
- length: PropTypes.number.isRequired,
1902
- offset: PropTypes.number.isRequired,
1903
- index: PropTypes.number.isRequired,
1904
- }).isRequired;
1905
- PropTypes.checkPropTypes(
1906
- {frame: frameType},
1907
- {frame},
1908
- 'frame',
1909
- 'VirtualizedList.getItemLayout',
1910
- );
1911
- }
1912
- }
1913
- }
1914
- /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an
1915
- * error found when Flow v0.63 was deployed. To see the error delete this
1916
- * comment and run Flow. */
1917
- return frame;
1918
- };
1919
-
1920
- _updateViewableItems(data: any) {
1921
- const {getItemCount} = this.props;
1922
-
1923
- this._viewabilityTuples.forEach(tuple => {
1924
- tuple.viewabilityHelper.onUpdate(
1925
- getItemCount(data),
1926
- this._scrollMetrics.offset,
1927
- this._scrollMetrics.visibleLength,
1928
- this._getFrameMetrics,
1929
- this._createViewToken,
1930
- tuple.onViewableItemsChanged,
1931
- this.state,
1932
- );
1933
- });
1934
- }
1935
- }
1936
-
1937
- type CellRendererProps = {
1938
- CellRendererComponent?: ?React.ComponentType<any>,
1939
- ItemSeparatorComponent: ?React.ComponentType<*>,
1940
- cellKey: string,
1941
- fillRateHelper: FillRateHelper,
1942
- horizontal: ?boolean,
1943
- index: number,
1944
- inversionStyle: ViewStyleProp,
1945
- item: Item,
1946
- // This is extracted by ScrollViewStickyHeader
1947
- onLayout: (event: Object) => void,
1948
- onUnmount: (cellKey: string) => void,
1949
- onUpdateSeparators: (cellKeys: Array<?string>, props: Object) => void,
1950
- parentProps: {
1951
- // e.g. height, y,
1952
- getItemLayout?: (
1953
- data: any,
1954
- index: number,
1955
- ) => {
1956
- length: number,
1957
- offset: number,
1958
- index: number,
1959
- ...
1960
- },
1961
- renderItem?: ?RenderItemType<Item>,
1962
- ListItemComponent?: ?(React.ComponentType<any> | React.Element<any>),
1963
- ...
1964
- },
1965
- prevCellKey: ?string,
1966
- ...
1967
- };
1968
-
1969
- type CellRendererState = {
1970
- separatorProps: $ReadOnly<{|
1971
- highlighted: boolean,
1972
- leadingItem: ?Item,
1973
- |}>,
1974
- ...
1975
- };
1976
-
1977
- class CellRenderer extends React.Component<
1978
- CellRendererProps,
1979
- CellRendererState,
1980
- > {
1981
- state = {
1982
- separatorProps: {
1983
- highlighted: false,
1984
- leadingItem: this.props.item,
1985
- },
1986
- };
1987
-
1988
- static childContextTypes = {
1989
- virtualizedCell: PropTypes.shape({
1990
- cellKey: PropTypes.string,
1991
- }),
1992
- };
1993
-
1994
- static getDerivedStateFromProps(
1995
- props: CellRendererProps,
1996
- prevState: CellRendererState,
1997
- ): ?CellRendererState {
1998
- return {
1999
- separatorProps: {
2000
- ...prevState.separatorProps,
2001
- leadingItem: props.item,
2002
- },
2003
- };
2004
- }
2005
-
2006
- getChildContext() {
2007
- return {
2008
- virtualizedCell: {
2009
- cellKey: this.props.cellKey,
2010
- },
2011
- };
2012
- }
2013
-
2014
- // TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not
2015
- // reused by SectionList and we can keep VirtualizedList simpler.
2016
- _separators = {
2017
- highlight: () => {
2018
- const {cellKey, prevCellKey} = this.props;
2019
- this.props.onUpdateSeparators([cellKey, prevCellKey], {
2020
- highlighted: true,
2021
- });
2022
- },
2023
- unhighlight: () => {
2024
- const {cellKey, prevCellKey} = this.props;
2025
- this.props.onUpdateSeparators([cellKey, prevCellKey], {
2026
- highlighted: false,
2027
- });
2028
- },
2029
- updateProps: (select: 'leading' | 'trailing', newProps: Object) => {
2030
- const {cellKey, prevCellKey} = this.props;
2031
- this.props.onUpdateSeparators(
2032
- [select === 'leading' ? prevCellKey : cellKey],
2033
- newProps,
2034
- );
2035
- },
2036
- };
2037
-
2038
- updateSeparatorProps(newProps: Object) {
2039
- this.setState(state => ({
2040
- separatorProps: {...state.separatorProps, ...newProps},
2041
- }));
2042
- }
2043
-
2044
- componentWillUnmount() {
2045
- this.props.onUnmount(this.props.cellKey);
2046
- }
2047
-
2048
- _renderElement(renderItem, ListItemComponent, item, index) {
2049
- if (renderItem && ListItemComponent) {
2050
- console.warn(
2051
- 'VirtualizedList: Both ListItemComponent and renderItem props are present. ListItemComponent will take' +
2052
- ' precedence over renderItem.',
2053
- );
2054
- }
2055
-
2056
- if (ListItemComponent) {
2057
- /* $FlowFixMe(>=0.108.0 site=react_native_fb) This comment suppresses an
2058
- * error found when Flow v0.108 was deployed. To see the error, delete
2059
- * this comment and run Flow. */
2060
- return React.createElement(ListItemComponent, {
2061
- item,
2062
- index,
2063
- separators: this._separators,
2064
- });
2065
- }
2066
-
2067
- if (renderItem) {
2068
- return renderItem({
2069
- item,
2070
- index,
2071
- separators: this._separators,
2072
- });
2073
- }
2074
-
2075
- invariant(
2076
- false,
2077
- 'VirtualizedList: Either ListItemComponent or renderItem props are required but none were found.',
2078
- );
2079
- }
2080
-
2081
- render() {
2082
- const {
2083
- CellRendererComponent,
2084
- ItemSeparatorComponent,
2085
- fillRateHelper,
2086
- horizontal,
2087
- item,
2088
- index,
2089
- inversionStyle,
2090
- parentProps,
2091
- } = this.props;
2092
- const {renderItem, getItemLayout, ListItemComponent} = parentProps;
2093
- const element = this._renderElement(
2094
- renderItem,
2095
- ListItemComponent,
2096
- item,
2097
- index,
2098
- );
2099
-
2100
- const onLayout =
2101
- /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an
2102
- * error found when Flow v0.68 was deployed. To see the error delete this
2103
- * comment and run Flow. */
2104
- getItemLayout && !parentProps.debug && !fillRateHelper.enabled()
2105
- ? undefined
2106
- : this.props.onLayout;
2107
- // NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and
2108
- // called explicitly by `ScrollViewStickyHeader`.
2109
- const itemSeparator = ItemSeparatorComponent && (
2110
- <ItemSeparatorComponent {...this.state.separatorProps} />
2111
- );
2112
- const cellStyle = inversionStyle
2113
- ? horizontal
2114
- ? [styles.rowReverse, inversionStyle]
2115
- : [styles.columnReverse, inversionStyle]
2116
- : horizontal
2117
- ? [styles.row, inversionStyle]
2118
- : inversionStyle;
2119
- if (!CellRendererComponent) {
2120
- return (
2121
- /* $FlowFixMe(>=0.89.0 site=react_native_fb) This comment suppresses an
2122
- * error found when Flow v0.89 was deployed. To see the error, delete
2123
- * this comment and run Flow. */
2124
- <View style={cellStyle} onLayout={onLayout}>
2125
- {element}
2126
- {itemSeparator}
2127
- </View>
2128
- );
2129
- }
2130
- return (
2131
- <CellRendererComponent
2132
- {...this.props}
2133
- style={cellStyle}
2134
- onLayout={onLayout}>
2135
- {element}
2136
- {itemSeparator}
2137
- </CellRendererComponent>
2138
- );
2139
- }
2140
- }
2141
-
2142
- class VirtualizedCellWrapper extends React.Component<{
2143
- cellKey: string,
2144
- children: React.Node,
2145
- ...
2146
- }> {
2147
- static childContextTypes = {
2148
- virtualizedCell: PropTypes.shape({
2149
- cellKey: PropTypes.string,
2150
- }),
2151
- };
2152
-
2153
- getChildContext() {
2154
- return {
2155
- virtualizedCell: {
2156
- cellKey: this.props.cellKey,
2157
- },
2158
- };
2159
- }
2160
-
2161
- render() {
2162
- return this.props.children;
2163
- }
2164
- }
2165
-
2166
- function describeNestedLists(childList: {
2167
- +cellKey: string,
2168
- +key: string,
2169
- +ref: VirtualizedList,
2170
- +parentDebugInfo: ListDebugInfo,
2171
- +horizontal: boolean,
2172
- ...
2173
- }) {
2174
- let trace =
2175
- 'VirtualizedList trace:\n' +
2176
- ` Child (${childList.horizontal ? 'horizontal' : 'vertical'}):\n` +
2177
- ` listKey: ${childList.key}\n` +
2178
- ` cellKey: ${childList.cellKey}`;
2179
-
2180
- let debugInfo = childList.parentDebugInfo;
2181
- while (debugInfo) {
2182
- trace +=
2183
- `\n Parent (${debugInfo.horizontal ? 'horizontal' : 'vertical'}):\n` +
2184
- ` listKey: ${debugInfo.listKey}\n` +
2185
- ` cellKey: ${debugInfo.cellKey}`;
2186
- debugInfo = debugInfo.parent;
2187
- }
2188
- return trace;
2189
- }
2190
-
2191
- const styles = StyleSheet.create({
2192
- verticallyInverted: {
2193
- transform: [{scaleY: -1}],
2194
- },
2195
- horizontallyInverted: {
2196
- transform: [{scaleX: -1}],
2197
- },
2198
- row: {
2199
- flexDirection: 'row',
2200
- },
2201
- rowReverse: {
2202
- flexDirection: 'row-reverse',
2203
- },
2204
- columnReverse: {
2205
- flexDirection: 'column-reverse',
2206
- },
2207
- debug: {
2208
- flex: 1,
2209
- },
2210
- debugOverlayBase: {
2211
- position: 'absolute',
2212
- top: 0,
2213
- right: 0,
2214
- },
2215
- debugOverlay: {
2216
- bottom: 0,
2217
- width: 20,
2218
- borderColor: 'blue',
2219
- borderWidth: 1,
2220
- },
2221
- debugOverlayFrame: {
2222
- left: 0,
2223
- backgroundColor: 'orange',
2224
- },
2225
- debugOverlayFrameLast: {
2226
- left: 0,
2227
- borderColor: 'green',
2228
- borderWidth: 2,
2229
- },
2230
- debugOverlayFrameVis: {
2231
- left: 0,
2232
- borderColor: 'red',
2233
- borderWidth: 2,
2234
- },
2235
- });
15
+ const VirtualizedList: VirtualizedListType =
16
+ require('@react-native/virtualized-lists').VirtualizedList;
2236
17
 
18
+ export type {
19
+ RenderItemProps,
20
+ RenderItemType,
21
+ Separators,
22
+ } from '@react-native/virtualized-lists';
2237
23
  module.exports = VirtualizedList;