@office-iss/react-native-win32 0.0.0-canary.291 → 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.
- package/.flowconfig +1 -1
- package/CHANGELOG.json +16 -1
- package/CHANGELOG.md +12 -4
- package/Libraries/Alert/RCTAlertManager.js +17 -0
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js.flow +2 -0
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/components/AnimatedScrollView.js +48 -43
- package/Libraries/Animated/nodes/AnimatedValue.js +2 -1
- package/Libraries/BatchedBridge/MessageQueue.js +2 -2
- package/Libraries/Blob/FileReader.js +219 -8
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
- package/Libraries/Components/Button.js +1 -1
- package/Libraries/Components/Button.win32.js +1 -1
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js +15 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
- package/Libraries/Components/Keyboard/Keyboard.js +4 -2
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
- package/Libraries/Components/Pressable/Pressable.js +2 -0
- package/Libraries/Components/Pressable/Pressable.win32.js +2 -0
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +12 -2
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.js +128 -116
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +35 -43
- package/Libraries/Components/TextInput/TextInput.flow.win32.js +1184 -0
- package/Libraries/Components/TextInput/TextInput.js +65 -1005
- package/Libraries/Components/TextInput/TextInput.win32.js +67 -1037
- package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +13 -0
- package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
- package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
- package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +4 -32
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
- package/Libraries/Components/Touchable/Touchable.js +5 -5
- package/Libraries/Components/Touchable/Touchable.win32.js +5 -5
- package/Libraries/Components/Touchable/TouchableBounce.js +12 -6
- package/Libraries/Components/Touchable/TouchableHighlight.js +9 -6
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +4 -4
- package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +4 -4
- package/Libraries/Components/Touchable/TouchableOpacity.js +11 -5
- package/Libraries/Components/View/ViewAccessibility.js +7 -0
- package/Libraries/Components/View/ViewAccessibility.win32.js +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +1 -1
- package/Libraries/Components/View/ViewPropTypes.win32.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +4 -1
- package/Libraries/Image/Image.js +17 -0
- package/Libraries/Image/Image.js.flow +2 -2
- package/Libraries/Image/ImageInjection.js +1 -1
- package/Libraries/Image/ImageProps.js +5 -4
- package/Libraries/Image/ImageTypes.flow.js +1 -1
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/Lists/SectionList.js +1 -1
- package/Libraries/Lists/SectionListModern.js +2 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
- package/Libraries/Modal/Modal.js +3 -3
- package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
- package/Libraries/Network/RCTNetworking.js +17 -0
- package/Libraries/Network/XMLHttpRequest.js +781 -10
- package/Libraries/NewAppScreen/components/DebugInstructions.js +1 -1
- package/Libraries/NewAppScreen/components/Header.js +1 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
- package/Libraries/NewAppScreen/components/ReloadInstructions.js +1 -1
- package/Libraries/Performance/Systrace.js +7 -7
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -2
- package/Libraries/Settings/Settings.js +13 -19
- package/Libraries/Settings/Settings.win32.js +19 -20
- package/Libraries/Settings/SettingsFallback.js +33 -0
- package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
- package/Libraries/StyleSheet/Rect.js +1 -0
- package/Libraries/StyleSheet/StyleSheet.js.flow +3 -3
- package/Libraries/StyleSheet/StyleSheetTypes.js +28 -30
- package/Libraries/StyleSheet/flattenStyle.js +7 -1
- package/Libraries/Text/Text.js +3 -3
- package/Libraries/Text/Text.win32.js +3 -3
- package/Libraries/Text/TextProps.js +1 -1
- package/Libraries/Text/TextProps.win32.js +1 -1
- package/Libraries/Utilities/Appearance.js +2 -0
- package/Libraries/Utilities/BackHandler.js +17 -0
- package/Libraries/Utilities/Platform.js +17 -0
- package/Libraries/Utilities/PlatformTypes.js +2 -0
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/WebSocket/WebSocket.js +313 -8
- package/flow/global.js +0 -2
- package/index.win32.js +5 -5
- package/overrides.json +23 -17
- package/package.json +12 -12
- package/src/private/animated/NativeAnimatedHelper.js +1 -1
- package/src/private/animated/NativeAnimatedHelper.win32.js +1 -1
- package/src/private/animated/createAnimatedPropsHook.js +2 -27
- package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
- package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
- package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +21 -32
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -6
- package/src/private/inspector/BorderBox.js +1 -1
- package/src/private/inspector/BoxInspector.js +1 -1
- package/src/private/inspector/ElementBox.js +1 -1
- package/src/private/inspector/ElementProperties.js +1 -1
- package/src/private/inspector/Inspector.js +2 -2
- package/src/private/inspector/InspectorOverlay.js +1 -1
- package/src/private/inspector/InspectorPanel.js +1 -1
- package/src/private/inspector/NetworkOverlay.js +1 -1
- package/src/private/inspector/PerformanceOverlay.js +1 -1
- package/src/private/inspector/StyleInspector.js +1 -1
- package/src/private/types/HostComponent.js +1 -1
- package/src/private/types/HostInstance.js +10 -2
- package/src/private/webapis/performance/Performance.js +1 -3
- package/Libraries/Blob/FileReader_new.js +0 -231
- package/Libraries/Blob/FileReader_old.js +0 -186
- package/Libraries/Events/CustomEvent.js +0 -32
- package/Libraries/Events/EventPolyfill.js +0 -239
- package/Libraries/Network/XMLHttpRequest_new.js +0 -794
- package/Libraries/Network/XMLHttpRequest_old.js +0 -701
- package/Libraries/WebSocket/WebSocketEvent.js +0 -30
- package/Libraries/WebSocket/WebSocket_new.js +0 -325
- package/Libraries/WebSocket/WebSocket_old.js +0 -297
- package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
- package/src/private/components/VScrollViewNativeComponents.js +0 -25
- package/src/types/third_party/event-target-shim.d.ts +0 -392
|
@@ -8,13 +8,318 @@
|
|
|
8
8
|
* @flow
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';
|
|
12
|
+
import type {BlobData} from '../Blob/BlobTypes';
|
|
13
|
+
import type {EventSubscription} from '../vendor/emitter/EventEmitter';
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
import Event from '../../src/private/webapis/dom/events/Event';
|
|
16
|
+
import {
|
|
17
|
+
getEventHandlerAttribute,
|
|
18
|
+
setEventHandlerAttribute,
|
|
19
|
+
} from '../../src/private/webapis/dom/events/EventHandlerAttributes';
|
|
20
|
+
import EventTarget from '../../src/private/webapis/dom/events/EventTarget';
|
|
21
|
+
import MessageEvent from '../../src/private/webapis/html/events/MessageEvent';
|
|
22
|
+
import CloseEvent from '../../src/private/webapis/websockets/events/CloseEvent';
|
|
23
|
+
import Blob from '../Blob/Blob';
|
|
24
|
+
import BlobManager from '../Blob/BlobManager';
|
|
25
|
+
import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
|
|
26
|
+
import binaryToBase64 from '../Utilities/binaryToBase64';
|
|
27
|
+
import Platform from '../Utilities/Platform';
|
|
28
|
+
import NativeWebSocketModule from './NativeWebSocketModule';
|
|
29
|
+
import base64 from 'base64-js';
|
|
30
|
+
import invariant from 'invariant';
|
|
16
31
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
type ArrayBufferView =
|
|
33
|
+
| Int8Array
|
|
34
|
+
| Uint8Array
|
|
35
|
+
| Uint8ClampedArray
|
|
36
|
+
| Int16Array
|
|
37
|
+
| Uint16Array
|
|
38
|
+
| Int32Array
|
|
39
|
+
| Uint32Array
|
|
40
|
+
| Float32Array
|
|
41
|
+
| Float64Array
|
|
42
|
+
| DataView;
|
|
43
|
+
|
|
44
|
+
type BinaryType = 'blob' | 'arraybuffer';
|
|
45
|
+
|
|
46
|
+
const CONNECTING = 0;
|
|
47
|
+
const OPEN = 1;
|
|
48
|
+
const CLOSING = 2;
|
|
49
|
+
const CLOSED = 3;
|
|
50
|
+
|
|
51
|
+
const CLOSE_NORMAL = 1000;
|
|
52
|
+
|
|
53
|
+
// Abnormal closure where no code is provided in a control frame
|
|
54
|
+
// https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5
|
|
55
|
+
const CLOSE_ABNORMAL = 1006;
|
|
56
|
+
|
|
57
|
+
let nextWebSocketId = 0;
|
|
58
|
+
|
|
59
|
+
type WebSocketEventDefinitions = {
|
|
60
|
+
websocketOpen: [{id: number, protocol: string}],
|
|
61
|
+
websocketClosed: [{id: number, code: number, reason: string}],
|
|
62
|
+
websocketMessage: [
|
|
63
|
+
| {type: 'binary', id: number, data: string}
|
|
64
|
+
| {type: 'text', id: number, data: string}
|
|
65
|
+
| {type: 'blob', id: number, data: BlobData},
|
|
66
|
+
],
|
|
67
|
+
websocketFailed: [{id: number, message: string}],
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Browser-compatible WebSockets implementation.
|
|
72
|
+
*
|
|
73
|
+
* See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
74
|
+
* See https://github.com/websockets/ws
|
|
75
|
+
*/
|
|
76
|
+
class WebSocket extends EventTarget {
|
|
77
|
+
static CONNECTING: number = CONNECTING;
|
|
78
|
+
static OPEN: number = OPEN;
|
|
79
|
+
static CLOSING: number = CLOSING;
|
|
80
|
+
static CLOSED: number = CLOSED;
|
|
81
|
+
|
|
82
|
+
CONNECTING: number = CONNECTING;
|
|
83
|
+
OPEN: number = OPEN;
|
|
84
|
+
CLOSING: number = CLOSING;
|
|
85
|
+
CLOSED: number = CLOSED;
|
|
86
|
+
|
|
87
|
+
_socketId: number;
|
|
88
|
+
_eventEmitter: NativeEventEmitter<WebSocketEventDefinitions>;
|
|
89
|
+
_subscriptions: Array<EventSubscription>;
|
|
90
|
+
_binaryType: ?BinaryType;
|
|
91
|
+
|
|
92
|
+
bufferedAmount: number;
|
|
93
|
+
extension: ?string;
|
|
94
|
+
protocol: ?string;
|
|
95
|
+
readyState: number = CONNECTING;
|
|
96
|
+
url: ?string;
|
|
97
|
+
|
|
98
|
+
constructor(
|
|
99
|
+
url: string,
|
|
100
|
+
protocols: ?string | ?Array<string>,
|
|
101
|
+
options: ?{headers?: {origin?: string, ...}, ...},
|
|
102
|
+
) {
|
|
103
|
+
super();
|
|
104
|
+
this.url = url;
|
|
105
|
+
if (typeof protocols === 'string') {
|
|
106
|
+
protocols = [protocols];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const {headers = {}, ...unrecognized} = options || {};
|
|
110
|
+
|
|
111
|
+
// Preserve deprecated backwards compatibility for the 'origin' option
|
|
112
|
+
// $FlowFixMe[prop-missing]
|
|
113
|
+
if (unrecognized && typeof unrecognized.origin === 'string') {
|
|
114
|
+
console.warn(
|
|
115
|
+
'Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.',
|
|
116
|
+
);
|
|
117
|
+
/* $FlowFixMe[prop-missing] (>=0.54.0 site=react_native_fb,react_native_
|
|
118
|
+
* oss) This comment suppresses an error found when Flow v0.54 was
|
|
119
|
+
* deployed. To see the error delete this comment and run Flow. */
|
|
120
|
+
headers.origin = unrecognized.origin;
|
|
121
|
+
/* $FlowFixMe[prop-missing] (>=0.54.0 site=react_native_fb,react_native_
|
|
122
|
+
* oss) This comment suppresses an error found when Flow v0.54 was
|
|
123
|
+
* deployed. To see the error delete this comment and run Flow. */
|
|
124
|
+
delete unrecognized.origin;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Warn about and discard anything else
|
|
128
|
+
if (Object.keys(unrecognized).length > 0) {
|
|
129
|
+
console.warn(
|
|
130
|
+
'Unrecognized WebSocket connection option(s) `' +
|
|
131
|
+
Object.keys(unrecognized).join('`, `') +
|
|
132
|
+
'`. ' +
|
|
133
|
+
'Did you mean to put these under `headers`?',
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (!Array.isArray(protocols)) {
|
|
138
|
+
protocols = null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
this._eventEmitter = new NativeEventEmitter(
|
|
142
|
+
// T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior
|
|
143
|
+
// If you want to use the native module on other platforms, please remove this condition and test its behavior
|
|
144
|
+
Platform.OS !== 'ios' ? null : NativeWebSocketModule,
|
|
145
|
+
);
|
|
146
|
+
this._socketId = nextWebSocketId++;
|
|
147
|
+
this._registerEvents();
|
|
148
|
+
NativeWebSocketModule.connect(url, protocols, {headers}, this._socketId);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
get binaryType(): ?BinaryType {
|
|
152
|
+
return this._binaryType;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
set binaryType(binaryType: BinaryType): void {
|
|
156
|
+
if (binaryType !== 'blob' && binaryType !== 'arraybuffer') {
|
|
157
|
+
throw new Error("binaryType must be either 'blob' or 'arraybuffer'");
|
|
158
|
+
}
|
|
159
|
+
if (this._binaryType === 'blob' || binaryType === 'blob') {
|
|
160
|
+
invariant(
|
|
161
|
+
BlobManager.isAvailable,
|
|
162
|
+
'Native module BlobModule is required for blob support',
|
|
163
|
+
);
|
|
164
|
+
if (binaryType === 'blob') {
|
|
165
|
+
BlobManager.addWebSocketHandler(this._socketId);
|
|
166
|
+
} else {
|
|
167
|
+
BlobManager.removeWebSocketHandler(this._socketId);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
this._binaryType = binaryType;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
close(code?: number, reason?: string): void {
|
|
174
|
+
if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
this.readyState = this.CLOSING;
|
|
179
|
+
this._close(code, reason);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
send(data: string | ArrayBuffer | ArrayBufferView | Blob): void {
|
|
183
|
+
if (this.readyState === this.CONNECTING) {
|
|
184
|
+
throw new Error('INVALID_STATE_ERR');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (data instanceof Blob) {
|
|
188
|
+
invariant(
|
|
189
|
+
BlobManager.isAvailable,
|
|
190
|
+
'Native module BlobModule is required for blob support',
|
|
191
|
+
);
|
|
192
|
+
BlobManager.sendOverSocket(data, this._socketId);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (typeof data === 'string') {
|
|
197
|
+
NativeWebSocketModule.send(data, this._socketId);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
|
|
202
|
+
NativeWebSocketModule.sendBinary(binaryToBase64(data), this._socketId);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
throw new Error('Unsupported data type');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
ping(): void {
|
|
210
|
+
if (this.readyState === this.CONNECTING) {
|
|
211
|
+
throw new Error('INVALID_STATE_ERR');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
NativeWebSocketModule.ping(this._socketId);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
_close(code?: number, reason?: string): void {
|
|
218
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent
|
|
219
|
+
const statusCode = typeof code === 'number' ? code : CLOSE_NORMAL;
|
|
220
|
+
const closeReason = typeof reason === 'string' ? reason : '';
|
|
221
|
+
NativeWebSocketModule.close(statusCode, closeReason, this._socketId);
|
|
222
|
+
|
|
223
|
+
if (BlobManager.isAvailable && this._binaryType === 'blob') {
|
|
224
|
+
BlobManager.removeWebSocketHandler(this._socketId);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
_unregisterEvents(): void {
|
|
229
|
+
this._subscriptions.forEach(e => e.remove());
|
|
230
|
+
this._subscriptions = [];
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
_registerEvents(): void {
|
|
234
|
+
this._subscriptions = [
|
|
235
|
+
this._eventEmitter.addListener('websocketMessage', ev => {
|
|
236
|
+
if (ev.id !== this._socketId) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
let data: Blob | BlobData | ArrayBuffer | string = ev.data;
|
|
240
|
+
switch (ev.type) {
|
|
241
|
+
case 'binary':
|
|
242
|
+
data = base64.toByteArray(ev.data).buffer;
|
|
243
|
+
break;
|
|
244
|
+
case 'blob':
|
|
245
|
+
data = BlobManager.createFromOptions(ev.data);
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
this.dispatchEvent(new MessageEvent('message', {data}));
|
|
249
|
+
}),
|
|
250
|
+
this._eventEmitter.addListener('websocketOpen', ev => {
|
|
251
|
+
if (ev.id !== this._socketId) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
this.readyState = this.OPEN;
|
|
255
|
+
this.protocol = ev.protocol;
|
|
256
|
+
this.dispatchEvent(new Event('open'));
|
|
257
|
+
}),
|
|
258
|
+
this._eventEmitter.addListener('websocketClosed', ev => {
|
|
259
|
+
if (ev.id !== this._socketId) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
this.readyState = this.CLOSED;
|
|
263
|
+
this.dispatchEvent(
|
|
264
|
+
new CloseEvent('close', {
|
|
265
|
+
code: ev.code,
|
|
266
|
+
reason: ev.reason,
|
|
267
|
+
// TODO: missing `wasClean` (exposed on iOS as `clean` but missing on Android)
|
|
268
|
+
}),
|
|
269
|
+
);
|
|
270
|
+
this._unregisterEvents();
|
|
271
|
+
this.close();
|
|
272
|
+
}),
|
|
273
|
+
this._eventEmitter.addListener('websocketFailed', ev => {
|
|
274
|
+
if (ev.id !== this._socketId) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
this.readyState = this.CLOSED;
|
|
278
|
+
this.dispatchEvent(new Event('error'));
|
|
279
|
+
this.dispatchEvent(
|
|
280
|
+
new CloseEvent('close', {
|
|
281
|
+
code: CLOSE_ABNORMAL,
|
|
282
|
+
reason: ev.message,
|
|
283
|
+
// TODO: Expose `wasClean`
|
|
284
|
+
}),
|
|
285
|
+
);
|
|
286
|
+
this._unregisterEvents();
|
|
287
|
+
this.close();
|
|
288
|
+
}),
|
|
289
|
+
];
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
get onclose(): EventCallback | null {
|
|
293
|
+
return getEventHandlerAttribute(this, 'close');
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
set onclose(listener: ?EventCallback) {
|
|
297
|
+
setEventHandlerAttribute(this, 'close', listener);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
get onerror(): EventCallback | null {
|
|
301
|
+
return getEventHandlerAttribute(this, 'error');
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
set onerror(listener: ?EventCallback) {
|
|
305
|
+
setEventHandlerAttribute(this, 'error', listener);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
get onmessage(): EventCallback | null {
|
|
309
|
+
return getEventHandlerAttribute(this, 'message');
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
set onmessage(listener: ?EventCallback) {
|
|
313
|
+
setEventHandlerAttribute(this, 'message', listener);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
get onopen(): EventCallback | null {
|
|
317
|
+
return getEventHandlerAttribute(this, 'open');
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
set onopen(listener: ?EventCallback) {
|
|
321
|
+
setEventHandlerAttribute(this, 'open', listener);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export default WebSocket;
|
package/flow/global.js
CHANGED
package/index.win32.js
CHANGED
|
@@ -26,6 +26,9 @@ import typeof FocusManager from './Libraries/Utilities/FocusManager';
|
|
|
26
26
|
import typeof NativeModules from './Libraries/BatchedBridge/NativeModules';
|
|
27
27
|
import typeof codegenNativeCommands from './Libraries/Utilities/codegenNativeCommands';
|
|
28
28
|
import typeof codegenNativeComponent from './Libraries/Utilities/codegenNativeComponent';
|
|
29
|
+
import {findNodeHandle} from './Libraries/ReactNative/RendererProxy';
|
|
30
|
+
import {unstable_batchedUpdates} from './Libraries/ReactNative/RendererProxy';
|
|
31
|
+
|
|
29
32
|
// Components
|
|
30
33
|
import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo';
|
|
31
34
|
import typeof ActivityIndicator from './Libraries/Components/ActivityIndicator/ActivityIndicator';
|
|
@@ -283,7 +286,7 @@ module.exports = {
|
|
|
283
286
|
get Easing(): Easing {
|
|
284
287
|
return require('./Libraries/Animated/Easing').default;
|
|
285
288
|
},
|
|
286
|
-
get findNodeHandle():
|
|
289
|
+
get findNodeHandle(): typeof findNodeHandle {
|
|
287
290
|
return require('./Libraries/ReactNative/RendererProxy').findNodeHandle;
|
|
288
291
|
},
|
|
289
292
|
get FocusManager(): FocusManager {
|
|
@@ -389,10 +392,7 @@ module.exports = {
|
|
|
389
392
|
get UIManager(): UIManager {
|
|
390
393
|
return require('./Libraries/ReactNative/UIManager').default;
|
|
391
394
|
},
|
|
392
|
-
get unstable_batchedUpdates():
|
|
393
|
-
ReactNative,
|
|
394
|
-
'unstable_batchedUpdates',
|
|
395
|
-
> {
|
|
395
|
+
get unstable_batchedUpdates(): typeof unstable_batchedUpdates {
|
|
396
396
|
return require('./Libraries/ReactNative/RendererProxy')
|
|
397
397
|
.unstable_batchedUpdates;
|
|
398
398
|
},
|
package/overrides.json
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
"**/__snapshots__/**",
|
|
8
8
|
"src-win/rntypes/**"
|
|
9
9
|
],
|
|
10
|
-
"baseVersion": "0.80.0-nightly-
|
|
10
|
+
"baseVersion": "0.80.0-nightly-20250414-70cdf12c4",
|
|
11
11
|
"overrides": [
|
|
12
12
|
{
|
|
13
13
|
"type": "derived",
|
|
14
14
|
"file": ".flowconfig",
|
|
15
15
|
"baseFile": ".flowconfig",
|
|
16
|
-
"baseHash": "
|
|
16
|
+
"baseHash": "635f6473853a94bd7de26e582a2a03c6869344ea"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"type": "derived",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"type": "derived",
|
|
61
61
|
"file": "src-win/Libraries/Components/Button.win32.js",
|
|
62
62
|
"baseFile": "packages/react-native/Libraries/Components/Button.js",
|
|
63
|
-
"baseHash": "
|
|
63
|
+
"baseHash": "4e77e13aa5774e813fbd874a13a920ea12e3ed91"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
"type": "platform",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"type": "copy",
|
|
75
75
|
"file": "src-win/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js",
|
|
76
76
|
"baseFile": "packages/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js",
|
|
77
|
-
"baseHash": "
|
|
77
|
+
"baseHash": "fe92a96a2bfd0e92b99b2803ce133c7a3cf2b022",
|
|
78
78
|
"issue": 14290
|
|
79
79
|
},
|
|
80
80
|
{
|
|
@@ -85,14 +85,14 @@
|
|
|
85
85
|
"type": "patch",
|
|
86
86
|
"file": "src-win/Libraries/Components/Pressable/Pressable.win32.js",
|
|
87
87
|
"baseFile": "packages/react-native/Libraries/Components/Pressable/Pressable.js",
|
|
88
|
-
"baseHash": "
|
|
88
|
+
"baseHash": "47e088807b206707cec6b17359c4d3017e61aaea",
|
|
89
89
|
"issue": 6240
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"type": "patch",
|
|
93
93
|
"file": "src-win/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js",
|
|
94
94
|
"baseFile": "packages/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js",
|
|
95
|
-
"baseHash": "
|
|
95
|
+
"baseHash": "c96925930d9664306a8aef8b4102c43055ea03be"
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
"type": "copy",
|
|
@@ -104,11 +104,17 @@
|
|
|
104
104
|
"type": "platform",
|
|
105
105
|
"file": "src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx"
|
|
106
106
|
},
|
|
107
|
+
{
|
|
108
|
+
"type": "derived",
|
|
109
|
+
"file": "src-win/Libraries/Components/TextInput/TextInput.flow.win32.js",
|
|
110
|
+
"baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.flow.js",
|
|
111
|
+
"baseHash": "de4c9224bac0ba920b41573b8d3c27b332a843de"
|
|
112
|
+
},
|
|
107
113
|
{
|
|
108
114
|
"type": "derived",
|
|
109
115
|
"file": "src-win/Libraries/Components/TextInput/TextInput.win32.js",
|
|
110
116
|
"baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js",
|
|
111
|
-
"baseHash": "
|
|
117
|
+
"baseHash": "32d0f756ca2cbd454a5c2d8aa18f3b1ea1d20557"
|
|
112
118
|
},
|
|
113
119
|
{
|
|
114
120
|
"type": "patch",
|
|
@@ -124,7 +130,7 @@
|
|
|
124
130
|
"type": "copy",
|
|
125
131
|
"file": "src-win/Libraries/Components/ToastAndroid/ToastAndroid.win32.js",
|
|
126
132
|
"baseFile": "packages/react-native/Libraries/Components/ToastAndroid/ToastAndroid.js",
|
|
127
|
-
"baseHash": "
|
|
133
|
+
"baseHash": "a623c5a09b665a36e84e7fc943bd619c8ca3cc14",
|
|
128
134
|
"issue": 4378
|
|
129
135
|
},
|
|
130
136
|
{
|
|
@@ -135,7 +141,7 @@
|
|
|
135
141
|
"type": "patch",
|
|
136
142
|
"file": "src-win/Libraries/Components/Touchable/Touchable.win32.js",
|
|
137
143
|
"baseFile": "packages/react-native/Libraries/Components/Touchable/Touchable.js",
|
|
138
|
-
"baseHash": "
|
|
144
|
+
"baseHash": "2f7db68acd47af643bc0625d31d199332d519871"
|
|
139
145
|
},
|
|
140
146
|
{
|
|
141
147
|
"type": "derived",
|
|
@@ -147,7 +153,7 @@
|
|
|
147
153
|
"type": "derived",
|
|
148
154
|
"file": "src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js",
|
|
149
155
|
"baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js",
|
|
150
|
-
"baseHash": "
|
|
156
|
+
"baseHash": "8706705c1f8d3dd5390ea631ce5ae60e300ae50d"
|
|
151
157
|
},
|
|
152
158
|
{
|
|
153
159
|
"type": "platform",
|
|
@@ -183,7 +189,7 @@
|
|
|
183
189
|
"type": "derived",
|
|
184
190
|
"file": "src-win/Libraries/Components/View/ViewAccessibility.win32.js",
|
|
185
191
|
"baseFile": "packages/react-native/Libraries/Components/View/ViewAccessibility.js",
|
|
186
|
-
"baseHash": "
|
|
192
|
+
"baseHash": "c30dab3926869e84edafebd485e78637d69ccd61"
|
|
187
193
|
},
|
|
188
194
|
{
|
|
189
195
|
"type": "derived",
|
|
@@ -195,7 +201,7 @@
|
|
|
195
201
|
"type": "patch",
|
|
196
202
|
"file": "src-win/Libraries/Components/View/ViewPropTypes.win32.js",
|
|
197
203
|
"baseFile": "packages/react-native/Libraries/Components/View/ViewPropTypes.js",
|
|
198
|
-
"baseHash": "
|
|
204
|
+
"baseHash": "ec1ffd005b6631e6af027731b087a7620fbf5cf5",
|
|
199
205
|
"issue": 6240
|
|
200
206
|
},
|
|
201
207
|
{
|
|
@@ -388,7 +394,7 @@
|
|
|
388
394
|
"type": "derived",
|
|
389
395
|
"file": "src-win/Libraries/Settings/Settings.win32.js",
|
|
390
396
|
"baseFile": "packages/react-native/Libraries/Settings/Settings.js",
|
|
391
|
-
"baseHash": "
|
|
397
|
+
"baseHash": "84da45c9a1bf8cec6d5044433f3c10e7298381d7"
|
|
392
398
|
},
|
|
393
399
|
{
|
|
394
400
|
"type": "platform",
|
|
@@ -412,7 +418,7 @@
|
|
|
412
418
|
"type": "derived",
|
|
413
419
|
"file": "src-win/Libraries/Text/Text.win32.js",
|
|
414
420
|
"baseFile": "packages/react-native/Libraries/Text/Text.js",
|
|
415
|
-
"baseHash": "
|
|
421
|
+
"baseHash": "1f802db19830e468b84640fc5c7740a11e154250"
|
|
416
422
|
},
|
|
417
423
|
{
|
|
418
424
|
"type": "derived",
|
|
@@ -425,7 +431,7 @@
|
|
|
425
431
|
"type": "derived",
|
|
426
432
|
"file": "src-win/Libraries/Text/TextProps.win32.js",
|
|
427
433
|
"baseFile": "packages/react-native/Libraries/Text/TextProps.js",
|
|
428
|
-
"baseHash": "
|
|
434
|
+
"baseHash": "d31f973c14140792d9d28d208fca15d092a8a4e2"
|
|
429
435
|
},
|
|
430
436
|
{
|
|
431
437
|
"type": "patch",
|
|
@@ -471,7 +477,7 @@
|
|
|
471
477
|
"type": "patch",
|
|
472
478
|
"file": "src-win/Libraries/Utilities/PlatformTypes.js",
|
|
473
479
|
"baseFile": "packages/react-native/Libraries/Utilities/PlatformTypes.js",
|
|
474
|
-
"baseHash": "
|
|
480
|
+
"baseHash": "0bd36210528f74f9081d858c9ab64ead92c54950",
|
|
475
481
|
"issue": 14686
|
|
476
482
|
},
|
|
477
483
|
{
|
|
@@ -484,7 +490,7 @@
|
|
|
484
490
|
"type": "patch",
|
|
485
491
|
"file": "src-win/src/private/animated/NativeAnimatedHelper.win32.js",
|
|
486
492
|
"baseFile": "packages/react-native/src/private/animated/NativeAnimatedHelper.js",
|
|
487
|
-
"baseHash": "
|
|
493
|
+
"baseHash": "3247a8e436a7beeda45ce7d77343229b5204cbfc",
|
|
488
494
|
"issue": 11041
|
|
489
495
|
},
|
|
490
496
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@office-iss/react-native-win32",
|
|
3
|
-
"version": "0.0.0-canary.
|
|
3
|
+
"version": "0.0.0-canary.292",
|
|
4
4
|
"description": "Implementation of react native on top of Office's Win32 platform.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
"@react-native-community/cli-platform-android": "17.0.0",
|
|
31
31
|
"@react-native-community/cli-platform-ios": "17.0.0",
|
|
32
32
|
"@react-native/assets": "1.0.0",
|
|
33
|
-
"@react-native/assets-registry": "0.80.0-nightly-
|
|
34
|
-
"@react-native/codegen": "0.80.0-nightly-
|
|
35
|
-
"@react-native/community-cli-plugin": "0.80.0-nightly-
|
|
36
|
-
"@react-native/gradle-plugin": "0.80.0-nightly-
|
|
37
|
-
"@react-native/js-polyfills": "0.80.0-nightly-
|
|
38
|
-
"@react-native/normalize-colors": "0.80.0-nightly-
|
|
39
|
-
"@react-native/virtualized-lists": "0.80.0-nightly-
|
|
33
|
+
"@react-native/assets-registry": "0.80.0-nightly-20250414-70cdf12c4",
|
|
34
|
+
"@react-native/codegen": "0.80.0-nightly-20250414-70cdf12c4",
|
|
35
|
+
"@react-native/community-cli-plugin": "0.80.0-nightly-20250414-70cdf12c4",
|
|
36
|
+
"@react-native/gradle-plugin": "0.80.0-nightly-20250414-70cdf12c4",
|
|
37
|
+
"@react-native/js-polyfills": "0.80.0-nightly-20250414-70cdf12c4",
|
|
38
|
+
"@react-native/normalize-colors": "0.80.0-nightly-20250414-70cdf12c4",
|
|
39
|
+
"@react-native/virtualized-lists": "0.80.0-nightly-20250414-70cdf12c4",
|
|
40
40
|
"abort-controller": "^3.0.0",
|
|
41
41
|
"anser": "^1.4.9",
|
|
42
42
|
"ansi-regex": "^5.0.0",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@babel/core": "^7.25.2",
|
|
74
74
|
"@babel/eslint-parser": "^7.25.1",
|
|
75
|
-
"@react-native/metro-config": "0.80.0-nightly-
|
|
75
|
+
"@react-native/metro-config": "0.80.0-nightly-20250414-70cdf12c4",
|
|
76
76
|
"@rnw-scripts/babel-react-native-config": "0.0.0",
|
|
77
77
|
"@rnw-scripts/eslint-config": "1.2.36",
|
|
78
78
|
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.40",
|
|
@@ -83,19 +83,19 @@
|
|
|
83
83
|
"@types/prop-types": "15.7.1",
|
|
84
84
|
"@types/react": "^19.0.0",
|
|
85
85
|
"eslint": "^8.19.0",
|
|
86
|
-
"flow-bin": "^0.
|
|
86
|
+
"flow-bin": "^0.267.0",
|
|
87
87
|
"jscodeshift": "^0.14.0",
|
|
88
88
|
"just-scripts": "^1.3.3",
|
|
89
89
|
"prettier": "2.8.8",
|
|
90
90
|
"react": "19.0.0",
|
|
91
|
-
"react-native": "0.80.0-nightly-
|
|
91
|
+
"react-native": "0.80.0-nightly-20250414-70cdf12c4",
|
|
92
92
|
"react-native-platform-override": "^1.9.55",
|
|
93
93
|
"typescript": "5.0.4"
|
|
94
94
|
},
|
|
95
95
|
"peerDependencies": {
|
|
96
96
|
"@types/react": "^19.0.0",
|
|
97
97
|
"react": "^19.0.0",
|
|
98
|
-
"react-native": "0.80.0-nightly-
|
|
98
|
+
"react-native": "0.80.0-nightly-20250414-70cdf12c4"
|
|
99
99
|
},
|
|
100
100
|
"beachball": {
|
|
101
101
|
"defaultNpmTag": "canary",
|
|
@@ -384,7 +384,7 @@ function assertNativeAnimatedModule(): void {
|
|
|
384
384
|
let _warnedMissingNativeAnimated = false;
|
|
385
385
|
|
|
386
386
|
function shouldUseNativeDriver(
|
|
387
|
-
config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig
|
|
387
|
+
config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<mixed>,
|
|
388
388
|
): boolean {
|
|
389
389
|
if (config.useNativeDriver == null) {
|
|
390
390
|
console.warn(
|
|
@@ -387,7 +387,7 @@ function assertNativeAnimatedModule(): void {
|
|
|
387
387
|
let _warnedMissingNativeAnimated = false;
|
|
388
388
|
|
|
389
389
|
function shouldUseNativeDriver(
|
|
390
|
-
config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig
|
|
390
|
+
config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<mixed>,
|
|
391
391
|
): boolean {
|
|
392
392
|
if (config.useNativeDriver == null) {
|
|
393
393
|
console.warn(
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
import type {AnimatedPropsAllowlist} from '../../../Libraries/Animated/nodes/AnimatedProps';
|
|
12
12
|
import type {EventSubscription} from '../../../Libraries/EventEmitter/NativeEventEmitter';
|
|
13
13
|
|
|
14
|
-
import {AnimatedEvent} from '../../../Libraries/Animated/AnimatedEvent';
|
|
15
14
|
import AnimatedNode from '../../../Libraries/Animated/nodes/AnimatedNode';
|
|
16
15
|
import AnimatedProps from '../../../Libraries/Animated/nodes/AnimatedProps';
|
|
17
16
|
import AnimatedValue from '../../../Libraries/Animated/nodes/AnimatedValue';
|
|
@@ -24,7 +23,6 @@ import {
|
|
|
24
23
|
useCallback,
|
|
25
24
|
useEffect,
|
|
26
25
|
useInsertionEffect,
|
|
27
|
-
useMemo,
|
|
28
26
|
useReducer,
|
|
29
27
|
useRef,
|
|
30
28
|
} from 'react';
|
|
@@ -55,28 +53,6 @@ export default function createAnimatedPropsHook(
|
|
|
55
53
|
const useNativePropsInFabric =
|
|
56
54
|
ReactNativeFeatureFlags.shouldUseSetNativePropsInFabric();
|
|
57
55
|
|
|
58
|
-
const useNativeAnimatedEvents: <TProps: {...}>(
|
|
59
|
-
node: AnimatedProps,
|
|
60
|
-
props: TProps,
|
|
61
|
-
) => $ReadOnlyArray<[string, AnimatedEvent]> =
|
|
62
|
-
ReactNativeFeatureFlags.avoidAnimatedRefInvalidation()
|
|
63
|
-
? function useNativeAnimatedEventsFromAnimatedProps(node, props) {
|
|
64
|
-
return useMemo(() => node.__getNativeAnimatedEventTuples(), [node]);
|
|
65
|
-
}
|
|
66
|
-
: function useNativeAnimatedEventsFromProps(node, props) {
|
|
67
|
-
return useMemo(() => {
|
|
68
|
-
const tuples = [];
|
|
69
|
-
for (const propName in props) {
|
|
70
|
-
// $FlowFixMe[invalid-computed-prop]
|
|
71
|
-
const propValue = props[propName];
|
|
72
|
-
if (propValue instanceof AnimatedEvent && propValue.__isNative) {
|
|
73
|
-
tuples.push([propName, propValue]);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return tuples;
|
|
77
|
-
}, [props]);
|
|
78
|
-
};
|
|
79
|
-
|
|
80
56
|
return function useAnimatedProps<TProps: {...}, TInstance>(
|
|
81
57
|
props: TProps,
|
|
82
58
|
): [ReducedProps<TProps>, CallbackRef<TInstance | null>] {
|
|
@@ -118,8 +94,6 @@ export default function createAnimatedPropsHook(
|
|
|
118
94
|
|
|
119
95
|
useAnimatedPropsLifecycle(node);
|
|
120
96
|
|
|
121
|
-
const eventTuples = useNativeAnimatedEvents(node, props);
|
|
122
|
-
|
|
123
97
|
// TODO: This "effect" does three things:
|
|
124
98
|
//
|
|
125
99
|
// 1) Call `setNativeView`.
|
|
@@ -209,6 +183,7 @@ export default function createAnimatedPropsHook(
|
|
|
209
183
|
|
|
210
184
|
const target = getEventTarget(instance);
|
|
211
185
|
const animatedValueListeners: AnimatedValueListeners = [];
|
|
186
|
+
const eventTuples = node.__getNativeAnimatedEventTuples();
|
|
212
187
|
|
|
213
188
|
for (const [propName, propValue] of eventTuples) {
|
|
214
189
|
propValue.__attach(target, propName);
|
|
@@ -228,7 +203,7 @@ export default function createAnimatedPropsHook(
|
|
|
228
203
|
}
|
|
229
204
|
};
|
|
230
205
|
},
|
|
231
|
-
[
|
|
206
|
+
[node],
|
|
232
207
|
);
|
|
233
208
|
const callbackRef = useRefEffect<TInstance>(refEffect);
|
|
234
209
|
|