@office-iss/react-native-win32 0.79.0 → 0.80.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 (294) hide show
  1. package/.flowconfig +10 -3
  2. package/CHANGELOG.json +112 -19
  3. package/CHANGELOG.md +46 -11
  4. package/IntegrationTests/ImageCachePolicyTest.js +1 -1
  5. package/IntegrationTests/LayoutEventsTest.js +1 -4
  6. package/Libraries/Alert/Alert.d.ts +4 -1
  7. package/Libraries/Alert/Alert.js +3 -0
  8. package/Libraries/Alert/RCTAlertManager.js +17 -0
  9. package/Libraries/Animated/Animated.js.flow +1 -3
  10. package/Libraries/Animated/AnimatedEvent.js +4 -3
  11. package/Libraries/Animated/AnimatedExports.js +2 -2
  12. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  13. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  14. package/Libraries/Animated/Easing.js +13 -15
  15. package/Libraries/Animated/animations/Animation.js +8 -4
  16. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  17. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  18. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  19. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  20. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  22. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  23. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  24. package/Libraries/AppState/AppState.js +7 -2
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  26. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  27. package/Libraries/Blob/BlobManager.js +1 -0
  28. package/Libraries/Blob/FileReader.js +219 -8
  29. package/Libraries/Blob/URL.js +37 -12
  30. package/Libraries/Blob/URLSearchParams.js +106 -31
  31. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
  34. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  35. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  36. package/Libraries/Components/Button.js +1 -1
  37. package/Libraries/Components/Button.win32.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  39. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  43. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  45. package/Libraries/Components/Pressable/Pressable.js +20 -4
  46. package/Libraries/Components/Pressable/Pressable.win32.js +20 -4
  47. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  48. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  49. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  50. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  51. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  52. package/Libraries/Components/StaticRenderer.js +1 -1
  53. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  54. package/Libraries/Components/Switch/Switch.js +8 -4
  55. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  57. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +2 -1
  58. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  59. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  60. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  61. package/Libraries/Components/TextInput/TextInput.flow.win32.js +1208 -0
  62. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  63. package/Libraries/Components/TextInput/TextInput.win32.js +89 -1059
  64. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  65. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  66. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  67. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  68. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  69. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +4 -32
  70. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  71. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +2 -1
  72. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  73. package/Libraries/Components/Touchable/Touchable.js +5 -5
  74. package/Libraries/Components/Touchable/Touchable.win32.js +5 -5
  75. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  76. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  77. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  78. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +6 -6
  79. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  80. package/Libraries/Components/View/View.js +18 -21
  81. package/Libraries/Components/View/View.win32.js +21 -24
  82. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  83. package/Libraries/Components/View/ViewAccessibility.win32.js +9 -1
  84. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +49 -3
  86. package/Libraries/Core/ReactNativeVersion.js +1 -1
  87. package/Libraries/Core/setUpReactDevTools.js +5 -5
  88. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  89. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  90. package/Libraries/Image/AssetSourceResolver.js +17 -4
  91. package/Libraries/Image/Image.d.ts +26 -10
  92. package/Libraries/Image/Image.js +17 -0
  93. package/Libraries/Image/Image.js.flow +5 -5
  94. package/Libraries/Image/ImageBackground.js +2 -0
  95. package/Libraries/Image/ImageInjection.js +1 -1
  96. package/Libraries/Image/ImageProps.js +22 -17
  97. package/Libraries/Image/ImageSource.js +3 -1
  98. package/Libraries/Image/ImageSourceUtils.js +4 -2
  99. package/Libraries/Image/ImageTypes.flow.js +1 -1
  100. package/Libraries/Image/Tests/ImageWin32Test.d.ts +2 -1
  101. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  102. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  103. package/Libraries/Interaction/InteractionManager.js +1 -1
  104. package/Libraries/Interaction/PanResponder.js +3 -3
  105. package/Libraries/Interaction/TaskQueue.js +1 -0
  106. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  107. package/Libraries/Linking/Linking.js +1 -1
  108. package/Libraries/Lists/FlatList.d.ts +2 -2
  109. package/Libraries/Lists/FlatList.js +8 -11
  110. package/Libraries/Lists/SectionList.js +39 -42
  111. package/Libraries/Lists/SectionListModern.js +25 -34
  112. package/Libraries/Lists/VirtualizedList.js +1 -0
  113. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  114. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  115. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  116. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +140 -0
  117. package/Libraries/Modal/Modal.js +33 -7
  118. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  119. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  120. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  121. package/Libraries/NativeComponent/BaseViewConfig.win32.js +1 -0
  122. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  123. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  124. package/Libraries/Network/RCTNetworking.android.js +1 -1
  125. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  126. package/Libraries/Network/RCTNetworking.js +17 -0
  127. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  128. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  129. package/Libraries/Network/XMLHttpRequest.js +781 -10
  130. package/Libraries/Performance/Systrace.js +7 -7
  131. package/Libraries/Pressability/Pressability.js +1 -1
  132. package/Libraries/Pressability/Pressability.win32.js +1 -1
  133. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  134. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  135. package/Libraries/ReactNative/AppRegistry.js +2 -322
  136. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  137. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  138. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  139. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  140. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  141. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  142. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  143. package/Libraries/ReactNative/renderApplication.js +9 -0
  144. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  145. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  146. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  147. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  148. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  149. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  150. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  151. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  152. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  153. package/Libraries/Settings/Settings.ios.js +1 -0
  154. package/Libraries/Settings/Settings.js +13 -19
  155. package/Libraries/Settings/Settings.win32.js +19 -20
  156. package/Libraries/Settings/SettingsFallback.js +33 -0
  157. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  158. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  159. package/Libraries/StyleSheet/Rect.js +1 -0
  160. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  161. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  162. package/Libraries/StyleSheet/{StyleSheet.win32.js → StyleSheetExports.js} +2 -151
  163. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  166. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  167. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  168. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  169. package/Libraries/Text/Text.d.ts +2 -5
  170. package/Libraries/Text/Text.js +3 -3
  171. package/Libraries/Text/Text.win32.js +3 -3
  172. package/Libraries/Text/TextNativeComponent.js +0 -4
  173. package/Libraries/Text/TextNativeComponent.win32.js +0 -4
  174. package/Libraries/Text/TextProps.js +5 -33
  175. package/Libraries/Text/TextProps.win32.js +5 -30
  176. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  177. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  178. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  179. package/Libraries/Types/CoreEventTypes.js +1 -1
  180. package/Libraries/Types/CoreEventTypes.win32.js +1 -1
  181. package/Libraries/Utilities/Appearance.js +2 -0
  182. package/Libraries/Utilities/BackHandler.js +17 -0
  183. package/Libraries/Utilities/DeviceInfo.js +2 -0
  184. package/Libraries/Utilities/Dimensions.js +1 -1
  185. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  186. package/Libraries/Utilities/Platform.js +17 -0
  187. package/Libraries/Utilities/PlatformTypes.js +11 -3
  188. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  189. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  190. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  191. package/Libraries/WebSocket/WebSocket.js +313 -8
  192. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  193. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  194. package/flow/global.js +1 -0
  195. package/index.js +51 -331
  196. package/index.win32.js +71 -352
  197. package/interface.js +0 -4
  198. package/jest/resolver.js +31 -0
  199. package/overrides.json +45 -47
  200. package/package.json +26 -26
  201. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  202. package/src/private/animated/NativeAnimatedHelper.win32.js +21 -8
  203. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  204. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  205. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  206. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  207. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  208. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  209. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  210. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  211. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  212. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  213. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  214. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  215. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  216. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  217. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  218. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  219. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  220. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  221. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  222. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  223. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  224. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  225. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  226. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.win32.js +1 -1
  227. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  228. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  229. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  230. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  231. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +9 -1
  232. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  233. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  234. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  235. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  236. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  237. package/src/private/styles/composeStyles.js +12 -5
  238. package/src/private/types/HostComponent.js +1 -1
  239. package/src/private/types/HostInstance.js +67 -1
  240. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  241. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  242. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  243. package/src/private/webapis/performance/Performance.js +1 -3
  244. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  245. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  246. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  247. package/src/types/globals.d.ts +42 -0
  248. package/src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx +7 -7
  249. package/src-win/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +3 -3
  250. package/src-win/Libraries/Image/Tests/ImageWin32Test.tsx +1 -1
  251. package/src-win/Libraries/Text/Text.d.ts +2 -5
  252. package/types/index.d.ts +6 -3
  253. package/types/public/ReactNativeTypes.d.ts +2 -2
  254. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  255. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  256. package/Libraries/Blob/FileReader_new.js +0 -231
  257. package/Libraries/Blob/FileReader_old.js +0 -186
  258. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  259. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  260. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  261. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  262. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  263. package/Libraries/Events/CustomEvent.js +0 -32
  264. package/Libraries/Events/EventPolyfill.js +0 -239
  265. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  266. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  267. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  268. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  269. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  270. package/Libraries/NewAppScreen/components/Header.js +0 -77
  271. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  272. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  273. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  274. package/Libraries/NewAppScreen/components/logo.png +0 -0
  275. package/Libraries/NewAppScreen/index.js +0 -25
  276. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  277. package/Libraries/Utilities/DeviceInfo.win32.js +0 -19
  278. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  279. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  280. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  281. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  282. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  283. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  284. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  285. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  286. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  287. package/flow/jest.js +0 -1287
  288. package/jest/__tests__/setup-test.js +0 -18
  289. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  290. package/src/private/utilities/ensureInstance.js +0 -21
  291. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  292. package/types/modules/LaunchScreen.d.ts +0 -18
  293. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  294. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -19,13 +19,19 @@ import {ImageResizeMode} from './ImageResizeMode';
