@office-iss/react-native-win32 0.71.5 → 0.72.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/.flowconfig +15 -3
  2. package/CHANGELOG.json +302 -47
  3. package/CHANGELOG.md +141 -27
  4. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -0
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
  6. package/Libraries/Alert/Alert.d.ts +4 -4
  7. package/Libraries/Alert/Alert.win32.js +1 -0
  8. package/Libraries/Animated/Animated.d.ts +17 -6
  9. package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
  10. package/Libraries/Animated/NativeAnimatedHelper.win32.js +606 -0
  11. package/Libraries/Animated/bezier.js +1 -1
  12. package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
  13. package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
  14. package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
  15. package/Libraries/Animated/createAnimatedComponent.js +26 -239
  16. package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
  17. package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
  18. package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
  19. package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
  20. package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
  21. package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
  23. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  24. package/Libraries/Animated/useAnimatedProps.js +7 -10
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -1
  26. package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  28. package/Libraries/Blob/Blob.js +4 -0
  29. package/Libraries/Blob/FileReader.js +30 -2
  30. package/Libraries/Blob/URL.js +3 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +2 -3
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
  35. package/Libraries/Components/Button.js +3 -2
  36. package/Libraries/Components/Button.win32.js +451 -0
  37. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  39. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
  40. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  41. package/Libraries/Components/Pressable/Pressable.js +1 -1
  42. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
  43. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
  44. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +1 -2
  45. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
  46. package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
  47. package/Libraries/Components/ScrollView/ScrollView.js +149 -91
  48. package/Libraries/Components/ScrollView/ScrollView.win32.js +1939 -0
  49. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
  50. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
  51. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
  52. package/Libraries/Components/StatusBar/StatusBar.js +3 -0
  53. package/Libraries/Components/Switch/Switch.js +3 -1
  54. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
  55. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
  57. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +51 -0
  58. package/Libraries/Components/TextInput/TextInput.Types.win32.js +3 -0
  59. package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +1 -0
  60. package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
  61. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  62. package/Libraries/Components/TextInput/TextInput.js +130 -103
  63. package/Libraries/Components/TextInput/TextInput.win32.js +202 -890
  64. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  65. package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
  66. package/Libraries/Components/Touchable/Touchable.js +6 -3
  67. package/Libraries/Components/Touchable/Touchable.win32.js +6 -3
  68. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
  71. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  73. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +189 -0
  74. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
  75. package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
  76. package/Libraries/Components/View/View.js +71 -45
  77. package/Libraries/Components/View/View.win32.js +38 -16
  78. package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
  79. package/Libraries/Components/View/ViewAccessibility.js +10 -1
  80. package/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  81. package/Libraries/Components/View/ViewNativeComponent.js +32 -8
  82. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
  83. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  84. package/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
  86. package/Libraries/Components/View/ViewWin32.js +3 -3
  87. package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
  88. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
  89. package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
  90. package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
  91. package/Libraries/Core/ExceptionsManager.js +2 -2
  92. package/Libraries/Core/InitializeCore.js +2 -1
  93. package/Libraries/Core/ReactNativeVersion.js +3 -3
  94. package/Libraries/Core/ReactNativeVersionCheck.js +1 -9
  95. package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -9
  96. package/Libraries/Core/Timers/JSTimers.js +1 -1
  97. package/Libraries/Core/Timers/immediateShim.js +1 -0
  98. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  99. package/Libraries/Core/setUpAlert.js +1 -1
  100. package/Libraries/Core/setUpDOM.js +18 -0
  101. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  102. package/Libraries/Core/setUpGlobals.js +5 -2
  103. package/Libraries/Core/setUpNavigator.js +6 -5
  104. package/Libraries/Core/setUpPerformance.js +23 -13
  105. package/Libraries/Core/setUpReactDevTools.js +2 -0
  106. package/Libraries/Core/setUpSegmentFetcher.js +0 -41
  107. package/Libraries/Core/setUpTimers.js +2 -2
  108. package/Libraries/DOM/Geometry/DOMRect.js +82 -0
  109. package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
  110. package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
  111. package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
  112. package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
  113. package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
  114. package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
  115. package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
  116. package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
  117. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
  118. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
  119. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
  120. package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +35 -0
  121. package/Libraries/{Utilities/NativeDevSplitBundleLoader.js → DevToolsSettings/NativeDevToolsSettingsManager.js} +7 -2
  122. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
  123. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
  124. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
  125. package/Libraries/Events/EventPolyfill.js +1 -1
  126. package/Libraries/Image/AssetRegistry.js +1 -1
  127. package/Libraries/Image/AssetSourceResolver.js +3 -3
  128. package/Libraries/Image/Image.android.js +4 -1
  129. package/Libraries/Image/Image.d.ts +63 -2
  130. package/Libraries/Image/Image.ios.js +3 -0
  131. package/Libraries/Image/Image.win32.js +3 -0
  132. package/Libraries/Image/ImageBackground.js +1 -0
  133. package/Libraries/Image/ImageProps.js +1 -1
  134. package/Libraries/Image/ImageViewNativeComponent.js +4 -4
  135. package/Libraries/Image/RelativeImageStub.js +1 -1
  136. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  137. package/Libraries/Image/resolveAssetSource.js +1 -1
  138. package/Libraries/Inspector/DevtoolsOverlay.js +29 -19
  139. package/Libraries/Inspector/ElementBox.js +4 -1
  140. package/Libraries/Inspector/Inspector.js +5 -6
  141. package/Libraries/Inspector/Inspector.win32.js +7 -6
  142. package/Libraries/Inspector/InspectorOverlay.js +3 -3
  143. package/Libraries/Inspector/InspectorOverlay.win32.js +2 -1
  144. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  145. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  146. package/Libraries/Interaction/PanResponder.js +5 -6
  147. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
  148. package/Libraries/Linking/Linking.js +1 -4
  149. package/Libraries/Lists/FillRateHelper.js +4 -238
  150. package/Libraries/Lists/FlatList.d.ts +15 -22
  151. package/Libraries/Lists/FlatList.js +9 -6
  152. package/Libraries/Lists/SectionList.d.ts +10 -6
  153. package/Libraries/Lists/SectionList.js +5 -3
  154. package/Libraries/Lists/SectionListModern.js +3 -3
  155. package/Libraries/Lists/ViewabilityHelper.js +8 -344
  156. package/Libraries/Lists/VirtualizeUtils.js +4 -244
  157. package/Libraries/Lists/VirtualizedList.js +10 -1867
  158. package/Libraries/Lists/VirtualizedListContext.js +6 -104
  159. package/Libraries/Lists/VirtualizedSectionList.js +9 -602
  160. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
  161. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  162. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  163. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  164. package/Libraries/LogBox/LogBox.js +1 -1
  165. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
  166. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +168 -0
  167. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +3 -0
  168. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +193 -0
  169. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  170. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
  171. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +7 -3
  172. package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
  173. package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
  174. package/Libraries/Modal/Modal.js +2 -2
  175. package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
  176. package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
  177. package/Libraries/NativeComponent/BaseViewConfig.win32.js +43 -19
  178. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
  179. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  180. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
  181. package/Libraries/Network/RCTNetworking.android.js +2 -2
  182. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  183. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  184. package/Libraries/Network/XMLHttpRequest.js +1 -1
  185. package/Libraries/Pressability/Pressability.js +11 -5
  186. package/Libraries/Pressability/Pressability.win32.js +9 -3
  187. package/Libraries/ReactNative/AppContainer.js +7 -1
  188. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  189. package/Libraries/ReactNative/AppRegistry.js +10 -13
  190. package/Libraries/ReactNative/FabricUIManager.js +24 -8
  191. package/Libraries/ReactNative/NativeUIManager.js +5 -5
  192. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
  193. package/Libraries/ReactNative/UIManager.js +142 -1
  194. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
  195. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  196. package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
  197. package/Libraries/ReactNative/requireNativeComponent.js +1 -1
  198. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  199. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  200. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  201. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  202. package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
  203. package/Libraries/Renderer/shims/ReactNativeTypes.js +38 -20
  204. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
  205. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  206. package/Libraries/Share/Share.js +1 -1
  207. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  208. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  209. package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
  210. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
  211. package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
  212. package/Libraries/StyleSheet/flattenStyle.js +2 -0
  213. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  214. package/Libraries/StyleSheet/processColor.js +1 -1
  215. package/Libraries/Text/Text.d.ts +12 -2
  216. package/Libraries/Text/Text.js +50 -41
  217. package/Libraries/Text/TextProps.js +3 -4
  218. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  219. package/Libraries/Types/CodegenTypes.js +1 -0
  220. package/Libraries/UTFSequence.js +3 -1
  221. package/Libraries/Utilities/Appearance.d.ts +10 -0
  222. package/Libraries/Utilities/Appearance.js +13 -0
  223. package/Libraries/Utilities/Dimensions.js +1 -1
  224. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  225. package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
  226. package/Libraries/Utilities/HMRClient.js +16 -10
  227. package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
  228. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  229. package/Libraries/Utilities/LoadingView.android.js +28 -11
  230. package/Libraries/Utilities/NativeAppearance.js +1 -0
  231. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
  232. package/Libraries/Utilities/PixelRatio.js +2 -2
  233. package/Libraries/Utilities/Platform.win32.js +1 -1
  234. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  235. package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
  236. package/Libraries/Utilities/codegenNativeCommands.js +2 -0
  237. package/Libraries/Utilities/createPerformanceLogger.js +55 -43
  238. package/Libraries/Utilities/stringifySafe.js +2 -7
  239. package/Libraries/Utilities/useColorScheme.js +1 -1
  240. package/Libraries/Utilities/useWindowDimensions.js +3 -3
  241. package/Libraries/WebPerformance/EventCounts.js +78 -0
  242. package/Libraries/WebPerformance/MemoryInfo.js +54 -0
  243. package/Libraries/WebPerformance/NativePerformance.js +38 -0
  244. package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
  245. package/Libraries/WebPerformance/Performance.js +312 -0
  246. package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
  247. package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
  248. package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
  249. package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
  250. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
  251. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
  252. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
  253. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  254. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  255. package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
  256. package/Libraries/vendor/emitter/EventEmitter.js +9 -1
  257. package/flow/global.js +29 -4
  258. package/flow/jest.js +258 -164
  259. package/index.js +56 -42
  260. package/index.win32.js +56 -42
  261. package/interface.js +1 -1
  262. package/jest/local-setup.js +33 -0
  263. package/jest/mockComponent.js +4 -2
  264. package/jest/mockNativeComponent.js +1 -1
  265. package/jest/mockScrollView.js +2 -1
  266. package/jest/react-native-env.js +1 -3
  267. package/jest/setup.js +11 -8
  268. package/overrides.json +115 -85
  269. package/package.json +38 -28
  270. package/rn-get-polyfills.js +1 -1
  271. package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
  272. package/src/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  273. package/src/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  274. package/types/index.d.ts +2 -6
  275. package/types/modules/Codegen.d.ts +4 -4
  276. package/types/modules/globals.d.ts +27 -25
  277. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -20
  278. package/types/public/ReactNativeRenderer.d.ts +2 -7
  279. package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
  280. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
  281. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
  282. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
  283. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
  284. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
  285. package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
  286. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
  287. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
  288. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -47
  289. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  290. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
  291. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
  292. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
  293. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
  294. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -45
  295. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
  296. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
  297. package/Libraries/Components/Slider/Slider.d.ts +0 -132
  298. package/Libraries/Components/Slider/Slider.js +0 -282
  299. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
  300. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +0 -23
  301. package/Libraries/Interaction/Batchinator.js +0 -76
  302. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
  303. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  304. package/Libraries/Interaction/PanResponder.flow.js +0 -257
  305. package/Libraries/Lists/CellRenderMask.js +0 -155
  306. package/Libraries/Lists/ChildListCollection.js +0 -72
  307. package/Libraries/Lists/StateSafePureComponent.js +0 -85
  308. package/Libraries/Lists/VirtualizedList.d.ts +0 -347
  309. package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
  310. package/Libraries/Lists/VirtualizedListProps.js +0 -279
  311. package/Libraries/Performance/PureComponentDebug.js +0 -74
  312. package/Libraries/Reliability/UserFlow.js +0 -158
  313. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
  314. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
  315. package/Libraries/Utilities/MatrixMath.js +0 -748
  316. package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
  317. package/Libraries/Utilities/clamp.js +0 -23
  318. package/Libraries/Utilities/deprecatedPropType.js +0 -36
  319. package/Libraries/Utilities/groupByEveryN.js +0 -51
  320. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  321. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  322. package/Libraries/Utilities/truncate.js +0 -51
  323. package/flow/JSITimerInternalType.js +0 -30
  324. package/flow/use-sync-external-store.js +0 -19
