@office-iss/react-native-win32 0.70.2 → 0.71.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +2 -0
  3. package/.flowconfig +3 -6
  4. package/CHANGELOG.json +281 -43
  5. package/CHANGELOG.md +105 -24
  6. package/IntegrationTests/AccessibilityManagerTest.js +1 -1
  7. package/IntegrationTests/AppEventsTest.js +0 -1
  8. package/IntegrationTests/BUCK +0 -1
  9. package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
  10. package/IntegrationTests/ImageSnapshotTest.js +1 -1
  11. package/IntegrationTests/IntegrationTestsApp.js +2 -3
  12. package/IntegrationTests/SimpleSnapshotTest.js +1 -1
  13. package/IntegrationTests/SyncMethodTest.js +1 -1
  14. package/IntegrationTests/TimersTest.js +4 -4
  15. package/IntegrationTests/WebSocketTest.js +3 -3
  16. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +80 -0
  17. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +4 -3
  18. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  19. package/Libraries/Alert/Alert.d.ts +90 -0
  20. package/Libraries/Alert/Alert.js +7 -1
  21. package/Libraries/Alert/Alert.win32.js +1 -0
  22. package/Libraries/Alert/NativeAlertManager.js +2 -0
  23. package/Libraries/Alert/RCTAlertManager.ios.js +2 -1
  24. package/Libraries/Animated/Animated.d.ts +587 -0
  25. package/Libraries/Animated/Animated.js +13 -11
  26. package/Libraries/Animated/AnimatedEvent.js +12 -17
  27. package/Libraries/Animated/AnimatedImplementation.js +21 -23
  28. package/Libraries/Animated/AnimatedMock.js +11 -13
  29. package/Libraries/Animated/AnimatedWeb.js +2 -2
  30. package/Libraries/Animated/Easing.d.ts +37 -0
  31. package/Libraries/Animated/Easing.js +2 -2
  32. package/Libraries/Animated/NativeAnimatedHelper.js +32 -22
  33. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  34. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  35. package/Libraries/Animated/SpringConfig.js +2 -7
  36. package/Libraries/Animated/animations/Animation.js +3 -4
  37. package/Libraries/Animated/animations/DecayAnimation.js +5 -8
  38. package/Libraries/Animated/animations/SpringAnimation.js +9 -14
  39. package/Libraries/Animated/animations/TimingAnimation.js +9 -13
  40. package/Libraries/Animated/bezier.js +2 -2
  41. package/Libraries/Animated/components/AnimatedFlatList.js +5 -6
  42. package/Libraries/Animated/components/AnimatedImage.js +5 -6
  43. package/Libraries/Animated/components/AnimatedScrollView.js +110 -14
  44. package/Libraries/Animated/components/AnimatedSectionList.js +4 -5
  45. package/Libraries/Animated/components/AnimatedText.js +5 -6
  46. package/Libraries/Animated/components/AnimatedView.js +5 -6
  47. package/Libraries/Animated/createAnimatedComponent.js +13 -20
  48. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +2 -2
  49. package/Libraries/Animated/nodes/AnimatedAddition.js +6 -8
  50. package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
  51. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +6 -8
  52. package/Libraries/Animated/nodes/AnimatedDivision.js +7 -9
  53. package/Libraries/Animated/nodes/AnimatedInterpolation.js +7 -10
  54. package/Libraries/Animated/nodes/AnimatedModulo.js +6 -8
  55. package/Libraries/Animated/nodes/AnimatedMultiplication.js +7 -9
  56. package/Libraries/Animated/nodes/AnimatedNode.js +10 -8
  57. package/Libraries/Animated/nodes/AnimatedProps.js +12 -30
  58. package/Libraries/Animated/nodes/AnimatedStyle.js +12 -22
  59. package/Libraries/Animated/nodes/AnimatedSubtraction.js +7 -9
  60. package/Libraries/Animated/nodes/AnimatedTracking.js +8 -12
  61. package/Libraries/Animated/nodes/AnimatedTransform.js +38 -31
  62. package/Libraries/Animated/nodes/AnimatedValue.js +9 -10
  63. package/Libraries/Animated/nodes/AnimatedValueXY.js +4 -7
  64. package/Libraries/Animated/nodes/AnimatedWithChildren.js +4 -5
  65. package/Libraries/Animated/useAnimatedProps.js +8 -16
  66. package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
  67. package/Libraries/Animated/useAnimatedValue.js +25 -0
  68. package/Libraries/AppState/AppState.d.ts +58 -0
  69. package/Libraries/AppState/AppState.js +3 -7
  70. package/Libraries/AppState/NativeAppState.js +1 -0
  71. package/Libraries/BatchedBridge/MessageQueue.js +9 -5
  72. package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
  73. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  74. package/Libraries/Blob/BlobManager.js +5 -3
  75. package/Libraries/Blob/File.js +2 -3
  76. package/Libraries/Blob/FileReader.js +6 -5
  77. package/Libraries/Blob/NativeBlobModule.js +1 -0
  78. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  79. package/Libraries/Blob/URL.js +11 -9
  80. package/Libraries/BugReporting/NativeBugReporting.js +1 -0
  81. package/Libraries/BugReporting/getReactData.js +1 -1
  82. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +128 -0
  83. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +208 -0
  84. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +40 -8
  85. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +40 -8
  86. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -0
  87. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +5 -0
  88. package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
  89. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +58 -0
  90. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +7 -8
  91. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
  92. package/Libraries/Components/Button.d.ts +42 -0
  93. package/Libraries/Components/Button.flow.js +265 -0
  94. package/Libraries/Components/Button.js +62 -18
  95. package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
  96. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -0
  97. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -2
  98. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +92 -0
  99. package/Libraries/Components/{MaskedView/MaskedViewIOS.android.js → DatePicker/DatePickerIOS.flow.android.js} +3 -2
  100. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +113 -0
  101. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +8 -7
  102. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +4 -2
  103. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +7 -6
  104. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +1 -0
  105. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +9 -8
  106. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +13 -14
  107. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
  108. package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
  109. package/Libraries/Components/Keyboard/Keyboard.js +35 -8
  110. package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
  111. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +35 -15
  112. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -0
  113. package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
  114. package/Libraries/Components/Pressable/Pressable.js +73 -15
  115. package/Libraries/Components/Pressable/Pressable.win32.js +77 -19
  116. package/Libraries/Components/Pressable/useAndroidRippleForView.js +6 -3
  117. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +3 -3
  118. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
  119. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
  120. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +1 -1
  121. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +62 -0
  122. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +4 -4
  123. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +1 -1
  124. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +2 -2
  125. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +5 -6
  126. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +4 -4
  127. package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
  128. package/Libraries/Components/RefreshControl/RefreshControl.js +4 -3
  129. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
  130. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -1
  131. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
  132. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +19 -0
  133. package/Libraries/Components/SafeAreaView/SafeAreaView.js +5 -4
  134. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +5 -4
  135. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -1
  136. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -1
  137. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -1
  138. package/Libraries/Components/ScrollView/ScrollView.d.ts +911 -0
  139. package/Libraries/Components/ScrollView/ScrollView.js +87 -52
  140. package/Libraries/Components/ScrollView/ScrollViewCommands.js +3 -3
  141. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +2 -1
  142. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +3 -3
  143. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +243 -269
  144. package/Libraries/Components/Slider/Slider.d.ts +132 -0
  145. package/Libraries/Components/Slider/Slider.js +9 -9
  146. package/Libraries/Components/Slider/SliderNativeComponent.js +4 -5
  147. package/Libraries/Components/Sound/NativeSoundManager.js +1 -0
  148. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -0
  149. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -0
  150. package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
  151. package/Libraries/Components/StatusBar/StatusBar.js +7 -7
  152. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +10 -10
  153. package/Libraries/Components/Switch/Switch.d.ts +115 -0
  154. package/Libraries/Components/Switch/Switch.js +7 -7
  155. package/Libraries/Components/Switch/SwitchNativeComponent.js +9 -4
  156. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +40 -12
  157. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
  158. package/Libraries/Components/TextInput/InputAccessoryView.js +3 -4
  159. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -1
  160. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +3 -2
  161. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +3 -2
  162. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -1
  163. package/Libraries/Components/TextInput/TextInput.d.ts +840 -0
  164. package/Libraries/Components/TextInput/TextInput.flow.js +1057 -0
  165. package/Libraries/Components/TextInput/TextInput.js +344 -38
  166. package/Libraries/Components/TextInput/TextInput.win32.d.ts +1 -1
  167. package/Libraries/Components/TextInput/TextInput.win32.js +1 -1
  168. package/Libraries/Components/TextInput/TextInput.win32.js.map +1 -1
  169. package/Libraries/Components/TextInput/TextInputNativeCommands.js +2 -2
  170. package/Libraries/Components/TextInput/TextInputState.js +22 -5
  171. package/Libraries/Components/TextInput/TextInputState.win32.js +24 -5
  172. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -0
  173. package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +47 -0
  174. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  175. package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
  176. package/Libraries/Components/Touchable/Touchable.flow.js +258 -0
  177. package/Libraries/Components/Touchable/Touchable.js +12 -12
  178. package/Libraries/Components/Touchable/Touchable.win32.js +12 -12
  179. package/Libraries/Components/Touchable/TouchableBounce.js +44 -10
  180. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +68 -0
  181. package/Libraries/Components/Touchable/TouchableHighlight.js +32 -9
  182. package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +114 -0
  183. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +54 -20
  184. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +109 -0
  185. package/Libraries/Components/Touchable/TouchableOpacity.js +54 -16
  186. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +2 -1
  187. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  188. package/Libraries/Components/Touchable/TouchableWin32.js +0 -1
  189. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  190. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +143 -0
  191. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +64 -10
  192. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -1
  193. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  194. package/Libraries/Components/View/ReactNativeStyleAttributes.js +13 -2
  195. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
  196. package/Libraries/Components/View/View.d.ts +29 -0
  197. package/Libraries/Components/View/View.js +91 -8
  198. package/Libraries/Components/View/View.win32.js +176 -89
  199. package/Libraries/Components/View/ViewAccessibility.d.ts +360 -0
  200. package/Libraries/Components/View/ViewAccessibility.js +70 -1
  201. package/Libraries/Components/View/ViewNativeComponent.js +3 -3
  202. package/Libraries/Components/View/ViewPropTypes.d.ts +245 -0
  203. package/Libraries/Components/View/ViewPropTypes.js +105 -13
  204. package/Libraries/Components/View/ViewPropTypes.win32.js +105 -13
  205. package/Libraries/Components/View/ViewWin32.Props.d.ts +6 -1
  206. package/Libraries/Components/View/ViewWin32.Props.js.map +1 -1
  207. package/Libraries/Core/Devtools/openFileInEditor.js +3 -0
  208. package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
  209. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  210. package/Libraries/Core/ExceptionsManager.js +8 -0
  211. package/Libraries/Core/ExtendedError.js +11 -8
  212. package/Libraries/Core/InitializeCore.js +2 -1
  213. package/Libraries/Core/NativeExceptionsManager.js +3 -4
  214. package/Libraries/Core/RawEventEmitter.js +2 -1
  215. package/Libraries/Core/ReactFiberErrorDialog.js +2 -2
  216. package/Libraries/Core/ReactNativeVersion.js +2 -2
  217. package/Libraries/Core/ReactNativeVersionCheck.js +1 -0
  218. package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -0
  219. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  220. package/Libraries/Core/Timers/JSTimers.js +13 -11
  221. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  222. package/Libraries/Core/setUpBatchedBridge.js +1 -5
  223. package/Libraries/Core/setUpDeveloperTools.js +4 -6
  224. package/Libraries/Core/setUpReactDevTools.js +4 -1
  225. package/Libraries/Core/setUpRegeneratorRuntime.js +1 -1
  226. package/Libraries/Core/setUpTimers.js +1 -1
  227. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +70 -0
  228. package/Libraries/EventEmitter/NativeEventEmitter.js +1 -0
  229. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +30 -0
  230. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
  231. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
  232. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +1 -0
  233. package/Libraries/Events/EventPolyfill.js +1 -1
  234. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +1 -0
  235. package/Libraries/Image/AssetSourceResolver.js +4 -6
  236. package/Libraries/Image/Image.android.js +63 -45
  237. package/Libraries/Image/Image.d.ts +322 -0
  238. package/Libraries/Image/Image.flow.js +64 -0
  239. package/Libraries/Image/Image.ios.js +55 -28
  240. package/Libraries/Image/Image.win32.js +54 -25
  241. package/Libraries/Image/ImageBackground.js +18 -7
  242. package/Libraries/Image/ImageInjection.js +2 -1
  243. package/Libraries/Image/ImageProps.js +88 -5
  244. package/Libraries/Image/ImageResizeMode.d.ts +49 -0
  245. package/Libraries/Image/ImageSource.d.ts +76 -0
  246. package/Libraries/Image/ImageSourceUtils.js +80 -0
  247. package/Libraries/Image/ImageUtils.js +21 -0
  248. package/Libraries/Image/ImageViewNativeComponent.js +8 -5
  249. package/Libraries/Image/NativeImageEditor.js +1 -0
  250. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  251. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  252. package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
  253. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  254. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  255. package/Libraries/Image/TextInlineImageNativeComponent.js +4 -3
  256. package/Libraries/Image/nativeImageSource.js +2 -2
  257. package/Libraries/Image/resolveAssetSource.js +5 -5
  258. package/Libraries/Inspector/BorderBox.js +1 -1
  259. package/Libraries/Inspector/BoxInspector.js +3 -4
  260. package/Libraries/Inspector/DevtoolsOverlay.js +213 -0
  261. package/Libraries/Inspector/ElementBox.js +4 -5
  262. package/Libraries/Inspector/ElementProperties.js +10 -11
  263. package/Libraries/Inspector/Inspector.js +22 -108
  264. package/Libraries/Inspector/Inspector.win32.js +23 -109
  265. package/Libraries/Inspector/InspectorOverlay.js +5 -5
  266. package/Libraries/Inspector/InspectorOverlay.win32.js +5 -5
  267. package/Libraries/Inspector/InspectorPanel.js +12 -10
  268. package/Libraries/Inspector/NetworkOverlay.js +7 -3
  269. package/Libraries/Inspector/PerformanceOverlay.js +3 -3
  270. package/Libraries/Inspector/StyleInspector.js +2 -2
  271. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +71 -0
  272. package/Libraries/Interaction/BridgeSpyStallHandler.js +1 -1
  273. package/Libraries/Interaction/InteractionManager.d.ts +74 -0
  274. package/Libraries/Interaction/InteractionManager.js +8 -8
  275. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  276. package/Libraries/Interaction/PanResponder.d.ts +202 -0
  277. package/Libraries/Interaction/PanResponder.flow.js +257 -0
  278. package/Libraries/Interaction/PanResponder.js +4 -3
  279. package/Libraries/JSInspector/JSInspector.js +0 -3
  280. package/Libraries/JSInspector/NetworkAgent.js +3 -3
  281. package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
  282. package/Libraries/LayoutAnimation/LayoutAnimation.js +4 -3
  283. package/Libraries/Linking/Linking.d.ts +61 -0
  284. package/Libraries/Linking/Linking.js +3 -2
  285. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  286. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  287. package/Libraries/Lists/CellRenderMask.js +13 -3
  288. package/Libraries/Lists/ChildListCollection.js +72 -0
  289. package/Libraries/Lists/FillRateHelper.js +28 -17
  290. package/Libraries/Lists/FlatList.d.ts +292 -0
  291. package/Libraries/Lists/FlatList.js +70 -70
  292. package/Libraries/Lists/SectionList.d.ts +300 -0
  293. package/Libraries/Lists/SectionList.js +5 -5
  294. package/Libraries/Lists/SectionListModern.js +6 -6
  295. package/Libraries/Lists/StateSafePureComponent.js +85 -0
  296. package/Libraries/Lists/ViewabilityHelper.js +33 -12
  297. package/Libraries/Lists/VirtualizeUtils.js +17 -13
  298. package/Libraries/Lists/VirtualizedList.d.ts +317 -0
  299. package/Libraries/Lists/VirtualizedList.js +548 -890
  300. package/Libraries/Lists/VirtualizedListCellRenderer.js +259 -0
  301. package/Libraries/Lists/VirtualizedListContext.js +7 -48
  302. package/Libraries/Lists/VirtualizedListProps.js +279 -0
  303. package/Libraries/Lists/VirtualizedSectionList.js +6 -3
  304. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  305. package/Libraries/LogBox/Data/LogBoxData.js +9 -8
  306. package/Libraries/LogBox/Data/LogBoxLog.js +5 -5
  307. package/Libraries/LogBox/Data/LogBoxSymbolication.js +4 -4
  308. package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -3
  309. package/Libraries/LogBox/LogBox.d.ts +28 -0
  310. package/Libraries/LogBox/LogBox.js +11 -11
  311. package/Libraries/LogBox/LogBoxInspectorContainer.js +5 -3
  312. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  313. package/Libraries/LogBox/UI/AnsiHighlight.js +5 -3
  314. package/Libraries/LogBox/UI/LogBoxButton.js +6 -5
  315. package/Libraries/LogBox/UI/LogBoxInspector.js +6 -6
  316. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +9 -8
  317. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +3 -3
  318. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +7 -6
  319. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +6 -5
  320. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +6 -5
  321. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +7 -6
  322. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +2 -2
  323. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -3
  324. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +5 -5
  325. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +5 -5
  326. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +5 -5
  327. package/Libraries/LogBox/UI/LogBoxMessage.js +3 -3
  328. package/Libraries/LogBox/UI/LogBoxNotification.js +6 -5
  329. package/Libraries/Modal/Modal.d.ts +104 -0
  330. package/Libraries/Modal/Modal.js +14 -14
  331. package/Libraries/Modal/NativeModalManager.js +1 -0
  332. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -3
  333. package/Libraries/NativeComponent/BaseViewConfig.android.js +27 -2
  334. package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -3
  335. package/Libraries/NativeComponent/BaseViewConfig.win32.js +8 -3
  336. package/Libraries/NativeComponent/NativeComponentRegistry.js +5 -4
  337. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -0
  338. package/Libraries/NativeComponent/StaticViewConfigValidator.js +1 -1
  339. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  340. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +1 -0
  341. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  342. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  343. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  344. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  345. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -2
  346. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  347. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  348. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  349. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  350. package/Libraries/Network/RCTNetworking.android.js +4 -3
  351. package/Libraries/Network/RCTNetworking.ios.js +3 -2
  352. package/Libraries/Network/RCTNetworking.win32.js +1 -0
  353. package/Libraries/Network/convertRequestBody.js +1 -2
  354. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -1
  355. package/Libraries/NewAppScreen/components/Header.js +6 -2
  356. package/Libraries/NewAppScreen/components/HermesBadge.js +6 -2
  357. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +8 -9
  358. package/Libraries/NewAppScreen/components/ReloadInstructions.js +4 -1
  359. package/Libraries/NewAppScreen/index.js +1 -1
  360. package/Libraries/Performance/NativeJSCSamplingProfiler.js +1 -0
  361. package/Libraries/Performance/QuickPerformanceLogger.js +34 -10
  362. package/Libraries/Performance/Systrace.d.ts +66 -0
  363. package/Libraries/Performance/Systrace.js +110 -195
  364. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  365. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +115 -0
  366. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +5 -4
  367. package/Libraries/Pressability/Pressability.js +12 -10
  368. package/Libraries/Pressability/Pressability.win32.js +9 -7
  369. package/Libraries/Pressability/PressabilityDebug.js +2 -2
  370. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  371. package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +275 -0
  372. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +19 -14
  373. package/Libraries/ReactNative/AppContainer.js +17 -7
  374. package/Libraries/ReactNative/AppRegistry.d.ts +68 -0
  375. package/Libraries/ReactNative/AppRegistry.js +11 -14
  376. package/Libraries/ReactNative/BridgelessUIManager.js +4 -3
  377. package/Libraries/ReactNative/FabricUIManager.js +3 -3
  378. package/Libraries/ReactNative/I18nManager.d.ts +25 -0
  379. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  380. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  381. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  382. package/Libraries/ReactNative/PaperUIManager.js +2 -2
  383. package/Libraries/ReactNative/PaperUIManager.win32.js +1 -1
  384. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +9 -0
  385. package/Libraries/ReactNative/RendererImplementation.js +112 -0
  386. package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
  387. package/Libraries/ReactNative/RendererProxy.js +26 -0
  388. package/Libraries/ReactNative/RootTag.js +0 -1
  389. package/Libraries/ReactNative/UIManager.d.ts +157 -0
  390. package/Libraries/ReactNative/UIManager.js +1 -1
  391. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -0
  392. package/Libraries/ReactNative/renderApplication.js +38 -20
  393. package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
  394. package/Libraries/ReactNative/requireNativeComponent.js +2 -2
  395. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +10 -9
  396. package/Libraries/Renderer/implementations/ReactFabric-dev.js +312 -217
  397. package/Libraries/Renderer/implementations/ReactFabric-prod.js +212 -177
  398. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +248 -213
  399. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +311 -218
  400. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +226 -196
  401. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +262 -232
  402. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +149 -0
  403. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  404. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  405. package/Libraries/Renderer/shims/ReactNative.js +2 -2
  406. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +141 -0
  407. package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -22
  408. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +8 -8
  409. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  410. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  411. package/Libraries/Settings/Settings.d.ts +18 -0
  412. package/Libraries/Share/NativeShareModule.js +1 -0
  413. package/Libraries/Share/Share.d.ts +80 -0
  414. package/Libraries/Share/Share.js +7 -5
  415. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
  416. package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
  417. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  418. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
  419. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -0
  420. package/Libraries/StyleSheet/StyleSheet.d.ts +156 -0
  421. package/Libraries/StyleSheet/StyleSheet.js +15 -11
  422. package/Libraries/StyleSheet/StyleSheet.win32.js +16 -12
  423. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +332 -0
  424. package/Libraries/StyleSheet/StyleSheetTypes.js +101 -24
  425. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +2 -2
  426. package/Libraries/StyleSheet/normalizeColor.js +3 -3
  427. package/Libraries/StyleSheet/private/_TransformStyle.js +26 -24
  428. package/Libraries/StyleSheet/processAspectRatio.js +53 -0
  429. package/Libraries/StyleSheet/processColor.d.ts +16 -0
  430. package/Libraries/StyleSheet/processColor.js +3 -4
  431. package/Libraries/StyleSheet/processColorArray.js +1 -0
  432. package/Libraries/StyleSheet/processFontVariant.js +30 -0
  433. package/Libraries/StyleSheet/processTransform.js +114 -105
  434. package/Libraries/StyleSheet/splitLayoutProps.js +5 -0
  435. package/Libraries/Text/Text.d.ts +209 -0
  436. package/Libraries/Text/Text.js +94 -12
  437. package/Libraries/Text/TextNativeComponent.js +49 -41
  438. package/Libraries/Text/TextNativeComponent.win32.js +67 -48
  439. package/Libraries/Text/TextProps.js +64 -7
  440. package/Libraries/{Components/MaskedView/MaskedViewIOS.win32.js → TurboModule/RCTExport.d.ts} +3 -4
  441. package/Libraries/TurboModule/TurboModuleRegistry.d.ts +15 -0
  442. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -1
  443. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  444. package/Libraries/Types/CoreEventTypes.d.ts +263 -0
  445. package/Libraries/Types/CoreEventTypes.js +2 -1
  446. package/Libraries/Types/CoreEventTypes.win32.js +2 -1
  447. package/Libraries/Utilities/AcessibilityMapping.js +154 -0
  448. package/Libraries/Utilities/Appearance.d.ts +43 -0
  449. package/Libraries/Utilities/Appearance.js +3 -3
  450. package/Libraries/Utilities/BackHandler.android.js +3 -5
  451. package/Libraries/Utilities/BackHandler.d.ts +38 -0
  452. package/Libraries/Utilities/BackHandler.win32.js +3 -5
  453. package/Libraries/Utilities/DevSettings.d.ts +32 -0
  454. package/Libraries/Utilities/DevSettings.js +4 -2
  455. package/Libraries/Utilities/Dimensions.d.ts +79 -0
  456. package/Libraries/Utilities/Dimensions.js +2 -2
  457. package/Libraries/Utilities/Dimensions.win32.js +2 -2
  458. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -1
  459. package/Libraries/Utilities/HMRClient.js +23 -8
  460. package/Libraries/Utilities/LoadingView.ios.js +1 -1
  461. package/Libraries/Utilities/NativeAppearance.js +1 -0
  462. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  463. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +1 -0
  464. package/Libraries/Utilities/NativeDeviceInfo.js +1 -0
  465. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  466. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  467. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  468. package/Libraries/Utilities/PerformanceLoggerContext.js +3 -2
  469. package/Libraries/Utilities/PixelRatio.d.ts +64 -0
  470. package/Libraries/Utilities/Platform.android.js +11 -5
  471. package/Libraries/Utilities/Platform.d.ts +102 -0
  472. package/Libraries/Utilities/Platform.ios.js +12 -5
  473. package/Libraries/Utilities/Platform.win32.js +11 -5
  474. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  475. package/Libraries/Utilities/ReactNativeTestTools.js +9 -15
  476. package/Libraries/Utilities/codegenNativeCommands.js +1 -10
  477. package/Libraries/Utilities/codegenNativeComponent.js +4 -1
  478. package/Libraries/Utilities/createPerformanceLogger.js +7 -8
  479. package/Libraries/Utilities/differ/deepDiffer.js +1 -1
  480. package/Libraries/Utilities/groupByEveryN.js +1 -1
  481. package/Libraries/Utilities/stringifySafe.js +3 -1
  482. package/Libraries/Utilities/useColorScheme.js +3 -2
  483. package/Libraries/Utilities/useRefEffect.js +1 -1
  484. package/Libraries/Vibration/NativeVibration.js +1 -0
  485. package/Libraries/Vibration/Vibration.d.ts +43 -0
  486. package/Libraries/Vibration/Vibration.js +1 -0
  487. package/Libraries/WebPerformance/NativePerformanceObserver.js +41 -0
  488. package/Libraries/WebPerformance/PerformanceObserver.js +223 -0
  489. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  490. package/Libraries/WebSocket/WebSocket.js +11 -3
  491. package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
  492. package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +19 -0
  493. package/Libraries/YellowBox/YellowBoxDeprecated.js +2 -3
  494. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +2 -1
  495. package/Libraries/__tests__/ButtonWin32-test.js +16 -0
  496. package/Libraries/platform-types.d.ts +25 -0
  497. package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
  498. package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
  499. package/babel.config.js +3 -0
  500. package/flow/jest.js +2 -2
  501. package/flow-typed/npm/{react-dom_v16.x.x.js → react-dom_v17.x.x.js} +58 -31
  502. package/flow-typed/npm/yargs_v17.x.x.js +341 -0
  503. package/index.js +89 -55
  504. package/index.win32.js +89 -55
  505. package/interface.js +8 -0
  506. package/jest/react-native-env.js +18 -0
  507. package/jest/renderer.js +2 -2
  508. package/jest/setup.js +7 -9
  509. package/jest.config.js +9 -2
  510. package/overrides.json +40 -101
  511. package/package.json +34 -33
  512. package/src/Libraries/Components/TextInput/TextInput.win32.tsx +2 -1
  513. package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
  514. package/src/Libraries/Components/Touchable/TouchableWin32.Props.tsx +2 -1
  515. package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
  516. package/src/Libraries/Components/View/ViewWin32.Props.ts +10 -1
  517. package/src/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +22 -0
  518. package/src/Libraries/platform-types.d.ts +25 -0
  519. package/types/index.d.ts +215 -0
  520. package/IntegrationTests/AsyncStorageTest.js +0 -261
  521. package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +0 -93
  522. package/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js +0 -21
  523. package/Libraries/Core/setUpSystrace.js +0 -21
  524. package/Libraries/Image/ImagePickerIOS.js +0 -103
  525. package/Libraries/Image/NativeImagePickerIOS.js +0 -38
  526. package/Libraries/Lists/VirtualizedList.win32.js +0 -9
  527. package/Libraries/Lists/__tests__/CellRenderMask-test.js +0 -179
  528. package/Libraries/Lists/__tests__/FillRateHelper-test.js +0 -120
  529. package/Libraries/Lists/__tests__/FlatList-test.js +0 -155
  530. package/Libraries/Lists/__tests__/SectionList-test.js +0 -109
  531. package/Libraries/Lists/__tests__/ViewabilityHelper-test.js +0 -440
  532. package/Libraries/Lists/__tests__/VirtualizeUtils-test.js +0 -91
  533. package/Libraries/Lists/__tests__/VirtualizedList-test.js +0 -1587
  534. package/Libraries/Lists/__tests__/VirtualizedSectionList-test.js +0 -269
  535. package/Libraries/Storage/AsyncStorage.js +0 -385
  536. package/Libraries/Storage/NativeAsyncLocalStorage.js +0 -44
  537. package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +0 -44
  538. package/Libraries/Utilities/JSDevSupportModule.js +0 -37
  539. package/Libraries/Utilities/NativeJSDevSupport.js +0 -23
  540. package/rntypes/BatchedBridge.d.ts +0 -23
  541. package/rntypes/Devtools.d.ts +0 -20
  542. package/rntypes/LaunchScreen.d.ts +0 -9
  543. package/rntypes/globals.d.ts +0 -497
  544. package/rntypes/index.d.ts +0 -9754
  545. package/rntypes/legacy-properties.d.ts +0 -238
  546. package/src/Libraries/Lists/__tests__/__snapshots__/FlatList-test.js.snap +0 -427
  547. package/src/Libraries/Lists/__tests__/__snapshots__/SectionList-test.js.snap +0 -391
  548. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +0 -4565
  549. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +0 -1153
  550. package/src/rntypes/BatchedBridge.d.ts +0 -23
  551. package/src/rntypes/Devtools.d.ts +0 -20
  552. package/src/rntypes/LaunchScreen.d.ts +0 -9
  553. package/src/rntypes/globals.d.ts +0 -497
  554. package/src/rntypes/index.d.ts +0 -9754
  555. package/src/rntypes/legacy-properties.d.ts +0 -238
  556. package/src/typings-index.ts +0 -37
  557. package/typings-index.d.ts +0 -23
  558. package/typings-index.js +0 -47
  559. package/typings-index.js.map +0 -1
