@office-iss/react-native-win32 0.73.2 → 0.74.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 (479) hide show
  1. package/.eslintignore +1 -1
  2. package/.flowconfig +11 -3
  3. package/CHANGELOG.json +411 -54
  4. package/CHANGELOG.md +157 -30
  5. package/IntegrationTests/AccessibilityManagerTest.js +2 -2
  6. package/IntegrationTests/AppEventsTest.js +2 -2
  7. package/IntegrationTests/LayoutEventsTest.js +8 -10
  8. package/IntegrationTests/LoggingTestModule.js +1 -2
  9. package/IntegrationTests/websocket_integration_test_server.js +1 -1
  10. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +6 -0
  11. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +6 -0
  12. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +4 -45
  13. package/Libraries/Alert/NativeAlertManager.js +4 -26
  14. package/Libraries/Animated/Animated.js +2 -2
  15. package/Libraries/Animated/AnimatedPlatformConfig.js +1 -1
  16. package/Libraries/Animated/NativeAnimatedHelper.js +14 -11
  17. package/Libraries/Animated/NativeAnimatedHelper.win32.js +14 -11
  18. package/Libraries/Animated/NativeAnimatedModule.js +4 -68
  19. package/Libraries/Animated/NativeAnimatedTurboModule.js +4 -69
  20. package/Libraries/Animated/animations/Animation.js +6 -22
  21. package/Libraries/Animated/components/AnimatedFlatList.js +1 -16
  22. package/Libraries/Animated/components/AnimatedScrollView.js +36 -31
  23. package/Libraries/Animated/components/AnimatedSectionList.js +1 -20
  24. package/Libraries/Animated/createAnimatedComponent.js +45 -40
  25. package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
  26. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +1 -1
  27. package/Libraries/Animated/useAnimatedProps.js +21 -1
  28. package/Libraries/AppState/NativeAppState.js +4 -24
  29. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  30. package/Libraries/Blob/Blob.js +1 -4
  31. package/Libraries/Blob/BlobManager.js +6 -8
  32. package/Libraries/Blob/File.js +1 -1
  33. package/Libraries/Blob/NativeBlobModule.js +4 -50
  34. package/Libraries/Blob/NativeFileReaderModule.js +4 -13
  35. package/Libraries/BugReporting/NativeBugReporting.js +4 -12
  36. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +5 -1
  37. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +48 -7
  38. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +3 -23
  39. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +11 -0
  40. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +4 -57
  41. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +3 -2
  42. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.win32.js +3 -2
  43. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +9 -40
  44. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +3 -43
  45. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +36 -36
  46. package/Libraries/Components/Button/ButtonWin32.Props.js +2 -2
  47. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
  48. package/Libraries/Components/Button/ButtonWin32.d.ts +19 -19
  49. package/Libraries/Components/Button/ButtonWin32.js +82 -82
  50. package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
  51. package/Libraries/Components/Button.js +103 -107
  52. package/Libraries/Components/Button.win32.js +297 -301
  53. package/Libraries/Components/Clipboard/NativeClipboard.js +3 -11
  54. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +3 -114
  55. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -5
  56. package/Libraries/Components/EnterString.win32.d.ts +12 -12
  57. package/Libraries/Components/EnterString.win32.js +81 -81
  58. package/Libraries/Components/EnterString.win32.js.map +1 -1
  59. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +3 -10
  60. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.android.js +69 -0
  61. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +24 -0
  62. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +33 -0
  63. package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +13 -0
  64. package/Libraries/Components/Pressable/Pressable.js +1 -1
  65. package/Libraries/Components/Pressable/Pressable.win32.js +1 -1
  66. package/Libraries/Components/Pressable/useAndroidRippleForView.js +5 -4
  67. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +4 -24
  68. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +3 -64
  69. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +3 -61
  70. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  71. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +3 -15
  72. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +3 -16
  73. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +1 -1
  74. package/Libraries/Components/ScrollView/ScrollView.d.ts +5 -6
  75. package/Libraries/Components/ScrollView/ScrollView.js +12 -38
  76. package/Libraries/Components/ScrollView/ScrollView.win32.js +12 -38
  77. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -2
  78. package/Libraries/Components/Sound/NativeSoundManager.js +3 -12
  79. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +3 -58
  80. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +3 -79
  81. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +4 -53
  82. package/Libraries/Components/Switch/Switch.js +0 -2
  83. package/Libraries/Components/Switch/SwitchNativeComponent.js +4 -52
  84. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -0
  85. package/Libraries/Components/TextInput/InputAccessoryView.js +18 -20
  86. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +4 -17
  87. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -6
  88. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +8 -8
  89. package/Libraries/Components/TextInput/Tests/TextInputTest.js +127 -127
  90. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  91. package/Libraries/Components/TextInput/TextInput.d.ts +16 -0
  92. package/Libraries/Components/TextInput/TextInput.flow.js +16 -0
  93. package/Libraries/Components/TextInput/TextInput.js +65 -32
  94. package/Libraries/Components/TextInput/TextInput.win32.js +70 -37
  95. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +3 -28
  96. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  97. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +8 -8
  98. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +343 -344
  99. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  100. package/Libraries/Components/Touchable/Touchable.js +2 -3
  101. package/Libraries/Components/Touchable/Touchable.win32.js +2 -3
  102. package/Libraries/Components/Touchable/TouchableHighlight.js +4 -4
  103. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  104. package/Libraries/Components/Touchable/TouchableOpacity.js +5 -2
  105. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +37 -37
  106. package/Libraries/Components/Touchable/TouchableWin32.Props.js +2 -2
  107. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  108. package/Libraries/Components/Touchable/TouchableWin32.Types.d.ts +114 -114
  109. package/Libraries/Components/Touchable/TouchableWin32.Types.js +2 -2
  110. package/Libraries/Components/Touchable/TouchableWin32.Types.js.map +1 -1
  111. package/Libraries/Components/Touchable/TouchableWin32.d.ts +91 -91
  112. package/Libraries/Components/Touchable/TouchableWin32.js +506 -506
  113. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  114. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +3 -16
  115. package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -1
  116. package/Libraries/Components/View/View.js +0 -11
  117. package/Libraries/Components/View/View.win32.js +18 -17
  118. package/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  119. package/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  120. package/Libraries/Components/View/ViewPropTypes.js +36 -36
  121. package/Libraries/Components/View/ViewPropTypes.win32.js +36 -36
  122. package/Libraries/Core/InitializeCore.js +1 -1
  123. package/Libraries/Core/NativeExceptionsManager.js +3 -93
  124. package/Libraries/Core/ReactNativeVersion.js +12 -6
  125. package/Libraries/Core/ReactNativeVersionCheck.js +6 -6
  126. package/Libraries/Core/ReactNativeVersionCheck.win32.js +6 -6
  127. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +3 -18
  128. package/Libraries/Core/Timers/NativeTiming.js +3 -16
  129. package/Libraries/Core/registerCallableModule.js +42 -0
  130. package/Libraries/Core/setUpPerformance.js +2 -2
  131. package/Libraries/Core/setUpPerformanceObserver.js +3 -1
  132. package/Libraries/Debugging/DebuggingOverlay.js +111 -0
  133. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  134. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  135. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  136. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +3 -14
  137. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +3 -9
  138. package/Libraries/Image/AssetSourceResolver.js +5 -5
  139. package/Libraries/Image/AssetUtils.js +4 -5
  140. package/Libraries/Image/Image.android.js +146 -174
  141. package/Libraries/Image/Image.d.ts +1 -1
  142. package/Libraries/Image/Image.ios.js +53 -79
  143. package/Libraries/Image/Image.win32.js +52 -74
  144. package/Libraries/Image/ImageBackground.js +2 -2
  145. package/Libraries/Image/ImageInjection.js +76 -18
  146. package/Libraries/Image/ImageTypes.d.ts +25 -25
  147. package/Libraries/Image/ImageTypes.flow.js +71 -0
  148. package/Libraries/Image/ImageTypes.js +7 -7
  149. package/Libraries/Image/ImageTypes.js.map +1 -1
  150. package/Libraries/Image/ImageUtils.js +1 -1
  151. package/Libraries/Image/ImageViewNativeComponent.js +18 -0
  152. package/Libraries/Image/NativeImageEditor.js +3 -42
  153. package/Libraries/Image/NativeImageLoaderAndroid.js +4 -28
  154. package/Libraries/Image/NativeImageLoaderIOS.js +4 -28
  155. package/Libraries/Image/NativeImageLoaderWin32.js +4 -36
  156. package/Libraries/Image/NativeImageStoreAndroid.js +3 -16
  157. package/Libraries/Image/NativeImageStoreIOS.js +3 -23
  158. package/Libraries/Image/Tests/ImageWin32Test.d.ts +8 -8
  159. package/Libraries/Image/Tests/ImageWin32Test.js +21 -21
  160. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  161. package/Libraries/Image/resolveAssetSource.js +59 -26
  162. package/Libraries/Inspector/ElementProperties.js +26 -52
  163. package/Libraries/Inspector/Inspector.js +122 -186
  164. package/Libraries/Inspector/Inspector.win32.js +118 -185
  165. package/Libraries/Inspector/InspectorOverlay.js +21 -33
  166. package/Libraries/Inspector/InspectorOverlay.win32.js +22 -33
  167. package/Libraries/Inspector/InspectorPanel.js +3 -17
  168. package/Libraries/Inspector/ReactDevToolsOverlay.js +171 -0
  169. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +20 -8
  170. package/Libraries/Interaction/FrameRateLogger.js +8 -18
  171. package/Libraries/Interaction/NativeFrameRateLogger.js +4 -16
  172. package/Libraries/IntersectionObserver/IntersectionObserver.js +1 -1
  173. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +20 -19
  174. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +84 -6
  175. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +3 -31
  176. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +12 -2
  177. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -2
  178. package/Libraries/Linking/NativeIntentAndroid.js +3 -20
  179. package/Libraries/Linking/NativeLinkingManager.js +3 -17
  180. package/Libraries/Lists/FillRateHelper.js +1 -1
  181. package/Libraries/Lists/FlatList.d.ts +2 -2
  182. package/Libraries/Lists/FlatList.js +6 -1
  183. package/Libraries/Lists/SectionList.d.ts +6 -1
  184. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  185. package/Libraries/Lists/VirtualizeUtils.js +1 -1
  186. package/Libraries/Lists/VirtualizedList.js +1 -1
  187. package/Libraries/Lists/VirtualizedListContext.js +1 -1
  188. package/Libraries/Lists/VirtualizedSectionList.js +1 -1
  189. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  190. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  191. package/Libraries/Modal/Modal.js +43 -11
  192. package/Libraries/Modal/NativeModalManager.js +3 -11
  193. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -129
  194. package/Libraries/MutationObserver/MutationObserver.js +1 -1
  195. package/Libraries/MutationObserver/MutationObserverManager.js +2 -2
  196. package/Libraries/MutationObserver/MutationRecord.js +12 -10
  197. package/Libraries/MutationObserver/NativeMutationObserver.js +3 -48
  198. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +1 -1
  199. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  200. package/Libraries/NativeComponent/NativeComponentRegistry.js +1 -1
  201. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +3 -10
  202. package/Libraries/NativeModules/specs/NativeDevMenu.js +3 -13
  203. package/Libraries/NativeModules/specs/NativeDevSettings.js +3 -23
  204. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +3 -9
  205. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +3 -38
  206. package/Libraries/NativeModules/specs/NativeLogBox.js +3 -10
  207. package/Libraries/NativeModules/specs/NativeRedBox.js +4 -11
  208. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -25
  209. package/Libraries/Network/FormData.js +3 -1
  210. package/Libraries/Network/NativeNetworkingAndroid.js +4 -28
  211. package/Libraries/Network/NativeNetworkingIOS.js +4 -28
  212. package/Libraries/Performance/NativeJSCSamplingProfiler.js +3 -9
  213. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -68
  214. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  215. package/Libraries/PersonaCoin/PersonaCoin.d.ts +3 -3
  216. package/Libraries/PersonaCoin/PersonaCoin.js +14 -14
  217. package/Libraries/PersonaCoin/PersonaCoin.js.map +1 -1
  218. package/Libraries/PersonaCoin/PersonaCoinPropTypes.d.ts +2 -2
  219. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js +19 -19
  220. package/Libraries/PersonaCoin/PersonaCoinPropTypes.js.map +1 -1
  221. package/Libraries/PersonaCoin/PersonaCoinTypes.d.ts +33 -33
  222. package/Libraries/PersonaCoin/PersonaCoinTypes.js +23 -23
  223. package/Libraries/PersonaCoin/PersonaCoinTypes.js.map +1 -1
  224. package/Libraries/Pressability/Pressability.js +12 -2
  225. package/Libraries/Pressability/Pressability.win32.js +12 -2
  226. package/Libraries/Pressability/usePressability.js +7 -0
  227. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +4 -70
  228. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +45 -39
  229. package/Libraries/ReactNative/AppContainer-dev.js +192 -0
  230. package/Libraries/ReactNative/AppContainer-prod.js +53 -0
  231. package/Libraries/ReactNative/AppContainer.js +6 -149
  232. package/Libraries/ReactNative/AppRegistry.js +3 -1
  233. package/Libraries/ReactNative/BridgelessUIManager.js +375 -128
  234. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  235. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +3 -10
  236. package/Libraries/ReactNative/NativeI18nManager.js +3 -18
  237. package/Libraries/ReactNative/NativeUIManager.js +4 -112
  238. package/Libraries/ReactNative/PaperUIManager.js +8 -7
  239. package/Libraries/ReactNative/PaperUIManager.win32.js +26 -7
  240. package/Libraries/ReactNative/ReactFabricInternals.js +1 -1
  241. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +24 -5
  242. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -45
  243. package/Libraries/ReactNative/RendererImplementation.js +11 -0
  244. package/Libraries/ReactNative/UIManager.d.ts +11 -34
  245. package/Libraries/ReactNative/UIManager.js +2 -23
  246. package/Libraries/ReactNative/UIManagerProperties.js +0 -2
  247. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +23 -1
  248. package/Libraries/ReactNative/getNativeComponentAttributes.js +5 -1
  249. package/Libraries/ReactNative/renderApplication.js +9 -6
  250. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -1
  251. package/Libraries/Renderer/implementations/ReactFabric-dev.js +24771 -21123
  252. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4160 -3109
  253. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4384 -3322
  254. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +25194 -21398
  255. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3763 -2636
  256. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4027 -2867
  257. package/Libraries/Renderer/shims/ReactNativeTypes.js +8 -9
  258. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +7 -12
  259. package/Libraries/Settings/NativeSettingsManager.js +4 -16
  260. package/Libraries/Share/NativeShareModule.js +3 -13
  261. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +1 -1
  262. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  263. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.js +1 -1
  264. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -20
  265. package/Libraries/StyleSheet/StyleSheet.js +5 -28
  266. package/Libraries/StyleSheet/StyleSheet.win32.js +5 -28
  267. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +47 -7
  268. package/Libraries/StyleSheet/StyleSheetTypes.js +16 -11
  269. package/Libraries/StyleSheet/flattenStyle.js +2 -2
  270. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  271. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  272. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  273. package/Libraries/Text/Text.d.ts +5 -6
  274. package/Libraries/Text/Text.js +0 -6
  275. package/Libraries/Text/Text.win32.js +0 -6
  276. package/Libraries/Text/TextAncestor.js +2 -3
  277. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +4 -41
  278. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  279. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  280. package/Libraries/Utilities/DebugEnvironment.js +1 -4
  281. package/Libraries/Utilities/Dimensions.js +8 -16
  282. package/Libraries/Utilities/Dimensions.win32.js +8 -16
  283. package/Libraries/Utilities/FocusManager.win32.js +2 -0
  284. package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -2
  285. package/Libraries/Utilities/NativeAppearance.js +3 -26
  286. package/Libraries/Utilities/NativeDevLoadingView.js +3 -14
  287. package/Libraries/Utilities/NativeDeviceInfo.js +2 -47
  288. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +3 -34
  289. package/Libraries/Utilities/NativePlatformConstantsIOS.js +3 -26
  290. package/Libraries/Utilities/NativePlatformConstantsWin.js +3 -23
  291. package/Libraries/Utilities/PixelRatio.d.ts +4 -4
  292. package/Libraries/Utilities/Platform.android.js +4 -0
  293. package/Libraries/Utilities/Platform.d.ts +3 -0
  294. package/Libraries/Utilities/Platform.flow.js +7 -0
  295. package/Libraries/Utilities/Platform.flow.win32.js +18 -5
  296. package/Libraries/Utilities/Platform.ios.js +11 -0
  297. package/Libraries/Utilities/Platform.win32.js +9 -1
  298. package/Libraries/Utilities/binaryToBase64.js +1 -1
  299. package/Libraries/Utilities/codegenNativeComponent.js +4 -6
  300. package/Libraries/Utilities/createPerformanceLogger.js +2 -74
  301. package/Libraries/Utilities/useMergeRefs.js +5 -9
  302. package/Libraries/Vibration/NativeVibration.js +3 -14
  303. package/Libraries/WebSocket/NativeWebSocketModule.js +4 -25
  304. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -1
  305. package/Libraries/platform-types.d.ts +2 -3
  306. package/Libraries/vendor/emitter/EventEmitter.js +1 -0
  307. package/babel.config.js +1 -1
  308. package/flow/jest.js +1 -1
  309. package/flow/react.js +15 -0
  310. package/index.js +66 -99
  311. package/index.win32.js +60 -101
  312. package/jest/assetFileTransformer.js +1 -1
  313. package/jest/local-setup.js +0 -5
  314. package/jest/mockModal.js +2 -1
  315. package/jest/mockScrollView.js +1 -2
  316. package/jest/renderer.js +1 -1
  317. package/jest/setup.js +6 -3
  318. package/jest.config.js +2 -1
  319. package/overrides.json +152 -131
  320. package/package.json +26 -26
  321. package/{Libraries/Core → src/private/core}/setUpDOM.js +2 -2
  322. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +42 -0
  323. package/src/private/featureflags/ReactNativeFeatureFlags.js +140 -0
  324. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +84 -0
  325. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +92 -0
  326. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  327. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  328. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +26 -0
  329. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  330. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  331. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  332. package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +47 -0
  333. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  334. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  335. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  336. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +139 -0
  337. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  338. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  339. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  340. package/src/private/specs/modules/NativeAccessibilityInfo.js +33 -0
  341. package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +39 -0
  342. package/src/private/specs/modules/NativeAccessibilityManager.js +66 -0
  343. package/src/private/specs/modules/NativeActionSheetManager.js +54 -0
  344. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  345. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  346. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  347. package/src/private/specs/modules/NativeAnimationsDebugModule.js +20 -0
  348. package/src/private/specs/modules/NativeAppState.js +33 -0
  349. package/src/private/specs/modules/NativeAppearance.js +36 -0
  350. package/src/private/specs/modules/NativeBlobModule.js +59 -0
  351. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  352. package/src/private/specs/modules/NativeClipboard.js +21 -0
  353. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  354. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  355. package/src/private/specs/modules/NativeDevSettings.js +33 -0
  356. package/src/private/specs/modules/NativeDevToolsSettingsManager.js +24 -0
  357. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  358. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  359. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  360. package/src/private/specs/modules/NativeExceptionsManager.js +103 -0
  361. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  362. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  363. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  364. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  365. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  366. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  367. package/src/private/specs/modules/NativeImageLoaderIOS.js +37 -0
  368. package/src/private/specs/modules/NativeImageLoaderWin32.js +45 -0
  369. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  370. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  371. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  372. package/src/private/specs/modules/NativeIntersectionObserver.js +41 -0
  373. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  374. package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
  375. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  376. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  377. package/src/private/specs/modules/NativeLogBox.js +20 -0
  378. package/src/private/specs/modules/NativeModalManager.js +21 -0
  379. package/src/private/specs/modules/NativeMutationObserver.js +58 -0
  380. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  381. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  382. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  383. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  384. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  385. package/src/private/specs/modules/NativePlatformConstantsWin.js +37 -0
  386. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +107 -0
  387. package/src/private/specs/modules/NativeRedBox.js +20 -0
  388. package/src/private/specs/modules/NativeSampleTurboModule.js +53 -0
  389. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  390. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  391. package/src/private/specs/modules/NativeShareModule.js +23 -0
  392. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  393. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  394. package/src/private/specs/modules/NativeStatusBarManagerAndroid.js +68 -0
  395. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  396. package/src/private/specs/modules/NativeTiming.js +26 -0
  397. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  398. package/src/private/specs/modules/NativeUIManager.js +118 -0
  399. package/src/private/specs/modules/NativeVibration.js +24 -0
  400. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  401. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReactNativeElement.js +6 -6
  402. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyCharacterData.js +2 -2
  403. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyElement.js +5 -5
  404. package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyNode.js +19 -10
  405. package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/DOMRectList.js +1 -1
  406. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +85 -0
  407. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +80 -0
  408. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +161 -0
  409. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformance.js +2 -2
  410. package/{Libraries/WebPerformance → src/private/webapis/performance}/NativePerformanceObserver.js +3 -2
  411. package/{Libraries/WebPerformance → src/private/webapis/performance}/Performance.js +2 -2
  412. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEventTiming.js +1 -1
  413. package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceObserver.js +21 -2
  414. package/{Libraries/WebPerformance → src/private/webapis/performance}/RawPerformanceEntry.js +1 -1
  415. package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformanceObserver.js +9 -0
  416. package/src/private/webapis/performance/__tests__/EventCounts-test.js +116 -0
  417. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +82 -0
  418. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +108 -0
  419. package/src/private/webapis/performance/__tests__/Performance-test.js +117 -0
  420. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +208 -0
  421. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +161 -0
  422. package/{src → src-win}/Libraries/Components/Button/ButtonWin32.tsx +3 -3
  423. package/{src → src-win}/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +9 -10
  424. package/{src → src-win}/Libraries/Components/View/ViewAccessibility.d.ts +33 -17
  425. package/{src → src-win}/Libraries/Components/View/ViewPropTypes.d.ts +28 -17
  426. package/{src → src-win}/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  427. package/{src → src-win}/Libraries/Text/Text.d.ts +5 -6
  428. package/{src → src-win}/Libraries/platform-types.d.ts +2 -3
  429. package/types/modules/globals.d.ts +1 -0
  430. package/Libraries/Components/Button.flow.js +0 -265
  431. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +0 -85
  432. package/Libraries/Components/Text/TextWin32.Props.d.ts +0 -63
  433. package/Libraries/Components/Text/TextWin32.Props.js +0 -3
  434. package/Libraries/Components/Text/TextWin32.Props.js.map +0 -1
  435. package/Libraries/Components/Text/TextWin32.d.ts +0 -6
  436. package/Libraries/Components/Text/TextWin32.js +0 -18
  437. package/Libraries/Components/Text/TextWin32.js.map +0 -1
  438. package/Libraries/Components/Touchable/Touchable.flow.js +0 -284
  439. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +0 -189
  440. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlayNativeComponent.js +0 -43
  441. package/Libraries/Image/Image.flow.js +0 -64
  442. package/Libraries/Inspector/DevtoolsOverlay.js +0 -223
  443. package/Libraries/Performance/QuickPerformanceLogger.js +0 -142
  444. package/src/Libraries/Components/Text/TextWin32.Props.ts +0 -82
  445. package/src/Libraries/Components/Text/TextWin32.tsx +0 -25
  446. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRect.js +0 -0
  447. /package/{Libraries/DOM/Geometry → src/private/webapis/dom/geometry}/DOMRectReadOnly.js +0 -0
  448. /package/{Libraries/DOM/Nodes → src/private/webapis/dom/nodes}/ReadOnlyText.js +0 -0
  449. /package/{Libraries/DOM/Nodes/Utilities → src/private/webapis/dom/nodes/utilities}/Traversal.js +0 -0
  450. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/ArrayLikeUtils.js +0 -0
  451. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/HTMLCollection.js +0 -0
  452. /package/{Libraries/DOM/OldStyleCollections → src/private/webapis/dom/oldstylecollections}/NodeList.js +0 -0
  453. /package/{Libraries/WebPerformance → src/private/webapis/performance}/EventCounts.js +0 -0
  454. /package/{Libraries/WebPerformance → src/private/webapis/performance}/MemoryInfo.js +0 -0
  455. /package/{Libraries/WebPerformance → src/private/webapis/performance}/PerformanceEntry.js +0 -0
  456. /package/{Libraries/WebPerformance → src/private/webapis/performance}/ReactNativeStartupTiming.js +0 -0
  457. /package/{Libraries/WebPerformance → src/private/webapis/performance}/__mocks__/NativePerformance.js +0 -0
  458. /package/{src → src-win}/Libraries/Components/Button/ButtonWin32.Props.ts +0 -0
  459. /package/{src → src-win}/Libraries/Components/EnterString.win32.tsx +0 -0
  460. /package/{src → src-win}/Libraries/Components/TextInput/Tests/TextInputTest.tsx +0 -0
  461. /package/{src → src-win}/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +0 -0
  462. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Props.tsx +0 -0
  463. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.Types.tsx +0 -0
  464. /package/{src → src-win}/Libraries/Components/Touchable/TouchableWin32.tsx +0 -0
  465. /package/{src → src-win}/Libraries/Components/View/ViewWin32.d.ts +0 -0
  466. /package/{src → src-win}/Libraries/Image/ImageTypes.ts +0 -0
  467. /package/{src → src-win}/Libraries/Image/Tests/ImageWin32Test.tsx +0 -0
  468. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest.png +0 -0
  469. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@1.5x.png +0 -0
  470. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@2x.png +0 -0
  471. /package/{src → src-win}/Libraries/Image/Tests/img/dpitest@3x.png +0 -0
  472. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest.png +0 -0
  473. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@1.5x.png +0 -0
  474. /package/{src → src-win}/Libraries/Image/Tests/img/en-us/dpitest@3x.png +0 -0
  475. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoin.tsx +0 -0
  476. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinPropTypes.ts +0 -0
  477. /package/{src → src-win}/Libraries/PersonaCoin/PersonaCoinTypes.ts +0 -0
  478. /package/{src → src-win}/Libraries/Utilities/FocusManager.win32.d.ts +0 -0
  479. /package/{src → src-win}/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +0 -0