@@ -71,7 +71,7 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
71
71
  internal_analyticTag: true,
72
72
  resizeMode: true,
73
73
  tintColor: {
74
- process: require('../StyleSheet/processColor'),
74
+ process: require('../StyleSheet/processColor').default,
75
75
  },
76
76
  borderBottomLeftRadius: true,
77
77
  borderTopLeftRadius: true,
@@ -82,10 +82,10 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
82
82
  shouldNotifyLoadEvents: true,
83
83
  defaultSrc: true,
84
84
  overlayColor: {
85
- process: require('../StyleSheet/processColor'),
85
+ process: require('../StyleSheet/processColor').default,
86
86
  },
87
87
  borderColor: {
88
- process: require('../StyleSheet/processColor'),
88
+ process: require('../StyleSheet/processColor').default,
89
89
  },
90
90
  accessible: true,
91
91
  progressiveRenderingEnabled: true,
@@ -130,7 +130,7 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
130
130
  resizeMode: true,
131
131
  source: true,
132
132
  tintColor: {
133
- process: require('../StyleSheet/processColor'),
133
+ process: require('../StyleSheet/processColor').default,
134
134
  },
135
135
  ...ConditionallyIgnoredEventHandlers({
136
136
  onLoadStart: true,
@@ -13,7 +13,7 @@
13
13
  // This is a stub for flow to make it understand require('./icon.png')
14
14
  // See metro/src/Bundler/index.js
15
15
 
16
- const AssetRegistry = require('@react-native/assets/registry');
16
+ const AssetRegistry = require('@react-native/assets-registry/registry');
17
17
 
18
18
  module.exports = (AssetRegistry.registerAsset({
19
19
  __packager_asset: true,
@@ -36,7 +36,7 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
36
36
  resizeMode: true,
37
37
  src: true,
38
38
  tintColor: {
39
- process: require('../StyleSheet/processColor'),
39
+ process: require('../StyleSheet/processColor').default,
40
40
  },
41
41
  headers: true,
42
42
  },
@@ -16,7 +16,7 @@ import type {ResolvedAssetSource} from './AssetSourceResolver';
16
16
 
17
17
  const AssetSourceResolver = require('./AssetSourceResolver');
18
18
  const {pickScale} = require('./AssetUtils');
19
- const AssetRegistry = require('@react-native/assets/registry');
19
+ const AssetRegistry = require('@react-native/assets-registry/registry');
20
20
 
21
21
  let _customSourceTransformer, _serverURL, _scriptURL;
22
22
 
@@ -8,6 +8,7 @@
8
8
  * @flow
9
9
  */
10
10
 
11
+ import type {PointerEvent} from '../Types/CoreEventTypes';
11
12
  import type {PressEvent} from '../Types/CoreEventTypes';
12
13
  import type {HostRef} from './getInspectorDataForViewAtPoint';
13
14
 
@@ -50,8 +51,15 @@ export default function DevtoolsOverlay({
50
51
 
51
52
  function onAgentShowNativeHighlight(node: any) {
52
53
  clearTimeout(hideTimeoutId);
53
- // Shape of `node` is different in Fabric.
54
- const component = node.canonical ?? node;
54
+
55
+ // `canonical.publicInstance` => Fabric
56
+ // `canonical` => Legacy Fabric
57
+ // `node` => Legacy renderer
58
+ const component =
59
+ (node.canonical && node.canonical.publicInstance) ??
60
+ // TODO: remove this check when syncing the new version of the renderer from React to React Native.
61
+ node.canonical ??
62
+ node;
55
63
  if (!component || !component.measure) {
56
64
  return;
57
65
  }
@@ -125,11 +133,11 @@ export default function DevtoolsOverlay({
125
133
  getInspectorDataForViewAtPoint(inspectedView, x, y, viewData => {
126
134
  const {touchedViewTag, closestInstance, frame} = viewData;
127
135
  if (closestInstance != null || touchedViewTag != null) {
136
+ // We call `selectNode` for both non-fabric(viewTag) and fabric(instance),
137
+ // this makes sure it works for both architectures.
138
+ agent.selectNode(findNodeHandle(touchedViewTag));
128
139
  if (closestInstance != null) {
129
- // Fabric
130
140
  agent.selectNode(closestInstance);
131
- } else {
132
- agent.selectNode(findNodeHandle(touchedViewTag));
133
141
  }
134
142
  setInspected({
135
143
  frame,
@@ -153,14 +161,14 @@ export default function DevtoolsOverlay({
153
161
  }, []);
154
162
 
155
163
  const onPointerMove = useCallback(
156
- e => {
164
+ (e: PointerEvent) => {
157
165
  findViewForLocation(e.nativeEvent.x, e.nativeEvent.y);
158
166
  },
159
167
  [findViewForLocation],
160
168
  );
161
169
 
162
170
  const onResponderMove = useCallback(
163
- e => {
171
+ (e: PressEvent) => {
164
172
  findViewForLocation(
165
173
  e.nativeEvent.touches[0].locationX,
166
174
  e.nativeEvent.touches[0].locationY,
@@ -169,7 +177,7 @@ export default function DevtoolsOverlay({
169
177
  [findViewForLocation],
170
178
  );
171
179
 
172
- const shouldSetResponser = useCallback(
180
+ const shouldSetResponder = useCallback(
173
181
  (e: PressEvent): boolean => {
174
182
  onResponderMove(e);
175
183
  return true;
@@ -179,17 +187,19 @@ export default function DevtoolsOverlay({
179
187
 
180
188
  let highlight = inspected ? <ElementBox frame={inspected.frame} /> : null;
181
189
  if (isInspecting) {
182
- const events = ReactNativeFeatureFlags.shouldEmitW3CPointerEvents
183
- ? {
184
- onPointerMove,
185
- onPointerDown: onPointerMove,
186
- onPointerUp: stopInspecting,
187
- }
188
- : {
189
- onStartShouldSetResponder: shouldSetResponser,
190
- onResponderMove: onResponderMove,
191
- onResponderRelease: stopInspecting,
192
- };
190
+ const events =
191
+ // Pointer events only work on fabric
192
+ ReactNativeFeatureFlags.shouldEmitW3CPointerEvents()
193
+ ? {
194
+ onPointerMove,
195
+ onPointerDown: onPointerMove,
196
+ onPointerUp: stopInspecting,
197
+ }
198
+ : {
199
+ onStartShouldSetResponder: shouldSetResponder,
200
+ onResponderMove: onResponderMove,
201
+ onResponderRelease: stopInspecting,
202
+ };
193
203
  return (
194
204
  <View
195
205
  nativeID="devToolsInspectorOverlay"
@@ -13,13 +13,14 @@
13
13
  const View = require('../Components/View/View');
14
14
  const flattenStyle = require('../StyleSheet/flattenStyle');
15
15
  const StyleSheet = require('../StyleSheet/StyleSheet');
16
- const Dimensions = require('../Utilities/Dimensions');
16
+ const Dimensions = require('../Utilities/Dimensions').default;
17
17
  const BorderBox = require('./BorderBox');
18
18
  const resolveBoxStyle = require('./resolveBoxStyle');
19
19
  const React = require('react');
20
20
 
21
21
  class ElementBox extends React.Component<$FlowFixMeProps> {
22
22
  render(): React.Node {
23
+ // $FlowFixMe[underconstrained-implicit-instantiation]
23
24
  const style = flattenStyle(this.props.style) || {};
24
25
  let margin = resolveBoxStyle('margin', style);
25
26
  let padding = resolveBoxStyle('padding', style);
@@ -123,12 +124,14 @@ function resolveSizeInPlace(
123
124
  ) {
124
125
  if (style[direction] !== null && typeof style[direction] === 'string') {
125
126
  if (style[direction].indexOf('%') !== -1) {
127
+ // $FlowFixMe[prop-missing]
126
128
  style[direction] =
127
129
  (parseFloat(style[direction]) / 100.0) *
128
130
  Dimensions.get('window')[dimension];
129
131
  }
130
132
  if (style[direction] === 'auto') {
131
133
  // Ignore auto sizing in frame drawing due to complexity of correctly rendering this
134
+ // $FlowFixMe[prop-missing]
132
135
  style[direction] = 0;
133
136
  }
134
137
  }
@@ -18,7 +18,7 @@ const View = require('../Components/View/View');
18
18
  const PressabilityDebug = require('../Pressability/PressabilityDebug');
19
19
  const {findNodeHandle} = require('../ReactNative/RendererProxy');
20
20
  const StyleSheet = require('../StyleSheet/StyleSheet');
21
- const Dimensions = require('../Utilities/Dimensions');
21
+ const Dimensions = require('../Utilities/Dimensions').default;
22
22
  const Platform = require('../Utilities/Platform');
23
23
  const getInspectorDataForViewAtPoint = require('./getInspectorDataForViewAtPoint');
24
24
  const InspectorOverlay = require('./InspectorOverlay');
@@ -142,12 +142,11 @@ class Inspector extends React.Component<
142
142
  // Sync the touched view with React DevTools.
143
143
  // Note: This is Paper only. To support Fabric,
144
144
  // DevTools needs to be updated to not rely on view tags.
145
- if (this.state.devtoolsAgent) {
145
+ const agent = this.state.devtoolsAgent;
146
+ if (agent) {
147
+ agent.selectNode(findNodeHandle(touchedViewTag));
146
148
  if (closestInstance != null) {
147
- // Fabric
148
- this.state.devtoolsAgent.selectNode(closestInstance);
149
- } else if (touchedViewTag != null) {
150
- this.state.devtoolsAgent.selectNode(findNodeHandle(touchedViewTag));
149
+ agent.selectNode(closestInstance);
151
150
  }
152
151
  }
153
152
 
@@ -12,12 +12,14 @@
12
12
 
13
13
  import type {TouchedViewDataAtPoint} from '../Renderer/shims/ReactNativeTypes';
14
14
  import type {HostRef} from './getInspectorDataForViewAtPoint';
15
+
16
+ // import Dimensions from '../Utilities/Dimensions'; [win32]
17
+
15
18
  const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
16
19
  const PressabilityDebug = require('../Pressability/PressabilityDebug');
17
20
  const ReactNative = require('../Renderer/shims/ReactNative');
18
21
  const {findNodeHandle} = require('../ReactNative/RendererProxy');
19
22
  const StyleSheet = require('../StyleSheet/StyleSheet');
20
- //const Dimensions = require('../Utilities/Dimensions');
21
23
  const Platform = require('../Utilities/Platform');
22
24
  const View = require('../Components/View/View');
23
25
  const getInspectorDataForViewAtPoint = require('./getInspectorDataForViewAtPoint');
@@ -144,12 +146,11 @@ class Inspector extends React.Component<
144
146
  // Sync the touched view with React DevTools.
145
147
  // Note: This is Paper only. To support Fabric,
146
148
  // DevTools needs to be updated to not rely on view tags.
147
- if (this.state.devtoolsAgent) {
149
+ const agent = this.state.devtoolsAgent;
150
+ if (agent) {
151
+ agent.selectNode(findNodeHandle(touchedViewTag));
148
152
  if (closestInstance != null) {
149
- // Fabric
150
- this.state.devtoolsAgent.selectNode(closestInstance);
151
- } else if (touchedViewTag != null) {
152
- this.state.devtoolsAgent.selectNode(findNodeHandle(touchedViewTag));
153
+ agent.selectNode(closestInstance);
153
154
  }
154
155
  }
155
156
 
@@ -15,7 +15,7 @@ import type {PressEvent} from '../Types/CoreEventTypes';
15
15
 
16
16
  const View = require('../Components/View/View');
17
17
  const StyleSheet = require('../StyleSheet/StyleSheet');
18
- const Dimensions = require('../Utilities/Dimensions');
18
+ const Dimensions = require('../Utilities/Dimensions').default;
19
19
  const ElementBox = require('./ElementBox');
20
20
  const React = require('react');
21
21
 
@@ -36,7 +36,7 @@ class InspectorOverlay extends React.Component<Props> {
36
36
  this.props.onTouchPoint(locationX, locationY);
37
37
  };
38
38
 
39
- shouldSetResponser: (e: PressEvent) => boolean = (e: PressEvent): boolean => {
39
+ shouldSetResponder: (e: PressEvent) => boolean = (e: PressEvent): boolean => {
40
40
  this.findViewForTouchEvent(e);
41
41
  return true;
42
42
  };
@@ -54,7 +54,7 @@ class InspectorOverlay extends React.Component<Props> {
54
54
 
55
55
  return (
56
56
  <View
57
- onStartShouldSetResponder={this.shouldSetResponser}
57
+ onStartShouldSetResponder={this.shouldSetResponder}
58
58
  onResponderMove={this.findViewForTouchEvent}
59
59
  nativeID="inspectorOverlay" /* TODO: T68258846. */
60
60
  style={[styles.inspector, {height: Dimensions.get('window').height}]}>
@@ -13,9 +13,10 @@
13
13
  import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
14
14
  import type {PressEvent} from '../Types/CoreEventTypes';
15
15
 
16
+ // import Dimensions from '../Utilities/Dimensions'; [Win32]
17
+
16
18
  const View = require('../Components/View/View');
17
19
  const StyleSheet = require('../StyleSheet/StyleSheet');
18
- // const Dimensions = require('../Utilities/Dimensions'); [Win32]
19
20
  const ElementBox = require('./ElementBox');
20
21
  const React = require('react');
21
22
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {RenderItemProps} from '../Lists/VirtualizedList';
13
+ import type {RenderItemProps} from '@react-native/virtualized-lists';
14
14
 
15
15
  const ScrollView = require('../Components/ScrollView/ScrollView');
16
16
  const TouchableHighlight = require('../Components/Touchable/TouchableHighlight');
@@ -27,7 +27,7 @@ type Handler = {
27
27
  * other events from being processed in a timely manner.
28
28
  *
29
29
  * The "stall" time is defined as the amount of time in access of the acceptable
30
- * threshold, which is typically around 100-200ms. So if the treshold is set to
30
+ * threshold, which is typically around 100-200ms. So if the threshold is set to
31
31
  * 100 and a timer fires 150 ms later than it was scheduled because the event
32
32
  * loop was tied up, that would be considered a 50ms stall.
33
33
  *
@@ -11,7 +11,6 @@
11
11
  'use strict';
12
12
 
13
13
  import type {PressEvent} from '../Types/CoreEventTypes';
14
- import type {PanResponderType} from './PanResponder.flow.js';
15
14
 
16
15
  const InteractionManager = require('./InteractionManager');
17
16
  const TouchHistoryMath = require('./TouchHistoryMath');
@@ -191,7 +190,7 @@ type ActiveCallback = (
191
190
 
192
191
  type PassiveCallback = (event: PressEvent, gestureState: GestureState) => mixed;
193
192
 
194
- type PanHandlers = {|
193
+ export type PanHandlers = {|
195
194
  onMoveShouldSetResponder: (event: PressEvent) => boolean,
196
195
  onMoveShouldSetResponderCapture: (event: PressEvent) => boolean,
197
196
  onResponderEnd: (event: PressEvent) => void,
@@ -227,7 +226,7 @@ type PanResponderConfig = $ReadOnly<{|
227
226
  onShouldBlockNativeResponder?: ?ActiveCallback,
228
227
  |}>;
229
228
 
230
- const PanResponder: PanResponderType = {
229
+ const PanResponder = {
231
230
  /**
232
231
  *
233
232
  * A graphical explanation of the touch data flow:
@@ -399,10 +398,10 @@ const PanResponder: PanResponderType = {
399
398
  * accordingly. (numberActiveTouches) may not be totally accurate unless you
400
399
  * are the responder.
401
400
  */
402
- create(config: PanResponderConfig): $TEMPORARY$object<{|
401
+ create(config: PanResponderConfig): {
403
402
  getInteractionHandle: () => ?number,
404
403
  panHandlers: PanHandlers,
405
- |}> {
404
+ } {
406
405
  const interactionState = {
407
406
  handle: (null: ?number),
408
407
  };
@@ -580,4 +579,4 @@ export type PanResponderInstance = $Call<
580
579
  PanResponderConfig,
581
580
  >;
582
581
 
583
- module.exports = PanResponder;
582
+ export default PanResponder;
@@ -17,6 +17,7 @@ import type {
17
17
  LayoutAnimationType,
18
18
  } from '../Renderer/shims/ReactNativeTypes';
19
19
 
20
+ import {getFabricUIManager} from '../ReactNative/FabricUIManager';
20
21
  import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
21
22
  import Platform from '../Utilities/Platform';
22
23
 
@@ -77,7 +78,7 @@ function configureNext(
77
78
 
78
79
  // In Fabric, LayoutAnimations are unconditionally enabled for Android, and
79
80
  // conditionally enabled on iOS (pending fully shipping; this is a temporary state).
80
- const FabricUIManager: FabricUIManagerSpec = global?.nativeFabricUIManager;
81
+ const FabricUIManager = getFabricUIManager();
81
82
  if (FabricUIManager?.configureNextLayoutAnimation) {
82
83
  global?.nativeFabricUIManager?.configureNextLayoutAnimation(
83
84
  config,
@@ -11,7 +11,6 @@
11
11
  import type {EventSubscription} from '../vendor/emitter/EventEmitter';
12
12
 
13
13
  import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
14
- import InteractionManager from '../Interaction/InteractionManager';
15
14
  import Platform from '../Utilities/Platform';
16
15
  import NativeIntentAndroid from './NativeIntentAndroid';
17
16
  import NativeLinkingManager from './NativeLinkingManager';
@@ -96,9 +95,7 @@ class Linking extends NativeEventEmitter<LinkingEventDefinitions> {
96
95
  */
97
96
  getInitialURL(): Promise<?string> {
98
97
  return Platform.OS === 'android'
99
- ? InteractionManager.runAfterInteractions().then(() =>
100
- nullthrows(NativeIntentAndroid).getInitialURL(),
101
- )
98
+ ? nullthrows(NativeIntentAndroid).getInitialURL()
102
99
  : nullthrows(NativeLinkingManager).getInitialURL();
103
100
  }
104
101
 
@@ -10,244 +10,10 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {FrameMetricProps} from './VirtualizedListProps';
13
+ import {typeof FillRateHelper as FillRateHelperType} from '@react-native/virtualized-lists';
14
14
 
15
- export type FillRateInfo = Info;
16
-
17
- class Info {
18
- any_blank_count: number = 0;
19
- any_blank_ms: number = 0;
20
- any_blank_speed_sum: number = 0;
21
- mostly_blank_count: number = 0;
22
- mostly_blank_ms: number = 0;
23
- pixels_blank: number = 0;
24
- pixels_sampled: number = 0;
25
- pixels_scrolled: number = 0;
26
- total_time_spent: number = 0;
27
- sample_count: number = 0;
28
- }
29
-
30
- type FrameMetrics = {
31
- inLayout?: boolean,
32
- length: number,
33
- offset: number,
34
- ...
35
- };
36
-
37
- const DEBUG = false;
38
-
39
- let _listeners: Array<(Info) => void> = [];
40
- let _minSampleCount = 10;
41
- let _sampleRate = DEBUG ? 1 : null;
42
-
43
- /**
44
- * A helper class for detecting when the maximem fill rate of `VirtualizedList` is exceeded.
45
- * By default the sampling rate is set to zero and this will do nothing. If you want to collect
46
- * samples (e.g. to log them), make sure to call `FillRateHelper.setSampleRate(0.0-1.0)`.
47
- *
48
- * Listeners and sample rate are global for all `VirtualizedList`s - typical usage will combine with
49
- * `SceneTracker.getActiveScene` to determine the context of the events.
50
- */
51
- class FillRateHelper {
52
- _anyBlankStartTime: ?number = null;
53
- _enabled = false;
54
- _getFrameMetrics: (index: number, props: FrameMetricProps) => ?FrameMetrics;
55
- _info: Info = new Info();
56
- _mostlyBlankStartTime: ?number = null;
57
- _samplesStartTime: ?number = null;
58
-
59
- static addListener(callback: FillRateInfo => void): {
60
- remove: () => void,
61
- ...
62
- } {
63
- if (_sampleRate === null) {
64
- console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.');
65
- }
66
- _listeners.push(callback);
67
- return {
68
- remove: () => {
69
- _listeners = _listeners.filter(listener => callback !== listener);
70
- },
71
- };
72
- }
73
-
74
- static setSampleRate(sampleRate: number) {
75
- _sampleRate = sampleRate;
76
- }
77
-
78
- static setMinSampleCount(minSampleCount: number) {
79
- _minSampleCount = minSampleCount;
80
- }
81
-
82
- constructor(
83
- getFrameMetrics: (index: number, props: FrameMetricProps) => ?FrameMetrics,
84
- ) {
85
- this._getFrameMetrics = getFrameMetrics;
86
- this._enabled = (_sampleRate || 0) > Math.random();
87
- this._resetData();
88
- }
89
-
90
- activate() {
91
- if (this._enabled && this._samplesStartTime == null) {
92
- DEBUG && console.debug('FillRateHelper: activate');
93
- this._samplesStartTime = global.performance.now();
94
- }
95
- }
96
-
97
- deactivateAndFlush() {
98
- if (!this._enabled) {
99
- return;
100
- }
101
- const start = this._samplesStartTime; // const for flow
102
- if (start == null) {
103
- DEBUG &&
104
- console.debug('FillRateHelper: bail on deactivate with no start time');
105
- return;
106
- }
107
- if (this._info.sample_count < _minSampleCount) {
108
- // Don't bother with under-sampled events.
109
- this._resetData();
110
- return;
111
- }
112
- const total_time_spent = global.performance.now() - start;
113
- const info: any = {
114
- ...this._info,
115
- total_time_spent,
116
- };
117
- if (DEBUG) {
118
- const derived = {
119
- avg_blankness: this._info.pixels_blank / this._info.pixels_sampled,
120
- avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000),
121
- avg_speed_when_any_blank:
122
- this._info.any_blank_speed_sum / this._info.any_blank_count,
123
- any_blank_per_min:
124
- this._info.any_blank_count / (total_time_spent / 1000 / 60),
125
- any_blank_time_frac: this._info.any_blank_ms / total_time_spent,
126
- mostly_blank_per_min:
127
- this._info.mostly_blank_count / (total_time_spent / 1000 / 60),
128
- mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent,
129
- };
130
- for (const key in derived) {
131
- // $FlowFixMe[prop-missing]
132
- derived[key] = Math.round(1000 * derived[key]) / 1000;
133
- }
134
- console.debug('FillRateHelper deactivateAndFlush: ', {derived, info});
135
- }
136
- _listeners.forEach(listener => listener(info));
137
- this._resetData();
138
- }
139
-
140
- computeBlankness(
141
- props: {
142
- ...FrameMetricProps,
143
- initialNumToRender?: ?number,
144
- ...
145
- },
146
- cellsAroundViewport: {
147
- first: number,
148
- last: number,
149
- ...
150
- },
151
- scrollMetrics: {
152
- dOffset: number,
153
- offset: number,
154
- velocity: number,
155
- visibleLength: number,
156
- ...
157
- },
158
- ): number {
159
- if (
160
- !this._enabled ||
161
- props.getItemCount(props.data) === 0 ||
162
- cellsAroundViewport.last < cellsAroundViewport.first ||
163
- this._samplesStartTime == null
164
- ) {
165
- return 0;
166
- }
167
- const {dOffset, offset, velocity, visibleLength} = scrollMetrics;
168
-
169
- // Denominator metrics that we track for all events - most of the time there is no blankness and
170
- // we want to capture that.
171
- this._info.sample_count++;
172
- this._info.pixels_sampled += Math.round(visibleLength);
173
- this._info.pixels_scrolled += Math.round(Math.abs(dOffset));
174
- const scrollSpeed = Math.round(Math.abs(velocity) * 1000); // px / sec
175
-
176
- // Whether blank now or not, record the elapsed time blank if we were blank last time.
177
- const now = global.performance.now();
178
- if (this._anyBlankStartTime != null) {
179
- this._info.any_blank_ms += now - this._anyBlankStartTime;
180
- }
181
- this._anyBlankStartTime = null;
182
- if (this._mostlyBlankStartTime != null) {
183
- this._info.mostly_blank_ms += now - this._mostlyBlankStartTime;
184
- }
185
- this._mostlyBlankStartTime = null;
186
-
187
- let blankTop = 0;
188
- let first = cellsAroundViewport.first;
189
- let firstFrame = this._getFrameMetrics(first, props);
190
- while (
191
- first <= cellsAroundViewport.last &&
192
- (!firstFrame || !firstFrame.inLayout)
193
- ) {
194
- firstFrame = this._getFrameMetrics(first, props);
195
- first++;
196
- }
197
- // Only count blankTop if we aren't rendering the first item, otherwise we will count the header
198
- // as blank.
199
- if (firstFrame && first > 0) {
200
- blankTop = Math.min(
201
- visibleLength,
202
- Math.max(0, firstFrame.offset - offset),
203
- );
204
- }
205
- let blankBottom = 0;
206
- let last = cellsAroundViewport.last;
207
- let lastFrame = this._getFrameMetrics(last, props);
208
- while (
209
- last >= cellsAroundViewport.first &&
210
- (!lastFrame || !lastFrame.inLayout)
211
- ) {
212
- lastFrame = this._getFrameMetrics(last, props);
213
- last--;
214
- }
215
- // Only count blankBottom if we aren't rendering the last item, otherwise we will count the
216
- // footer as blank.
217
- if (lastFrame && last < props.getItemCount(props.data) - 1) {
218
- const bottomEdge = lastFrame.offset + lastFrame.length;
219
- blankBottom = Math.min(
220
- visibleLength,
221
- Math.max(0, offset + visibleLength - bottomEdge),
222
- );
223
- }
224
- const pixels_blank = Math.round(blankTop + blankBottom);
225
- const blankness = pixels_blank / visibleLength;
226
- if (blankness > 0) {
227
- this._anyBlankStartTime = now;
228
- this._info.any_blank_speed_sum += scrollSpeed;
229
- this._info.any_blank_count++;
230
- this._info.pixels_blank += pixels_blank;
231
- if (blankness > 0.5) {
232
- this._mostlyBlankStartTime = now;
233
- this._info.mostly_blank_count++;
234
- }
235
- } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) {
236
- this.deactivateAndFlush();
237
- }
238
- return blankness;
239
- }
240
-
241
- enabled(): boolean {
242
- return this._enabled;
243
- }
244
-
245
- _resetData() {
246
- this._anyBlankStartTime = null;
247
- this._info = new Info();
248
- this._mostlyBlankStartTime = null;
249
- this._samplesStartTime = null;
250
- }
251
- }
15
+ const FillRateHelper: FillRateHelperType =
16
+ require('@react-native/virtualized-lists').FillRateHelper;
252
17
 
18
+ export type {FillRateInfo} from '@react-native/virtualized-lists';
253
19
  module.exports = FillRateHelper;