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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/.flowconfig +15 -3
  2. package/CHANGELOG.json +302 -47
  3. package/CHANGELOG.md +141 -27
  4. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -0
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +1 -1
  6. package/Libraries/Alert/Alert.d.ts +4 -4
  7. package/Libraries/Alert/Alert.win32.js +1 -0
  8. package/Libraries/Animated/Animated.d.ts +17 -6
  9. package/Libraries/Animated/NativeAnimatedHelper.js +18 -6
  10. package/Libraries/Animated/NativeAnimatedHelper.win32.js +606 -0
  11. package/Libraries/Animated/bezier.js +1 -1
  12. package/Libraries/Animated/components/AnimatedFlatList.js +8 -3
  13. package/Libraries/Animated/components/AnimatedScrollView.js +4 -1
  14. package/Libraries/Animated/components/AnimatedSectionList.js +12 -3
  15. package/Libraries/Animated/createAnimatedComponent.js +26 -239
  16. package/Libraries/Animated/nodes/AnimatedColor.js +47 -80
  17. package/Libraries/Animated/nodes/AnimatedInterpolation.js +167 -121
  18. package/Libraries/Animated/nodes/AnimatedNode.js +3 -5
  19. package/Libraries/Animated/nodes/AnimatedProps.js +7 -6
  20. package/Libraries/Animated/nodes/AnimatedStyle.js +42 -8
  21. package/Libraries/Animated/nodes/AnimatedTransform.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedValue.js +8 -12
  23. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  24. package/Libraries/Animated/useAnimatedProps.js +7 -10
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -1
  26. package/Libraries/BatchedBridge/NativeModules.d.ts +1 -1
  27. package/Libraries/BatchedBridge/NativeModules.js +1 -0
  28. package/Libraries/Blob/Blob.js +4 -0
  29. package/Libraries/Blob/FileReader.js +30 -2
  30. package/Libraries/Blob/URL.js +3 -1
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +2 -2
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +2 -3
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +2 -3
  34. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +6 -4
  35. package/Libraries/Components/Button.js +3 -2
  36. package/Libraries/Components/Button.win32.js +451 -0
  37. package/Libraries/Components/Clipboard/Clipboard.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  39. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -0
  40. package/Libraries/Components/Pressable/Pressable.d.ts +1 -1
  41. package/Libraries/Components/Pressable/Pressable.js +1 -1
  42. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -0
  43. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -2
  44. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +1 -2
  45. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +12 -6
  46. package/Libraries/Components/ScrollView/ScrollView.d.ts +2 -2
  47. package/Libraries/Components/ScrollView/ScrollView.js +149 -91
  48. package/Libraries/Components/ScrollView/ScrollView.win32.js +1939 -0
  49. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -6
  50. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -7
  51. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -1
  52. package/Libraries/Components/StatusBar/StatusBar.js +3 -0
  53. package/Libraries/Components/Switch/Switch.js +3 -1
  54. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +21 -11
  55. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +1 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +11 -5
  57. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +51 -0
  58. package/Libraries/Components/TextInput/TextInput.Types.win32.js +3 -0
  59. package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +1 -0
  60. package/Libraries/Components/TextInput/TextInput.d.ts +15 -5
  61. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  62. package/Libraries/Components/TextInput/TextInput.js +130 -103
  63. package/Libraries/Components/TextInput/TextInput.win32.js +202 -890
  64. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  65. package/Libraries/Components/Touchable/Touchable.flow.js +30 -4
  66. package/Libraries/Components/Touchable/Touchable.js +6 -3
  67. package/Libraries/Components/Touchable/Touchable.win32.js +6 -3
  68. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
  70. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -0
  71. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +1 -1
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  73. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +189 -0
  74. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +43 -0
  75. package/Libraries/Components/View/ReactNativeStyleAttributes.js +26 -0
  76. package/Libraries/Components/View/View.js +71 -45
  77. package/Libraries/Components/View/View.win32.js +38 -16
  78. package/Libraries/Components/View/ViewAccessibility.d.ts +6 -6
  79. package/Libraries/Components/View/ViewAccessibility.js +10 -1
  80. package/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  81. package/Libraries/Components/View/ViewNativeComponent.js +32 -8
  82. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -1
  83. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  84. package/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
  86. package/Libraries/Components/View/ViewWin32.js +3 -3
  87. package/Libraries/Core/Devtools/openFileInEditor.js +1 -0
  88. package/Libraries/Core/Devtools/openURLInBrowser.js +1 -0
  89. package/Libraries/Core/Devtools/parseErrorStack.js +2 -2
  90. package/Libraries/Core/Devtools/parseHermesStack.js +54 -34
  91. package/Libraries/Core/ExceptionsManager.js +2 -2
  92. package/Libraries/Core/InitializeCore.js +2 -1
  93. package/Libraries/Core/ReactNativeVersion.js +3 -3
  94. package/Libraries/Core/ReactNativeVersionCheck.js +1 -9
  95. package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -9
  96. package/Libraries/Core/Timers/JSTimers.js +1 -1
  97. package/Libraries/Core/Timers/immediateShim.js +1 -0
  98. package/Libraries/Core/Timers/queueMicrotask.js +1 -1
  99. package/Libraries/Core/setUpAlert.js +1 -1
  100. package/Libraries/Core/setUpDOM.js +18 -0
  101. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  102. package/Libraries/Core/setUpGlobals.js +5 -2
  103. package/Libraries/Core/setUpNavigator.js +6 -5
  104. package/Libraries/Core/setUpPerformance.js +23 -13
  105. package/Libraries/Core/setUpReactDevTools.js +2 -0
  106. package/Libraries/Core/setUpSegmentFetcher.js +0 -41
  107. package/Libraries/Core/setUpTimers.js +2 -2
  108. package/Libraries/DOM/Geometry/DOMRect.js +82 -0
  109. package/Libraries/DOM/Geometry/DOMRectReadOnly.js +188 -0
  110. package/Libraries/DOM/Nodes/ReactNativeElement.js +75 -0
  111. package/Libraries/DOM/Nodes/ReadOnlyElement.js +89 -0
  112. package/Libraries/DOM/Nodes/ReadOnlyNode.js +167 -0
  113. package/Libraries/DOM/OldStyleCollections/ArrayLikeUtils.js +46 -0
  114. package/Libraries/DOM/OldStyleCollections/DOMRectList.js +76 -0
  115. package/Libraries/DOM/OldStyleCollections/HTMLCollection.js +82 -0
  116. package/Libraries/DOM/OldStyleCollections/NodeList.js +104 -0
  117. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +35 -0
  118. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +20 -0
  119. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +49 -0
  120. package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +35 -0
  121. package/Libraries/{Utilities/NativeDevSplitBundleLoader.js → DevToolsSettings/NativeDevToolsSettingsManager.js} +7 -2
  122. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +1 -2
  123. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +1 -2
  124. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -1
  125. package/Libraries/Events/EventPolyfill.js +1 -1
  126. package/Libraries/Image/AssetRegistry.js +1 -1
  127. package/Libraries/Image/AssetSourceResolver.js +3 -3
  128. package/Libraries/Image/Image.android.js +4 -1
  129. package/Libraries/Image/Image.d.ts +63 -2
  130. package/Libraries/Image/Image.ios.js +3 -0
  131. package/Libraries/Image/Image.win32.js +3 -0
  132. package/Libraries/Image/ImageBackground.js +1 -0
  133. package/Libraries/Image/ImageProps.js +1 -1
  134. package/Libraries/Image/ImageViewNativeComponent.js +4 -4
  135. package/Libraries/Image/RelativeImageStub.js +1 -1
  136. package/Libraries/Image/TextInlineImageNativeComponent.js +1 -1
  137. package/Libraries/Image/resolveAssetSource.js +1 -1
  138. package/Libraries/Inspector/DevtoolsOverlay.js +29 -19
  139. package/Libraries/Inspector/ElementBox.js +4 -1
  140. package/Libraries/Inspector/Inspector.js +5 -6
  141. package/Libraries/Inspector/Inspector.win32.js +7 -6
  142. package/Libraries/Inspector/InspectorOverlay.js +3 -3
  143. package/Libraries/Inspector/InspectorOverlay.win32.js +2 -1
  144. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  145. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
  146. package/Libraries/Interaction/PanResponder.js +5 -6
  147. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -1
  148. package/Libraries/Linking/Linking.js +1 -4
  149. package/Libraries/Lists/FillRateHelper.js +4 -238
  150. package/Libraries/Lists/FlatList.d.ts +15 -22
  151. package/Libraries/Lists/FlatList.js +9 -6
  152. package/Libraries/Lists/SectionList.d.ts +10 -6
  153. package/Libraries/Lists/SectionList.js +5 -3
  154. package/Libraries/Lists/SectionListModern.js +3 -3
  155. package/Libraries/Lists/ViewabilityHelper.js +8 -344
  156. package/Libraries/Lists/VirtualizeUtils.js +4 -244
  157. package/Libraries/Lists/VirtualizedList.js +10 -1867
  158. package/Libraries/Lists/VirtualizedListContext.js +6 -104
  159. package/Libraries/Lists/VirtualizedSectionList.js +9 -602
  160. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -0
  161. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  162. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  163. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  164. package/Libraries/LogBox/LogBox.js +1 -1
  165. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -3
  166. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +168 -0
  167. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +3 -0
  168. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +193 -0
  169. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  170. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +2 -2
  171. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +7 -3
  172. package/Libraries/LogBox/UI/LogBoxMessage.js +87 -5
  173. package/Libraries/LogBox/UI/LogBoxNotification.js +5 -7
  174. package/Libraries/Modal/Modal.js +2 -2
  175. package/Libraries/NativeComponent/BaseViewConfig.android.js +32 -12
  176. package/Libraries/NativeComponent/BaseViewConfig.ios.js +43 -19
  177. package/Libraries/NativeComponent/BaseViewConfig.win32.js +43 -19
  178. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +4 -1
  179. package/Libraries/NativeComponent/ViewConfig.js +1 -0
  180. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -4
  181. package/Libraries/Network/RCTNetworking.android.js +2 -2
  182. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  183. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  184. package/Libraries/Network/XMLHttpRequest.js +1 -1
  185. package/Libraries/Pressability/Pressability.js +11 -5
  186. package/Libraries/Pressability/Pressability.win32.js +9 -3
  187. package/Libraries/ReactNative/AppContainer.js +7 -1
  188. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  189. package/Libraries/ReactNative/AppRegistry.js +10 -13
  190. package/Libraries/ReactNative/FabricUIManager.js +24 -8
  191. package/Libraries/ReactNative/NativeUIManager.js +5 -5
  192. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +10 -10
  193. package/Libraries/ReactNative/UIManager.js +142 -1
  194. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +5 -5
  195. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  196. package/Libraries/ReactNative/requireNativeComponent.d.ts +1 -1
  197. package/Libraries/ReactNative/requireNativeComponent.js +1 -1
  198. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  199. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  200. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  201. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  202. package/Libraries/Renderer/public/ReactFabricPublicInstanceUtils.js +38 -0
  203. package/Libraries/Renderer/shims/ReactNativeTypes.js +38 -20
  204. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -7
  205. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  206. package/Libraries/Share/Share.js +1 -1
  207. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  208. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  209. package/Libraries/StyleSheet/StyleSheet.win32.js +1 -1
  210. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +115 -76
  211. package/Libraries/StyleSheet/StyleSheetTypes.js +188 -33
  212. package/Libraries/StyleSheet/flattenStyle.js +2 -0
  213. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  214. package/Libraries/StyleSheet/processColor.js +1 -1
  215. package/Libraries/Text/Text.d.ts +12 -2
  216. package/Libraries/Text/Text.js +50 -41
  217. package/Libraries/Text/TextProps.js +3 -4
  218. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  219. package/Libraries/Types/CodegenTypes.js +1 -0
  220. package/Libraries/UTFSequence.js +3 -1
  221. package/Libraries/Utilities/Appearance.d.ts +10 -0
  222. package/Libraries/Utilities/Appearance.js +13 -0
  223. package/Libraries/Utilities/Dimensions.js +1 -1
  224. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  225. package/Libraries/Utilities/GlobalPerformanceLogger.js +12 -1
  226. package/Libraries/Utilities/HMRClient.js +16 -10
  227. package/Libraries/Utilities/{createPerformanceLogger.d.ts → IPerformanceLogger.d.ts} +4 -4
  228. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  229. package/Libraries/Utilities/LoadingView.android.js +28 -11
  230. package/Libraries/Utilities/NativeAppearance.js +1 -0
  231. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -1
  232. package/Libraries/Utilities/PixelRatio.js +2 -2
  233. package/Libraries/Utilities/Platform.win32.js +1 -1
  234. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  235. package/Libraries/Utilities/__mocks__/PixelRatio.js +1 -1
  236. package/Libraries/Utilities/codegenNativeCommands.js +2 -0
  237. package/Libraries/Utilities/createPerformanceLogger.js +55 -43
  238. package/Libraries/Utilities/stringifySafe.js +2 -7
  239. package/Libraries/Utilities/useColorScheme.js +1 -1
  240. package/Libraries/Utilities/useWindowDimensions.js +3 -3
  241. package/Libraries/WebPerformance/EventCounts.js +78 -0
  242. package/Libraries/WebPerformance/MemoryInfo.js +54 -0
  243. package/Libraries/WebPerformance/NativePerformance.js +38 -0
  244. package/Libraries/WebPerformance/NativePerformanceObserver.js +22 -7
  245. package/Libraries/WebPerformance/Performance.js +312 -0
  246. package/Libraries/WebPerformance/PerformanceEntry.js +45 -0
  247. package/Libraries/WebPerformance/PerformanceEventTiming.js +38 -0
  248. package/Libraries/WebPerformance/PerformanceObserver.js +196 -101
  249. package/Libraries/WebPerformance/RawPerformanceEntry.js +87 -0
  250. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +65 -0
  251. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +65 -0
  252. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +101 -0
  253. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  254. package/Libraries/vendor/core/ErrorUtils.js +1 -1
  255. package/Libraries/vendor/emitter/EventEmitter.d.ts +2 -2
  256. package/Libraries/vendor/emitter/EventEmitter.js +9 -1
  257. package/flow/global.js +29 -4
  258. package/flow/jest.js +258 -164
  259. package/index.js +56 -42
  260. package/index.win32.js +56 -42
  261. package/interface.js +1 -1
  262. package/jest/local-setup.js +33 -0
  263. package/jest/mockComponent.js +4 -2
  264. package/jest/mockNativeComponent.js +1 -1
  265. package/jest/mockScrollView.js +2 -1
  266. package/jest/react-native-env.js +1 -3
  267. package/jest/setup.js +11 -8
  268. package/overrides.json +115 -85
  269. package/package.json +38 -28
  270. package/rn-get-polyfills.js +1 -1
  271. package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +68 -0
  272. package/src/Libraries/Components/View/ViewAccessibility.win32.d.ts +5 -5
  273. package/src/Libraries/Components/View/ViewPropTypes.win32.d.ts +1 -1
  274. package/types/index.d.ts +2 -6
  275. package/types/modules/Codegen.d.ts +4 -4
  276. package/types/modules/globals.d.ts +27 -25
  277. package/types/public/DeprecatedPropertiesAlias.d.ts +0 -20
  278. package/types/public/ReactNativeRenderer.d.ts +2 -7
  279. package/Libraries/Animated/createAnimatedComponentInjection.js +0 -48
  280. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +0 -48
  281. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +0 -208
  282. package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +0 -58
  283. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +0 -47
  284. package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +0 -92
  285. package/Libraries/Components/DatePicker/DatePickerIOS.flow.android.js +0 -14
  286. package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +0 -113
  287. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +0 -242
  288. package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +0 -47
  289. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +0 -60
  290. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -26
  291. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +0 -45
  292. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +0 -62
  293. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +0 -75
  294. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +0 -45
  295. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -33
  296. package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +0 -19
  297. package/Libraries/Components/Slider/Slider.d.ts +0 -132
  298. package/Libraries/Components/Slider/Slider.js +0 -282
  299. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -56
  300. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +0 -23
  301. package/Libraries/Interaction/Batchinator.js +0 -76
  302. package/Libraries/Interaction/BridgeSpyStallHandler.js +0 -63
  303. package/Libraries/Interaction/InteractionStallDebugger.js +0 -23
  304. package/Libraries/Interaction/PanResponder.flow.js +0 -257
  305. package/Libraries/Lists/CellRenderMask.js +0 -155
  306. package/Libraries/Lists/ChildListCollection.js +0 -72
  307. package/Libraries/Lists/StateSafePureComponent.js +0 -85
  308. package/Libraries/Lists/VirtualizedList.d.ts +0 -347
  309. package/Libraries/Lists/VirtualizedListCellRenderer.js +0 -259
  310. package/Libraries/Lists/VirtualizedListProps.js +0 -279
  311. package/Libraries/Performance/PureComponentDebug.js +0 -74
  312. package/Libraries/Reliability/UserFlow.js +0 -158
  313. package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +0 -149
  314. package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +0 -141
  315. package/Libraries/Utilities/MatrixMath.js +0 -748
  316. package/Libraries/Utilities/buildStyleInterpolator.js +0 -209
  317. package/Libraries/Utilities/clamp.js +0 -23
  318. package/Libraries/Utilities/deprecatedPropType.js +0 -36
  319. package/Libraries/Utilities/groupByEveryN.js +0 -51
  320. package/Libraries/Utilities/mergeIntoFast.js +0 -26
  321. package/Libraries/Utilities/setAndForwardRef.js +0 -71
  322. package/Libraries/Utilities/truncate.js +0 -51
  323. package/flow/JSITimerInternalType.js +0 -30
  324. package/flow/use-sync-external-store.js +0 -19
