@office-iss/react-native-win32 0.0.0-canary.290 → 0.0.0-canary.292

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 (128) hide show
  1. package/.flowconfig +1 -1
  2. package/CHANGELOG.json +31 -1
  3. package/CHANGELOG.md +20 -4
  4. package/Libraries/Alert/RCTAlertManager.js +17 -0
  5. package/Libraries/Animated/AnimatedEvent.js +4 -3
  6. package/Libraries/Animated/AnimatedExports.js.flow +2 -0
  7. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  8. package/Libraries/Animated/components/AnimatedScrollView.js +48 -43
  9. package/Libraries/Animated/nodes/AnimatedValue.js +2 -1
  10. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  11. package/Libraries/Blob/FileReader.js +219 -8
  12. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  13. package/Libraries/Components/Button.js +1 -1
  14. package/Libraries/Components/Button.win32.js +1 -1
  15. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  16. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +15 -0
  17. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  18. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  19. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  20. package/Libraries/Components/Keyboard/Keyboard.js +4 -2
  21. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  22. package/Libraries/Components/Pressable/Pressable.js +2 -0
  23. package/Libraries/Components/Pressable/Pressable.win32.js +2 -0
  24. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +12 -2
  25. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  26. package/Libraries/Components/ScrollView/ScrollView.js +128 -116
  27. package/Libraries/Components/StaticRenderer.js +1 -1
  28. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -1
  29. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -4
  30. package/Libraries/Components/TextInput/TextInput.flow.js +35 -43
  31. package/Libraries/Components/TextInput/TextInput.flow.win32.js +1184 -0
  32. package/Libraries/Components/TextInput/TextInput.js +65 -1005
  33. package/Libraries/Components/TextInput/TextInput.win32.js +67 -1037
  34. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +13 -0
  35. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  36. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  37. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +4 -32
  38. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  39. package/Libraries/Components/Touchable/Touchable.js +5 -5
  40. package/Libraries/Components/Touchable/Touchable.win32.js +5 -5
  41. package/Libraries/Components/Touchable/TouchableBounce.js +12 -6
  42. package/Libraries/Components/Touchable/TouchableHighlight.js +9 -6
  43. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +4 -4
  44. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +4 -4
  45. package/Libraries/Components/Touchable/TouchableOpacity.js +11 -5
  46. package/Libraries/Components/View/ViewAccessibility.js +7 -0
  47. package/Libraries/Components/View/ViewAccessibility.win32.js +7 -0
  48. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  49. package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
  50. package/Libraries/Core/ReactNativeVersion.js +1 -1
  51. package/Libraries/EventEmitter/NativeEventEmitter.js +4 -1
  52. package/Libraries/Image/Image.js +17 -0
  53. package/Libraries/Image/Image.js.flow +2 -2
  54. package/Libraries/Image/ImageInjection.js +1 -1
  55. package/Libraries/Image/ImageProps.js +5 -4
  56. package/Libraries/Image/ImageTypes.flow.js +1 -1
  57. package/Libraries/Lists/FlatList.js +1 -1
  58. package/Libraries/Lists/SectionList.js +1 -1
  59. package/Libraries/Lists/SectionListModern.js +2 -1
  60. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  61. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +140 -0
  62. package/Libraries/Modal/Modal.js +3 -3
  63. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  64. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  65. package/Libraries/Network/RCTNetworking.js +17 -0
  66. package/Libraries/Network/XMLHttpRequest.js +781 -10
  67. package/Libraries/NewAppScreen/components/DebugInstructions.js +1 -1
  68. package/Libraries/NewAppScreen/components/Header.js +1 -1
  69. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  70. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  71. package/Libraries/NewAppScreen/components/ReloadInstructions.js +1 -1
  72. package/Libraries/Performance/Systrace.js +7 -7
  73. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -2
  74. package/Libraries/Settings/Settings.js +13 -19
  75. package/Libraries/Settings/Settings.win32.js +19 -20
  76. package/Libraries/Settings/SettingsFallback.js +33 -0
  77. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  78. package/Libraries/StyleSheet/Rect.js +1 -0
  79. package/Libraries/StyleSheet/StyleSheet.js.flow +3 -3
  80. package/Libraries/StyleSheet/StyleSheetTypes.js +28 -30
  81. package/Libraries/StyleSheet/flattenStyle.js +7 -1
  82. package/Libraries/Text/Text.js +3 -3
  83. package/Libraries/Text/Text.win32.js +3 -3
  84. package/Libraries/Text/TextProps.js +1 -1
  85. package/Libraries/Text/TextProps.win32.js +1 -1
  86. package/Libraries/Utilities/Appearance.js +2 -0
  87. package/Libraries/Utilities/BackHandler.js +17 -0
  88. package/Libraries/Utilities/Platform.js +17 -0
  89. package/Libraries/Utilities/PlatformTypes.js +2 -0
  90. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  91. package/Libraries/WebSocket/WebSocket.js +313 -8
  92. package/flow/global.js +0 -2
  93. package/index.win32.js +5 -5
  94. package/overrides.json +29 -17
  95. package/package.json +12 -12
  96. package/src/private/animated/NativeAnimatedHelper.js +1 -1
  97. package/src/private/animated/NativeAnimatedHelper.win32.js +1 -1
  98. package/src/private/animated/createAnimatedPropsHook.js +2 -27
  99. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  100. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  101. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  102. package/src/private/featureflags/ReactNativeFeatureFlags.js +21 -32
  103. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -6
  104. package/src/private/inspector/BorderBox.js +1 -1
  105. package/src/private/inspector/BoxInspector.js +1 -1
  106. package/src/private/inspector/ElementBox.js +1 -1
  107. package/src/private/inspector/ElementProperties.js +1 -1
  108. package/src/private/inspector/Inspector.js +2 -2
  109. package/src/private/inspector/InspectorOverlay.js +1 -1
  110. package/src/private/inspector/InspectorPanel.js +1 -1
  111. package/src/private/inspector/NetworkOverlay.js +1 -1
  112. package/src/private/inspector/PerformanceOverlay.js +1 -1
  113. package/src/private/inspector/StyleInspector.js +1 -1
  114. package/src/private/types/HostComponent.js +1 -1
  115. package/src/private/types/HostInstance.js +10 -2
  116. package/src/private/webapis/performance/Performance.js +1 -3
  117. package/Libraries/Blob/FileReader_new.js +0 -231
  118. package/Libraries/Blob/FileReader_old.js +0 -186
  119. package/Libraries/Events/CustomEvent.js +0 -32
  120. package/Libraries/Events/EventPolyfill.js +0 -239
  121. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  122. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  123. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  124. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  125. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  126. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  127. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  128. package/src/types/third_party/event-target-shim.d.ts +0 -392
