@office-iss/react-native-win32 0.0.0-canary.29 → 0.0.0-canary.290

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 (1476) hide show
  1. package/.eslintignore +5 -2
  2. package/.eslintrc.js +27 -2
  3. package/.flowconfig +81 -39
  4. package/CHANGELOG.json +5979 -1
  5. package/CHANGELOG.md +2381 -4
  6. package/IntegrationTests/AccessibilityManagerTest.js +23 -21
  7. package/IntegrationTests/AppEventsTest.js +48 -33
  8. package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +21 -18
  9. package/IntegrationTests/ImageCachePolicyTest.js +65 -82
  10. package/IntegrationTests/ImageSnapshotTest.js +18 -21
  11. package/IntegrationTests/IntegrationTestHarnessTest.js +35 -50
  12. package/IntegrationTests/IntegrationTestsApp.js +24 -24
  13. package/IntegrationTests/LayoutEventsTest.js +27 -20
  14. package/IntegrationTests/LoggingTestModule.js +11 -12
  15. package/IntegrationTests/PromiseTest.js +52 -43
  16. package/IntegrationTests/SimpleSnapshotTest.js +20 -27
  17. package/IntegrationTests/SyncMethodTest.js +10 -14
  18. package/IntegrationTests/TimersTest.js +23 -8
  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 +87 -26
  24. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +5 -43
  25. package/Libraries/Alert/Alert.d.ts +94 -0
  26. package/Libraries/Alert/Alert.js +66 -19
  27. package/Libraries/Alert/Alert.win32.js +37 -12
  28. package/Libraries/Alert/NativeAlertManager.js +5 -26
  29. package/Libraries/Alert/RCTAlertManager.android.js +3 -5
  30. package/Libraries/Alert/RCTAlertManager.ios.js +3 -4
  31. package/Libraries/Alert/RCTAlertManager.js.flow +18 -0
  32. package/Libraries/Animated/Animated.d.ts +626 -0
  33. package/Libraries/Animated/Animated.js +19 -0
  34. package/Libraries/Animated/Animated.js.flow +13 -0
  35. package/Libraries/Animated/AnimatedEvent.js +256 -0
  36. package/Libraries/Animated/AnimatedExports.js +47 -0
  37. package/Libraries/Animated/AnimatedExports.js.flow +60 -0
  38. package/Libraries/Animated/AnimatedImplementation.js +754 -0
  39. package/Libraries/Animated/AnimatedMock.js +195 -0
  40. package/Libraries/Animated/AnimatedPlatformConfig.js +13 -0
  41. package/Libraries/Animated/Easing.d.ts +37 -0
  42. package/Libraries/Animated/Easing.js +248 -0
  43. package/Libraries/Animated/NativeAnimatedAllowlist.js +122 -0
  44. package/Libraries/Animated/NativeAnimatedModule.js +13 -0
  45. package/Libraries/Animated/NativeAnimatedTurboModule.js +13 -0
  46. package/Libraries/Animated/SpringConfig.js +98 -0
  47. package/Libraries/Animated/animations/Animation.js +189 -0
  48. package/Libraries/Animated/animations/DecayAnimation.js +122 -0
  49. package/Libraries/Animated/animations/SpringAnimation.js +373 -0
  50. package/Libraries/Animated/animations/TimingAnimation.js +174 -0
  51. package/Libraries/Animated/bezier.js +164 -0
  52. package/Libraries/Animated/components/AnimatedFlatList.js +20 -0
  53. package/Libraries/Animated/components/AnimatedImage.js +22 -0
  54. package/Libraries/Animated/components/AnimatedScrollView.js +138 -0
  55. package/Libraries/Animated/components/AnimatedSectionList.js +22 -0
  56. package/Libraries/Animated/components/AnimatedText.js +22 -0
  57. package/Libraries/Animated/components/AnimatedView.js +20 -0
  58. package/Libraries/Animated/createAnimatedComponent.js +149 -0
  59. package/Libraries/Animated/nodes/AnimatedAddition.js +71 -0
  60. package/Libraries/Animated/nodes/AnimatedColor.js +323 -0
  61. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +80 -0
  62. package/Libraries/Animated/nodes/AnimatedDivision.js +87 -0
  63. package/Libraries/Animated/nodes/AnimatedInterpolation.js +420 -0
  64. package/Libraries/Animated/nodes/AnimatedModulo.js +66 -0
  65. package/Libraries/Animated/nodes/AnimatedMultiplication.js +70 -0
  66. package/Libraries/Animated/nodes/AnimatedNode.js +180 -0
  67. package/Libraries/Animated/nodes/AnimatedObject.js +170 -0
  68. package/Libraries/Animated/nodes/AnimatedProps.js +305 -0
  69. package/Libraries/Animated/nodes/AnimatedStyle.js +255 -0
  70. package/Libraries/Animated/nodes/AnimatedSubtraction.js +71 -0
  71. package/Libraries/Animated/nodes/AnimatedTracking.js +104 -0
  72. package/Libraries/Animated/nodes/AnimatedTransform.js +202 -0
  73. package/Libraries/Animated/nodes/AnimatedValue.js +374 -0
  74. package/Libraries/Animated/nodes/AnimatedValueXY.js +240 -0
  75. package/Libraries/Animated/nodes/AnimatedWithChildren.js +85 -0
  76. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  77. package/Libraries/Animated/useAnimatedProps.js +18 -0
  78. package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
  79. package/Libraries/Animated/useAnimatedValue.js +23 -0
  80. package/Libraries/AppState/AppState.d.ts +58 -0
  81. package/Libraries/AppState/AppState.js +108 -144
  82. package/Libraries/AppState/NativeAppState.js +5 -22
  83. package/Libraries/BatchedBridge/BatchedBridge.js +6 -4
  84. package/Libraries/BatchedBridge/MessageQueue.js +140 -117
  85. package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
  86. package/Libraries/BatchedBridge/NativeModules.js +40 -23
  87. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +1 -1
  88. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +3 -3
  89. package/Libraries/Blob/Blob.js +24 -7
  90. package/Libraries/Blob/BlobManager.js +9 -11
  91. package/Libraries/Blob/BlobRegistry.js +18 -19
  92. package/Libraries/Blob/BlobTypes.js +1 -1
  93. package/Libraries/Blob/File.js +5 -5
  94. package/Libraries/Blob/FileReader.js +9 -155
  95. package/Libraries/Blob/FileReader_new.js +231 -0
  96. package/Libraries/Blob/FileReader_old.js +186 -0
  97. package/Libraries/Blob/NativeBlobModule.js +5 -18
  98. package/Libraries/Blob/NativeFileReaderModule.js +5 -15
  99. package/Libraries/Blob/URL.js +52 -88
  100. package/Libraries/Blob/URLSearchParams.js +145 -0
  101. package/Libraries/Blob/URLSearchParams.js.flow +28 -0
  102. package/Libraries/Blob/__mocks__/BlobModule.js +1 -1
  103. package/Libraries/Blob/__mocks__/FileReaderModule.js +1 -1
  104. package/Libraries/BugReporting/BugReporting.js +10 -11
  105. package/Libraries/BugReporting/NativeBugReporting.js +5 -12
  106. package/Libraries/BugReporting/dumpReactTree.js +3 -3
  107. package/Libraries/BugReporting/getReactData.js +18 -9
  108. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +177 -0
  109. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +493 -0
  110. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +466 -96
  111. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +5 -19
  112. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +11 -0
  113. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +5 -51
  114. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +36 -0
  115. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +26 -0
  116. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +20 -0
  117. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +36 -0
  118. package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
  119. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +85 -60
  120. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +4 -47
  121. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +36 -36
  122. package/Libraries/Components/Button/ButtonWin32.Props.js +3 -3
  123. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -0
  124. package/Libraries/Components/Button/ButtonWin32.d.ts +19 -19
  125. package/Libraries/Components/Button/ButtonWin32.js +83 -103
  126. package/Libraries/Components/Button/ButtonWin32.js.map +1 -0
  127. package/Libraries/Components/Button.d.ts +42 -0
  128. package/Libraries/Components/Button.js +331 -128
  129. package/Libraries/Components/Button.win32.js +460 -0
  130. package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
  131. package/Libraries/Components/Clipboard/Clipboard.js +4 -6
  132. package/Libraries/Components/Clipboard/NativeClipboard.js +5 -14
  133. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +4 -116
  134. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +49 -126
  135. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
  136. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +67 -2
  137. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +138 -0
  138. package/Libraries/Components/EnterString.win32.d.ts +12 -12
  139. package/Libraries/Components/EnterString.win32.js +82 -114
  140. package/Libraries/Components/EnterString.win32.js.map +1 -0
  141. package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
  142. package/Libraries/Components/Keyboard/Keyboard.js +89 -79
  143. package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
  144. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +129 -63
  145. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +5 -13
  146. package/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +21 -0
  147. package/Libraries/Components/LayoutConformance/LayoutConformance.js +61 -0
  148. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +29 -0
  149. package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
  150. package/Libraries/Components/Pressable/Pressable.js +175 -76
  151. package/Libraries/Components/Pressable/Pressable.win32.js +402 -0
  152. package/Libraries/Components/Pressable/useAndroidRippleForView.js +49 -34
  153. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +32 -66
  154. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
  155. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +14 -2
  156. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +5 -27
  157. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +54 -0
  158. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +4 -77
  159. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +4 -56
  160. package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
  161. package/Libraries/Components/RefreshControl/RefreshControl.js +31 -50
  162. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +6 -7
  163. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +4 -20
  164. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
  165. package/Libraries/Components/SafeAreaView/SafeAreaView.js +12 -39
  166. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +12 -41
  167. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +5 -32
  168. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +36 -21
  169. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +11 -20
  170. package/Libraries/Components/ScrollView/ScrollView.d.ts +910 -0
  171. package/Libraries/Components/ScrollView/ScrollView.js +1152 -470
  172. package/Libraries/Components/ScrollView/ScrollViewCommands.js +7 -7
  173. package/Libraries/Components/ScrollView/ScrollViewContext.js +24 -0
  174. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +166 -18
  175. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +14 -17
  176. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +210 -67
  177. package/Libraries/Components/ScrollView/processDecelerationRate.js +3 -5
  178. package/Libraries/Components/Sound/NativeSoundManager.js +5 -15
  179. package/Libraries/Components/Sound/SoundManager.js +4 -5
  180. package/Libraries/Components/StaticRenderer.js +5 -5
  181. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +5 -27
  182. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +5 -35
  183. package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
  184. package/Libraries/Components/StatusBar/StatusBar.js +92 -86
  185. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +5 -56
  186. package/Libraries/Components/Switch/Switch.d.ts +118 -0
  187. package/Libraries/Components/Switch/Switch.js +206 -148
  188. package/Libraries/Components/Switch/SwitchNativeComponent.js +5 -50
  189. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +266 -98
  190. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
  191. package/Libraries/Components/TextInput/InputAccessoryView.js +32 -25
  192. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +5 -18
  193. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +27 -34
  194. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +22 -42
  195. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +172 -0
  196. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +9 -8
  197. package/Libraries/Components/TextInput/Tests/TextInputTest.js +128 -126
  198. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -0
  199. package/Libraries/Components/TextInput/TextInput.d.ts +1049 -0
  200. package/Libraries/Components/TextInput/TextInput.flow.js +1157 -0
  201. package/Libraries/Components/TextInput/TextInput.js +1236 -534
  202. package/Libraries/Components/TextInput/TextInput.win32.js +2044 -179
  203. package/Libraries/Components/TextInput/TextInputNativeCommands.js +29 -0
  204. package/Libraries/Components/TextInput/TextInputState.js +29 -22
  205. package/Libraries/Components/TextInput/TextInputState.win32.js +42 -31
  206. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +26 -0
  207. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +5 -31
  208. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +12 -11
  209. package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +109 -0
  210. package/Libraries/Components/ToastAndroid/ToastAndroid.js +45 -0
  211. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +17 -11
  212. package/Libraries/Components/Touchable/BoundingDimensions.js +14 -7
  213. package/Libraries/Components/Touchable/PooledClass.js +27 -16
  214. package/Libraries/Components/Touchable/Position.js +10 -6
  215. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +9 -8
  216. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +344 -381
  217. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -0
  218. package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
  219. package/Libraries/Components/Touchable/Touchable.js +131 -142
  220. package/Libraries/Components/Touchable/Touchable.win32.js +978 -0
  221. package/Libraries/Components/Touchable/TouchableBounce.js +66 -60
  222. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +62 -0
  223. package/Libraries/Components/Touchable/TouchableHighlight.js +104 -73
  224. package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +119 -0
  225. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +183 -116
  226. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +304 -51
  227. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +81 -0
  228. package/Libraries/Components/Touchable/TouchableOpacity.js +148 -68
  229. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -34
  230. package/Libraries/Components/Touchable/TouchableWin32.Props.js +3 -3
  231. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -0
  232. package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
  233. package/Libraries/Components/Touchable/TouchableWin32.Types.js +3 -3
  234. package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -0
  235. package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
  236. package/Libraries/Components/Touchable/TouchableWin32.js +507 -529
  237. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -0
  238. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +151 -0
  239. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +235 -141
  240. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +4 -19
  241. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +13 -6
  242. package/Libraries/Components/View/ReactNativeStyleAttributes.js +215 -70
  243. package/Libraries/Components/View/ReactNativeViewAttributes.js +8 -4
  244. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +38 -14
  245. package/Libraries/Components/View/View.d.ts +29 -0
  246. package/Libraries/Components/View/View.js +109 -17
  247. package/Libraries/Components/View/View.win32.js +276 -0
  248. package/Libraries/Components/View/ViewAccessibility.d.ts +566 -0
  249. package/Libraries/Components/View/ViewAccessibility.js +334 -12
  250. package/Libraries/Components/View/ViewAccessibility.win32.js +421 -0
  251. package/Libraries/Components/View/ViewNativeComponent.js +15 -71
  252. package/Libraries/Components/View/ViewPropTypes.d.ts +354 -0
  253. package/Libraries/Components/View/ViewPropTypes.js +187 -177
  254. package/Libraries/Components/View/ViewPropTypes.win32.js +588 -0
  255. package/Libraries/Components/View/ViewWin32.d.ts +30 -12
  256. package/Libraries/Components/View/ViewWin32.js +130 -80
  257. package/Libraries/Core/Devtools/getDevServer.js +10 -11
  258. package/Libraries/Core/Devtools/loadBundleFromServer.js +154 -0
  259. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +155 -0
  260. package/Libraries/Core/Devtools/openFileInEditor.js +8 -6
  261. package/Libraries/Core/Devtools/openURLInBrowser.js +8 -6
  262. package/Libraries/Core/Devtools/parseErrorStack.js +17 -26
  263. package/Libraries/Core/Devtools/parseHermesStack.js +73 -46
  264. package/Libraries/Core/Devtools/symbolicateStackTrace.js +17 -61
  265. package/Libraries/Core/ExceptionsManager.js +135 -117
  266. package/Libraries/Core/ExtendedError.js +33 -0
  267. package/Libraries/Core/InitializeCore.js +14 -6
  268. package/Libraries/Core/NativeExceptionsManager.js +5 -100
  269. package/Libraries/Core/RawEventEmitter.js +39 -0
  270. package/Libraries/Core/ReactFiberErrorDialog.js +47 -38
  271. package/Libraries/Core/ReactNativeVersion.js +11 -7
  272. package/Libraries/Core/ReactNativeVersionCheck.js +10 -9
  273. package/Libraries/Core/ReactNativeVersionCheck.win32.js +10 -9
  274. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +5 -21
  275. package/Libraries/Core/Timers/JSTimers.js +104 -128
  276. package/Libraries/Core/Timers/NativeTiming.js +5 -19
  277. package/Libraries/Core/Timers/immediateShim.js +61 -0
  278. package/Libraries/Core/Timers/queueMicrotask.js +41 -0
  279. package/Libraries/Core/__mocks__/ErrorUtils.js +1 -1
  280. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +19 -0
  281. package/Libraries/Core/checkNativeVersion.js +1 -1
  282. package/Libraries/Core/polyfillPromise.js +19 -3
  283. package/Libraries/Core/registerCallableModule.d.ts +16 -0
  284. package/Libraries/Core/registerCallableModule.js +42 -0
  285. package/Libraries/Core/setUpAlert.js +3 -3
  286. package/Libraries/Core/setUpBatchedBridge.js +21 -27
  287. package/Libraries/Core/setUpDeveloperTools.js +29 -63
  288. package/Libraries/Core/setUpErrorHandling.js +21 -19
  289. package/Libraries/Core/setUpGlobals.js +8 -6
  290. package/Libraries/Core/setUpNavigator.js +8 -7
  291. package/Libraries/Core/setUpPerformance.js +31 -0
  292. package/Libraries/Core/setUpReactDevTools.js +217 -15
  293. package/Libraries/Core/setUpReactRefresh.js +5 -7
  294. package/Libraries/Core/setUpRegeneratorRuntime.js +28 -9
  295. package/Libraries/Core/setUpSegmentFetcher.js +9 -47
  296. package/Libraries/Core/setUpTimers.js +78 -8
  297. package/Libraries/Core/setUpXHR.js +16 -13
  298. package/Libraries/Debugging/DebuggingOverlay.js +110 -0
  299. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  300. package/Libraries/Debugging/DebuggingOverlayRegistry.js +516 -0
  301. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  302. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +63 -0
  303. package/Libraries/EventEmitter/NativeEventEmitter.js +100 -40
  304. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +29 -0
  305. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +29 -68
  306. package/Libraries/EventEmitter/RCTEventEmitter.js +4 -4
  307. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
  308. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +3 -5
  309. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +35 -11
  310. package/Libraries/Events/CustomEvent.js +32 -0
  311. package/Libraries/Events/EventPolyfill.js +239 -0
  312. package/Libraries/Image/AssetRegistry.js +7 -25
  313. package/Libraries/Image/AssetSourceResolver.js +82 -45
  314. package/Libraries/Image/AssetUtils.js +47 -0
  315. package/Libraries/Image/Image.android.js +206 -271
  316. package/Libraries/Image/Image.d.ts +389 -0
  317. package/Libraries/Image/Image.ios.js +145 -104
  318. package/Libraries/Image/Image.js.flow +27 -0
  319. package/Libraries/Image/Image.win32.js +150 -93
  320. package/Libraries/Image/ImageAnalyticsTagContext.js +22 -0
  321. package/Libraries/Image/ImageBackground.js +32 -14
  322. package/Libraries/Image/ImageInjection.js +87 -0
  323. package/Libraries/Image/ImageProps.js +262 -61
  324. package/Libraries/Image/ImageResizeMode.d.ts +56 -0
  325. package/Libraries/Image/ImageResizeMode.js +5 -2
  326. package/Libraries/Image/ImageSource.d.ts +74 -0
  327. package/Libraries/Image/ImageSource.js +73 -23
  328. package/Libraries/Image/ImageSourceUtils.js +80 -0
  329. package/Libraries/Image/ImageTypes.d.ts +25 -25
  330. package/Libraries/Image/ImageTypes.flow.js +88 -0
  331. package/Libraries/Image/ImageTypes.js +8 -8
  332. package/Libraries/Image/ImageTypes.js.map +1 -0
  333. package/Libraries/Image/ImageUtils.js +25 -0
  334. package/Libraries/Image/ImageViewNativeComponent.js +145 -30
  335. package/Libraries/Image/NativeImageEditor.js +13 -0
  336. package/Libraries/Image/NativeImageLoaderAndroid.js +5 -32
  337. package/Libraries/Image/NativeImageLoaderIOS.js +5 -24
  338. package/Libraries/Image/NativeImageLoaderWin32.js +5 -32
  339. package/Libraries/Image/NativeImageStoreAndroid.js +13 -0
  340. package/Libraries/Image/NativeImageStoreIOS.js +13 -0
  341. package/Libraries/Image/RelativeImageStub.js +5 -3
  342. package/Libraries/Image/Tests/ImageWin32Test.d.ts +9 -8
  343. package/Libraries/Image/Tests/ImageWin32Test.js +22 -19
  344. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -0
  345. package/Libraries/Image/TextInlineImageNativeComponent.js +36 -7
  346. package/Libraries/Image/assetPaths.js +36 -0
  347. package/Libraries/Image/nativeImageSource.js +7 -9
  348. package/Libraries/Image/resolveAssetSource.js +68 -32
  349. package/Libraries/Image/resolveAssetSource.win32.js +19 -7
  350. package/Libraries/Interaction/FrameRateLogger.js +11 -23
  351. package/Libraries/Interaction/InteractionManager.d.ts +87 -0
  352. package/Libraries/Interaction/InteractionManager.js +49 -44
  353. package/Libraries/Interaction/InteractionManagerStub.js +184 -0
  354. package/Libraries/Interaction/JSEventLoopWatchdog.js +12 -17
  355. package/Libraries/Interaction/NativeFrameRateLogger.js +5 -16
  356. package/Libraries/Interaction/PanResponder.d.ts +202 -0
  357. package/Libraries/Interaction/PanResponder.js +55 -54
  358. package/Libraries/Interaction/TaskQueue.js +20 -20
  359. package/Libraries/Interaction/TouchHistoryMath.js +59 -30
  360. package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
  361. package/Libraries/LayoutAnimation/LayoutAnimation.js +105 -42
  362. package/Libraries/Linking/Linking.d.ts +61 -0
  363. package/Libraries/Linking/Linking.js +57 -47
  364. package/Libraries/Linking/NativeIntentAndroid.js +13 -0
  365. package/Libraries/Linking/NativeLinkingManager.js +13 -0
  366. package/Libraries/Lists/FillRateHelper.js +7 -233
  367. package/Libraries/Lists/FlatList.d.ts +244 -0
  368. package/Libraries/Lists/FlatList.js +216 -152
  369. package/Libraries/Lists/SectionList.d.ts +267 -0
  370. package/Libraries/Lists/SectionList.js +72 -70
  371. package/Libraries/Lists/SectionListModern.js +242 -0
  372. package/Libraries/Lists/ViewabilityHelper.js +12 -328
  373. package/Libraries/Lists/VirtualizeUtils.js +5 -236
  374. package/Libraries/Lists/VirtualizedList.js +12 -2225
  375. package/Libraries/Lists/VirtualizedListContext.js +18 -0
  376. package/Libraries/Lists/VirtualizedSectionList.js +13 -566
  377. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +5 -4
  378. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +9 -9
  379. package/Libraries/LogBox/Data/LogBoxData.js +120 -89
  380. package/Libraries/LogBox/Data/LogBoxLog.js +152 -17
  381. package/Libraries/LogBox/Data/LogBoxSymbolication.js +10 -9
  382. package/Libraries/LogBox/Data/parseLogBoxLog.js +297 -84
  383. package/Libraries/LogBox/LogBox.d.ts +28 -0
  384. package/Libraries/LogBox/LogBox.js +195 -90
  385. package/Libraries/LogBox/LogBoxInspectorContainer.js +9 -9
  386. package/Libraries/LogBox/LogBoxNotificationContainer.js +13 -10
  387. package/Libraries/LogBox/UI/AnsiHighlight.js +47 -25
  388. package/Libraries/LogBox/UI/LogBoxButton.js +13 -12
  389. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  390. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  391. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  392. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  393. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  394. package/Libraries/LogBox/UI/LogBoxInspector.js +14 -78
  395. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +93 -0
  396. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +65 -39
  397. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +192 -0
  398. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +18 -54
  399. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +60 -0
  400. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +27 -81
  401. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +119 -0
  402. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +78 -0
  403. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +12 -11
  404. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +21 -17
  405. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +198 -0
  406. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
  407. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +9 -13
  408. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +12 -12
  409. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +120 -0
  410. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +21 -13
  411. package/Libraries/LogBox/UI/LogBoxMessage.js +100 -19
  412. package/Libraries/LogBox/UI/LogBoxNotification.js +24 -158
  413. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +65 -0
  414. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +69 -0
  415. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +60 -0
  416. package/Libraries/LogBox/UI/LogBoxStyle.js +1 -3
  417. package/Libraries/LogBox/UI/LogBoxStyle.win32.js +65 -0
  418. package/Libraries/Modal/Modal.d.ts +116 -0
  419. package/Libraries/Modal/Modal.js +243 -128
  420. package/Libraries/Modal/NativeModalManager.js +5 -14
  421. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +4 -117
  422. package/Libraries/NativeComponent/BaseViewConfig.android.js +432 -0
  423. package/Libraries/NativeComponent/BaseViewConfig.ios.js +432 -0
  424. package/Libraries/NativeComponent/BaseViewConfig.js.flow +14 -0
  425. package/Libraries/NativeComponent/BaseViewConfig.win32.js +424 -0
  426. package/Libraries/NativeComponent/NativeComponentRegistry.js +164 -0
  427. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +30 -0
  428. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +25 -0
  429. package/Libraries/NativeComponent/StaticViewConfigValidator.js +148 -0
  430. package/Libraries/NativeComponent/ViewConfig.js +52 -0
  431. package/Libraries/NativeComponent/ViewConfigIgnore.js +51 -0
  432. package/Libraries/NativeModules/specs/NativeDevMenu.js +5 -16
  433. package/Libraries/NativeModules/specs/NativeDevSettings.js +5 -26
  434. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +5 -12
  435. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +5 -41
  436. package/Libraries/NativeModules/specs/NativeLogBox.js +5 -13
  437. package/Libraries/NativeModules/specs/NativeRedBox.js +5 -13
  438. package/Libraries/NativeModules/specs/NativeSourceCode.js +5 -14
  439. package/Libraries/Network/FormData.js +22 -6
  440. package/Libraries/Network/NativeNetworkingAndroid.js +5 -30
  441. package/Libraries/Network/NativeNetworkingIOS.js +5 -30
  442. package/Libraries/Network/RCTNetworking.android.js +33 -21
  443. package/Libraries/Network/RCTNetworking.ios.js +23 -19
  444. package/Libraries/Network/RCTNetworking.js.flow +44 -0
  445. package/Libraries/Network/RCTNetworking.win32.js +41 -70
  446. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +57 -0
  447. package/Libraries/Network/XMLHttpRequest.js +11 -610
  448. package/Libraries/Network/XMLHttpRequest_new.js +794 -0
  449. package/Libraries/Network/XMLHttpRequest_old.js +701 -0
  450. package/Libraries/Network/convertRequestBody.js +9 -6
  451. package/Libraries/Network/fetch.js +6 -4
  452. package/Libraries/NewAppScreen/components/Colors.js +2 -3
  453. package/Libraries/NewAppScreen/components/DebugInstructions.js +9 -8
  454. package/Libraries/NewAppScreen/components/Header.js +36 -16
  455. package/Libraries/NewAppScreen/components/HermesBadge.js +51 -0
  456. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +50 -27
  457. package/Libraries/NewAppScreen/components/ReloadInstructions.js +5 -4
  458. package/Libraries/NewAppScreen/components/logo.png +0 -0
  459. package/Libraries/NewAppScreen/index.js +12 -6
  460. package/Libraries/Performance/Systrace.d.ts +66 -0
  461. package/Libraries/Performance/Systrace.js +116 -171
  462. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +5 -52
  463. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +163 -0
  464. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +103 -64
  465. package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
  466. package/Libraries/PersonaCoin/PersonaCoin.js +16 -22
  467. package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -0
  468. package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
  469. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +20 -20
  470. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -0
  471. package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
  472. package/Libraries/PersonaCoin/PersonaCoinTypes.js +24 -24
  473. package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -0
  474. package/Libraries/Pressability/HoverState.js +5 -4
  475. package/Libraries/Pressability/HoverState.win32.js +63 -0
  476. package/Libraries/Pressability/Pressability.js +274 -180
  477. package/Libraries/Pressability/Pressability.win32.js +1093 -0
  478. package/Libraries/Pressability/PressabilityDebug.js +33 -29
  479. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +49 -0
  480. package/Libraries/Pressability/PressabilityTypes.js +18 -0
  481. package/Libraries/Pressability/usePressability.js +28 -11
  482. package/Libraries/Promise.js +7 -37
  483. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +5 -66
  484. package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +295 -0
  485. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +247 -93
  486. package/Libraries/QuirkSettings/CachingNativeQuirkSettings.js +30 -0
  487. package/Libraries/QuirkSettings/NativeQuirkSettings.js +17 -0
  488. package/Libraries/QuirkSettings/QuirkSettings.js +34 -0
  489. package/Libraries/QuirkSettings/Quirks.js +17 -0
  490. package/Libraries/ReactNative/AppContainer-dev.js +209 -0
  491. package/Libraries/ReactNative/AppContainer-prod.js +50 -0
  492. package/Libraries/ReactNative/AppContainer.js +15 -140
  493. package/Libraries/ReactNative/AppRegistry.d.ts +121 -0
  494. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  495. package/Libraries/ReactNative/AppRegistry.js +21 -292
  496. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  497. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  498. package/Libraries/ReactNative/BridgelessUIManager.js +414 -0
  499. package/Libraries/ReactNative/DisplayMode.js +32 -0
  500. package/Libraries/ReactNative/FabricUIManager.js +130 -29
  501. package/Libraries/ReactNative/HeadlessJsTaskError.js +1 -3
  502. package/Libraries/ReactNative/I18nManager.d.ts +25 -0
  503. package/Libraries/ReactNative/I18nManager.js +22 -16
  504. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +5 -13
  505. package/Libraries/ReactNative/NativeI18nManager.js +5 -18
  506. package/Libraries/ReactNative/NativeUIManager.js +5 -114
  507. package/Libraries/ReactNative/PaperUIManager.js +82 -55
  508. package/Libraries/ReactNative/PaperUIManager.win32.js +210 -0
  509. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +150 -0
  510. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +152 -0
  511. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +38 -0
  512. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  513. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +33 -0
  514. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +31 -0
  515. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +68 -0
  516. package/Libraries/ReactNative/RendererImplementation.js +175 -0
  517. package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
  518. package/Libraries/ReactNative/RendererProxy.js +26 -0
  519. package/Libraries/ReactNative/RootTag.d.ts +13 -0
  520. package/Libraries/ReactNative/RootTag.js +27 -0
  521. package/Libraries/ReactNative/UIManager.d.ts +114 -0
  522. package/Libraries/ReactNative/UIManager.js +180 -26
  523. package/Libraries/ReactNative/UIManagerProperties.js +6 -9
  524. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +33 -0
  525. package/Libraries/ReactNative/getNativeComponentAttributes.js +58 -31
  526. package/Libraries/ReactNative/renderApplication.js +72 -23
  527. package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
  528. package/Libraries/ReactNative/requireNativeComponent.js +10 -6
  529. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +1 -1
  530. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +95 -20
  531. package/Libraries/Renderer/implementations/ReactFabric-dev.js +16297 -19948
  532. package/Libraries/Renderer/implementations/ReactFabric-prod.js +8563 -5501
  533. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +9018 -5570
  534. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +16537 -20505
  535. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +8466 -5422
  536. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +9225 -5791
  537. package/Libraries/Renderer/shims/ReactFabric.js +10 -9
  538. package/Libraries/Renderer/shims/ReactFeatureFlags.js +5 -3
  539. package/Libraries/Renderer/shims/ReactNative.js +6 -5
  540. package/Libraries/Renderer/shims/ReactNativeTypes.js +215 -118
  541. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +27 -37
  542. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +8 -7
  543. package/Libraries/Settings/NativeSettingsManager.js +5 -18
  544. package/Libraries/Settings/Settings.d.ts +18 -0
  545. package/Libraries/Settings/Settings.ios.js +8 -8
  546. package/Libraries/Settings/Settings.js +33 -0
  547. package/Libraries/Settings/Settings.win32.js +3 -3
  548. package/Libraries/Share/NativeShareModule.js +5 -16
  549. package/Libraries/Share/Share.d.ts +80 -0
  550. package/Libraries/Share/Share.js +42 -27
  551. package/Libraries/StyleSheet/EdgeInsetsPropType.js +5 -2
  552. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +10 -11
  553. package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
  554. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +53 -17
  555. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +22 -0
  556. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +15 -5
  557. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
  558. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +11 -5
  559. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +10 -4
  560. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +2 -4
  561. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +2 -2
  562. package/Libraries/StyleSheet/PointPropType.js +1 -1
  563. package/Libraries/StyleSheet/Rect.js +3 -5
  564. package/Libraries/StyleSheet/StyleSheet.d.ts +150 -0
  565. package/Libraries/StyleSheet/StyleSheet.js +48 -224
  566. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  567. package/Libraries/StyleSheet/StyleSheetExports.js +210 -0
  568. package/Libraries/StyleSheet/StyleSheetExports.js.flow +110 -0
  569. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +573 -0
  570. package/Libraries/StyleSheet/StyleSheetTypes.js +505 -143
  571. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +11 -35
  572. package/Libraries/StyleSheet/flattenStyle.js +18 -9
  573. package/Libraries/StyleSheet/normalizeColor.js +12 -371
  574. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  575. package/Libraries/StyleSheet/private/_TransformStyle.js +69 -0
  576. package/Libraries/StyleSheet/processAspectRatio.js +63 -0
  577. package/Libraries/StyleSheet/processBackgroundImage.js +363 -0
  578. package/Libraries/StyleSheet/processBoxShadow.js +213 -0
  579. package/Libraries/StyleSheet/processColor.d.ts +16 -0
  580. package/Libraries/StyleSheet/processColor.js +7 -9
  581. package/Libraries/StyleSheet/processColorArray.js +19 -8
  582. package/Libraries/StyleSheet/processFilter.js +325 -0
  583. package/Libraries/StyleSheet/processFontVariant.js +30 -0
  584. package/Libraries/StyleSheet/processTransform.js +132 -112
  585. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  586. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +2 -2
  587. package/Libraries/StyleSheet/splitLayoutProps.js +57 -49
  588. package/Libraries/Text/Text.d.ts +306 -0
  589. package/Libraries/Text/Text.js +507 -270
  590. package/Libraries/Text/Text.win32.js +579 -0
  591. package/Libraries/Text/TextAncestor.js +6 -2
  592. package/Libraries/Text/TextNativeComponent.js +82 -0
  593. package/Libraries/Text/TextNativeComponent.win32.js +117 -0
  594. package/Libraries/Text/TextProps.js +203 -84
  595. package/Libraries/Text/TextProps.win32.js +322 -0
  596. package/Libraries/TurboModule/RCTExport.d.ts +12 -0
  597. package/Libraries/TurboModule/RCTExport.js +3 -1
  598. package/Libraries/TurboModule/TurboModuleRegistry.d.ts +13 -0
  599. package/Libraries/TurboModule/TurboModuleRegistry.js +24 -16
  600. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +5 -28
  601. package/Libraries/Types/CodegenTypes.js +13 -5
  602. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  603. package/Libraries/Types/CodegenTypesNamespace.js +14 -0
  604. package/Libraries/Types/CoreEventTypes.d.ts +264 -0
  605. package/Libraries/Types/CoreEventTypes.js +260 -92
  606. package/Libraries/Types/CoreEventTypes.win32.js +378 -0
  607. package/Libraries/Types/ReactDevToolsTypes.js +54 -0
  608. package/Libraries/Types/RootTagTypes.js +11 -0
  609. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  610. package/Libraries/UTFSequence.js +10 -7
  611. package/Libraries/Utilities/Appearance.d.ts +53 -0
  612. package/Libraries/Utilities/Appearance.js +110 -63
  613. package/Libraries/Utilities/BackHandler.android.js +20 -40
  614. package/Libraries/Utilities/BackHandler.d.ts +34 -0
  615. package/Libraries/Utilities/BackHandler.ios.js +20 -110
  616. package/Libraries/Utilities/BackHandler.js.flow +25 -0
  617. package/Libraries/Utilities/BackHandler.win32.js +96 -7
  618. package/Libraries/Utilities/DevLoadingView.js +64 -0
  619. package/Libraries/Utilities/DevSettings.d.ts +32 -0
  620. package/Libraries/Utilities/DevSettings.js +69 -48
  621. package/Libraries/Utilities/DeviceInfo.js +3 -3
  622. package/Libraries/Utilities/Dimensions.d.ts +79 -0
  623. package/Libraries/Utilities/Dimensions.js +34 -48
  624. package/Libraries/Utilities/Dimensions.win32.js +111 -18
  625. package/Libraries/Utilities/FeatureDetection.js +29 -0
  626. package/Libraries/Utilities/FocusManager.win32.d.ts +12 -0
  627. package/Libraries/Utilities/FocusManager.win32.js +42 -0
  628. package/Libraries/Utilities/GlobalPerformanceLogger.js +5 -6
  629. package/Libraries/Utilities/HMRClient.js +78 -43
  630. package/Libraries/Utilities/HMRClientProdShim.js +2 -2
  631. package/Libraries/Utilities/IPerformanceLogger.d.ts +48 -0
  632. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  633. package/Libraries/Utilities/NativeAppearance.js +5 -28
  634. package/Libraries/Utilities/NativeDevLoadingView.js +5 -17
  635. package/Libraries/Utilities/NativeDeviceInfo.js +4 -40
  636. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +5 -30
  637. package/Libraries/Utilities/NativePlatformConstantsIOS.js +5 -26
  638. package/Libraries/Utilities/NativePlatformConstantsWin.js +4 -21
  639. package/Libraries/Utilities/PerformanceLoggerContext.js +17 -10
  640. package/Libraries/Utilities/PixelRatio.d.ts +64 -0
  641. package/Libraries/Utilities/PixelRatio.js +6 -6
  642. package/Libraries/Utilities/Platform.android.js +42 -21
  643. package/Libraries/Utilities/Platform.d.ts +106 -0
  644. package/Libraries/Utilities/Platform.ios.js +44 -24
  645. package/Libraries/Utilities/Platform.js.flow +13 -0
  646. package/Libraries/Utilities/Platform.win32.js +45 -18
  647. package/Libraries/Utilities/PlatformTypes.js +222 -0
  648. package/Libraries/Utilities/PolyfillFunctions.js +9 -11
  649. package/Libraries/Utilities/RCTLog.js +7 -6
  650. package/Libraries/Utilities/ReactNativeTestTools.js +38 -60
  651. package/Libraries/Utilities/SceneTracker.js +7 -6
  652. package/Libraries/Utilities/__mocks__/BackHandler.js +7 -12
  653. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +3 -3
  654. package/Libraries/Utilities/__mocks__/PixelRatio.js +2 -2
  655. package/Libraries/Utilities/binaryToBase64.js +7 -5
  656. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  657. package/Libraries/Utilities/codegenNativeCommands.js +8 -8
  658. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  659. package/Libraries/Utilities/codegenNativeComponent.js +27 -17
  660. package/Libraries/Utilities/createPerformanceLogger.js +259 -244
  661. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +13 -7
  662. package/Libraries/Utilities/defineLazyObjectProperty.js +4 -4
  663. package/Libraries/Utilities/differ/deepDiffer.js +8 -8
  664. package/Libraries/Utilities/differ/insetsDiffer.js +4 -4
  665. package/Libraries/Utilities/differ/matricesDiffer.js +5 -4
  666. package/Libraries/Utilities/differ/pointsDiffer.js +4 -4
  667. package/Libraries/Utilities/differ/sizesDiffer.js +13 -7
  668. package/Libraries/Utilities/dismissKeyboard.js +4 -3
  669. package/Libraries/Utilities/infoLog.js +4 -3
  670. package/Libraries/Utilities/logError.js +3 -3
  671. package/Libraries/Utilities/mapWithSeparator.js +2 -2
  672. package/Libraries/Utilities/stringifySafe.js +10 -10
  673. package/Libraries/Utilities/stringifyViewConfig.js +22 -0
  674. package/Libraries/Utilities/useColorScheme.js +10 -16
  675. package/Libraries/Utilities/useMergeRefs.js +59 -0
  676. package/Libraries/Utilities/useRefEffect.js +45 -0
  677. package/Libraries/Utilities/useWindowDimensions.js +15 -8
  678. package/Libraries/Utilities/warnOnce.js +4 -6
  679. package/Libraries/Vibration/NativeVibration.js +5 -17
  680. package/Libraries/Vibration/Vibration.d.ts +43 -0
  681. package/Libraries/Vibration/Vibration.js +19 -17
  682. package/Libraries/WebSocket/NativeWebSocketModule.js +5 -27
  683. package/Libraries/WebSocket/WebSocket.js +9 -266
  684. package/Libraries/WebSocket/WebSocketEvent.js +6 -3
  685. package/Libraries/WebSocket/WebSocketInterceptor.js +78 -31
  686. package/Libraries/WebSocket/WebSocket_new.js +325 -0
  687. package/Libraries/WebSocket/WebSocket_old.js +297 -0
  688. package/Libraries/WebSocket/__mocks__/event-target-shim.js +2 -2
  689. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +5 -7
  690. package/Libraries/__tests__/ButtonWin32-test.js +17 -0
  691. package/Libraries/platform-types.d.ts +25 -0
  692. package/Libraries/promiseRejectionTrackingOptions.js +72 -0
  693. package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
  694. package/Libraries/vendor/core/ErrorUtils.js +5 -3
  695. package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
  696. package/Libraries/vendor/emitter/EventEmitter.js +137 -191
  697. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +81 -0
  698. package/babel.config.js +3 -0
  699. package/flow/HermesInternalType.js +114 -0
  700. package/flow/Stringish.js +1 -1
  701. package/flow/console.js +1 -1
  702. package/flow/global.js +90 -0
  703. package/index.js +454 -421
  704. package/index.win32.js +792 -44
  705. package/interface.js +8 -12
  706. package/jest/MockNativeMethods.js +1 -1
  707. package/jest/__tests__/setup-test.js +18 -0
  708. package/jest/assetFileTransformer.js +7 -5
  709. package/jest/local-setup.js +28 -0
  710. package/jest/mockComponent.js +28 -16
  711. package/jest/mockModal.js +32 -0
  712. package/jest/mockNativeComponent.js +40 -0
  713. package/jest/mockScrollView.js +35 -0
  714. package/jest/react-native-env.js +16 -0
  715. package/jest/renderer.js +29 -22
  716. package/jest/setup.js +442 -287
  717. package/jest-snapshot-resolver.js +2 -0
  718. package/jest.config.js +38 -0
  719. package/just-task.js +11 -53
  720. package/metro.config.js +5 -20
  721. package/metroShortPathAssetDataPlugin.js +15 -0
  722. package/overrides.json +298 -251
  723. package/package.json +86 -47
  724. package/react-native.config.js +2 -0
  725. package/rn-get-polyfills.js +3 -6
  726. package/saveAssetPlugin.js +45 -0
  727. package/src/private/animated/NativeAnimatedHelper.js +453 -0
  728. package/src/private/animated/NativeAnimatedHelper.win32.js +456 -0
  729. package/src/private/animated/NativeAnimatedValidation.js +64 -0
  730. package/src/private/animated/createAnimatedPropsHook.js +380 -0
  731. package/src/private/animated/createAnimatedPropsMemoHook.js +407 -0
  732. package/src/private/components/HScrollViewNativeComponents.js +30 -0
  733. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +32 -0
  734. package/src/private/components/VScrollViewNativeComponents.js +25 -0
  735. package/src/private/debugging/FuseboxSessionObserver.js +42 -0
  736. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  737. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  738. package/src/private/debugging/ReactDevToolsSettingsManager.win32.js +20 -0
  739. package/src/private/debugging/setUpFuseboxReactDevToolsDispatcher.js +114 -0
  740. package/src/private/devmenu/DevMenu.d.ts +20 -0
  741. package/src/private/devmenu/DevMenu.js +31 -0
  742. package/src/private/featureflags/ReactNativeFeatureFlags.js +336 -0
  743. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +115 -0
  744. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +75 -0
  745. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  746. package/src/private/inspector/BorderBox.js +44 -0
  747. package/src/private/inspector/BoxInspector.js +130 -0
  748. package/src/private/inspector/ElementBox.js +151 -0
  749. package/src/private/inspector/ElementProperties.js +125 -0
  750. package/src/private/inspector/Inspector.js +209 -0
  751. package/src/private/inspector/InspectorOverlay.js +66 -0
  752. package/src/private/inspector/InspectorPanel.js +166 -0
  753. package/src/private/inspector/NetworkOverlay.js +627 -0
  754. package/src/private/inspector/PerformanceOverlay.js +65 -0
  755. package/src/private/inspector/ReactDevToolsOverlay.js +166 -0
  756. package/src/private/inspector/StyleInspector.js +76 -0
  757. package/src/private/inspector/XHRInterceptor.js +217 -0
  758. package/src/private/inspector/getInspectorDataForViewAtPoint.js +81 -0
  759. package/src/private/inspector/resolveBoxStyle.js +115 -0
  760. package/src/private/renderer/errorhandling/ErrorHandlers.js +83 -0
  761. package/src/private/setup/setUpDOM.js +76 -0
  762. package/src/private/setup/setUpIntersectionObserver.js +27 -0
  763. package/src/private/setup/setUpMutationObserver.js +31 -0
  764. package/src/private/setup/setUpPerformanceObserver.js +64 -0
  765. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +53 -0
  766. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  767. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +27 -0
  768. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  769. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +62 -0
  770. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +61 -0
  771. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +36 -0
  772. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +71 -0
  773. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  774. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +147 -0
  775. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +25 -0
  776. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +61 -0
  777. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +26 -0
  778. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +42 -0
  779. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfoWin32.js +48 -0
  780. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +70 -0
  781. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +56 -0
  782. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +35 -0
  783. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +77 -0
  784. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +78 -0
  785. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +33 -0
  786. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +30 -0
  787. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +61 -0
  788. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +20 -0
  789. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +21 -0
  790. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +24 -0
  791. package/src/private/specs_DEPRECATED/modules/NativeDevMenu.js +22 -0
  792. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +33 -0
  793. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +19 -0
  794. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +58 -0
  795. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +48 -0
  796. package/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js +91 -0
  797. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +22 -0
  798. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +22 -0
  799. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +20 -0
  800. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +28 -0
  801. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +52 -0
  802. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +30 -0
  803. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +37 -0
  804. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderWin32.js +45 -0
  805. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +26 -0
  806. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +33 -0
  807. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +30 -0
  808. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +19 -0
  809. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +20 -0
  810. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +27 -0
  811. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +20 -0
  812. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +21 -0
  813. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +37 -0
  814. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +37 -0
  815. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +78 -0
  816. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +44 -0
  817. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +37 -0
  818. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWin.js +39 -0
  819. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +103 -0
  820. package/src/private/specs_DEPRECATED/modules/NativeReactDevToolsSettingsManager.js +22 -0
  821. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +20 -0
  822. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +66 -0
  823. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +28 -0
  824. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +25 -0
  825. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +23 -0
  826. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +22 -0
  827. package/src/private/specs_DEPRECATED/modules/NativeSourceCode.js +36 -0
  828. package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid.js +68 -0
  829. package/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS.js +89 -0
  830. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +26 -0
  831. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +38 -0
  832. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +184 -0
  833. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +24 -0
  834. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +34 -0
  835. package/src/private/styles/composeStyles.js +27 -0
  836. package/src/private/types/HostComponent.js +16 -0
  837. package/src/private/types/HostInstance.js +108 -0
  838. package/src/private/webapis/dom/events/CustomEvent.js +38 -0
  839. package/src/private/webapis/dom/events/Event.js +236 -0
  840. package/src/private/webapis/dom/events/EventHandlerAttributes.js +130 -0
  841. package/src/private/webapis/dom/events/EventTarget.js +436 -0
  842. package/src/private/webapis/dom/events/internals/EventInternals.js +120 -0
  843. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +52 -0
  844. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +121 -0
  845. package/src/private/webapis/dom/nodes/ReactNativeElement.js +259 -0
  846. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +72 -0
  847. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +247 -0
  848. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +332 -0
  849. package/src/private/webapis/dom/nodes/ReadOnlyText.js +30 -0
  850. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +150 -0
  851. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +55 -0
  852. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +44 -0
  853. package/src/private/webapis/dom/nodes/internals/Traversal.js +54 -0
  854. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +579 -0
  855. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +82 -0
  856. package/src/private/webapis/dom/oldstylecollections/NodeList.js +104 -0
  857. package/src/private/webapis/geometry/DOMRect.js +82 -0
  858. package/src/private/webapis/geometry/DOMRectList.js +76 -0
  859. package/src/private/webapis/geometry/DOMRectReadOnly.js +188 -0
  860. package/src/private/webapis/html/events/MessageEvent.js +56 -0
  861. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  862. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +345 -0
  863. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +167 -0
  864. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +280 -0
  865. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +43 -0
  866. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  867. package/src/private/webapis/mutationobserver/MutationObserver.js +186 -0
  868. package/src/private/webapis/mutationobserver/MutationRecord.js +82 -0
  869. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +225 -0
  870. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +58 -0
  871. package/src/private/webapis/performance/EventTiming.js +145 -0
  872. package/src/private/webapis/performance/LongTasks.js +39 -0
  873. package/src/private/webapis/performance/MemoryInfo.js +54 -0
  874. package/src/private/webapis/performance/Performance.js +287 -0
  875. package/src/private/webapis/performance/PerformanceEntry.js +68 -0
  876. package/src/private/webapis/performance/PerformanceObserver.js +232 -0
  877. package/src/private/webapis/performance/ReactNativeStartupTiming.js +91 -0
  878. package/src/private/webapis/performance/UserTiming.js +72 -0
  879. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +105 -0
  880. package/src/private/webapis/performance/internals/Utilities.js +18 -0
  881. package/src/private/webapis/performance/specs/NativePerformance.js +92 -0
  882. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  883. package/src/private/webapis/utils/ArrayLikeUtils.js +46 -0
  884. package/src/private/webapis/websockets/events/CloseEvent.js +52 -0
  885. package/src/private/webapis/xhr/events/ProgressEvent.js +52 -0
  886. package/src/types/globals.d.ts +628 -0
  887. package/src/types/third_party/event-target-shim.d.ts +392 -0
  888. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +177 -0
  889. package/src-win/Libraries/Components/Button/ButtonWin32.Props.ts +45 -0
  890. package/src-win/Libraries/Components/Button/ButtonWin32.tsx +94 -0
  891. package/src-win/Libraries/Components/EnterString.win32.tsx +110 -0
  892. package/src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx +185 -0
  893. package/src-win/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +502 -0
  894. package/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +119 -0
  895. package/src-win/Libraries/Components/Touchable/TouchableWin32.Props.tsx +46 -0
  896. package/src-win/Libraries/Components/Touchable/TouchableWin32.Types.tsx +137 -0
  897. package/src-win/Libraries/Components/Touchable/TouchableWin32.tsx +624 -0
  898. package/src-win/Libraries/Components/View/ViewAccessibility.d.ts +566 -0
  899. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +354 -0
  900. package/src-win/Libraries/Components/View/ViewWin32.d.ts +30 -0
  901. package/src-win/Libraries/Image/ImageTypes.ts +27 -0
  902. package/src-win/Libraries/Image/Tests/ImageWin32Test.tsx +22 -0
  903. package/src-win/Libraries/Image/Tests/img/dpitest.png +0 -0
  904. package/src-win/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
  905. package/src-win/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
  906. package/src-win/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
  907. package/src-win/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
  908. package/src-win/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
  909. package/src-win/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
  910. package/src-win/Libraries/PersonaCoin/PersonaCoin.tsx +13 -0
  911. package/src-win/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +17 -0
  912. package/src-win/Libraries/PersonaCoin/PersonaCoinTypes.ts +36 -0
  913. package/src-win/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +38 -0
  914. package/src-win/Libraries/Text/Text.d.ts +306 -0
  915. package/src-win/Libraries/Utilities/FocusManager.win32.d.ts +12 -0
  916. package/src-win/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +22 -0
  917. package/src-win/Libraries/platform-types.d.ts +25 -0
  918. package/types/index.d.ts +167 -0
  919. package/types/modules/BatchedBridge.d.ts +32 -0
  920. package/types/modules/Codegen.d.ts +80 -0
  921. package/types/modules/Devtools.d.ts +32 -0
  922. package/types/modules/LaunchScreen.d.ts +26 -0
  923. package/types/private/TimerMixin.d.ts +19 -0
  924. package/types/private/Utilities.d.ts +10 -0
  925. package/types/public/DeprecatedPropertiesAlias.d.ts +185 -0
  926. package/types/public/Insets.d.ts +15 -0
  927. package/types/public/ReactNativeRenderer.d.ts +144 -0
  928. package/types/public/ReactNativeTypes.d.ts +139 -0
  929. package/IntegrationTests/AsyncStorageTest.js +0 -217
  930. package/IntegrationTests/PropertiesUpdateTest.js +0 -29
  931. package/IntegrationTests/RCTRootViewIntegrationTestApp.js +0 -92
  932. package/IntegrationTests/ReactContentSizeUpdateTest.js +0 -91
  933. package/IntegrationTests/SizeFlexibilityUpdateTest.js +0 -108
  934. package/IntegrationTests/launchWebSocketServer.command +0 -18
  935. package/Libraries/Animated/examples/demo.html +0 -712
  936. package/Libraries/Animated/examples/pic1.jpg +0 -0
  937. package/Libraries/Animated/examples/pic2.jpg +0 -0
  938. package/Libraries/Animated/examples/pic3.jpg +0 -0
  939. package/Libraries/Animated/release/gulpfile.js +0 -155
  940. package/Libraries/Animated/src/Animated.js +0 -49
  941. package/Libraries/Animated/src/AnimatedEvent.js +0 -233
  942. package/Libraries/Animated/src/AnimatedImplementation.js +0 -712
  943. package/Libraries/Animated/src/AnimatedMock.js +0 -156
  944. package/Libraries/Animated/src/AnimatedWeb.js +0 -23
  945. package/Libraries/Animated/src/Easing.js +0 -252
  946. package/Libraries/Animated/src/NativeAnimatedHelper.js +0 -342
  947. package/Libraries/Animated/src/NativeAnimatedModule.js +0 -66
  948. package/Libraries/Animated/src/SpringConfig.js +0 -103
  949. package/Libraries/Animated/src/animations/Animation.js +0 -73
  950. package/Libraries/Animated/src/animations/DecayAnimation.js +0 -120
  951. package/Libraries/Animated/src/animations/SpringAnimation.js +0 -359
  952. package/Libraries/Animated/src/animations/TimingAnimation.js +0 -165
  953. package/Libraries/Animated/src/bezier.js +0 -153
  954. package/Libraries/Animated/src/components/AnimatedFlatList.js +0 -32
  955. package/Libraries/Animated/src/components/AnimatedImage.js +0 -25
  956. package/Libraries/Animated/src/components/AnimatedScrollView.js +0 -32
  957. package/Libraries/Animated/src/components/AnimatedSectionList.js +0 -32
  958. package/Libraries/Animated/src/components/AnimatedText.js +0 -25
  959. package/Libraries/Animated/src/components/AnimatedView.js +0 -23
  960. package/Libraries/Animated/src/createAnimatedComponent.js +0 -223
  961. package/Libraries/Animated/src/nodes/AnimatedAddition.js +0 -63
  962. package/Libraries/Animated/src/nodes/AnimatedDiffClamp.js +0 -71
  963. package/Libraries/Animated/src/nodes/AnimatedDivision.js +0 -68
  964. package/Libraries/Animated/src/nodes/AnimatedInterpolation.js +0 -373
  965. package/Libraries/Animated/src/nodes/AnimatedModulo.js +0 -62
  966. package/Libraries/Animated/src/nodes/AnimatedMultiplication.js +0 -63
  967. package/Libraries/Animated/src/nodes/AnimatedNode.js +0 -184
  968. package/Libraries/Animated/src/nodes/AnimatedProps.js +0 -176
  969. package/Libraries/Animated/src/nodes/AnimatedStyle.js +0 -127
  970. package/Libraries/Animated/src/nodes/AnimatedSubtraction.js +0 -63
  971. package/Libraries/Animated/src/nodes/AnimatedTracking.js +0 -102
  972. package/Libraries/Animated/src/nodes/AnimatedTransform.js +0 -121
  973. package/Libraries/Animated/src/nodes/AnimatedValue.js +0 -265
  974. package/Libraries/Animated/src/nodes/AnimatedValueXY.js +0 -226
  975. package/Libraries/Animated/src/nodes/AnimatedWithChildren.js +0 -87
  976. package/Libraries/Animated/src/polyfills/InteractionManager.js +0 -15
  977. package/Libraries/Animated/src/polyfills/Set.js +0 -26
  978. package/Libraries/Animated/src/polyfills/flattenStyle.js +0 -13
  979. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js +0 -162
  980. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js +0 -271
  981. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.win32.js +0 -33
  982. package/Libraries/Components/AppleTV/NativeTVNavigationEventEmitter.js +0 -23
  983. package/Libraries/Components/AppleTV/TVEventHandler.js +0 -52
  984. package/Libraries/Components/CheckBox/AndroidCheckBoxNativeComponent.js +0 -74
  985. package/Libraries/Components/CheckBox/CheckBox.android.js +0 -228
  986. package/Libraries/Components/CheckBox/CheckBox.ios.js +0 -13
  987. package/Libraries/Components/CheckBox/CheckBox.win32.js +0 -12
  988. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -46
  989. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -189
  990. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -46
  991. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  992. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -89
  993. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  994. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.win32.js +0 -30
  995. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  996. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -22
  997. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +0 -12
  998. package/Libraries/Components/MaskedView/MaskedViewIOS.android.js +0 -13
  999. package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +0 -93
  1000. package/Libraries/Components/MaskedView/MaskedViewIOS.win32.js +0 -13
  1001. package/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js +0 -21
  1002. package/Libraries/Components/Picker/AndroidDialogPickerNativeComponent.js +0 -68
  1003. package/Libraries/Components/Picker/AndroidDropdownPickerNativeComponent.js +0 -68
  1004. package/Libraries/Components/Picker/Picker.js +0 -159
  1005. package/Libraries/Components/Picker/Picker.win32.d.ts +0 -1
  1006. package/Libraries/Components/Picker/Picker.win32.js +0 -80
  1007. package/Libraries/Components/Picker/PickerAndroid.android.js +0 -146
  1008. package/Libraries/Components/Picker/PickerAndroid.ios.js +0 -12
  1009. package/Libraries/Components/Picker/PickerAndroid.js +0 -12
  1010. package/Libraries/Components/Picker/PickerIOS.android.js +0 -14
  1011. package/Libraries/Components/Picker/PickerIOS.ios.js +0 -164
  1012. package/Libraries/Components/Picker/PickerIOS.js +0 -14
  1013. package/Libraries/Components/Picker/RCTPickerNativeComponent.js +0 -63
  1014. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js +0 -12
  1015. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -46
  1016. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -77
  1017. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -8
  1018. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -35
  1019. package/Libraries/Components/ScrollResponder.js +0 -773
  1020. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -77
  1021. package/Libraries/Components/ScrollView/__mocks__/ScrollViewMock.js +0 -39
  1022. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -46
  1023. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -46
  1024. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  1025. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.js +0 -46
  1026. package/Libraries/Components/Slider/Slider.js +0 -276
  1027. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -60
  1028. package/Libraries/Components/StaticContainer.react.js +0 -51
  1029. package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -22
  1030. package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -26
  1031. package/Libraries/Components/Text/TextWin32.Props.js +0 -3
  1032. package/Libraries/Components/Text/TextWin32.d.ts +0 -6
  1033. package/Libraries/Components/Text/TextWin32.js +0 -41
  1034. package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +0 -84
  1035. package/Libraries/Components/TextInput/RCTSinglelineTextInputViewConfig.js +0 -134
  1036. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +0 -51
  1037. package/Libraries/Components/TextInput/TextInput.Types.win32.js +0 -3
  1038. package/Libraries/Components/TextInput/TextInput.win32.d.ts +0 -68
  1039. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +0 -39
  1040. package/Libraries/Components/Touchable/TVTouchable.js +0 -55
  1041. package/Libraries/Components/Touchable/TouchableNativeFeedback.Props.d.ts +0 -7
  1042. package/Libraries/Components/Touchable/TouchableNativeFeedback.Props.js +0 -3
  1043. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.d.ts +0 -16
  1044. package/Libraries/Components/Touchable/__mocks__/ensureComponentIsNative.js +0 -12
  1045. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -26
  1046. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -347
  1047. package/Libraries/Components/View/ReactNativeViewViewConfig.win32.js +0 -384
  1048. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -74
  1049. package/Libraries/Components/View/Tests/ViewWin32Test.d.ts +0 -8
  1050. package/Libraries/Components/View/Tests/ViewWin32Test.js +0 -235
  1051. package/Libraries/Components/View/ViewWin32.Props.d.ts +0 -149
  1052. package/Libraries/Components/View/ViewWin32.Props.js +0 -11
  1053. package/Libraries/Core/setUpSystrace.js +0 -21
  1054. package/Libraries/DeprecatedPropTypes/DeprecatedColorPropType.js +0 -76
  1055. package/Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType.js +0 -28
  1056. package/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.js +0 -82
  1057. package/Libraries/DeprecatedPropTypes/DeprecatedImageSourcePropType.js +0 -40
  1058. package/Libraries/DeprecatedPropTypes/DeprecatedImageStylePropTypes.js +0 -76
  1059. package/Libraries/DeprecatedPropTypes/DeprecatedLayoutPropTypes.js +0 -233
  1060. package/Libraries/DeprecatedPropTypes/DeprecatedPointPropType.js +0 -24
  1061. package/Libraries/DeprecatedPropTypes/DeprecatedShadowPropTypesIOS.js +0 -30
  1062. package/Libraries/DeprecatedPropTypes/DeprecatedStyleSheetPropType.js +0 -32
  1063. package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
  1064. package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +0 -622
  1065. package/Libraries/DeprecatedPropTypes/DeprecatedTextPropTypes.js +0 -158
  1066. package/Libraries/DeprecatedPropTypes/DeprecatedTextStylePropTypes.js +0 -157
  1067. package/Libraries/DeprecatedPropTypes/DeprecatedTransformPropTypes.js +0 -99
  1068. package/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js +0 -44
  1069. package/Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes.js +0 -408
  1070. package/Libraries/DeprecatedPropTypes/DeprecatedViewStylePropTypes.js +0 -68
  1071. package/Libraries/DeprecatedPropTypes/deprecatedCreateStrictShapeTypeChecker.js +0 -86
  1072. package/Libraries/HeapCapture/HeapCapture.js +0 -31
  1073. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -20
  1074. package/Libraries/Image/ImagePickerIOS.js +0 -105
  1075. package/Libraries/Image/ImageViewViewConfig.js +0 -68
  1076. package/Libraries/Image/NativeImagePickerIOS.js +0 -40
  1077. package/Libraries/Image/assetPathUtils.js +0 -91
  1078. package/Libraries/Inspector/BorderBox.js +0 -32
  1079. package/Libraries/Inspector/BoxInspector.js +0 -110
  1080. package/Libraries/Inspector/ElementBox.js +0 -138
  1081. package/Libraries/Inspector/ElementProperties.js +0 -147
  1082. package/Libraries/Inspector/Inspector.js +0 -312
  1083. package/Libraries/Inspector/Inspector.win32.js +0 -318
  1084. package/Libraries/Inspector/InspectorOverlay.js +0 -90
  1085. package/Libraries/Inspector/InspectorOverlay.win32.js +0 -91
  1086. package/Libraries/Inspector/InspectorPanel.js +0 -170
  1087. package/Libraries/Inspector/NetworkOverlay.js +0 -601
  1088. package/Libraries/Inspector/PerformanceOverlay.js +0 -63
  1089. package/Libraries/Inspector/StyleInspector.js +0 -70
  1090. package/Libraries/Inspector/resolveBoxStyle.js +0 -114
  1091. package/Libraries/Interaction/Batchinator.js +0 -76
  1092. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -62
  1093. package/Libraries/Interaction/InteractionMixin.js +0 -55
  1094. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  1095. package/Libraries/JSInspector/InspectorAgent.js +0 -27
  1096. package/Libraries/JSInspector/JSInspector.js +0 -36
  1097. package/Libraries/JSInspector/NetworkAgent.js +0 -300
  1098. package/Libraries/Linking/NativeLinking.js +0 -41
  1099. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -21
  1100. package/Libraries/Network/XHRInterceptor.js +0 -166
  1101. package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -20
  1102. package/Libraries/Performance/PureComponentDebug.js +0 -73
  1103. package/Libraries/Performance/QuickPerformanceLogger.js +0 -101
  1104. package/Libraries/Performance/SamplingProfiler.js +0 -39
  1105. package/Libraries/ReactNative/DummyUIManager.js +0 -123
  1106. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  1107. package/Libraries/ReactNative/RootTagContext.js +0 -15
  1108. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  1109. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -20493
  1110. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -7440
  1111. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -7718
  1112. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -21091
  1113. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -7677
  1114. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -7955
  1115. package/Libraries/Renderer/shims/ReactTypes.js +0 -192
  1116. package/Libraries/Settings/Settings.android.js +0 -33
  1117. package/Libraries/Storage/AsyncStorage.js +0 -360
  1118. package/Libraries/Storage/NativeAsyncStorage.js +0 -44
  1119. package/Libraries/StyleSheet/PlatformColorValueTypesAndroid.android.js +0 -18
  1120. package/Libraries/StyleSheet/PlatformColorValueTypesAndroid.js +0 -17
  1121. package/Libraries/StyleSheet/StyleSheet.win32.js +0 -366
  1122. package/Libraries/StyleSheet/StyleSheetValidation.js +0 -97
  1123. package/Libraries/StyleSheet/StyleSheetValidation.win32.js +0 -102
  1124. package/Libraries/Utilities/BackHandler.win32.d.ts +0 -2
  1125. package/Libraries/Utilities/DeviceInfo.win32.js +0 -21
  1126. package/Libraries/Utilities/JSDevSupportModule.js +0 -40
  1127. package/Libraries/Utilities/LoadingView.android.js +0 -29
  1128. package/Libraries/Utilities/LoadingView.ios.js +0 -40
  1129. package/Libraries/Utilities/LoadingView.js +0 -16
  1130. package/Libraries/Utilities/MatrixMath.js +0 -752
  1131. package/Libraries/Utilities/NativeJSDevSupport.js +0 -25
  1132. package/Libraries/Utilities/buildStyleInterpolator.js +0 -211
  1133. package/Libraries/Utilities/clamp.js +0 -23
  1134. package/Libraries/Utilities/deprecatedPropType.js +0 -38
  1135. package/Libraries/Utilities/groupByEveryN.js +0 -51
  1136. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  1137. package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -83
  1138. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  1139. package/Libraries/Utilities/truncate.js +0 -51
  1140. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -134
  1141. package/Libraries/YellowBox/YellowBoxDeprecated.js +0 -75
  1142. package/Libraries/polyfills/Object.es7.js +0 -58
  1143. package/Libraries/polyfills/console.js +0 -641
  1144. package/Libraries/polyfills/error-guard.js +0 -115
  1145. package/Libraries/promiseRejectionIsError.js +0 -24
  1146. package/Libraries/vendor/emitter/EmitterSubscription.js +0 -59
  1147. package/Libraries/vendor/emitter/EventSubscription.js +0 -40
  1148. package/Libraries/vendor/emitter/EventSubscriptionVendor.js +0 -101
  1149. package/RNTester/APIExamples/AccessibilityExampleWin32.d.ts +0 -8
  1150. package/RNTester/APIExamples/AccessibilityExampleWin32.js +0 -262
  1151. package/RNTester/APIExamples/ThemingModuleAPI.d.ts +0 -8
  1152. package/RNTester/APIExamples/ThemingModuleAPI.js +0 -80
  1153. package/RNTester/js/RNTesterApp.android.js +0 -363
  1154. package/RNTester/js/RNTesterApp.ios.js +0 -272
  1155. package/RNTester/js/RNTesterApp.win32.js +0 -285
  1156. package/RNTester/js/assets/bandaged.png +0 -0
  1157. package/RNTester/js/assets/bunny.png +0 -0
  1158. package/RNTester/js/assets/call.png +0 -0
  1159. package/RNTester/js/assets/dislike.png +0 -0
  1160. package/RNTester/js/assets/fist.png +0 -0
  1161. package/RNTester/js/assets/flowers.png +0 -0
  1162. package/RNTester/js/assets/flux@3x.png +0 -0
  1163. package/RNTester/js/assets/hawk.png +0 -0
  1164. package/RNTester/js/assets/heart.png +0 -0
  1165. package/RNTester/js/assets/helloworld.html +0 -25
  1166. package/RNTester/js/assets/imageMask.png +0 -0
  1167. package/RNTester/js/assets/like.png +0 -0
  1168. package/RNTester/js/assets/liking.png +0 -0
  1169. package/RNTester/js/assets/messagingtest.html +0 -28
  1170. package/RNTester/js/assets/party.png +0 -0
  1171. package/RNTester/js/assets/poke.png +0 -0
  1172. package/RNTester/js/assets/relay@3x.png +0 -0
  1173. package/RNTester/js/assets/slider-left.png +0 -0
  1174. package/RNTester/js/assets/slider-left@2x.png +0 -0
  1175. package/RNTester/js/assets/slider-right.png +0 -0
  1176. package/RNTester/js/assets/slider-right@2x.png +0 -0
  1177. package/RNTester/js/assets/slider.png +0 -0
  1178. package/RNTester/js/assets/slider@2x.png +0 -0
  1179. package/RNTester/js/assets/superlike.png +0 -0
  1180. package/RNTester/js/assets/trees.jpg +0 -0
  1181. package/RNTester/js/assets/tumblr_mfqekpMktw1rn90umo1_500.gif +0 -0
  1182. package/RNTester/js/assets/uie_comment_highlighted@2x.png +0 -0
  1183. package/RNTester/js/assets/uie_comment_normal@2x.png +0 -0
  1184. package/RNTester/js/assets/uie_thumb_big.png +0 -0
  1185. package/RNTester/js/assets/uie_thumb_normal@2x.png +0 -0
  1186. package/RNTester/js/assets/uie_thumb_selected@2x.png +0 -0
  1187. package/RNTester/js/assets/victory.png +0 -0
  1188. package/RNTester/js/components/ListExampleShared.js +0 -377
  1189. package/RNTester/js/components/ListExampleShared.win32.js +0 -384
  1190. package/RNTester/js/components/RNTesterBlock.js +0 -105
  1191. package/RNTester/js/components/RNTesterButton.js +0 -50
  1192. package/RNTester/js/components/RNTesterExampleContainer.js +0 -80
  1193. package/RNTester/js/components/RNTesterExampleFilter.js +0 -120
  1194. package/RNTester/js/components/RNTesterExampleFilter.win32.js +0 -120
  1195. package/RNTester/js/components/RNTesterExampleList.js +0 -254
  1196. package/RNTester/js/components/RNTesterPage.js +0 -76
  1197. package/RNTester/js/components/RNTesterSettingSwitchRow.js +0 -60
  1198. package/RNTester/js/components/RNTesterTheme.js +0 -90
  1199. package/RNTester/js/components/RNTesterTitle.js +0 -58
  1200. package/RNTester/js/components/TextInlineView.js +0 -207
  1201. package/RNTester/js/components/TextLegend.js +0 -248
  1202. package/RNTester/js/components/createExamplePage.js +0 -31
  1203. package/RNTester/js/examples/Accessibility/AccessibilityAndroidExample.android.js +0 -177
  1204. package/RNTester/js/examples/Accessibility/AccessibilityExample.js +0 -792
  1205. package/RNTester/js/examples/Accessibility/AccessibilityIOSExample.js +0 -72
  1206. package/RNTester/js/examples/Accessibility/check.png +0 -0
  1207. package/RNTester/js/examples/Accessibility/mixed.png +0 -0
  1208. package/RNTester/js/examples/Accessibility/uncheck.png +0 -0
  1209. package/RNTester/js/examples/ActionSheetIOS/ActionSheetIOSExample.js +0 -342
  1210. package/RNTester/js/examples/ActivityIndicator/ActivityIndicatorExample.js +0 -162
  1211. package/RNTester/js/examples/Alert/AlertExample.js +0 -158
  1212. package/RNTester/js/examples/Alert/AlertIOSExample.js +0 -204
  1213. package/RNTester/js/examples/Animated/AnimatedExample.js +0 -347
  1214. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExApp.js +0 -407
  1215. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExBobble.js +0 -171
  1216. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExChained.js +0 -120
  1217. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExScroll.js +0 -124
  1218. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExSet.js +0 -149
  1219. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExSlides.md +0 -107
  1220. package/RNTester/js/examples/Animated/AnimatedGratuitousApp/AnExTilt.js +0 -154
  1221. package/RNTester/js/examples/AppState/AppStateExample.js +0 -106
  1222. package/RNTester/js/examples/Appearance/AppearanceExample.js +0 -219
  1223. package/RNTester/js/examples/AsyncStorage/AsyncStorageExample.js +0 -103
  1224. package/RNTester/js/examples/Border/BorderExample.js +0 -301
  1225. package/RNTester/js/examples/BoxShadow/BoxShadowExample.js +0 -100
  1226. package/RNTester/js/examples/Button/ButtonExample.js +0 -127
  1227. package/RNTester/js/examples/CheckBox/CheckBoxExample.js +0 -148
  1228. package/RNTester/js/examples/Clipboard/ClipboardExample.js +0 -68
  1229. package/RNTester/js/examples/ColorGradientWin32Example.js +0 -109
  1230. package/RNTester/js/examples/Crash/CrashExample.js +0 -52
  1231. package/RNTester/js/examples/DatePicker/DatePickerAndroidExample.js +0 -170
  1232. package/RNTester/js/examples/DatePicker/DatePickerIOSExample.js +0 -150
  1233. package/RNTester/js/examples/DevSettings/DevSettingsExample.js +0 -47
  1234. package/RNTester/js/examples/Dimensions/DimensionsExample.js +0 -68
  1235. package/RNTester/js/examples/FlatList/FlatListExample.js +0 -287
  1236. package/RNTester/js/examples/Image/ImageCapInsetsExample.js +0 -68
  1237. package/RNTester/js/examples/Image/ImageExample.js +0 -955
  1238. package/RNTester/js/examples/InputAccessoryView/InputAccessoryViewExample.js +0 -121
  1239. package/RNTester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js +0 -77
  1240. package/RNTester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js +0 -120
  1241. package/RNTester/js/examples/Layout/LayoutAnimationExample.js +0 -221
  1242. package/RNTester/js/examples/Layout/LayoutEventsExample.js +0 -165
  1243. package/RNTester/js/examples/Layout/LayoutExample.js +0 -206
  1244. package/RNTester/js/examples/Linking/LinkingExample.js +0 -128
  1245. package/RNTester/js/examples/MaskedView/MaskedViewExample.js +0 -236
  1246. package/RNTester/js/examples/Modal/ModalExample.js +0 -283
  1247. package/RNTester/js/examples/MultiColumn/MultiColumnExample.js +0 -189
  1248. package/RNTester/js/examples/NativeAnimation/NativeAnimationsExample.js +0 -702
  1249. package/RNTester/js/examples/NewAppScreen/NewAppScreenExample.js +0 -77
  1250. package/RNTester/js/examples/OrientationChange/OrientationChangeExample.js +0 -66
  1251. package/RNTester/js/examples/PanResponder/PanResponderExample.js +0 -154
  1252. package/RNTester/js/examples/PermissionsAndroid/PermissionsExample.js +0 -130
  1253. package/RNTester/js/examples/Picker/PickerExample.js +0 -220
  1254. package/RNTester/js/examples/Picker/PickerIOSExample.js +0 -190
  1255. package/RNTester/js/examples/PlatformColor/PlatformColorExample.js +0 -355
  1256. package/RNTester/js/examples/PointerEvents/PointerEventsExample.js +0 -240
  1257. package/RNTester/js/examples/Pressable/PressableExample.js +0 -426
  1258. package/RNTester/js/examples/ProgressBarAndroid/ProgressBarAndroidExample.android.js +0 -94
  1259. package/RNTester/js/examples/ProgressViewIOS/ProgressViewIOSExample.js +0 -103
  1260. package/RNTester/js/examples/PushNotificationIOS/PushNotificationIOSExample.js +0 -267
  1261. package/RNTester/js/examples/RCTRootView/RCTRootViewIOSExample.js +0 -95
  1262. package/RNTester/js/examples/RTL/RTLExample.js +0 -747
  1263. package/RNTester/js/examples/RefreshControl/RefreshControlExample.js +0 -127
  1264. package/RNTester/js/examples/RootViewSizeFlexibilityExample/RootViewSizeFlexibilityExampleApp.js +0 -68
  1265. package/RNTester/js/examples/SafeAreaView/SafeAreaViewExample.js +0 -137
  1266. package/RNTester/js/examples/ScrollView/ScrollViewAnimatedExample.js +0 -107
  1267. package/RNTester/js/examples/ScrollView/ScrollViewExample.js +0 -346
  1268. package/RNTester/js/examples/ScrollView/ScrollViewSimpleExample.js +0 -105
  1269. package/RNTester/js/examples/SectionList/SectionListExample.js +0 -301
  1270. package/RNTester/js/examples/SegmentedControlIOS/SegmentedControlIOSExample.js +0 -183
  1271. package/RNTester/js/examples/SetPropertiesExample/SetPropertiesExampleApp.js +0 -34
  1272. package/RNTester/js/examples/Share/ShareExample.js +0 -124
  1273. package/RNTester/js/examples/Slider/SliderExample.js +0 -136
  1274. package/RNTester/js/examples/Snapshot/SnapshotExample.js +0 -69
  1275. package/RNTester/js/examples/Snapshot/SnapshotViewIOS.android.js +0 -12
  1276. package/RNTester/js/examples/Snapshot/SnapshotViewIOS.ios.js +0 -67
  1277. package/RNTester/js/examples/StatusBar/StatusBarExample.js +0 -522
  1278. package/RNTester/js/examples/Switch/SwitchExample.js +0 -239
  1279. package/RNTester/js/examples/TVEventHandler/TVEventHandlerExample.js +0 -88
  1280. package/RNTester/js/examples/Text/TextExample.android.js +0 -864
  1281. package/RNTester/js/examples/Text/TextExample.ios.js +0 -1153
  1282. package/RNTester/js/examples/TextInput/TextInputExample.android.js +0 -424
  1283. package/RNTester/js/examples/TextInput/TextInputExample.ios.js +0 -710
  1284. package/RNTester/js/examples/TextInput/TextInputSharedExamples.js +0 -618
  1285. package/RNTester/js/examples/Timer/TimerExample.js +0 -373
  1286. package/RNTester/js/examples/ToastAndroid/ToastAndroidExample.android.js +0 -136
  1287. package/RNTester/js/examples/Touchable/TouchableExample.js +0 -664
  1288. package/RNTester/js/examples/Transform/TransformExample.js +0 -336
  1289. package/RNTester/js/examples/TransparentHitTest/TransparentHitTestExample.js +0 -50
  1290. package/RNTester/js/examples/TurboModule/SampleTurboModuleExample.js +0 -190
  1291. package/RNTester/js/examples/TurboModule/TurboModuleExample.js +0 -26
  1292. package/RNTester/js/examples/Vibration/VibrationExample.js +0 -127
  1293. package/RNTester/js/examples/View/ViewExample.js +0 -471
  1294. package/RNTester/js/examples/WebSocket/WebSocketExample.js +0 -356
  1295. package/RNTester/js/examples/WebSocket/http_test_server.js +0 -33
  1296. package/RNTester/js/examples/WebSocket/websocket_test_server.js +0 -46
  1297. package/RNTester/js/examples/XHR/XHRExample.js +0 -62
  1298. package/RNTester/js/examples/XHR/XHRExampleAbortController.js +0 -58
  1299. package/RNTester/js/examples/XHR/XHRExampleBinaryUpload.js +0 -149
  1300. package/RNTester/js/examples/XHR/XHRExampleDownload.js +0 -242
  1301. package/RNTester/js/examples/XHR/XHRExampleFetch.js +0 -133
  1302. package/RNTester/js/examples/XHR/XHRExampleHeaders.js +0 -114
  1303. package/RNTester/js/examples/XHR/XHRExampleOnTimeOut.js +0 -99
  1304. package/RNTester/js/types/RNTesterTypes.js +0 -47
  1305. package/RNTester/js/utils/RNTesterActions.js +0 -53
  1306. package/RNTester/js/utils/RNTesterList.android.js +0 -257
  1307. package/RNTester/js/utils/RNTesterList.ios.js +0 -366
  1308. package/RNTester/js/utils/RNTesterList.win32.js +0 -240
  1309. package/RNTester/js/utils/RNTesterNavigationReducer.js +0 -49
  1310. package/RNTester/js/utils/RNTesterStatePersister.js +0 -86
  1311. package/RNTester/js/utils/URIActionMap.js +0 -48
  1312. package/api-extractor.json +0 -25
  1313. package/demo/DocPagePropsList.d.ts +0 -18
  1314. package/demo/DocPagePropsList.js +0 -7
  1315. package/demo/DocPagePropsList.js.map +0 -1
  1316. package/docs/api/index.md +0 -12
  1317. package/docs/api/react-native-win32.accessibilityactionevent.md +0 -13
  1318. package/docs/api/react-native-win32.accessibilityactioninfo.md +0 -14
  1319. package/docs/api/react-native-win32.accessibilityactionname.md +0 -11
  1320. package/docs/api/react-native-win32.accessibilityannotationinfo.md +0 -16
  1321. package/docs/api/react-native-win32.accessibilitystate.md +0 -14
  1322. package/docs/api/react-native-win32.annotationtype.md +0 -11
  1323. package/docs/api/react-native-win32.ariarole.md +0 -11
  1324. package/docs/api/react-native-win32.basepropswin32.md +0 -17
  1325. package/docs/api/react-native-win32.buttonwin32._constructor_.md +0 -20
  1326. package/docs/api/react-native-win32.buttonwin32.md +0 -27
  1327. package/docs/api/react-native-win32.buttonwin32.render.md +0 -15
  1328. package/docs/api/react-native-win32.buttonwin32omitstyles.md +0 -11
  1329. package/docs/api/react-native-win32.colorgradientwin32.md +0 -15
  1330. package/docs/api/react-native-win32.cursor.md +0 -11
  1331. package/docs/api/react-native-win32.eventphase.md +0 -21
  1332. package/docs/api/react-native-win32.gradientcolorstop.md +0 -16
  1333. package/docs/api/react-native-win32.gradientcolorvaluewin32.md +0 -16
  1334. package/docs/api/react-native-win32.ibuttonwin32props.md +0 -25
  1335. package/docs/api/react-native-win32.ibuttonwin32props.onblur.md +0 -13
  1336. package/docs/api/react-native-win32.ibuttonwin32props.onfocus.md +0 -13
  1337. package/docs/api/react-native-win32.ibuttonwin32props.onmouseenter.md +0 -13
  1338. package/docs/api/react-native-win32.ibuttonwin32props.onmouseleave.md +0 -13
  1339. package/docs/api/react-native-win32.ibuttonwin32props.ontouchend.md +0 -13
  1340. package/docs/api/react-native-win32.ibuttonwin32props.ontouchstart.md +0 -13
  1341. package/docs/api/react-native-win32.ibuttonwin32props.style.md +0 -13
  1342. package/docs/api/react-native-win32.ibuttonwin32style.md +0 -13
  1343. package/docs/api/react-native-win32.ichildasfunction.md +0 -13
  1344. package/docs/api/react-native-win32.idimensions.height.md +0 -11
  1345. package/docs/api/react-native-win32.idimensions.md +0 -21
  1346. package/docs/api/react-native-win32.idimensions.width.md +0 -11
  1347. package/docs/api/react-native-win32.ihandledkeyboardevent.md +0 -11
  1348. package/docs/api/react-native-win32.ikeyboardevent.md +0 -11
  1349. package/docs/api/react-native-win32.inativekeyboardevent.altkey.md +0 -11
  1350. package/docs/api/react-native-win32.inativekeyboardevent.ctrlkey.md +0 -11
  1351. package/docs/api/react-native-win32.inativekeyboardevent.eventphase.md +0 -11
  1352. package/docs/api/react-native-win32.inativekeyboardevent.key.md +0 -11
  1353. package/docs/api/react-native-win32.inativekeyboardevent.md +0 -23
  1354. package/docs/api/react-native-win32.inativekeyboardevent.metakey.md +0 -11
  1355. package/docs/api/react-native-win32.inativekeyboardevent.shiftkey.md +0 -11
  1356. package/docs/api/react-native-win32.ipersonacoinprops.brandiconsource.md +0 -11
  1357. package/docs/api/react-native-win32.ipersonacoinprops.color.md +0 -11
  1358. package/docs/api/react-native-win32.ipersonacoinprops.disabled.md +0 -11
  1359. package/docs/api/react-native-win32.ipersonacoinprops.displayname.md +0 -11
  1360. package/docs/api/react-native-win32.ipersonacoinprops.emailaddress.md +0 -11
  1361. package/docs/api/react-native-win32.ipersonacoinprops.initials.md +0 -11
  1362. package/docs/api/react-native-win32.ipersonacoinprops.md +0 -29
  1363. package/docs/api/react-native-win32.ipersonacoinprops.onerror.md +0 -11
  1364. package/docs/api/react-native-win32.ipersonacoinprops.onload.md +0 -11
  1365. package/docs/api/react-native-win32.ipersonacoinprops.presence.md +0 -11
  1366. package/docs/api/react-native-win32.ipersonacoinprops.size.md +0 -11
  1367. package/docs/api/react-native-win32.ipersonacoinprops.source.md +0 -11
  1368. package/docs/api/react-native-win32.iposition.left.md +0 -11
  1369. package/docs/api/react-native-win32.iposition.md +0 -21
  1370. package/docs/api/react-native-win32.iposition.top.md +0 -11
  1371. package/docs/api/react-native-win32.ipressevent.md +0 -24
  1372. package/docs/api/react-native-win32.ipressinlocation.locationx.md +0 -11
  1373. package/docs/api/react-native-win32.ipressinlocation.locationy.md +0 -11
  1374. package/docs/api/react-native-win32.ipressinlocation.md +0 -23
  1375. package/docs/api/react-native-win32.ipressinlocation.pagex.md +0 -11
  1376. package/docs/api/react-native-win32.ipressinlocation.pagey.md +0 -11
  1377. package/docs/api/react-native-win32.irenderchild.md +0 -13
  1378. package/docs/api/react-native-win32.irenderstyle.md +0 -13
  1379. package/docs/api/react-native-win32.irespondersyntheticevent.md +0 -21
  1380. package/docs/api/react-native-win32.irespondersyntheticevent.touchhistory.md +0 -16
  1381. package/docs/api/react-native-win32.isignal.md +0 -13
  1382. package/docs/api/react-native-win32.istate.md +0 -13
  1383. package/docs/api/react-native-win32.istateconditions.md +0 -15
  1384. package/docs/api/react-native-win32.itextwin32props.md +0 -20
  1385. package/docs/api/react-native-win32.itextwin32props.textstyle.md +0 -25
  1386. package/docs/api/react-native-win32.itextwin32props.tooltip.md +0 -13
  1387. package/docs/api/react-native-win32.itouchablewin32props.children.md +0 -11
  1388. package/docs/api/react-native-win32.itouchablewin32props.disabled.md +0 -11
  1389. package/docs/api/react-native-win32.itouchablewin32props.filterkeys.md +0 -13
  1390. package/docs/api/react-native-win32.itouchablewin32props.md +0 -36
  1391. package/docs/api/react-native-win32.itouchablewin32props.onlongpress.md +0 -11
  1392. package/docs/api/react-native-win32.itouchablewin32props.rejectrespondertermination.md +0 -11
  1393. package/docs/api/react-native-win32.itouchablewin32props.renderstyle.md +0 -11
  1394. package/docs/api/react-native-win32.itouchablewin32props.touchablegethighlightdelayms.md +0 -11
  1395. package/docs/api/react-native-win32.itouchablewin32props.touchablegethitslop.md +0 -11
  1396. package/docs/api/react-native-win32.itouchablewin32props.touchablegetlongpressdelayms.md +0 -11
  1397. package/docs/api/react-native-win32.itouchablewin32props.touchablegetpressoutdelayms.md +0 -11
  1398. package/docs/api/react-native-win32.itouchablewin32props.touchablegetpressrectoffset.md +0 -11
  1399. package/docs/api/react-native-win32.itouchablewin32props.touchablehandleactivepressin.md +0 -11
  1400. package/docs/api/react-native-win32.itouchablewin32props.touchablehandleactivepressout.md +0 -11
  1401. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlekeypress.md +0 -11
  1402. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlekeypressdown.md +0 -11
  1403. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlelongpress.md +0 -11
  1404. package/docs/api/react-native-win32.itouchablewin32props.touchablehandlepress.md +0 -11
  1405. package/docs/api/react-native-win32.itouchablewin32props.touchsounddisabled.md +0 -11
  1406. package/docs/api/react-native-win32.itouchablewin32state.isfocused.md +0 -11
  1407. package/docs/api/react-native-win32.itouchablewin32state.ishovered.md +0 -11
  1408. package/docs/api/react-native-win32.itouchablewin32state.ispressed.md +0 -11
  1409. package/docs/api/react-native-win32.itouchablewin32state.md +0 -20
  1410. package/docs/api/react-native-win32.itouchinfo.currentpagex.md +0 -11
  1411. package/docs/api/react-native-win32.itouchinfo.currentpagey.md +0 -11
  1412. package/docs/api/react-native-win32.itouchinfo.currenttimestamp.md +0 -11
  1413. package/docs/api/react-native-win32.itouchinfo.md +0 -29
  1414. package/docs/api/react-native-win32.itouchinfo.previouspagex.md +0 -11
  1415. package/docs/api/react-native-win32.itouchinfo.previouspagey.md +0 -11
  1416. package/docs/api/react-native-win32.itouchinfo.previoustimestamp.md +0 -11
  1417. package/docs/api/react-native-win32.itouchinfo.startpagex.md +0 -11
  1418. package/docs/api/react-native-win32.itouchinfo.startpagey.md +0 -11
  1419. package/docs/api/react-native-win32.itouchinfo.starttimestamp.md +0 -11
  1420. package/docs/api/react-native-win32.itouchinfo.touchactive.md +0 -11
  1421. package/docs/api/react-native-win32.itransitions.md +0 -15
  1422. package/docs/api/react-native-win32.iviewwin32.focus.md +0 -11
  1423. package/docs/api/react-native-win32.iviewwin32.md +0 -18
  1424. package/docs/api/react-native-win32.iviewwin32props.acceptskeyboardfocus.md +0 -16
  1425. package/docs/api/react-native-win32.iviewwin32props.accessibilityactions.md +0 -11
  1426. package/docs/api/react-native-win32.iviewwin32props.accessibilityannotation.md +0 -15
  1427. package/docs/api/react-native-win32.iviewwin32props.accessibilitylevel.md +0 -11
  1428. package/docs/api/react-native-win32.iviewwin32props.accessibilitypositioninset.md +0 -11
  1429. package/docs/api/react-native-win32.iviewwin32props.accessibilitysetsize.md +0 -11
  1430. package/docs/api/react-native-win32.iviewwin32props.animationclass.md +0 -11
  1431. package/docs/api/react-native-win32.iviewwin32props.children.md +0 -11
  1432. package/docs/api/react-native-win32.iviewwin32props.cursor.md +0 -11
  1433. package/docs/api/react-native-win32.iviewwin32props.focusable.md +0 -11
  1434. package/docs/api/react-native-win32.iviewwin32props.keydownevents.md +0 -11
  1435. package/docs/api/react-native-win32.iviewwin32props.keyupevents.md +0 -11
  1436. package/docs/api/react-native-win32.iviewwin32props.md +0 -44
  1437. package/docs/api/react-native-win32.iviewwin32props.onblur.md +0 -15
  1438. package/docs/api/react-native-win32.iviewwin32props.onblurcapture.md +0 -15
  1439. package/docs/api/react-native-win32.iviewwin32props.onfocus.md +0 -15
  1440. package/docs/api/react-native-win32.iviewwin32props.onfocuscapture.md +0 -15
  1441. package/docs/api/react-native-win32.iviewwin32props.onkeydown.md +0 -11
  1442. package/docs/api/react-native-win32.iviewwin32props.onkeydowncapture.md +0 -11
  1443. package/docs/api/react-native-win32.iviewwin32props.onkeyup.md +0 -11
  1444. package/docs/api/react-native-win32.iviewwin32props.onkeyupcapture.md +0 -11
  1445. package/docs/api/react-native-win32.iviewwin32props.onmouseenter.md +0 -11
  1446. package/docs/api/react-native-win32.iviewwin32props.onmouseleave.md +0 -11
  1447. package/docs/api/react-native-win32.iviewwin32props.tooltip.md +0 -13
  1448. package/docs/api/react-native-win32.iviewwin32props.type.md +0 -11
  1449. package/docs/api/react-native-win32.md +0 -85
  1450. package/docs/api/react-native-win32.omittedaccessibilitypropswin32.md +0 -15
  1451. package/docs/api/react-native-win32.personacoin.md +0 -11
  1452. package/docs/api/react-native-win32.personacoinpresence.md +0 -25
  1453. package/docs/api/react-native-win32.personacoinsize.md +0 -23
  1454. package/docs/api/react-native-win32.sharedaccessibilitypropsiosandwin32.md +0 -13
  1455. package/docs/api/react-native-win32.textstyle.md +0 -13
  1456. package/docs/api/react-native-win32.textwin32._constructor_.md +0 -20
  1457. package/docs/api/react-native-win32.textwin32.md +0 -25
  1458. package/docs/api/react-native-win32.textwin32.render.md +0 -15
  1459. package/docs/api/react-native-win32.textwin32omittypes.md +0 -11
  1460. package/docs/api/react-native-win32.touchablewin32._constructor_.md +0 -20
  1461. package/docs/api/react-native-win32.touchablewin32.componentwillunmount.md +0 -15
  1462. package/docs/api/react-native-win32.touchablewin32.focus.md +0 -11
  1463. package/docs/api/react-native-win32.touchablewin32.md +0 -34
  1464. package/docs/api/react-native-win32.touchablewin32.render.md +0 -15
  1465. package/docs/api/react-native-win32.usefrom.md +0 -13
  1466. package/docs/api/react-native-win32.viewwin32.md +0 -11
  1467. package/docs/api/react-native-win32.viewwin32omittypes.md +0 -11
  1468. package/etc/react-native-win32.api.md +0 -481
  1469. package/flow/Position.js +0 -16
  1470. package/flow/Promise.js +0 -47
  1471. package/flow/fbjs.js +0 -258
  1472. package/flow/jest.js +0 -1189
  1473. package/flow/use-subscription.js +0 -19
  1474. package/jest/preprocessor.js +0 -120
  1475. package/typings-index.d.ts +0 -20
  1476. package/typings-index.js +0 -40
@@ -1,2237 +1,24 @@
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 VirtualizedLists 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');
15
+ type VirtualizedListType = typeof VirtualizedLists.VirtualizedList;
16
+ const VirtualizedList: VirtualizedListType = VirtualizedLists.VirtualizedList;
28
17
 
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
- });
2236
-
2237
- module.exports = VirtualizedList;
18
+ export type {
19
+ ListRenderItemInfo,
20
+ ListRenderItem,
21
+ Separators,
22
+ VirtualizedListProps,
23
+ } from '@react-native/virtualized-lists';
24
+ export default VirtualizedList;