@@ -0,0 +1,606 @@
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
+ import type {EventSubscription} from '../vendor/emitter/EventEmitter';
12
+ import type {EventConfig} from './AnimatedEvent';
13
+ import type {AnimationConfig, EndCallback} from './animations/Animation';
14
+ import type {
15
+ AnimatedNodeConfig,
16
+ AnimatingNodeConfig,
17
+ EventMapping,
18
+ } from './NativeAnimatedModule';
19
+ import type {InterpolationConfigType} from './nodes/AnimatedInterpolation';
20
+
21
+ import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
22
+ import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';
23
+ import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
24
+ import Platform from '../Utilities/Platform';
25
+ import NativeAnimatedNonTurboModule from './NativeAnimatedModule';
26
+ import NativeAnimatedTurboModule from './NativeAnimatedTurboModule';
27
+ import invariant from 'invariant';
28
+
29
+ // TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.
30
+ const NativeAnimatedModule =
31
+ Platform.OS === 'ios' && global.RN$Bridgeless === true
32
+ ? NativeAnimatedTurboModule
33
+ : NativeAnimatedNonTurboModule;
34
+
35
+ let __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */
36
+ let __nativeAnimationIdCount = 1; /* used for started animations */
37
+
38
+ let nativeEventEmitter;
39
+
40
+ let waitingForQueuedOperations = new Set<string>();
41
+ let queueOperations = false;
42
+ let queue: Array<() => void> = [];
43
+ // $FlowFixMe
44
+ let singleOpQueue: Array<any> = [];
45
+
46
+ const useSingleOpBatching =
47
+ Platform.OS === 'android' &&
48
+ !!NativeAnimatedModule?.queueAndExecuteBatchedOperations &&
49
+ ReactNativeFeatureFlags.animatedShouldUseSingleOp();
50
+ let flushQueueTimeout = null;
51
+
52
+ const eventListenerGetValueCallbacks: {
53
+ [$FlowFixMe | number]: ((value: number) => void) | void,
54
+ } = {};
55
+ const eventListenerAnimationFinishedCallbacks: {
56
+ [$FlowFixMe | number]: EndCallback | void,
57
+ } = {};
58
+ let globalEventEmitterGetValueListener: ?EventSubscription = null;
59
+ let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;
60
+
61
+ const nativeOps: ?typeof NativeAnimatedModule = useSingleOpBatching
62
+ ? ((function () {
63
+ const apis = [
64
+ 'createAnimatedNode', // 1
65
+ 'updateAnimatedNodeConfig', // 2
66
+ 'getValue', // 3
67
+ 'startListeningToAnimatedNodeValue', // 4
68
+ 'stopListeningToAnimatedNodeValue', // 5
69
+ 'connectAnimatedNodes', // 6
70
+ 'disconnectAnimatedNodes', // 7
71
+ 'startAnimatingNode', // 8
72
+ 'stopAnimation', // 9
73
+ 'setAnimatedNodeValue', // 10
74
+ 'setAnimatedNodeOffset', // 11
75
+ 'flattenAnimatedNodeOffset', // 12
76
+ 'extractAnimatedNodeOffset', // 13
77
+ 'connectAnimatedNodeToView', // 14
78
+ 'disconnectAnimatedNodeFromView', // 15
79
+ 'restoreDefaultValues', // 16
80
+ 'dropAnimatedNode', // 17
81
+ 'addAnimatedEventToView', // 18
82
+ 'removeAnimatedEventFromView', // 19
83
+ 'addListener', // 20
84
+ 'removeListener', // 21
85
+ ];
86
+ return apis.reduce<{[string]: number}>((acc, functionName, i) => {
87
+ // These indices need to be kept in sync with the indices in native (see NativeAnimatedModule in Java, or the equivalent for any other native platform).
88
+ // $FlowFixMe[prop-missing]
89
+ acc[functionName] = i + 1;
90
+ return acc;
91
+ }, {});
92
+ })(): $FlowFixMe)
93
+ : NativeAnimatedModule;
94
+
95
+ /**
96
+ * Wrappers around NativeAnimatedModule to provide flow and autocomplete support for
97
+ * the native module methods, and automatic queue management on Android
98
+ */
99
+ const API = {
100
+ getValue: function (
101
+ tag: number,
102
+ saveValueCallback: (value: number) => void,
103
+ ): void {
104
+ invariant(nativeOps, 'Native animated module is not available');
105
+ if (useSingleOpBatching) {
106
+ if (saveValueCallback) {
107
+ eventListenerGetValueCallbacks[tag] = saveValueCallback;
108
+ }
109
+ // $FlowFixMe
110
+ API.queueOperation(nativeOps.getValue, tag);
111
+ } else {
112
+ API.queueOperation(nativeOps.getValue, tag, saveValueCallback);
113
+ }
114
+ },
115
+ setWaitingForIdentifier: function (id: string): void {
116
+ waitingForQueuedOperations.add(id);
117
+ queueOperations = true;
118
+ if (
119
+ ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() &&
120
+ flushQueueTimeout
121
+ ) {
122
+ clearTimeout(flushQueueTimeout);
123
+ }
124
+ },
125
+ unsetWaitingForIdentifier: function (id: string): void {
126
+ waitingForQueuedOperations.delete(id);
127
+
128
+ if (waitingForQueuedOperations.size === 0) {
129
+ queueOperations = false;
130
+ API.disableQueue();
131
+ }
132
+ },
133
+ disableQueue: function (): void {
134
+ invariant(nativeOps, 'Native animated module is not available');
135
+
136
+ if (ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush()) {
137
+ const prevTimeout = flushQueueTimeout;
138
+ clearImmediate(prevTimeout);
139
+ flushQueueTimeout = setImmediate(API.flushQueue);
140
+ } else {
141
+ API.flushQueue();
142
+ }
143
+ },
144
+ flushQueue: function (): void {
145
+ // GH: 11042 This invariant causes the win32 tester to not work
146
+ // NativeAnimatedModule is not implemented in win32
147
+ // // TODO: (T136971132)
148
+ // invariant(
149
+ // NativeAnimatedModule || process.env.NODE_ENV === 'test',
150
+ // 'Native animated module is not available',
151
+ // );
152
+ flushQueueTimeout = null;
153
+
154
+ // Early returns before calling any APIs
155
+ if (useSingleOpBatching && singleOpQueue.length === 0) {
156
+ return;
157
+ }
158
+ if (!useSingleOpBatching && queue.length === 0) {
159
+ return;
160
+ }
161
+
162
+ if (useSingleOpBatching) {
163
+ // Set up event listener for callbacks if it's not set up
164
+ if (
165
+ !globalEventEmitterGetValueListener ||
166
+ !globalEventEmitterAnimationFinishedListener
167
+ ) {
168
+ setupGlobalEventEmitterListeners();
169
+ }
170
+ // Single op batching doesn't use callback functions, instead we
171
+ // use RCTDeviceEventEmitter. This reduces overhead of sending lots of
172
+ // JSI functions across to native code; but also, TM infrastructure currently
173
+ // does not support packing a function into native arrays.
174
+ NativeAnimatedModule?.queueAndExecuteBatchedOperations?.(singleOpQueue);
175
+ singleOpQueue.length = 0;
176
+ } else {
177
+ Platform.OS === 'android' &&
178
+ NativeAnimatedModule?.startOperationBatch?.();
179
+
180
+ for (let q = 0, l = queue.length; q < l; q++) {
181
+ queue[q]();
182
+ }
183
+ queue.length = 0;
184
+ Platform.OS === 'android' &&
185
+ NativeAnimatedModule?.finishOperationBatch?.();
186
+ }
187
+ },
188
+ queueOperation: <Args: $ReadOnlyArray<mixed>, Fn: (...Args) => void>(
189
+ fn: Fn,
190
+ ...args: Args
191
+ ): void => {
192
+ if (useSingleOpBatching) {
193
+ // Get the command ID from the queued function, and push that ID and any arguments needed to execute the operation
194
+ // $FlowFixMe: surprise, fn is actually a number
195
+ singleOpQueue.push(fn, ...args);
196
+ return;
197
+ }
198
+
199
+ // If queueing is explicitly on, *or* the queue has not yet
200
+ // been flushed, use the queue. This is to prevent operations
201
+ // from being executed out of order.
202
+ if (queueOperations || queue.length !== 0) {
203
+ queue.push(() => fn(...args));
204
+ } else {
205
+ fn(...args);
206
+ }
207
+ },
208
+ createAnimatedNode: function (tag: number, config: AnimatedNodeConfig): void {
209
+ invariant(nativeOps, 'Native animated module is not available');
210
+ API.queueOperation(nativeOps.createAnimatedNode, tag, config);
211
+ },
212
+ updateAnimatedNodeConfig: function (
213
+ tag: number,
214
+ config: AnimatedNodeConfig,
215
+ ): void {
216
+ invariant(nativeOps, 'Native animated module is not available');
217
+ if (nativeOps.updateAnimatedNodeConfig) {
218
+ API.queueOperation(nativeOps.updateAnimatedNodeConfig, tag, config);
219
+ }
220
+ },
221
+ startListeningToAnimatedNodeValue: function (tag: number) {
222
+ invariant(nativeOps, 'Native animated module is not available');
223
+ API.queueOperation(nativeOps.startListeningToAnimatedNodeValue, tag);
224
+ },
225
+ stopListeningToAnimatedNodeValue: function (tag: number) {
226
+ invariant(nativeOps, 'Native animated module is not available');
227
+ API.queueOperation(nativeOps.stopListeningToAnimatedNodeValue, tag);
228
+ },
229
+ connectAnimatedNodes: function (parentTag: number, childTag: number): void {
230
+ invariant(nativeOps, 'Native animated module is not available');
231
+ API.queueOperation(nativeOps.connectAnimatedNodes, parentTag, childTag);
232
+ },
233
+ disconnectAnimatedNodes: function (
234
+ parentTag: number,
235
+ childTag: number,
236
+ ): void {
237
+ invariant(nativeOps, 'Native animated module is not available');
238
+ API.queueOperation(nativeOps.disconnectAnimatedNodes, parentTag, childTag);
239
+ },
240
+ startAnimatingNode: function (
241
+ animationId: number,
242
+ nodeTag: number,
243
+ config: AnimatingNodeConfig,
244
+ endCallback: EndCallback,
245
+ ): void {
246
+ invariant(nativeOps, 'Native animated module is not available');
247
+ if (useSingleOpBatching) {
248
+ if (endCallback) {
249
+ eventListenerAnimationFinishedCallbacks[animationId] = endCallback;
250
+ }
251
+ // $FlowFixMe
252
+ API.queueOperation(
253
+ // $FlowFixMe[incompatible-call]
254
+ nativeOps.startAnimatingNode,
255
+ animationId,
256
+ nodeTag,
257
+ config,
258
+ );
259
+ } else {
260
+ API.queueOperation(
261
+ nativeOps.startAnimatingNode,
262
+ animationId,
263
+ nodeTag,
264
+ config,
265
+ endCallback,
266
+ );
267
+ }
268
+ },
269
+ stopAnimation: function (animationId: number) {
270
+ invariant(nativeOps, 'Native animated module is not available');
271
+ API.queueOperation(nativeOps.stopAnimation, animationId);
272
+ },
273
+ setAnimatedNodeValue: function (nodeTag: number, value: number): void {
274
+ invariant(nativeOps, 'Native animated module is not available');
275
+ API.queueOperation(nativeOps.setAnimatedNodeValue, nodeTag, value);
276
+ },
277
+ setAnimatedNodeOffset: function (nodeTag: number, offset: number): void {
278
+ invariant(nativeOps, 'Native animated module is not available');
279
+ API.queueOperation(nativeOps.setAnimatedNodeOffset, nodeTag, offset);
280
+ },
281
+ flattenAnimatedNodeOffset: function (nodeTag: number): void {
282
+ invariant(nativeOps, 'Native animated module is not available');
283
+ API.queueOperation(nativeOps.flattenAnimatedNodeOffset, nodeTag);
284
+ },
285
+ extractAnimatedNodeOffset: function (nodeTag: number): void {
286
+ invariant(nativeOps, 'Native animated module is not available');
287
+ API.queueOperation(nativeOps.extractAnimatedNodeOffset, nodeTag);
288
+ },
289
+ connectAnimatedNodeToView: function (nodeTag: number, viewTag: number): void {
290
+ invariant(nativeOps, 'Native animated module is not available');
291
+ API.queueOperation(nativeOps.connectAnimatedNodeToView, nodeTag, viewTag);
292
+ },
293
+ disconnectAnimatedNodeFromView: function (
294
+ nodeTag: number,
295
+ viewTag: number,
296
+ ): void {
297
+ invariant(nativeOps, 'Native animated module is not available');
298
+ API.queueOperation(
299
+ nativeOps.disconnectAnimatedNodeFromView,
300
+ nodeTag,
301
+ viewTag,
302
+ );
303
+ },
304
+ restoreDefaultValues: function (nodeTag: number): void {
305
+ invariant(nativeOps, 'Native animated module is not available');
306
+ // Backwards compat with older native runtimes, can be removed later.
307
+ if (nativeOps.restoreDefaultValues != null) {
308
+ API.queueOperation(nativeOps.restoreDefaultValues, nodeTag);
309
+ }
310
+ },
311
+ dropAnimatedNode: function (tag: number): void {
312
+ invariant(nativeOps, 'Native animated module is not available');
313
+ API.queueOperation(nativeOps.dropAnimatedNode, tag);
314
+ },
315
+ addAnimatedEventToView: function (
316
+ viewTag: number,
317
+ eventName: string,
318
+ eventMapping: EventMapping,
319
+ ) {
320
+ invariant(nativeOps, 'Native animated module is not available');
321
+ API.queueOperation(
322
+ nativeOps.addAnimatedEventToView,
323
+ viewTag,
324
+ eventName,
325
+ eventMapping,
326
+ );
327
+ },
328
+ removeAnimatedEventFromView(
329
+ viewTag: number,
330
+ eventName: string,
331
+ animatedNodeTag: number,
332
+ ) {
333
+ invariant(nativeOps, 'Native animated module is not available');
334
+ API.queueOperation(
335
+ nativeOps.removeAnimatedEventFromView,
336
+ viewTag,
337
+ eventName,
338
+ animatedNodeTag,
339
+ );
340
+ },
341
+ };
342
+
343
+ function setupGlobalEventEmitterListeners() {
344
+ globalEventEmitterGetValueListener = RCTDeviceEventEmitter.addListener(
345
+ 'onNativeAnimatedModuleGetValue',
346
+ function (params) {
347
+ const {tag} = params;
348
+ const callback = eventListenerGetValueCallbacks[tag];
349
+ if (!callback) {
350
+ return;
351
+ }
352
+ callback(params.value);
353
+ delete eventListenerGetValueCallbacks[tag];
354
+ },
355
+ );
356
+ globalEventEmitterAnimationFinishedListener =
357
+ RCTDeviceEventEmitter.addListener(
358
+ 'onNativeAnimatedModuleAnimationFinished',
359
+ function (params) {
360
+ const {animationId} = params;
361
+ const callback = eventListenerAnimationFinishedCallbacks[animationId];
362
+ if (!callback) {
363
+ return;
364
+ }
365
+ callback(params);
366
+ delete eventListenerAnimationFinishedCallbacks[animationId];
367
+ },
368
+ );
369
+ }
370
+
371
+ /**
372
+ * Styles allowed by the native animated implementation.
373
+ *
374
+ * In general native animated implementation should support any numeric or color property that
375
+ * doesn't need to be updated through the shadow view hierarchy (all non-layout properties).
376
+ */
377
+ const SUPPORTED_COLOR_STYLES = {
378
+ backgroundColor: true,
379
+ borderBottomColor: true,
380
+ borderColor: true,
381
+ borderEndColor: true,
382
+ borderLeftColor: true,
383
+ borderRightColor: true,
384
+ borderStartColor: true,
385
+ borderTopColor: true,
386
+ color: true,
387
+ tintColor: true,
388
+ };
389
+
390
+ const SUPPORTED_STYLES = {
391
+ ...SUPPORTED_COLOR_STYLES,
392
+ borderBottomEndRadius: true,
393
+ borderBottomLeftRadius: true,
394
+ borderBottomRightRadius: true,
395
+ borderBottomStartRadius: true,
396
+ borderEndEndRadius: true,
397
+ borderEndStartRadius: true,
398
+ borderRadius: true,
399
+ borderTopEndRadius: true,
400
+ borderTopLeftRadius: true,
401
+ borderTopRightRadius: true,
402
+ borderTopStartRadius: true,
403
+ borderStartEndRadius: true,
404
+ borderStartStartRadius: true,
405
+ elevation: true,
406
+ opacity: true,
407
+ transform: true,
408
+ zIndex: true,
409
+ /* ios styles */
410
+ shadowOpacity: true,
411
+ shadowRadius: true,
412
+ /* legacy android transform properties */
413
+ scaleX: true,
414
+ scaleY: true,
415
+ translateX: true,
416
+ translateY: true,
417
+ };
418
+
419
+ const SUPPORTED_TRANSFORMS = {
420
+ translateX: true,
421
+ translateY: true,
422
+ scale: true,
423
+ scaleX: true,
424
+ scaleY: true,
425
+ rotate: true,
426
+ rotateX: true,
427
+ rotateY: true,
428
+ rotateZ: true,
429
+ perspective: true,
430
+ };
431
+
432
+ const SUPPORTED_INTERPOLATION_PARAMS = {
433
+ inputRange: true,
434
+ outputRange: true,
435
+ extrapolate: true,
436
+ extrapolateRight: true,
437
+ extrapolateLeft: true,
438
+ };
439
+
440
+ function addWhitelistedStyleProp(prop: string): void {
441
+ // $FlowFixMe[prop-missing]
442
+ SUPPORTED_STYLES[prop] = true;
443
+ }
444
+
445
+ function addWhitelistedTransformProp(prop: string): void {
446
+ // $FlowFixMe[prop-missing]
447
+ SUPPORTED_TRANSFORMS[prop] = true;
448
+ }
449
+
450
+ function addWhitelistedInterpolationParam(param: string): void {
451
+ // $FlowFixMe[prop-missing]
452
+ SUPPORTED_INTERPOLATION_PARAMS[param] = true;
453
+ }
454
+
455
+ function isSupportedColorStyleProp(prop: string): boolean {
456
+ return SUPPORTED_COLOR_STYLES.hasOwnProperty(prop);
457
+ }
458
+
459
+ function isSupportedStyleProp(prop: string): boolean {
460
+ return SUPPORTED_STYLES.hasOwnProperty(prop);
461
+ }
462
+
463
+ function isSupportedTransformProp(prop: string): boolean {
464
+ return SUPPORTED_TRANSFORMS.hasOwnProperty(prop);
465
+ }
466
+
467
+ function isSupportedInterpolationParam(param: string): boolean {
468
+ return SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(param);
469
+ }
470
+
471
+ function validateTransform(
472
+ configs: Array<
473
+ | {
474
+ type: 'animated',
475
+ property: string,
476
+ nodeTag: ?number,
477
+ ...
478
+ }
479
+ | {
480
+ type: 'static',
481
+ property: string,
482
+ value: number | string,
483
+ ...
484
+ },
485
+ >,
486
+ ): void {
487
+ configs.forEach(config => {
488
+ if (!isSupportedTransformProp(config.property)) {
489
+ throw new Error(
490
+ `Property '${config.property}' is not supported by native animated module`,
491
+ );
492
+ }
493
+ });
494
+ }
495
+
496
+ function validateStyles(styles: {[key: string]: ?number, ...}): void {
497
+ for (const key in styles) {
498
+ if (!isSupportedStyleProp(key)) {
499
+ throw new Error(
500
+ `Style property '${key}' is not supported by native animated module`,
501
+ );
502
+ }
503
+ }
504
+ }
505
+
506
+ function validateInterpolation<OutputT: number | string>(
507
+ config: InterpolationConfigType<OutputT>,
508
+ ): void {
509
+ for (const key in config) {
510
+ if (!isSupportedInterpolationParam(key)) {
511
+ throw new Error(
512
+ `Interpolation property '${key}' is not supported by native animated module`,
513
+ );
514
+ }
515
+ }
516
+ }
517
+
518
+ function generateNewNodeTag(): number {
519
+ return __nativeAnimatedNodeTagCount++;
520
+ }
521
+
522
+ function generateNewAnimationId(): number {
523
+ return __nativeAnimationIdCount++;
524
+ }
525
+
526
+ function assertNativeAnimatedModule(): void {
527
+ invariant(NativeAnimatedModule, 'Native animated module is not available');
528
+ }
529
+
530
+ let _warnedMissingNativeAnimated = false;
531
+
532
+ function shouldUseNativeDriver(
533
+ config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig,
534
+ ): boolean {
535
+ if (config.useNativeDriver == null) {
536
+ console.warn(
537
+ 'Animated: `useNativeDriver` was not specified. This is a required ' +
538
+ 'option and must be explicitly set to `true` or `false`',
539
+ );
540
+ }
541
+
542
+ if (config.useNativeDriver === true && !NativeAnimatedModule) {
543
+ if (process.env.NODE_ENV !== 'test') {
544
+ if (!_warnedMissingNativeAnimated) {
545
+ console.warn(
546
+ 'Animated: `useNativeDriver` is not supported because the native ' +
547
+ 'animated module is missing. Falling back to JS-based animation. To ' +
548
+ 'resolve this, add `RCTAnimation` module to this app, or remove ' +
549
+ '`useNativeDriver`. ' +
550
+ 'Make sure to run `bundle exec pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md',
551
+ );
552
+ _warnedMissingNativeAnimated = true;
553
+ }
554
+ }
555
+ return false;
556
+ }
557
+
558
+ return config.useNativeDriver || false;
559
+ }
560
+
561
+ function transformDataType(value: number | string): number | string {
562
+ // Change the string type to number type so we can reuse the same logic in
563
+ // iOS and Android platform
564
+ if (typeof value !== 'string') {
565
+ return value;
566
+ }
567
+ if (/deg$/.test(value)) {
568
+ const degrees = parseFloat(value) || 0;
569
+ const radians = (degrees * Math.PI) / 180.0;
570
+ return radians;
571
+ } else {
572
+ return value;
573
+ }
574
+ }
575
+
576
+ export default {
577
+ API,
578
+ isSupportedColorStyleProp,
579
+ isSupportedStyleProp,
580
+ isSupportedTransformProp,
581
+ isSupportedInterpolationParam,
582
+ addWhitelistedStyleProp,
583
+ addWhitelistedTransformProp,
584
+ addWhitelistedInterpolationParam,
585
+ validateStyles,
586
+ validateTransform,
587
+ validateInterpolation,
588
+ generateNewNodeTag,
589
+ generateNewAnimationId,
590
+ assertNativeAnimatedModule,
591
+ shouldUseNativeDriver,
592
+ transformDataType,
593
+ // $FlowExpectedError[unsafe-getters-setters] - unsafe getter lint suppresion
594
+ // $FlowExpectedError[missing-type-arg] - unsafe getter lint suppresion
595
+ get nativeEventEmitter(): NativeEventEmitter {
596
+ if (!nativeEventEmitter) {
597
+ // $FlowFixMe[underconstrained-implicit-instantiation]
598
+ nativeEventEmitter = new NativeEventEmitter(
599
+ // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior
600
+ // If you want to use the native module on other platforms, please remove this condition and test its behavior
601
+ Platform.OS !== 'ios' ? null : NativeAnimatedModule,
602
+ );
603
+ }
604
+ return nativeEventEmitter;
605
+ },
606
+ };
@@ -105,7 +105,7 @@ export default function bezier(
105
105
  // Precompute samples table
106
106
  const sampleValues = float32ArraySupported
107
107
  ? new Float32Array(kSplineTableSize)
108
- : new Array(kSplineTableSize);
108
+ : new Array<number>(kSplineTableSize);
109
109
  if (mX1 !== mY1 || mX2 !== mY2) {
110
110
  for (let i = 0; i < kSplineTableSize; ++i) {
111
111
  sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
@@ -17,9 +17,14 @@ import * as React from 'react';
17
17
  /**
18
18
  * @see https://github.com/facebook/react-native/commit/b8c8562
19
19
  */
20
- const FlatListWithEventThrottle = React.forwardRef((props, ref) => (
21
- <FlatList scrollEventThrottle={0.0001} {...props} ref={ref} />
22
- ));
20
+ const FlatListWithEventThrottle = React.forwardRef(
21
+ (
22
+ props: React.ElementConfig<typeof FlatList>,
23
+ ref:
24
+ | ((null | FlatList<mixed>) => mixed)
25
+ | {current: null | FlatList<mixed>, ...},
26
+ ) => <FlatList scrollEventThrottle={0.0001} {...props} ref={ref} />,
27
+ );
23
28
 
24
29
  export default (createAnimatedComponent(
25
30
  FlatListWithEventThrottle,
@@ -67,12 +67,15 @@ const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
67
67
  // $FlowFixMe[unclear-type] Same Flow type as `refreshControl` in ScrollView
68
68
  refreshControl: React.Element<any>,
69
69
  },
70
- forwardedRef,
70
+ forwardedRef:
71
+ | {current: Instance | null, ...}
72
+ | ((Instance | null) => mixed),
71
73
  ) => {
72
74
  // Split `props` into the animate-able props for the parent (RefreshControl)
73
75
  // and child (ScrollView).
74
76
  const {intermediatePropsForRefreshControl, intermediatePropsForScrollView} =
75
77
  useMemo(() => {
78
+ // $FlowFixMe[underconstrained-implicit-instantiation]
76
79
  const {outer, inner} = splitLayoutProps(flattenStyle(props.style));
77
80
  return {
78
81
  intermediatePropsForRefreshControl: {style: outer},
@@ -8,6 +8,7 @@
8
8
  * @format
9
9
  */
10
10
 
11
+ import type {SectionBase} from '../../Lists/SectionList';
11
12
  import type {AnimatedComponentType} from '../createAnimatedComponent';
12
13
 
13
14
  import SectionList from '../../Lists/SectionList';
@@ -17,9 +18,17 @@ import * as React from 'react';
17
18
  /**
18
19
  * @see https://github.com/facebook/react-native/commit/b8c8562
19
20
  */
20
- const SectionListWithEventThrottle = React.forwardRef((props, ref) => (
21
- <SectionList scrollEventThrottle={0.0001} {...props} ref={ref} />
22
- ));
21
+ const SectionListWithEventThrottle = React.forwardRef(
22
+ (
23
+ props: React.ElementConfig<typeof SectionList>,
24
+ ref:
25
+ | ((null | SectionList<SectionBase<$FlowFixMe>>) => mixed)
26
+ | {
27
+ current: null | SectionList<SectionBase<$FlowFixMe>>,
28
+ ...
29
+ },
30
+ ) => <SectionList scrollEventThrottle={0.0001} {...props} ref={ref} />,
31
+ );
23
32
 
24
33
  export default (createAnimatedComponent(
25
34
  SectionListWithEventThrottle,