package/.flowconfig CHANGED
@@ -167,4 +167,4 @@ untyped-import
167
167
  untyped-type-import
168
168
 
169
169
  [version]
170
- ^0.266.1
170
+ ^0.267.0
package/CHANGELOG.json CHANGED
@@ -2,7 +2,37 @@
2
2
  "name": "@office-iss/react-native-win32",
3
3
  "entries": [
4
4
  {
5
- "date": "Fri, 20 Jun 2025 05:21:03 GMT",
5
+ "date": "Thu, 03 Jul 2025 05:23:40 GMT",
6
+ "version": "0.0.0-canary.292",
7
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.292",
8
+ "comments": {
9
+ "prerelease": [
10
+ {
11
+ "author": "satkh@microsoft.com",
12
+ "package": "@office-iss/react-native-win32",
13
+ "commit": "96e291820b36af670c743a204b4cb4103a012ce2",
14
+ "comment": "intergrate rn 0.80.0-nightly-20250414-70cdf12c4"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Sat, 21 Jun 2025 05:21:48 GMT",
21
+ "version": "0.0.0-canary.291",
22
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.291",
23
+ "comments": {
24
+ "prerelease": [
25
+ {
26
+ "author": "30809111+acoates-ms@users.noreply.github.com",
27
+ "package": "@office-iss/react-native-win32",
28
+ "commit": "43cb59d27c487257dca5d6b036755a18d5d72366",
29
+ "comment": "Remove usage of Animated in LogBox"
30
+ }
31
+ ]
32
+ }
33
+ },
34
+ {
35
+ "date": "Fri, 20 Jun 2025 05:21:53 GMT",
6
36
  "version": "0.0.0-canary.290",
7
37
  "tag": "@office-iss/react-native-win32_v0.0.0-canary.290",
8
38
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,17 +1,33 @@
1
1
  # Change Log - @office-iss/react-native-win32
2
2
 
3
- <!-- This log was last generated on Fri, 20 Jun 2025 05:21:03 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Thu, 03 Jul 2025 05:23:40 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## 0.0.0-canary.290
7
+ ## 0.0.0-canary.292
8
8
 
9
- Fri, 20 Jun 2025 05:21:03 GMT
9
+ Thu, 03 Jul 2025 05:23:40 GMT
10
10
 
11
11
  ### Changes
12
12
 
13
- - Integrate RN Nightly Build 0.80.0-nightly-20250331-398ac1f71 (kvineeth@microsoft.com)
13
+ - intergrate rn 0.80.0-nightly-20250414-70cdf12c4 (satkh@microsoft.com)
14
14
 
15
+ ## 0.0.0-canary.291
16
+
17
+ Sat, 21 Jun 2025 05:21:48 GMT
18
+
19
+ ### Changes
20
+
21
+ - Remove usage of Animated in LogBox (30809111+acoates-ms@users.noreply.github.com)
22
+
23
+ ## 0.0.0-canary.290
24
+
25
+ Fri, 20 Jun 2025 05:21:53 GMT
26
+
27
+ ### Changes
28
+
29
+ - Integrate RN Nightly Build 0.80.0-nightly-20250331-398ac1f71 (kvineeth@microsoft.com)
30
+
15
31
  ## 0.0.0-canary.289
16
32
 
17
33
  Thu, 19 Jun 2025 17:16:23 GMT
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ // NOTE: This file supports backwards compatibility of subpath (deep) imports
12
+ // from 'react-native' with platform-specific extensions. It can be deleted
13
+ // once we remove the "./*" mapping from package.json "exports".
14
+
15
+ import RCTAlertManager from './RCTAlertManager';
16
+
17
+ export default RCTAlertManager;
@@ -10,6 +10,7 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {NativeSyntheticEvent} from '../Types/CoreEventTypes';
13
14
  import type {PlatformConfig} from './AnimatedPlatformConfig';
14
15
 
15
16
  import NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper';
@@ -22,8 +23,8 @@ export type Mapping =
22
23
  | {[key: string]: Mapping, ...}
23
24
  | AnimatedValue
24
25
  | AnimatedValueXY;
25
- export type EventConfig = {
26
- listener?: ?Function,
26
+ export type EventConfig<T> = {
27
+ listener?: ?(NativeSyntheticEvent<T>) => mixed,
27
28
  useNativeDriver: boolean,
28
29
  platformConfig?: PlatformConfig,
29
30
  };
@@ -150,7 +151,7 @@ export class AnimatedEvent {
150
151
  __isNative: boolean;
151
152
  __platformConfig: ?PlatformConfig;
152
153
 
153
- constructor(argMapping: $ReadOnlyArray<?Mapping>, config: EventConfig) {
154
+ constructor(argMapping: $ReadOnlyArray<?Mapping>, config: EventConfig<any>) {
154
155
  this._argMapping = argMapping;
155
156
 
156
157
  if (config == null) {
@@ -37,6 +37,8 @@ export type {default as AnimatedDivision} from './nodes/AnimatedDivision';
37
37
  export type {default as AnimatedModulo} from './nodes/AnimatedModulo';
38
38
  export type {default as AnimatedMultiplication} from './nodes/AnimatedMultiplication';
39
39
  export type {default as AnimatedSubtraction} from './nodes/AnimatedSubtraction';
40
+ export type {WithAnimatedValue} from './createAnimatedComponent';
41
+ export type {AnimatedComponentType as AnimatedComponent} from './createAnimatedComponent';
40
42
 
41
43
  export const add = AnimatedImplementation.add;
42
44
  export const attachNativeEvent = AnimatedImplementation.attachNativeEvent;
@@ -540,9 +540,9 @@ function unforkEvent(
540
540
  }
541
541
  }
542
542
 
543
- const event = function (
543
+ const event = function <T>(
544
544
  argMapping: $ReadOnlyArray<?Mapping>,
545
- config: EventConfig,
545
+ config: EventConfig<T>,
546
546
  ): any {
547
547
  const animatedEvent = new AnimatedEvent(argMapping, config);
548
548
  if (animatedEvent.__isNative) {
@@ -23,49 +23,51 @@ import useAnimatedProps from '../useAnimatedProps';
23
23
  import * as React from 'react';
24
24
  import {useMemo} from 'react';
25
25
 
26
- type Props = React.ElementConfig<typeof ScrollView>;
27
- type Instance = React.ElementRef<typeof ScrollView>;
26
+ type AnimatedScrollViewProps = React.ElementConfig<typeof ScrollView>;
27
+ type AnimatedScrollViewInstance = React.ElementRef<typeof ScrollView>;
28
28
 
29
29
  /**
30
30
  * @see https://github.com/facebook/react-native/commit/b8c8562
31
31
  */
32
- const AnimatedScrollView: AnimatedComponentType<Props, Instance> =
33
- React.forwardRef(
34
- function AnimatedScrollViewWithOrWithoutInvertedRefreshControl(
35
- props,
36
- forwardedRef,
32
+ const AnimatedScrollView: AnimatedComponentType<
33
+ AnimatedScrollViewProps,
34
+ AnimatedScrollViewInstance,
35
+ > = React.forwardRef(
36
+ function AnimatedScrollViewWithOrWithoutInvertedRefreshControl(
37
+ props,
38
+ forwardedRef,
39
+ ) {
40
+ // (Android only) When a ScrollView has a RefreshControl and
41
+ // any `style` property set with an Animated.Value, the CSS
42
+ // gets incorrectly applied twice. This is because ScrollView
43
+ // swaps the parent/child relationship of itself and the
44
+ // RefreshControl component (see ScrollView.js for more details).
45
+ if (
46
+ Platform.OS === 'android' &&
47
+ props.refreshControl != null &&
48
+ props.style != null
37
49
  ) {
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
- // $FlowFixMe - It should return an Animated ScrollView but it returns a ScrollView with Animated props applied.
50
- <AnimatedScrollViewWithInvertedRefreshControl
51
- scrollEventThrottle={0.0001}
52
- {...props}
53
- ref={forwardedRef}
54
- // $FlowFixMe[incompatible-type]
55
- refreshControl={props.refreshControl}
56
- />
57
- );
58
- } else {
59
- return (
60
- <AnimatedScrollViewWithoutInvertedRefreshControl
61
- scrollEventThrottle={0.0001}
62
- {...props}
63
- ref={forwardedRef}
64
- />
65
- );
66
- }
67
- },
68
- );
50
+ return (
51
+ // $FlowFixMe - It should return an Animated ScrollView but it returns a ScrollView with Animated props applied.
52
+ <AnimatedScrollViewWithInvertedRefreshControl
53
+ scrollEventThrottle={0.0001}
54
+ {...props}
55
+ ref={forwardedRef}
56
+ // $FlowFixMe[incompatible-type]
57
+ refreshControl={props.refreshControl}
58
+ />
59
+ );
60
+ } else {
61
+ return (
62
+ <AnimatedScrollViewWithoutInvertedRefreshControl
63
+ scrollEventThrottle={0.0001}
64
+ {...props}
65
+ ref={forwardedRef}
66
+ />
67
+ );
68
+ }
69
+ },
70
+ );
69
71
 
70
72
  const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
71
73
  // $FlowFixMe[incompatible-call]
@@ -76,8 +78,8 @@ const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
76
78
  refreshControl: ExactReactElement_DEPRECATED<any>,
77
79
  },
78
80
  forwardedRef:
79
- | {current: Instance | null, ...}
80
- | ((Instance | null) => mixed),
81
+ | {current: AnimatedScrollViewInstance | null, ...}
82
+ | ((AnimatedScrollViewInstance | null) => mixed),
81
83
  ) {
82
84
  // Split `props` into the animate-able props for the parent (RefreshControl)
83
85
  // and child (ScrollView).
@@ -107,10 +109,13 @@ const AnimatedScrollViewWithInvertedRefreshControl = React.forwardRef(
107
109
 
108
110
  // Handle animated props on `NativeDirectionalScrollView`.
109
111
  const [scrollViewAnimatedProps, scrollViewRef] = useAnimatedProps<
110
- Props,
111
- Instance,
112
+ AnimatedScrollViewProps,
113
+ AnimatedScrollViewInstance,
112
114
  >(intermediatePropsForScrollView);
113
- const ref = useMergeRefs<Instance>(scrollViewRef, forwardedRef);
115
+ const ref = useMergeRefs<AnimatedScrollViewInstance>(
116
+ scrollViewRef,
117
+ forwardedRef,
118
+ );
114
119
 
115
120
  return (
116
121
  // $FlowFixMe[incompatible-use] Investigate useAnimatedProps return value
@@ -10,7 +10,8 @@
10
10
 
11
11
  import type {EventSubscription} from '../../vendor/emitter/EventEmitter';
12
12
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
13
- import type Animation, {EndCallback} from '../animations/Animation';
13
+ import type Animation from '../animations/Animation';
14
+ import type {EndCallback} from '../animations/Animation';
14
15
  import type {InterpolationConfigType} from './AnimatedInterpolation';
15
16
  import type AnimatedNode from './AnimatedNode';
16
17
  import type {AnimatedNodeConfig} from './AnimatedNode';
@@ -35,7 +35,7 @@ const PARAMS = 2;
35
35
  const MIN_TIME_BETWEEN_FLUSHES_MS = 5;
36
36
 
37
37
  // eslint-disable-next-line no-bitwise
38
- const TRACE_TAG_REACT_APPS = 1 << 17;
38
+ const TRACE_TAG_REACT = 1 << 13;
39
39
 
40
40
  const DEBUG_INFO_LIMIT = 32;
41
41
 
@@ -228,7 +228,7 @@ class MessageQueue {
228
228
  if (__DEV__) {
229
229
  global.nativeTraceBeginAsyncFlow &&
230
230
  global.nativeTraceBeginAsyncFlow(
231
- TRACE_TAG_REACT_APPS,
231
+ TRACE_TAG_REACT,
232
232
  'native',
233
233
  this._callID,
234
234
  );
@@ -8,13 +8,224 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import typeof FileReader from './FileReader_old';
11
+ import type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';
12
+ import type Blob from './Blob';
12
13
 
13
- // Use a global instead of a flag from ReactNativeFeatureFlags because this will
14
- // be read before apps have a chance to set overrides.
15
- const useBuiltInEventTarget = global.RN$useBuiltInEventTarget?.();
14
+ import Event from '../../src/private/webapis/dom/events/Event';
15
+ import {
16
+ getEventHandlerAttribute,
17
+ setEventHandlerAttribute,
18
+ } from '../../src/private/webapis/dom/events/EventHandlerAttributes';
19
+ import EventTarget from '../../src/private/webapis/dom/events/EventTarget';
20
+ import NativeFileReaderModule from './NativeFileReaderModule';
21
+ import {toByteArray} from 'base64-js';
16
22
 
17
- export default (useBuiltInEventTarget
18
- ? // $FlowExpectedError[incompatible-cast]
19
- require('./FileReader_new').default
20
- : require('./FileReader_old').default) as FileReader;
23
+ type ReadyState =
24
+ | 0 // EMPTY
25
+ | 1 // LOADING
26
+ | 2; // DONE
27
+
28
+ type ReaderResult = string | ArrayBuffer;
29
+
30
+ const EMPTY = 0;
31
+ const LOADING = 1;
32
+ const DONE = 2;
33
+
34
+ class FileReader extends EventTarget {
35
+ static EMPTY: number = EMPTY;
36
+ static LOADING: number = LOADING;
37
+ static DONE: number = DONE;
38
+
39
+ EMPTY: number = EMPTY;
40
+ LOADING: number = LOADING;
41
+ DONE: number = DONE;
42
+
43
+ _readyState: ReadyState;
44
+ _error: ?Error;
45
+ _result: ?ReaderResult;
46
+ _aborted: boolean = false;
47
+
48
+ constructor() {
49
+ super();
50
+ this._reset();
51
+ }
52
+
53
+ _reset(): void {
54
+ this._readyState = EMPTY;
55
+ this._error = null;
56
+ this._result = null;
57
+ }
58
+
59
+ _setReadyState(newState: ReadyState) {
60
+ this._readyState = newState;
61
+ this.dispatchEvent(new Event('readystatechange'));
62
+ if (newState === DONE) {
63
+ if (this._aborted) {
64
+ this.dispatchEvent(new Event('abort'));
65
+ } else if (this._error) {
66
+ this.dispatchEvent(new Event('error'));
67
+ } else {
68
+ this.dispatchEvent(new Event('load'));
69
+ }
70
+ this.dispatchEvent(new Event('loadend'));
71
+ }
72
+ }
73
+
74
+ readAsArrayBuffer(blob: ?Blob): void {
75
+ this._aborted = false;
76
+
77
+ if (blob == null) {
78
+ throw new TypeError(
79
+ "Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'",
80
+ );
81
+ }
82
+
83
+ NativeFileReaderModule.readAsDataURL(blob.data).then(
84
+ (text: string) => {
85
+ if (this._aborted) {
86
+ return;
87
+ }
88
+
89
+ const base64 = text.split(',')[1];
90
+ const typedArray = toByteArray(base64);
91
+
92
+ this._result = typedArray.buffer;
93
+ this._setReadyState(DONE);
94
+ },
95
+ error => {
96
+ if (this._aborted) {
97
+ return;
98
+ }
99
+ this._error = error;
100
+ this._setReadyState(DONE);
101
+ },
102
+ );
103
+ }
104
+
105
+ readAsDataURL(blob: ?Blob): void {
106
+ this._aborted = false;
107
+
108
+ if (blob == null) {
109
+ throw new TypeError(
110
+ "Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'",
111
+ );
112
+ }
113
+
114
+ NativeFileReaderModule.readAsDataURL(blob.data).then(
115
+ (text: string) => {
116
+ if (this._aborted) {
117
+ return;
118
+ }
119
+ this._result = text;
120
+ this._setReadyState(DONE);
121
+ },
122
+ error => {
123
+ if (this._aborted) {
124
+ return;
125
+ }
126
+ this._error = error;
127
+ this._setReadyState(DONE);
128
+ },
129
+ );
130
+ }
131
+
132
+ readAsText(blob: ?Blob, encoding: string = 'UTF-8'): void {
133
+ this._aborted = false;
134
+
135
+ if (blob == null) {
136
+ throw new TypeError(
137
+ "Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'",
138
+ );
139
+ }
140
+
141
+ NativeFileReaderModule.readAsText(blob.data, encoding).then(
142
+ (text: string) => {
143
+ if (this._aborted) {
144
+ return;
145
+ }
146
+ this._result = text;
147
+ this._setReadyState(DONE);
148
+ },
149
+ error => {
150
+ if (this._aborted) {
151
+ return;
152
+ }
153
+ this._error = error;
154
+ this._setReadyState(DONE);
155
+ },
156
+ );
157
+ }
158
+
159
+ abort() {
160
+ this._aborted = true;
161
+ // only call onreadystatechange if there is something to abort, as per spec
162
+ if (this._readyState !== EMPTY && this._readyState !== DONE) {
163
+ this._reset();
164
+ this._setReadyState(DONE);
165
+ }
166
+ // Reset again after, in case modified in handler
167
+ this._reset();
168
+ }
169
+
170
+ get readyState(): ReadyState {
171
+ return this._readyState;
172
+ }
173
+
174
+ get error(): ?Error {
175
+ return this._error;
176
+ }
177
+
178
+ get result(): ?ReaderResult {
179
+ return this._result;
180
+ }
181
+
182
+ get onabort(): EventCallback | null {
183
+ return getEventHandlerAttribute(this, 'abort');
184
+ }
185
+
186
+ set onabort(listener: ?EventCallback) {
187
+ setEventHandlerAttribute(this, 'abort', listener);
188
+ }
189
+
190
+ get onerror(): EventCallback | null {
191
+ return getEventHandlerAttribute(this, 'error');
192
+ }
193
+
194
+ set onerror(listener: ?EventCallback) {
195
+ setEventHandlerAttribute(this, 'error', listener);
196
+ }
197
+
198
+ get onload(): EventCallback | null {
199
+ return getEventHandlerAttribute(this, 'load');
200
+ }
201
+
202
+ set onload(listener: ?EventCallback) {
203
+ setEventHandlerAttribute(this, 'load', listener);
204
+ }
205
+
206
+ get onloadstart(): EventCallback | null {
207
+ return getEventHandlerAttribute(this, 'loadstart');
208
+ }
209
+
210
+ set onloadstart(listener: ?EventCallback) {
211
+ setEventHandlerAttribute(this, 'loadstart', listener);
212
+ }
213
+
214
+ get onloadend(): EventCallback | null {
215
+ return getEventHandlerAttribute(this, 'loadend');
216
+ }
217
+
218
+ set onloadend(listener: ?EventCallback) {
219
+ setEventHandlerAttribute(this, 'loadend', listener);
220
+ }
221
+
222
+ get onprogress(): EventCallback | null {
223
+ return getEventHandlerAttribute(this, 'progress');
224
+ }
225
+
226
+ set onprogress(listener: ?EventCallback) {
227
+ setEventHandlerAttribute(this, 'progress', listener);
228
+ }
229
+ }
230
+
231
+ export default FileReader;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ // NOTE: This file supports backwards compatibility of subpath (deep) imports
12
+ // from 'react-native' with platform-specific extensions. It can be deleted
13
+ // once we remove the "./*" mapping from package.json "exports".
14
+
15
+ import legacySendAccessibilityEvent from './legacySendAccessibilityEvent';
16
+
17
+ export default legacySendAccessibilityEvent;
@@ -38,7 +38,7 @@ export type ButtonProps = $ReadOnly<{
38
38
  Handler to be called when the user taps the button. The first function
39
39
  argument is an event in form of [GestureResponderEvent](pressevent).
40
40
  */
41
- onPress: (event?: GestureResponderEvent) => mixed,
41
+ onPress?: (event?: GestureResponderEvent) => mixed,
42
42
 
43
43
  /**
44
44
  If `true`, doesn't play system sound on touch.
@@ -39,7 +39,7 @@ export type ButtonProps = $ReadOnly<{
39
39
  Handler to be called when the user taps the button. The first function
40
40
  argument is an event in form of [GestureResponderEvent](pressevent).
41
41
  */
42
- onPress: (event?: GestureResponderEvent) => mixed,
42
+ onPress?: (event?: GestureResponderEvent) => mixed,
43
43
 
44
44
  /**
45
45
  If `true`, doesn't play system sound on touch.
@@ -13,8 +13,6 @@ import type {
13
13
  MeasureLayoutOnSuccessCallback,
14
14
  MeasureOnSuccessCallback,
15
15
  } from '../../../src/private/types/HostInstance';
16
- import type {AccessibilityRole} from '../../Components/View/ViewAccessibility';
17
- import typeof DrawerLayoutAndroidCommon from './DrawerLayoutAndroid.js';
18
16
  import type {
19
17
  DrawerLayoutAndroidMethods,
20
18
  DrawerLayoutAndroidProps,
@@ -305,4 +303,4 @@ const styles = StyleSheet.create({
305
303
  },
306
304
  });
307
305
 
308
- export default DrawerLayoutAndroid as $FlowFixMe as DrawerLayoutAndroidCommon;
306
+ export default DrawerLayoutAndroid as $FlowFixMe;
@@ -0,0 +1,15 @@
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 DrawerLayoutAndroidFallback from './DrawerLayoutAndroidFallback';
14
+
15
+ export default DrawerLayoutAndroidFallback;