@@ -4,75 +4,10 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- import type {TurboModule} from '../TurboModule/RCTExport';
12
-
13
- import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
14
- import shouldUseTurboAnimatedModule from './shouldUseTurboAnimatedModule';
15
-
16
- type EndResult = {finished: boolean, value?: number, ...};
17
- type EndCallback = (result: EndResult) => void;
18
- type SaveValueCallback = (value: number) => void;
19
-
20
- export type EventMapping = {|
21
- nativeEventPath: Array<string>,
22
- animatedValueTag: ?number,
23
- |};
24
-
25
- // The config has different keys depending on the type of the Node
26
- // TODO(T54896888): Make these types strict
27
- export type AnimatedNodeConfig = Object;
28
- export type AnimatingNodeConfig = Object;
29
-
30
- export interface Spec extends TurboModule {
31
- +startOperationBatch: () => void;
32
- +finishOperationBatch: () => void;
33
- +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void;
34
- +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void;
35
- +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void;
36
- +startListeningToAnimatedNodeValue: (tag: number) => void;
37
- +stopListeningToAnimatedNodeValue: (tag: number) => void;
38
- +connectAnimatedNodes: (parentTag: number, childTag: number) => void;
39
- +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void;
40
- +startAnimatingNode: (
41
- animationId: number,
42
- nodeTag: number,
43
- config: AnimatingNodeConfig,
44
- endCallback: EndCallback,
45
- ) => void;
46
- +stopAnimation: (animationId: number) => void;
47
- +setAnimatedNodeValue: (nodeTag: number, value: number) => void;
48
- +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void;
49
- +flattenAnimatedNodeOffset: (nodeTag: number) => void;
50
- +extractAnimatedNodeOffset: (nodeTag: number) => void;
51
- +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void;
52
- +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void;
53
- +restoreDefaultValues: (nodeTag: number) => void;
54
- +dropAnimatedNode: (tag: number) => void;
55
- +addAnimatedEventToView: (
56
- viewTag: number,
57
- eventName: string,
58
- eventMapping: EventMapping,
59
- ) => void;
60
- +removeAnimatedEventFromView: (
61
- viewTag: number,
62
- eventName: string,
63
- animatedNodeTag: number,
64
- ) => void;
65
-
66
- // Events
67
- +addListener: (eventName: string) => void;
68
- +removeListeners: (count: number) => void;
69
-
70
- // All of the above in a batched mode
71
- +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array<any>) => void;
72
- }
73
-
74
- const NativeModule: ?Spec = shouldUseTurboAnimatedModule()
75
- ? TurboModuleRegistry.get<Spec>('NativeAnimatedTurboModule')
76
- : null;
77
-
78
- export default NativeModule;
11
+ export * from '../../src/private/specs/modules/NativeAnimatedTurboModule';
12
+ import NativeAnimatedTurboModule from '../../src/private/specs/modules/NativeAnimatedTurboModule';
13
+ export default NativeAnimatedTurboModule;
@@ -14,11 +14,8 @@ import type {PlatformConfig} from '../AnimatedPlatformConfig';
14
14
  import type AnimatedNode from '../nodes/AnimatedNode';