@@ -1,269 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow
9
- * @emails oncall+react_native
10
- */
11
-
12
- 'use strict';
13
-
14
- const React = require('react');
15
- const ReactTestRenderer = require('react-test-renderer');
16
-
17
- const VirtualizedSectionList = require('../VirtualizedSectionList');
18
-
19
- describe('VirtualizedSectionList', () => {
20
- it('renders simple list', () => {
21
- const component = ReactTestRenderer.create(
22
- <VirtualizedSectionList
23
- sections={[
24
- {title: 's1', data: [{key: 'i1'}, {key: 'i2'}, {key: 'i3'}]},
25
- ]}
26
- renderItem={({item}) => <item value={item.key} />}
27
- getItem={(data, key) => data[key]}
28
- getItemCount={data => data.length}
29
- />,
30
- );
31
- expect(component).toMatchSnapshot();
32
- });
33
-
34
- it('renders empty list', () => {
35
- const component = ReactTestRenderer.create(
36
- <VirtualizedSectionList
37
- sections={[]}
38
- renderItem={({item}) => <item value={item.key} />}
39
- getItem={(data, key) => data[key]}
40
- getItemCount={data => data.length}
41
- />,
42
- );
43
- expect(component).toMatchSnapshot();
44
- });
45
-
46
- it('renders empty list with empty component', () => {
47
- const component = ReactTestRenderer.create(
48
- <VirtualizedSectionList
49
- sections={[]}
50
- ListEmptyComponent={() => <empty />}
51
- ListFooterComponent={() => <footer />}
52
- ListHeaderComponent={() => <header />}
53
- getItem={(data, key) => data[key]}
54
- getItemCount={data => data.length}
55
- renderItem={({item}) => <item value={item.key} />}
56
- />,
57
- );
58
- expect(component).toMatchSnapshot();
59
- });
60
-
61
- it('renders list with empty component', () => {
62
- const component = ReactTestRenderer.create(
63
- <VirtualizedSectionList
64
- sections={[{title: 's1', data: [{key: 'hello'}]}]}
65
- ListEmptyComponent={() => <empty />}
66
- getItem={(data, key) => data[key]}
67
- getItemCount={data => data.length}
68
- renderItem={({item}) => <item value={item.key} />}
69
- />,
70
- );
71
- expect(component).toMatchSnapshot();
72
- });
73
-
74
- it('renders all the bells and whistles', () => {
75
- const component = ReactTestRenderer.create(
76
- <VirtualizedSectionList
77
- ItemSeparatorComponent={() => <separator />}
78
- ListEmptyComponent={() => <empty />}
79
- ListFooterComponent={() => <footer />}
80
- ListHeaderComponent={() => <header />}
81
- sections={[
82
- {
83
- title: 's1',
84
- data: new Array(5).fill().map((_, ii) => ({id: String(ii)})),
85
- },
86
- ]}
87
- getItem={(data, key) => data[key]}
88
- getItemCount={data => data.length}
89
- getItemLayout={({index}) => ({
90
- index: -1,
91
- length: 50,
92
- offset: index * 50,
93
- })}
94
- inverted={true}
95
- keyExtractor={(item, index) => item.id}
96
- onRefresh={jest.fn()}
97
- refreshing={false}
98
- renderItem={({item}) => <item value={item.id} />}
99
- />,
100
- );
101
- expect(component).toMatchSnapshot();
102
- });
103
-
104
- it('handles separators correctly', () => {
105
- const infos = [];
106
- let component;
107
- ReactTestRenderer.act(() => {
108
- component = ReactTestRenderer.create(
109
- <VirtualizedSectionList
110
- ItemSeparatorComponent={props => <separator {...props} />}
111
- sections={[
112
- {title: 's0', data: [{key: 'i0'}, {key: 'i1'}, {key: 'i2'}]},
113
- ]}
114
- renderItem={info => {
115
- infos.push(info);
116
- return <item title={info.item.key} />;
117
- }}
118
- getItem={(data, key) => data[key]}
119
- getItemCount={data => data.length}
120
- />,
121
- );
122
- });
123
- expect(component).toMatchSnapshot();
124
-
125
- ReactTestRenderer.act(() => {
126
- infos[1].separators.highlight();
127
- });
128
- expect(component).toMatchSnapshot();
129
- ReactTestRenderer.act(() => {
130
- infos[2].separators.updateProps('leading', {press: true});
131
- });
132
- expect(component).toMatchSnapshot();
133
- ReactTestRenderer.act(() => {
134
- infos[1].separators.unhighlight();
135
- });
136
- expect(component).toMatchSnapshot();
137
- });
138
-
139
- it('handles nested lists', () => {
140
- const component = ReactTestRenderer.create(
141
- <VirtualizedSectionList
142
- sections={[{title: 'outer', data: [{key: 'outer0'}, {key: 'outer1'}]}]}
143
- renderItem={outerInfo => (
144
- <VirtualizedSectionList
145
- sections={[
146
- {
147
- title: 'inner',
148
- data: [
149
- {key: outerInfo.item.key + ':inner0'},
150
- {key: outerInfo.item.key + ':inner1'},
151
- ],
152
- },
153
- ]}
154
- horizontal={outerInfo.item.key === 'outer1'}
155
- renderItem={innerInfo => {
156
- return <item title={innerInfo.item.key} />;
157
- }}
158
- getItem={(data, key) => data[key]}
159
- getItemCount={data => data.length}
160
- />
161
- )}
162
- getItem={(data, key) => data[key]}
163
- getItemCount={data => data.length}
164
- />,
165
- );
166
- expect(component).toMatchSnapshot();
167
- });
168
-
169
- describe('scrollToLocation', () => {
170
- const ITEM_HEIGHT = 100;
171
-
172
- const createVirtualizedSectionList = (
173
- props: void | $TEMPORARY$object<{stickySectionHeadersEnabled: boolean}>,
174
- ) => {
175
- const component = ReactTestRenderer.create(
176
- <VirtualizedSectionList
177
- sections={[
178
- {title: 's1', data: [{key: 'i1.1'}, {key: 'i1.2'}, {key: 'i1.3'}]},
179
- {title: 's2', data: [{key: 'i2.1'}, {key: 'i2.2'}, {key: 'i2.3'}]},
180
- ]}
181
- renderItem={({item}) => <item value={item.key} />}
182
- getItem={(data, key) => data[key]}
183
- getItemCount={data => data.length}
184
- getItemLayout={(data, index) => ({
185
- length: ITEM_HEIGHT,
186
- offset: ITEM_HEIGHT * index,
187
- index,
188
- })}
189
- {...props}
190
- />,
191
- );
192
- const instance = component.getInstance();
193
- const spy = jest.fn();
194
-
195
- // $FlowFixMe[incompatible-use] wrong types
196
- // $FlowFixMe[prop-missing] wrong types
197
- instance._listRef.scrollToIndex = spy;
198
-
199
- return {
200
- instance,
201
- spy,
202
- };
203
- };
204
-
205
- it('when sticky stickySectionHeadersEnabled={true}, header height is added to the developer-provided viewOffset', () => {
206
- const {instance, spy} = createVirtualizedSectionList({
207
- stickySectionHeadersEnabled: true,
208
- });
209
-
210
- const viewOffset = 25;
211
-
212
- // $FlowFixMe[prop-missing] scrollToLocation isn't on instance
213
- instance?.scrollToLocation({
214
- sectionIndex: 0,
215
- itemIndex: 1,
216
- viewOffset,
217
- });
218
- expect(spy).toHaveBeenCalledWith({
219
- index: 1,
220
- itemIndex: 1,
221
- sectionIndex: 0,
222
- viewOffset: viewOffset + ITEM_HEIGHT,
223
- });
224
- });
225
-
226
- it.each([
227
- [
228
- // prevents #18098
229
- {sectionIndex: 0, itemIndex: 0},
230
- {
231
- index: 0,
232
- itemIndex: 0,
233
- sectionIndex: 0,
234
- viewOffset: 0,
235
- },
236
- ],
237
- [
238
- {sectionIndex: 2, itemIndex: 1},
239
- {
240
- index: 11,
241
- itemIndex: 1,
242
- sectionIndex: 2,
243
- viewOffset: 0,
244
- },
245
- ],
246
- [
247
- {
248
- sectionIndex: 0,
249
- itemIndex: 1,
250
- viewOffset: 25,
251
- },
252
- {
253
- index: 1,
254
- itemIndex: 1,
255
- sectionIndex: 0,
256
- viewOffset: 25,
257
- },
258
- ],
259
- ])(
260
- 'given sectionIndex, itemIndex and viewOffset, scrollToIndex is called with correct params',
261
- (scrollToLocationParams, expected) => {
262
- const {instance, spy} = createVirtualizedSectionList();
263
- // $FlowFixMe[prop-missing] scrollToLocation not on instance
264
- instance?.scrollToLocation(scrollToLocationParams);
265
- expect(spy).toHaveBeenCalledWith(expected);
266
- },
267
- );
268
- });
269
- });
@@ -1,385 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict
9
- * @jsdoc
10
- */
11
-
12
- import NativeAsyncLocalStorage from './NativeAsyncLocalStorage';
13
- import NativeAsyncSQLiteDBStorage from './NativeAsyncSQLiteDBStorage';
14
- import invariant from 'invariant';
15
-
16
- // Use SQLite if available, otherwise file storage.
17
- const RCTAsyncStorage = NativeAsyncSQLiteDBStorage || NativeAsyncLocalStorage;
18
-
19
- type GetRequest = {
20
- keys: Array<string>,
21
- callback: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void,
22
- keyIndex: number,
23
- resolve: (
24
- result?:
25
- | void
26
- | null
27
- | Promise<?Array<Array<string>>>
28
- | Array<Array<string>>,
29
- ) => void,
30
- reject: (error?: mixed) => void,
31
- };
32
-
33
- /**
34
- * `AsyncStorage` is a simple, unencrypted, asynchronous, persistent, key-value
35
- * storage system that is global to the app. It should be used instead of
36
- * LocalStorage.
37
- *
38
- * See https://reactnative.dev/docs/asyncstorage
39
- */
40
- const AsyncStorage = {
41
- _getRequests: ([]: Array<GetRequest>),
42
- _getKeys: ([]: Array<string>),
43
- _immediate: (null: ?number),
44
-
45
- /**
46
- * Fetches an item for a `key` and invokes a callback upon completion.
47
- *
48
- * See https://reactnative.dev/docs/asyncstorage#getitem
49
- */
50
- getItem: function (
51
- key: string,
52
- callback?: ?(error: ?Error, result: ?string) => void,
53
- ): Promise<?string> {
54
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
55
- return new Promise((resolve, reject) => {
56
- RCTAsyncStorage.multiGet([key], function (errors, result) {
57
- // Unpack result to get value from [[key,value]]
58
- const value = result && result[0] && result[0][1] ? result[0][1] : null;
59
- const errs = convertErrors(errors);
60
- callback && callback(errs && errs[0], value);
61
- if (errs) {
62
- reject(errs[0]);
63
- } else {
64
- resolve(value);
65
- }
66
- });
67
- });
68
- },
69
-
70
- /**
71
- * Sets the value for a `key` and invokes a callback upon completion.
72
- *
73
- * See https://reactnative.dev/docs/asyncstorage#setitem
74
- */
75
- setItem: function (
76
- key: string,
77
- value: string,
78
- callback?: ?(error: ?Error) => void,
79
- ): Promise<void> {
80
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
81
- return new Promise((resolve, reject) => {
82
- RCTAsyncStorage.multiSet([[key, value]], function (errors) {
83
- const errs = convertErrors(errors);
84
- callback && callback(errs && errs[0]);
85
- if (errs) {
86
- reject(errs[0]);
87
- } else {
88
- resolve();
89
- }
90
- });
91
- });
92
- },
93
-
94
- /**
95
- * Removes an item for a `key` and invokes a callback upon completion.
96
- *
97
- * See https://reactnative.dev/docs/asyncstorage#removeitem
98
- */
99
- removeItem: function (
100
- key: string,
101
- callback?: ?(error: ?Error) => void,
102
- ): Promise<void> {
103
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
104
- return new Promise((resolve, reject) => {
105
- RCTAsyncStorage.multiRemove([key], function (errors) {
106
- const errs = convertErrors(errors);
107
- callback && callback(errs && errs[0]);
108
- if (errs) {
109
- reject(errs[0]);
110
- } else {
111
- resolve();
112
- }
113
- });
114
- });
115
- },
116
-
117
- /**
118
- * Merges an existing `key` value with an input value, assuming both values
119
- * are stringified JSON.
120
- *
121
- * **NOTE:** This is not supported by all native implementations.
122
- *
123
- * See https://reactnative.dev/docs/asyncstorage#mergeitem
124
- */
125
- mergeItem: function (
126
- key: string,
127
- value: string,
128
- callback?: ?(error: ?Error) => void,
129
- ): Promise<void> {
130
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
131
- return new Promise((resolve, reject) => {
132
- RCTAsyncStorage.multiMerge([[key, value]], function (errors) {
133
- const errs = convertErrors(errors);
134
- callback && callback(errs && errs[0]);
135
- if (errs) {
136
- reject(errs[0]);
137
- } else {
138
- resolve();
139
- }
140
- });
141
- });
142
- },
143
-
144
- /**
145
- * Erases *all* `AsyncStorage` for all clients, libraries, etc. You probably
146
- * don't want to call this; use `removeItem` or `multiRemove` to clear only
147
- * your app's keys.
148
- *
149
- * See https://reactnative.dev/docs/asyncstorage#clear
150
- */
151
- clear: function (callback?: ?(error: ?Error) => void): Promise<void> {
152
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
153
- return new Promise((resolve, reject) => {
154
- RCTAsyncStorage.clear(function (error) {
155
- callback && callback(convertError(error));
156
- if (error && convertError(error)) {
157
- reject(convertError(error));
158
- } else {
159
- resolve();
160
- }
161
- });
162
- });
163
- },
164
-
165
- /**
166
- * Gets *all* keys known to your app; for all callers, libraries, etc.
167
- *
168
- * See https://reactnative.dev/docs/asyncstorage#getallkeys
169
- */
170
- getAllKeys: function (
171
- callback?: ?(error: ?Error, keys: ?Array<string>) => void,
172
- ): Promise<?Array<string>> {
173
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
174
- return new Promise((resolve, reject) => {
175
- RCTAsyncStorage.getAllKeys(function (error, keys) {
176
- callback && callback(convertError(error), keys);
177
- if (error) {
178
- reject(convertError(error));
179
- } else {
180
- resolve(keys);
181
- }
182
- });
183
- });
184
- },
185
-
186
- /**
187
- * The following batched functions are useful for executing a lot of
188
- * operations at once, allowing for native optimizations and provide the
189
- * convenience of a single callback after all operations are complete.
190
- *
191
- * These functions return arrays of errors, potentially one for every key.
192
- * For key-specific errors, the Error object will have a key property to
193
- * indicate which key caused the error.
194
- */
195
-
196
- /**
197
- * Flushes any pending requests using a single batch call to get the data.
198
- *
199
- * See https://reactnative.dev/docs/asyncstorage#flushgetrequests
200
- * */
201
- /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by
202
- * Flow's LTI update could not be added via codemod */
203
- flushGetRequests: function (): void {
204
- const getRequests = this._getRequests;
205
- const getKeys = this._getKeys;
206
-
207
- this._getRequests = [];
208
- this._getKeys = [];
209
-
210
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
211
- RCTAsyncStorage.multiGet(getKeys, function (errors, result) {
212
- // Even though the runtime complexity of this is theoretically worse vs if we used a map,
213
- // it's much, much faster in practice for the data sets we deal with (we avoid
214
- // allocating result pair arrays). This was heavily benchmarked.
215
- //
216
- // Is there a way to avoid using the map but fix the bug in this breaking test?
217
- // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264
218
- const map: {[string]: string} = {};
219
- result &&
220
- result.forEach(([key, value]) => {
221
- map[key] = value;
222
- return value;
223
- });
224
- const reqLength = getRequests.length;
225
- for (let i = 0; i < reqLength; i++) {
226
- const request = getRequests[i];
227
- const requestKeys = request.keys;
228
- const requestResult = requestKeys.map(key => [key, map[key]]);
229
- request.callback && request.callback(null, requestResult);
230
- request.resolve && request.resolve(requestResult);
231
- }
232
- });
233
- },
234
-
235
- /**
236
- * This allows you to batch the fetching of items given an array of `key`
237
- * inputs. Your callback will be invoked with an array of corresponding
238
- * key-value pairs found.
239
- *
240
- * See https://reactnative.dev/docs/asyncstorage#multiget
241
- */
242
- /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by
243
- * Flow's LTI update could not be added via codemod */
244
- multiGet: function (
245
- keys: Array<string>,
246
- callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void,
247
- ): Promise<?Array<Array<string>>> {
248
- if (!this._immediate) {
249
- this._immediate = setImmediate(() => {
250
- this._immediate = null;
251
- this.flushGetRequests();
252
- });
253
- }
254
-
255
- return new Promise<?Array<Array<string>>>((resolve, reject) => {
256
- this._getRequests.push({
257
- keys,
258
- callback,
259
- // do we need this?
260
- keyIndex: this._getKeys.length,
261
- resolve,
262
- reject,
263
- });
264
- // avoid fetching duplicates
265
- keys.forEach(key => {
266
- if (this._getKeys.indexOf(key) === -1) {
267
- this._getKeys.push(key);
268
- }
269
- });
270
- });
271
- },
272
-
273
- /**
274
- * Use this as a batch operation for storing multiple key-value pairs. When
275
- * the operation completes you'll get a single callback with any errors.
276
- *
277
- * See https://reactnative.dev/docs/asyncstorage#multiset
278
- */
279
- multiSet: function (
280
- keyValuePairs: Array<Array<string>>,
281
- callback?: ?(errors: ?Array<Error>) => void,
282
- ): Promise<void> {
283
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
284
- return new Promise((resolve, reject) => {
285
- RCTAsyncStorage.multiSet(keyValuePairs, function (errors) {
286
- const error = convertErrors(errors);
287
- callback && callback(error);
288
- if (error) {
289
- reject(error);
290
- } else {
291
- resolve();
292
- }
293
- });
294
- });
295
- },
296
-
297
- /**
298
- * Call this to batch the deletion of all keys in the `keys` array.
299
- *
300
- * See https://reactnative.dev/docs/asyncstorage#multiremove
301
- */
302
- multiRemove: function (
303
- keys: Array<string>,
304
- callback?: ?(errors: ?Array<Error>) => void,
305
- ): Promise<void> {
306
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
307
- return new Promise((resolve, reject) => {
308
- RCTAsyncStorage.multiRemove(keys, function (errors) {
309
- const error = convertErrors(errors);
310
- callback && callback(error);
311
- if (error) {
312
- reject(error);
313
- } else {
314
- resolve();
315
- }
316
- });
317
- });
318
- },
319
-
320
- /**
321
- * Batch operation to merge in existing and new values for a given set of
322
- * keys. This assumes that the values are stringified JSON.
323
- *
324
- * **NOTE**: This is not supported by all native implementations.
325
- *
326
- * See https://reactnative.dev/docs/asyncstorage#multimerge
327
- */
328
- multiMerge: function (
329
- keyValuePairs: Array<Array<string>>,
330
- callback?: ?(errors: ?Array<Error>) => void,
331
- ): Promise<void> {
332
- invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');
333
- return new Promise((resolve, reject) => {
334
- RCTAsyncStorage.multiMerge(keyValuePairs, function (errors) {
335
- const error = convertErrors(errors);
336
- callback && callback(error);
337
- if (error) {
338
- reject(error);
339
- } else {
340
- resolve();
341
- }
342
- });
343
- });
344
- },
345
- };
346
-
347
- // Not all native implementations support merge.
348
- // TODO: Check whether above comment is correct. multiMerge is guaranteed to
349
- // exist in the module spec so we should be able to just remove this check.
350
- if (RCTAsyncStorage && !RCTAsyncStorage.multiMerge) {
351
- // $FlowFixMe[unclear-type]
352
- delete (AsyncStorage: any).mergeItem;
353
- // $FlowFixMe[unclear-type]
354
- delete (AsyncStorage: any).multiMerge;
355
- }
356
-
357
- function convertErrors(
358
- // NOTE: The native module spec only has the Array case, but the Android
359
- // implementation passes a single object.
360
- errs: ?(
361
- | {message: string, key?: string}
362
- | Array<{message: string, key?: string}>
363
- ),
364
- ) {
365
- if (!errs) {
366
- return null;
367
- }
368
- return (Array.isArray(errs) ? errs : [errs]).map(e => convertError(e));
369
- }
370
-
371
- declare function convertError(void | null): null;
372
- declare function convertError({message: string, key?: string}): Error;
373
- /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
374
- * LTI update could not be added via codemod */
375
- function convertError(error) {
376
- if (!error) {
377
- return null;
378
- }
379
- const out = new Error(error.message);
380
- // $FlowFixMe[unclear-type]
381
- (out: any).key = error.key;
382
- return out;
383
- }
384
-
385
- module.exports = AsyncStorage;
@@ -1,44 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict
8
- * @format
9
- */
10
-
11
- import type {TurboModule} from '../TurboModule/RCTExport';
12
- import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
13
-
14
- export interface Spec extends TurboModule {
15
- +getConstants: () => {};
16
- +multiGet: (
17
- keys: Array<string>,
18
- callback: (
19
- errors: ?Array<{message: string, key?: string}>,
20
- kvPairs: ?Array<Array<string>>,
21
- ) => void,
22
- ) => void;
23
- +multiSet: (
24
- kvPairs: Array<Array<string>>,
25
- callback: (errors: ?Array<{message: string, key?: string}>) => void,
26
- ) => void;
27
- +multiMerge: (
28
- kvPairs: Array<Array<string>>,
29
- callback: (errors: ?Array<{message: string, key?: string}>) => void,
30
- ) => void;
31
- +multiRemove: (
32
- keys: Array<string>,
33
- callback: (errors: ?Array<{message: string, key?: string}>) => void,
34
- ) => void;
35
- +clear: (callback: (error: {message: string, key?: string}) => void) => void;
36
- +getAllKeys: (
37
- callback: (
38
- error: ?{message: string, key?: string},
39
- allKeys: ?Array<string>,
40
- ) => void,
41
- ) => void;
42
- }
43
-
44
- export default (TurboModuleRegistry.get<Spec>('AsyncLocalStorage'): ?Spec);