@office-iss/react-native-win32 0.79.1 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/.flowconfig +10 -3
  2. package/CHANGELOG.json +117 -24
  3. package/CHANGELOG.md +49 -14
  4. package/IntegrationTests/ImageCachePolicyTest.js +1 -1
  5. package/IntegrationTests/LayoutEventsTest.js +1 -4
  6. package/Libraries/Alert/Alert.d.ts +4 -1
  7. package/Libraries/Alert/Alert.js +3 -0
  8. package/Libraries/Alert/RCTAlertManager.js +17 -0
  9. package/Libraries/Animated/Animated.js.flow +1 -3
  10. package/Libraries/Animated/AnimatedEvent.js +4 -3
  11. package/Libraries/Animated/AnimatedExports.js +2 -2
  12. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  13. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  14. package/Libraries/Animated/Easing.js +13 -15
  15. package/Libraries/Animated/animations/Animation.js +8 -4
  16. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  17. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  18. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  19. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  20. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  22. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  23. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  24. package/Libraries/AppState/AppState.js +7 -2
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  26. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  27. package/Libraries/Blob/BlobManager.js +1 -0
  28. package/Libraries/Blob/FileReader.js +219 -8
  29. package/Libraries/Blob/URL.js +37 -12
  30. package/Libraries/Blob/URLSearchParams.js +106 -31
  31. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
  34. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  35. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  36. package/Libraries/Components/Button.js +1 -1
  37. package/Libraries/Components/Button.win32.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  39. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  43. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  45. package/Libraries/Components/Pressable/Pressable.js +20 -4
  46. package/Libraries/Components/Pressable/Pressable.win32.js +20 -4
  47. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  48. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  49. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  50. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  51. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  52. package/Libraries/Components/StaticRenderer.js +1 -1
  53. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  54. package/Libraries/Components/Switch/Switch.js +8 -4
  55. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  57. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +2 -1
  58. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  59. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  60. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  61. package/Libraries/Components/TextInput/TextInput.flow.win32.js +1208 -0
  62. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  63. package/Libraries/Components/TextInput/TextInput.win32.js +89 -1059
  64. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  65. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  66. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  67. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  68. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  69. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +4 -32
  70. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  71. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +2 -1
  72. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  73. package/Libraries/Components/Touchable/Touchable.js +5 -5
  74. package/Libraries/Components/Touchable/Touchable.win32.js +5 -5
  75. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  76. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  77. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  78. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +6 -6
  79. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  80. package/Libraries/Components/View/View.js +18 -21
  81. package/Libraries/Components/View/View.win32.js +21 -24
  82. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  83. package/Libraries/Components/View/ViewAccessibility.win32.js +9 -1
  84. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +49 -3
  86. package/Libraries/Core/ReactNativeVersion.js +1 -1
  87. package/Libraries/Core/setUpReactDevTools.js +5 -5
  88. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  89. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  90. package/Libraries/Image/AssetSourceResolver.js +17 -4
  91. package/Libraries/Image/Image.d.ts +26 -10
  92. package/Libraries/Image/Image.js +17 -0
  93. package/Libraries/Image/Image.js.flow +5 -5
  94. package/Libraries/Image/ImageBackground.js +2 -0
  95. package/Libraries/Image/ImageInjection.js +1 -1
  96. package/Libraries/Image/ImageProps.js +22 -17
  97. package/Libraries/Image/ImageSource.js +3 -1
  98. package/Libraries/Image/ImageSourceUtils.js +4 -2
  99. package/Libraries/Image/ImageTypes.flow.js +1 -1
  100. package/Libraries/Image/Tests/ImageWin32Test.d.ts +2 -1
  101. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  102. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  103. package/Libraries/Interaction/InteractionManager.js +1 -1
  104. package/Libraries/Interaction/PanResponder.js +3 -3
  105. package/Libraries/Interaction/TaskQueue.js +1 -0
  106. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  107. package/Libraries/Linking/Linking.js +1 -1
  108. package/Libraries/Lists/FlatList.d.ts +2 -2
  109. package/Libraries/Lists/FlatList.js +8 -11
  110. package/Libraries/Lists/SectionList.js +39 -42
  111. package/Libraries/Lists/SectionListModern.js +25 -34
  112. package/Libraries/Lists/VirtualizedList.js +1 -0
  113. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  114. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  115. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  116. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +140 -0
  117. package/Libraries/Modal/Modal.js +33 -7
  118. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  119. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  120. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  121. package/Libraries/NativeComponent/BaseViewConfig.win32.js +1 -0
  122. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  123. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  124. package/Libraries/Network/RCTNetworking.android.js +1 -1
  125. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  126. package/Libraries/Network/RCTNetworking.js +17 -0
  127. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  128. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  129. package/Libraries/Network/XMLHttpRequest.js +781 -10
  130. package/Libraries/Performance/Systrace.js +7 -7
  131. package/Libraries/Pressability/Pressability.js +1 -1
  132. package/Libraries/Pressability/Pressability.win32.js +1 -1
  133. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  134. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  135. package/Libraries/ReactNative/AppRegistry.js +2 -322
  136. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  137. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  138. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  139. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  140. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  141. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  142. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  143. package/Libraries/ReactNative/renderApplication.js +9 -0
  144. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  145. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  146. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  147. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  148. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  149. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  150. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  151. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  152. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  153. package/Libraries/Settings/Settings.ios.js +1 -0
  154. package/Libraries/Settings/Settings.js +13 -19
  155. package/Libraries/Settings/Settings.win32.js +19 -20
  156. package/Libraries/Settings/SettingsFallback.js +33 -0
  157. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  158. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  159. package/Libraries/StyleSheet/Rect.js +1 -0
  160. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  161. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  162. package/Libraries/StyleSheet/{StyleSheet.win32.js → StyleSheetExports.js} +2 -151
  163. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  166. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  167. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  168. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  169. package/Libraries/Text/Text.d.ts +2 -5
  170. package/Libraries/Text/Text.js +3 -3
  171. package/Libraries/Text/Text.win32.js +3 -3
  172. package/Libraries/Text/TextNativeComponent.js +0 -4
  173. package/Libraries/Text/TextNativeComponent.win32.js +0 -4
  174. package/Libraries/Text/TextProps.js +5 -33
  175. package/Libraries/Text/TextProps.win32.js +5 -30
  176. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  177. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  178. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  179. package/Libraries/Types/CoreEventTypes.js +1 -1
  180. package/Libraries/Types/CoreEventTypes.win32.js +1 -1
  181. package/Libraries/Utilities/Appearance.js +2 -0
  182. package/Libraries/Utilities/BackHandler.js +17 -0
  183. package/Libraries/Utilities/DeviceInfo.js +2 -0
  184. package/Libraries/Utilities/Dimensions.js +1 -1
  185. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  186. package/Libraries/Utilities/Platform.js +17 -0
  187. package/Libraries/Utilities/PlatformTypes.js +11 -3
  188. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  189. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  190. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  191. package/Libraries/WebSocket/WebSocket.js +313 -8
  192. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  193. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  194. package/flow/global.js +1 -0
  195. package/index.js +51 -331
  196. package/index.win32.js +71 -352
  197. package/interface.js +0 -4
  198. package/jest/resolver.js +31 -0
  199. package/overrides.json +45 -47
  200. package/package.json +25 -25
  201. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  202. package/src/private/animated/NativeAnimatedHelper.win32.js +21 -8
  203. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  204. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  205. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  206. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  207. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  208. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  209. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  210. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  211. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  212. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  213. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  214. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  215. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  216. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  217. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  218. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  219. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  220. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  221. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  222. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  223. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  224. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  225. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  226. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.win32.js +1 -1
  227. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  228. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  229. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  230. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  231. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +9 -1
  232. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  233. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  234. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  235. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  236. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  237. package/src/private/styles/composeStyles.js +12 -5
  238. package/src/private/types/HostComponent.js +1 -1
  239. package/src/private/types/HostInstance.js +67 -1
  240. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  241. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  242. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  243. package/src/private/webapis/performance/Performance.js +1 -3
  244. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  245. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  246. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  247. package/src/types/globals.d.ts +42 -0
  248. package/src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx +7 -7
  249. package/src-win/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +3 -3
  250. package/src-win/Libraries/Image/Tests/ImageWin32Test.tsx +1 -1
  251. package/src-win/Libraries/Text/Text.d.ts +2 -5
  252. package/types/index.d.ts +6 -3
  253. package/types/public/ReactNativeTypes.d.ts +2 -2
  254. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  255. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  256. package/Libraries/Blob/FileReader_new.js +0 -231
  257. package/Libraries/Blob/FileReader_old.js +0 -186
  258. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  259. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  260. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  261. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  262. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  263. package/Libraries/Events/CustomEvent.js +0 -32
  264. package/Libraries/Events/EventPolyfill.js +0 -239
  265. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  266. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  267. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  268. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  269. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  270. package/Libraries/NewAppScreen/components/Header.js +0 -77
  271. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  272. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  273. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  274. package/Libraries/NewAppScreen/components/logo.png +0 -0
  275. package/Libraries/NewAppScreen/index.js +0 -25
  276. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  277. package/Libraries/Utilities/DeviceInfo.win32.js +0 -19
  278. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  279. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  280. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  281. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  282. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  283. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  284. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  285. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  286. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  287. package/flow/jest.js +0 -1287
  288. package/jest/__tests__/setup-test.js +0 -18
  289. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  290. package/src/private/utilities/ensureInstance.js +0 -21
  291. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  292. package/types/modules/LaunchScreen.d.ts +0 -18
  293. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  294. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -1,186 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow
8
- * @format
9
- */
10
-
11
- import type Blob from './Blob';
12
-
13
- import NativeFileReaderModule from './NativeFileReaderModule';
14
- import {toByteArray} from 'base64-js';
15
- import EventTarget from 'event-target-shim';
16
-
17
- type ReadyState =
18
- | 0 // EMPTY
19
- | 1 // LOADING
20
- | 2; // DONE
21
-
22
- type ReaderResult = string | ArrayBuffer;
23
-
24
- const READER_EVENTS = [
25
- 'abort',
26
- 'error',
27
- 'load',
28
- 'loadstart',
29
- 'loadend',
30
- 'progress',
31
- ];
32
-
33
- const EMPTY = 0 as const;
34
- const LOADING = 1 as const;
35
- const DONE = 2 as const;
36
-
37
- class FileReader extends (EventTarget(...READER_EVENTS): typeof EventTarget) {
38
- static EMPTY: 0 = EMPTY;
39
- static LOADING: 1 = LOADING;
40
- static DONE: 2 = DONE;
41
-
42
- EMPTY: 0 = EMPTY;
43
- LOADING: 1 = LOADING;
44
- DONE: 2 = DONE;
45
-
46
- _readyState: ReadyState;
47
- _error: ?Error;
48
- _result: ?ReaderResult;
49
- _aborted: boolean = false;
50
-
51
- constructor() {
52
- super();
53
- this._reset();
54
- }
55
-
56
- _reset(): void {
57
- this._readyState = EMPTY;
58
- this._error = null;
59
- this._result = null;
60
- }
61
-
62
- _setReadyState(newState: ReadyState) {
63
- this._readyState = newState;
64
- this.dispatchEvent({type: 'readystatechange'});
65
- if (newState === DONE) {
66
- if (this._aborted) {
67
- this.dispatchEvent({type: 'abort'});
68
- } else if (this._error) {
69
- this.dispatchEvent({type: 'error'});
70
- } else {
71
- this.dispatchEvent({type: 'load'});
72
- }
73
- this.dispatchEvent({type: 'loadend'});
74
- }
75
- }
76
-
77
- readAsArrayBuffer(blob: ?Blob): void {
78
- this._aborted = false;
79
-
80
- if (blob == null) {
81
- throw new TypeError(
82
- "Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'",
83
- );
84
- }
85
-
86
- NativeFileReaderModule.readAsDataURL(blob.data).then(
87
- (text: string) => {
88
- if (this._aborted) {
89
- return;
90
- }
91
-
92
- const base64 = text.split(',')[1];
93
- const typedArray = toByteArray(base64);
94
-
95
- this._result = typedArray.buffer;
96
- this._setReadyState(DONE);
97
- },
98
- error => {
99
- if (this._aborted) {
100
- return;
101
- }
102
- this._error = error;
103
- this._setReadyState(DONE);
104
- },
105
- );
106
- }
107
-
108
- readAsDataURL(blob: ?Blob): void {
109
- this._aborted = false;
110
-
111
- if (blob == null) {
112
- throw new TypeError(
113
- "Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'",
114
- );
115
- }
116
-
117
- NativeFileReaderModule.readAsDataURL(blob.data).then(
118
- (text: string) => {
119
- if (this._aborted) {
120
- return;
121
- }
122
- this._result = text;
123
- this._setReadyState(DONE);
124
- },
125
- error => {
126
- if (this._aborted) {
127
- return;
128
- }
129
- this._error = error;
130
- this._setReadyState(DONE);
131
- },
132
- );
133
- }
134
-
135
- readAsText(blob: ?Blob, encoding: string = 'UTF-8'): void {
136
- this._aborted = false;
137
-
138
- if (blob == null) {
139
- throw new TypeError(
140
- "Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'",
141
- );
142
- }
143
-
144
- NativeFileReaderModule.readAsText(blob.data, encoding).then(
145
- (text: string) => {
146
- if (this._aborted) {
147
- return;
148
- }
149
- this._result = text;
150
- this._setReadyState(DONE);
151
- },
152
- error => {
153
- if (this._aborted) {
154
- return;
155
- }
156
- this._error = error;
157
- this._setReadyState(DONE);
158
- },
159
- );
160
- }
161
-
162
- abort() {
163
- this._aborted = true;
164
- // only call onreadystatechange if there is something to abort, as per spec
165
- if (this._readyState !== EMPTY && this._readyState !== DONE) {
166
- this._reset();
167
- this._setReadyState(DONE);
168
- }
169
- // Reset again after, in case modified in handler
170
- this._reset();
171
- }
172
-
173
- get readyState(): ReadyState {
174
- return this._readyState;
175
- }
176
-
177
- get error(): ?Error {
178
- return this._error;
179
- }
180
-
181
- get result(): ?ReaderResult {
182
- return this._result;
183
- }
184
- }
185
-
186
- export default FileReader;
@@ -1,20 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict
8
- * @format
9
- */
10
-
11
- const FileReaderModule = {
12
- async readAsText(): Promise<string> {
13
- return '';
14
- },
15
- async readAsDataURL(): Promise<string> {
16
- return 'data:text/plain;base64,NDI=';
17
- },
18
- };
19
-
20
- module.exports = FileReaderModule;
@@ -1,32 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict-local
9
- */
10
-
11
- 'use strict';
12
-
13
- import type {HostComponent} from '../../../../src/private/types/HostComponent';
14
-
15
- import requireNativeComponent from '../../../ReactNative/requireNativeComponent';
16
- import * as React from 'react';
17
-
18
- const RCTRefreshControl: HostComponent<{}> = requireNativeComponent<{}>(
19
- 'RCTRefreshControl',
20
- );
21
-
22
- class RefreshControlMock extends React.Component<{...}> {
23
- static latestRef: ?RefreshControlMock;
24
- componentDidMount() {
25
- RefreshControlMock.latestRef = this;
26
- }
27
- render(): React.MixedElement {
28
- return <RCTRefreshControl />;
29
- }
30
- }
31
-
32
- module.exports = RefreshControlMock;
@@ -1,33 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- */
9
-
10
- // This mock only provides short-circuited methods of applyWithGuard and guard.
11
- // A lot of modules rely on these two functions. This mock relieves their tests
12
- // from depending on the real ErrorUtils module. If you need real error handling
13
- // don't use this mock.
14
- 'use strict';
15
-
16
- function execute(fun, context, args) {
17
- return fun.apply(context, args);
18
- }
19
-
20
- function reportError(error) {
21
- throw error;
22
- }
23
-
24
- const ErrorUtils = {
25
- apply: jest.fn(execute),
26
- applyWithGuard: jest.fn(execute),
27
- guard: jest.fn(callback => callback),
28
- inGuard: jest.fn().mockReturnValue(true),
29
- reportError: jest.fn(reportError),
30
- setGlobalHandler: jest.fn(),
31
- };
32
-
33
- module.exports = ErrorUtils;
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import typeof NativeExceptionsManager from '../NativeExceptionsManager';
13
-
14
- export default ({
15
- reportFatalException: jest.fn(),
16
- reportSoftException: jest.fn(),
17
- dismissRedbox: jest.fn(),
18
- reportException: jest.fn(),
19
- }: NativeExceptionsManager);
@@ -1,49 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict-local
9
- */
10
-
11
- import type {
12
- EventSubscription,
13
- IEventEmitter,
14
- } from '../../vendor/emitter/EventEmitter';
15
-
16
- import RCTDeviceEventEmitter from '../RCTDeviceEventEmitter';
17
-
18
- /**
19
- * Mock `NativeEventEmitter` to ignore Native Modules.
20
- */
21
- export default class NativeEventEmitter<
22
- TEventToArgsMap: $ReadOnly<Record<string, $ReadOnlyArray<mixed>>>,
23
- > implements IEventEmitter<TEventToArgsMap>
24
- {
25
- addListener<TEvent: $Keys<TEventToArgsMap>>(
26
- eventType: TEvent,
27
- listener: (...args: $ElementType<TEventToArgsMap, TEvent>) => mixed,
28
- context?: mixed,
29
- ): EventSubscription {
30
- return RCTDeviceEventEmitter.addListener(eventType, listener, context);
31
- }
32
-
33
- emit<TEvent: $Keys<TEventToArgsMap>>(
34
- eventType: TEvent,
35
- ...args: $ElementType<TEventToArgsMap, TEvent>
36
- ): void {
37
- RCTDeviceEventEmitter.emit(eventType, ...args);
38
- }
39
-
40
- removeAllListeners<TEvent: $Keys<TEventToArgsMap>>(
41
- eventType?: ?TEvent,
42
- ): void {
43
- RCTDeviceEventEmitter.removeAllListeners(eventType);
44
- }
45
-
46
- listenerCount<TEvent: $Keys<TEventToArgsMap>>(eventType: TEvent): number {
47
- return RCTDeviceEventEmitter.listenerCount(eventType);
48
- }
49
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict-local
9
- */
10
-
11
- // Make sure global Event is defined
12
- import EventPolyfill from './EventPolyfill';
13
-
14
- type CustomEvent$Options = $ReadOnly<{
15
- bubbles?: boolean,
16
- cancelable?: boolean,
17
- composed?: boolean,
18
- detail?: {...},
19
- }>;
20
-
21
- class CustomEvent extends EventPolyfill {
22
- detail: ?{...};
23
-
24
- constructor(typeArg: string, options: CustomEvent$Options) {
25
- const {bubbles, cancelable, composed} = options;
26
- super(typeArg, {bubbles, cancelable, composed});
27
-
28
- this.detail = options.detail; // this would correspond to `NativeEvent` in NativeSyntheticEvent
29
- }
30
- }
31
-
32
- export default CustomEvent;
@@ -1,239 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict-local
9
- */
10
-
11
- // https://dom.spec.whatwg.org/#dictdef-eventinit
12
- type Event$Init = {
13
- bubbles?: boolean,
14
- cancelable?: boolean,
15
- composed?: boolean,
16
- /** Non-standard. See `composed` instead. */
17
- scoped?: boolean,
18
- ...
19
- };
20
-
21
- /**
22
- * This is a copy of the Event interface defined in Flow:
23
- * https://github.com/facebook/flow/blob/741104e69c43057ebd32804dd6bcc1b5e97548ea/lib/dom.js
24
- * which is itself a faithful interface of the W3 spec:
25
- * https://dom.spec.whatwg.org/#interface-event
26
- *
27
- * Since Flow assumes that Event is provided and is on the global object,
28
- * we must provide an implementation of Event for CustomEvent (and future
29
- * alignment of React Native's event system with the W3 spec).
30
- */
31
- interface IEvent {
32
- constructor(type: string, eventInitDict?: Event$Init): void;
33
- /**
34
- * Returns the type of event, e.g. "click", "hashchange", or "submit".
35
- */
36
- +type: string;
37
- /**
38
- * Returns the object to which event is dispatched (its target).
39
- */
40
- +target: EventTarget; // TODO: nullable
41
- /** @deprecated */
42
- +srcElement: Element; // TODO: nullable
43
- /**
44
- * Returns the object whose event listener's callback is currently being invoked.
45
- */
46
- +currentTarget: EventTarget; // TODO: nullable
47
- /**
48
- * Returns the invocation target objects of event's path (objects on which
49
- * listeners will be invoked), except for any nodes in shadow trees of which
50
- * the shadow root's mode is "closed" that are not reachable from event's
51
- * currentTarget.
52
- */
53
- composedPath(): Array<EventTarget>;
54
-
55
- +NONE: number;
56
- +AT_TARGET: number;
57
- +BUBBLING_PHASE: number;
58
- +CAPTURING_PHASE: number;
59
- /**
60
- * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET,
61
- * and BUBBLING_PHASE.
62
- */
63
- +eventPhase: number;
64
-
65
- /**
66
- * When dispatched in a tree, invoking this method prevents event from reaching
67
- * any objects other than the current object.
68
- */
69
- stopPropagation(): void;
70
- /**
71
- * Invoking this method prevents event from reaching any registered event
72
- * listeners after the current one finishes running and, when dispatched in a
73
- * tree, also prevents event from reaching any other objects.
74
- */
75
- stopImmediatePropagation(): void;
76
-
77
- /**
78
- * Returns true or false depending on how event was initialized. True if
79
- * event goes through its target's ancestors in reverse tree order, and
80
- * false otherwise.
81
- */
82
- +bubbles: boolean;
83
- /**
84
- * Returns true or false depending on how event was initialized. Its
85
- * return value does not always carry meaning, but true can indicate
86
- * that part of the operation during which event was dispatched, can
87
- * be canceled by invoking the preventDefault() method.
88
- */
89
- +cancelable: boolean;
90
- // returnValue: boolean; // legacy, and some subclasses still define it as a string!
91
- /**
92
- * If invoked when the cancelable attribute value is true, and while
93
- * executing a listener for the event with passive set to false, signals to
94
- * the operation that caused event to be dispatched that it needs to be
95
- * canceled.
96
- */
97
- preventDefault(): void;
98
- /**
99
- * Returns true if preventDefault() was invoked successfully to indicate
100
- * cancelation, and false otherwise.
101
- */
102
- +defaultPrevented: boolean;
103
- /**
104
- * Returns true or false depending on how event was initialized. True if
105
- * event invokes listeners past a ShadowRoot node that is the root of its
106
- * target, and false otherwise.
107
- */
108
- +composed: boolean;
109
-
110
- /**
111
- * Returns true if event was dispatched by the user agent, and false otherwise.
112
- */
113
- +isTrusted: boolean;
114
- /**
115
- * Returns the event's timestamp as the number of milliseconds measured relative
116
- * to the time origin.
117
- */
118
- +timeStamp: number;
119
-
120
- /** Non-standard. See Event.prototype.composedPath */
121
- +deepPath?: () => EventTarget[];
122
- /** Non-standard. See Event.prototype.composed */
123
- +scoped: boolean;
124
-
125
- /**
126
- * @deprecated
127
- */
128
- initEvent(type: string, bubbles: boolean, cancelable: boolean): void;
129
- }
130
-
131
- class EventPolyfill implements IEvent {
132
- type: string;
133
- bubbles: boolean;
134
- cancelable: boolean;
135
- composed: boolean;
136
- // Non-standard. See `composed` instead.
137
- scoped: boolean;
138
- isTrusted: boolean;
139
- defaultPrevented: boolean;
140
- timeStamp: number;
141
-
142
- // https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
143
- NONE: number;
144
- AT_TARGET: number;
145
- BUBBLING_PHASE: number;
146
- CAPTURING_PHASE: number;
147
-
148
- eventPhase: number;
149
-
150
- currentTarget: EventTarget; // TODO: nullable
151
- target: EventTarget; // TODO: nullable
152
- /** @deprecated */
153
- srcElement: Element; // TODO: nullable
154
-
155
- // React Native-specific: proxy data to a NativeSyntheticEvent when
156
- // certain methods are called.
157
- // NativeSyntheticEvent will also have a reference to this instance -
158
- // it is circular - and both classes use this reference to keep
159
- // data with the other in sync.
160
- _syntheticEvent: mixed;
161
-
162
- constructor(type: string, eventInitDict?: Event$Init) {
163
- this.type = type;
164
- this.bubbles = !!(eventInitDict?.bubbles || false);
165
- this.cancelable = !!(eventInitDict?.cancelable || false);
166
- this.composed = !!(eventInitDict?.composed || false);
167
- this.scoped = !!(eventInitDict?.scoped || false);
168
-
169
- // TODO: somehow guarantee that only "private" instantiations of Event
170
- // can set this to true
171
- this.isTrusted = false;
172
-
173
- // TODO: in the future we'll want to make sure this has the same
174
- // time-basis as events originating from native
175
- this.timeStamp = Date.now();
176
-
177
- this.defaultPrevented = false;
178
-
179
- // https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
180
- this.NONE = 0;
181
- this.AT_TARGET = 1;
182
- this.BUBBLING_PHASE = 2;
183
- this.CAPTURING_PHASE = 3;
184
- this.eventPhase = this.NONE;
185
-
186
- // $FlowFixMe
187
- this.currentTarget = null;
188
- // $FlowFixMe
189
- this.target = null;
190
- // $FlowFixMe
191
- this.srcElement = null;
192
- }
193
-
194
- composedPath(): Array<EventTarget> {
195
- throw new Error('TODO: not yet implemented');
196
- }
197
-
198
- preventDefault(): void {
199
- this.defaultPrevented = true;
200
-
201
- if (this._syntheticEvent != null) {
202
- // $FlowFixMe
203
- this._syntheticEvent.preventDefault();
204
- }
205
- }
206
-
207
- initEvent(type: string, bubbles: boolean, cancelable: boolean): void {
208
- throw new Error(
209
- 'TODO: not yet implemented. This method is also deprecated.',
210
- );
211
- }
212
-
213
- stopImmediatePropagation(): void {
214
- throw new Error('TODO: not yet implemented');
215
- }
216
-
217
- stopPropagation(): void {
218
- if (this._syntheticEvent != null) {
219
- // $FlowFixMe
220
- this._syntheticEvent.stopPropagation();
221
- }
222
- }
223
-
224
- setSyntheticEvent(value: mixed): void {
225
- this._syntheticEvent = value;
226
- }
227
- }
228
-
229
- // Assertion magic for polyfill follows.
230
- declare var checkEvent: Event; // eslint-disable-line no-unused-vars
231
-
232
- /*::
233
- // This can be a strict mode error at runtime so put it in a Flow comment.
234
- (checkEvent: IEvent);
235
- */
236
-
237
- global.Event = EventPolyfill;
238
-
239
- export default EventPolyfill;