15
15
  import type AnimatedValue from '../nodes/AnimatedValue';
16
16
 
17
- import Platform from '../../Utilities/Platform';
18
17
  import NativeAnimatedHelper from '../NativeAnimatedHelper';
19
- import AnimatedColor from '../nodes/AnimatedColor';
20
18
  import AnimatedProps from '../nodes/AnimatedProps';
21
- import AnimatedValueXY from '../nodes/AnimatedValueXY';
22
19
 
23
20
  export type EndResult = {finished: boolean, value?: number, ...};
24
21
  export type EndCallback = (result: EndResult) => void;
@@ -39,10 +36,11 @@ let startNativeAnimationNextId = 1;
39
36
  export default class Animation {
40
37
  __active: boolean;
41
38
  __isInteraction: boolean;
42
- __nativeId: number;
43
39
  __onEnd: ?EndCallback;
44
40
  __iterations: number;
45
41
 
42
+ _nativeId: number;
43
+
46
44
  start(
47
45
  fromValue: number,
48
46
  onUpdate: (value: number) => void,
@@ -52,8 +50,8 @@ export default class Animation {
52
50
  ): void {}
53
51
 
54
52
  stop(): void {
55
- if (this.__nativeId) {
56
- NativeAnimatedHelper.API.stopAnimation(this.__nativeId);
53
+ if (this._nativeId) {
54
+ NativeAnimatedHelper.API.stopAnimation(this._nativeId);
57
55
  }
58
56
  }
59
57
 
@@ -78,20 +76,6 @@ export default class Animation {
78
76
  return result;
79
77
  }
80
78
 
81
- // Vectorized animations (animations on AnimatedValueXY, AnimatedColor nodes)
82
- // are split into multiple animations for each component that execute in parallel.
83
- // Calling update() on AnimatedProps when each animation completes results in
84
- // potential flickering as all animations that are part of the vectorized animation
85
- // may not have completed yet. For example, only the animation for the red channel of
86
- // an animating color may have been completed, resulting in a temporary red color
87
- // being rendered. So, for now, ignore AnimatedProps that use a vectorized animation.
88
- if (
89
- Platform.OS === 'ios' &&
90
- (node instanceof AnimatedValueXY || node instanceof AnimatedColor)
91
- ) {
92
- return result;
93
- }
94
-
95
79
  for (const child of node.__getChildren()) {
96
80
  result.push(...this.__findAnimatedPropsNodes(child));
97
81
  }
@@ -108,9 +92,9 @@ export default class Animation {
108
92
  try {
109
93
  const config = this.__getNativeAnimationConfig();
110
94
  animatedValue.__makeNative(config.platformConfig);
111
- this.__nativeId = NativeAnimatedHelper.generateNewAnimationId();
95
+ this._nativeId = NativeAnimatedHelper.generateNewAnimationId();
112
96
  NativeAnimatedHelper.API.startAnimatingNode(
113
- this.__nativeId,
97
+ this._nativeId,
114
98
  animatedValue.__getNativeTag(),
115
99
  config,
116
100
  result => {
@@ -14,22 +14,7 @@ import FlatList from '../../Lists/FlatList';
14
14
  import createAnimatedComponent from '../createAnimatedComponent';
15
15
  import * as React from 'react';
16
16
 
17
- /**
18
- * @see https://github.com/facebook/react-native/commit/b8c8562
19
- */
20
- const FlatListWithEventThrottle = React.forwardRef(
21
- // $FlowFixMe[incompatible-call]
22
- (
23
- props: React.ElementConfig<typeof FlatList>,
24
- ref:
25
- | ((null | FlatList<mixed>) => mixed)
26
- | {current: null | FlatList<mixed>, ...},
27
- ) => <FlatList {...props} ref={ref} />,
28
- );
29
-
30
- export default (createAnimatedComponent(
31
- FlatListWithEventThrottle,
32
- ): AnimatedComponentType<
17
+ export default (createAnimatedComponent(FlatList): AnimatedComponentType<
33
18
  React.ElementConfig<typeof FlatList>,
34
19
  React.ElementRef<typeof FlatList>,
35
20
  >);
@@ -30,39 +30,44 @@ type Instance = React.ElementRef<typeof ScrollView>;
30
30
  * @see https://github.com/facebook/react-native/commit/b8c8562
31
31
  */
32
32
  const AnimatedScrollView: AnimatedComponentType<Props, Instance> =
33
- React.forwardRef((props, forwardedRef) => {
34
- // (Android only) When a ScrollView has a RefreshControl and
35
- // any `style` property set with an Animated.Value, the CSS
36
- // gets incorrectly applied twice. This is because ScrollView
37
- // swaps the parent/child relationship of itself and the
38
- // RefreshControl component (see ScrollView.js for more details).
39
- if (
40
- Platform.OS === 'android' &&
41
- props.refreshControl != null &&
42
- props.style != null
33
+ React.forwardRef(
34
+ function AnimatedScrollViewWithOrWithoutInvertedRefreshControl(
35
+ props,
36
+ forwardedRef,
43
37
  ) {
44
- return (
45
- <AnimatedScrollViewWithInvertedRefreshControl
46
- scrollEventThrottle={0.0001}
47
- {...props}
48
- ref={forwardedRef}
49
- refreshControl={props.refreshControl}
50
- />
51
- );
52
- } else {
53
- return (
54
- <AnimatedScrollViewWithoutInvertedRefreshControl
55
- scrollEventThrottle={0.0001}
56
- {...props}
57
- ref={forwardedRef}
58
- />
59
- );
60
- }
61
- });
38
+ // (Android only) When a ScrollView has a RefreshControl and
39
+ // any `style` property set with an Animated.Value, the CSS
40
+ // gets incorrectly applied twice. This is because ScrollView
41
+ // swaps the parent/child relationship of itself and the
42
+ // RefreshControl component (see ScrollView.js for more details).
43
+ if (
44
+ Platform.OS === 'android' &&
45
+ props.refreshControl != null &&
46
+ props.style != null
47
+ ) {
48
+ return (
49
+ <AnimatedScrollViewWithInvertedRefreshControl
50
+ scrollEventThrottle={0.0001}
51
+ {...props}
52
+ ref={forwardedRef}
53
+ refreshControl={props.refreshControl}
54
+ />
55
+ );
56
+ } else {
57
+ return (
58
+ <AnimatedScrollViewWithoutInvertedRefreshControl
59
+ scrollEventThrottle={0.0001}
60
+ {...props}
61
+ ref={forwardedRef}
62
+ />
63
+ );
64
+ }
65
+ },
66
+ );
62
67
 
63
68
  const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
64
69
  // $FlowFixMe[incompatible-call]
65
- (
70
+ function AnimatedScrollViewWithInvertedRefreshControl(
66
71
  props: {
67
72
  ...React.ElementConfig<typeof ScrollView>,
68
73
  // $FlowFixMe[unclear-type] Same Flow type as `refreshControl` in ScrollView
@@ -71,7 +76,7 @@ const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
71
76
  forwardedRef:
72
77
  | {current: Instance | null, ...}
73
78
  | ((Instance | null) => mixed),
74
- ) => {
79
+ ) {
75
80
  // Split `props` into the animate-able props for the parent (RefreshControl)
76
81
  // and child (ScrollView).
77
82
  const {intermediatePropsForRefreshControl, intermediatePropsForScrollView} =
@@ -103,7 +108,7 @@ const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
103
108
  Props,
104
109
  Instance,
105
110
  >(intermediatePropsForScrollView);
106
- const ref = useMergeRefs<Instance | null>(scrollViewRef, forwardedRef);
111
+ const ref = useMergeRefs<Instance>(scrollViewRef, forwardedRef);
107
112
 
108
113
  return (
109
114
  // $FlowFixMe[incompatible-use] Investigate useAnimatedProps return value
@@ -8,32 +8,13 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import type {SectionBase} from '../../Lists/SectionList';
12
11
  import type {AnimatedComponentType} from '../createAnimatedComponent';
13
12
 
14
13
  import SectionList from '../../Lists/SectionList';
15
14
  import createAnimatedComponent from '../createAnimatedComponent';
16
15
  import * as React from 'react';
17
16
 
18
- /**
19
- * @see https://github.com/facebook/react-native/commit/b8c8562
20
- */
21
- const SectionListWithEventThrottle = React.forwardRef(
22
- // $FlowFixMe[incompatible-call]
23
- (
24
- props: React.ElementConfig<typeof SectionList>,
25
- ref:
26
- | ((null | SectionList<SectionBase<$FlowFixMe>>) => mixed)
27
- | {
28
- current: null | SectionList<SectionBase<$FlowFixMe>>,
29
- ...
30
- },
31
- ) => <SectionList {...props} ref={ref} />,
32
- );
33
-
34
- export default (createAnimatedComponent(
35
- SectionListWithEventThrottle,
36
- ): AnimatedComponentType<
17
+ export default (createAnimatedComponent(SectionList): AnimatedComponentType<
37
18
  React.ElementConfig<typeof SectionList>,
38
19
  React.ElementRef<typeof SectionList>,
39
20
  >);
@@ -13,50 +13,55 @@ import useMergeRefs from '../Utilities/useMergeRefs';
13
13
  import useAnimatedProps from './useAnimatedProps';
14
14
  import * as React from 'react';
15
15
 
16
+ // $FlowFixMe[deprecated-type]
17
+ export type AnimatedProps<Props: {...}> = $ObjMap<
18
+ Props &
19
+ $ReadOnly<{
20
+ passthroughAnimatedPropExplicitValues?: React.ElementConfig<typeof View>,
21
+ }>,
22
+ () => any,
23
+ >;
24
+
16
25
  export type AnimatedComponentType<
17
- -Props: {+[string]: mixed, ...},
26
+ Props: {...},
18
27
  +Instance = mixed,
19
- > = React.AbstractComponent<
20
- $ObjMap<
21
- Props &
22
- $ReadOnly<{
23
- passthroughAnimatedPropExplicitValues?: React.ElementConfig<
24
- typeof View,
25
- >,
26
- }>,
27
- () => any,
28
- >,
29
- Instance,
30
- >;
28
+ > = React.AbstractComponent<AnimatedProps<Props>, Instance>;
31
29
 
32
30
  export default function createAnimatedComponent<TProps: {...}, TInstance>(
33
31
  Component: React.AbstractComponent<TProps, TInstance>,
34
32
  ): AnimatedComponentType<TProps, TInstance> {
35
- return React.forwardRef((props, forwardedRef) => {
36
- const [reducedProps, callbackRef] = useAnimatedProps<TProps, TInstance>(
37
- // $FlowFixMe[incompatible-call]
38
- props,
39
- );
40
- // $FlowFixMe[incompatible-call]
41
- const ref = useMergeRefs<TInstance | null>(callbackRef, forwardedRef);
42
-
43
- // Some components require explicit passthrough values for animation
44
- // to work properly. For example, if an animated component is
45
- // transformed and Pressable, onPress will not work after transform
46
- // without these passthrough values.
47
- // $FlowFixMe[prop-missing]
48
- const {passthroughAnimatedPropExplicitValues, style} = reducedProps;
49
- const {style: passthroughStyle, ...passthroughProps} =
50
- passthroughAnimatedPropExplicitValues ?? {};
51
- const mergedStyle = {...style, ...passthroughStyle};
52
-
53
- return (
54
- <Component
55
- {...reducedProps}
56
- {...passthroughProps}
57
- style={mergedStyle}
58
- ref={ref}
59
- />
60
- );
61
- });
33
+ const AnimatedComponent = React.forwardRef<AnimatedProps<TProps>, TInstance>(
34
+ (props, forwardedRef) => {
35
+ const [reducedProps, callbackRef] = useAnimatedProps<TProps, TInstance>(
36
+ // $FlowFixMe[incompatible-call]
37
+ props,
38
+ );
39
+ const ref = useMergeRefs<TInstance>(callbackRef, forwardedRef);
40
+
41
+ // Some components require explicit passthrough values for animation
42
+ // to work properly. For example, if an animated component is
43
+ // transformed and Pressable, onPress will not work after transform
44
+ // without these passthrough values.
45
+ // $FlowFixMe[prop-missing]
46
+ const {passthroughAnimatedPropExplicitValues, style} = reducedProps;
47
+ const {style: passthroughStyle, ...passthroughProps} =
48
+ passthroughAnimatedPropExplicitValues ?? {};
49
+ const mergedStyle = {...style, ...passthroughStyle};
50
+
51
+ return (
52
+ <Component
53
+ {...reducedProps}
54
+ {...passthroughProps}
55
+ style={mergedStyle}
56
+ ref={ref}
57
+ />
58
+ );
59
+ },
60
+ );
61
+
62
+ AnimatedComponent.displayName = `Animated(${
63
+ Component.displayName || 'Anonymous'
64
+ })`;
65
+
66
+ return AnimatedComponent;
62
67
  }
@@ -12,7 +12,7 @@
12
12
 
13
13
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
14
14
 
15
- import ReactNativeFeatureFlags from '../../ReactNative/ReactNativeFeatureFlags';
15
+ import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
16
16
  import flattenStyle from '../../StyleSheet/flattenStyle';
17
17
  import Platform from '../../Utilities/Platform';
18
18
  import NativeAnimatedHelper from '../NativeAnimatedHelper';
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
@@ -10,8 +10,8 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
13
14
  import {isPublicInstance as isFabricPublicInstance} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils';
14
- import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
15
15
  import useRefEffect from '../Utilities/useRefEffect';
16
16
  import {AnimatedEvent} from './AnimatedEvent';
17
17
  import NativeAnimatedHelper from './NativeAnimatedHelper';
@@ -37,6 +37,7 @@ export default function useAnimatedProps<TProps: {...}, TInstance>(
37
37
  ): [ReducedProps<TProps>, CallbackRef<TInstance | null>] {
38
38
  const [, scheduleUpdate] = useReducer<number, void>(count => count + 1, 0);
39
39
  const onUpdateRef = useRef<?() => void>(null);
40
+ const timerRef = useRef<TimeoutID | null>(null);
40
41
 
41
42
  // TODO: Only invalidate `node` if animated props or `style` change. In the
42
43
  // previous implementation, we permitted `style` to override props with the
@@ -87,6 +88,25 @@ export default function useAnimatedProps<TProps: {...}, TInstance>(
87
88
  // $FlowIgnore[not-a-function] - Assume it's still a function.
88
89
  // $FlowFixMe[incompatible-use]
89
90
  instance.setNativeProps(node.__getAnimatedValue());
91
+ if (isFabricInstance(instance)) {
92
+ // Keeping state of Fiber tree and Shadow tree in sync.
93
+ //
94
+ // This is done by calling `scheduleUpdate` which will trigger a commit.
95
+ // However, React commit is not fast enough to drive animations.
96
+ // This is where setNativeProps comes in handy but the state between
97
+ // Fiber tree and Shadow tree needs to be kept in sync.
98
+ // The goal is to call `scheduleUpdate` as little as possible to maintain
99
+ // performance but frequently enough to keep state in sync.
100
+ // Debounce is set to 48ms, which is 3 * the duration of a frame.
101
+ // 3 frames was the highest value where flickering state was not observed.
102
+ if (timerRef.current != null) {
103
+ clearTimeout(timerRef.current);
104
+ }
105
+ timerRef.current = setTimeout(() => {
106
+ timerRef.current = null;
107
+ scheduleUpdate();
108
+ }, 48);
109
+ }
90
110
  }
91
111
  };
92
112
 
@@ -4,30 +4,10 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- import type {TurboModule} from '../TurboModule/RCTExport';
12
-
13
- import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
14
-
15
- export type AppStateConstants = {|
16
- initialAppState: string,
17
- |};
18
-
19
- export type AppState = {|app_state: string|};
20
-
21
- export interface Spec extends TurboModule {
22
- +getConstants: () => AppStateConstants;
23
- +getCurrentAppState: (
24
- success: (appState: AppState) => void,
25
- error: (error: Object) => void,
26
- ) => void;
27
-
28
- // Events
29
- +addListener: (eventName: string) => void;
30
- +removeListeners: (count: number) => void;
31
- }
32
-
33
- export default (TurboModuleRegistry.getEnforcing<Spec>('AppState'): Spec);
11
+ export * from '../../src/private/specs/modules/NativeAppState';
12
+ import NativeAppState from '../../src/private/specs/modules/NativeAppState';
13
+ export default NativeAppState;
@@ -177,7 +177,7 @@ function updateErrorWithErrorData(
177
177
  let NativeModules: {[moduleName: string]: $FlowFixMe, ...} = {};
178
178
  if (global.nativeModuleProxy) {
179
179
  NativeModules = global.nativeModuleProxy;
180
- } else if (!global.nativeExtensions) {
180
+ } else {
181
181
  const bridgeConfig = global.__fbBatchedBridgeConfig;
182
182
  invariant(
183
183
  bridgeConfig,
@@ -57,10 +57,7 @@ class Blob {
57
57
  * Currently we only support creating Blobs from other Blobs.
58
58
  * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob
59
59
  */
60
- constructor(
61
- parts: Array<$ArrayBufferView | ArrayBuffer | Blob | string> = [],
62
- options?: BlobOptions,
63
- ) {
60
+ constructor(parts: Array<Blob | string> = [], options?: BlobOptions) {
64
61
  const BlobManager = require('./BlobManager');
65
62
  this.data = BlobManager.createFromParts(parts, options).data;
66
63
  }
@@ -11,7 +11,6 @@
11
11
  import type {BlobCollector, BlobData, BlobOptions} from './BlobTypes';
12
12
 
13
13
  import NativeBlobModule from './NativeBlobModule';
14
- import {fromByteArray} from 'base64-js';
15
14
  import invariant from 'invariant';
16
15
 
17
16
  const Blob = require('./Blob');
@@ -60,7 +59,7 @@ class BlobManager {
60
59
  * Create blob from existing array of blobs.
61
60
  */
62
61
  static createFromParts(
63
- parts: Array<$ArrayBufferView | ArrayBuffer | Blob | string>,
62
+ parts: Array<Blob | string>,
64
63
  options?: BlobOptions,
65
64
  ): Blob {
66
65
  invariant(NativeBlobModule, 'NativeBlobModule is available.');
@@ -68,12 +67,11 @@ class BlobManager {
68
67
  const blobId = uuidv4();
69
68
  const items = parts.map(part => {
70
69
  if (part instanceof ArrayBuffer || ArrayBuffer.isView(part)) {
71
- return {
72
- // $FlowFixMe[incompatible-cast]
73
- data: fromByteArray(new Uint8Array((part: ArrayBuffer))),
74
- type: 'string',
75
- };
76
- } else if (part instanceof Blob) {
70
+ throw new Error(
71
+ "Creating blobs from 'ArrayBuffer' and 'ArrayBufferView' are not supported",
72
+ );
73
+ }
74
+ if (part instanceof Blob) {
77
75
  return {
78
76
  data: part.data,
79
77
  type: 'blob',
@@ -23,7 +23,7 @@ class File extends Blob {
23
23
  * Constructor for JS consumers.
24
24
  */
25
25
  constructor(
26
- parts: Array<$ArrayBufferView | ArrayBuffer | Blob | string>,
26
+ parts: Array<Blob | string>,
27
27
  name: string,
28
28
  options?: BlobOptions,
29
29
  ) {
@@ -4,56 +4,10 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- import type {TurboModule} from '../TurboModule/RCTExport';
12
-
13
- import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
14
-
15
- export interface Spec extends TurboModule {
16
- +getConstants: () => {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|};
17
- +addNetworkingHandler: () => void;
18
- +addWebSocketHandler: (id: number) => void;
19
- +removeWebSocketHandler: (id: number) => void;
20
- +sendOverSocket: (blob: Object, socketID: number) => void;
21
- +createFromParts: (parts: Array<Object>, withId: string) => void;
22
- +release: (blobId: string) => void;
23
- }
24
-
25
- const NativeModule = TurboModuleRegistry.get<Spec>('BlobModule');
26
-
27
- let constants = null;
28
- let NativeBlobModule = null;
29
-
30
- if (NativeModule != null) {
31
- NativeBlobModule = {
32
- getConstants(): {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|} {
33
- if (constants == null) {
34
- constants = NativeModule.getConstants();
35
- }
36
- return constants;
37
- },
38
- addNetworkingHandler(): void {
39
- NativeModule.addNetworkingHandler();
40
- },
41
- addWebSocketHandler(id: number): void {
42
- NativeModule.addWebSocketHandler(id);
43
- },
44
- removeWebSocketHandler(id: number): void {
45
- NativeModule.removeWebSocketHandler(id);
46
- },
47
- sendOverSocket(blob: Object, socketID: number): void {
48
- NativeModule.sendOverSocket(blob, socketID);
49
- },
50
- createFromParts(parts: Array<Object>, withId: string): void {
51
- NativeModule.createFromParts(parts, withId);
52
- },
53
- release(blobId: string): void {
54
- NativeModule.release(blobId);
55
- },
56
- };
57
- }
58
-
59
- export default (NativeBlobModule: ?Spec);
11
+ export * from '../../src/private/specs/modules/NativeBlobModule';
12
+ import NativeBlobModule from '../../src/private/specs/modules/NativeBlobModule';
13
+ export default NativeBlobModule;
@@ -4,19 +4,10 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
- import type {TurboModule} from '../TurboModule/RCTExport';
12
-
13
- import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
14
-
15
- export interface Spec extends TurboModule {
16
- +readAsDataURL: (data: Object) => Promise<string>;
17
- +readAsText: (data: Object, encoding: string) => Promise<string>;
18
- }
19
-
20
- export default (TurboModuleRegistry.getEnforcing<Spec>(
21
- 'FileReaderModule',
22
- ): Spec);
11
+ export * from '../../src/private/specs/modules/NativeFileReaderModule';
12
+ import NativeFileReaderModule from '../../src/private/specs/modules/NativeFileReaderModule';
13
+ export default NativeFileReaderModule;