19
19
  import {ImageRequireSource, ImageURISource} from './ImageSource';
20
20
 
21
21
  /**
22
- * @see ImagePropsIOS.onProgress
22
+ * @deprecated Use `ImageProgressEventIOS` instead.
23
23
  */
24
24
  export interface ImageProgressEventDataIOS {
25
25
  loaded: number;
26
26
  total: number;
27
27
  }
28
28
 
29
+ /**
30
+ * @see https://reactnative.dev/docs/image#onprogress
31
+ */
32
+ export type ImageProgressEventIOS =
33
+ NativeSyntheticEvent<ImageProgressEventDataIOS>;
34
+
29
35
  export interface ImagePropsIOS {
30
36
  /**
31
37
  * blurRadius: the blur radius of the blur filter added to the image
@@ -44,9 +50,7 @@ export interface ImagePropsIOS {
44
50
  /**
45
51
  * Invoked on download progress with {nativeEvent: {loaded, total}}
46
52
  */
47
- onProgress?:
48
- | ((event: NativeSyntheticEvent<ImageProgressEventDataIOS>) => void)
49
- | undefined;
53
+ onProgress?: ((event: ImageProgressEventIOS) => void) | undefined;
50
54
 
51
55
  /**
52
56
  * Invoked when a partial load of the image is complete. The definition of
@@ -99,6 +103,9 @@ export type ImageSourcePropType =
99
103
  | ImageURISource[]
100
104
  | ImageRequireSource;
101
105
 
106
+ /**
107
+ * @deprecated Use `ImageLoadEvent` instead.
108
+ */
102
109
  export interface ImageLoadEventData {
103
110
  source: {
104
111
  height: number;
@@ -107,10 +114,23 @@ export interface ImageLoadEventData {
107
114
  };
108
115
  }
109
116
 
117
+ /**
118
+ * @see https://reactnative.dev/docs/image#onload
119
+ */
120
+ export type ImageLoadEvent = NativeSyntheticEvent<ImageLoadEventData>;
121
+
122
+ /**
123
+ * @deprecated Use `ImageErrorEvent` instead.
124
+ */
110
125
  export interface ImageErrorEventData {
111
126
  error: any;
112
127
  }
113
128
 
129
+ /**
130
+ * @see https://reactnative.dev/docs/image#onerror
131
+ */
132
+ export type ImageErrorEvent = NativeSyntheticEvent<ImageErrorEventData>;
133
+
114
134
  /**
115
135
  * @see https://reactnative.dev/docs/image#resolveassetsource
116
136
  */
@@ -145,17 +165,13 @@ export interface ImagePropsBase
145
165
  /**
146
166
  * Invoked on load error with {nativeEvent: {error}}
147
167
  */
148
- onError?:
149
- | ((error: NativeSyntheticEvent<ImageErrorEventData>) => void)
150
- | undefined;
168
+ onError?: ((error: ImageErrorEvent) => void) | undefined;
151
169
 
152
170
  /**
153
171
  * Invoked when load completes successfully
154
172
  * { source: { uri, height, width } }.
155
173
  */
156
- onLoad?:
157
- | ((event: NativeSyntheticEvent<ImageLoadEventData>) => void)
158
- | undefined;
174
+ onLoad?: ((event: ImageLoadEvent) => void) | undefined;
159
175
 
160
176
  /**
161
177
  * Invoked when load either succeeds or fails
@@ -0,0 +1,17 @@
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-local
8
+ * @format
9
+ */
10
+
11
+ // NOTE: This file supports backwards compatibility of subpath (deep) imports
12
+ // from 'react-native' with platform-specific extensions. It can be deleted
13
+ // once we remove the "./*" mapping from package.json "exports".
14
+
15
+ import Image from './Image';
16
+
17
+ export default Image;
@@ -8,15 +8,15 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import type {Image} from './ImageTypes.flow';
11
+ import type {ImageType} from './ImageTypes.flow';
12
12
 
13
13
  export type {
14
- ImageProgressEventDataIOS,
14
+ ImageProgressEventIOS,
15
15
  ImagePropsIOS,
16
16
  ImagePropsAndroid,
17
17
  ImageSourcePropType,
18
- ImageLoadEventData,
19
- ImageErrorEventData,
18
+ ImageLoadEvent,
19
+ ImageErrorEvent,
20
20
  ImagePropsBase,
21
21
  ImageProps,
22
22
  ImageBackgroundProps,
@@ -24,4 +24,4 @@ export type {
24
24
 
25
25
  export type {ImageResolvedAssetSource, ImageSize} from './ImageTypes.flow';
26
26
 
27
- declare export default Image;
27
+ declare export default ImageType;
@@ -17,6 +17,8 @@ import StyleSheet from '../StyleSheet/StyleSheet';
17
17
  import Image from './Image';
18
18
  import * as React from 'react';
19
19
 
20
+ export type {ImageBackgroundProps} from './ImageProps';
21
+
20
22
  /**
21
23
  * Very simple drop-in replacement for <Image> which supports nesting views.
22
24
  *
@@ -11,7 +11,7 @@
11
11
  import type {
12
12
  AbstractImageAndroid,
13
13
  AbstractImageIOS,
14
- Image as ImageComponent,
14
+ ImageType as ImageComponent,
15
15
  } from './ImageTypes.flow';
16
16
 
17
17
  import useMergeRefs from '../Utilities/useMergeRefs';
@@ -21,26 +21,35 @@ import type {
21
21
  LayoutChangeEvent,
22
22
  NativeSyntheticEvent,
23
23
  } from '../Types/CoreEventTypes';
24
- import typeof Image from './Image';
25
24
  import type {ImageResizeMode} from './ImageResizeMode';
26
25
  import type {ImageSource, ImageURISource} from './ImageSource';
27
- import type {ElementRef, Node, RefSetter} from 'react';
26
+ import type {ImageType} from './ImageTypes.flow';
27
+
28
+ import * as React from 'react';
28
29
 
29
30
  export type ImageSourcePropType = ImageSource;
30
31
 
31
- /**
32
- * @see ImagePropsIOS.onProgress
33
- */
34
- export type ImageProgressEventDataIOS = {
32
+ type ImageProgressEventDataIOS = {
35
33
  loaded: number,
36
34
  total: number,
37
35
  };
38
36
 
39
- export type ImageErrorEventData = {
37
+ /**
38
+ * @see ImagePropsIOS.onProgress
39
+ */
40
+ export type ImageProgressEventIOS = NativeSyntheticEvent<
41
+ $ReadOnly<ImageProgressEventDataIOS>,
42
+ >;
43
+
44
+ type ImageErrorEventData = {
40
45
  error: string,
41
46
  };
42
47
 
43
- export type ImageLoadEventData = {
48
+ export type ImageErrorEvent = NativeSyntheticEvent<
49
+ $ReadOnly<ImageErrorEventData>,
50
+ >;
51
+
52
+ type ImageLoadEventData = {
44
53
  source: {
45
54
  height: number,
46
55
  width: number,
@@ -70,9 +79,7 @@ export type ImagePropsIOS = $ReadOnly<{
70
79
  *
71
80
  * See https://reactnative.dev/docs/image#onprogress
72
81
  */
73
- onProgress?: ?(
74
- event: NativeSyntheticEvent<$ReadOnly<ImageProgressEventDataIOS>>,
75
- ) => void,
82
+ onProgress?: ?(event: ImageProgressEventIOS) => void,
76
83
  }>;
77
84
 
78
85
  export type ImagePropsAndroid = $ReadOnly<{
@@ -121,7 +128,7 @@ export type ImagePropsAndroid = $ReadOnly<{
121
128
  }>;
122
129
 
123
130
  export type ImagePropsBase = $ReadOnly<{
124
- ...$Diff<ViewProps, $ReadOnly<{style: ?ViewStyleProp}>>,
131
+ ...Omit<ViewProps, 'style'>,
125
132
  /**
126
133
  * When true, indicates the image is an accessibility element.
127
134
  *
@@ -201,9 +208,7 @@ export type ImagePropsBase = $ReadOnly<{
201
208
  *
202
209
  * See https://reactnative.dev/docs/image#onerror
203
210
  */
204
- onError?: ?(
205
- event: NativeSyntheticEvent<$ReadOnly<ImageErrorEventData>>,
206
- ) => void,
211
+ onError?: ?(event: ImageErrorEvent) => void,
207
212
 
208
213
  /**
209
214
  * onLayout function
@@ -341,7 +346,7 @@ export type ImageProps = $ReadOnly<{
341
346
 
342
347
  export type ImageBackgroundProps = $ReadOnly<{
343
348
  ...ImageProps,
344
- children?: Node,
349
+ children?: React.Node,
345
350
 
346
351
  /**
347
352
  * Style applied to the outer View component
@@ -362,5 +367,5 @@ export type ImageBackgroundProps = $ReadOnly<{
362
367
  *
363
368
  * See https://reactnative.dev/docs/imagebackground#imageref
364
369
  */
365
- imageRef?: RefSetter<ElementRef<Image>>,
370
+ imageRef?: React.RefSetter<React.ElementRef<ImageType>>,
366
371
  }>;
@@ -82,8 +82,10 @@ export interface ImageURISource {
82
82
  +scale?: ?number;
83
83
  }
84
84
 
85
+ export type ImageRequireSource = number;
86
+
85
87
  export type ImageSource =
86
- | number
88
+ | ImageRequireSource
87
89
  | ImageURISource
88
90
  | $ReadOnlyArray<ImageURISource>;
89
91
 
@@ -52,14 +52,14 @@ export function getImageSourcesFromImageProps(
52
52
  // 1x scale is provided in `srcSet` prop so ignore the `src` prop if provided.
53
53
  shouldUseSrcForDefaultScale =
54
54
  scale === 1 ? false : shouldUseSrcForDefaultScale;
55
- sourceList.push({headers: headers, scale, uri, width, height});
55
+ sourceList.push({headers, scale, uri, width, height});
56
56
  }
57
57
  }
58
58
  });
59
59
 
60
60
  if (shouldUseSrcForDefaultScale && src != null) {
61
61
  sourceList.push({
62
- headers: headers,
62
+ headers,
63
63
  scale: 1,
64
64
  uri: src,
65
65
  width,
@@ -73,6 +73,8 @@ export function getImageSourcesFromImageProps(
73
73
  sources = sourceList;
74
74
  } else if (src != null) {
75
75
  sources = [{uri: src, headers: headers, width, height}];
76
+ } else if (source != null && source.uri && Object.keys(headers).length > 0) {
77
+ sources = [{...source, headers}];
76
78
  } else {
77
79
  sources = source;
78
80
  }
@@ -83,6 +83,6 @@ export type AbstractImageIOS = component(
83
83
 
84
84
  export type ImageIOS = AbstractImageIOS & ImageComponentStaticsIOS;
85
85
 
86
- export type Image = ImageIOS | ImageAndroid;
86
+ export type ImageType = ImageIOS | ImageAndroid;
87
87
 
88
88
  export type {ImageProps} from './ImageProps';
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  export declare const title = "ImageWin32Test";
2
3
  export declare const displayName = "Image Win32 test";
3
4
  export declare const description = "Image Win32 test";
4
5
  export declare const examples: {
5
6
  title: string;
6
7
  description: string;
7
- render(): JSX.Element;
8
+ render(): React.JSX.Element;
8
9
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"ImageWin32Test.js","sourceRoot":"","sources":["../../../src-win/Libraries/Image/Tests/ImageWin32Test.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,+CAAqC;AAErC,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,QAAA,KAAK,GAAG,gBAAgB,CAAC;AACzB,QAAA,WAAW,GAAG,kBAAkB,CAAC;AACjC,QAAA,WAAW,GAAG,kBAAkB,CAAC;AACjC,QAAA,QAAQ,GAAG;IACpB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,YAAY;QACzB,MAAM;YACJ,OAAO,CACL,8BAAC,oBAAK,IACJ,KAAK,EAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EACnC,MAAM,EAAG,SAAS,GAClB,CACH,CAAC;QACJ,CAAC;KACF;CACF,CAAC","sourcesContent":["import React from 'react'\nimport { Image } from 'react-native';\n\nconst testImage = require('./img/dpitest.png');\n\nexport const title = 'ImageWin32Test';\nexport const displayName = 'Image Win32 test';\nexport const description = 'Image Win32 test';\nexport const examples = [\n {\n title: 'Win32 Image control test',\n description: 'Test Image',\n render(): JSX.Element {\n return (\n <Image\n style={ { width: 100, height: 100 } }\n source={ testImage }\n />\n );\n },\n },\n ];\n"]}
1
+ {"version":3,"file":"ImageWin32Test.js","sourceRoot":"","sources":["../../../src-win/Libraries/Image/Tests/ImageWin32Test.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,+CAAqC;AAErC,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,QAAA,KAAK,GAAG,gBAAgB,CAAC;AACzB,QAAA,WAAW,GAAG,kBAAkB,CAAC;AACjC,QAAA,WAAW,GAAG,kBAAkB,CAAC;AACjC,QAAA,QAAQ,GAAG;IACpB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,YAAY;QACzB,MAAM;YACJ,OAAO,CACL,8BAAC,oBAAK,IACJ,KAAK,EAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EACnC,MAAM,EAAG,SAAS,GAClB,CACH,CAAC;QACJ,CAAC;KACF;CACF,CAAC","sourcesContent":["import React from 'react'\nimport { Image } from 'react-native';\n\nconst testImage = require('./img/dpitest.png');\n\nexport const title = 'ImageWin32Test';\nexport const displayName = 'Image Win32 test';\nexport const description = 'Image Win32 test';\nexport const examples = [\n {\n title: 'Win32 Image control test',\n description: 'Test Image',\n render() {\n return (\n <Image\n style={ { width: 100, height: 100 } }\n source={ testImage }\n />\n );\n },\n },\n ];\n"]}
@@ -20,6 +20,9 @@ export type PromiseTask = {
20
20
  gen: () => Promise<any>;
21
21
  };
22
22
 
23
+ /**
24
+ * @deprecated
25
+ */
23
26
  export interface InteractionManagerStatic {
24
27
  Events: {
25
28
  interactionStart: string;
@@ -36,6 +39,8 @@ export interface InteractionManagerStatic {
36
39
  * emitted
37
40
  * @param context - Optional context object to use when invoking the
38
41
  * listener
42
+ *
43
+ * @deprecated
39
44
  */
40
45
  addListener(
41
46
  eventType: string,
@@ -46,6 +51,8 @@ export interface InteractionManagerStatic {
46
51
  /**
47
52
  * Schedule a function to run after all interactions have completed.
48
53
  * Returns a cancellable
54
+ *
55
+ * @deprecated
49
56
  */
50
57
  runAfterInteractions(task?: (() => any) | SimpleTask | PromiseTask): {
51
58
  then: (onfulfilled?: () => any, onrejected?: () => any) => Promise<any>;
@@ -55,11 +62,15 @@ export interface InteractionManagerStatic {
55
62
 
56
63
  /**
57
64
  * Notify manager that an interaction has started.
65
+ *
66
+ * @deprecated
58
67
  */
59
68
  createInteractionHandle(): Handle;
60
69
 
61
70
  /**
62
71
  * Notify manager that an interaction has completed.
72
+ *
73
+ * @deprecated
63
74
  */
64
75
  clearInteractionHandle(handle: Handle): void;
65
76
 
@@ -67,6 +78,8 @@ export interface InteractionManagerStatic {
67
78
  * A positive number will use setTimeout to schedule any tasks after
68
79
  * the eventLoopRunningTime hits the deadline value, otherwise all
69
80
  * tasks will be executed in one setImmediate batch (default).
81
+ *
82
+ * @deprecated
70
83
  */
71
84
  setDeadline(deadline: number): void;
72
85
  }
@@ -8,11 +8,11 @@
8
8
  * @flow strict-local
9
9
  */
10
10
 
11
+ import type {EventSubscription} from '../vendor/emitter/EventEmitter';
11
12
  import type {Task} from './TaskQueue';
12
13
 
13
14
  import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
14
15
  import EventEmitter from '../vendor/emitter/EventEmitter';
15
- import type {EventSubscription} from '../vendor/emitter/EventEmitter';
16
16
 
17
17
  const BatchedBridge = require('../BatchedBridge/BatchedBridge').default;
18
18
  const infoLog = require('../Utilities/infoLog').default;
@@ -193,7 +193,7 @@ type PassiveCallback = (
193
193
  gestureState: PanResponderGestureState,
194
194
  ) => mixed;
195
195
 
196
- export type GestureResponderHandlers = {
196
+ export type GestureResponderHandlerMethods = {
197
197
  onMoveShouldSetResponder: (event: GestureResponderEvent) => boolean,
198
198
  onMoveShouldSetResponderCapture: (event: GestureResponderEvent) => boolean,
199
199
  onResponderEnd: (event: GestureResponderEvent) => void,
@@ -333,7 +333,7 @@ const PanResponder = {
333
333
  */
334
334
  _updateGestureStateOnMove(
335
335
  gestureState: PanResponderGestureState,
336
- touchHistory: $PropertyType<GestureResponderEvent, 'touchHistory'>,
336
+ touchHistory: GestureResponderEvent['touchHistory'],
337
337
  ) {
338
338
  gestureState.numberActiveTouches = touchHistory.numberActiveTouches;
339
339
  gestureState.moveX = currentCentroidXOfTouchesChangedAfter(
@@ -403,7 +403,7 @@ const PanResponder = {
403
403
  */
404
404
  create(config: PanResponderCallbacks): {
405
405
  getInteractionHandle: () => ?number,
406
- panHandlers: GestureResponderHandlers,
406
+ panHandlers: GestureResponderHandlerMethods,
407
407
  } {
408
408
  const interactionState = {
409
409
  handle: (null: ?number),
@@ -117,6 +117,7 @@ class TaskQueue {
117
117
  } catch (e) {
118
118
  e.message =
119
119
  // $FlowFixMe[incompatible-type]
120
+ // $FlowFixMe[incompatible-use]
120
121
  'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message;
121
122
  throw e;
122
123
  }
@@ -20,14 +20,14 @@ import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNa
20
20
  import {getFabricUIManager} from '../ReactNative/FabricUIManager';
21
21
  import Platform from '../Utilities/Platform';
22
22
 
23
+ const UIManager = require('../ReactNative/UIManager').default;
24
+
23
25
  export type {
24
26
  LayoutAnimationType,
25
27
  LayoutAnimationProperty,
26
28
  LayoutAnimationAnimationConfig as LayoutAnimationAnim,
27
29
  } from '../Renderer/shims/ReactNativeTypes';
28
30
 
29
- const UIManager = require('../ReactNative/UIManager').default;
30
-
31
31
  // Reexport type
32
32
  export type LayoutAnimationConfig = LayoutAnimationConfig_;
33
33
 
@@ -34,7 +34,7 @@ class LinkingImpl extends NativeEventEmitter<LinkingEventDefinitions> {
34
34
  */
35
35
  addEventListener<K: $Keys<LinkingEventDefinitions>>(
36
36
  eventType: K,
37
- listener: (...$ElementType<LinkingEventDefinitions, K>) => mixed,
37
+ listener: (...LinkingEventDefinitions[K]) => mixed,
38
38
  ): EventSubscription {
39
39
  return this.addListener(eventType, listener);
40
40
  }
@@ -228,8 +228,8 @@ export abstract class FlatListComponent<
228
228
  * Provides a reference to the underlying host component
229
229
  */
230
230
  getNativeScrollRef: () =>
231
- | React.ElementRef<typeof View>
232
- | React.ElementRef<typeof ScrollViewComponent>
231
+ | React.ComponentRef<typeof View>
232
+ | React.ComponentRef<typeof ScrollViewComponent>
233
233
  | null
234
234
  | undefined;
235
235
 
@@ -22,7 +22,7 @@ import {type ScrollResponderType} from '../Components/ScrollView/ScrollView';
22
22
  import View from '../Components/View/View';
23
23
  import VirtualizedLists from '@react-native/virtualized-lists';
24
24
  import memoizeOne from 'memoize-one';
25
- import React from 'react';
25
+ import * as React from 'react';
26
26
 
27
27
  const StyleSheet = require('../StyleSheet/StyleSheet').default;
28
28
  const deepDiffer = require('../Utilities/differ/deepDiffer').default;
@@ -184,17 +184,14 @@ type FlatListBaseProps<ItemT> = {
184
184
  type VirtualizedListProps = React.ElementConfig<typeof VirtualizedList>;
185
185
 
186
186
  export type FlatListProps<ItemT> = {
187
- ...$Diff<
187
+ ...Omit<
188
188
  VirtualizedListProps,
189
- {
190
- data: $PropertyType<VirtualizedListProps, 'data'>,
191
- getItem: $PropertyType<VirtualizedListProps, 'getItem'>,
192
- getItemCount: $PropertyType<VirtualizedListProps, 'getItemCount'>,
193
- getItemLayout: $PropertyType<VirtualizedListProps, 'getItemLayout'>,
194
- renderItem: $PropertyType<VirtualizedListProps, 'renderItem'>,
195
- keyExtractor: $PropertyType<VirtualizedListProps, 'keyExtractor'>,
196
- ...
197
- },
189
+ | 'data'
190
+ | 'getItem'
191
+ | 'getItemCount'
192
+ | 'getItemLayout'
193
+ | 'renderItem'
194
+ | 'keyExtractor',
198
195
  >,
199
196
  ...FlatListBaseProps<ItemT>,
200
197
  ...
@@ -12,8 +12,10 @@
12
12
 
13
13
  import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
14
14
  import type {
15
+ ListRenderItemInfo,
15
16
  ScrollToLocationParamsType,
16
17
  SectionBase as _SectionBase,
18
+ SectionData,
17
19
  VirtualizedSectionListProps,
18
20
  } from '@react-native/virtualized-lists';
19
21
 
@@ -23,11 +25,21 @@ import * as React from 'react';
23
25
 
24
26
  const VirtualizedSectionList = VirtualizedLists.VirtualizedSectionList;
25
27
 
26
- type Item = any;
28
+ type DefaultSectionT = {
29
+ [key: string]: any,
30
+ };
31
+
32
+ export type SectionBase<
33
+ SectionItemT,
34
+ SectionT = DefaultSectionT,
35
+ > = _SectionBase<SectionItemT, SectionT>;
27
36
 
28
- export type SectionBase<SectionItemT> = _SectionBase<SectionItemT>;
37
+ export type {
38
+ SectionData as SectionListData,
39
+ ScrollToLocationParamsType as SectionListScrollParams,
40
+ };
29
41
 
30
- type RequiredProps<SectionT: SectionBase<any>> = {
42
+ type RequiredProps<ItemT, SectionT = DefaultSectionT> = {
31
43
  /**
32
44
  * The actual data to render, akin to the `data` prop in [`<FlatList>`](https://reactnative.dev/docs/flatlist).
33
45
  *
@@ -39,25 +51,24 @@ type RequiredProps<SectionT: SectionBase<any>> = {
39
51
  * ItemSeparatorComponent?: ?ReactClass<{highlighted: boolean, ...}>,
40
52
  * }>
41
53
  */
42
- sections: $ReadOnlyArray<SectionT>,
54
+ sections: $ReadOnlyArray<SectionData<ItemT, SectionT>>,
43
55
  };
44
56
 
45
- type OptionalProps<SectionT: SectionBase<any>> = {
57
+ export type SectionListRenderItemInfo<ItemT, SectionT = DefaultSectionT> = {
58
+ ...ListRenderItemInfo<ItemT>,
59
+ section: SectionData<ItemT, SectionT>,
60
+ ...
61
+ };
62
+
63
+ export type SectionListRenderItem<ItemT, SectionT = DefaultSectionT> = (
64
+ info: SectionListRenderItemInfo<ItemT, SectionT>,
65
+ ) => React.Node | null;
66
+
67
+ type OptionalProps<ItemT, SectionT = DefaultSectionT> = {
46
68
  /**
47
69
  * Default renderer for every item in every section. Can be over-ridden on a per-section basis.
48
70
  */
49
- renderItem?: (info: {
50
- item: Item,
51
- index: number,
52
- section: SectionT,
53
- separators: {
54
- highlight: () => void,
55
- unhighlight: () => void,
56
- updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,
57
- ...
58
- },
59
- ...
60
- }) => null | React.Node,
71
+ renderItem?: SectionListRenderItem<ItemT, SectionT>,
61
72
  /**
62
73
  * A marker property for telling the list to re-render (since it implements `PureComponent`). If
63
74
  * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the
@@ -80,7 +91,7 @@ type OptionalProps<SectionT: SectionBase<any>> = {
80
91
  * falls back to using the index, like react does. Note that this sets keys for each item, but
81
92
  * each overall section still needs its own key.
82
93
  */
83
- keyExtractor?: ?(item: Item, index: number) => string,
94
+ keyExtractor?: ?(item: ItemT, index: number) => string,
84
95
  /**
85
96
  * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered
86
97
  * content.
@@ -94,28 +105,13 @@ type OptionalProps<SectionT: SectionBase<any>> = {
94
105
  removeClippedSubviews?: boolean,
95
106
  };
96
107
 
97
- export type Props<SectionT> = {
98
- ...$Diff<
99
- VirtualizedSectionListProps<SectionT>,
100
- {
101
- getItem: $PropertyType<VirtualizedSectionListProps<SectionT>, 'getItem'>,
102
- getItemCount: $PropertyType<
103
- VirtualizedSectionListProps<SectionT>,
104
- 'getItemCount',
105
- >,
106
- renderItem: $PropertyType<
107
- VirtualizedSectionListProps<SectionT>,
108
- 'renderItem',
109
- >,
110
- keyExtractor: $PropertyType<
111
- VirtualizedSectionListProps<SectionT>,
112
- 'keyExtractor',
113
- >,
114
- ...
115
- },
108
+ export type SectionListProps<ItemT, SectionT = DefaultSectionT> = {
109
+ ...Omit<
110
+ VirtualizedSectionListProps<ItemT, SectionT>,
111
+ 'getItem' | 'getItemCount' | 'renderItem' | 'keyExtractor',
116
112
  >,
117
- ...RequiredProps<SectionT>,
118
- ...OptionalProps<SectionT>,
113
+ ...RequiredProps<ItemT, SectionT>,
114
+ ...OptionalProps<ItemT, SectionT>,
119
115
  };
120
116
 
121
117
  /**
@@ -174,9 +170,10 @@ export type Props<SectionT> = {
174
170
  *
175
171
  */
176
172
  export default class SectionList<
177
- SectionT: SectionBase<any>,
178
- > extends React.PureComponent<Props<SectionT>, void> {
179
- props: Props<SectionT>;
173
+ ItemT = any,
174
+ SectionT = DefaultSectionT,
175
+ > extends React.PureComponent<SectionListProps<ItemT, SectionT>> {
176
+ props: SectionListProps<ItemT, SectionT>;
180
177
 
181
178
  /**
182
179
  * Scrolls to the item at the specified `sectionIndex` and `itemIndex` (within the section)